<?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>124325</bug_id>
          
          <creation_ts>2013-11-13 17:43:29 -0800</creation_ts>
          <short_desc>Consolidate and expose Frame/Node/Selection screenshot capabilities</short_desc>
          <delta_ts>2013-12-06 18:09:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>125200</dependson>
    
    <dependson>124568</dependson>
    
    <dependson>124822</dependson>
          <blocked>124326</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>950458</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-13 17:43:29 -0800</bug_when>
    <thetext>Various screenshot collection code is spread between Frame, FrameSnapshotting, and platform-specific implementations for each. We should have all of this code in one place, preferably DragImage (as almost all uses of screenshots within WebKit are for this purpose).

For inspector clients and other WK/WK2 code to encode these screenshots with the platform-specific (and probably faster) encoder provided by ImageBuffer::toDataURL, we need a thin wrapper to break dependencies on &quot;ImageBuffer.h&quot; as well.

(Patch forthcoming..)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950486</commentid>
    <comment_count>1</comment_count>
      <attachid>216888</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-13 19:01:59 -0800</bug_when>
    <thetext>Created attachment 216888
v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950488</commentid>
    <comment_count>2</comment_count>
      <attachid>216888</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-13 19:08:21 -0800</bug_when>
    <thetext>Comment on attachment 216888
v1

Attachment 216888 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/22700246</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950496</commentid>
    <comment_count>3</comment_count>
      <attachid>216888</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-13 19:51:48 -0800</bug_when>
    <thetext>Comment on attachment 216888
v1

Attachment 216888 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/21250192</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950498</commentid>
    <comment_count>4</comment_count>
      <attachid>216888</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-13 20:09:04 -0800</bug_when>
    <thetext>Comment on attachment 216888
v1

Attachment 216888 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/22540138</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950507</commentid>
    <comment_count>5</comment_count>
      <attachid>216888</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-11-13 20:34:42 -0800</bug_when>
    <thetext>Comment on attachment 216888
v1

Attachment 216888 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/22899212</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950508</commentid>
    <comment_count>6</comment_count>
      <attachid>216888</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-13 20:34:43 -0800</bug_when>
    <thetext>Comment on attachment 216888
v1

Attachment 216888 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/22780113</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950513</commentid>
    <comment_count>7</comment_count>
      <attachid>216888</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-13 21:07:25 -0800</bug_when>
    <thetext>Comment on attachment 216888
v1

Attachment 216888 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/22640223</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950672</commentid>
    <comment_count>8</comment_count>
      <attachid>216938</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-14 08:24:36 -0800</bug_when>
    <thetext>Created attachment 216938
v1.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950678</commentid>
    <comment_count>9</comment_count>
      <attachid>216938</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-14 08:37:55 -0800</bug_when>
    <thetext>Comment on attachment 216938
v1.1

Attachment 216938 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/21908028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950690</commentid>
    <comment_count>10</comment_count>
      <attachid>216943</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-14 08:53:56 -0800</bug_when>
    <thetext>Created attachment 216943
v1.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950701</commentid>
    <comment_count>11</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-14 09:14:58 -0800</bug_when>
    <thetext>Some test failures, investigating..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950736</commentid>
    <comment_count>12</comment_count>
      <attachid>216943</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-14 09:57:01 -0800</bug_when>
    <thetext>Comment on attachment 216943
v1.2

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

&gt; Source/WebCore/bindings/objc/DOM.mm:292
&gt; -    return frame-&gt;nodeImage(node).get();
&gt; +    return [createDragImageForNode(*frame, node) autorelease];

You need to [[createDragImageForFrameSelection(…) retain] autorelease]. right now you are over releasing. I am surprised it worked before without a retain/autorelease.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950737</commentid>
    <comment_count>13</comment_count>
      <attachid>216943</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-14 09:58:21 -0800</bug_when>
    <thetext>Comment on attachment 216943
v1.2

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

&gt;&gt; Source/WebCore/bindings/objc/DOM.mm:292
&gt;&gt; +    return [createDragImageForNode(*frame, node) autorelease];
&gt; 
&gt; You need to [[createDragImageForFrameSelection(…) retain] autorelease]. right now you are over releasing. I am surprised it worked before without a retain/autorelease.

I meant createDragImageForNode in this case, but this needs fixed everywhere you do create and autorelease.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950739</commentid>
    <comment_count>14</comment_count>
      <attachid>216956</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-14 10:08:53 -0800</bug_when>
    <thetext>Created attachment 216956
v2.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950748</commentid>
    <comment_count>15</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-14 10:29:49 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 216943 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=216943&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/bindings/objc/DOM.mm:292
&gt; &gt;&gt; +    return [createDragImageForNode(*frame, node) autorelease];
&gt; &gt; 
&gt; &gt; You need to [[createDragImageForFrameSelection(…) retain] autorelease]. right now you are over releasing. I am surprised it worked before without a retain/autorelease.
&gt; 
&gt; I meant createDragImageForNode in this case, but this needs fixed everywhere you do create and autorelease.

Addressed these. Only the botched one in Clipboard.cpp was causing test crashes, so thanks for pointing it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950770</commentid>
    <comment_count>16</comment_count>
      <attachid>216956</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-14 11:05:48 -0800</bug_when>
    <thetext>Comment on attachment 216956
v2.0

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

&gt; Source/WebCore/platform/DragImage.cpp:202
&gt; +    paintingRect.setWidth(paintingRect.width() * deviceScaleFactor);
&gt; +    paintingRect.setHeight(paintingRect.height() * deviceScaleFactor);

paintingRect.scale(deviceScaleFactor);

&gt; Source/WebCore/platform/DragImage.cpp:216
&gt; +DragImageRef createDragImageForNode(Frame&amp; frame, Node* node)

Wonder if there’s not more code that can be factored out of these two.

&gt; Source/WebCore/platform/DragImage.cpp:242
&gt; +    paintingRect.setWidth(paintingRect.width() * deviceScaleFactor);
&gt; +    paintingRect.setHeight(paintingRect.height() * deviceScaleFactor);

paintingRect.scale(deviceScaleFactor);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950772</commentid>
    <comment_count>17</comment_count>
      <attachid>216956</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-11-14 11:06:56 -0800</bug_when>
    <thetext>Comment on attachment 216956
v2.0

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

I think we should keep FrameSnapshotting.cpp and put most of the cross-platform snapshotting code there. I&apos;m not convinced that FrameSnapshot needs to exist.

&gt; Source/WebCore/bindings/objc/DOM.mm:338
&gt; +    return [[createDragImageForRange(*frame, range, forceBlackText) retain] autorelease];

I don&apos;t think &quot;createDragImageForRange&quot; is a good name for the generic image creation function, since it&apos;s confusing to see a function called renderedImageForcingBlackText: using a drag image.

&gt; Source/WebCore/page/FrameSnapshot.h:41
&gt; +OwnPtr&lt;ImageBuffer&gt; createImageFromFrameRect(Frame&amp;, const IntRect&amp;, bool includeSelection = true, bool useViewCoordinates = true);

You should use an enum rather than bools to avoid call points being hard to read.

&gt; Source/WebCore/page/FrameSnapshot.h:44
&gt; +class FrameSnapshot {

I don&apos;t think FrameSnapshot is a good name. It sounds like it&apos;s creating a snapshot for an entire frame.

&gt; Source/WebCore/page/FrameSnapshot.h:48
&gt; +    FrameSnapshot(OwnPtr&lt;ImageBuffer&gt;);
&gt; +    ~FrameSnapshot();
&gt; +    static std::unique_ptr&lt;FrameSnapshot&gt; createFromRect(Frame&amp;, const IntRect&amp;, bool includeSelection = true, bool useViewCoordinates = true);

It&apos;s odd to create FrameSnapshot with an imagebuffer, but then allow createFromRect() to be called more than once. Why not pass the ImageBuffer into createFromRect()?

&gt; Source/WebCore/page/FrameSnapshot.h:50
&gt; +    String toDataURL(const String&amp; mimeType, double* quality = nullptr);

Doesn&apos;t seem worth having.

&gt; Source/WebCore/platform/DragImage.cpp:96
&gt; +DragImageRef createDragImageForRange(Frame&amp; frame, Range* range, bool forceBlackText)
&gt; +{
&gt; +    frame.view()-&gt;setPaintBehavior(PaintBehaviorSelectionOnly | (forceBlackText ? PaintBehaviorForceBlackText : 0));
&gt; +    frame.document()-&gt;updateLayout();
&gt; +    RenderView* view = frame.contentRenderer();
&gt; +    if (!view)
&gt; +        return nullptr;
&gt; +
&gt; +    Position start = range-&gt;startPosition();
&gt; +    Position candidate = start.downstream();
&gt; +    if (candidate.deprecatedNode() &amp;&amp; candidate.deprecatedNode()-&gt;renderer())
&gt; +        start = candidate;
&gt; +
&gt; +    Position end = range-&gt;endPosition();
&gt; +    candidate = end.upstream();
&gt; +    if (candidate.deprecatedNode() &amp;&amp; candidate.deprecatedNode()-&gt;renderer())
&gt; +        end = candidate;
&gt; +
&gt; +    if (start.isNull() || end.isNull() || start == end)
&gt; +        return nullptr;
&gt; +
&gt; +    RenderObject* savedStartRenderer;

I don&apos;t think all the new code belongs in something called DragImage, since it&apos;s used for much more than creating drag images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950802</commentid>
    <comment_count>18</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-14 12:35:52 -0800</bug_when>
    <thetext>Thanks for the quickness!

(In reply to comment #17)
&gt; (From update of attachment 216956 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=216956&amp;action=review
&gt; 
&gt; I think we should keep FrameSnapshotting.cpp and put most of the cross-platform snapshotting code there. I&apos;m not convinced that FrameSnapshot needs to exist.
&gt; 
&gt; &gt; Source/WebCore/bindings/objc/DOM.mm:338
&gt; &gt; +    return [[createDragImageForRange(*frame, range, forceBlackText) retain] autorelease];
&gt; 
&gt; I don&apos;t think &quot;createDragImageForRange&quot; is a good name for the generic image creation function, since it&apos;s confusing to see a function called renderedImageForcingBlackText: using a drag image.

I kept with that convention because DragImage is return type (a typedef for the platform handle). However, most uses of that typedef have nothing to do with dragging either. Omitting &apos;Drag&apos; would yield createImageFromFoo, but not return an Image. It&apos;s not clear how to easily incorporate the code into Image or ImageBuffer, nor is their functionality necessary for uses as far as I can tell. Maybe DragImage needs a better name? ImageHandle? I don&apos;t know the platform handle naming conventions well. It looks like NativeImagePtr is a bit similar, but put into smart pointers?

Only createDragImageFromImage() sets drag state before snapshotting. Others have various flags to make snapshots suitable for drag previews, but aren&apos;t always used that way.

&gt; 
&gt; &gt; Source/WebCore/page/FrameSnapshot.h:41
&gt; &gt; +OwnPtr&lt;ImageBuffer&gt; createImageFromFrameRect(Frame&amp;, const IntRect&amp;, bool includeSelection = true, bool useViewCoordinates = true);
&gt; 
&gt; You should use an enum rather than bools to avoid call points being hard to read.

OK

&gt; 
&gt; &gt; Source/WebCore/page/FrameSnapshot.h:44
&gt; &gt; +class FrameSnapshot {
&gt; 
&gt; I don&apos;t think FrameSnapshot is a good name. It sounds like it&apos;s creating a snapshot for an entire frame.
&gt; 
&gt; &gt; Source/WebCore/page/FrameSnapshot.h:48
&gt; &gt; +    FrameSnapshot(OwnPtr&lt;ImageBuffer&gt;);
&gt; &gt; +    ~FrameSnapshot();
&gt; &gt; +    static std::unique_ptr&lt;FrameSnapshot&gt; createFromRect(Frame&amp;, const IntRect&amp;, bool includeSelection = true, bool useViewCoordinates = true);
&gt; 
&gt; It&apos;s odd to create FrameSnapshot with an imagebuffer, but then allow createFromRect() to be called more than once. Why not pass the ImageBuffer into createFromRect()?
&gt;
&gt; 
&gt; &gt; Source/WebCore/page/FrameSnapshot.h:50
&gt; &gt; +    String toDataURL(const String&amp; mimeType, double* quality = nullptr);
&gt; 
&gt; Doesn&apos;t seem worth having.
&gt; 

If it&apos;s acceptable to set ImageBufferData.h and ImageBufferDataCG.h as private headers, then this class can be removed. createImageFromFrameRect() is used to create a DragImageRef (canvas path), and to get a data URL for inspector with a single API call. I&apos;d prefer if there was a way to keep using that API.

&gt; &gt; Source/WebCore/platform/DragImage.cpp:96
&gt; &gt; +DragImageRef createDragImageForRange(Frame&amp; frame, Range* range, bool forceBlackText)
&gt; &gt; +{
&gt; &gt; +    frame.view()-&gt;setPaintBehavior(PaintBehaviorSelectionOnly | (forceBlackText ? PaintBehaviorForceBlackText : 0));
&gt; &gt; +    frame.document()-&gt;updateLayout();
&gt; &gt; +    RenderView* view = frame.contentRenderer();
&gt; &gt; +    if (!view)
&gt; &gt; +        return nullptr;
&gt; &gt; +
&gt; &gt; +    Position start = range-&gt;startPosition();
&gt; &gt; +    Position candidate = start.downstream();
&gt; &gt; +    if (candidate.deprecatedNode() &amp;&amp; candidate.deprecatedNode()-&gt;renderer())
&gt; &gt; +        start = candidate;
&gt; &gt; +
&gt; &gt; +    Position end = range-&gt;endPosition();
&gt; &gt; +    candidate = end.upstream();
&gt; &gt; +    if (candidate.deprecatedNode() &amp;&amp; candidate.deprecatedNode()-&gt;renderer())
&gt; &gt; +        end = candidate;
&gt; &gt; +
&gt; &gt; +    if (start.isNull() || end.isNull() || start == end)
&gt; &gt; +        return nullptr;
&gt; &gt; +
&gt; &gt; +    RenderObject* savedStartRenderer;
&gt; 
&gt; I don&apos;t think all the new code belongs in something called DragImage, since it&apos;s used for much more than creating drag images.

Should DragImage be renamed? Or, split half of the image-creating functions based on how they are used elsewhere? I don&apos;t really have a preference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951073</commentid>
    <comment_count>19</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-15 08:14:29 -0800</bug_when>
    <thetext>I would like nodeImage, selectionImage, and imageFromRect to be cross-platform and used by the inspector. I propose these methods belong in FrameSnapshotting and deal with ImageBuffers or Images*. The other methods that are only used for dragging should go in DragImage. So, here&apos;s a plan for that:

1. Move Frame::nodeImage to FrameSnapshotting.
2. Delete Frame::dragImageForSelection, as it just called selectionImage().
3. Move snapshotDragImage to DragImage[Mac].h It&apos;s not useful for anything else.
4. Change FrameSnapshotting::{selectionImage, rangeImage, nodeImage, imageFromRect} to return ImageBuffers.
5. Optionally rename FrameSnapshotting methods to &apos;createSnapshotForFoo&apos; (a la the create rule) or &apos;snapshotFooImage&apos; (to make snapshot the relevant verb).

Let me know if this is more sensible than the current approach.

* In a second patch, InspectorClient will use these APIs to create screenshots of nodes, rects, etc and turn them into data urls. This will require using ImageBuffer from WebKit/WebKit2. If this is a layering violation, then the APIs can use Image instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951394</commentid>
    <comment_count>20</comment_count>
      <attachid>217137</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-16 15:47:48 -0800</bug_when>
    <thetext>Created attachment 217137
v2.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951395</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-16 15:49:40 -0800</bug_when>
    <thetext>Attachment 217137 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/bindings/objc/DOM.mm&apos;, u&apos;Source/WebCore/dom/Clipboard.cpp&apos;, u&apos;Source/WebCore/dom/ClipboardMac.mm&apos;, u&apos;Source/WebCore/page/DragController.cpp&apos;, u&apos;Source/WebCore/page/Frame.cpp&apos;, u&apos;Source/WebCore/page/Frame.h&apos;, u&apos;Source/WebCore/page/FrameSnapshotting.cpp&apos;, u&apos;Source/WebCore/page/FrameSnapshotting.h&apos;, u&apos;Source/WebCore/page/mac/FrameMac.mm&apos;, u&apos;Source/WebCore/page/mac/FrameSnapshottingMac.h&apos;, u&apos;Source/WebCore/page/mac/FrameSnapshottingMac.mm&apos;, u&apos;Source/WebCore/page/win/FrameWin.cpp&apos;, u&apos;Source/WebCore/page/win/FrameWin.h&apos;, u&apos;Source/WebCore/platform/DragImage.cpp&apos;, u&apos;Source/WebCore/platform/DragImage.h&apos;, u&apos;Source/WebKit/ios/ChangeLog&apos;, u&apos;Source/WebKit/ios/WebCoreSupport/WebFrameIOS.mm&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebView/WebHTMLView.mm&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/DOMCoreClasses.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/DragImage.cpp:143:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/page/FrameSnapshotting.cpp:37:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 23 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>951396</commentid>
    <comment_count>22</comment_count>
      <attachid>217138</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-16 15:50:06 -0800</bug_when>
    <thetext>Created attachment 217138
v2.0 (appease style bot)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951402</commentid>
    <comment_count>23</comment_count>
      <attachid>217138</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-16 16:35:41 -0800</bug_when>
    <thetext>Comment on attachment 217138
v2.0 (appease style bot)

Attachment 217138 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/25378022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951405</commentid>
    <comment_count>24</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-16 17:13:58 -0800</bug_when>
    <thetext>New patch up. Not sure what&apos;s up with win-ewe build fail, doesn&apos;t look related?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951406</commentid>
    <comment_count>25</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-16 18:38:36 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; New patch up. Not sure what&apos;s up with win-ewe build fail, doesn&apos;t look related?

It is absolutely related, win ews build logs are just completely painful to peruse.

You need to update Windows exports:

            Creating library C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\lib32\WebKit.lib and object C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\lib32\WebKit.exp
     1&gt;WebCore.lib(DragImage.obj) : error LNK2019: unresolved external symbol &quot;class WTF::OwnPtr&lt;class WebCore::ImageBuffer&gt; __cdecl WebCore::snapshotNode(class WebCore::Frame &amp;,class WebCore::Node *)&quot; (?snapshotNode@WebCore@@YA?AV?$OwnPtr@VImageBuffer@WebCore@@@WTF@@AAVFrame@1@PAVNode@1@@Z) referenced in function &quot;struct HBITMAP__ * __cdecl WebCore::createDragImageForNode(class WebCore::Frame &amp;,class WebCore::Node *)&quot; (?createDragImageForNode@WebCore@@YAPAUHBITMAP__@@AAVFrame@1@PAVNode@1@@Z)
     1&gt;WebCore.lib(DragImage.obj) : error LNK2019: unresolved external symbol &quot;class WTF::OwnPtr&lt;class WebCore::ImageBuffer&gt; __cdecl WebCore::snapshotSelection(class WebCore::Frame &amp;,unsigned int)&quot; (?snapshotSelection@WebCore@@YA?AV?$OwnPtr@VImageBuffer@WebCore@@@WTF@@AAVFrame@1@I@Z) referenced in function &quot;struct HBITMAP__ * __cdecl WebCore::createDragImageForSelection(class WebCore::Frame &amp;,bool)&quot; (?createDragImageForSelection@WebCore@@YAPAUHBITMAP__@@AAVFrame@1@_N@Z)
     1&gt;C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\bin32\WebKit.dll : fatal error LNK1120: 2 unresolved externals
     1&gt;Done Building Project &quot;C:\cygwin\home\buildbot\WebKit\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj&quot; (build target(s)) -- FAILED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951407</commentid>
    <comment_count>26</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-16 18:56:31 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; New patch up. Not sure what&apos;s up with win-ewe build fail, doesn&apos;t look related?
&gt; 
&gt; It is absolutely related, win ews build logs are just completely painful to peruse.
&gt; 
&gt; You need to update Windows exports:
&gt; 

Oh touché, I totally missed that. Is there any rule for ordering the win exports (aside from feature flags)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951430</commentid>
    <comment_count>27</comment_count>
      <attachid>217138</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-11-17 12:12:10 -0800</bug_when>
    <thetext>Comment on attachment 217138
v2.0 (appease style bot)

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

Overall, looks great. r=me with the changes.

&gt; Source/WebCore/page/FrameSnapshotting.h:44
&gt; +enum {
&gt; +    SnapshotOptionsExcludeSelectionHighlighting = 1 &lt;&lt; 1,
&gt; +    SnapshotOptionsInViewCoordinates = 1 &lt;&lt; 2,
&gt; +    SnapshotOptionsForceBlackText = 1 &lt;&lt; 3,
&gt; +};
&gt; +typedef uint32_t SnapshotOptions;

This is C++, so this should probably use enum SnapshotOptions { ... } instead of the typedef.

&gt; Source/WebCore/page/FrameSnapshotting.h:47
&gt; +OwnPtr&lt;ImageBuffer&gt; snapshotNode(Frame&amp;, Node*);

This should take the Node by reference.

&gt; Source/WebCore/page/FrameSnapshotting.h:48
&gt; +OwnPtr&lt;ImageBuffer&gt; snapshotFrameRect(Frame&amp;, const IntRect&amp;, SnapshotOptions = 0);
&gt; +OwnPtr&lt;ImageBuffer&gt; snapshotNode(Frame&amp;, Node*);
&gt; +OwnPtr&lt;ImageBuffer&gt; snapshotSelection(Frame&amp;, SnapshotOptions = 0);

These should return std::unique_ptr&lt;ImageBuffer&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951444</commentid>
    <comment_count>28</comment_count>
      <attachid>217155</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-17 15:20:07 -0800</bug_when>
    <thetext>Created attachment 217155
v2.1 (missing win exports)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951447</commentid>
    <comment_count>29</comment_count>
      <attachid>217155</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-17 15:24:17 -0800</bug_when>
    <thetext>Comment on attachment 217155
v2.1 (missing win exports)

Attachment 217155 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/27248027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951448</commentid>
    <comment_count>30</comment_count>
      <attachid>217155</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-17 15:26:02 -0800</bug_when>
    <thetext>Comment on attachment 217155
v2.1 (missing win exports)

Attachment 217155 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/25598061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951449</commentid>
    <comment_count>31</comment_count>
      <attachid>217157</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-17 15:30:25 -0800</bug_when>
    <thetext>Created attachment 217157
v2.2 (missing win exports)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951450</commentid>
    <comment_count>32</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-17 15:35:31 -0800</bug_when>
    <thetext>(In reply to comment #27)

&gt; &gt; Source/WebCore/page/FrameSnapshotting.h:44
&gt; &gt; +enum {
&gt; &gt; +    SnapshotOptionsExcludeSelectionHighlighting = 1 &lt;&lt; 1,
&gt; &gt; +    SnapshotOptionsInViewCoordinates = 1 &lt;&lt; 2,
&gt; &gt; +    SnapshotOptionsForceBlackText = 1 &lt;&lt; 3,
&gt; &gt; +};
&gt; &gt; +typedef uint32_t SnapshotOptions;
&gt; 
&gt; This is C++, so this should probably use enum SnapshotOptions { ... } instead of the typedef.

I made the other changes but not this one.

Since these are not mutually exclusive options, I did the same thing as elsewhere for this circumstance (i.e. WebKit2/shared/ImageOptions.h). Making the values strongly-typed prevents masking out some options, such as forcing selection painting for snapshotSelection().

New win export symbols are coming when the bots catch up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951453</commentid>
    <comment_count>33</comment_count>
      <attachid>217157</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-17 16:16:13 -0800</bug_when>
    <thetext>Comment on attachment 217157
v2.2 (missing win exports)

Attachment 217157 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/25618051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951455</commentid>
    <comment_count>34</comment_count>
      <attachid>217159</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-17 16:21:13 -0800</bug_when>
    <thetext>Created attachment 217159
v2.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951462</commentid>
    <comment_count>35</comment_count>
      <attachid>217159</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-11-17 17:06:26 -0800</bug_when>
    <thetext>Comment on attachment 217159
v2.2

Attachment 217159 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/24028221</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951467</commentid>
    <comment_count>36</comment_count>
      <attachid>217162</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-17 17:21:39 -0800</bug_when>
    <thetext>Created attachment 217162
v2.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951734</commentid>
    <comment_count>37</comment_count>
      <attachid>217162</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-11-18 11:54:43 -0800</bug_when>
    <thetext>Comment on attachment 217162
v2.3

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

&gt; Source/WebCore/page/FrameSnapshotting.cpp:86
&gt; +    float deviceScaleFactor = frame.page() ? 1 : frame.page()-&gt;deviceScaleFactor();

Is this backwards? I would expect that If there is a page this should be the page&apos;s deviceScaleFactor, otherwise 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951735</commentid>
    <comment_count>38</comment_count>
      <attachid>217162</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-18 11:56:37 -0800</bug_when>
    <thetext>Comment on attachment 217162
v2.3

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

&gt;&gt; Source/WebCore/page/FrameSnapshotting.cpp:86
&gt;&gt; +    float deviceScaleFactor = frame.page() ? 1 : frame.page()-&gt;deviceScaleFactor();
&gt; 
&gt; Is this backwards? I would expect that If there is a page this should be the page&apos;s deviceScaleFactor, otherwise 1.

Yes, the old code was:

    float deviceScaleFactor = 1;
    if (m_page)
        deviceScaleFactor = m_page-&gt;deviceScaleFactor();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951752</commentid>
    <comment_count>39</comment_count>
      <attachid>217223</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-18 12:38:39 -0800</bug_when>
    <thetext>Created attachment 217223
v2.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951784</commentid>
    <comment_count>40</comment_count>
      <attachid>217223</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-18 14:08:14 -0800</bug_when>
    <thetext>Comment on attachment 217223
v2.4

Clearing flags on attachment: 217223

Committed r159455: &lt;http://trac.webkit.org/changeset/159455&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951785</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-18 14:08:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951984</commentid>
    <comment_count>42</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-18 23:18:21 -0800</bug_when>
    <thetext>This patch broke two API tests; see https://bugs.webkit.org/show_bug.cgi?id=124564. Please look into this ASAP; I&apos;ll roll out tomorrow if it hasn&apos;t been fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951989</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-18 23:48:40 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 124568</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952417</commentid>
    <comment_count>44</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-19 21:37:35 -0800</bug_when>
    <thetext>I didn&apos;t realize TestWebKitAPI was not apart of EWS bots.. :(

I&apos;m investigating API test failures, should not be too hard. I think some of the old methods assumed different defaults (w.r.t. selection inclusion) than are implemented by FrameSnapshotting methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952421</commentid>
    <comment_count>45</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-19 21:55:24 -0800</bug_when>
    <thetext>(In reply to comment #44)
&gt; I didn&apos;t realize TestWebKitAPI was not apart of EWS bots.. :(

There&apos;s a bug somewhere to make that happen, but they&apos;re not at the moment. You should always be running the tests locally anyway, especially for a patch of this size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953870</commentid>
    <comment_count>46</comment_count>
      <attachid>217767</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-24 16:36:47 -0800</bug_when>
    <thetext>Created attachment 217767
v3 - fix TestWebKitAPI Regressions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953872</commentid>
    <comment_count>47</comment_count>
      <attachid>217767</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-11-24 17:10:02 -0800</bug_when>
    <thetext>Comment on attachment 217767
v3 - fix TestWebKitAPI Regressions

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

Thanks for tackling this. It seems to generally be a step in the right direction.

I did a basic review but I did not read everything carefully.

How did you test?

&gt; Source/WebCore/bindings/objc/DOM.mm:290
&gt; +    if (!frame || !node)

Don’t add this worthless null check. We just dereferenced node on the line above, so there’s no way we could get here if it was null.

&gt; Source/WebCore/bindings/objc/DOM.mm:292
&gt; +    return [[createDragImageForNode(*frame, *node) retain] autorelease];

If the return type is RetainPtr, then the correct idiom would be leakRef/autorelease, not retain/autorelease.

&gt; Source/WebCore/bindings/objc/DOM.mm:335
&gt; +    if (!frame || !range)

Don’t add this worthless null check. We just dereferenced range on the line above, so there’s no way we could get here if it was null.

&gt; Source/WebCore/bindings/objc/DOM.mm:338
&gt; +    return [[createDragImageForRange(*frame, *range, forceBlackText) retain] autorelease];

Ditto.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:2
&gt; + *  Copyright (C) 2013 University of Washington. All rights reserved.

Most of this file is already-written code that already has a copyright. Fine to add your copyright if you wrote enough new code, but the original copyright needs be listed here too; you must not claim copyright on code just because you moved it to a new file.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:30
&gt; +#include &quot;config.h&quot;
&gt; +
&gt; +#include &quot;FrameSnapshotting.h&quot;

In the WebKit coding style, there is no blank line between these includes.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:43
&gt; +    ScopedFramePaintingState(Frame&amp; frame, Node* node)

Seems silly that we use a single class for both the &quot;with node&quot; and &quot;without node&quot; cases. Should just have a derived class that adds the node. But not new to your patch.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:47
&gt; +    : frame(frame)
&gt; +    , node(node)
&gt; +    , paintBehavior(frame.view()-&gt;paintBehavior())
&gt; +    , backgroundColor(frame.view()-&gt;baseBackgroundColor())

In WebKit coding style there are indented one tab stop further in, as they were in the place you copied this code from.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:81
&gt; +    PaintBehavior textPaintBehavior = 0;
&gt; +    if (options &amp; SnapshotOptionsForceBlackText)
&gt; +        textPaintBehavior = PaintBehaviorForceBlackText;
&gt; +
&gt; +    PaintBehavior selectionOnlyBehavior = 0;
&gt; +    if (options &amp; SnapshotOptionsPaintSelectionOnly)
&gt; +        textPaintBehavior = PaintBehaviorSelectionOnly;

Using two separate local variables for these additional flags is a strange idiom. I would write this:

    PaintBehavior paintBehavior = state.paintBehavior;
    if (options &amp; SnapshotOptionsForceBlackText)
        paintBehavior |= PaintBehaviorForceBlackText;
    if (options &amp; SnapshotOptionsPaintSelectionOnly)
        paintBehavior |= PaintBehaviorSelectionOnly;
    frame.view()-&gt;setPaintBehavior(paintBehavior);

The version with three local variables is less clear and there is no compelling reason to paragraph the setPaintBehavior call along with the updateLayout call. In fact, it seems it would be better to call updateLayout considerably earlier in the function; I don’t understand why it’s done after ScopedFramePaintingState.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:94
&gt; +    std::unique_ptr&lt;ImageBuffer&gt; buffer = std::unique_ptr&lt;ImageBuffer&gt;(ImageBuffer::create(usedRect.size(), deviceScaleFactor, ColorSpaceDeviceRGB).leakPtr());

We have gone out of our way to avoid unique_ptr/leakPtr pairs in WebKit up until now. Could you do a patch that changes ImageBuffer::create to return a unique_ptr first to prepare for this and avoid this problem?

&gt; Source/WebCore/page/FrameSnapshotting.cpp:126
&gt; +    // Document::updateLayout may have blown away the original renderer.

A far better way to deal with this would be to call updateLayout at the top of the function, before null checking node.renderer() in the first place!

&gt; Source/WebCore/page/FrameSnapshotting.h:30
&gt; +#include &lt;wtf/Forward.h&gt;

I don’t see any reason to include this header.

&gt; Source/WebCore/page/FrameSnapshotting.h:46
&gt; +typedef uint32_t SnapshotOptions;

Most other cases of flags like this in WebKit use the type unsigned; for example, FindOptions in FindOptions.h, and many other types with the suffix “Flags”. Any good reason to use the type uint32_t here instead?

&gt; Source/WebCore/platform/DragImage.cpp:76
&gt; +    : frame(frame)
&gt; +    , node(node)

Wrong formatting for WebKit.

&gt; Source/WebCore/platform/DragImage.h:50
&gt; -    class Image;
&gt; -    class URL;
&gt; +class Frame;

Reindenting the whole file to make the style bot happy at the same time you make substantive changes to the file is not good, because the patch reviewer can’t easily see what the changes are. Please consider submitting a “reindent” patch first. That’s what people have done in similar situations before.

&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:1828
&gt; +    NSImage *dragImage = [[createDragImageForSelection(*coreFrame) retain] autorelease];

If the return type is RetainPtr, then the correct idiom would be leakRef/autorelease, not retain/autorelease.

&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:5977
&gt; +    return [[createDragImageForSelection(*coreFrame, forceBlackText) retain] autorelease];

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953885</commentid>
    <comment_count>48</comment_count>
      <attachid>217767</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-24 18:49:55 -0800</bug_when>
    <thetext>Comment on attachment 217767
v3 - fix TestWebKitAPI Regressions

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

Thanks for the feedback, I addressed everything in the next patch.

&gt;&gt; Source/WebCore/page/FrameSnapshotting.cpp:30
&gt;&gt; +#include &quot;FrameSnapshotting.h&quot;
&gt; 
&gt; In the WebKit coding style, there is no blank line between these includes.

Woops- filed an issue: https://bugs.webkit.org/show_bug.cgi?id=124821

&gt;&gt; Source/WebCore/page/FrameSnapshotting.cpp:47
&gt;&gt; +    , backgroundColor(frame.view()-&gt;baseBackgroundColor())
&gt; 
&gt; In WebKit coding style there are indented one tab stop further in, as they were in the place you copied this code from.

Woops- filed another issue: https://bugs.webkit.org/show_bug.cgi?id=124820

&gt;&gt; Source/WebCore/page/FrameSnapshotting.cpp:94
&gt;&gt; +    std::unique_ptr&lt;ImageBuffer&gt; buffer = std::unique_ptr&lt;ImageBuffer&gt;(ImageBuffer::create(usedRect.size(), deviceScaleFactor, ColorSpaceDeviceRGB).leakPtr());
&gt; 
&gt; We have gone out of our way to avoid unique_ptr/leakPtr pairs in WebKit up until now. Could you do a patch that changes ImageBuffer::create to return a unique_ptr first to prepare for this and avoid this problem?

Filed: https://bugs.webkit.org/show_bug.cgi?id=124822

&gt;&gt; Source/WebCore/page/FrameSnapshotting.h:46
&gt;&gt; +typedef uint32_t SnapshotOptions;
&gt; 
&gt; Most other cases of flags like this in WebKit use the type unsigned; for example, FindOptions in FindOptions.h, and many other types with the suffix “Flags”. Any good reason to use the type uint32_t here instead?

No particular reason; I was looking at flags in WebKit2, some of which seem to use uint32_t (WKFindOptions.h, ImageOptions.h).

&gt;&gt; Source/WebCore/platform/DragImage.h:50
&gt;&gt; +class Frame;
&gt; 
&gt; Reindenting the whole file to make the style bot happy at the same time you make substantive changes to the file is not good, because the patch reviewer can’t easily see what the changes are. Please consider submitting a “reindent” patch first. That’s what people have done in similar situations before.

I agree with your sentiment. Should I do so for this patch as well? It is probably late to matter much for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953886</commentid>
    <comment_count>49</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-11-24 19:00:09 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; &gt; Reindenting the whole file to make the style bot happy at the same time you make substantive changes to the file is not good, because the patch reviewer can’t easily see what the changes are. Please consider submitting a “reindent” patch first. That’s what people have done in similar situations before.
&gt; 
&gt; I agree with your sentiment. Should I do so for this patch as well? It is probably late to matter much for this patch.

Maybe others were able to review the changes to DragImage.h despite the re-indenting, but I didn’t really manage to do that. Since it seems others have reviewed I suppose we are OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953903</commentid>
    <comment_count>50</comment_count>
      <attachid>217774</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-24 22:47:51 -0800</bug_when>
    <thetext>Created attachment 217774
v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954402</commentid>
    <comment_count>51</comment_count>
      <attachid>217916</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-26 18:12:42 -0800</bug_when>
    <thetext>Created attachment 217916
copy of last attachment, this time for EWS with deps landed

(dup for EWS&apos; sake) Patch addresses comments from Darin Adler; rebase on top of r159791.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954404</commentid>
    <comment_count>52</comment_count>
      <attachid>217917</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-11-26 18:14:14 -0800</bug_when>
    <thetext>Created attachment 217917
v4 - an actual patch, not the url</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956203</commentid>
    <comment_count>53</comment_count>
      <attachid>217917</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-12-03 16:18:08 -0800</bug_when>
    <thetext>Comment on attachment 217917
v4 - an actual patch, not the url

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

&gt; Source/WebCore/bindings/objc/DOM.mm:338
&gt; +    return [createDragImageForRange(*frame, *range, forceBlackText).leakRef() autorelease];

createDragImageForRange is the wrong name for that function; it&apos;s nothing to do with dragging at many call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956206</commentid>
    <comment_count>54</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-03 16:31:27 -0800</bug_when>
    <thetext>(In reply to comment #53)
&gt; &gt; +    return [createDragImageForRange(*frame, *range, forceBlackText).leakRef() autorelease];
&gt; 
&gt; createDragImageForRange is the wrong name for that function; it&apos;s nothing to do with dragging at many call sites.

The phrase DragImage here is simply repeating the name of the type. We could rename the type and the function at the same time but given the current name of the type I think the function name is good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956211</commentid>
    <comment_count>55</comment_count>
      <attachid>217917</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-12-03 16:44:41 -0800</bug_when>
    <thetext>Comment on attachment 217917
v4 - an actual patch, not the url

I agree. We can rename the DragImage functions and types in a follow up change, which Brian filed as bug 125200.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956492</commentid>
    <comment_count>56</comment_count>
      <attachid>217917</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-04 11:38:45 -0800</bug_when>
    <thetext>Comment on attachment 217917
v4 - an actual patch, not the url

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

This looks good but still substantial room for improvement.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:64
&gt; +    Node* node;
&gt; +    PaintBehavior paintBehavior;
&gt; +    Color backgroundColor;

In a follow-up we could mark these data members const, and then we would not have to use const when using this type to define local variables below.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:75
&gt; +    FrameView::SelectionInSnapshot shouldIncludeSelection = FrameView::IncludeSelection;
&gt; +    if (options &amp; SnapshotOptionsExcludeSelectionHighlighting)
&gt; +        shouldIncludeSelection = FrameView::ExcludeSelection;
&gt; +
&gt; +    FrameView::CoordinateSpaceForSnapshot coordinateSpace = FrameView::DocumentCoordinates;
&gt; +    if (options &amp; SnapshotOptionsInViewCoordinates)
&gt; +        coordinateSpace = FrameView::ViewCoordinates;

I would have written these with ? : instead of an if statement.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:83
&gt; +        paintBehavior = PaintBehaviorSelectionOnly;

Here we are blowing away the old paint behavior. Is that what we intend? Or should this be |=?

&gt; Source/WebCore/page/FrameSnapshotting.cpp:87
&gt; +    frame.document()-&gt;updateLayout();

It seems like we should do this at the very top of the function, not here in the middle of setting up for painting.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:89
&gt; +    float deviceScaleFactor = frame.page() ? frame.page()-&gt;deviceScaleFactor() : 1;

Should we just return nullptr when frame.page() is null instead? Maybe not, if we can eliminate the other reasons to return null.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:95
&gt; +    std::unique_ptr&lt;ImageBuffer&gt; buffer = ImageBuffer::create(usedRect.size(), deviceScaleFactor, ColorSpaceDeviceRGB);
&gt; +    if (!buffer)
&gt; +        return nullptr;

Does ImageBuffer::create really return null when it fails? I am surprised? Normally if we can’t allocate memory we crash instead of returning null unless the function is named “try”.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:109
&gt; +    // Force painting of only the selection area.
&gt; +    options |= SnapshotOptionsPaintSelectionOnly;

Since this is setting the flag, I suspect the &quot;=&quot; instead of &quot;|=&quot; above is a typo, and I wonder why it’s not covered by tests.

Also, I don’t think the comment here adds anything; it says the same thing the code does. I suggest omitting it.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:111
&gt; +    IntRect selectionRect = enclosingIntRect(frame.selection().bounds());
&gt; +    return snapshotFrameRect(frame, selectionRect, options);

To me this would read better without the local variable. Maybe even without the local variable for options.

    return snapshotFrameRect(frame, enclosingIntRect(frame.selection().bounds()), options | SnapshotOptionsPaintSelectionOnly);

I like the way that looks.

&gt; Source/WebCore/page/FrameSnapshotting.cpp:127
&gt; +    IntRect paintingRect = pixelSnappedIntRect(node.renderer()-&gt;paintingRootRect(topLevelRect));
&gt; +    return snapshotFrameRect(frame, paintingRect);

Local variable doesn’t add anything.

    return snapshotFrameRect(frame, pixelSnappedIntRect(node.renderer()-&gt;paintingRootRect(topLevelRect));

&gt; Source/WebCore/page/FrameSnapshotting.h:33
&gt; +#ifndef FrameSnapshotting_h
&gt; +#define FrameSnapshotting_h
&gt; +
&gt; +namespace WebCore {

This needs to #include &lt;memory&gt; for std::unique_ptr.

&gt; Source/WebCore/platform/DragImage.cpp:73
&gt; +struct ScopedNodeDragState {

This should be ScopedNodeDragEnabler, since it’s not just state.

&gt; Source/WebCore/platform/DragImage.cpp:78
&gt; +        ASSERT(node.renderer());

Why is it correct to assert this? I see no obvious reason that we know this to be true.

&gt; Source/WebCore/platform/DragImage.cpp:80
&gt; +        frame.document()-&gt;updateLayout();

It doesn’t make sense to do this after using node.renderer(). It needs to be done *before* calling node.renderer().

&gt; Source/WebCore/platform/DragImage.cpp:87
&gt; +            frame.document()-&gt;updateLayout();

This seems wrong. Why would we calling updateLayout synchronously here?

&gt; Source/WebCore/platform/DragImage.cpp:123
&gt; +    std::unique_ptr&lt;ImageBuffer&gt; snapshot = snapshotNode(frame, node);
&gt; +    return createDragImageFromSnapshot(std::move(snapshot), &amp;node);

This would read better without the local variable:

    return createDragImageFromSnapshot(snapshotNode(frame, node), &amp;node);

&gt; Source/WebCore/platform/DragImage.cpp:144
&gt; +        if (RenderView* root = frame.contentRenderer())
&gt; +            root-&gt;setSelection(startRenderer, startOffset, endRenderer, endOffset, RenderView::RepaintNothing);

This doesn’t seem right. What if contentRenderer now returns non-null but in the constructor it returned null? Then we’ll be setting the selection to random values!

&gt; Source/WebCore/platform/DragImage.cpp:178
&gt; +    RenderObject* startRenderer = start.deprecatedNode()-&gt;renderer();
&gt; +    RenderObject* endRenderer = end.deprecatedNode()-&gt;renderer();

I don’t think it’s right for this function to be using deprecatedNode at all. That needs to be fixed.

&gt; Source/WebCore/platform/DragImage.cpp:183
&gt; +    SnapshotOptions options = forceBlackText ? SnapshotOptionsForceBlackText : SnapshotOptionsNone;
&gt; +    options |= SnapshotOptionsPaintSelectionOnly;

Should be done as a single expression.

&gt; Source/WebCore/platform/DragImage.cpp:188
&gt; +    std::unique_ptr&lt;ImageBuffer&gt; snapshot = snapshotFrameRect(frame, view-&gt;selectionBounds(), options);
&gt; +    return createDragImageFromSnapshot(std::move(snapshot), nullptr);

Would read better without the local variable.

&gt; Source/WebCore/platform/DragImage.cpp:210
&gt; +    std::unique_ptr&lt;ImageBuffer&gt; snapshot = snapshotNode(frame, node);
&gt; +    return createDragImageFromSnapshot(std::move(snapshot), &amp;node);

Would read better without the local variable.

&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:1828
&gt; +    NSImage *dragImage = [createDragImageForSelection(*coreFrame).leakRef() autorelease];

We should add a leakRef/autorelease function to RetainPtr itself. Doing it like this directly is unnecessarily low level and risky!

&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:5977
&gt; +    return [createDragImageForSelection(*coreFrame, forceBlackText).leakRef() autorelease];

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956563</commentid>
    <comment_count>57</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-12-04 13:29:25 -0800</bug_when>
    <thetext>Thanks for the additional comments. Everything unquoted will be fixed.

(In reply to comment #56)
&gt; (From update of attachment 217917 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217917&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/FrameSnapshotting.cpp:75
&gt; &gt; +    FrameView::SelectionInSnapshot shouldIncludeSelection = FrameView::IncludeSelection;
&gt; &gt; +    if (options &amp; SnapshotOptionsExcludeSelectionHighlighting)
&gt; &gt; +        shouldIncludeSelection = FrameView::ExcludeSelection;
&gt; &gt; +
&gt; &gt; +    FrameView::CoordinateSpaceForSnapshot coordinateSpace = FrameView::DocumentCoordinates;
&gt; &gt; +    if (options &amp; SnapshotOptionsInViewCoordinates)
&gt; &gt; +        coordinateSpace = FrameView::ViewCoordinates;
&gt; 
&gt; I would have written these with ? : instead of an if statement.

I kept with the style used by other recently-added enum arguments. I prefer it as written, so that someone can tell what the default setting is without scrolling their editor rightward. Without any line length/enum conversion pattern recommendation in the style guide, I have no way to reconcile contradictory style nits.

&gt; &gt; Source/WebCore/page/FrameSnapshotting.cpp:95
&gt; &gt; +    std::unique_ptr&lt;ImageBuffer&gt; buffer = ImageBuffer::create(usedRect.size(), deviceScaleFactor, ColorSpaceDeviceRGB);
&gt; &gt; +    if (!buffer)
&gt; &gt; +        return nullptr;
&gt; 
&gt; Does ImageBuffer::create really return null when it fails? I am surprised? Normally if we can’t allocate memory we crash instead of returning null unless the function is named “try”.

Yes, it does. Should this be added to the style guide?

&gt; &gt; Source/WebCore/page/FrameSnapshotting.h:33
&gt; &gt; +#ifndef FrameSnapshotting_h
&gt; &gt; +#define FrameSnapshotting_h
&gt; &gt; +
&gt; &gt; +namespace WebCore {
&gt; 
&gt; This needs to #include &lt;memory&gt; for std::unique_ptr.

Should this always be the case? If so, please comment here: https://bugs.webkit.org/show_bug.cgi?id=125247
 
&gt; &gt; Source/WebCore/platform/DragImage.cpp:80
&gt; &gt; +        frame.document()-&gt;updateLayout();
&gt; 
&gt; It doesn’t make sense to do this after using node.renderer(). It needs to be done *before* calling node.renderer().

Perhaps the original author was confused as to whether setting drag state entailed any layout invalidation. I was under the impression that it would trigger changes because of -webkit-drag styles. Is this incorrect?

&gt; &gt; Source/WebCore/platform/DragImage.cpp:123
&gt; &gt; +    std::unique_ptr&lt;ImageBuffer&gt; snapshot = snapshotNode(frame, node);
&gt; &gt; +    return createDragImageFromSnapshot(std::move(snapshot), &amp;node);
&gt; 
&gt; This would read better without the local variable:
&gt; 
&gt;     return createDragImageFromSnapshot(snapshotNode(frame, node), &amp;node);
&gt; 
&gt; &gt; Source/WebCore/platform/DragImage.cpp:144
&gt; &gt; +        if (RenderView* root = frame.contentRenderer())
&gt; &gt; +            root-&gt;setSelection(startRenderer, startOffset, endRenderer, endOffset, RenderView::RepaintNothing);
&gt; 
&gt; This doesn’t seem right. What if contentRenderer now returns non-null but in the constructor it returned null? Then we’ll be setting the selection to random values!

Why would it become null? There is no layout run between construction and destruction. (I&apos;m not aware of any other way to serialize the RenderView&apos;s selection.)

&gt; &gt; Source/WebCore/platform/DragImage.cpp:178
&gt; &gt; +    RenderObject* startRenderer = start.deprecatedNode()-&gt;renderer();
&gt; &gt; +    RenderObject* endRenderer = end.deprecatedNode()-&gt;renderer();
&gt; 
&gt; I don’t think it’s right for this function to be using deprecatedNode at all. That needs to be fixed.

OK. I didn&apos;t write this code, so I&apos;m unfamiliar with Position or how to handle deprecatedNode. What are the correct replacements? Is there a better approach to accomplishing what this function does?
 
&gt; 
&gt; &gt; Source/WebKit/mac/WebView/WebHTMLView.mm:1828
&gt; &gt; +    NSImage *dragImage = [createDragImageForSelection(*coreFrame).leakRef() autorelease];
&gt; 
&gt; We should add a leakRef/autorelease function to RetainPtr itself. Doing it like this directly is unnecessarily low level and risky!

Filed: https://bugs.webkit.org/show_bug.cgi?id=125241</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956580</commentid>
    <comment_count>58</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-12-04 13:44:29 -0800</bug_when>
    <thetext>(In reply to comment #57)
&gt; 
&gt; &gt; &gt; Source/WebCore/platform/DragImage.cpp:178
&gt; &gt; &gt; +    RenderObject* startRenderer = start.deprecatedNode()-&gt;renderer();
&gt; &gt; &gt; +    RenderObject* endRenderer = end.deprecatedNode()-&gt;renderer();
&gt; &gt; 
&gt; &gt; I don’t think it’s right for this function to be using deprecatedNode at all. That needs to be fixed.
&gt; 
&gt; OK. I didn&apos;t write this code, so I&apos;m unfamiliar with Position or how to handle deprecatedNode. What are the correct replacements? Is there a better approach to accomplishing what this function does?

Looking deeper, I think this should be left alone. Refactoring it without also refactoring FrameSelection::setSelection (i.e., what it&apos;s emulating) is just going to lead to unexpected differences and test failures. And I have no desire to learn (god forbid, touch) that part of layout to land snapshot functionality for the inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956672</commentid>
    <comment_count>59</comment_count>
      <attachid>218467</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2013-12-04 15:41:55 -0800</bug_when>
    <thetext>Created attachment 218467
v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956740</commentid>
    <comment_count>60</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-04 18:31:42 -0800</bug_when>
    <thetext>(In reply to comment #57)
&gt; &gt; &gt; Source/WebCore/page/FrameSnapshotting.cpp:95
&gt; &gt; &gt; +    std::unique_ptr&lt;ImageBuffer&gt; buffer = ImageBuffer::create(usedRect.size(), deviceScaleFactor, ColorSpaceDeviceRGB);
&gt; &gt; &gt; +    if (!buffer)
&gt; &gt; &gt; +        return nullptr;
&gt; &gt; 
&gt; &gt; Does ImageBuffer::create really return null when it fails? I am surprised? Normally if we can’t allocate memory we crash instead of returning null unless the function is named “try”.
&gt; 
&gt; Yes, it does. Should this be added to the style guide?

Doesn’t seem to me like something to be mentioned in the style guide, but maybe.

We have plenty of functions that return null when they fail, but generally that is for failures other than memory exhaustion.

&gt; &gt; &gt; Source/WebCore/platform/DragImage.cpp:80
&gt; &gt; &gt; +        frame.document()-&gt;updateLayout();
&gt; &gt; 
&gt; &gt; It doesn’t make sense to do this after using node.renderer(). It needs to be done *before* calling node.renderer().
&gt; 
&gt; Perhaps the original author was confused as to whether setting drag state entailed any layout invalidation. I was under the impression that it would trigger changes because of -webkit-drag styles. Is this incorrect?

Good point. We do need to update layout after setting the drag state. I now see that this was mentioned in an existing comment that this patch deletes.

    // forces style recalc - needed since changing the drag state might
    // imply new styles, plus JS could have changed other things

Not a great comment, but did answer the question that came to mind when I read the code. It’s good to have “why” comments--those are the ones we encourage in WebKit. I think a comment that explicitly mentions that drag state can affect style would be good to add. It’s actually quite strange to have a flag in a renderer that can affect style, because normally the architecture is that DOM plus style is used to create renderers. Having the renderer state also affect style is a sort of “circular” concept that doesn’t fit too well and because of that I think this is something that eventually we’ll want to fix by moving the state out of the renderer.

But it’s not right to call node.renderer() without first calling updateLayout(), so I we need additional calls to updateLayout() in a few places:

1) at the start of the snapshotNode function
2) here in ScopedNodeDragEnabler’s constructor, just before calling node.renderer()
3) in createDragImageFromSnapshot, in the CSS_IMAGE_ORIENTATION code
4) at the start of the createDragImageForImage, although maybe we can just rely on the side effect from ScopedNodeDragEnabler

&gt; &gt; &gt; Source/WebCore/platform/DragImage.cpp:144
&gt; &gt; &gt; +        if (RenderView* root = frame.contentRenderer())
&gt; &gt; &gt; +            root-&gt;setSelection(startRenderer, startOffset, endRenderer, endOffset, RenderView::RepaintNothing);
&gt; &gt; 
&gt; &gt; This doesn’t seem right. What if contentRenderer now returns non-null but in the constructor it returned null? Then we’ll be setting the selection to random values!
&gt; 
&gt; Why would it become null? There is no layout run between construction and destruction. (I&apos;m not aware of any other way to serialize the RenderView&apos;s selection.)

I think the issue here is that the guarantee that there is no layout is far away from this helper class. It’s fragile to have the assumptions relatively far away from the code that makes the assumption valid. But I think it’s just a coding style issue, not an actual bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956741</commentid>
    <comment_count>61</comment_count>
      <attachid>218467</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-04 18:37:26 -0800</bug_when>
    <thetext>Comment on attachment 218467
v5

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

&gt; Source/WebCore/page/FrameSnapshotting.cpp:113
&gt; +    options |= SnapshotOptionsPaintSelectionOnly;
&gt; +    return snapshotFrameRect(frame, enclosingIntRect(frame.selection().bounds()), options);

Awkward to modify the options argument with |= rather than just using | in the function call.

    return snapshotFrameRect(frame, enclosingIntRect(frame.selection().bounds()), options | SnapshotOptionsPaintSelectionOnly);

&gt; Source/WebCore/platform/DragImage.h:46
&gt; -//We need to #define YOffset as it needs to be shared with WebKit
&gt; +// We need to #define YOffset as it needs to be shared with WebKit
&gt;  #define DragLabelBorderYOffset 2

I don’t understand this comment that we are reformatting. How on earth does defining DragLabelBorderYOffset (not YOffset) allow it to be “shared with WebKit”.

&gt; Source/WebCore/platform/DragImage.h:65
&gt;  #elif PLATFORM(WIN)
&gt; -    typedef HBITMAP DragImageRef;
&gt; +typedef HBITMAP DragImageRef;
&gt;  #elif PLATFORM(GTK) || PLATFORM(NIX)
&gt; -    typedef cairo_surface_t* DragImageRef;
&gt; +typedef cairo_surface_t* DragImageRef;
&gt;  #elif PLATFORM(EFL) || PLATFORM(BLACKBERRY)
&gt; -    typedef void* DragImageRef;
&gt; +typedef void* DragImageRef;
&gt;  #endif

We should really change all of these to use some kind of object or smart pointer, so we don’t need deleteDragImage.

&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:5977
&gt;      if (![self _hasSelection])
&gt;          return nil;
&gt; -    return selectionImage(core([self _frame]), forceBlackText);
&gt; +
&gt; +    Frame* coreFrame = core([self _frame]);
&gt; +    if (!coreFrame)
&gt; +        return nil;
&gt; +    return [createDragImageForSelection(*coreFrame, forceBlackText).leakRef() autorelease];

The paragraphing here is strange. I would omit the blank line or include a blank line after the second return nil.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956754</commentid>
    <comment_count>62</comment_count>
      <attachid>218467</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-04 19:05:53 -0800</bug_when>
    <thetext>Comment on attachment 218467
v5

Clearing flags on attachment: 218467

Committed r160152: &lt;http://trac.webkit.org/changeset/160152&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956755</commentid>
    <comment_count>63</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-04 19:06:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957450</commentid>
    <comment_count>64</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-06 18:06:10 -0800</bug_when>
    <thetext>This seems to have totally broken the selection dragging snapshot on Mac...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957452</commentid>
    <comment_count>65</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-06 18:09:03 -0800</bug_when>
    <thetext>(In reply to comment #64)
&gt; This seems to have totally broken the selection dragging snapshot on Mac...

Filed https://bugs.webkit.org/show_bug.cgi?id=125375</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216888</attachid>
            <date>2013-11-13 19:01:59 -0800</date>
            <delta_ts>2013-11-14 08:24:32 -0800</delta_ts>
            <desc>v1</desc>
            <filename>bug-124325-20131113190158.patch</filename>
            <type>text/plain</type>
            <size>79550</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThmMzdhYTc5OWNiZmI0
MzI3OTEzZWE4ZjIzNzA0YzE2YzE2OTk2MC4uOTVmY2UwZGVjOWFhOGQ2NGZjNTY2YWNhYWNmMDJj
ZDhkMmRmODlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEzLTExLTEzICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc2NyZWVuc2hvdCBjb2xsZWN0
aW9uIGNvZGUgaXMgc3ByZWFkIGJldHdlZW4gRnJhbWUsCisgICAgICAgIEZyYW1lU25hcHNob3R0
aW5nLCBhbmQgcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGZvcgorICAgICAgICBl
YWNoLiBBbGwgb2YgdGhpcyBjb2RlIGlzIG5vdyBsb2NhdGVkIHdpdGggRHJhZ0ltYWdlIGZ1bmN0
aW9ucywKKyAgICAgICAgYXMgYWxtb3N0IGFsbCB1c2VzIG9mIHNuYXBzaG90cyBhcmUgdXNlZCBm
b3IgZHJhZ2dpbmcgZWZmZWN0cy4KKworICAgICAgICBGb3IgaW5zcGVjdG9yIGNsaWVudHMgdG8g
YmUgYWJsZSB0byBlbmNvZGUgdGhlc2Ugc2NyZWVuc2hvdHMgd2l0aAorICAgICAgICB0aGUgcGxh
dGZvcm0tc3BlY2lmaWMgYmFzZTY0IGVuY29kZXIgcHJvdmlkZWQgYnkKKyAgICAgICAgSW1hZ2VC
dWZmZXI6OnRvRGF0YVVSTCwgd2UgYWRkIGEgdGhpbiB3cmFwcGVyIHRvIGJyZWFrCisgICAgICAg
IGRlcGVuZGVuY2llcyBvbiB0aGUgSW1hZ2VCdWZmZXIgaGVhZGVyIGFzIHdlbGwuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGlzIGlzIGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgIChXZWJDb3JlOjpsb29r
dXBFbGVtZW50Q2xhc3MpOgorICAgICAgICAoLVtET01Ob2RlIHJlbmRlcmVkSW1hZ2VdKToKKyAg
ICAgICAgKC1bRE9NUmFuZ2UgcmVuZGVyZWRJbWFnZUZvcmNpbmdCbGFja1RleHQ6XSk6CisgICAg
ICAgIChraXQpOgorICAgICAgICAqIGRvbS9DbGlwYm9hcmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIGRvbS9DbGlwYm9hcmRN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmNyZWF0ZURyYWdJbWFnZSk6IFVz
ZSBJbnRSZWN0IGZvciBtYXRoLgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICog
cGFnZS9GcmFtZS5jcHA6IFJlbW92ZSBub2RlSW1hZ2UgYW5kIGRyYWdJbWFnZUZvclNlbGVjdGlv
bi4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6IFJlbW92ZSBub2RlSW1hZ2UgYW5kIGRyYWdJbWFn
ZUZvclNlbGVjdGlvbi4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5tbTogUmVtb3ZlZC4K
KyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1vdmVkLgorICAgICAg
ICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcDoKKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5o
OgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6IFJlbmFtZSBhbmQgbW92ZSBtZXRo
b2RzIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpmaXREcmFnSW1hZ2VUb01heFNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFn
SW1hZ2VGb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRGcmFtZVBhaW50aW5nU3Rh
dGU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRG
cmFtZVBhaW50aW5nU3RhdGU6On5TY29wZWRGcmFtZVBhaW50aW5nU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yRnJhbWVTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVE
cmFnSW1hZ2VGb3JMaW5rKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGlz
c29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJ
bWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmZvbnRG
cm9tTlNGb250KToKKyAgICAgICAgKFdlYkNvcmU6OndpZHRoV2l0aEZvbnQpOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhd0F0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0RvdWJsZWRBdFBv
aW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckZyYW1lU2VsZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RHJhZ0ltYWdlRm9yTGluayk6CisKIDIwMTMtMTEtMTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZW5hbWUgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuaCB0byBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDUyMzAxNjExZGQxMTE2NWQ0NjQwZmRlMTlmMzc5ZTY1ZDU2ZjE3NWQu
LjFmZTQ0OGM0MThjNTk1ZmJhZjM5YjcwNjZjOTEyMTc4NjY3OGY3ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0xMS0xMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mu
d2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgQ29uc29saWRhdGUgdmFyaW91cyBmcmFtZSBzbmFw
c2hvdCBjYXBhYmlsaXRpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjQzMjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2UgbmV3IHBsYXRmb3JtLWluZGVwZW5kZW50IG1ldGhvZHMgaW5zdGVhZCBv
ZiBNYWMgbWV0aG9kcy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IF9zZWxlY3Rpb25EcmFnZ2luZ0ltYWdlXSk6CisgICAgICAgICgt
W1dlYkhUTUxWaWV3IHNlbGVjdGlvbkltYWdlRm9yY2luZ0JsYWNrVGV4dDpdKToKKwogMjAxMy0x
MS0xMyAgR29yZG9uIFNoZXJpZGFuICA8Z29yZG9uX3NoZXJpZGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmVkIGRlcHJlY2F0ZWQgZG93bmxvYWQgZGVsZWdhdGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCAxNDI0MmIzMjEyZjlmNGFlMWQ4YjNkMzYyMjU1MjNlZTc4MTY4MjFlLi5lMjZk
OGFhZGUzNWQ5M2Q1NWYzNzNiOTJhYjNmYWJmYzEyNGUzNWYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtMjUzLDYgKzI1Myw5IEBAIF9fWk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTQyZ0FjY2Vz
c2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkRQogX19aTjdXZWJDb3JlMTNDaGFy
YWN0ZXJEYXRhN3NldERhdGFFUktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29yZTEzQ29udGFp
bmVyTm9kZTExYXBwZW5kQ2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUVSaU5TXzE0
QXR0YWNoQmVoYXZpb3JFCiBfX1pON1dlYkNvcmUxM0NvbnRhaW5lck5vZGUxMXJlbW92ZUNoaWxk
RVBOU180Tm9kZUVSaQorX19aTjdXZWJDb3JlMTNGcmFtZVNuYXBzaG90MTRjcmVhdGVGcm9tUmVj
dEVSTlNfNUZyYW1lRVJLTlNfN0ludFJlY3RFYmIKK19fWk43V2ViQ29yZTEzRnJhbWVTbmFwc2hv
dDl0b0RhdGFVUkxFUktOM1dURjZTdHJpbmdFUGQKK19fWk43V2ViQ29yZTEzRnJhbWVTbmFwc2hv
dEQxRXYKIF9fWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjExc2V0Q2hpbGRyZW5FUktOM1dURjZW
ZWN0b3JJUFMwX0xtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTEzR3Jh
cGhpY3NMYXllcjEycmVwbGFjZUNoaWxkRVBTMF9TMV8KIF9fWk43V2ViQ29yZTEzR3JhcGhpY3NM
YXllcjEyc2V0WlBvc2l0aW9uRWYKQEAgLTQyNyw3ICs0MzAsNiBAQCBfX1pON1dlYkNvcmUxNGNv
b2tpZXNFbmFibGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU18zVVJMRVM1Xwog
X19aTjdXZWJDb3JlMTRkZWNvZGVIb3N0TmFtZUVQOE5TU3RyaW5nCiBfX1pON1dlYkNvcmUxNGVu
Y29kZUhvc3ROYW1lRVA4TlNTdHJpbmcKIF9fWk43V2ViQ29yZTE0ZW5kT2ZQYXJhZ3JhcGhFUktO
U18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKLV9f
Wk43V2ViQ29yZTE0c2VsZWN0aW9uSW1hZ2VFUE5TXzVGcmFtZUViCiBfX1pON1dlYkNvcmUxNHNl
dE1ldGFkYXRhVVJMRVJOM1dURjZTdHJpbmdFUktTMV9TNF8KIF9fWk43V2ViQ29yZTE1QWZmaW5l
VHJhbnNmb3JtNWZsaXBZRXYKIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtNXNjYWxlRWQK
QEAgLTkwMSw2ICs5MDMsNyBAQCBfX1pON1dlYkNvcmUzMGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dp
dGhSYW5nZUVQOE5TU3RyaW5nOF9OU1JhbmdlCiBfX1pON1dlYkNvcmUzMG92ZXJyaWRlVXNlclBy
ZWZlcnJlZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklOUzBfNlN0cmluZ0VMbTBFTlMwXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUzMUNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGU1ZW1wdHlFdgogX19aTjdXZWJDb3JlMzFDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlNnNoYXJlZEV2CitfX1pON1dlYkNvcmUzMmNyZWF0ZURyYWdJbWFnZUZvckZyYW1lU2VsZWN0
aW9uRVJOU181RnJhbWVFYgogX19aTjdXZWJDb3JlMzNzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUzN1dpZGdldEhpZXJhcmNoeVVw
ZGF0ZXNTdXNwZW5zaW9uU2NvcGUxMW1vdmVXaWRnZXRzRXYKIF9fWk43V2ViQ29yZTM3V2lkZ2V0
SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTM1c193aWRnZXRIaWVyYXJjaHlVcGRhdGVT
dXNwZW5kQ291bnRFCkBAIC0yMDMyLDcgKzIwMzUsNiBAQCBfX1pON1dlYkNvcmUzOGNvbnRleHRN
ZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51RXYKIF9fWk43V2ViQ29yZTQyY29udGV4dE1l
bnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nRXYKIF9fWk43V2ViQ29yZTQyY29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nRXYKIF9fWk43V2ViQ29yZTQ2Y29u
dGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseUV2Ci1fX1pON1dlYkNv
cmU1RnJhbWU5bm9kZUltYWdlRVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTZDdXJzb3I4ZnJvbVR5
cGVFTlMwXzRUeXBlRQogX19aTjdXZWJDb3JlNkN1cnNvckMxRVBOU181SW1hZ2VFUktOU184SW50
UG9pbnRFCiBfX1pON1dlYkNvcmU2Q3Vyc29yQzFFUktTMF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMmE2NTEzMTJlZDU3ZGMx
NjYwOWEwMzMyOTI5ODlkZmJkYWRkOTU1Li5hNDY2NjI2M2JjYjRkMWIzNDI0ZWQwNjk3MGQwM2I3
N2U5MzEwZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yMDAwLDcgKzIwMDAsNiBAQAogCQk2NUEyMTQ4NTA5N0EzRjUzMDBC
OTA1MEEgLyogRnJhbWVUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVCRjAyMkUwOTc0
ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1QkYwMjI5MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgKi87
IH07CiAJCTY1QkYwMjJGMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2
IC8qIEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCRjAyM0MwOTc0ODE5MDAwQzQz
MTk2IC8qIEZyYW1lTWFjLm1tICovOyB9OwogCQk2NUM5N0FGMzA4RUE5MDg4MDBBQ0QyNzMgLyog
Y29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi87IH07CiAJCTY1Q0JGRUY5MDk3
NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmll
dy5jcHAgKi87IH07CiAJCTY1Q0JGRUZBMDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY4MDk3
NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjIwMSw4ICsyMjAwLDYgQEAKIAkJN0M1MzQzRkMxN0I3
NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQTE3Qjc0QjYzMDA0MjMy
RjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJN0M1MzQzRkQxN0I3
NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MzQzRkIxN0I3NEI2MzAwNDIzMkYw
IC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oICovOyB9OwogCQk3Q0M3RTNENzE3MjA4QzBG
MDAzQzUyNzcgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDN0UzRDYxNzIwOEMwRjAwM0M1Mjc3IC8qIElE
TlNjcmlwdFdoaXRlTGlzdC50eHQgKi87IH07Ci0JCTdDRTMwREE5MTcxQjYzRDIwMEVDMzNFMSAv
KiBGcmFtZVNuYXBzaG90dGluZ01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDRTMwREE3MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90
dGluZ01hYy5tbSAqLzsgfTsKLQkJN0NFMzBEQUExNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25h
cHNob3R0aW5nTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Q0UzMERBODE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RDc0MUJE
QTE3NzIyNkFBMDA4NTkxNzAgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIENvcHkgR2VuZXJhdGVk
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxNDgwOUQx
MzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCAqLzsgfTsKIAkJN0UxMkU5MEYxNUZB
NUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMTJFOTBEMTVGQTVEM0EwMDVFNDEy
NiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi87IH07CiAJCTdFMTJFOTEwMTVGQTVE
M0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMTJFOTBFMTVGQTVEM0EwMDVFNDEy
NiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCAqLzsgfTsKQEAgLTUyMzgsNiArNTIz
NSw4IEBACiAJCUMzQ0YxN0E1MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMTE1
QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMzQ0YxN0E2MTVCMDA2M0YwMDI3NkQzOSAv
KiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTIxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi87IH07CiAJCUMzQ0YxN0E3MTVCMDA2M0YwMDI3NkQzOSAv
KiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9i
c2VydmVyUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlDNENENjI5MjE4MzQ2QkVBMDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNENENjI5MDE4
MzQ2QkVBMDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdC5jcHAgKi87IH07CisJCUM0Q0Q2MjkzMTgz
NDZCRUEwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNENENjI5MTE4MzQ2QkVBMDA3RUJBRjEgLyogRnJhbWVT
bmFwc2hvdC5oICovOyB9OwogCQlDNTBCNTYxNjEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0
aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi87IH07CiAJCUM1
MEI1NjE3MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBCNTYxNTEyMTE5RDIzMDA4QjQ2RTAg
LyogR3JvdXBTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUM1MEQwRTgyMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEQw
RTgwMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCAqLzsgfTsKQEAgLTg3
MzAsNyArODcyOSw2IEBACiAJCTY1QTY0MEYwMDUzM0JCMUYwMDg1RTc3NyAvKiBCbG9ja0V4Y2Vw
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQmxvY2tFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQk2NUJGMDIyOTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2IC8qIEZy
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRnJhbWVNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3
MyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsg
dXNlc1RhYnMgPSAwOyB9OwogCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVZpZXcuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUg
LyogRnJhbWVWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVZp
ZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5NTgsOCArODk1Niw2IEBACiAJ
CTdDNjEzNkY4MTcxMEMzNTIwMEZGNEE1NyAvKiBJbkZpbGVzUGFyc2VyLnBtICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsg
bmFtZSA9IEluRmlsZXNQYXJzZXIucG07IHBhdGggPSBzY3JpcHRzL0luRmlsZXNQYXJzZXIucG07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNjEzNkY5MTcxMEMzNTIwMEZGNEE1NyAv
KiBTdGF0aWNTdHJpbmcucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gU3RhdGljU3RyaW5nLnBtOyBwYXRo
ID0gc2NyaXB0cy9TdGF0aWNTdHJpbmcucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IElETlNjcmlwdFdoaXRlTGlzdC50eHQ7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTdDRTMwREE3MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90
dGluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZyYW1l
U25hcHNob3R0aW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0UzMERB
ODE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVTbmFwc2hvdHRpbmdNYWMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0UxMkU5MEQxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRl
ck1lc2hHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9t
RmlsdGVyTWVzaEdlbmVyYXRvci5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2Vu
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMTJFOTBFMTVGQTVEM0Ew
MDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwOyBwYXRo
ID0gZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVyZ2VQcmlvcml0eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIyNjMsNiArMTIyNTksOCBAQAogCQlDM0NGMTdB
MTE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMzQ0YxN0EyMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVn
aXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWRUYXJnZXRP
YnNlcnZlclJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzNDRjE3
QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRDRDYyOTAxODM0NkJFQTAwN0VCQUYxIC8qIEZy
YW1lU25hcHNob3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJh
bWVTbmFwc2hvdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0Q0Q2MjkxMTgz
NDZCRUEwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZyYW1lU25hcHNob3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRp
bmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyb3VwU2V0dGluZ3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAwRkY0MjcyOTAwQUMyNjQ0IC8q
IFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NTU4Nyw2ICsxNTU4NSw4IEBACiAJCQkJNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1l
LmggKi8sCiAJCQkJOTc0QTg2MjAxNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlci5jcHAgKi8sCiAJCQkJOTc0QTg2MjExNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlci5oICovLAorCQkJCUM0Q0Q2MjkwMTgzNDZCRUEwMDdFQkFGMSAvKiBG
cmFtZVNuYXBzaG90LmNwcCAqLywKKwkJCQlDNENENjI5MTE4MzQ2QkVBMDA3RUJBRjEgLyogRnJh
bWVTbmFwc2hvdC5oICovLAogCQkJCTY1QTIxNDgyMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRy
ZWUuY3BwICovLAogCQkJCTY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAq
LywKIAkJCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAqLywKQEAg
LTE2NTAxLDkgKzE2NTAxLDYgQEAKIAkJCQlBQkFGMjIwNzBDMDNCMUM3MDBCMEJDRjAgLyogQ2hy
b21lTWFjLm1tICovLAogCQkJCUE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJv
bGxlck1hYy5tbSAqLywKIAkJCQk5M0MwOUE3RTBCMDY0RUVGMDA1QUJENEQgLyogRXZlbnRIYW5k
bGVyTWFjLm1tICovLAotCQkJCTY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5t
bSAqLywKLQkJCQk3Q0UzMERBODE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdN
YWMuaCAqLywKLQkJCQk3Q0UzMERBNzE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRp
bmdNYWMubW0gKi8sCiAJCQkJMUMyNjQ5N0IwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3Bw
ICovLAogCQkJCUUxQzJGMjQ4MTUzM0EyMTIwMDgzRjk3NCAvKiBTZXR0aW5nc01hYy5tbSAqLywK
IAkJCQlGNTg3ODU0QzAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUZyYW1lVmlldy5oICovLApA
QCAtMjI0MDEsNiArMjIzOTgsNyBAQAogCQkJCThBMTJFMzVEMTFGQTMzMjgwMDI1ODM2QSAvKiBE
b2N1bWVudExvYWRUaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUVEMkJBODNDMDlBMjRCOTEw
MDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UwNTdGQTYx
MjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQzRDRDYyOTMxODM0NkJFQTAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0OTQ3RkZFMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9yZGVy
ZWRNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAxRjFENyAvKiBE
b2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwNTg1MjkxN0ZERTAyQzAwNUYy
QkNCIC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTIyOTQ4
LDcgKzIyOTQ2LDYgQEAKIAkJCQk2MjhEMjE0RTEyMTMxRUY0MDA1NURDRkMgLyogRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNzAxODBGMjg5NTAwRkJB
REI5IC8qIENyeXB0b0tleVVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwRTA5OUU2
NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTdDRTMw
REFBMTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTcyMDVBQjAxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERpcmVjdG9yeURv
Y3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjI0LDEwICsyNjIyMSw4IEBACiAJCQkJOTMy
RTE2MDkwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkJBNzY2RTE2NjQyN0E4MDA1QkU1RDEgLyogRnJhbWVM
b2FkUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NUJGMDI0NTA5NzQ4MTkwMDBDNDMx
OTYgLyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwRDA5OUU2NDkyMDA1
NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEE4Qzk2RUIw
QkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJN0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQUQxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDRGF0YUNo
YW5uZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUEyMTQ4NDA5N0EzRjUzMDBCOTA1
MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzkxQTEwMTgwMjM0Mzkw
MEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2OTc1LDYg
KzI2OTcwLDcgQEAKIAkJCQlCMkZBM0Q5QTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdHRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjdCMjgyNzBDRUYwQzA3MDBEMzlENTQgLyogSlNT
VkdHbHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTExODFBMUNEQzAw
QzA3NEE1IC8qIEFWQXVkaW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzRD
RDYyOTIxODM0NkJFQTAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjREOTEyOTgxM0NBOTZERTAwRDIxOTE1IC8qIEpTU1ZHR2x5cGhSZWZFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRDlDMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0dy
YWRpZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTE3NEVDMkJDQ0FGMTdFQUUz
RjQ2RjggLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NLm1tCmluZGV4IGNjMDM2NTUyNmUzMTZlMDVkNWIxNWJiNzQ0NGMz
YmIyYmNmYTkwNTAuLjRkNGI5ZjljOGUyNjczNmYxMTBkOGVjZDdlMDA5NGJkNTAwMjYwMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCkBAIC0yMiw3ICsyMiw3IEBACiAgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgpAQCAtMzYsOSArMzYsOSBAQAogI2lt
cG9ydCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2YXRlLmgiCiAjaW1wb3J0
ICJET01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKICNpbXBvcnQgIkZv
bnQuaCIKICNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5o
IgogI2ltcG9ydCAiSFRNTEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9y
dCAiSFRNTFBhcnNlcklkaW9tcy5oIgpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyBDbGFzcyBs
b29rdXBFbGVtZW50Q2xhc3MoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnKQogICAgIC8vIERvIGEg
c3BlY2lhbCBsb29rdXAgdG8gaWdub3JlIGVsZW1lbnQgcHJlZml4ZXMKICAgICBpZiAodGFnLmhh
c1ByZWZpeCgpKQogICAgICAgICByZXR1cm4gZWxlbWVudENsYXNzTWFwLT5nZXQoUXVhbGlmaWVk
TmFtZShudWxsQXRvbSwgdGFnLmxvY2FsTmFtZSgpLCB0YWcubmFtZXNwYWNlVVJJKCkpLmltcGwo
KSk7Ci0gICAgCisKICAgICByZXR1cm4gZWxlbWVudENsYXNzTWFwLT5nZXQodGFnLmltcGwoKSk7
CiB9CiAKQEAgLTI4OSw3ICsyODksNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3Jl
OjpFdmVudFRhcmdldCogZXZlbnRUYXJnZXQpCiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0g
bm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIGZyYW1lLT5ub2RlSW1hZ2Uobm9kZSkuZ2V0KCk7CisgICAgcmV0
dXJuIFtjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgbm9kZSkgYXV0b3JlbGVhc2VdOwog
fQogCiAtIChOU0FycmF5ICopdGV4dFJlY3RzCkBAIC0zMzUsNyArMzM1LDcgQEAgaWQgPERPTUV2
ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6cmFu
Z2VJbWFnZShmcmFtZSwgcmFuZ2UsIGZvcmNlQmxhY2tUZXh0KTsKKyAgICByZXR1cm4gW2NyZWF0
ZURyYWdJbWFnZUZvclJhbmdlKCpmcmFtZSwgcmFuZ2UsIGZvcmNlQmxhY2tUZXh0KSBhdXRvcmVs
ZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKQEAgLTQ2OCwxMCArNDY4LDEwIEBA
IERPTU5vZGVGaWx0ZXIgKmtpdChXZWJDb3JlOjpOb2RlRmlsdGVyKiBpbXBsKQogewogICAgIGlm
ICghaW1wbCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKKwogICAgIGlmIChET01Ob2RlRmls
dGVyICp3cmFwcGVyID0gZ2V0RE9NV3JhcHBlcihpbXBsKSkKICAgICAgICAgcmV0dXJuIFtbd3Jh
cHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAgICAKKwogICAgIERPTU5vZGVGaWx0ZXIgKndy
YXBwZXIgPSBbW0RPTU5vZGVGaWx0ZXIgYWxsb2NdIF9pbml0XTsKICAgICB3cmFwcGVyLT5faW50
ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVybmFsKj4oaW1wbCk7CiAgICAg
aW1wbC0+cmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZE1hYy5tbQppbmRleCA3NmNhNmZjYTNl
NDI0MDdiNWY4ZTdiMzVlNjU4NzM3YzIxMTNlOGZiLi5hMWNjZjRmZDkzZjRhOWJlY2ZmYzA5YzUz
NGI5ZjRmOWQzZDg4ZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJk
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRNYWMubW0KQEAgLTIwLDcg
KzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpbXBvcnQgIkNhY2hlZEltYWdlLmgiCiAjaW1wb3J0ICJFbGVtZW50
LmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgorI2ltcG9ydCAiRHJhZ0ltYWdl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTcgKzQwLDE3IEBAIERyYWdJbWFn
ZVJlZiBDbGlwYm9hcmQ6OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgbG9jYXRpb24pIGNvbnN0
CiAgICAgTlNJbWFnZSAqcmVzdWx0ID0gbmlsOwogICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQp
IHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZHJhZ0ltYWdlRWxlbWVudC0+ZG9jdW1l
bnQoKS5mcmFtZSgpKSB7Ci0gICAgICAgICAgICBOU1JlY3QgaW1hZ2VSZWN0OwotICAgICAgICAg
ICAgTlNSZWN0IGVsZW1lbnRSZWN0OwotICAgICAgICAgICAgcmVzdWx0ID0gc25hcHNob3REcmFn
SW1hZ2UoZnJhbWUsIG1fZHJhZ0ltYWdlRWxlbWVudC5nZXQoKSwgJmltYWdlUmVjdCwgJmVsZW1l
bnRSZWN0KTsKKyAgICAgICAgICAgIEludFJlY3QgaW1hZ2VSZWN0OworICAgICAgICAgICAgSW50
UmVjdCBlbGVtZW50UmVjdDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFtjcmVhdGVEcmFnSW1hZ2VG
b3JJbWFnZSgqZnJhbWUsIG1fZHJhZ0ltYWdlRWxlbWVudC5nZXQoKSwgaW1hZ2VSZWN0LCBlbGVt
ZW50UmVjdCkgYXV0b3JlbGVhc2VdOwogICAgICAgICAgICAgLy8gQ2xpZW50IHNwZWNpZmllcyBw
b2ludCByZWxhdGl2ZSB0byBlbGVtZW50LCBub3QgdGhlIHdob2xlIGltYWdlLCB3aGljaCBtYXkg
aW5jbHVkZSBjaGlsZAogICAgICAgICAgICAgLy8gbGF5ZXJzIHNwcmVhZCBvdXQgYWxsIG92ZXIg
dGhlIHBsYWNlLgotICAgICAgICAgICAgbG9jYXRpb24uc2V0WChlbGVtZW50UmVjdC5vcmlnaW4u
eCAtIGltYWdlUmVjdC5vcmlnaW4ueCArIG1fZHJhZ0xvY2F0aW9uLngoKSk7Ci0gICAgICAgICAg
ICBsb2NhdGlvbi5zZXRZKGltYWdlUmVjdC5zaXplLmhlaWdodCAtIChlbGVtZW50UmVjdC5vcmln
aW4ueSAtIGltYWdlUmVjdC5vcmlnaW4ueSArIG1fZHJhZ0xvY2F0aW9uLnkoKSkpOworICAgICAg
ICAgICAgbG9jYXRpb24uc2V0WChlbGVtZW50UmVjdC54KCkgLSBpbWFnZVJlY3QueCgpICsgbV9k
cmFnTG9jYXRpb24ueCgpKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNldFkoaW1hZ2VSZWN0Lmhl
aWdodCgpIC0gKGVsZW1lbnRSZWN0LnkoKSAtIGltYWdlUmVjdC55KCkgKyBtX2RyYWdMb2NhdGlv
bi55KCkpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9kcmFnSW1hZ2UpIHsKICAgICAg
ICAgcmVzdWx0ID0gbV9kcmFnSW1hZ2UtPmltYWdlKCktPmdldE5TSW1hZ2UoKTsKLSAgICAgICAg
CisKICAgICAgICAgbG9jYXRpb24gPSBtX2RyYWdMb2NhdGlvbjsKICAgICAgICAgbG9jYXRpb24u
c2V0WShbcmVzdWx0IHNpemVdLmhlaWdodCAtIGxvY2F0aW9uLnkoKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA3ZWIyNDlkZjdmZjliNTVhOGVjZTVh
ZTdmZjQ3MmUwY2Q3YmFjMjQ3Li5hYTIzMWY1ODg2ZTQ4YjlhMDFlOWViODNmYWJmNGM0YzhmYjFk
NjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudC5oIgog
I2luY2x1ZGUgIkRyYWdEYXRhLmgiCisjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAi
RHJhZ1Nlc3Npb24uaCIKICNpbmNsdWRlICJEcmFnU3RhdGUuaCIKICNpbmNsdWRlICJFZGl0b3Iu
aCIKQEAgLTc4MCw3ICs3ODEsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJh
bWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICB9
CiAgICAgICAgIG1fY2xpZW50LndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNl
QWN0aW9uU2VsZWN0aW9uLCBkcmFnT3JpZ2luLCBjbGlwYm9hcmQpOwogICAgICAgICBpZiAoIWRy
YWdJbWFnZSkgewotICAgICAgICAgICAgZHJhZ0ltYWdlID0gZGlzc29sdmVEcmFnSW1hZ2VUb0Zy
YWN0aW9uKHNyYy5kcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKSwgRHJhZ0ltYWdlQWxwaGEpOworICAg
ICAgICAgICAgZHJhZ0ltYWdlID0gZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKGNyZWF0ZURy
YWdJbWFnZUZvckZyYW1lU2VsZWN0aW9uKHNyYyksIERyYWdJbWFnZUFscGhhKTsKICAgICAgICAg
ICAgIGRyYWdMb2MgPSBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhzcmMpOwogICAgICAgICAgICAg
bV9kcmFnT2Zmc2V0ID0gSW50UG9pbnQoZHJhZ09yaWdpbi54KCkgLSBkcmFnTG9jLngoKSwgZHJh
Z09yaWdpbi55KCkgLSBkcmFnTG9jLnkoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
aW5kZXggNjI0MWVlM2M5NTJiNDYxNTVjMjkyMDZiMDhmOTAxZTAwZTUyZjU4MC4uY2U0YWU0N2Y5
NzUyNjdmNGE3NzQyZWViNjhlNjVmZTQ0NjA2OTYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAg
LTI1NCwxMCArMjU0LDEwIEBAIHZvaWQgRnJhbWU6OnNldFZpZXcoUGFzc1JlZlB0cjxGcmFtZVZp
ZXc+IHZpZXcpCiAgICAgLy8gdGhlc2UgY2FsbHMgdG8gd29yay4KICAgICBpZiAoIXZpZXcgJiYg
bV9kb2MgJiYgbV9kb2MtPmF0dGFjaGVkKCkgJiYgIW1fZG9jLT5pblBhZ2VDYWNoZSgpKQogICAg
ICAgICBtX2RvYy0+cHJlcGFyZUZvckRlc3RydWN0aW9uKCk7Ci0gICAgCisKICAgICBpZiAobV92
aWV3KQogICAgICAgICBtX3ZpZXctPnVuc2NoZWR1bGVSZWxheW91dCgpOwotICAgIAorCiAgICAg
ZXZlbnRIYW5kbGVyKCkuY2xlYXIoKTsKIAogICAgIG1fdmlldyA9IHZpZXc7CkBAIC0yNjYsNyAr
MjY2LDcgQEAgdm9pZCBGcmFtZTo6c2V0VmlldyhQYXNzUmVmUHRyPEZyYW1lVmlldz4gdmlldykK
ICAgICAvLyBTaW5jZSB0aGlzIHBhcnQgbWF5IGJlIGdldHRpbmcgcmV1c2VkIGFzIGEgcmVzdWx0
IG9mIGJlaW5nCiAgICAgLy8gcHVsbGVkIGZyb20gdGhlIGJhY2svZm9yd2FyZCBjYWNoZSwgcmVz
ZXQgdGhpcyBmbGFnLgogICAgIGxvYWRlcigpLnJlc2V0TXVsdGlwbGVGb3JtU3VibWlzc2lvblBy
b3RlY3Rpb24oKTsKLSAgICAKKwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIGlm
IChtX3ZpZXcgJiYgdGlsZWRCYWNraW5nU3RvcmUoKSkKICAgICAgICAgbV92aWV3LT5zZXRQYWlu
dHNFbnRpcmVDb250ZW50cyh0cnVlKTsKQEAgLTMzOCw3ICszMzgsNyBAQCBTdHJpbmcgRnJhbWU6
OnNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChSZWd1bGFyRXhwcmVzc2lvbiogcmVnRXhwLCBIVE1M
VGFibGVDZWxsRQogICAgIEhUTUxUYWJsZUNlbGxFbGVtZW50KiBhYm92ZUNlbGwgPSBjZWxsLT5j
ZWxsQWJvdmUoKTsKICAgICBpZiAoYWJvdmVDZWxsKSB7CiAgICAgICAgIC8vIHNlYXJjaCB3aXRo
aW4gdGhlIGFib3ZlIGNlbGwgd2UgZm91bmQgZm9yIGEgbWF0Y2gKLSAgICAgICAgc2l6ZV90IGxl
bmd0aFNlYXJjaGVkID0gMDsgICAgCisgICAgICAgIHNpemVfdCBsZW5ndGhTZWFyY2hlZCA9IDA7
CiAgICAgICAgIGZvciAoVGV4dCogdGV4dE5vZGUgPSBUZXh0Tm9kZVRyYXZlcnNhbDo6Zmlyc3RX
aXRoaW4oYWJvdmVDZWxsKTsgdGV4dE5vZGU7IHRleHROb2RlID0gVGV4dE5vZGVUcmF2ZXJzYWw6
Om5leHQodGV4dE5vZGUsIGFib3ZlQ2VsbCkpIHsKICAgICAgICAgICAgIGlmICghdGV4dE5vZGUt
PnJlbmRlcmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0zNzYsNyArMzc2LDcg
QEAgU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNCZWZvcmVFbGVtZW50KGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQKICAgICAgICAgKnJlc3VsdERpc3RhbmNlID0gbm90
Rm91bmQ7CiAgICAgaWYgKHJlc3VsdElzSW5DZWxsQWJvdmUpCiAgICAgICAgICpyZXN1bHRJc0lu
Q2VsbEFib3ZlID0gZmFsc2U7Ci0gICAgCisKICAgICAvLyB3YWxrIGJhY2t3YXJkcyBpbiB0aGUg
bm9kZSB0cmVlLCB1bnRpbCBhbm90aGVyIGVsZW1lbnQsIG9yIGZvcm0sIG9yIGVuZCBvZiB0cmVl
CiAgICAgaW50IHVuc2lnbmVkIGxlbmd0aFNlYXJjaGVkID0gMDsKICAgICBOb2RlKiBuOwpAQCAt
NDM0LDcgKzQzNCw3IEBAIHN0YXRpYyBTdHJpbmcgbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5nKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIGNvbnN0IFN0cmluCiAgICAgLy8gTWFrZSBudW1i
ZXJzIGFuZCBfJ3MgaW4gZmllbGQgbmFtZXMgYmVoYXZlIGxpa2Ugd29yZCBib3VuZGFyaWVzLCBl
LmcuLCAiYWRkcmVzczIiCiAgICAgcmVwbGFjZShtdXRhYmxlU3RyaW5nVG9NYXRjaCwgUmVndWxh
ckV4cHJlc3Npb24oIlxcZCIsIFRleHRDYXNlU2Vuc2l0aXZlKSwgIiAiKTsKICAgICBtdXRhYmxl
U3RyaW5nVG9NYXRjaC5yZXBsYWNlKCdfJywgJyAnKTsKLSAgICAKKwogICAgIE93blB0cjxSZWd1
bGFyRXhwcmVzc2lvbj4gcmVnRXhwKGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhsYWJlbHMpKTsKICAg
ICAvLyBVc2UgdGhlIGxhcmdlc3QgbWF0Y2ggd2UgY2FuIGZpbmQgaW4gdGhlIHdob2xlIHN0cmlu
ZwogICAgIGludCBwb3M7CkBAIC00NTMsMTIgKzQ1MywxMiBAQCBzdGF0aWMgU3RyaW5nIG1hdGNo
TGFiZWxzQWdhaW5zdFN0cmluZyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBjb25zdCBT
dHJpbgogICAgICAgICAgICAgc3RhcnQgPSBwb3MgKyAxOwogICAgICAgICB9CiAgICAgfSB3aGls
ZSAocG9zICE9IC0xKTsKLSAgICAKKwogICAgIGlmIChiZXN0UG9zICE9IC0xKQogICAgICAgICBy
ZXR1cm4gbXV0YWJsZVN0cmluZ1RvTWF0Y2guc3Vic3RyaW5nKGJlc3RQb3MsIGJlc3RMZW5ndGgp
OwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KLSAgICAKKwogU3RyaW5nIEZyYW1lOjptYXRjaExh
YmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQq
IGVsZW1lbnQpCiB7CiAgICAgLy8gTWF0Y2ggYWdhaW5zdCB0aGUgbmFtZSBlbGVtZW50LCB0aGVu
IGFnYWluc3QgdGhlIGlkIGVsZW1lbnQgaWYgbm8gbWF0Y2ggaXMgZm91bmQgZm9yIHRoZSBuYW1l
IGVsZW1lbnQuCkBAIC00NjgsNyArNDY4LDcgQEAgU3RyaW5nIEZyYW1lOjptYXRjaExhYmVsc0Fn
YWluc3RFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqIGUKICAg
ICBTdHJpbmcgcmVzdWx0RnJvbU5hbWVBdHRyaWJ1dGUgPSBtYXRjaExhYmVsc0FnYWluc3RTdHJp
bmcobGFiZWxzLCBlbGVtZW50LT5nZXROYW1lQXR0cmlidXRlKCkpOwogICAgIGlmICghcmVzdWx0
RnJvbU5hbWVBdHRyaWJ1dGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0RnJvbU5h
bWVBdHRyaWJ1dGU7Ci0gICAgCisKICAgICByZXR1cm4gbWF0Y2hMYWJlbHNBZ2FpbnN0U3RyaW5n
KGxhYmVscywgZWxlbWVudC0+Z2V0QXR0cmlidXRlKGlkQXR0cikpOwogfQogCkBAIC02MzcsMTQg
KzYzNywxNCBAQCB2b2lkIEZyYW1lOjpkaXNjb25uZWN0T3duZXJFbGVtZW50KCkKICAgICAgICAg
Ly8gZnJhbWUgaXMgYWxyZWFkeSBkZXRhY2hlZCAoYW5kIGNhbid0IGFjY2VzcyB0aGUgdG9wIGxl
dmVsIEFYIGNhY2hlKS4KICAgICAgICAgLy8gSG93ZXZlciwgd2UgcGFzcyBpbiB0aGUgY3VycmVu
dCBkb2N1bWVudCB0byBjbGVhclRleHRNYXJrZXJOb2Rlc0luVXNlIHNvIHdlIGNhbiBpZGVudGlm
eSB0aGUKICAgICAgICAgLy8gbm9kZXMgaW5zaWRlIHRoaXMgZG9jdW1lbnQgdGhhdCBuZWVkIHRv
IGJlIHJlbW92ZWQgZnJvbSB0aGUgY2FjaGUuCi0gICAgICAgIAorCiAgICAgICAgIC8vIFdlIGRv
bid0IGNsZWFyIHRoZSBBWE9iamVjdENhY2hlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRv
IGNsZWFyIHRoZSB0b3AgbGV2ZWwgY2FjaGUKICAgICAgICAgLy8gd2hlbiBhIHN1Yi1mcmFtZSBp
cyByZW1vdmVkLgogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKICAgICAgICAgaWYgKEFYT2JqZWN0
Q2FjaGUqIGNhY2hlID0gbV9vd25lckVsZW1lbnQtPmRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVj
dENhY2hlKCkpCiAgICAgICAgICAgICBjYWNoZS0+Y2xlYXJUZXh0TWFya2VyTm9kZXNJblVzZShk
b2N1bWVudCgpKTsKICNlbmRpZgotICAgICAgICAKKwogICAgICAgICBtX293bmVyRWxlbWVudC0+
Y2xlYXJDb250ZW50RnJhbWUoKTsKICAgICAgICAgaWYgKG1fcGFnZSkKICAgICAgICAgICAgIG1f
cGFnZS0+ZGVjcmVtZW50U3ViZnJhbWVDb3VudCgpOwpAQCAtOTY2LDEwOCArOTY2LDQgQEAgYm9v
bCBGcmFtZTo6aXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdJTikKLXN0cnVjdCBT
Y29wZWRGcmFtZVBhaW50aW5nU3RhdGUgewotICAgIFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZShG
cmFtZSogZnJhbWUsIE5vZGUqIG5vZGUpCi0gICAgICAgIDogZnJhbWUoZnJhbWUpCi0gICAgICAg
ICwgbm9kZShub2RlKQotICAgICAgICAsIHBhaW50QmVoYXZpb3IoZnJhbWUtPnZpZXcoKS0+cGFp
bnRCZWhhdmlvcigpKQotICAgICAgICAsIGJhY2tncm91bmRDb2xvcihmcmFtZS0+dmlldygpLT5i
YXNlQmFja2dyb3VuZENvbG9yKCkpCi0gICAgewotICAgICAgICBBU1NFUlQoIW5vZGUgfHwgbm9k
ZS0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmIChub2RlKQotICAgICAgICAgICAgbm9kZS0+cmVu
ZGVyZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOwotICAgIH0KLQotICAgIH5TY29wZWRGcmFt
ZVBhaW50aW5nU3RhdGUoKQotICAgIHsKLSAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURyYWdTdGF0ZShmYWxz
ZSk7Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlv
cik7Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dy
b3VuZENvbG9yKTsKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJhdygwKTsKLSAg
ICB9Ci0KLSAgICBGcmFtZSogZnJhbWU7Ci0gICAgTm9kZSogbm9kZTsKLSAgICBQYWludEJlaGF2
aW9yIHBhaW50QmVoYXZpb3I7Ci0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yOwotfTsKLQotRHJh
Z0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUt
PnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgY29uc3QgU2NvcGVk
RnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKHRoaXMsIG5vZGUpOwotCi0gICAgbV92aWV3LT5zZXRQ
YWludEJlaGF2aW9yKHN0YXRlLnBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKTsKLQotICAgIC8vIFdoZW4gZ2VuZXJhdGluZyB0aGUgZHJhZyBpbWFn
ZSBmb3IgYW4gZWxlbWVudCwgaWdub3JlIHRoZSBkb2N1bWVudCBiYWNrZ3JvdW5kLgotICAgIG1f
dmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwotICAgIG1f
ZG9jLT51cGRhdGVMYXlvdXQoKTsKLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8v
IEVuYWJsZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZS4KLQotICAgIC8vIERvY3VtZW50
Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2luYWwgcmVuZGVyZXIu
Ci0gICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVj
dDsKLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVy
ZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvciA9IDE7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgZGV2aWNlU2NhbGVGYWN0
b3IgPSBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgcGFpbnRpbmdSZWN0LnNldFdp
ZHRoKHBhaW50aW5nUmVjdC53aWR0aCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50
aW5nUmVjdC5zZXRIZWlnaHQocGFpbnRpbmdSZWN0LmhlaWdodCgpICogZGV2aWNlU2NhbGVGYWN0
b3IpOwotCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0
ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmlj
ZVJHQikpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBi
dWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdS
ZWN0LnkoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBh
aW50aW5nUmVjdC5tYXhYKCksIHBhaW50aW5nUmVjdC5tYXhZKCkpKTsKLQotICAgIG1fdmlldy0+
cGFpbnRDb250ZW50cyhidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0KTsKLQotICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZSgpOwotCi0gICAgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24ocmVuZGVyZXItPnNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwotI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5U
QVRJT04pCi0gICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51
bShyZW5kZXJlci0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotI2VuZGlmCi0gICAgcmV0
dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZS5nZXQoKSwgb3JpZW50YXRpb25EZXNj
cmlwdGlvbik7Ci19Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9u
KCkKLXsKLSAgICBpZiAoIXNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBjb25zdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgc3RhdGUodGhpcywgMCk7Ci0g
ICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsK
LSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7Ci0KLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9
IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uKCkuYm91bmRzKCkpOwotCi0gICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSAxOwotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIGRldmljZVNjYWxl
RmFjdG9yID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIHBhaW50aW5nUmVjdC5z
ZXRXaWR0aChwYWludGluZ1JlY3Qud2lkdGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBw
YWludGluZ1JlY3Quc2V0SGVpZ2h0KHBhaW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxl
RmFjdG9yKTsKLQotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpj
cmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpKTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgYnVm
ZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVj
dC55KCkpOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWlu
dGluZ1JlY3QubWF4WCgpLCBwYWludGluZ1JlY3QubWF4WSgpKSk7Ci0KLSAgICBtX3ZpZXctPnBh
aW50Q29udGVudHMoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7Ci0KLSAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoKTsKLSAgICByZXR1cm4gY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oKSk7Ci19Ci0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmgKaW5kZXggODQwN2U5ZTJiY2YzZWVmZWRkYmYwNTMxYmU2Y2U5Mjc5NDU3Mjc3Yy4uNWYxODY2
ZmUyMDJmY2ZlYTY0NDJjMGJiZWY4MjBmNTZlZDIzZTc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAt
MjksNyArMjksNiBAQAogI2RlZmluZSBGcmFtZV9oCiAKICNpbmNsdWRlICJBZGp1c3RWaWV3U2l6
ZU9yTm90LmgiCi0jaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC01OCwx
MSArNTcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEVkaXRvcjsKICAgICBj
bGFzcyBFbGVtZW50OwogICAgIGNsYXNzIEV2ZW50SGFuZGxlcjsKKyAgICBjbGFzcyBGbG9hdFNp
emU7CiAgICAgY2xhc3MgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyOwogICAgIGNsYXNzIEZyYW1l
U2VsZWN0aW9uOwogICAgIGNsYXNzIEZyYW1lVmlldzsKICAgICBjbGFzcyBIVE1MRnJhbWVPd25l
ckVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7CisgICAgY2xhc3MgSW1h
Z2VCdWZmZXI7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBNYWluRnJhbWU7CiAgICAg
Y2xhc3MgTm9kZTsKQEAgLTE3Nyw5ICsxNzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgU3RyaW5nIGRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5n
JikgY29uc3Q7CiAKLSAgICAgICAgRHJhZ0ltYWdlUmVmIG5vZGVJbWFnZShOb2RlKik7Ci0gICAg
ICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsKLQogICAgICAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1l
UG9pbnQpOwogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnRBdFBvaW50KGNvbnN0IEludFBvaW50
JiB3aW5kb3dQb2ludCk7CiAgICAgICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnQo
Y29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hv
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGU3MDcyMmY0NzBjM2NkNGNiYTYwMTVhYjExNjJiNDA3YzQxNGU5
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdC5j
cHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0
eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRnJhbWVTbmFw
c2hvdC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAi
UGFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZyYW1lU25hcHNob3Q6OkZyYW1lU25h
cHNob3QoT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIpCis6IG1fYnVmZmVyKGJ1ZmZlci5yZWxl
YXNlKCkpIHsgfQorCitGcmFtZVNuYXBzaG90Ojp+RnJhbWVTbmFwc2hvdCgpIHsgfQorCitzdGQ6
OnVuaXF1ZV9wdHI8RnJhbWVTbmFwc2hvdD4gRnJhbWVTbmFwc2hvdDo6Y3JlYXRlRnJvbVJlY3Qo
RnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGJvb2wgaW5jbHVkZVNlbGVj
dGlvbiwgYm9vbCB1c2VWaWV3Q29vcmRpbmF0ZXMpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8RnJhbWVTbmFwc2hvdD4oY3JlYXRlSW1hZ2VGcm9tRnJhbWVSZWN0KGZyYW1lLCBpbWFn
ZVJlY3QsIGluY2x1ZGVTZWxlY3Rpb24sIHVzZVZpZXdDb29yZGluYXRlcykucmVsZWFzZSgpKTsK
K30KKworT3duUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUZyb21GcmFtZVJlY3QoRnJhbWUm
IGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGJvb2wgaW5jbHVkZVNlbGVjdGlvbiwg
Ym9vbCB1c2VWaWV3Q29vcmRpbmF0ZXMpCit7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRl
TGF5b3V0KCk7CisKKyAgICBJbnRSZWN0IHVzZWRSZWN0KGltYWdlUmVjdCk7CisgICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IgPSAxOworICAgIGlmIChmcmFtZS5wYWdlKCkpCisgICAgICAgIGRl
dmljZVNjYWxlRmFjdG9yID0gZnJhbWUucGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAg
IHVzZWRSZWN0LnNldFdpZHRoKGltYWdlUmVjdC53aWR0aCgpICogZGV2aWNlU2NhbGVGYWN0b3Ip
OworICAgIHVzZWRSZWN0LnNldEhlaWdodChpbWFnZVJlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2Fs
ZUZhY3Rvcik7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodXNlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXVzZWRSZWN0LngoKSwgLXVzZWRSZWN0Lnko
KSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHVzZWRSZWN0
Lm1heFgoKSwgdXNlZFJlY3QubWF4WSgpKSk7CisKKyAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbklu
U25hcHNob3Qgc2VsZWN0aW9uTW9kZSA9IGluY2x1ZGVTZWxlY3Rpb24gPyBGcmFtZVZpZXc6Oklu
Y2x1ZGVTZWxlY3Rpb24gOiBGcmFtZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rpb247CisgICAgRnJhbWVW
aWV3OjpDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlTW9kZSA9IHVzZVZpZXdD
b29yZGluYXRlcyA/IEZyYW1lVmlldzo6Vmlld0Nvb3JkaW5hdGVzIDogRnJhbWVWaWV3OjpEb2N1
bWVudENvb3JkaW5hdGVzOworICAgIGZyYW1lLnZpZXcoKS0+cGFpbnRDb250ZW50c0ZvclNuYXBz
aG90KGJ1ZmZlci0+Y29udGV4dCgpLCB1c2VkUmVjdCwgc2VsZWN0aW9uTW9kZSwgY29vcmRpbmF0
ZU1vZGUpOworICAgIHJldHVybiBidWZmZXIucmVsZWFzZSgpOworfQorCitTdHJpbmcgRnJhbWVT
bmFwc2hvdDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSogcXVhbGl0
eSkKK3sKKyAgICByZXR1cm4gYnVmZmVyKCkudG9EYXRhVVJMKG1pbWVUeXBlLCBxdWFsaXR5KTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3Qu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43NjRjYjZiZjY2OTFhMjBkYjliODllYjY4MDNkOGVkZDIzZDVhMzNmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90LmgKQEAg
LTAsMCArMSw1OSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBX
YXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgRnJhbWVTbmFwc2hvdF9oCisjZGVmaW5lIEZyYW1lU25hcHNob3RfaAor
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgSW50UmVjdDsK
K2NsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgTm9kZTsKKworLy8gVXNlZCB0byB0YWtlIGJvdGgg
c2NyZWVuc2hvdHMgYW5kIGltYWdlcyBmb3IgRHJhZ0ltYWdlLgorT3duUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUZyb21GcmFtZVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgYm9vbCBp
bmNsdWRlU2VsZWN0aW9uID0gdHJ1ZSwgYm9vbCB1c2VWaWV3Q29vcmRpbmF0ZXMgPSB0cnVlKTsK
KworLy8gVGhpcyBjbGFzcyBoaWRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgRnJhbWVTbmFwc2hv
dDo6dG9EYXRhVVJMIGZyb20gZW1iZWRkZXJzLgorY2xhc3MgRnJhbWVTbmFwc2hvdCB7CitwdWJs
aWM6CisgICAgRnJhbWVTbmFwc2hvdChPd25QdHI8SW1hZ2VCdWZmZXI+KTsKKyAgICB+RnJhbWVT
bmFwc2hvdCgpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RnJhbWVTbmFwc2hvdD4gY3Jl
YXRlRnJvbVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgYm9vbCBpbmNsdWRlU2VsZWN0aW9u
ID0gdHJ1ZSwgYm9vbCB1c2VWaWV3Q29vcmRpbmF0ZXMgPSB0cnVlKTsKKworICAgIFN0cmluZyB0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKiBxdWFsaXR5ID0gbnVsbHB0
cik7CisgICAgSW1hZ2VCdWZmZXImIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuICptX2J1ZmZlcjsg
fQorcHJpdmF0ZToKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBGcmFtZVNuYXBzaG90X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRnJhbWVNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRh
ZmIxZjkxYmNiZDZmMDYyN2E2MWQxZTk0ZGU5YjcxNGE4YjU0MzQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJh
bWVNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBu
eXBvcC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiRnJhbWUuaCIKLQotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lTG9hZGVy
Q2xpZW50LmgiCi0jaW1wb3J0ICJGcmFtZVNlbGVjdGlvbi5oIgotI2ltcG9ydCAiRnJhbWVTbmFw
c2hvdHRpbmdNYWMuaCIKLSNpbXBvcnQgIkZyYW1lVmlldy5oIgotI2ltcG9ydCAiUmVuZGVyT2Jq
ZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2Rl
SW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7IC8vIGZvcmNl
cyBzdHlsZSByZWNhbGMKLQotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5k
ZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgTGF5
b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgTlNSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25h
cHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0K
LSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1Yi10
cmVlIGRyYXdpbmcgbW9kZQotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QodGhp
cywgcGFpbnRpbmdSZWN0KTsKLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcoMCk7Ci0KLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1EcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVj
dGlvbigpCi17Ci0gICAgaWYgKCFzZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgcmV0dXJuIHNlbGVjdGlvbkltYWdlKHRoaXMpOwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNu
YXBzaG90dGluZ01hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRp
bmdNYWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhYjY3ZTc2NTgxNGFlNmNi
YzkwMWJhZDQ0YWZkMTUzZjg2MmEyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01h
Yy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRnJh
bWVTbmFwc2hvdHRpbmdNYWNfaAotI2RlZmluZSBGcmFtZVNuYXBzaG90dGluZ01hY19oCi0KLU9C
SkNfQ0xBU1MgTlNJbWFnZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGcmFtZTsK
LWNsYXNzIFJhbmdlOwotY2xhc3MgTm9kZTsKLQotTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2UoRnJh
bWUqLCBib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpOwotTlNJbWFnZSogcmFuZ2VJbWFnZShG
cmFtZSosIFJhbmdlKiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKTsKLU5TSW1hZ2UqIHNu
YXBzaG90RHJhZ0ltYWdlKEZyYW1lKiwgTm9kZSosIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3Qq
IGVsZW1lbnRSZWN0KTsKLU5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoRnJhbWUqLCBOU1JlY3QpOwot
Ci19Ci0KLSNlbmRpZiAvLyBGcmFtZVNuYXBzaG90dGluZ01hY19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlOTJjMmYyM2NiMTdiZDAzZDRlOGE1ZWUxOTUxNGFjNDM5MWQxOWViLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTY4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5o
IgotCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKLSNpbXBvcnQgIkRvY3VtZW50LmgiCi0j
aW1wb3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiRnJhbWVTZWxlY3Rpb24uaCIKLSNpbXBvcnQgIkZy
YW1lVmlldy5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW1wb3J0ICJSYW5nZS5o
IgotI2ltcG9ydCAiUmVuZGVyVmlldy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5TSW1h
Z2UqIGltYWdlRnJvbVJlY3QoRnJhbWUqIGZyYW1lLCBOU1JlY3QgcmVjdCkKLXsKLSAgICBQYWlu
dEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gZnJhbWUtPnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpOwot
ICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IgfCBQYWludEJl
aGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICAKLSAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci0gICAgCi0gICAgTlNJbWFnZSogcmVzdWx0SW1hZ2UgPSBbW1tOU0lt
YWdlIGFsbG9jXSBpbml0V2l0aFNpemU6cmVjdC5zaXplXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0g
ICAgaWYgKHJlY3Quc2l6ZS53aWR0aCAhPSAwICYmIHJlY3Quc2l6ZS5oZWlnaHQgIT0gMCkgewot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBbcmVzdWx0SW1hZ2Ug
c2V0RmxpcHBlZDpZRVNdOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgICAgICBb
cmVzdWx0SW1hZ2UgbG9ja0ZvY3VzXTsKLQotICAgICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhp
Y3NDb250ZXh0KChDR0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4
dF0gZ3JhcGhpY3NQb3J0XSk7ICAgICAgICAKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUo
KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtcmVjdC5vcmlnaW4ueCwgLXJl
Y3Qub3JpZ2luLnkpOwotICAgICAgICBmcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKCZncmFw
aGljc0NvbnRleHQsIEludFJlY3QocmVjdCkpOwotICAgICAgICBncmFwaGljc0NvbnRleHQucmVz
dG9yZSgpOwotCi0gICAgICAgIFtyZXN1bHRJbWFnZSB1bmxvY2tGb2N1c107Ci0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAgIFtyZXN1bHRJbWFnZSBzZXRGbGlwcGVk
Ok5PXTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICB9Ci0gICAgCi0gICAgZnJh
bWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7Ci0gICAgcmV0dXJuIHJl
c3VsdEltYWdlOwotICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgCi0g
ICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7Ci0gICAgcmV0
dXJuIG5pbDsKLX0KLQotTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2UoRnJhbWUqIGZyYW1lLCBib29s
IGZvcmNlQmxhY2tUZXh0KQotewotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Io
UGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQgPyBQYWludEJlaGF2
aW9yRm9yY2VCbGFja1RleHQgOiAwKSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dCgpOwotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QoZnJhbWUsIGZyYW1l
LT5zZWxlY3Rpb24oKS5ib3VuZHMoKSk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhh
dmlvcihQYWludEJlaGF2aW9yTm9ybWFsKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1OU0lt
YWdlICpyYW5nZUltYWdlKEZyYW1lKiBmcmFtZSwgUmFuZ2UqIHJhbmdlLCBib29sIGZvcmNlQmxh
Y2tUZXh0KQotewotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhh
dmlvclNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQgPyBQYWludEJlaGF2aW9yRm9yY2VC
bGFja1RleHQgOiAwKSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwot
ICAgIFJlbmRlclZpZXcqIHZpZXcgPSBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7Ci0gICAgaWYg
KCF2aWV3KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgUG9zaXRpb24gc3RhcnQgPSByYW5n
ZS0+c3RhcnRQb3NpdGlvbigpOwotICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHN0YXJ0LmRvd25z
dHJlYW0oKTsKLSAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRl
LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgIHN0YXJ0ID0gY2FuZGlkYXRl
OwotCi0gICAgUG9zaXRpb24gZW5kID0gcmFuZ2UtPmVuZFBvc2l0aW9uKCk7Ci0gICAgY2FuZGlk
YXRlID0gZW5kLnVwc3RyZWFtKCk7Ci0gICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgp
ICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQotICAgICAgICBlbmQg
PSBjYW5kaWRhdGU7Ci0KLSAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpIHx8
IHN0YXJ0ID09IGVuZCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFJlbmRlck9iamVjdCog
c2F2ZWRTdGFydFJlbmRlcmVyOwotICAgIGludCBzYXZlZFN0YXJ0T2Zmc2V0OwotICAgIFJlbmRl
ck9iamVjdCogc2F2ZWRFbmRSZW5kZXJlcjsKLSAgICBpbnQgc2F2ZWRFbmRPZmZzZXQ7Ci0gICAg
dmlldy0+Z2V0U2VsZWN0aW9uKHNhdmVkU3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNldCwg
c2F2ZWRFbmRSZW5kZXJlciwgc2F2ZWRFbmRPZmZzZXQpOwotCi0gICAgUmVuZGVyT2JqZWN0KiBz
dGFydFJlbmRlcmVyID0gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBp
ZiAoIXN0YXJ0UmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBSZW5kZXJPYmpl
Y3QqIGVuZFJlbmRlcmVyID0gZW5kLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0gICAg
aWYgKCFlbmRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHZpZXctPnNldFNl
bGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBl
bmRSZW5kZXJlciwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIFJlbmRlclZpZXc6OlJl
cGFpbnROb3RoaW5nKTsKLSAgICBOU0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KGZyYW1l
LCB2aWV3LT5zZWxlY3Rpb25Cb3VuZHMoKSk7Ci0gICAgdmlldy0+c2V0U2VsZWN0aW9uKHNhdmVk
U3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNldCwgc2F2ZWRFbmRSZW5kZXJlciwgc2F2ZWRF
bmRPZmZzZXQsIFJlbmRlclZpZXc6OlJlcGFpbnROb3RoaW5nKTsKLQotICAgIGZyYW1lLT52aWV3
KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvck5vcm1hbCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotCi1OU0ltYWdlKiBzbmFwc2hvdERyYWdJbWFnZShGcmFtZSogZnJhbWUsIE5v
ZGUqIG5vZGUsIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnRSZWN0KQotewotICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVu
ZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgcmVuZGVyZXItPnVwZGF0ZURy
YWdTdGF0ZSh0cnVlKTsgICAgLy8gbWFyayBkcmFnZ2VkIG5vZGVzIChzbyB0aGV5IHBpY2sgdXAg
dGhlIHJpZ2h0IENTUykKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7ICAv
LyBmb3JjZXMgc3R5bGUgcmVjYWxjIC0gbmVlZGVkIHNpbmNlIGNoYW5naW5nIHRoZSBkcmFnIHN0
YXRlIG1pZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW1w
bHkgbmV3IHN0eWxlcywgcGx1cyBKUyBjb3VsZCBoYXZlIGNoYW5nZWQgb3RoZXIgdGhpbmdzCi0K
LQotICAgIC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUg
b3JpZ2luYWwgUmVuZGVyRWxlbWVudC4KLSAgICByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7
Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIExheW91dFJl
Y3QgdG9wTGV2ZWxSZWN0OwotICAgIE5TUmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJ
bnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwotCi0gICAg
aWYgKE5TSXNFbXB0eVJlY3QocGFpbnRpbmdSZWN0KSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQot
ICAgIGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFs
IHN1Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJl
Y3QoZnJhbWUsIHBhaW50aW5nUmVjdCk7Ci0gICAgcmVuZGVyZXItPnVwZGF0ZURyYWdTdGF0ZShm
YWxzZSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwotICAgIGZyYW1l
LT52aWV3KCktPnNldE5vZGVUb0RyYXcoMCk7Ci0KLSAgICBpZiAoZWxlbWVudFJlY3QpCi0gICAg
ICAgICplbGVtZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9wTGV2ZWxSZWN0KTsKLSAg
ICBpZiAoaW1hZ2VSZWN0KQotICAgICAgICAqaW1hZ2VSZWN0ID0gcGFpbnRpbmdSZWN0OwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvd2luL0ZyYW1lV2luLmNwcAppbmRleCA1YWFmM2E2NzhjOWU1NDNhZjY4M2IzN2FkNWIwNmNj
ZTA2NDQzYjlmLi4xN2UwZWY5ZGEzYzEzMjkwZGNlYmM2ZjcyYTZhYzJkZDRiMDE4OWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTU3LDMwICs1Nyw0IEBAIEdE
SU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGZv
cmNlQmxhY2tUZXh0KQogICAgIHJldHVybiBpbWFnZTsKIH0KIAotRHJhZ0ltYWdlUmVmIEZyYW1l
OjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQotewotICAgIGlmIChzZWxlY3Rpb24oKS5pc1Jhbmdl
KCkpCi0gICAgICAgIHJldHVybiBpbWFnZUZyb21TZWxlY3Rpb24odGhpcywgZmFsc2UpLmxlYWso
KTsKLQotICAgIHJldHVybiAwOwotfQotCi1EcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShO
b2RlKiBub2RlKQotewotICAgIGRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwotCi0gICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKLSAg
ICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBh
aW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBtX3ZpZXctPnNldE5vZGVUb0Ry
YXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIEdE
SU9iamVjdDxIQklUTUFQPiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KHRoaXMsIHBhaW50aW5nUmVj
dCk7Ci0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KDApOwotCi0gICAgcmV0dXJuIHJlc3VsdC5s
ZWFrKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFt
ZVdpbi5oCmluZGV4IDNhMjcyM2U2M2Q2ZDdlN2VjMDQ0Y2IxMmYyZWE3YmQwNmNmZTY1OWYuLjJj
ZDQ5ZWNmY2JjMGIwMzNjNGQzNGIwNGUwZjUzMDI1NzQ1NjMyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93
aW4vRnJhbWVXaW4uaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAj
aWZuZGVmIEZyYW1lV2luX2gKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBJ
bnRSZWN0OwogCiBHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tUmVjdChjb25zdCBGcmFtZSos
IEludFJlY3QmKTsKLUdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUq
LCBib29sIGZvcmNlV2hpdGVUZXh0KTsKK0dESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxl
Y3Rpb24oRnJhbWUqLCBib29sIGZvcmNlQmxhY2tUZXh0KTsKIHZvaWQgY29tcHV0ZVBhZ2VSZWN0
c0ZvckZyYW1lKEZyYW1lKiwgY29uc3QgSW50UmVjdCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJI
ZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCwgZmxvYXQgdXNlclNjYWxlRmFjdG9yLCBWZWN0b3I8
SW50UmVjdD4mIG91dFBhZ2VzLCBpbnQmIG91dFBhZ2VIZWlnaHQpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAppbmRleCBiODFhZmQ1
NzllODI5M2VlZmEyYmE5M2I5YmI1NWMxZjUwNzZjZjQ3Li5mOGMzOWNhYThhMjM0ZGY0NDZkYjUx
NTNmYzc3NjljZmRiYjM2NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAK
QEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgpAQCAtMjgsMjkgKzI4LDM5IEBACiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUg
IkZyYW1lU25hcHNob3QuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewotICAgIAorCiBEcmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERy
YWdJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKIHsKICAgICBmbG9hdCBoZWlnaHRSZXNpemVSYXRpbyA9IDAuMGY7CiAgICAgZmxvYXQg
d2lkdGhSZXNpemVSYXRpbyA9IDAuMGY7CiAgICAgZmxvYXQgcmVzaXplUmF0aW8gPSAtMS4wZjsK
ICAgICBJbnRTaXplIG9yaWdpbmFsU2l6ZSA9IGRyYWdJbWFnZVNpemUoaW1hZ2UpOwotICAgIAor
CiAgICAgaWYgKHNyY1NpemUud2lkdGgoKSA+IHNpemUud2lkdGgoKSkgewogICAgICAgICB3aWR0
aFJlc2l6ZVJhdGlvID0gc2l6ZS53aWR0aCgpIC8gKGZsb2F0KXNyY1NpemUud2lkdGgoKTsKICAg
ICAgICAgcmVzaXplUmF0aW8gPSB3aWR0aFJlc2l6ZVJhdGlvOwogICAgIH0KLSAgICAKKwogICAg
IGlmIChzcmNTaXplLmhlaWdodCgpID4gc2l6ZS5oZWlnaHQoKSkgewogICAgICAgICBoZWlnaHRS
ZXNpemVSYXRpbyA9IHNpemUuaGVpZ2h0KCkgLyAoZmxvYXQpc3JjU2l6ZS5oZWlnaHQoKTsKICAg
ICAgICAgaWYgKChyZXNpemVSYXRpbyA8IDAuMGYpIHx8IChyZXNpemVSYXRpbyA+IGhlaWdodFJl
c2l6ZVJhdGlvKSkKICAgICAgICAgICAgIHJlc2l6ZVJhdGlvID0gaGVpZ2h0UmVzaXplUmF0aW87
CiAgICAgfQotICAgIAorCiAgICAgaWYgKHNyY1NpemUgPT0gb3JpZ2luYWxTaXplKQogICAgICAg
ICByZXR1cm4gcmVzaXplUmF0aW8gPiAwLjBmID8gc2NhbGVEcmFnSW1hZ2UoaW1hZ2UsIEZsb2F0
U2l6ZShyZXNpemVSYXRpbywgcmVzaXplUmF0aW8pKSA6IGltYWdlOwotICAgIAorCiAgICAgLy8g
VGhlIGltYWdlIHdhcyBzY2FsZWQgaW4gdGhlIHdlYnBhZ2Ugc28gYXQgbWluaW11bSB3ZSBtdXN0
IGFjY291bnQgZm9yIHRoYXQgc2NhbGluZwogICAgIGZsb2F0IHNjYWxleCA9IHNyY1NpemUud2lk
dGgoKSAvIChmbG9hdClvcmlnaW5hbFNpemUud2lkdGgoKTsKICAgICBmbG9hdCBzY2FsZXkgPSBz
cmNTaXplLmhlaWdodCgpIC8gKGZsb2F0KW9yaWdpbmFsU2l6ZS5oZWlnaHQoKTsKQEAgLTU4LDE0
ICs2OCwyMDEgQEAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VS
ZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGMKICAgICAgICAgc2NhbGV4ICo9IHJl
c2l6ZVJhdGlvOwogICAgICAgICBzY2FsZXkgKj0gcmVzaXplUmF0aW87CiAgICAgfQotICAgIAor
CiAgICAgcmV0dXJuIHNjYWxlRHJhZ0ltYWdlKGltYWdlLCBGbG9hdFNpemUoc2NhbGV4LCBzY2Fs
ZXkpKTsKIH0KIAorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKEZyYW1lJiBm
cmFtZSwgUmFuZ2UqIHJhbmdlLCBib29sIGZvcmNlQmxhY2tUZXh0KQoreworICAgIGZyYW1lLnZp
ZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IChmb3Jj
ZUJsYWNrVGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsKKyAgICBmcmFt
ZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBSZW5kZXJWaWV3KiB2aWV3ID0gZnJh
bWUuY29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gbmls
OworCisgICAgUG9zaXRpb24gc3RhcnQgPSByYW5nZS0+c3RhcnRQb3NpdGlvbigpOworICAgIFBv
c2l0aW9uIGNhbmRpZGF0ZSA9IHN0YXJ0LmRvd25zdHJlYW0oKTsKKyAgICBpZiAoY2FuZGlkYXRl
LmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVy
KCkpCisgICAgICAgIHN0YXJ0ID0gY2FuZGlkYXRlOworCisgICAgUG9zaXRpb24gZW5kID0gcmFu
Z2UtPmVuZFBvc2l0aW9uKCk7CisgICAgY2FuZGlkYXRlID0gZW5kLnVwc3RyZWFtKCk7CisgICAg
aWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9k
ZSgpLT5yZW5kZXJlcigpKQorICAgICAgICBlbmQgPSBjYW5kaWRhdGU7CisKKyAgICBpZiAoc3Rh
cnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpIHx8IHN0YXJ0ID09IGVuZCkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIFJlbmRlck9iamVjdCogc2F2ZWRTdGFydFJlbmRlcmVyOworICAgIGlu
dCBzYXZlZFN0YXJ0T2Zmc2V0OworICAgIFJlbmRlck9iamVjdCogc2F2ZWRFbmRSZW5kZXJlcjsK
KyAgICBpbnQgc2F2ZWRFbmRPZmZzZXQ7CisgICAgdmlldy0+Z2V0U2VsZWN0aW9uKHNhdmVkU3Rh
cnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNldCwgc2F2ZWRFbmRSZW5kZXJlciwgc2F2ZWRFbmRP
ZmZzZXQpOworCisgICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnQuZGVwcmVj
YXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXN0YXJ0UmVuZGVyZXIpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyID0gZW5kLmRlcHJl
Y2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFlbmRSZW5kZXJlcikKKyAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgIHZpZXctPnNldFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFy
dC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSZW5kZXJlciwgZW5kLmRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0KCksIFJlbmRlclZpZXc6OlJlcGFpbnROb3RoaW5nKTsKKyAgICBEcmFnSW1h
Z2VSZWYgcmVzdWx0ID0gY3JlYXRlRHJhZ0ltYWdlRm9yUmVjdChmcmFtZSwgdmlldy0+c2VsZWN0
aW9uQm91bmRzKCksIGZhbHNlKTsKKyAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc2F2ZWRTdGFydFJl
bmRlcmVyLCBzYXZlZFN0YXJ0T2Zmc2V0LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZlZEVuZE9mZnNl
dCwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOworCisgICAgZnJhbWUudmlldygpLT5zZXRQ
YWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JOb3JtYWwpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSZWN0KEZyYW1lJiBmcmFtZSwgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBib29sIGluY2x1ZGVTZWxlY3Rpb24pCit7CisgICAgT3du
UHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBjcmVhdGVJbWFnZUZyb21GcmFtZVJlY3QoZnJhbWUs
IGltYWdlUmVjdCwgaW5jbHVkZVNlbGVjdGlvbiwgdHJ1ZSk7CisgICAgUmVmUHRyPEltYWdlPiBp
bWFnZSA9IGJ1ZmZlci0+Y29weUltYWdlKCk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZShpbWFnZS5nZXQoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworfQor
CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2UoRnJhbWUmIGZyYW1lLCBOb2Rl
KiBub2RlLCBJbnRSZWN0JiBpbWFnZVJlY3QsIEludFJlY3QmIGVsZW1lbnRSZWN0KQoreworICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIGlmICghcmVu
ZGVyZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gTWFyayBkcmFnZ2VkIG5v
ZGVzIHRvIGZvcmNlIGRyYWctc3BlY2lmaWMgc3R5bGUgcmVjYWxjdWxhdGlvbi4KKyAgICByZW5k
ZXJlci0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0
ZUxheW91dCgpOworCisgICAgLy8gRG9jdW1lbnQ6OnVwZGF0ZUxheW91dCBtYXkgaGF2ZSBibG93
biBhd2F5IHRoZSBvcmlnaW5hbCBSZW5kZXJFbGVtZW50LgorICAgIHJlbmRlcmVyID0gbm9kZS0+
cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZl
bFJlY3QpKTsKKworICAgIGlmIChwYWludGluZ1JlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGZyYW1lLnZpZXcoKS0+c2V0Tm9kZVRvRHJhdyhub2RlKTsgLy8g
aW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCisgICAgRHJhZ0ltYWdlUmVmIHJl
c3VsdCA9IGNyZWF0ZURyYWdJbWFnZUZvclJlY3QoZnJhbWUsIHBhaW50aW5nUmVjdCk7CisgICAg
cmVuZGVyZXItPnVwZGF0ZURyYWdTdGF0ZShmYWxzZSk7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0KCk7CisgICAgZnJhbWUudmlldygpLT5zZXROb2RlVG9EcmF3KG51bGxwdHIp
OworCisgICAgZWxlbWVudFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHRvcExldmVsUmVjdCk7
CisgICAgaW1hZ2VSZWN0ID0gcGFpbnRpbmdSZWN0OworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
KyNpZiAhUExBVEZPUk0oV0lOKQorc3RydWN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSB7Cisg
ICAgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKEZyYW1lJiBmcmFtZSwgTm9kZSogbm9kZSkKKyAg
ICA6IGZyYW1lKGZyYW1lKQorICAgICwgbm9kZShub2RlKQorICAgICwgcGFpbnRCZWhhdmlvcihm
cmFtZS52aWV3KCktPnBhaW50QmVoYXZpb3IoKSkKKyAgICAsIGJhY2tncm91bmRDb2xvcihmcmFt
ZS52aWV3KCktPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCgh
bm9kZSB8fCBub2RlLT5yZW5kZXJlcigpKTsKKyAgICAgICAgaWYgKG5vZGUpCisgICAgICAgICAg
ICBub2RlLT5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7CisgICAgfQorCisgICAg
flNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSgpCisgICAgeworICAgICAgICBpZiAobm9kZSAmJiBu
b2RlLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgbm9kZS0+cmVuZGVyZXIoKS0+dXBkYXRlRHJh
Z1N0YXRlKGZhbHNlKTsKKyAgICAgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKHBh
aW50QmVoYXZpb3IpOworICAgICAgICBmcmFtZS52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29s
b3IoYmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgZnJhbWUudmlldygpLT5zZXROb2RlVG9EcmF3
KG51bGxwdHIpOworICAgIH0KKworICAgIEZyYW1lJiBmcmFtZTsKKyAgICBOb2RlKiBub2RlOwor
ICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcjsKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29s
b3I7Cit9OworCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yRnJhbWVTZWxlY3Rpb24o
RnJhbWUmIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQoreworICAgIFVOVVNFRF9QQVJBTShm
b3JjZUJsYWNrVGV4dCk7CisKKyAgICBpZiAoIWZyYW1lLnNlbGVjdGlvbigpLmlzUmFuZ2UoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBjb25zdCBTY29wZWRGcmFtZVBhaW50aW5n
U3RhdGUgc3RhdGUoZnJhbWUsIG51bGxwdHIpOworICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFpbnRC
ZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IChmb3JjZUJsYWNrVGV4dCA/IFBh
aW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLT51
cGRhdGVMYXlvdXQoKTsKKworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gZW5jbG9zaW5nSW50
UmVjdChmcmFtZS5zZWxlY3Rpb24oKS5ib3VuZHMoKSk7CisKKyAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciA9IDE7CisgICAgaWYgKGZyYW1lLnBhZ2UoKSkKKyAgICAgICAgZGV2aWNlU2NhbGVG
YWN0b3IgPSBmcmFtZS5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgcGFpbnRpbmdS
ZWN0LnNldFdpZHRoKHBhaW50aW5nUmVjdC53aWR0aCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwor
ICAgIHBhaW50aW5nUmVjdC5zZXRIZWlnaHQocGFpbnRpbmdSZWN0LmhlaWdodCgpICogZGV2aWNl
U2NhbGVGYWN0b3IpOworCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JT
cGFjZURldmljZVJHQikpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAt
cGFpbnRpbmdSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0
KDAsIDAsIHBhaW50aW5nUmVjdC5tYXhYKCksIHBhaW50aW5nUmVjdC5tYXhZKCkpKTsKKworICAg
IGZyYW1lLnZpZXcoKS0+cGFpbnRDb250ZW50cyhidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdS
ZWN0KTsKKworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZSgpOwor
ICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0KCksIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpKTsKK30KKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZvck5vZGUoRnJhbWUmIGZyYW1lLCBOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZS0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBjb25zdCBTY29wZWRGcmFt
ZVBhaW50aW5nU3RhdGUgc3RhdGUoZnJhbWUsIG5vZGUpOworCisgICAgZnJhbWUudmlldygpLT5z
ZXRQYWludEJlaGF2aW9yKHN0YXRlLnBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxhdHRl
bkNvbXBvc2l0aW5nTGF5ZXJzKTsKKworICAgIC8vIFdoZW4gZ2VuZXJhdGluZyB0aGUgZHJhZyBp
bWFnZSBmb3IgYW4gZWxlbWVudCwgaWdub3JlIHRoZSBkb2N1bWVudCBiYWNrZ3JvdW5kLgorICAg
IGZyYW1lLnZpZXcoKS0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQp
OworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGZyYW1lLnZpZXco
KS0+c2V0Tm9kZVRvRHJhdyhub2RlKTsgLy8gRW5hYmxlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2lu
ZyBtb2RlLgorCisgICAgLy8gRG9jdW1lbnQ6OnVwZGF0ZUxheW91dCBtYXkgaGF2ZSBibG93biBh
d2F5IHRoZSBvcmlnaW5hbCByZW5kZXJlci4KKyAgICBhdXRvIHJlbmRlcmVyID0gbm9kZS0+cmVu
ZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0g
cGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJl
Y3QpKTsKKworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpZiAoZnJhbWUu
cGFnZSgpKQorICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9IGZyYW1lLnBhZ2UoKS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKTsKKyAgICBwYWludGluZ1JlY3Quc2V0V2lkdGgocGFpbnRpbmdSZWN0Lndp
ZHRoKCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcGFpbnRpbmdSZWN0LnNldEhlaWdodChw
YWludGluZ1JlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXpl
KCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgaWYgKCFi
dWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50
cmFuc2xhdGUoLXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKKyAgICBidWZm
ZXItPmNvbnRleHQoKS0+Y2xpcChGbG9hdFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0Lm1heFgoKSwg
cGFpbnRpbmdSZWN0Lm1heFkoKSkpOworCisgICAgZnJhbWUudmlldygpLT5wYWludENvbnRlbnRz
KGJ1ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOworCisgICAgUmVmUHRyPEltYWdlPiBp
bWFnZSA9IGJ1ZmZlci0+Y29weUltYWdlKCk7CisKKyAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihyZW5kZXJlci0+c2hvdWxkUmVzcGVjdEltYWdl
T3JpZW50YXRpb24oKSk7CisjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAgICBv
cmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHJlbmRlcmVyLT5z
dHlsZSgpLT5pbWFnZU9yaWVudGF0aW9uKCkpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZURy
YWdJbWFnZUZyb21JbWFnZShpbWFnZS5nZXQoKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7Cit9
CisjZW5kaWYgLy8gIVBMQVRGT1JNKFdJTikKKwogI2lmICFQTEFURk9STShNQUMpICYmICghUExB
VEZPUk0oV0lOKSB8fCBPUyhXSU5DRSkpCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9y
TGluayhVUkwmLCBjb25zdCBTdHJpbmcmLCBGb250UmVuZGVyaW5nTW9kZSkKIHsKLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdJbWFnZS5oCmluZGV4IGQ4ZjUyYmNmYWQ0NDI0M2Y4YWNjYjg2NzBhMDk0YWYxMTNjNGIy
NGQuLjljNzQ0OGE5ODQ4NzFiNjEyYWYxOWQyMGFkZGRkNjRkMTQwNTMzMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKICNpZm5kZWYgRHJhZ0ltYWdlX2gKQEAgLTQxLDM4ICs0MSw0NyBAQCB0eXBlZGVmIHN0
cnVjdCBIQklUTUFQX18qIEhCSVRNQVA7CiB0eXBlZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBj
YWlyb19zdXJmYWNlX3Q7CiAjZW5kaWYKIAotLy9XZSBuZWVkIHRvICNkZWZpbmUgWU9mZnNldCBh
cyBpdCBuZWVkcyB0byBiZSBzaGFyZWQgd2l0aCBXZWJLaXQKKy8vIFdlIG5lZWQgdG8gI2RlZmlu
ZSBZT2Zmc2V0IGFzIGl0IG5lZWRzIHRvIGJlIHNoYXJlZCB3aXRoIFdlYktpdAogI2RlZmluZSBE
cmFnTGFiZWxCb3JkZXJZT2Zmc2V0IDIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xh
c3MgSW1hZ2U7Ci0gICAgY2xhc3MgVVJMOworY2xhc3MgRnJhbWU7CitjbGFzcyBJbWFnZTsKK2Ns
YXNzIEludFJlY3Q7CitjbGFzcyBOb2RlOworY2xhc3MgUmFuZ2U7CitjbGFzcyBVUkw7CiAKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgdHlwZWRlZiBSZXRhaW5QdHI8TlNJbWFnZT4gRHJhZ0ltYWdl
UmVmOwordHlwZWRlZiBSZXRhaW5QdHI8TlNJbWFnZT4gRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExB
VEZPUk0oV0lOKQotICAgIHR5cGVkZWYgSEJJVE1BUCBEcmFnSW1hZ2VSZWY7Cit0eXBlZGVmIEhC
SVRNQVAgRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShOSVgp
Ci0gICAgdHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIERyYWdJbWFnZVJlZjsKK3R5cGVkZWYgY2Fp
cm9fc3VyZmFjZV90KiBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShFRkwpIHx8IFBMQVRG
T1JNKEJMQUNLQkVSUlkpCi0gICAgdHlwZWRlZiB2b2lkKiBEcmFnSW1hZ2VSZWY7Cit0eXBlZGVm
IHZvaWQqIERyYWdJbWFnZVJlZjsKICNlbmRpZgotICAgIAotICAgIEludFNpemUgZHJhZ0ltYWdl
U2l6ZShEcmFnSW1hZ2VSZWYpOwotICAgIAotICAgIC8vVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBi
ZSBtZW1vcnkgbmV1dHJhbCwgZWcuIGlmIHRoZXkgcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGlt
YWdlLCAKLSAgICAvL3RoZXkgc2hvdWxkIHJlbGVhc2UgdGhlIGlucHV0IGltYWdlLiAgQXMgYSBj
b3JvbGxhcnkgdGhlc2UgbWV0aG9kcyBkb24ndCBndWFyYW50ZWUKLSAgICAvL3RoZSBpbnB1dCBp
bWFnZSByZWYgd2lsbCBzdGlsbCBiZSB2YWxpZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBjYWxsZWQK
LSAgICBEcmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiBpbWFn
ZSwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSk7Ci0gICAgRHJh
Z0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiwgRmxvYXRTaXplIHNjYWxlKTsK
LSAgICBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJl
ZiBpbWFnZSwgZmxvYXQgZGVsdGEpOwotICAgIAotICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwotICAg
IERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShj
b25zdCBTdHJpbmcmKTsKLSAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhV
UkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGb250UmVuZGVyaW5nTW9kZSk7Ci0gICAgdm9pZCBk
ZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmKTsKKworSW50U2l6ZSBkcmFnSW1hZ2VTaXplKERy
YWdJbWFnZVJlZik7CisKKy8vIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgbWVtb3J5IG5ldXRy
YWwsIGVnLiBpZiB0aGV5IHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBpbWFnZSwKKy8vIHRoZXkg
c2hvdWxkIHJlbGVhc2UgdGhlIGlucHV0IGltYWdlLiBBcyBhIGNvcm9sbGFyeSB0aGVzZSBtZXRo
b2RzIGRvbid0IGd1YXJhbnRlZQorLy8gdGhlIGlucHV0IGltYWdlIHJlZiB3aWxsIHN0aWxsIGJl
IHZhbGlkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGNhbGxlZC4KK0RyYWdJbWFnZVJlZiBmaXREcmFn
SW1hZ2VUb01heFNpemUoRHJhZ0ltYWdlUmVmLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25z
dCBJbnRTaXplJiBkc3RTaXplKTsKK0RyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1h
Z2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSk7CitEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VU
b0ZyYWN0aW9uKERyYWdJbWFnZVJlZiwgZmxvYXQgZGVsdGEpOworCitEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFt
ZShjb25zdCBTdHJpbmcmKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKEZy
YW1lJiwgTm9kZSopOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKEZyYW1l
JiwgUmFuZ2UqLCBib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpOworRHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUZvclJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgYm9vbCBpbmNsdWRl
U2VsZWN0aW9uID0gdHJ1ZSk7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2Uo
RnJhbWUmLCBOb2RlKiwgSW50UmVjdCYgaW1hZ2VSZWN0LCBJbnRSZWN0JiBlbGVtZW50UmVjdCk7
CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yRnJhbWVTZWxlY3Rpb24oRnJhbWUmLCBi
b29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZvckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJlbmRlcmluZ01vZGUpOwor
dm9pZCBkZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmKTsKIH0KIAogCi0jZW5kaWYgLy8hRHJh
Z0ltYWdlX2gKKyNlbmRpZiAvLyAhRHJhZ0ltYWdlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0ltYWdlTWFjLm1tCmluZGV4IDYzYTUzNTYwZmM5NWQ4OGI2ZmJmNjA2ZmM1NmY5
NDRiMzAyOTFjOTQuLjFhMjZhZTI1YTViY2VhMzhhNDI2NTkxMGZlMmRmZDY5ZTExNDAzNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpAQCAtMjAsNyAr
MjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKQEAgLTMy
LDkgKzMyLDE1IEBACiAjaW1wb3J0ICJGb250Q2FjaGUuaCIKICNpbXBvcnQgIkZvbnREZXNjcmlw
dGlvbi5oIgogI2ltcG9ydCAiRm9udFNlbGVjdG9yLmgiCisjaW1wb3J0ICJGcmFtZS5oIgorI2lt
cG9ydCAiRnJhbWVTZWxlY3Rpb24uaCIKKyNpbXBvcnQgIkZyYW1lVmlldy5oIgogI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0ICJJbWFnZS5oIgorI2ltcG9ydCAiTGF5b3V0UmVj
dC5oIgogI2ltcG9ydCAiVVJMLmgiCisjaW1wb3J0ICJOb2RlLmgiCisjaW1wb3J0ICJSZW5kZXJP
YmplY3QuaCIKICNpbXBvcnQgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbXBvcnQgIlN0cmluZ1Ry
dW5jYXRvci5oIgogI2ltcG9ydCAiVGV4dFJ1bi5oIgpAQCAtNjUsMjEgKzcxLDIxIEBAIFJldGFp
blB0cjxOU0ltYWdlPiBzY2FsZURyYWdJbWFnZShSZXRhaW5QdHI8TlNJbWFnZT4gaW1hZ2UsIEZs
b2F0U2l6ZSBzY2FsZSkKICAgICBbaW1hZ2UuZ2V0KCkgc2V0U2l6ZTpuZXdTaXplXTsKICAgICBy
ZXR1cm4gaW1hZ2U7CiB9Ci0gICAgCisKIFJldGFpblB0cjxOU0ltYWdlPiBkaXNzb2x2ZURyYWdJ
bWFnZVRvRnJhY3Rpb24oUmV0YWluUHRyPE5TSW1hZ2U+IGltYWdlLCBmbG9hdCBkZWx0YSkKIHsK
ICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgUmV0YWluUHRyPE5T
SW1hZ2U+IGRpc3NvbHZlZEltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRo
U2l6ZTpbaW1hZ2UuZ2V0KCkgc2l6ZV1dKTsKLSAgICAKKwogICAgIFtkaXNzb2x2ZWRJbWFnZS5n
ZXQoKSBsb2NrRm9jdXNdOwogICAgIFtpbWFnZS5nZXQoKSBkcmF3QXRQb2ludDpOU1plcm9Qb2lu
dCBmcm9tUmVjdDpOU01ha2VSZWN0KDAsIDAsIFtpbWFnZSBzaXplXS53aWR0aCwgW2ltYWdlIHNp
emVdLmhlaWdodCkgb3BlcmF0aW9uOk5TQ29tcG9zaXRlQ29weSBmcmFjdGlvbjpkZWx0YV07CiAg
ICAgW2Rpc3NvbHZlZEltYWdlLmdldCgpIHVubG9ja0ZvY3VzXTsKIAogICAgIHJldHVybiBkaXNz
b2x2ZWRJbWFnZTsKIH0KLSAgICAgICAgCisKIFJldGFpblB0cjxOU0ltYWdlPiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24g
ZGVzY3JpcHRpb24pCiB7CiAgICAgSW50U2l6ZSBzaXplID0gaW1hZ2UtPnNpemUoKTsKQEAgLTEy
NiwxOSArMTMyLDE5IEBAIFJldGFpblB0cjxOU0ltYWdlPiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1h
Z2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpCiAgICAgW2RyYWdJbWFnZS5n
ZXQoKSBzZXRTaXplOihOU1NpemUpc2l6ZV07CiAgICAgcmV0dXJuIGRyYWdJbWFnZTsKIH0KLSAg
ICAKKwogUmV0YWluUHRyPE5TSW1hZ2U+IGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFn
ZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiB7CiAgICAgTlNTdHJpbmcgKmV4dGVu
c2lvbiA9IG5pbDsKICAgICBzaXplX3QgZG90SW5kZXggPSBmaWxlbmFtZS5yZXZlcnNlRmluZCgn
LicpOwotICAgIAorCiAgICAgaWYgKGRvdEluZGV4ICE9IG5vdEZvdW5kICYmIGRvdEluZGV4IDwg
KGZpbGVuYW1lLmxlbmd0aCgpIC0gMSkpIC8vIHJlcXVpcmUgdGhhdCBhIC4gZXhpc3RzIGFmdGVy
IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGJlZm9yZSB0aGUgbGFzdAogICAgICAgICBleHRlbnNp
b24gPSBmaWxlbmFtZS5zdWJzdHJpbmcoZG90SW5kZXggKyAxKTsKICAgICBlbHNlIHsKICAgICAg
ICAgLy8gSXQgbWlnaHQgYmUgd29ydGggZG9pbmcgYSBmdXJ0aGVyIGxvb2t1cCB0byBwdWxsIHRo
ZSBleHRlbnNpb24gZnJvbSB0aGUgTUlNRSB0eXBlLgogICAgICAgICBleHRlbnNpb24gPSBAIiI7
CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIFtbTlNXb3Jrc3BhY2Ugc2hhcmVkV29ya3NwYWNl
XSBpY29uRm9yRmlsZVR5cGU6ZXh0ZW5zaW9uXTsKIH0KIApAQCAtMTU2LDEyICsxNjIsMTIgQEAg
Y29uc3QgZmxvYXQgRHJhZ0xpbmtMYWJlbEZvbnRzaXplID0gMTE7CiBjb25zdCBmbG9hdCBEcmFn
TGlua1VybEZvbnRTaXplID0gMTA7CiAKIC8vIEZJWE1FIC0gd2Ugc2hvdWxkIG1vdmUgYWxsIHRo
ZSBmdW5jdGlvbmFsaXR5IG9mIE5TU3RyaW5nIGV4dHJhcyB0byBXZWJDb3JlCi0gICAgCisKIHN0
YXRpYyBGb250JiBmb250RnJvbU5TRm9udChOU0ZvbnQgKmZvbnQpCiB7CiAgICAgc3RhdGljIE5T
Rm9udCAqY3VycmVudEZvbnQ7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChGb250LCBjdXJyZW50
UmVuZGVyZXIsICgpKTsKLSAgICAKKwogICAgIGlmIChbZm9udCBpc0VxdWFsOmN1cnJlbnRGb250
XSkKICAgICAgICAgcmV0dXJuIGN1cnJlbnRSZW5kZXJlcjsKICAgICBpZiAoY3VycmVudEZvbnQp
CkBAIC0xODMsMTQgKzE4OSwxNCBAQCBzdGF0aWMgYm9vbCBjYW5Vc2VGYXN0UmVuZGVyZXIoY29u
c3QgVW5pQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgfQogICAgIHJldHVybiB0
cnVlOwogfQotICAgIAorCiBzdGF0aWMgZmxvYXQgd2lkdGhXaXRoRm9udChOU1N0cmluZyAqc3Ry
aW5nLCBOU0ZvbnQgKmZvbnQpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gW3N0cmluZyBsZW5n
dGhdOwogICAgIFZlY3RvcjxVbmlDaGFyLCAyMDQ4PiBidWZmZXIobGVuZ3RoKTsKLSAgICAKKwog
ICAgIFtzdHJpbmcgZ2V0Q2hhcmFjdGVyczpidWZmZXIuZGF0YSgpXTsKLSAgICAKKwogICAgIGlm
IChjYW5Vc2VGYXN0UmVuZGVyZXIoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSkgewogICAgICAgICBG
b250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250Q2FjaGVQdXJnZVByZXZlbnRlcjsKIApAQCAtMTk5
LDcgKzIwNSw3IEBAIHN0YXRpYyBmbG9hdCB3aWR0aFdpdGhGb250KE5TU3RyaW5nICpzdHJpbmcs
IE5TRm9udCAqZm9udCkKICAgICAgICAgcnVuLmRpc2FibGVSb3VuZGluZ0hhY2tzKCk7CiAgICAg
ICAgIHJldHVybiB3ZWJDb3JlRm9udC53aWR0aChydW4pOwogICAgIH0KLSAgICAKKwogICAgIHJl
dHVybiBbc3RyaW5nIHNpemVXaXRoQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlX
aXRoT2JqZWN0c0FuZEtleXM6Zm9udCwgTlNGb250QXR0cmlidXRlTmFtZSwgbmlsXV0ud2lkdGg7
CiB9CiAKQEAgLTIwOSwxNCArMjE1LDE0IEBAIHN0YXRpYyBpbmxpbmUgQ0dGbG9hdCB3ZWJraXRf
Q0dDZWlsaW5nKENHRmxvYXQgdmFsdWUpCiAgICAgICAgIHJldHVybiBjZWlsZih2YWx1ZSk7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENHRmxvYXQ+KGNlaWwodmFsdWUpKTsKIH0KLSAgICAKKwog
c3RhdGljIHZvaWQgZHJhd0F0UG9pbnQoTlNTdHJpbmcgKnN0cmluZywgTlNQb2ludCBwb2ludCwg
TlNGb250ICpmb250LCBOU0NvbG9yICp0ZXh0Q29sb3IpCiB7CiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gW3N0cmluZyBsZW5ndGhdOwogICAgIFZlY3RvcjxVbmlDaGFyLCAyMDQ4PiBidWZmZXIobGVu
Z3RoKTsKLSAgICAKKwogICAgIFtzdHJpbmcgZ2V0Q2hhcmFjdGVyczpidWZmZXIuZGF0YSgpXTsK
LSAgICAKKwogICAgIGlmIChjYW5Vc2VGYXN0UmVuZGVyZXIoYnVmZmVyLmRhdGEoKSwgbGVuZ3Ro
KSkgewogICAgICAgICBGb250Q2FjaGVQdXJnZVByZXZlbnRlciBmb250Q2FjaGVQdXJnZVByZXZl
bnRlcjsKIApAQCAtMjI1LDE2ICsyMzEsMTYgQEAgc3RhdGljIHZvaWQgZHJhd0F0UG9pbnQoTlNT
dHJpbmcgKnN0cmluZywgTlNQb2ludCBwb2ludCwgTlNGb250ICpmb250LCBOU0NvbG9yICoKICAg
ICAgICAgLy8gSWYgeW91IGNoYW5nZSB0aGlzLCBiZSBzdXJlIHRvIHRlc3QgYWxsIHRoZSB0ZXh0
IGRyYXduIHRoaXMgd2F5IGluIFNhZmFyaSwgaW5jbHVkaW5nCiAgICAgICAgIC8vIHRoZSBzdGF0
dXMgYmFyLCBib29rbWFya3MgYmFyLCB0YWIgYmFyLCBhbmQgYWN0aXZpdHkgd2luZG93LgogICAg
ICAgICBwb2ludC55ID0gd2Via2l0X0NHQ2VpbGluZyhwb2ludC55KTsKLSAgICAgICAgCisKICAg
ICAgICAgTlNHcmFwaGljc0NvbnRleHQgKm5zQ29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBj
dXJyZW50Q29udGV4dF07CiAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBzdGF0aWNf
Y2FzdDxDR0NvbnRleHRSZWY+KFtuc0NvbnRleHQgZ3JhcGhpY3NQb3J0XSk7Ci0gICAgICAgIEdy
YXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoY2dDb250ZXh0KTsgICAgCi0gICAgICAgIAor
ICAgICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KGNnQ29udGV4dCk7CisKICAg
ICAgICAgLy8gU2FmYXJpIGRvZXNuJ3QgZmxpcCB0aGUgTlNHcmFwaGljc0NvbnRleHQgYmVmb3Jl
IGNhbGxpbmcgV2ViS2l0LCB5ZXQgV2ViQ29yZSByZXF1aXJlcyBhIGZsaXBwZWQgZ3JhcGhpY3Mg
Y29udGV4dC4KICAgICAgICAgQk9PTCBmbGlwcGVkID0gW25zQ29udGV4dCBpc0ZsaXBwZWRdOwog
ICAgICAgICBpZiAoIWZsaXBwZWQpCiAgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0Nv
bnRleHQsIDEsIC0xKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgIEZvbnQgd2ViQ29yZUZvbnQo
Rm9udFBsYXRmb3JtRGF0YShmb250LCBbZm9udCBwb2ludFNpemVdKSwgIVtuc0NvbnRleHQgaXNE
cmF3aW5nVG9TY3JlZW5dLCBBbnRpYWxpYXNlZCk7CiAgICAgICAgIFRleHRSdW4gcnVuKGJ1ZmZl
ci5kYXRhKCksIGxlbmd0aCk7CiAgICAgICAgIHJ1bi5kaXNhYmxlUm91bmRpbmdIYWNrcygpOwpA
QCAtMjQ1LDkgKzI1MSw5IEBAIHN0YXRpYyB2b2lkIGRyYXdBdFBvaW50KE5TU3RyaW5nICpzdHJp
bmcsIE5TUG9pbnQgcG9pbnQsIE5TRm9udCAqZm9udCwgTlNDb2xvciAqCiAgICAgICAgIENHRmxv
YXQgYWxwaGE7CiAgICAgICAgIFtbdGV4dENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpO
U0RldmljZVJHQkNvbG9yU3BhY2VdIGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVlOiZibHVl
IGFscGhhOiZhbHBoYV07CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobWFr
ZVJHQkEocmVkICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUpLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgCisKICAgICAgICAgd2ViQ29yZUZvbnQuZHJh
d1RleHQoJmdyYXBoaWNzQ29udGV4dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVk
ID8gcG9pbnQueSA6ICgtMSAqIHBvaW50LnkpKSkpOwotICAgICAgICAKKwogICAgICAgICBpZiAo
IWZsaXBwZWQpCiAgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEsIC0x
KTsKICAgICB9IGVsc2UgewpAQCAtMjU2LDE2ICsyNjIsMTYgQEAgc3RhdGljIHZvaWQgZHJhd0F0
UG9pbnQoTlNTdHJpbmcgKnN0cmluZywgTlNQb2ludCBwb2ludCwgTlNGb250ICpmb250LCBOU0Nv
bG9yICoKICAgICAgICAgICAgIHBvaW50LnkgLT0gW2ZvbnQgYXNjZW5kZXJdOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwb2ludC55ICs9IFtmb250IGRlc2NlbmRlcl07Ci0gICAgICAgICAg
ICAgICAgCisKICAgICAgICAgW3N0cmluZyBkcmF3QXRQb2ludDpwb2ludCB3aXRoQXR0cmlidXRl
czpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Zm9udCwgTlNGb250
QXR0cmlidXRlTmFtZSwgdGV4dENvbG9yLCBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUs
IG5pbF1dOwogICAgIH0KIH0KLSAgICAKKwogc3RhdGljIHZvaWQgZHJhd0RvdWJsZWRBdFBvaW50
KE5TU3RyaW5nICpzdHJpbmcsIE5TUG9pbnQgdGV4dFBvaW50LCBOU0NvbG9yICp0b3BDb2xvciwg
TlNDb2xvciAqYm90dG9tQ29sb3IsIE5TRm9udCAqZm9udCkKIHsKICAgICAgICAgLy8gdHVybiBv
ZmYgZm9udCBzbW9vdGhpbmcgc28gdHJhbnNsdWNlbnQgdGV4dCBkcmF3cyBjb3JyZWN0bHkgKFJh
ZGFyIDMxMTg0NTUpCiAgICAgICAgIGRyYXdBdFBvaW50KHN0cmluZywgdGV4dFBvaW50LCBmb250
LCBib3R0b21Db2xvcik7Ci0gICAgICAgIAorCiAgICAgICAgIHRleHRQb2ludC55ICs9IDE7CiAg
ICAgICAgIGRyYXdBdFBvaW50KHN0cmluZywgdGV4dFBvaW50LCBmb250LCB0b3BDb2xvcik7CiB9
CkBAIC0zNDQsNyArMzUwLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmso
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEZvbnRSZW5kZXJpbmcKIAogICAgIHJldHVy
biBkcmFnSW1hZ2U7CiB9Ci0gICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZVdpbi5jcHAKaW5kZXggMzFhMzJlNGMzYzAyNTNlODE1N2U4NDg1YmQxM2I1YTExY2Vl
YTQ3ZS4uYmVmYjVhYWZjNzY2OGUwNzgwODFkNDgwNGYyYWI3MjQwZjMzNTQ4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKQEAgLTIwLDcgKzIwLDcg
QEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtNjcsNyAr
NjcsNyBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFn
ZVJlZiBpbWFnZSwgZmxvYXQpCiAgICAgLy9XZSBkb24ndCBkbyB0aGlzIG9uIHdpbmRvd3MgYXMg
dGhlIGRyYWdpbWFnZSBpcyBibGVuZGVkIGJ5IHRoZSBPUwogICAgIHJldHVybiBpbWFnZTsKIH0K
LSAgICAgICAgCisKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1h
Z2VGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogewogICAgIFNIRklMRUlORk8gc2hm
aSA9IHswfTsKQEAgLTEyMSw2ICsxMjEsMzIgQEAgc3RhdGljIEZvbnQgZHJhZ0xhYmVsRm9udChp
bnQgc2l6ZSwgYm9vbCBib2xkLCBGb250UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JGcmFt
ZVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCit7CisgICAgaWYg
KGZyYW1lLnNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKKyAgICAgICAgcmV0dXJuIGltYWdlRnJvbVNl
bGVjdGlvbigmZnJhbWUsIGZvcmNlQmxhY2tUZXh0KS5sZWFrKCk7CisKKyAgICByZXR1cm4gMDsK
K30KKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoRnJhbWUmIGZyYW1lLCBO
b2RlKiBub2RlKQoreworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworCisg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFy
ZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVj
dDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVy
ZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7CisKKyAgICBmcmFtZS52aWV3KCkt
PnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcg
bW9kZQorICAgIEdESU9iamVjdDxIQklUTUFQPiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KCZmcmFt
ZSwgcGFpbnRpbmdSZWN0KTsKKyAgICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0RyYXcoMCk7CisK
KyAgICByZXR1cm4gcmVzdWx0LmxlYWsoKTsKK30KKwogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvckxpbmsoVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaW5MYWJlbCwgRm9udFJlbmRlcmlu
Z01vZGUgZm9udFJlbmRlcmluZ01vZGUpCiB7CiAgICAgLy8gVGhpcyBpcyBtb3JlIG9yIGxlc3Mg
YW4gZXhhY3QgbWF0Y2ggZm9yIHRoZSBNYWMgT1MgWCBjb2RlLgpAQCAtMTQ1LDcgKzE3MSw3IEBA
IERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGluTGFiZWwsIEZvbnRSZW5kZXJpCiAgICAgYm9vbCBjbGlwVVJMU3RyaW5nID0gZmFsc2U7
CiAgICAgYm9vbCBjbGlwTGFiZWxTdHJpbmcgPSBmYWxzZTsKIAotICAgIFN0cmluZyB1cmxTdHJp
bmcgPSB1cmwuc3RyaW5nKCk7IAorICAgIFN0cmluZyB1cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCk7
CiAgICAgU3RyaW5nIGxhYmVsID0gaW5MYWJlbDsKICAgICBpZiAobGFiZWwuaXNFbXB0eSgpKSB7
CiAgICAgICAgIGRyYXdVUkxTdHJpbmcgPSBmYWxzZTsKQEAgLTE2MSwxMyArMTg3LDEzIEBAIERy
YWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGluTGFiZWwsIEZvbnRSZW5kZXJpCiAgICAgICAgIGxhYmVsU2l6ZS5zZXRXaWR0aChNYXhEcmFn
TGFiZWxTdHJpbmdXaWR0aCk7CiAgICAgICAgIGNsaXBMYWJlbFN0cmluZyA9IHRydWU7CiAgICAg
fQotICAgIAorCiAgICAgSW50U2l6ZSB1cmxTdHJpbmdTaXplOwogICAgIEludFNpemUgaW1hZ2VT
aXplKGxhYmVsU2l6ZS53aWR0aCgpICsgRHJhZ0xhYmVsQm9yZGVyWCAqIDIsIGxhYmVsU2l6ZS5o
ZWlnaHQoKSArIERyYWdMYWJlbEJvcmRlclkgKiAyKTsKIAogICAgIGlmIChkcmF3VVJMU3RyaW5n
KSB7CiAgICAgICAgIHVybFN0cmluZ1NpemUuc2V0V2lkdGgodXJsRm9udC0+d2lkdGgodXJsUnVu
KSk7Ci0gICAgICAgIHVybFN0cmluZ1NpemUuc2V0SGVpZ2h0KHVybEZvbnQtPmZvbnRNZXRyaWNz
KCkuYXNjZW50KCkgKyB1cmxGb250LT5mb250TWV0cmljcygpLmRlc2NlbnQoKSk7IAorICAgICAg
ICB1cmxTdHJpbmdTaXplLnNldEhlaWdodCh1cmxGb250LT5mb250TWV0cmljcygpLmFzY2VudCgp
ICsgdXJsRm9udC0+Zm9udE1ldHJpY3MoKS5kZXNjZW50KCkpOwogICAgICAgICBpbWFnZVNpemUu
c2V0SGVpZ2h0KGltYWdlU2l6ZS5oZWlnaHQoKSArIHVybFN0cmluZ1NpemUuaGVpZ2h0KCkpOwog
ICAgICAgICBpZiAodXJsU3RyaW5nU2l6ZS53aWR0aCgpID4gTWF4RHJhZ0xhYmVsU3RyaW5nV2lk
dGgpIHsKICAgICAgICAgICAgIGltYWdlU2l6ZS5zZXRXaWR0aChNYXhEcmFnTGFiZWxXaWR0aCk7
CkBAIC0xODcsNyArMjEzLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmso
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaW5MYWJlbCwgRm9udFJlbmRlcmkKICAgICBhdXRvIGlt
YWdlID0gYWxsb2NJbWFnZSh3b3JraW5nREMuZ2V0KCksIGltYWdlU2l6ZSwgJmNvbnRleHRSZWYp
OwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKKwogICAgIDo6
U2VsZWN0T2JqZWN0KHdvcmtpbmdEQy5nZXQoKSwgaW1hZ2UuZ2V0KCkpOwogICAgIEdyYXBoaWNz
Q29udGV4dCBjb250ZXh0KGNvbnRleHRSZWYpOwogICAgIC8vIE9uIE1hYyBhbHBoYSBpcyB7MC43
LCAwLjcsIDAuNywgMC44fSwgaG93ZXZlciB3ZSBjYW4ndCBjb250cm9sIGFscGhhCkBAIC0xOTYs
NyArMjIyLDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgaW5MYWJlbCwgRm9udFJlbmRlcmkKICAgICBzdGF0aWMgY29uc3QgSW50
U2l6ZSByYWRpaShEcmFnTGFiZWxSYWRpdXMsIERyYWdMYWJlbFJhZGl1cyk7CiAgICAgSW50UmVj
dCByZWN0KDAsIDAsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpOwogICAg
IGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHJlY3QsIHJhZGlpLCByYWRpaSwgcmFkaWksIHJhZGlp
LCBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotIAorCiAgICAgLy8gRHJh
dyB0aGUgdGV4dAogICAgIHN0YXRpYyBjb25zdCBDb2xvciB0b3BDb2xvcigwLCAwLCAwLCAyNTUp
OyAvLyBvcmlnaW5hbCBhbHBoYSA9IDAuNzUKICAgICBzdGF0aWMgY29uc3QgQ29sb3IgYm90dG9t
Q29sb3IoMjU1LCAyNTUsIDI1NSwgMTI3KTsgLy8gb3JpZ2luYWwgYWxwaGEgPSAwLjUKQEAgLTIw
Niw3ICsyMzIsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBpbkxhYmVsLCBGb250UmVuZGVyaQogICAgICAgICBJbnRQb2ludCB0
ZXh0UG9zKERyYWdMYWJlbEJvcmRlclgsIGltYWdlU2l6ZS5oZWlnaHQoKSAtIChMYWJlbEJvcmRl
cllPZmZzZXQgKyB1cmxGb250LT5mb250TWV0cmljcygpLmRlc2NlbnQoKSkpOwogICAgICAgICBX
ZWJDb3JlRHJhd0RvdWJsZWRUZXh0QXRQb2ludChjb250ZXh0LCB1cmxTdHJpbmcsIHRleHRQb3Ms
ICp1cmxGb250LCB0b3BDb2xvciwgYm90dG9tQ29sb3IpOwogICAgIH0KLSAgICAKKwogICAgIGlm
IChjbGlwTGFiZWxTdHJpbmcpCiAgICAgICAgIGxhYmVsID0gU3RyaW5nVHJ1bmNhdG9yOjpyaWdo
dFRydW5jYXRlKGxhYmVsLCBpbWFnZVNpemUud2lkdGgoKSAtIChEcmFnTGFiZWxCb3JkZXJYICog
Mi4wZiksICpsYWJlbEZvbnQsIFN0cmluZ1RydW5jYXRvcjo6RW5hYmxlUm91bmRpbmdIYWNrcyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDQ4NjI4MGU0
N2I2YTU1ZDY5M2Y4NGEzNTE0MmRhMzM4ZTJiZjc5YmYuLmIyNGU4ZTJkM2Q0ODVjOWJkNDljNjM2
MTUzY2UwZGMxN2M2ZjJhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQpAQCAtODUsNiArODUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnSW1hZ2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckRl
bGV0ZUFjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Lmg+CkBAIC0xODE4LDkgKzE4
MTksOSBAQCBzdGF0aWMgYm9vbCBtb3VzZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2ZW50
ICpldmVudCkKIAogLSAoTlNJbWFnZSAqKV9zZWxlY3Rpb25EcmFnZ2luZ0ltYWdlCiB7Ci0gICAg
aWYgKCFbc2VsZiBfaGFzU2VsZWN0aW9uXSkKKyAgICBpZiAoIVtzZWxmIF9oYXNTZWxlY3Rpb25d
IHx8ICFbc2VsZiBfZnJhbWVdKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIE5TSW1hZ2UgKmRy
YWdJbWFnZSA9IHNlbGVjdGlvbkltYWdlKGNvcmUoW3NlbGYgX2ZyYW1lXSkpOworICAgIE5TSW1h
Z2UgKmRyYWdJbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvckZyYW1lU2VsZWN0aW9uKCpjb3JlKFtz
ZWxmIF9mcmFtZV0pKS5nZXQoKTsKICAgICBbZHJhZ0ltYWdlIF93ZWJfZGlzc29sdmVUb0ZyYWN0
aW9uOldlYkRyYWdJbWFnZUFscGhhXTsKICAgICByZXR1cm4gZHJhZ0ltYWdlOwogfQpAQCAtNTk2
NSw3ICs1OTY2LDExIEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRl
ZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiB7CiAgICAgaWYgKCFbc2Vs
ZiBfaGFzU2VsZWN0aW9uXSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gc2VsZWN0
aW9uSW1hZ2UoY29yZShbc2VsZiBfZnJhbWVdKSwgZm9yY2VCbGFja1RleHQpOworICAgIAorICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOworICAgIGlmICghY29yZUZy
YW1lKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBbY3JlYXRlRHJhZ0ltYWdlRm9y
RnJhbWVTZWxlY3Rpb24oKmNvcmVGcmFtZSwgZm9yY2VCbGFja1RleHQpIGF1dG9yZWxlYXNlXTsK
IH0KIAogLSAoTlNSZWN0KXNlbGVjdGlvbkltYWdlUmVjdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216938</attachid>
            <date>2013-11-14 08:24:36 -0800</date>
            <delta_ts>2013-11-14 08:53:52 -0800</delta_ts>
            <desc>v1.1</desc>
            <filename>bug-124325-20131114082435.patch</filename>
            <type>text/plain</type>
            <size>66976</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThmMzdhYTc5OWNiZmI0
MzI3OTEzZWE4ZjIzNzA0YzE2YzE2OTk2MC4uMWVhNmQ2NzAzZTYwNWViM2RiMzBjY2Q5MDJlNTA0
ZWJkZWVhMzc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEzLTExLTEzICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc2NyZWVuc2hvdCBjb2xsZWN0
aW9uIGNvZGUgaXMgc3ByZWFkIGJldHdlZW4gRnJhbWUsCisgICAgICAgIEZyYW1lU25hcHNob3R0
aW5nLCBhbmQgcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGZvcgorICAgICAgICBl
YWNoLiBBbGwgb2YgdGhpcyBjb2RlIGlzIG5vdyBsb2NhdGVkIHdpdGggRHJhZ0ltYWdlIGZ1bmN0
aW9ucywKKyAgICAgICAgYXMgYWxtb3N0IGFsbCB1c2VzIG9mIHNuYXBzaG90cyBhcmUgdXNlZCBm
b3IgZHJhZ2dpbmcgZWZmZWN0cy4KKworICAgICAgICBGb3IgaW5zcGVjdG9yIGNsaWVudHMgdG8g
YmUgYWJsZSB0byBlbmNvZGUgdGhlc2Ugc2NyZWVuc2hvdHMgd2l0aAorICAgICAgICB0aGUgcGxh
dGZvcm0tc3BlY2lmaWMgYmFzZTY0IGVuY29kZXIgcHJvdmlkZWQgYnkKKyAgICAgICAgSW1hZ2VC
dWZmZXI6OnRvRGF0YVVSTCwgd2UgYWRkIGEgdGhpbiB3cmFwcGVyIHRvIGJyZWFrCisgICAgICAg
IGRlcGVuZGVuY2llcyBvbiB0aGUgSW1hZ2VCdWZmZXIgaGVhZGVyIGFzIHdlbGwuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGlzIGlzIGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBXZWJD
b3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgIChXZWJDb3JlOjpsb29r
dXBFbGVtZW50Q2xhc3MpOgorICAgICAgICAoLVtET01Ob2RlIHJlbmRlcmVkSW1hZ2VdKToKKyAg
ICAgICAgKC1bRE9NUmFuZ2UgcmVuZGVyZWRJbWFnZUZvcmNpbmdCbGFja1RleHQ6XSk6CisgICAg
ICAgICogZG9tL0NsaXBib2FyZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmQ6OmNy
ZWF0ZURyYWdJbWFnZSk6CisgICAgICAgICogZG9tL0NsaXBib2FyZE1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkNsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBwYWdlL0Ry
YWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFy
dERyYWcpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25h
cHNob3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU25hcHNob3Q6OkZyYW1l
U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTbmFwc2hvdDo6fkZyYW1lU25hcHNo
b3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTbmFwc2hvdDo6Y3JlYXRlRnJvbVJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW1hZ2VGcm9tRnJhbWVSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lU25hcHNob3Q6OnRvRGF0YVVSTCk6CisgICAgICAgICogcGFnZS9GcmFtZVNu
YXBzaG90Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTbmFwc2hvdDo6YnVmZmVy
KToKKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBw
YWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBhZ2Uv
bWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1vdmVkLgorICAgICAgICAqIHBhZ2Uvd2lu
L0ZyYW1lV2luLmNwcDoKKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaXREcmFnSW1hZ2VU
b01heFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRG
cmFtZVBhaW50aW5nU3RhdGU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY29wZWRGcmFtZVBhaW50aW5nU3RhdGU6On5TY29wZWRGcmFtZVBhaW50aW5nU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yRnJhbWVTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFn
SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OmZvbnRGcm9tTlNGb250KToKKyAgICAgICAgKFdlYkNvcmU6OndpZHRoV2l0aEZv
bnQpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0F0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJhd0RvdWJsZWRBdFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckZyYW1lU2VsZWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvck5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisKIDIwMTMtMTEtMTMgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBS
ZW5hbWUgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCB0byBJbnNwZWN0b3JCYWNrZW5kRGlz
cGF0Y2hlcnMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IDE0OTNjMmJmMWQ4YjViMTA1NDc1MWNhMzk0
MWNjNmE4OWUwYjNkMjYuLjdkMzRhYWNhMDQxZmJlYTY2MzNkZDYwN2NkZDU5YzE3ZmE2YjkxNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMS0xMyAgQnJpYW4gSi4g
QnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgQ29uc29saWRhdGUgdmFy
aW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1t
OiB1c2UgbmV3IGhlYWRlciBmaWxlLgorCiAyMDEzLTExLTA3ICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGEgUExBVEZPUk0oSU9TKSBmcm9t
IFdlYktpdCBQcml2YXRlIEhlYWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDUyMzAxNjExZGQxMTE2
NWQ0NjQwZmRlMTlmMzc5ZTY1ZDU2ZjE3NWQuLjFmZTQ0OGM0MThjNTk1ZmJhZjM5YjcwNjZjOTEy
MTc4NjY3OGY3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0xMS0x
MyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgQ29u
c29saWRhdGUgdmFyaW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbmV3IHBsYXRmb3JtLWlu
ZGVwZW5kZW50IG1ldGhvZHMgaW5zdGVhZCBvZiBNYWMgbWV0aG9kcy4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9zZWxlY3Rpb25E
cmFnZ2luZ0ltYWdlXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNlbGVjdGlvbkltYWdlRm9y
Y2luZ0JsYWNrVGV4dDpdKToKKwogMjAxMy0xMS0xMyAgR29yZG9uIFNoZXJpZGFuICA8Z29yZG9u
X3NoZXJpZGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmVkIGRlcHJlY2F0ZWQgZG93bmxv
YWQgZGVsZWdhdGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGRlMWE4M2M3YzI5ZmViNjhhMGQyZjc2
MzY4NjIyMDhkNzM3MzIxNjEuLjc1OWE2M2QxODE4OTAzZmZiMzg1ODYwYjU2ZmMzZWM0MzAxM2I1
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0xMS0xNCAgQnJpYW4g
Si4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgQ29uc29saWRhdGUg
dmFyaW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVDbGFzc2VzLmNwcDoKKyAgICAg
ICAgKERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UpOiB1c2UgY3JlYXRlRHJhZ0ltYWdlRm9yTm9k
ZS4KKwogMjAxMy0xMS0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtXaW5DYWlyb10gUHJlcGFyYXRpb24gZm9yIEVOQUJMRShWSURFTyku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDE0MjQyYjMyMTJmOWY0YWUxZDhiM2QzNjIyNTUyM2Vl
NzgxNjgyMWUuLmUyNmQ4YWFkZTM1ZDkzZDU1ZjM3M2I5MmFiM2ZhYmZjMTI0ZTM1ZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC0yNTMsNiArMjUzLDkgQEAgX19aTjdXZWJDb3JlMTNBWE9iamVj
dENhY2hlNDJnQWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZUVuYWJsZWRFCiBfX1pO
N1dlYkNvcmUxM0NoYXJhY3RlckRhdGE3c2V0RGF0YUVSS04zV1RGNlN0cmluZ0VSaQogX19aTjdX
ZWJDb3JlMTNDb250YWluZXJOb2RlMTFhcHBlbmRDaGlsZEVOM1dURjEwUGFzc1JlZlB0cklOU180
Tm9kZUVFRVJpTlNfMTRBdHRhY2hCZWhhdmlvckUKIF9fWk43V2ViQ29yZTEzQ29udGFpbmVyTm9k
ZTExcmVtb3ZlQ2hpbGRFUE5TXzROb2RlRVJpCitfX1pON1dlYkNvcmUxM0ZyYW1lU25hcHNob3Qx
NGNyZWF0ZUZyb21SZWN0RVJOU181RnJhbWVFUktOU183SW50UmVjdEViYgorX19aTjdXZWJDb3Jl
MTNGcmFtZVNuYXBzaG90OXRvRGF0YVVSTEVSS04zV1RGNlN0cmluZ0VQZAorX19aTjdXZWJDb3Jl
MTNGcmFtZVNuYXBzaG90RDFFdgogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyMTFzZXRDaGls
ZHJlbkVSS04zV1RGNlZlY3RvcklQUzBfTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19a
TjdXZWJDb3JlMTNHcmFwaGljc0xheWVyMTJyZXBsYWNlQ2hpbGRFUFMwX1MxXwogX19aTjdXZWJD
b3JlMTNHcmFwaGljc0xheWVyMTJzZXRaUG9zaXRpb25FZgpAQCAtNDI3LDcgKzQzMCw2IEBAIF9f
Wk43V2ViQ29yZTE0Y29va2llc0VuYWJsZWRFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVS
S05TXzNVUkxFUzVfCiBfX1pON1dlYkNvcmUxNGRlY29kZUhvc3ROYW1lRVA4TlNTdHJpbmcKIF9f
Wk43V2ViQ29yZTE0ZW5jb2RlSG9zdE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRlbmRP
ZlBhcmFncmFwaEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jv
c3NpbmdSdWxlRQotX19aTjdXZWJDb3JlMTRzZWxlY3Rpb25JbWFnZUVQTlNfNUZyYW1lRWIKIF9f
Wk43V2ViQ29yZTE0c2V0TWV0YWRhdGFVUkxFUk4zV1RGNlN0cmluZ0VSS1MxX1M0XwogX19aTjdX
ZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm01ZmxpcFlFdgogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFu
c2Zvcm01c2NhbGVFZApAQCAtOTAxLDYgKzkwMyw3IEBAIF9fWk43V2ViQ29yZTMwaG9zdE5hbWVO
ZWVkc0VuY29kaW5nV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTMw
b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzRVJLTjNXVEY2VmVjdG9ySU5TMF82U3RyaW5n
RUxtMEVOUzBfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZTVlbXB0eUV2CiBfX1pON1dlYkNvcmUzMUNyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGU2c2hhcmVkRXYKK19fWk43V2ViQ29yZTMyY3JlYXRlRHJhZ0ltYWdl
Rm9yRnJhbWVTZWxlY3Rpb25FUk5TXzVGcmFtZUViCiBfX1pON1dlYkNvcmUzM3N0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlc0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTM3V2lk
Z2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTExbW92ZVdpZGdldHNFdgogX19aTjdX
ZWJDb3JlMzdXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlMzVzX3dpZGdldEhp
ZXJhcmNoeVVwZGF0ZVN1c3BlbmRDb3VudEUKQEAgLTIwMzIsNyArMjAzNSw2IEBAIF9fWk43V2Vi
Q29yZTM4Y29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnVFdgogX19aTjdXZWJD
b3JlNDJjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmdFdgogX19aTjdX
ZWJDb3JlNDJjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmdFdgogX19a
TjdXZWJDb3JlNDZjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5
RXYKLV9fWk43V2ViQ29yZTVGcmFtZTlub2RlSW1hZ2VFUE5TXzROb2RlRQogX19aTjdXZWJDb3Jl
NkN1cnNvcjhmcm9tVHlwZUVOUzBfNFR5cGVFCiBfX1pON1dlYkNvcmU2Q3Vyc29yQzFFUE5TXzVJ
bWFnZUVSS05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29yZTZDdXJzb3JDMUVSS1MwXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMy
YTY1MTMxMmVkNTdkYzE2NjA5YTAzMzI5Mjk4OWRmYmRhZGQ5NTUuLmE0NjY2MjYzYmNiNGQxYjM0
MjRlZDA2OTcwZDAzYjc3ZTkzMTBmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwMDAsNyArMjAwMCw2IEBACiAJCTY1QTIx
NDg1MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFt
ZVRyZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk2NUJGMDIyRTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCRjAyMjkwOTc0ODE2MzAwQzQzMTk2IC8q
IEZyYW1lLmNwcCAqLzsgfTsKIAkJNjVCRjAyMkYwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyQTA5
NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk2NUJGMDI0NTA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIz
QzA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gKi87IH07CiAJCTY1Qzk3QUYzMDhFQTkw
ODgwMEFDRDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLzsgfTsK
IAkJNjVDQkZFRjkwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUNCRkVGNzA5NzRGNjA3MDAxREFD
MjUgLyogRnJhbWVWaWV3LmNwcCAqLzsgfTsKIAkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8q
IEZyYW1lVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjAxLDggKzIyMDAsNiBAQAog
CQk3QzUzNDNGQzE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTM0M0ZB
MTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwICovOyB9Owog
CQk3QzUzNDNGRDE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQjE3
Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggKi87IH07CiAJCTdD
QzdFM0Q3MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0IGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M3RTNENjE3MjA4QzBG
MDAzQzUyNzcgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLzsgfTsKLQkJN0NFMzBEQTkxNzFC
NjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8q
IEZyYW1lU25hcHNob3R0aW5nTWFjLm1tICovOyB9OwotCQk3Q0UzMERBQTE3MUI2M0QyMDBFQzMz
RTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTMwREE4MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBz
aG90dGluZ01hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdENzQxQkRBMTc3MjI2QUEwMDg1OTE3MCAvKiBDU1NWYWx1ZUtleXdvcmRzLmggaW4g
Q29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NTY1ODE0ODA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oICovOyB9Owog
CQk3RTEyRTkwRjE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UxMkU5MEQx
NUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCAqLzsgfTsKIAkJ
N0UxMkU5MTAxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UxMkU5MEUx
NUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwICovOyB9OwpA
QCAtNTIzOCw2ICs1MjM1LDggQEAKIAkJQzNDRjE3QTUxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFy
Z2V0T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMzQ0YxN0ExMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzNDRjE3QTYxNUIw
MDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMjE1QjAwNjNGMDAyNzZE
MzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJQzNDRjE3QTcxNUIw
MDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5
IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUM0Q0Q2MjkyMTgzNDZCRUEwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM0Q0Q2MjkwMTgzNDZCRUEwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90LmNwcCAqLzsgfTsK
KwkJQzRDRDYyOTMxODM0NkJFQTAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0Q0Q2MjkxMTgzNDZCRUEwMDdF
QkFGMSAvKiBGcmFtZVNuYXBzaG90LmggKi87IH07CiAJCUM1MEI1NjE2MTIxMTlEMjMwMDhCNDZF
MCAvKiBHcm91cFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM1MEI1NjE0MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNw
cCAqLzsgfTsKIAkJQzUwQjU2MTcxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE1MTIx
MTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwRDBFODIwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0
b3JhZ2VOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzUwRDBFODAwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3Bw
ICovOyB9OwpAQCAtODczMCw3ICs4NzI5LDYgQEAKIAkJNjVBNjQwRjAwNTMzQkIxRjAwODVFNzc3
IC8qIEJsb2NrRXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCbG9ja0V4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1QkYwMjI5MDk3NDgxNjMwMEM0
MzE5NiAvKiBGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUJGMDIyQTA5NzQ4MTYz
MDBDNDMxOTYgLyogRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1QkYwMjNDMDk3NDgxOTAwMEM0
MzE5NiAvKiBGcmFtZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBGcmFtZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVDOTdBRjIw
OEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA0OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMy
NSAvKiBGcmFtZVZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZyYW1lVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Q0JGRUY4MDk3
NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZyYW1lVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODk1OCw4
ICs4OTU2LDYgQEAKIAkJN0M2MTM2RjgxNzEwQzM1MjAwRkY0QTU3IC8qIEluRmlsZXNQYXJzZXIu
cG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnNjcmlwdC5wZXJsOyBuYW1lID0gSW5GaWxlc1BhcnNlci5wbTsgcGF0aCA9IHNjcmlwdHMvSW5G
aWxlc1BhcnNlci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M2MTM2RjkxNzEw
QzM1MjAwRkY0QTU3IC8qIFN0YXRpY1N0cmluZy5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBTdGF0aWNT
dHJpbmcucG07IHBhdGggPSBzY3JpcHRzL1N0YXRpY1N0cmluZy5wbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0NDN0UzRDYxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRl
TGlzdC50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSUROU2NyaXB0V2hpdGVMaXN0LnR4dDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8q
IEZyYW1lU25hcHNob3R0aW5nTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRnJhbWVTbmFwc2hvdHRpbmdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTdDRTMwREE4MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZ01hYy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYg
LyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3Rv
bUZpbHRlck1lc2hHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Ux
MkU5MEUxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ3VzdG9tRmlsdGVyTWVzaEdlbmVy
YXRvci5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyog
UHVyZ2VQcmlvcml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZVBy
aW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjI2Myw2ICsxMjI1OSw4
IEBACiAJCUMzQ0YxN0ExMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzNDRjE3QTIxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDM0NGMTdBMzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lz
dHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNENENjI5MDE4MzQ2QkVB
MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGcmFtZVNuYXBzaG90LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzRDRDYyOTExODM0NkJFQTAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVTbmFwc2hvdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUw
IC8qIEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3Jv
dXBTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQy
NzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFtZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1NTg3LDYgKzE1NTg1LDggQEAKIAkJCQk2NUJGMDIyQTA5NzQ4MTYzMDBD
NDMxOTYgLyogRnJhbWUuaCAqLywKIAkJCQk5NzRBODYyMDE0QjdBREJCMDAzRkRDNzYgLyogRnJh
bWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCAqLywKIAkJCQk5NzRBODYyMTE0QjdBREJCMDAzRkRD
NzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmggKi8sCisJCQkJQzRDRDYyOTAxODM0NkJF
QTAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3QuY3BwICovLAorCQkJCUM0Q0Q2MjkxMTgzNDZCRUEw
MDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90LmggKi8sCiAJCQkJNjVBMjE0ODIwOTdBM0Y1MzAwQjkw
NTBBIC8qIEZyYW1lVHJlZS5jcHAgKi8sCiAJCQkJNjVBMjE0ODMwOTdBM0Y1MzAwQjkwNTBBIC8q
IEZyYW1lVHJlZS5oICovLAogCQkJCTY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZp
ZXcuY3BwICovLApAQCAtMTY1MDEsOSArMTY1MDEsNiBAQAogCQkJCUFCQUYyMjA3MEMwM0IxQzcw
MEIwQkNGMCAvKiBDaHJvbWVNYWMubW0gKi8sCiAJCQkJQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNF
IC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovLAogCQkJCTkzQzA5QTdFMEIwNjRFRUYwMDVBQkQ0
RCAvKiBFdmVudEhhbmRsZXJNYWMubW0gKi8sCi0JCQkJNjVCRjAyM0MwOTc0ODE5MDAwQzQzMTk2
IC8qIEZyYW1lTWFjLm1tICovLAotCQkJCTdDRTMwREE4MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFt
ZVNuYXBzaG90dGluZ01hYy5oICovLAotCQkJCTdDRTMwREE3MTcxQjYzRDIwMEVDMzNFMSAvKiBG
cmFtZVNuYXBzaG90dGluZ01hYy5tbSAqLywKIAkJCQkxQzI2NDk3QjBEN0UyNEVDMDBCRDEwRjIg
LyogUGFnZU1hYy5jcHAgKi8sCiAJCQkJRTFDMkYyNDgxNTMzQTIxMjAwODNGOTc0IC8qIFNldHRp
bmdzTWFjLm1tICovLAogCQkJCUY1ODc4NTRDMDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlRnJh
bWVWaWV3LmggKi8sCkBAIC0yMjQwMSw2ICsyMjM5OCw3IEBACiAJCQkJOEExMkUzNUQxMUZBMzMy
ODAwMjU4MzZBIC8qIERvY3VtZW50TG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUQy
QkE4M0MwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNENENjI5MzE4MzQ2QkVBMDA3RUJBRjEgLyogRnJhbWVT
bmFwc2hvdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ5NDdGRkUxMkY4MENEMjAwQTBGNjMxIC8q
IERvY3VtZW50T3JkZXJlZE1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDRkJBRTgwQjUxNTJF
RDAwMDFGMUQ3IC8qIERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzA1ODUy
OTE3RkRFMDJDMDA1RjJCQ0IgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRTZXQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjI5NDgsNyArMjI5NDYsNiBAQAogCQkJCTYyOEQyMTRFMTIxMzFFRjQwMDU1RENG
QyAvKiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTcyQUY3
MDE4MEYyODk1MDBGQkFEQjkgLyogQ3J5cHRvS2V5VXNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzMzA5RTBFMDk5RTY0OTIwMDU2RTU4MSAvKiBGcmFtZVNlbGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJN0NFMzBEQUExNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUEyMTQ4NTA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVU
cmVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NUNCRkVGQTA5NzRGNjA3MDAxREFDMjUgLyogRnJh
bWVWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzIwNUFCMDEyMzkyOENBMDBCMTczODAgLyog
RlRQRGlyZWN0b3J5RG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjYyMjQsMTAgKzI2MjIx
LDggQEAKIAkJCQk5MzJFMTYwOTBBRjU3ODM0MDAyNUY0MDggLyogRnJhbWVMb2FkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRDAwMEVCQTIxMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVy
U3RhdGVNYWNoaW5lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2QkE3NjZFMTY2NDI3QTgwMDVC
RTVEMSAvKiBGcmFtZUxvYWRSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTY1QkYwMjQ1
MDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5
RTBEMDk5RTY0OTIwMDU2RTU4MSAvKiBGcmFtZVNlbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0QThDOTZFQjBCRTY5MDMyMDA0RUVGRjAgLyogRnJhbWVTZWxlY3Rpb25NYWMubW0gaW4g
U291cmNlcyAqLywKLQkJCQk3Q0UzMERBOTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hv
dHRpbmdNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURBRDE3RDE0MTUxMDA3RkY4NDIg
LyogSlNSVENEYXRhQ2hhbm5lbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QTIxNDg0
MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRD
OTFBMTAxODAyMzQzOTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjY5NzUsNiArMjY5NzAsNyBAQAogCQkJCUIyRkEzRDlBMEFCNzVBNkYwMDBFNUFDNCAv
KiBKU1NWR0dFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyN0IyODI3MENFRjBDMDcw
MEQzOUQ1NCAvKiBKU1NWR0dseXBoRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAz
NjNFMTE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0gaW4gU291cmNl
cyAqLywKKwkJCQlDNENENjI5MjE4MzQ2QkVBMDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyNEQ5MTI5ODEzQ0E5NkRFMDBEMjE5MTUgLyogSlNTVkdHbHlw
aFJlZkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEOUMwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHR3JhZGllbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MTc0
RUMyQkNDQUYxN0VBRTNGNDZGOCAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggY2MwMzY1NTI2ZTMxNmUw
NWQ1YjE1YmI3NDQ0YzNiYjJiY2ZhOTA1MC4uNTNkYmJmZjMzNGRhNDc1YjFiMzYxMGQyNTM0ZmZi
ZDZjMTkzMzU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00u
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAgLTM2LDkgKzM2
LDkgQEAKICNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NUHJpdmF0ZS5o
IgogI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgorI2ltcG9ydCAiRHJhZ0ltYWdlLmgiCiAj
aW1wb3J0ICJGb250LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiRnJhbWVTbmFwc2hv
dHRpbmdNYWMuaCIKICNpbXBvcnQgIkhUTUxFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMu
aCIKICNpbXBvcnQgIkhUTUxQYXJzZXJJZGlvbXMuaCIKQEAgLTI4OSw3ICsyODksNyBAQCBpZCA8
RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCogZXZlbnRUYXJnZXQpCiAg
ICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGZyYW1lLT5ub2Rl
SW1hZ2Uobm9kZSkuZ2V0KCk7CisgICAgcmV0dXJuIFtjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpm
cmFtZSwgbm9kZSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopdGV4dFJlY3RzCkBA
IC0zMzUsNyArMzM1LDcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2ViQ29yZTo6RXZlbnRU
YXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6cmFuZ2VJbWFnZShmcmFtZSwgcmFuZ2UsIGZvcmNlQmxh
Y2tUZXh0KTsKKyAgICByZXR1cm4gW2NyZWF0ZURyYWdJbWFnZUZvclJhbmdlKCpmcmFtZSwgcmFu
Z2UsIGZvcmNlQmxhY2tUZXh0KSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKil0ZXh0
UmVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKaW5kZXggOWQyZTI3NTJmZGYyYjdjNjY0MmEy
NDI0Zjg4MDYzZWM4YTcxYzdjOC4uODAzOGU3ODQ3MDg1ODA4MDcwZDg3ZjFhN2YyOWU0M2Q4MGEz
NmRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAKQEAgLTI3NywxMCArMjc3LDExIEBAIERy
YWdJbWFnZVJlZiBDbGlwYm9hcmQ6OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgbG9jYXRpb24p
IGNvbnN0CiAKICAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBtX2RyYWdJbWFnZUVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAg
ICAgICAgIHJldHVybiBmcmFtZS0+bm9kZUltYWdlKG1fZHJhZ0ltYWdlRWxlbWVudC5nZXQoKSk7
CisgICAgICAgICAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZSgqZnJhbWUsIG1fZHJh
Z0ltYWdlRWxlbWVudC5nZXQoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7IC8vIFdlIGRvIG5v
dCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYSBkcmFnIGltYWdlLCB1c2UgdGhl
IGRlZmF1bHQgaWNvbi4KKyAgICAvLyBXZSBkbyBub3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24g
dG8gY3JlYXRlIGEgZHJhZyBpbWFnZSwgdXNlIHRoZSBkZWZhdWx0IGljb24uCisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Ns
aXBib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRNYWMubW0KaW5kZXgg
NzZjYTZmY2EzZTQyNDA3YjVmOGU3YjM1ZTY1ODczN2MyMTEzZThmYi4uZGQzYjgxM2Q4NDcxMmY0
ODEyNTg1MmE4ODYzMDc5YzEyZjI0MGYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NsaXBib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1t
CkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbXBvcnQgIkNhY2hlZEltYWdlLmgiCiAjaW1wb3J0ICJF
bGVtZW50LmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgorI2ltcG9ydCAiRHJh
Z0ltYWdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMTMgKzQwLDEzIEBAIERy
YWdJbWFnZVJlZiBDbGlwYm9hcmQ6OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgbG9jYXRpb24p
IGNvbnN0CiAgICAgTlNJbWFnZSAqcmVzdWx0ID0gbmlsOwogICAgIGlmIChtX2RyYWdJbWFnZUVs
ZW1lbnQpIHsKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZHJhZ0ltYWdlRWxlbWVudC0+
ZG9jdW1lbnQoKS5mcmFtZSgpKSB7Ci0gICAgICAgICAgICBOU1JlY3QgaW1hZ2VSZWN0OwotICAg
ICAgICAgICAgTlNSZWN0IGVsZW1lbnRSZWN0OwotICAgICAgICAgICAgcmVzdWx0ID0gc25hcHNo
b3REcmFnSW1hZ2UoZnJhbWUsIG1fZHJhZ0ltYWdlRWxlbWVudC5nZXQoKSwgJmltYWdlUmVjdCwg
JmVsZW1lbnRSZWN0KTsKKyAgICAgICAgICAgIEludFJlY3QgaW1hZ2VSZWN0OworICAgICAgICAg
ICAgSW50UmVjdCBlbGVtZW50UmVjdDsKKyAgICAgICAgICAgIHJlc3VsdCA9IFtjcmVhdGVEcmFn
SW1hZ2VGb3JJbWFnZSgqZnJhbWUsIG1fZHJhZ0ltYWdlRWxlbWVudC5nZXQoKSwgaW1hZ2VSZWN0
LCBlbGVtZW50UmVjdCkgYXV0b3JlbGVhc2VdOwogICAgICAgICAgICAgLy8gQ2xpZW50IHNwZWNp
ZmllcyBwb2ludCByZWxhdGl2ZSB0byBlbGVtZW50LCBub3QgdGhlIHdob2xlIGltYWdlLCB3aGlj
aCBtYXkgaW5jbHVkZSBjaGlsZAogICAgICAgICAgICAgLy8gbGF5ZXJzIHNwcmVhZCBvdXQgYWxs
IG92ZXIgdGhlIHBsYWNlLgotICAgICAgICAgICAgbG9jYXRpb24uc2V0WChlbGVtZW50UmVjdC5v
cmlnaW4ueCAtIGltYWdlUmVjdC5vcmlnaW4ueCArIG1fZHJhZ0xvY2F0aW9uLngoKSk7Ci0gICAg
ICAgICAgICBsb2NhdGlvbi5zZXRZKGltYWdlUmVjdC5zaXplLmhlaWdodCAtIChlbGVtZW50UmVj
dC5vcmlnaW4ueSAtIGltYWdlUmVjdC5vcmlnaW4ueSArIG1fZHJhZ0xvY2F0aW9uLnkoKSkpOwor
ICAgICAgICAgICAgbG9jYXRpb24uc2V0WChlbGVtZW50UmVjdC54KCkgLSBpbWFnZVJlY3QueCgp
ICsgbV9kcmFnTG9jYXRpb24ueCgpKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNldFkoaW1hZ2VS
ZWN0LmhlaWdodCgpIC0gKGVsZW1lbnRSZWN0LnkoKSAtIGltYWdlUmVjdC55KCkgKyBtX2RyYWdM
b2NhdGlvbi55KCkpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9kcmFnSW1hZ2UpIHsK
ICAgICAgICAgcmVzdWx0ID0gbV9kcmFnSW1hZ2UtPmltYWdlKCktPmdldE5TSW1hZ2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggN2ViMjQ5ZGY3ZmY5YjU1YThl
Y2U1YWU3ZmY0NzJlMGNkN2JhYzI0Ny4uYWEyMzFmNTg4NmU0OGI5YTAxZTllYjgzZmFiZjRjNGM4
ZmIxZDY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnQu
aCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgorI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgogI2luY2x1
ZGUgIkRyYWdTZXNzaW9uLmgiCiAjaW5jbHVkZSAiRHJhZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCkBAIC03ODAsNyArNzgxLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFn
KEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICAg
ICAgfQogICAgICAgICBtX2NsaWVudC53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1Nv
dXJjZUFjdGlvblNlbGVjdGlvbiwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKICAgICAgICAgaWYg
KCFkcmFnSW1hZ2UpIHsKLSAgICAgICAgICAgIGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJhZ0ltYWdl
VG9GcmFjdGlvbihzcmMuZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCksIERyYWdJbWFnZUFscGhhKTsK
KyAgICAgICAgICAgIGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihjcmVh
dGVEcmFnSW1hZ2VGb3JGcmFtZVNlbGVjdGlvbihzcmMpLCBEcmFnSW1hZ2VBbHBoYSk7CiAgICAg
ICAgICAgICBkcmFnTG9jID0gZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoc3JjKTsKICAgICAgICAg
ICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50KGRyYWdPcmlnaW4ueCgpIC0gZHJhZ0xvYy54KCks
IGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwCmluZGV4IDYyNDFlZTNjOTUyYjQ2MTU1YzI5MjA2YjA4ZjkwMWUwMGU1MmY1ODAuLjVjMDM2
MTFlOGI3NTFmOTE2ZGUyZWQ0YjcyNmI2MzYxYjcyZmFhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CkBAIC05NjYsMTA4ICs5NjYsNCBAQCBib29sIEZyYW1lOjppc1VSTEFsbG93ZWQoY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiAhUExBVEZPUk0oTUFDKSAm
JiAhUExBVEZPUk0oV0lOKQotc3RydWN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSB7Ci0gICAg
U2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKEZyYW1lKiBmcmFtZSwgTm9kZSogbm9kZSkKLSAgICAg
ICAgOiBmcmFtZShmcmFtZSkKLSAgICAgICAgLCBub2RlKG5vZGUpCi0gICAgICAgICwgcGFpbnRC
ZWhhdmlvcihmcmFtZS0+dmlldygpLT5wYWludEJlaGF2aW9yKCkpCi0gICAgICAgICwgYmFja2dy
b3VuZENvbG9yKGZyYW1lLT52aWV3KCktPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKSkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5yZW5kZXJlcigpKTsKLSAgICAgICAgaWYgKG5v
ZGUpCi0gICAgICAgICAgICBub2RlLT5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7
Ci0gICAgfQotCi0gICAgflNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSgpCi0gICAgewotICAgICAg
ICBpZiAobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgbm9kZS0+cmVuZGVy
ZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0
UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0
QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOwotICAgICAgICBmcmFtZS0+dmll
dygpLT5zZXROb2RlVG9EcmF3KDApOwotICAgIH0KLQotICAgIEZyYW1lKiBmcmFtZTsKLSAgICBO
b2RlKiBub2RlOwotICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcjsKLSAgICBDb2xvciBi
YWNrZ3JvdW5kQ29sb3I7Ci19OwotCi1EcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2Rl
KiBub2RlKQotewotICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBjb25zdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgc3RhdGUodGhpcywg
bm9kZSk7Ci0KLSAgICBtX3ZpZXctPnNldFBhaW50QmVoYXZpb3Ioc3RhdGUucGFpbnRCZWhhdmlv
ciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwotCi0gICAgLy8gV2hl
biBnZW5lcmF0aW5nIHRoZSBkcmFnIGltYWdlIGZvciBhbiBlbGVtZW50LCBpZ25vcmUgdGhlIGRv
Y3VtZW50IGJhY2tncm91bmQuCi0gICAgbV92aWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENv
bG9yOjp0cmFuc3BhcmVudCk7Ci0gICAgbV9kb2MtPnVwZGF0ZUxheW91dCgpOwotICAgIG1fdmll
dy0+c2V0Tm9kZVRvRHJhdyhub2RlKTsgLy8gRW5hYmxlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2lu
ZyBtb2RlLgotCi0gICAgLy8gRG9jdW1lbnQ6OnVwZGF0ZUxheW91dCBtYXkgaGF2ZSBibG93biBh
d2F5IHRoZSBvcmlnaW5hbCByZW5kZXJlci4KLSAgICBhdXRvIHJlbmRlcmVyID0gbm9kZS0+cmVu
ZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OwotICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0g
cGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJl
Y3QpKTsKLQotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsKLSAgICBpZiAobV9wYWdl
KQotICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKLSAgICBwYWludGluZ1JlY3Quc2V0V2lkdGgocGFpbnRpbmdSZWN0LndpZHRoKCkgKiBkZXZp
Y2VTY2FsZUZhY3Rvcik7Ci0gICAgcGFpbnRpbmdSZWN0LnNldEhlaWdodChwYWludGluZ1JlY3Qu
aGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+
IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIGRldmljZVNj
YWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXBh
aW50aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKLSAgICBidWZmZXItPmNvbnRleHQo
KS0+Y2xpcChGbG9hdFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0Lm1heFgoKSwgcGFpbnRpbmdSZWN0
Lm1heFkoKSkpOwotCi0gICAgbV92aWV3LT5wYWludENvbnRlbnRzKGJ1ZmZlci0+Y29udGV4dCgp
LCBwYWludGluZ1JlY3QpOwotCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJ1ZmZlci0+Y29w
eUltYWdlKCk7Ci0KLSAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25E
ZXNjcmlwdGlvbihyZW5kZXJlci0+c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSk7Ci0j
aWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKLSAgICBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHJlbmRlcmVyLT5zdHlsZSgpLmltYWdlT3JpZW50
YXRpb24oKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGlt
YWdlLmdldCgpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKLX0KLQotRHJhZ0ltYWdlUmVmIEZy
YW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQotewotICAgIGlmICghc2VsZWN0aW9uKCkuaXNS
YW5nZSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRp
bmdTdGF0ZSBzdGF0ZSh0aGlzLCAwKTsKLSAgICBtX3ZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFp
bnRCZWhhdmlvclNlbGVjdGlvbk9ubHkpOwotICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKLQot
ICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChzZWxlY3Rpb24oKS5i
b3VuZHMoKSk7Ci0KLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDE7Ci0gICAgaWYgKG1f
cGFnZSkKLSAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3BhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCk7Ci0gICAgcGFpbnRpbmdSZWN0LnNldFdpZHRoKHBhaW50aW5nUmVjdC53aWR0aCgpICog
ZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50aW5nUmVjdC5zZXRIZWlnaHQocGFpbnRpbmdS
ZWN0LmhlaWdodCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwotCi0gICAgT3duUHRyPEltYWdlQnVm
ZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZp
Y2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQikpOwotICAgIGlmICghYnVmZmVyKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWlu
dGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCkt
PmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5tYXhYKCksIHBhaW50aW5nUmVjdC5t
YXhZKCkpKTsKLQotICAgIG1fdmlldy0+cGFpbnRDb250ZW50cyhidWZmZXItPmNvbnRleHQoKSwg
cGFpbnRpbmdSZWN0KTsKLQotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJ
bWFnZSgpOwotICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0KCks
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKLX0KLQotI2VuZGlmCi0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA4NDA3ZTllMmJjZjNlZWZlZGRiZjA1
MzFiZTZjZTkyNzk0NTcyNzdjLi41ZjE4NjZmZTIwMmZjZmVhNjQ0MmMwYmJlZjgyMGY1NmVkMjNl
NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yOSw3ICsyOSw2IEBACiAjZGVmaW5lIEZyYW1lX2gK
IAogI2luY2x1ZGUgIkFkanVzdFZpZXdTaXplT3JOb3QuaCIKLSNpbmNsdWRlICJEcmFnSW1hZ2Uu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKQEAgLTU4LDExICs1NywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgRWRpdG9yOwogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgRXZlbnRI
YW5kbGVyOworICAgIGNsYXNzIEZsb2F0U2l6ZTsKICAgICBjbGFzcyBGcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXI7CiAgICAgY2xhc3MgRnJhbWVTZWxlY3Rpb247CiAgICAgY2xhc3MgRnJhbWVWaWV3
OwogICAgIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKICAgICBjbGFzcyBIVE1MVGFibGVD
ZWxsRWxlbWVudDsKKyAgICBjbGFzcyBJbWFnZUJ1ZmZlcjsKICAgICBjbGFzcyBJbnRSZWN0Owog
ICAgIGNsYXNzIE1haW5GcmFtZTsKICAgICBjbGFzcyBOb2RlOwpAQCAtMTc3LDkgKzE3OCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTdHJpbmcgZGlzcGxheVN0cmluZ01vZGlm
aWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgICAgICBEcmFnSW1hZ2VS
ZWYgbm9kZUltYWdlKE5vZGUqKTsKLSAgICAgICAgRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZUZvclNl
bGVjdGlvbigpOwotCiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQ
b2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCk7CiAgICAgICAgIERvY3VtZW50KiBkb2N1
bWVudEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KTsKICAgICAgICAgUGFzc1Jl
ZlB0cjxSYW5nZT4gcmFuZ2VGb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTcwNzIyZjQ3MGMz
Y2Q0Y2JhNjAxNWFiMTE2MmI0MDdjNDE0ZTljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90LmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICogIENv
cHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJGcmFtZVNuYXBzaG90LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworRnJhbWVTbmFwc2hvdDo6RnJhbWVTbmFwc2hvdChPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZl
cikKKzogbV9idWZmZXIoYnVmZmVyLnJlbGVhc2UoKSkgeyB9CisKK0ZyYW1lU25hcHNob3Q6On5G
cmFtZVNuYXBzaG90KCkgeyB9CisKK3N0ZDo6dW5pcXVlX3B0cjxGcmFtZVNuYXBzaG90PiBGcmFt
ZVNuYXBzaG90OjpjcmVhdGVGcm9tUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGlt
YWdlUmVjdCwgYm9vbCBpbmNsdWRlU2VsZWN0aW9uLCBib29sIHVzZVZpZXdDb29yZGluYXRlcykK
K3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGcmFtZVNuYXBzaG90PihjcmVhdGVJbWFn
ZUZyb21GcmFtZVJlY3QoZnJhbWUsIGltYWdlUmVjdCwgaW5jbHVkZVNlbGVjdGlvbiwgdXNlVmll
d0Nvb3JkaW5hdGVzKS5yZWxlYXNlKCkpOworfQorCitPd25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZUltYWdlRnJvbUZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVj
dCwgYm9vbCBpbmNsdWRlU2VsZWN0aW9uLCBib29sIHVzZVZpZXdDb29yZGluYXRlcykKK3sKKyAg
ICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKworICAgIEludFJlY3QgdXNlZFJl
Y3QoaW1hZ2VSZWN0KTsKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDE7CisgICAgaWYg
KGZyYW1lLnBhZ2UoKSkKKyAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IgPSBmcmFtZS5wYWdlKCkt
PmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgdXNlZFJlY3Quc2V0V2lkdGgoaW1hZ2VSZWN0Lndp
ZHRoKCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgdXNlZFJlY3Quc2V0SGVpZ2h0KGltYWdl
UmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKKworICAgIE93blB0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh1c2VkUmVjdC5zaXplKCksIGRldmlj
ZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgt
dXNlZFJlY3QueCgpLCAtdXNlZFJlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+Y2xp
cChGbG9hdFJlY3QoMCwgMCwgdXNlZFJlY3QubWF4WCgpLCB1c2VkUmVjdC5tYXhZKCkpKTsKKwor
ICAgIEZyYW1lVmlldzo6U2VsZWN0aW9uSW5TbmFwc2hvdCBzZWxlY3Rpb25Nb2RlID0gaW5jbHVk
ZVNlbGVjdGlvbiA/IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbiA6IEZyYW1lVmlldzo6RXhj
bHVkZVNlbGVjdGlvbjsKKyAgICBGcmFtZVZpZXc6OkNvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90
IGNvb3JkaW5hdGVNb2RlID0gdXNlVmlld0Nvb3JkaW5hdGVzID8gRnJhbWVWaWV3OjpWaWV3Q29v
cmRpbmF0ZXMgOiBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXM7CisgICAgZnJhbWUudmll
dygpLT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoYnVmZmVyLT5jb250ZXh0KCksIHVzZWRSZWN0
LCBzZWxlY3Rpb25Nb2RlLCBjb29yZGluYXRlTW9kZSk7CisgICAgcmV0dXJuIGJ1ZmZlci5yZWxl
YXNlKCk7Cit9CisKK1N0cmluZyBGcmFtZVNuYXBzaG90Ojp0b0RhdGFVUkwoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgZG91YmxlKiBxdWFsaXR5KQoreworICAgIHJldHVybiBidWZmZXIoKS50b0Rh
dGFVUkwobWltZVR5cGUsIHF1YWxpdHkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2NGNiNmJmNjY5MWEyMGRi
OWI4OWViNjgwM2Q4ZWRkMjNkNWEzM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lU25hcHNob3QuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogIENvcHlyaWdo
dCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGcmFtZVNuYXBzaG90X2gK
KyNkZWZpbmUgRnJhbWVTbmFwc2hvdF9oCisKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRnJhbWU7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgSW1hZ2VCdWZmZXI7CitjbGFzcyBOb2Rl
OworCisvLyBVc2VkIHRvIHRha2UgYm90aCBzY3JlZW5zaG90cyBhbmQgaW1hZ2VzIGZvciBEcmFn
SW1hZ2UuCitPd25QdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlRnJvbUZyYW1lUmVjdChGcmFt
ZSYsIGNvbnN0IEludFJlY3QmLCBib29sIGluY2x1ZGVTZWxlY3Rpb24gPSB0cnVlLCBib29sIHVz
ZVZpZXdDb29yZGluYXRlcyA9IHRydWUpOworCisvLyBUaGlzIGNsYXNzIGhpZGVzIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBGcmFtZVNuYXBzaG90Ojp0b0RhdGFVUkwgZnJvbSBlbWJlZGRlcnMuCitj
bGFzcyBGcmFtZVNuYXBzaG90IHsKK3B1YmxpYzoKKyAgICBGcmFtZVNuYXBzaG90KE93blB0cjxJ
bWFnZUJ1ZmZlcj4pOworICAgIH5GcmFtZVNuYXBzaG90KCk7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxGcmFtZVNuYXBzaG90PiBjcmVhdGVGcm9tUmVjdChGcmFtZSYsIGNvbnN0IEludFJl
Y3QmLCBib29sIGluY2x1ZGVTZWxlY3Rpb24gPSB0cnVlLCBib29sIHVzZVZpZXdDb29yZGluYXRl
cyA9IHRydWUpOworCisgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBkb3VibGUqIHF1YWxpdHkgPSBudWxscHRyKTsKKyAgICBJbWFnZUJ1ZmZlciYgYnVmZmVyKCkg
Y29uc3QgeyByZXR1cm4gKm1fYnVmZmVyOyB9Citwcml2YXRlOgorCisgICAgT3duUHRyPEltYWdl
QnVmZmVyPiBtX2J1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEZyYW1lU25hcHNob3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RnJhbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmYjFmOTFiY2JkNmYwNjI3YTYxZDFlOTRkZTliNzE0
YThiNTQzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDY0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2
IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAw
OCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGcmFtZS5oIgotCi0jaW1wb3J0ICJEb2N1bWVu
dC5oIgotI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbXBvcnQgIkZyYW1lU2VsZWN0
aW9uLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgotI2ltcG9ydCAiRnJhbWVW
aWV3LmgiCi0jaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1EcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewotICAgIG1fZG9j
LT51cGRhdGVMYXlvdXQoKTsgLy8gZm9yY2VzIHN0eWxlIHJlY2FsYwotCi0gICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKLSAgICBOU1Jl
Y3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdS
b290UmVjdCh0b3BMZXZlbFJlY3QpKTsKLQotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdyhub2Rl
KTsgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0gICAgTlNJbWFnZSog
cmVzdWx0ID0gaW1hZ2VGcm9tUmVjdCh0aGlzLCBwYWludGluZ1JlY3QpOwotICAgIG1fdmlldy0+
c2V0Tm9kZVRvRHJhdygwKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLURyYWdJbWFnZVJl
ZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoIXNlbGVjdGlvbigp
LmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gc2VsZWN0aW9uSW1h
Z2UodGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiZmFiNjdlNzY1ODE0YWU2Y2JjOTAxYmFkNDRhZmQxNTNmODYyYTIyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGcmFtZVNuYXBzaG90dGluZ01hY19oCi0jZGVmaW5lIEZy
YW1lU25hcHNob3R0aW5nTWFjX2gKLQotT0JKQ19DTEFTUyBOU0ltYWdlOwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEZyYW1lOwotY2xhc3MgUmFuZ2U7Ci1jbGFzcyBOb2RlOwotCi1O
U0ltYWdlKiBzZWxlY3Rpb25JbWFnZShGcmFtZSosIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxz
ZSk7Ci1OU0ltYWdlKiByYW5nZUltYWdlKEZyYW1lKiwgUmFuZ2UqLCBib29sIGZvcmNlQmxhY2tU
ZXh0ID0gZmFsc2UpOwotTlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoRnJhbWUqLCBOb2RlKiwg
TlNSZWN0KiBpbWFnZVJlY3QsIE5TUmVjdCogZWxlbWVudFJlY3QpOwotTlNJbWFnZSogaW1hZ2VG
cm9tUmVjdChGcmFtZSosIE5TUmVjdCk7Ci0KLX0KLQotI2VuZGlmIC8vIEZyYW1lU25hcHNob3R0
aW5nTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNo
b3R0aW5nTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdN
YWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MmMyZjIzY2IxN2JkMDNkNGU4
YTVlZTE5NTE0YWM0MzkxZDE5ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBA
bnlwb3AuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCi0KLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5o
IgotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJGcmFt
ZVNlbGVjdGlvbi5oIgotI2ltcG9ydCAiRnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHQuaCIKLSNpbXBvcnQgIlJhbmdlLmgiCi0jaW1wb3J0ICJSZW5kZXJWaWV3LmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotTlNJbWFnZSogaW1hZ2VGcm9tUmVjdChGcmFtZSogZnJhbWUs
IE5TUmVjdCByZWN0KQotewotICAgIFBhaW50QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBmcmFtZS0+
dmlldygpLT5wYWludEJlaGF2aW9yKCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhh
dmlvcihvbGRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMp
OwotICAgIAotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICAKLSAgICBOU0lt
YWdlKiByZXN1bHRJbWFnZSA9IFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoU2l6ZTpyZWN0LnNp
emVdIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBpZiAocmVjdC5zaXplLndpZHRoICE9IDAgJiYg
cmVjdC5zaXplLmhlaWdodCAhPSAwKSB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlv
bnMiCi0gICAgICAgIFtyZXN1bHRJbWFnZSBzZXRGbGlwcGVkOllFU107Ci0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCi0gICAgICAgIFtyZXN1bHRJbWFnZSBsb2NrRm9jdXNdOwotCi0gICAg
ICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoKENHQ29udGV4dFJlZilbW05TR3Jh
cGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdKTsgICAgICAgIAotICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotICAgICAgICBncmFwaGljc0NvbnRleHQudHJh
bnNsYXRlKC1yZWN0Lm9yaWdpbi54LCAtcmVjdC5vcmlnaW4ueSk7Ci0gICAgICAgIGZyYW1lLT52
aWV3KCktPnBhaW50Q29udGVudHMoJmdyYXBoaWNzQ29udGV4dCwgSW50UmVjdChyZWN0KSk7Ci0g
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICAgICAgW3Jlc3VsdEltYWdl
IHVubG9ja0ZvY3VzXTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAg
ICAgW3Jlc3VsdEltYWdlIHNldEZsaXBwZWQ6Tk9dOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAotICAgIH0KLSAgICAKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9s
ZEJlaGF2aW9yKTsKLSAgICByZXR1cm4gcmVzdWx0SW1hZ2U7Ci0gICAgCi0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKLSAgICAKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2
aW9yKG9sZEJlaGF2aW9yKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi1OU0ltYWdlKiBzZWxlY3Rp
b25JbWFnZShGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCi17Ci0gICAgZnJhbWUt
PnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IChm
b3JjZUJsYWNrVGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsKLSAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgTlNJbWFnZSogcmVzdWx0ID0g
aW1hZ2VGcm9tUmVjdChmcmFtZSwgZnJhbWUtPnNlbGVjdGlvbigpLmJvdW5kcygpKTsKLSAgICBm
cmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JOb3JtYWwpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLU5TSW1hZ2UgKnJhbmdlSW1hZ2UoRnJhbWUqIGZyYW1lLCBS
YW5nZSogcmFuZ2UsIGJvb2wgZm9yY2VCbGFja1RleHQpCi17Ci0gICAgZnJhbWUtPnZpZXcoKS0+
c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IChmb3JjZUJsYWNr
VGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsKLSAgICBmcmFtZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgUmVuZGVyVmlldyogdmlldyA9IGZyYW1lLT5j
b250ZW50UmVuZGVyZXIoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlLT5zdGFydFBvc2l0aW9uKCk7Ci0gICAgUG9zaXRp
b24gY2FuZGlkYXRlID0gc3RhcnQuZG93bnN0cmVhbSgpOwotICAgIGlmIChjYW5kaWRhdGUuZGVw
cmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkK
LSAgICAgICAgc3RhcnQgPSBjYW5kaWRhdGU7Ci0KLSAgICBQb3NpdGlvbiBlbmQgPSByYW5nZS0+
ZW5kUG9zaXRpb24oKTsKLSAgICBjYW5kaWRhdGUgPSBlbmQudXBzdHJlYW0oKTsKLSAgICBpZiAo
Y2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkt
PnJlbmRlcmVyKCkpCi0gICAgICAgIGVuZCA9IGNhbmRpZGF0ZTsKLQotICAgIGlmIChzdGFydC5p
c051bGwoKSB8fCBlbmQuaXNOdWxsKCkgfHwgc3RhcnQgPT0gZW5kKQotICAgICAgICByZXR1cm4g
bmlsOwotCi0gICAgUmVuZGVyT2JqZWN0KiBzYXZlZFN0YXJ0UmVuZGVyZXI7Ci0gICAgaW50IHNh
dmVkU3RhcnRPZmZzZXQ7Ci0gICAgUmVuZGVyT2JqZWN0KiBzYXZlZEVuZFJlbmRlcmVyOwotICAg
IGludCBzYXZlZEVuZE9mZnNldDsKLSAgICB2aWV3LT5nZXRTZWxlY3Rpb24oc2F2ZWRTdGFydFJl
bmRlcmVyLCBzYXZlZFN0YXJ0T2Zmc2V0LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZlZEVuZE9mZnNl
dCk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydC5kZXByZWNhdGVk
Tm9kZSgpLT5yZW5kZXJlcigpOwotICAgIGlmICghc3RhcnRSZW5kZXJlcikKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmQuZGVwcmVjYXRl
ZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIWVuZFJlbmRlcmVyKQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgdmlldy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0LmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJlbmRlcmVyLCBlbmQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOwotICAgIE5TSW1hZ2UqIHJl
c3VsdCA9IGltYWdlRnJvbVJlY3QoZnJhbWUsIHZpZXctPnNlbGVjdGlvbkJvdW5kcygpKTsKLSAg
ICB2aWV3LT5zZXRTZWxlY3Rpb24oc2F2ZWRTdGFydFJlbmRlcmVyLCBzYXZlZFN0YXJ0T2Zmc2V0
LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZlZEVuZE9mZnNldCwgUmVuZGVyVmlldzo6UmVwYWludE5v
dGhpbmcpOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2
aW9yTm9ybWFsKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLU5TSW1hZ2UqIHNuYXBzaG90
RHJhZ0ltYWdlKEZyYW1lKiBmcmFtZSwgTm9kZSogbm9kZSwgTlNSZWN0KiBpbWFnZVJlY3QsIE5T
UmVjdCogZWxlbWVudFJlY3QpCi17Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUt
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICAKLSAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOyAgICAvLyBtYXJrIGRyYWdn
ZWQgbm9kZXMgKHNvIHRoZXkgcGljayB1cCB0aGUgcmlnaHQgQ1NTKQotICAgIGZyYW1lLT5kb2N1
bWVudCgpLT51cGRhdGVMYXlvdXQoKTsgIC8vIGZvcmNlcyBzdHlsZSByZWNhbGMgLSBuZWVkZWQg
c2luY2UgY2hhbmdpbmcgdGhlIGRyYWcgc3RhdGUgbWlnaHQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpbXBseSBuZXcgc3R5bGVzLCBwbHVzIEpTIGNvdWxkIGhh
dmUgY2hhbmdlZCBvdGhlciB0aGluZ3MKLQotCi0gICAgLy8gRG9jdW1lbnQ6OnVwZGF0ZUxheW91
dCBtYXkgaGF2ZSBibG93biBhd2F5IHRoZSBvcmlnaW5hbCBSZW5kZXJFbGVtZW50LgotICAgIHJl
bmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgTlNSZWN0IHBh
aW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJl
Y3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBpZiAoTlNJc0VtcHR5UmVjdChwYWludGluZ1JlY3Qp
KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJh
dyhub2RlKTsgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0gICAgTlNJ
bWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgcGFpbnRpbmdSZWN0KTsKLSAgICBy
ZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0KCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJhdygwKTsKLQot
ICAgIGlmIChlbGVtZW50UmVjdCkKLSAgICAgICAgKmVsZW1lbnRSZWN0ID0gcGl4ZWxTbmFwcGVk
SW50UmVjdCh0b3BMZXZlbFJlY3QpOwotICAgIGlmIChpbWFnZVJlY3QpCi0gICAgICAgICppbWFn
ZVJlY3QgPSBwYWludGluZ1JlY3Q7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCmluZGV4IDVhYWYz
YTY3OGM5ZTU0M2FmNjgzYjM3YWQ1YjA2Y2NlMDY0NDNiOWYuLjk2NzRmMTc2OGY1ZGQ4NDI1YjYw
YzdhZjE2ZjBmMWY3ZDZmNzYzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2lu
L0ZyYW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAK
QEAgLTU3LDMwICs1Nyw0IEBAIEdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxlY3Rpb24o
RnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQogICAgIHJldHVybiBpbWFnZTsKIH0K
IAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQotewotICAgIGlm
IChzZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiBpbWFnZUZyb21TZWxlY3Rp
b24odGhpcywgZmFsc2UpLmxlYWsoKTsKLQotICAgIHJldHVybiAwOwotfQotCi1EcmFnSW1hZ2VS
ZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewotICAgIGRvY3VtZW50KCktPnVwZGF0
ZUxheW91dCgpOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVy
KCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBMYXlvdXRS
ZWN0IHRvcExldmVsUmVjdDsKLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBl
ZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAg
ICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1Yi10cmVl
IGRyYXdpbmcgbW9kZQotICAgIEdESU9iamVjdDxIQklUTUFQPiByZXN1bHQgPSBpbWFnZUZyb21S
ZWN0KHRoaXMsIHBhaW50aW5nUmVjdCk7Ci0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KDApOwot
Ci0gICAgcmV0dXJuIHJlc3VsdC5sZWFrKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCmluZGV4IDNhMjcyM2U2M2Q2ZDdlN2VjMDQ0Y2Ix
MmYyZWE3YmQwNmNmZTY1OWYuLjI2OTcyNWMxZjliOWI4MGQ1NzgxNDg0ZjkzMWFiMjVkZDNhZTMz
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uaApAQCAtMzUsNyArMzUsNyBAQCBjbGFz
cyBGcmFtZTsKIGNsYXNzIEludFJlY3Q7CiAKIEdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21S
ZWN0KGNvbnN0IEZyYW1lKiwgSW50UmVjdCYpOwotR0RJT2JqZWN0PEhCSVRNQVA+IGltYWdlRnJv
bVNlbGVjdGlvbihGcmFtZSosIGJvb2wgZm9yY2VXaGl0ZVRleHQpOworR0RJT2JqZWN0PEhCSVRN
QVA+IGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSosIGJvb2wgZm9yY2VCbGFja1RleHQpOwogdm9p
ZCBjb21wdXRlUGFnZVJlY3RzRm9yRnJhbWUoRnJhbWUqLCBjb25zdCBJbnRSZWN0JiBwcmludFJl
Y3QsIGZsb2F0IGhlYWRlckhlaWdodCwgZmxvYXQgZm9vdGVySGVpZ2h0LCBmbG9hdCB1c2VyU2Nh
bGVGYWN0b3IsIFZlY3RvcjxJbnRSZWN0PiYgb3V0UGFnZXMsIGludCYgb3V0UGFnZUhlaWdodCk7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
Y3BwCmluZGV4IGI4MWFmZDU3OWU4MjkzZWVmYTJiYTkzYjliYjU1YzFmNTA3NmNmNDcuLjgwOTJm
YjEzZmIwNjVlNjE5NTgyYjY5NzRhOTQ4ZmMxZDNhYzkwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0ltYWdlLmNwcApAQCAtMjgsNiArMjgsMTYgQEAKIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCiAKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgi
CisjaW5jbHVkZSAiRnJhbWVTbmFwc2hvdC5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJhbmdl
LmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBEcmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9N
YXhTaXplKERyYWdJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKQEAgLTU4LDE0ICs2OCwyMDEgQEAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJ
bWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUs
IGMKICAgICAgICAgc2NhbGV4ICo9IHJlc2l6ZVJhdGlvOwogICAgICAgICBzY2FsZXkgKj0gcmVz
aXplUmF0aW87CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHNjYWxlRHJhZ0ltYWdlKGltYWdl
LCBGbG9hdFNpemUoc2NhbGV4LCBzY2FsZXkpKTsKIH0KIAorRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZvclJhbmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UqIHJhbmdlLCBib29sIGZvcmNlQmxh
Y2tUZXh0KQoreworICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2
aW9yU2VsZWN0aW9uT25seSB8IChmb3JjZUJsYWNrVGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJs
YWNrVGV4dCA6IDApKTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAg
ICBSZW5kZXJWaWV3KiB2aWV3ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCF2
aWV3KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFBvc2l0aW9uIHN0YXJ0ID0gcmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKTsKKyAgICBQb3NpdGlvbiBjYW5kaWRhdGUgPSBzdGFydC5kb3du
c3RyZWFtKCk7CisgICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0
ZS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICBzdGFydCA9IGNhbmRpZGF0
ZTsKKworICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlLT5lbmRQb3NpdGlvbigpOworICAgIGNhbmRp
ZGF0ZSA9IGVuZC51cHN0cmVhbSgpOworICAgIGlmIChjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUo
KSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgZW5k
ID0gY2FuZGlkYXRlOworCisgICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8IGVuZC5pc051bGwoKSB8
fCBzdGFydCA9PSBlbmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVuZGVyT2Jq
ZWN0KiBzYXZlZFN0YXJ0UmVuZGVyZXI7CisgICAgaW50IHNhdmVkU3RhcnRPZmZzZXQ7CisgICAg
UmVuZGVyT2JqZWN0KiBzYXZlZEVuZFJlbmRlcmVyOworICAgIGludCBzYXZlZEVuZE9mZnNldDsK
KyAgICB2aWV3LT5nZXRTZWxlY3Rpb24oc2F2ZWRTdGFydFJlbmRlcmVyLCBzYXZlZFN0YXJ0T2Zm
c2V0LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZlZEVuZE9mZnNldCk7CisKKyAgICBSZW5kZXJPYmpl
Y3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwor
ICAgIGlmICghc3RhcnRSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBS
ZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyID0gZW5kLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVy
KCk7CisgICAgaWYgKCFlbmRSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICB2aWV3LT5zZXRTZWxlY3Rpb24oc3RhcnRSZW5kZXJlciwgc3RhcnQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSwgZW5kUmVuZGVyZXIsIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBS
ZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisgICAgRHJhZ0ltYWdlUmVmIHJlc3VsdCA9IGNy
ZWF0ZURyYWdJbWFnZUZvclJlY3QoZnJhbWUsIHZpZXctPnNlbGVjdGlvbkJvdW5kcygpLCBmYWxz
ZSk7CisgICAgdmlldy0+c2V0U2VsZWN0aW9uKHNhdmVkU3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFy
dE9mZnNldCwgc2F2ZWRFbmRSZW5kZXJlciwgc2F2ZWRFbmRPZmZzZXQsIFJlbmRlclZpZXc6OlJl
cGFpbnROb3RoaW5nKTsKKworICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWlu
dEJlaGF2aW9yTm9ybWFsKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRm9yUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdl
UmVjdCwgYm9vbCBpbmNsdWRlU2VsZWN0aW9uKQoreworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
YnVmZmVyID0gY3JlYXRlSW1hZ2VGcm9tRnJhbWVSZWN0KGZyYW1lLCBpbWFnZVJlY3QsIGluY2x1
ZGVTZWxlY3Rpb24sIHRydWUpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNv
cHlJbWFnZSgpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0
KCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKK30KKworRHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUZvckltYWdlKEZyYW1lJiBmcmFtZSwgTm9kZSogbm9kZSwgSW50UmVjdCYg
aW1hZ2VSZWN0LCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKK3sKKyAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIE1hcmsgZHJhZ2dlZCBub2RlcyB0byBmb3JjZSBkcmFn
LXNwZWNpZmljIHN0eWxlIHJlY2FsY3VsYXRpb24uCisgICAgcmVuZGVyZXItPnVwZGF0ZURyYWdT
dGF0ZSh0cnVlKTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKworICAg
IC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2lu
YWwgUmVuZGVyRWxlbWVudC4KKyAgICByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAg
aWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBMYXlvdXRSZWN0
IHRvcExldmVsUmVjdDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7CisKKyAgICBp
ZiAocGFpbnRpbmdSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1
Yi10cmVlIGRyYXdpbmcgbW9kZQorICAgIERyYWdJbWFnZVJlZiByZXN1bHQgPSBjcmVhdGVEcmFn
SW1hZ2VGb3JSZWN0KGZyYW1lLCBwYWludGluZ1JlY3QpOworICAgIHJlbmRlcmVyLT51cGRhdGVE
cmFnU3RhdGUoZmFsc2UpOworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwor
ICAgIGZyYW1lLnZpZXcoKS0+c2V0Tm9kZVRvRHJhdyhudWxscHRyKTsKKworICAgIGVsZW1lbnRS
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdCh0b3BMZXZlbFJlY3QpOworICAgIGltYWdlUmVjdCA9
IHBhaW50aW5nUmVjdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgIVBMQVRGT1JNKFdJ
TikKK3N0cnVjdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgeworICAgIFNjb3BlZEZyYW1lUGFp
bnRpbmdTdGF0ZShGcmFtZSYgZnJhbWUsIE5vZGUqIG5vZGUpCisgICAgOiBmcmFtZShmcmFtZSkK
KyAgICAsIG5vZGUobm9kZSkKKyAgICAsIHBhaW50QmVoYXZpb3IoZnJhbWUudmlldygpLT5wYWlu
dEJlaGF2aW9yKCkpCisgICAgLCBiYWNrZ3JvdW5kQ29sb3IoZnJhbWUudmlldygpLT5iYXNlQmFj
a2dyb3VuZENvbG9yKCkpCisgICAgeworICAgICAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+cmVu
ZGVyZXIoKSk7CisgICAgICAgIGlmIChub2RlKQorICAgICAgICAgICAgbm9kZS0+cmVuZGVyZXIo
KS0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOworICAgIH0KKworICAgIH5TY29wZWRGcmFtZVBhaW50
aW5nU3RhdGUoKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSkK
KyAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURyYWdTdGF0ZShmYWxzZSk7Cisg
ICAgICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKKyAg
ICAgICAgZnJhbWUudmlldygpLT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xv
cik7CisgICAgICAgIGZyYW1lLnZpZXcoKS0+c2V0Tm9kZVRvRHJhdyhudWxscHRyKTsKKyAgICB9
CisKKyAgICBGcmFtZSYgZnJhbWU7CisgICAgTm9kZSogbm9kZTsKKyAgICBQYWludEJlaGF2aW9y
IHBhaW50QmVoYXZpb3I7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yOworfTsKKworRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckZyYW1lU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgYm9v
bCBmb3JjZUJsYWNrVGV4dCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZm9yY2VCbGFja1RleHQpOwor
CisgICAgaWYgKCFmcmFtZS5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgY29uc3QgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKGZyYW1l
LCBudWxscHRyKTsKKyAgICBmcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhh
dmlvclNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQgPyBQYWludEJlaGF2aW9yRm9yY2VC
bGFja1RleHQgOiAwKSk7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisK
KyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoZnJhbWUuc2VsZWN0
aW9uKCkuYm91bmRzKCkpOworCisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOworICAg
IGlmIChmcmFtZS5wYWdlKCkpCisgICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gZnJhbWUucGFn
ZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIHBhaW50aW5nUmVjdC5zZXRXaWR0aChwYWlu
dGluZ1JlY3Qud2lkdGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBwYWludGluZ1JlY3Qu
c2V0SGVpZ2h0KHBhaW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKKwor
ICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRp
bmdSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsK
KyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYnVmZmVyLT5j
b250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkp
OworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1Jl
Y3QubWF4WCgpLCBwYWludGluZ1JlY3QubWF4WSgpKSk7CisKKyAgICBmcmFtZS52aWV3KCktPnBh
aW50Q29udGVudHMoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7CisKKyAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoKTsKKyAgICByZXR1cm4gY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oKSk7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiBm
cmFtZSwgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgY29uc3QgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0
YXRlKGZyYW1lLCBub2RlKTsKKworICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihz
dGF0ZS5wYWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVy
cyk7CisKKyAgICAvLyBXaGVuIGdlbmVyYXRpbmcgdGhlIGRyYWcgaW1hZ2UgZm9yIGFuIGVsZW1l
bnQsIGlnbm9yZSB0aGUgZG9jdW1lbnQgYmFja2dyb3VuZC4KKyAgICBmcmFtZS52aWV3KCktPnNl
dEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBmcmFtZS5kb2N1
bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0RyYXco
bm9kZSk7IC8vIEVuYWJsZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZS4KKworICAgIC8v
IERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2luYWwg
cmVuZGVyZXIuCisgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYg
KCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBMYXlvdXRSZWN0IHRv
cExldmVsUmVjdDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJl
Y3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7CisKKyAgICBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciA9IDE7CisgICAgaWYgKGZyYW1lLnBhZ2UoKSkKKyAgICAgICAg
ZGV2aWNlU2NhbGVGYWN0b3IgPSBmcmFtZS5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7Cisg
ICAgcGFpbnRpbmdSZWN0LnNldFdpZHRoKHBhaW50aW5nUmVjdC53aWR0aCgpICogZGV2aWNlU2Nh
bGVGYWN0b3IpOworICAgIHBhaW50aW5nUmVjdC5zZXRIZWlnaHQocGFpbnRpbmdSZWN0LmhlaWdo
dCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZm
ZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZh
Y3RvciwgQ29sb3JTcGFjZURldmljZVJHQikpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGlu
Z1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNs
aXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5tYXhYKCksIHBhaW50aW5nUmVjdC5tYXhZ
KCkpKTsKKworICAgIGZyYW1lLnZpZXcoKS0+cGFpbnRDb250ZW50cyhidWZmZXItPmNvbnRleHQo
KSwgcGFpbnRpbmdSZWN0KTsKKworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNv
cHlJbWFnZSgpOworCisgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24ocmVuZGVyZXItPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwor
I2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCisgICAgb3JpZW50YXRpb25EZXNjcmlw
dGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShyZW5kZXJlci0+c3R5bGUoKS5pbWFnZU9yaWVu
dGF0aW9uKCkpOworI2VuZGlmCisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShp
bWFnZS5nZXQoKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7Cit9CisjZW5kaWYgLy8gIVBMQVRG
T1JNKFdJTikKKwogI2lmICFQTEFURk9STShNQUMpICYmICghUExBVEZPUk0oV0lOKSB8fCBPUyhX
SU5DRSkpCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBT
dHJpbmcmLCBGb250UmVuZGVyaW5nTW9kZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4
IGQ4ZjUyYmNmYWQ0NDI0M2Y4YWNjYjg2NzBhMDk0YWYxMTNjNGIyNGQuLmVhOTM3NzhlZDFkODVi
M2FiMmU5OWVmZDM1YzI3NTkzZGM2NmFmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFn
ZS5oCkBAIC00MSwzOCArNDEsNDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSEJJVE1BUF9fKiBIQklUTUFQ
OwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwogI2VuZGlm
CiAKLS8vV2UgbmVlZCB0byAjZGVmaW5lIFlPZmZzZXQgYXMgaXQgbmVlZHMgdG8gYmUgc2hhcmVk
IHdpdGggV2ViS2l0CisvLyBXZSBuZWVkIHRvICNkZWZpbmUgWU9mZnNldCBhcyBpdCBuZWVkcyB0
byBiZSBzaGFyZWQgd2l0aCBXZWJLaXQKICNkZWZpbmUgRHJhZ0xhYmVsQm9yZGVyWU9mZnNldCAy
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEltYWdlOwotICAgIGNsYXNzIFVS
TDsKK2NsYXNzIEZyYW1lOworY2xhc3MgSW1hZ2U7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgTm9k
ZTsKK2NsYXNzIFJhbmdlOworY2xhc3MgVVJMOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHR5
cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFnZVJlZjsKK3R5cGVkZWYgUmV0YWluUHRy
PE5TSW1hZ2U+IERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKFdJTikKLSAgICB0eXBlZGVm
IEhCSVRNQVAgRHJhZ0ltYWdlUmVmOwordHlwZWRlZiBIQklUTUFQIERyYWdJbWFnZVJlZjsKICNl
bGlmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oTklYKQotICAgIHR5cGVkZWYgY2Fpcm9fc3Vy
ZmFjZV90KiBEcmFnSW1hZ2VSZWY7Cit0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogRHJhZ0ltYWdl
UmVmOwogI2VsaWYgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShCTEFDS0JFUlJZKQotICAgIHR5
cGVkZWYgdm9pZCogRHJhZ0ltYWdlUmVmOwordHlwZWRlZiB2b2lkKiBEcmFnSW1hZ2VSZWY7CiAj
ZW5kaWYKLSAgICAKLSAgICBJbnRTaXplIGRyYWdJbWFnZVNpemUoRHJhZ0ltYWdlUmVmKTsKLSAg
ICAKLSAgICAvL1RoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgbWVtb3J5IG5ldXRyYWwsIGVnLiBp
ZiB0aGV5IHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBpbWFnZSwgCi0gICAgLy90aGV5IHNob3Vs
ZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4gIEFzIGEgY29yb2xsYXJ5IHRoZXNlIG1ldGhvZHMg
ZG9uJ3QgZ3VhcmFudGVlCi0gICAgLy90aGUgaW5wdXQgaW1hZ2UgcmVmIHdpbGwgc3RpbGwgYmUg
dmFsaWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gY2FsbGVkCi0gICAgRHJhZ0ltYWdlUmVmIGZpdERy
YWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1Np
emUsIGNvbnN0IEludFNpemUmIHNpemUpOwotICAgIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFn
ZShEcmFnSW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSk7Ci0gICAgRHJhZ0ltYWdlUmVmIGRpc3Nv
bHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2UsIGZsb2F0IGRlbHRhKTsK
LSAgICAKLSAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKLSAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgRHJh
Z0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJl
bCwgRm9udFJlbmRlcmluZ01vZGUpOwotICAgIHZvaWQgZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFn
ZVJlZik7CisKK0ludFNpemUgZHJhZ0ltYWdlU2l6ZShEcmFnSW1hZ2VSZWYpOworCisvLyBUaGVz
ZSBmdW5jdGlvbnMgc2hvdWxkIGJlIG1lbW9yeSBuZXV0cmFsLCBlZy4gaWYgdGhleSByZXR1cm4g
YSBuZXdseSBhbGxvY2F0ZWQgaW1hZ2UsCisvLyB0aGV5IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1
dCBpbWFnZS4gQXMgYSBjb3JvbGxhcnkgdGhlc2UgbWV0aG9kcyBkb24ndCBndWFyYW50ZWUKKy8v
IHRoZSBpbnB1dCBpbWFnZSByZWYgd2lsbCBzdGlsbCBiZSB2YWxpZCBhZnRlciB0aGV5IGhhdmUg
YmVlbiBjYWxsZWQuCitEcmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFn
ZVJlZiwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW50U2l6ZSYgZHN0U2l6ZSk7CitE
cmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUp
OworRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYs
IGZsb2F0IGRlbHRhKTsKKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJ
bWFnZSosIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7CitEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CitEcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZShGcmFtZSYsIE5vZGUqKTsKK0RyYWdJbWFn
ZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShGcmFtZSYsIFJhbmdlKiwgYm9vbCBmb3JjZUJs
YWNrVGV4dCA9IGZhbHNlKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSZWN0KEZy
YW1lJiwgY29uc3QgSW50UmVjdCYsIGJvb2wgaW5jbHVkZVNlbGVjdGlvbiA9IHRydWUpOworRHJh
Z0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckltYWdlKEZyYW1lJiwgTm9kZSosIEludFJlY3Qm
IGltYWdlUmVjdCwgSW50UmVjdCYgZWxlbWVudFJlY3QpOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZvckZyYW1lU2VsZWN0aW9uKEZyYW1lJiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZh
bHNlKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYsIGNvbnN0IFN0
cmluZyYgbGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlKTsKK3ZvaWQgZGVsZXRlRHJhZ0ltYWdlKERy
YWdJbWFnZVJlZik7CiB9CiAKIAotI2VuZGlmIC8vIURyYWdJbWFnZV9oCisjZW5kaWYgLy8gIURy
YWdJbWFnZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0lt
YWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpp
bmRleCA2M2E1MzU2MGZjOTVkODhiNmZiZjYwNmZjNTZmOTQ0YjMwMjkxYzk0Li41NTZiYzVhNzE5
NzAxZjcyZmRlYzZlMTZhNmRkNmE3YmIyZGI1ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KQEAgLTMyLDkgKzMyLDE1IEBACiAjaW1wb3J0ICJGb250
Q2FjaGUuaCIKICNpbXBvcnQgIkZvbnREZXNjcmlwdGlvbi5oIgogI2ltcG9ydCAiRm9udFNlbGVj
dG9yLmgiCisjaW1wb3J0ICJGcmFtZS5oIgorI2ltcG9ydCAiRnJhbWVTZWxlY3Rpb24uaCIKKyNp
bXBvcnQgIkZyYW1lVmlldy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW1wb3J0
ICJJbWFnZS5oIgorI2ltcG9ydCAiTGF5b3V0UmVjdC5oIgogI2ltcG9ydCAiVVJMLmgiCisjaW1w
b3J0ICJOb2RlLmgiCisjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKICNpbXBvcnQgIlJlc291cmNl
UmVzcG9uc2UuaCIKICNpbXBvcnQgIlN0cmluZ1RydW5jYXRvci5oIgogI2ltcG9ydCAiVGV4dFJ1
bi5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAppbmRl
eCAzMWEzMmU0YzNjMDI1M2U4MTU3ZTg0ODViZDEzYjVhMTFjZWVhNDdlLi42ZDU3YTAxNTk4ODRl
Yjg4YjJkMDdjOGUzZmQxMzU5NTU3YWY2YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRHJhZ0ltYWdlV2luLmNwcApAQCAtMjYsMTYgKzI2LDIzIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5j
bHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJMYXlvdXRSZWN0Lmgi
CisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUg
IlN0cmluZ1RydW5jYXRvci5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJXZWJDb3JlVGV4dFJlbmRlcmVyLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CkBAIC0xMjEsNiArMTI4LDMy
IEBAIHN0YXRpYyBGb250IGRyYWdMYWJlbEZvbnQoaW50IHNpemUsIGJvb2wgYm9sZCwgRm9udFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitEcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yRnJhbWVTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBi
b29sIGZvcmNlQmxhY2tUZXh0KQoreworICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5pc1Jhbmdl
KCkpCisgICAgICAgIHJldHVybiBpbWFnZUZyb21TZWxlY3Rpb24oJmZyYW1lLCBmb3JjZUJsYWNr
VGV4dCkubGVhaygpOworCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0RyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiBmcmFtZSwgTm9kZSogbm9kZSkKK3sKKyAgICBm
cmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKworICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgSW50UmVj
dCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jv
b3RSZWN0KHRvcExldmVsUmVjdCkpOworCisgICAgZnJhbWUudmlldygpLT5zZXROb2RlVG9EcmF3
KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUKKyAgICBHRElP
YmplY3Q8SEJJVE1BUD4gcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdCgmZnJhbWUsIHBhaW50aW5nUmVj
dCk7CisgICAgZnJhbWUudmlldygpLT5zZXROb2RlVG9EcmF3KG51bGxwdHIpOworCisgICAgcmV0
dXJuIHJlc3VsdC5sZWFrKCk7Cit9CisKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlIGZv
bnRSZW5kZXJpbmdNb2RlKQogewogICAgIC8vIFRoaXMgaXMgbW9yZSBvciBsZXNzIGFuIGV4YWN0
IG1hdGNoIGZvciB0aGUgTWFjIE9TIFggY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0KaW5kZXggNWRmZjZmMGZlOWMxZDlmMmRlNGExZTEx
OTNhNWVmYjQ0NjJkMDc5MS4uNmE0OTMzNjM0MWM4OWM1MGE4YzEyZTkxMGUxMTg3YTQ4ZmQ4NzYz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1Mu
bW0KQEAgLTMwLDEwICszMCwxMCBAQAogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0ltYWdlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9GcmFtZVNlbGVjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNuYXBzaG90dGlu
Z01hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9odG1sZWRpdGluZy5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNDg2MjgwZTQ3YjZhNTVkNjkz
Zjg0YTM1MTQyZGEzMzhlMmJmNzliZi4uZTY4NjVkOGMzMDExMjlhNjE4NWI3MGVmOGY0NjI4OTk5
MjM0M2ExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC04
NSw2ICs4NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0RyYWdDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RyYWdJbWFnZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yRGVsZXRlQWN0aW9u
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KQEAgLTk1LDcgKzk2LDYgQEAKICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWVT
bmFwc2hvdHRpbmdNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CkBAIC0xODIwLDcgKzE4MjAsMTIgQEAgc3RhdGljIGJvb2wgbW91c2VFdmVudElzUGFydE9mQ2xp
Y2tPckRyYWcoTlNFdmVudCAqZXZlbnQpCiB7CiAgICAgaWYgKCFbc2VsZiBfaGFzU2VsZWN0aW9u
XSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBOU0ltYWdlICpkcmFnSW1hZ2UgPSBzZWxlY3Rp
b25JbWFnZShjb3JlKFtzZWxmIF9mcmFtZV0pKTsKKworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKFtzZWxmIF9mcmFtZV0pOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gW2NyZWF0ZURyYWdJbWFnZUZvckZyYW1l
U2VsZWN0aW9uKCpjb3JlRnJhbWUpIGF1dG9yZWxlYXNlXTsKICAgICBbZHJhZ0ltYWdlIF93ZWJf
ZGlzc29sdmVUb0ZyYWN0aW9uOldlYkRyYWdJbWFnZUFscGhhXTsKICAgICByZXR1cm4gZHJhZ0lt
YWdlOwogfQpAQCAtNTk2NSw3ICs1OTcwLDExIEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxp
bmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiB7
CiAgICAgaWYgKCFbc2VsZiBfaGFzU2VsZWN0aW9uXSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICByZXR1cm4gc2VsZWN0aW9uSW1hZ2UoY29yZShbc2VsZiBfZnJhbWVdKSwgZm9yY2VCbGFja1Rl
eHQpOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CisgICAg
aWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFtjcmVhdGVE
cmFnSW1hZ2VGb3JGcmFtZVNlbGVjdGlvbigqY29yZUZyYW1lLCBmb3JjZUJsYWNrVGV4dCkgYXV0
b3JlbGVhc2VdOwogfQogCiAtIChOU1JlY3Qpc2VsZWN0aW9uSW1hZ2VSZWN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9ET01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXggY2NiZDcxOTAxZTQ1NTc5MDMxYjkwMmJhNTZhODk0
ZTZhOGQ3OWNiMy4uNGI3ZjNhNTU4YTMxMDFjOWFkZDM3ZmM5YmY4Yzk3ZDM5YTJiYjViMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvdy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdJbWFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9u
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NpbXBs
ZUZvbnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxO
YW1lcy5oPgpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZUxpc3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
bmRlclRyZWVBc1RleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZUZvbnREYXRhLmg+CiAK
ICNpbmNsdWRlIDxpbml0Z3VpZC5oPgogLy8gezNCMEMwRUZGLTQ3OEItNGIwYi04MjkwLUQyMzIx
RTA4RTIzRX0KQEAgLTEyNzksNyArMTI4MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
RE9NRWxlbWVudDo6cmVuZGVyZWRJbWFnZShIQklUTUFQKiBpbWFnZSkKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKmltYWdlID0gZnJhbWUtPm5vZGVJbWFn
ZShtX2VsZW1lbnQpOworICAgICppbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoKmZyYW1l
LCBtX2VsZW1lbnQpOwogICAgIGlmICghKmltYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216943</attachid>
            <date>2013-11-14 08:53:56 -0800</date>
            <delta_ts>2013-11-14 10:08:48 -0800</delta_ts>
            <desc>v1.2</desc>
            <filename>bug-124325-20131114085355.patch</filename>
            <type>text/plain</type>
            <size>70379</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThmMzdhYTc5OWNiZmI0
MzI3OTEzZWE4ZjIzNzA0YzE2YzE2OTk2MC4uNmE2MGE1MzkwZGRmM2MxNmRmNTFiMTQ4YWQ3ZTk0
N2ZiY2I0MTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEzLTExLTEzICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc2NyZWVuc2hvdCBjb2xsZWN0
aW9uIGNvZGUgaXMgc3ByZWFkIGJldHdlZW4gRnJhbWUsCisgICAgICAgIEZyYW1lU25hcHNob3R0
aW5nLCBhbmQgcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGZvcgorICAgICAgICBl
YWNoLiBBbGwgb2YgdGhpcyBjb2RlIGlzIG5vdyBsb2NhdGVkIHdpdGggRHJhZ0ltYWdlIGZ1bmN0
aW9ucywKKyAgICAgICAgYXMgYWxtb3N0IGFsbCB1c2VzIG9mIHNuYXBzaG90cyBhcmUgdXNlZCBm
b3IgZHJhZ2dpbmcgZWZmZWN0cy4KKworICAgICAgICBGb3IgaW5zcGVjdG9yIGNsaWVudHMgdG8g
YmUgYWJsZSB0byBlbmNvZGUgdGhlc2Ugc2NyZWVuc2hvdHMgd2l0aAorICAgICAgICB0aGUgcGxh
dGZvcm0tc3BlY2lmaWMgYmFzZTY0IGVuY29kZXIgcHJvdmlkZWQgYnkKKyAgICAgICAgSW1hZ2VC
dWZmZXI6OnRvRGF0YVVSTCwgd2UgYWRkIGEgdGhpbiB3cmFwcGVyIHRvIGJyZWFrCisgICAgICAg
IGRlcGVuZGVuY2llcyBvbiB0aGUgSW1hZ2VCdWZmZXIgaGVhZGVyIGFzIHdlbGwuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGlzIGlzIGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTS5tbToKKyAgICAgICAgKFdl
YkNvcmU6Omxvb2t1cEVsZW1lbnRDbGFzcyk6CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJ
bWFnZV0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4
dDpdKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAg
ICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRy
b2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWVTbmFwc2hvdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTbmFw
c2hvdDo6RnJhbWVTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNuYXBzaG90Ojp+
RnJhbWVTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNuYXBzaG90OjpjcmVhdGVG
cm9tUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUZyb21GcmFtZVJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTbmFwc2hvdDo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lU25hcHNob3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNuYXBz
aG90OjpidWZmZXIpOgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lTWFjLm1tOiBSZW1vdmVkLgor
ICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMubW06IFJlbW92ZWQuCisgICAgICAg
ICogcGFnZS93aW4vRnJhbWVXaW4uY3BwOgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmg6
CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
dERyYWdJbWFnZVRvTWF4U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6flNjb3BlZEZyYW1l
UGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JGcmFt
ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAgICAgICAqIHBs
YXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6Zm9udEZyb21OU0ZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6
d2lkdGhXaXRoRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3QXRQb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpkcmF3RG91YmxlZEF0UG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yRnJh
bWVTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKToKKwogMjAxMy0xMS0x
MyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJlbmFtZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIHRvIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggMTQ5M2MyYmYxZDhiNWIx
MDU0NzUxY2EzOTQxY2M2YTg5ZTBiM2QyNi4uN2QzNGFhY2EwNDFmYmVhNjYzM2RkNjA3Y2RkNTlj
MTdmYTZiOTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTExLTEz
ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25z
b2xpZGF0ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVJT1MubW06IHVzZSBuZXcgaGVhZGVyIGZpbGUuCisKIDIwMTMtMTEtMDcgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYSBQTEFURk9S
TShJT1MpIGZyb20gV2ViS2l0IFByaXZhdGUgSGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNTIz
MDE2MTFkZDExMTY1ZDQ2NDBmZGUxOWYzNzllNjVkNTZmMTc1ZC4uMWZlNDQ4YzQxOGM1OTVmYmFm
MzliNzA2NmM5MTIxNzg2Njc4ZjdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDEzLTExLTEzICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKwor
ICAgICAgICBDb25zb2xpZGF0ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBuZXcg
cGxhdGZvcm0taW5kZXBlbmRlbnQgbWV0aG9kcyBpbnN0ZWFkIG9mIE1hYyBtZXRob2RzLgorCisg
ICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
X3NlbGVjdGlvbkRyYWdnaW5nSW1hZ2VdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2VsZWN0
aW9uSW1hZ2VGb3JjaW5nQmxhY2tUZXh0Ol0pOgorCiAyMDEzLTExLTEzICBHb3Jkb24gU2hlcmlk
YW4gIDxnb3Jkb25fc2hlcmlkYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZWQgZGVwcmVj
YXRlZCBkb3dubG9hZCBkZWxlZ2F0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZGUxYTgzYzdjMjlm
ZWI2OGEwZDJmNzYzNjg2MjIwOGQ3MzczMjE2MS4uNzU5YTYzZDE4MTg5MDNmZmIzODU4NjBiNTZm
YzNlYzQzMDEzYjUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTEx
LTE0ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBD
b25zb2xpZGF0ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NQ29yZUNsYXNzZXMu
Y3BwOgorICAgICAgICAoRE9NRWxlbWVudDo6cmVuZGVyZWRJbWFnZSk6IHVzZSBjcmVhdGVEcmFn
SW1hZ2VGb3JOb2RlLgorCiAyMDEzLTExLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dpbkNhaXJvXSBQcmVwYXJhdGlvbiBmb3IgRU5B
QkxFKFZJREVPKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDFkZTA3MmJlODljYmI5YWE2ODc2
NmU4YTJlNWYxYjYyZDBkYjJiZi4uYTc2MDBlZDA0MzFhZjIxNmEwYjlhYWVhZTkwMWFjMGYwMmNl
ZjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3MjIsNiArMTcyMiw3IEBAIHNldChXZWJD
b3JlX1NPVVJDRVMKICAgICBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKICAgICBwYWdlL0ZyYW1l
LmNwcAogICAgIHBhZ2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcAorICAgIHBhZ2UvRnJh
bWVTbmFwc2hvdC5jcHAKICAgICBwYWdlL0ZyYW1lVHJlZS5jcHAKICAgICBwYWdlL0ZyYW1lVmll
dy5jcHAKICAgICBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IGVjMDc5NTFiZDdlOWUzNmI3YTA4YTY3MTJmNzRkNTAzOTRkNzNm
NGUuLjhiYWZlZmM3YzEyNmUxNTg0MzAzODc3NThhYTIxZDg1YTQwYjcwNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDEwOSw2ICs0MTA5LDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90LmggXAogCVNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVRyZWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggMTQyNDJiMzIxMmY5ZjRhZTFkOGIzZDM2MjI1NTIzZWU3ODE2ODIx
ZS4uZTI2ZDhhYWRlMzVkOTNkNTVmMzczYjkyYWIzZmFiZmMxMjRlMzVmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTI1Myw2ICsyNTMsOSBAQCBfX1pON1dlYkNvcmUxM0FYT2JqZWN0Q2FjaGU0
MmdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZEUKIF9fWk43V2ViQ29y
ZTEzQ2hhcmFjdGVyRGF0YTdzZXREYXRhRVJLTjNXVEY2U3RyaW5nRVJpCiBfX1pON1dlYkNvcmUx
M0NvbnRhaW5lck5vZGUxMWFwcGVuZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVF
UmlOU18xNEF0dGFjaEJlaGF2aW9yRQogX19aTjdXZWJDb3JlMTNDb250YWluZXJOb2RlMTFyZW1v
dmVDaGlsZEVQTlNfNE5vZGVFUmkKK19fWk43V2ViQ29yZTEzRnJhbWVTbmFwc2hvdDE0Y3JlYXRl
RnJvbVJlY3RFUk5TXzVGcmFtZUVSS05TXzdJbnRSZWN0RWJiCitfX1pON1dlYkNvcmUxM0ZyYW1l
U25hcHNob3Q5dG9EYXRhVVJMRVJLTjNXVEY2U3RyaW5nRVBkCitfX1pON1dlYkNvcmUxM0ZyYW1l
U25hcHNob3REMUV2CiBfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxMXNldENoaWxkcmVuRVJL
TjNXVEY2VmVjdG9ySVBTMF9MbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNv
cmUxM0dyYXBoaWNzTGF5ZXIxMnJlcGxhY2VDaGlsZEVQUzBfUzFfCiBfX1pON1dlYkNvcmUxM0dy
YXBoaWNzTGF5ZXIxMnNldFpQb3NpdGlvbkVmCkBAIC00MjcsNyArNDMwLDYgQEAgX19aTjdXZWJD
b3JlMTRjb29raWVzRW5hYmxlZEVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VS
TEVTNV8KIF9fWk43V2ViQ29yZTE0ZGVjb2RlSG9zdE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJD
b3JlMTRlbmNvZGVIb3N0TmFtZUVQOE5TU3RyaW5nCiBfX1pON1dlYkNvcmUxNGVuZE9mUGFyYWdy
YXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1
bGVFCi1fX1pON1dlYkNvcmUxNHNlbGVjdGlvbkltYWdlRVBOU181RnJhbWVFYgogX19aTjdXZWJD
b3JlMTRzZXRNZXRhZGF0YVVSTEVSTjNXVEY2U3RyaW5nRVJLUzFfUzRfCiBfX1pON1dlYkNvcmUx
NUFmZmluZVRyYW5zZm9ybTVmbGlwWUV2CiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVz
Y2FsZUVkCkBAIC05MDEsNiArOTAzLDcgQEAgX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5j
b2RpbmdXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBvdmVycmlk
ZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNFUktOM1dURjZWZWN0b3JJTlMwXzZTdHJpbmdFTG0wRU5T
MF8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMzFDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlNWVtcHR5RXYKIF9fWk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZTZzaGFyZWRFdgorX19aTjdXZWJDb3JlMzJjcmVhdGVEcmFnSW1hZ2VGb3JGcmFt
ZVNlbGVjdGlvbkVSTlNfNUZyYW1lRWIKIF9fWk43V2ViQ29yZTMzc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMzdXaWRnZXRIaWVy
YXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlMTFtb3ZlV2lkZ2V0c0V2CiBfX1pON1dlYkNvcmUz
N1dpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUzNXNfd2lkZ2V0SGllcmFyY2h5
VXBkYXRlU3VzcGVuZENvdW50RQpAQCAtMjAzMiw3ICsyMDM1LDYgQEAgX19aTjdXZWJDb3JlMzhj
b250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CiBfX1pON1dlYkNvcmU0MmNv
bnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZ0V2CiBfX1pON1dlYkNvcmU0
MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZ0V2CiBfX1pON1dlYkNv
cmU0NmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHlFdgotX19a
TjdXZWJDb3JlNUZyYW1lOW5vZGVJbWFnZUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmU2Q3Vyc29y
OGZyb21UeXBlRU5TMF80VHlwZUUKIF9fWk43V2ViQ29yZTZDdXJzb3JDMUVQTlNfNUltYWdlRVJL
TlNfOEludFBvaW50RQogX19aTjdXZWJDb3JlNkN1cnNvckMxRVJLUzBfCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA5ZjdkNjA5YTdjYWQx
NGY1NTg3MDQ0NDFhMjRlYmE4MTczNTBmMWI1Li4zY2RiZjJiNmE1MjMxYmM3NjA1MWU0NjA1ZDEx
YzMzZTE0M2IxMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2oKQEAgLTY5ODMsNiArNjk4Myw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwYWdlXEZvY3VzQ29udHJvbGxlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwYWdlXEZyYW1lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2Vc
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwYWdlXEZyYW1lVHJlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdl
XEZyYW1lVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEdyb3Vw
U2V0dGluZ3MuY3BwIiAvPgpAQCAtMTg3ODAsNiArMTg3ODEsNyBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGFnZVxGb2N1c0RpcmVjdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGFnZVxGcmFtZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFn
ZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGFnZVxGcmFtZVRyZWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJh
bWVWaWV3LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEdyb3VwU2V0dGlu
Z3MuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBhNDgxNDJlOGJhZGY2NWIxNDU3MDI5MTk5OGQ5NGY4
YTQzOGJmMzFjLi5jNTg0NjQ0NWMyMTQyYTU1MGU4MjczYTdhM2UwY2E5ZjhkMTBkNzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCkBAIC03MTcsNiArNzE3LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhZ2U8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBh
Z2VcRnJhbWVTbmFwc2hvdC5jcHAiPgorICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5j
cHAiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03
NjA4LDYgKzc2MTEsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURl
c3RydWN0aW9uT2JzZXJ2ZXIuaCI+CiAgICAgICA8RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hv
dC5oIj4KKyAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuaCI+CiAgICAgICA8RmlsdGVy
PnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMmE2NTEzMTJlZDU3ZGMxNjYw
OWEwMzMyOTI5ODlkZmJkYWRkOTU1Li5hNDY2NjI2M2JjYjRkMWIzNDI0ZWQwNjk3MGQwM2I3N2U5
MzEwZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yMDAwLDcgKzIwMDAsNiBAQAogCQk2NUEyMTQ4NTA5N0EzRjUzMDBCOTA1
MEEgLyogRnJhbWVUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVCRjAyMkUwOTc0ODE2
MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1QkYwMjI5MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgKi87IH07
CiAJCTY1QkYwMjJGMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2IC8q
IEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCRjAyM0MwOTc0ODE5MDAwQzQzMTk2
IC8qIEZyYW1lTWFjLm1tICovOyB9OwogCQk2NUM5N0FGMzA4RUE5MDg4MDBBQ0QyNzMgLyogY29u
ZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUM5
N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi87IH07CiAJCTY1Q0JGRUY5MDk3NEY2
MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5j
cHAgKi87IH07CiAJCTY1Q0JGRUZBMDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY4MDk3NEY2
MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjIwMSw4ICsyMjAwLDYgQEAKIAkJN0M1MzQzRkMxN0I3NEI2
MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQTE3Qjc0QjYzMDA0MjMyRjAg
LyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJN0M1MzQzRkQxN0I3NEI2
MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MzQzRkIxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oICovOyB9OwogCQk3Q0M3RTNENzE3MjA4QzBGMDAz
QzUyNzcgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDN0UzRDYxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNj
cmlwdFdoaXRlTGlzdC50eHQgKi87IH07Ci0JCTdDRTMwREE5MTcxQjYzRDIwMEVDMzNFMSAvKiBG
cmFtZVNuYXBzaG90dGluZ01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDRTMwREE3MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGlu
Z01hYy5tbSAqLzsgfTsKLQkJN0NFMzBEQUExNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNo
b3R0aW5nTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0UzMERBODE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RDc0MUJEQTE3
NzIyNkFBMDA4NTkxNzAgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIENvcHkgR2VuZXJhdGVkIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxNDgwOUQxMzA0
MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCAqLzsgfTsKIAkJN0UxMkU5MEYxNUZBNUQz
QTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMTJFOTBEMTVGQTVEM0EwMDVFNDEyNiAv
KiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi87IH07CiAJCTdFMTJFOTEwMTVGQTVEM0Ew
MDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMTJFOTBFMTVGQTVEM0EwMDVFNDEyNiAv
KiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCAqLzsgfTsKQEAgLTUyMzgsNiArNTIzNSw4
IEBACiAJCUMzQ0YxN0E1MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMTE1QjAw
NjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMzQ0YxN0E2MTVCMDA2M0YwMDI3NkQzOSAvKiBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTIxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeS5jcHAgKi87IH07CiAJCUMzQ0YxN0E3MTVCMDA2M0YwMDI3NkQzOSAvKiBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDNENENjI5MjE4MzQ2QkVBMDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNENENjI5MDE4MzQ2
QkVBMDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdC5jcHAgKi87IH07CisJCUM0Q0Q2MjkzMTgzNDZC
RUEwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNENENjI5MTE4MzQ2QkVBMDA3RUJBRjEgLyogRnJhbWVTbmFw
c2hvdC5oICovOyB9OwogCQlDNTBCNTYxNjEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5n
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBC
NTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi87IH07CiAJCUM1MEI1
NjE3MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBCNTYxNTEyMTE5RDIzMDA4QjQ2RTAgLyog
R3JvdXBTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUM1MEQwRTgyMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEQwRTgw
MEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCAqLzsgfTsKQEAgLTg3MzAs
NyArODcyOSw2IEBACiAJCTY1QTY0MEYwMDUzM0JCMUYwMDg1RTc3NyAvKiBCbG9ja0V4Y2VwdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QmxvY2tFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQk2NUJGMDIyOTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRnJhbWVNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAv
KiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgdXNl
c1RhYnMgPSAwOyB9OwogCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVZpZXcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyog
RnJhbWVWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVZpZXcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5NTgsOCArODk1Niw2IEBACiAJCTdD
NjEzNkY4MTcxMEMzNTIwMEZGNEE1NyAvKiBJbkZpbGVzUGFyc2VyLnBtICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFt
ZSA9IEluRmlsZXNQYXJzZXIucG07IHBhdGggPSBzY3JpcHRzL0luRmlsZXNQYXJzZXIucG07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNjEzNkY5MTcxMEMzNTIwMEZGNEE1NyAvKiBT
dGF0aWNTdHJpbmcucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gU3RhdGljU3RyaW5nLnBtOyBwYXRoID0g
c2NyaXB0cy9TdGF0aWNTdHJpbmcucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
QzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IElETlNjcmlwdFdoaXRlTGlzdC50eHQ7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTdDRTMwREE3MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGlu
Z01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZyYW1lU25h
cHNob3R0aW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0UzMERBODE3
MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVTbmFwc2hvdHRpbmdNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0UxMkU5MEQxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1l
c2hHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvci5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMTJFOTBFMTVGQTVEM0EwMDVF
NDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwOyBwYXRoID0g
ZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVyZ2VQcmlvcml0eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIyNjMsNiArMTIyNTksOCBAQAogCQlDM0NGMTdBMTE1
QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMzQ0YxN0EyMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzNDRjE3QTMx
NUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRDRDYyOTAxODM0NkJFQTAwN0VCQUYxIC8qIEZyYW1l
U25hcHNob3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVT
bmFwc2hvdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0Q0Q2MjkxMTgzNDZC
RUEwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZyYW1lU25hcHNob3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUw
QjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyb3VwU2V0dGluZ3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0
b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTU4
Nyw2ICsxNTU4NSw4IEBACiAJCQkJNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmgg
Ki8sCiAJCQkJOTc0QTg2MjAxNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5jcHAgKi8sCiAJCQkJOTc0QTg2MjExNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlci5oICovLAorCQkJCUM0Q0Q2MjkwMTgzNDZCRUEwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90LmNwcCAqLywKKwkJCQlDNENENjI5MTE4MzQ2QkVBMDA3RUJBRjEgLyogRnJhbWVT
bmFwc2hvdC5oICovLAogCQkJCTY1QTIxNDgyMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUu
Y3BwICovLAogCQkJCTY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLywK
IAkJCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAqLywKQEAgLTE2
NTAxLDkgKzE2NTAxLDYgQEAKIAkJCQlBQkFGMjIwNzBDMDNCMUM3MDBCMEJDRjAgLyogQ2hyb21l
TWFjLm1tICovLAogCQkJCUE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxl
ck1hYy5tbSAqLywKIAkJCQk5M0MwOUE3RTBCMDY0RUVGMDA1QUJENEQgLyogRXZlbnRIYW5kbGVy
TWFjLm1tICovLAotCQkJCTY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAq
LywKLQkJCQk3Q0UzMERBODE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMu
aCAqLywKLQkJCQk3Q0UzMERBNzE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdN
YWMubW0gKi8sCiAJCQkJMUMyNjQ5N0IwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3BwICov
LAogCQkJCUUxQzJGMjQ4MTUzM0EyMTIwMDgzRjk3NCAvKiBTZXR0aW5nc01hYy5tbSAqLywKIAkJ
CQlGNTg3ODU0QzAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUZyYW1lVmlldy5oICovLApAQCAt
MjI0MDEsNiArMjIzOTgsNyBAQAogCQkJCThBMTJFMzVEMTFGQTMzMjgwMDI1ODM2QSAvKiBEb2N1
bWVudExvYWRUaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUVEMkJBODNDMDlBMjRCOTEwMDZD
MEFDNCAvKiBEb2N1bWVudE1hcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UwNTdGQTYxMjIw
NzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQzRDRDYyOTMxODM0NkJFQTAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0OTQ3RkZFMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9yZGVyZWRN
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1
bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwNTg1MjkxN0ZERTAyQzAwNUYyQkNC
IC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTIyOTQ4LDcg
KzIyOTQ2LDYgQEAKIAkJCQk2MjhEMjE0RTEyMTMxRUY0MDA1NURDRkMgLyogRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNzAxODBGMjg5NTAwRkJBREI5
IC8qIENyeXB0b0tleVVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwRTA5OUU2NDky
MDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTdDRTMwREFB
MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTcyMDVBQjAxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERpcmVjdG9yeURvY3Vt
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjI0LDEwICsyNjIyMSw4IEBACiAJCQkJOTMyRTE2
MDkwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkJBNzY2RTE2NjQyN0E4MDA1QkU1RDEgLyogRnJhbWVMb2Fk
UmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NUJGMDI0NTA5NzQ4MTkwMDBDNDMxOTYg
LyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwRDA5OUU2NDkyMDA1NkU1
ODEgLyogRnJhbWVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEE4Qzk2RUIwQkU2
OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
N0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDc5NjlEQUQxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDRGF0YUNoYW5u
ZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUEyMTQ4NDA5N0EzRjUzMDBCOTA1MEEg
LyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzkxQTEwMTgwMjM0MzkwMEEx
N0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2OTc1LDYgKzI2
OTcwLDcgQEAKIAkJCQlCMkZBM0Q5QTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdHRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjdCMjgyNzBDRUYwQzA3MDBEMzlENTQgLyogSlNTVkdH
bHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTExODFBMUNEQzAwQzA3
NEE1IC8qIEFWQXVkaW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzRDRDYy
OTIxODM0NkJFQTAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMjREOTEyOTgxM0NBOTZERTAwRDIxOTE1IC8qIEpTU1ZHR2x5cGhSZWZFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyRkEzRDlDMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0dyYWRp
ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTE3NEVDMkJDQ0FGMTdFQUUzRjQ2
RjggLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NLm1tCmluZGV4IGNjMDM2NTUyNmUzMTZlMDVkNWIxNWJiNzQ0NGMzYmIy
YmNmYTkwNTAuLjUzZGJiZmYzMzRkYTQ3NWIxYjM2MTBkMjUzNGZmYmQ2YzE5MzM1NmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0ICJE
T01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVByaXZhdGUuaCIKICNpbXBvcnQgIkRPTVJh
bmdlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRyYWdJbWFnZS5oIgogI2ltcG9ydCAiRm9udC5oIgog
I2ltcG9ydCAiRnJhbWUuaCIKLSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCiAjaW1w
b3J0ICJIVE1MRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJIVE1M
UGFyc2VySWRpb21zLmgiCkBAIC0yODksNyArMjg5LDcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBr
aXQoV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgIFdlYkNvcmU6OkZyYW1l
KiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBmcmFtZS0+bm9kZUltYWdlKG5vZGUpLmdldCgp
OworICAgIHJldHVybiBbY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZSgqZnJhbWUsIG5vZGUpIGF1dG9y
ZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKXRleHRSZWN0cwpAQCAtMzM1LDcgKzMzNSw3IEBA
IGlkIDxET01FdmVudFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdl
dCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFdl
YkNvcmU6OnJhbmdlSW1hZ2UoZnJhbWUsIHJhbmdlLCBmb3JjZUJsYWNrVGV4dCk7CisgICAgcmV0
dXJuIFtjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSgqZnJhbWUsIHJhbmdlLCBmb3JjZUJsYWNrVGV4
dCkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopdGV4dFJlY3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
bGlwYm9hcmQuY3BwCmluZGV4IDlkMmUyNzUyZmRmMmI3YzY2NDJhMjQyNGY4ODA2M2VjOGE3MWM3
YzguLjgwMzhlNzg0NzA4NTgwODA3MGQ4N2YxYTdmMjllNDNkODBhMzZkZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmQuY3BwCkBAIC0yNzcsMTAgKzI3NywxMSBAQCBEcmFnSW1hZ2VSZWYgQ2xpcGJv
YXJkOjpjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGxvY2F0aW9uKSBjb25zdAogCiAgICAgaWYg
KG1fZHJhZ0ltYWdlRWxlbWVudCkgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9kcmFn
SW1hZ2VFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZnJh
bWUtPm5vZGVJbWFnZShtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgcmV0
dXJuIGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoKmZyYW1lLCBtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0
KCkpOwogICAgIH0KIAotICAgIHJldHVybiAwOyAvLyBXZSBkbyBub3QgaGF2ZSBlbm91Z2ggaW5m
b3JtYXRpb24gdG8gY3JlYXRlIGEgZHJhZyBpbWFnZSwgdXNlIHRoZSBkZWZhdWx0IGljb24uCisg
ICAgLy8gV2UgZG8gbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGNyZWF0ZSBhIGRyYWcg
aW1hZ2UsIHVzZSB0aGUgZGVmYXVsdCBpY29uLgorICAgIHJldHVybiBudWxscHRyOwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tCmluZGV4IDc2Y2E2ZmNhM2U0MjQwN2I1
ZjhlN2IzNWU2NTg3MzdjMjExM2U4ZmIuLmRkM2I4MTNkODQ3MTJmNDgxMjU4NTJhODg2MzA3OWMx
MmYyNDBmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZE1hYy5tbQpAQCAtMjgsNyArMjgsNyBA
QAogCiAjaW1wb3J0ICJDYWNoZWRJbWFnZS5oIgogI2ltcG9ydCAiRWxlbWVudC5oIgotI2ltcG9y
dCAiRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCIKKyNpbXBvcnQgIkRyYWdJbWFnZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDEzICs0MCwxMyBAQCBEcmFnSW1hZ2VSZWYgQ2xpcGJv
YXJkOjpjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGxvY2F0aW9uKSBjb25zdAogICAgIE5TSW1h
Z2UgKnJlc3VsdCA9IG5pbDsKICAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7CiAgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBtX2RyYWdJbWFnZUVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUo
KSkgewotICAgICAgICAgICAgTlNSZWN0IGltYWdlUmVjdDsKLSAgICAgICAgICAgIE5TUmVjdCBl
bGVtZW50UmVjdDsKLSAgICAgICAgICAgIHJlc3VsdCA9IHNuYXBzaG90RHJhZ0ltYWdlKGZyYW1l
LCBtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCksICZpbWFnZVJlY3QsICZlbGVtZW50UmVjdCk7Cisg
ICAgICAgICAgICBJbnRSZWN0IGltYWdlUmVjdDsKKyAgICAgICAgICAgIEludFJlY3QgZWxlbWVu
dFJlY3Q7CisgICAgICAgICAgICByZXN1bHQgPSBbY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2UoKmZy
YW1lLCBtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCksIGltYWdlUmVjdCwgZWxlbWVudFJlY3QpIGF1
dG9yZWxlYXNlXTsKICAgICAgICAgICAgIC8vIENsaWVudCBzcGVjaWZpZXMgcG9pbnQgcmVsYXRp
dmUgdG8gZWxlbWVudCwgbm90IHRoZSB3aG9sZSBpbWFnZSwgd2hpY2ggbWF5IGluY2x1ZGUgY2hp
bGQKICAgICAgICAgICAgIC8vIGxheWVycyBzcHJlYWQgb3V0IGFsbCBvdmVyIHRoZSBwbGFjZS4K
LSAgICAgICAgICAgIGxvY2F0aW9uLnNldFgoZWxlbWVudFJlY3Qub3JpZ2luLnggLSBpbWFnZVJl
Y3Qub3JpZ2luLnggKyBtX2RyYWdMb2NhdGlvbi54KCkpOwotICAgICAgICAgICAgbG9jYXRpb24u
c2V0WShpbWFnZVJlY3Quc2l6ZS5oZWlnaHQgLSAoZWxlbWVudFJlY3Qub3JpZ2luLnkgLSBpbWFn
ZVJlY3Qub3JpZ2luLnkgKyBtX2RyYWdMb2NhdGlvbi55KCkpKTsKKyAgICAgICAgICAgIGxvY2F0
aW9uLnNldFgoZWxlbWVudFJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSArIG1fZHJhZ0xvY2F0aW9u
LngoKSk7CisgICAgICAgICAgICBsb2NhdGlvbi5zZXRZKGltYWdlUmVjdC5oZWlnaHQoKSAtIChl
bGVtZW50UmVjdC55KCkgLSBpbWFnZVJlY3QueSgpICsgbV9kcmFnTG9jYXRpb24ueSgpKSk7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIHJlc3VsdCA9
IG1fZHJhZ0ltYWdlLT5pbWFnZSgpLT5nZXROU0ltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCmluZGV4IDdlYjI0OWRmN2ZmOWI1NWE4ZWNlNWFlN2ZmNDcyZTBjZDdi
YWMyNDcuLmFhMjMxZjU4ODZlNDhiOWEwMWU5ZWI4M2ZhYmY0YzRjOGZiMWQ2N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNsdWRlICJEcmFnQ2xpZW50LmgiCiAjaW5jbHVkZSAiRHJh
Z0RhdGEuaCIKKyNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJEcmFnU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIkRyYWdTdGF0ZS5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtNzgwLDcg
Kzc4MSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAgIH0KICAgICAgICAgbV9j
bGllbnQud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rp
b24sIGRyYWdPcmlnaW4sIGNsaXBib2FyZCk7CiAgICAgICAgIGlmICghZHJhZ0ltYWdlKSB7Ci0g
ICAgICAgICAgICBkcmFnSW1hZ2UgPSBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oc3JjLmRy
YWdJbWFnZUZvclNlbGVjdGlvbigpLCBEcmFnSW1hZ2VBbHBoYSk7CisgICAgICAgICAgICBkcmFn
SW1hZ2UgPSBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oY3JlYXRlRHJhZ0ltYWdlRm9yRnJh
bWVTZWxlY3Rpb24oc3JjKSwgRHJhZ0ltYWdlQWxwaGEpOwogICAgICAgICAgICAgZHJhZ0xvYyA9
IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKHNyYyk7CiAgICAgICAgICAgICBtX2RyYWdPZmZzZXQg
PSBJbnRQb2ludChkcmFnT3JpZ2luLngoKSAtIGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnkoKSAt
IGRyYWdMb2MueSgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA2MjQxZWUz
Yzk1MmI0NjE1NWMyOTIwNmIwOGY5MDFlMDBlNTJmNTgwLi41YzAzNjExZThiNzUxZjkxNmRlMmVk
NGI3MjZiNjM2MWI3MmZhYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTY2LDEwOCArOTY2
LDQgQEAgYm9vbCBGcmFtZTo6aXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdJTikK
LXN0cnVjdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgewotICAgIFNjb3BlZEZyYW1lUGFpbnRp
bmdTdGF0ZShGcmFtZSogZnJhbWUsIE5vZGUqIG5vZGUpCi0gICAgICAgIDogZnJhbWUoZnJhbWUp
Ci0gICAgICAgICwgbm9kZShub2RlKQotICAgICAgICAsIHBhaW50QmVoYXZpb3IoZnJhbWUtPnZp
ZXcoKS0+cGFpbnRCZWhhdmlvcigpKQotICAgICAgICAsIGJhY2tncm91bmRDb2xvcihmcmFtZS0+
dmlldygpLT5iYXNlQmFja2dyb3VuZENvbG9yKCkpCi0gICAgewotICAgICAgICBBU1NFUlQoIW5v
ZGUgfHwgbm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmIChub2RlKQotICAgICAgICAgICAg
bm9kZS0+cmVuZGVyZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOwotICAgIH0KLQotICAgIH5T
Y29wZWRGcmFtZVBhaW50aW5nU3RhdGUoKQotICAgIHsKLSAgICAgICAgaWYgKG5vZGUgJiYgbm9k
ZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURyYWdT
dGF0ZShmYWxzZSk7Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IocGFp
bnRCZWhhdmlvcik7Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29s
b3IoYmFja2dyb3VuZENvbG9yKTsKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJh
dygwKTsKLSAgICB9Ci0KLSAgICBGcmFtZSogZnJhbWU7Ci0gICAgTm9kZSogbm9kZTsKLSAgICBQ
YWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7Ci0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yOwot
fTsKLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAgICBp
ZiAoIW5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgY29u
c3QgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKHRoaXMsIG5vZGUpOwotCi0gICAgbV92
aWV3LT5zZXRQYWludEJlaGF2aW9yKHN0YXRlLnBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9y
RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLQotICAgIC8vIFdoZW4gZ2VuZXJhdGluZyB0aGUg
ZHJhZyBpbWFnZSBmb3IgYW4gZWxlbWVudCwgaWdub3JlIHRoZSBkb2N1bWVudCBiYWNrZ3JvdW5k
LgotICAgIG1fdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQp
OwotICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXco
bm9kZSk7IC8vIEVuYWJsZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZS4KLQotICAgIC8v
IERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2luYWwg
cmVuZGVyZXIuCi0gICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYg
KCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBMYXlvdXRSZWN0IHRv
cExldmVsUmVjdDsKLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJl
Y3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBmbG9h
dCBkZXZpY2VTY2FsZUZhY3RvciA9IDE7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgZGV2aWNl
U2NhbGVGYWN0b3IgPSBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgcGFpbnRpbmdS
ZWN0LnNldFdpZHRoKHBhaW50aW5nUmVjdC53aWR0aCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwot
ICAgIHBhaW50aW5nUmVjdC5zZXRIZWlnaHQocGFpbnRpbmdSZWN0LmhlaWdodCgpICogZGV2aWNl
U2NhbGVGYWN0b3IpOwotCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JT
cGFjZURldmljZVJHQikpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAt
cGFpbnRpbmdSZWN0LnkoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0
KDAsIDAsIHBhaW50aW5nUmVjdC5tYXhYKCksIHBhaW50aW5nUmVjdC5tYXhZKCkpKTsKLQotICAg
IG1fdmlldy0+cGFpbnRDb250ZW50cyhidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0KTsK
LQotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZSgpOwotCi0gICAg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24ocmVuZGVy
ZXItPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwotI2lmIEVOQUJMRShDU1NfSU1B
R0VfT1JJRU5UQVRJT04pCi0gICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVu
dGF0aW9uRW51bShyZW5kZXJlci0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotI2VuZGlm
Ci0gICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZS5nZXQoKSwgb3JpZW50
YXRpb25EZXNjcmlwdGlvbik7Ci19Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9y
U2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoIXNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAg
cmV0dXJuIDA7Ci0KLSAgICBjb25zdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgc3RhdGUodGhp
cywgMCk7Ci0gICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rp
b25Pbmx5KTsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7Ci0KLSAgICBJbnRSZWN0IHBhaW50
aW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uKCkuYm91bmRzKCkpOwotCi0gICAg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOwotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIGRl
dmljZVNjYWxlRmFjdG9yID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIHBhaW50
aW5nUmVjdC5zZXRXaWR0aChwYWludGluZ1JlY3Qud2lkdGgoKSAqIGRldmljZVNjYWxlRmFjdG9y
KTsKLSAgICBwYWludGluZ1JlY3Quc2V0SGVpZ2h0KHBhaW50aW5nUmVjdC5oZWlnaHQoKSAqIGRl
dmljZVNjYWxlRmFjdG9yKTsKLQotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdl
QnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpKTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBh
aW50aW5nUmVjdC55KCkpOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgw
LCAwLCBwYWludGluZ1JlY3QubWF4WCgpLCBwYWludGluZ1JlY3QubWF4WSgpKSk7Ci0KLSAgICBt
X3ZpZXctPnBhaW50Q29udGVudHMoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7Ci0K
LSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoKTsKLSAgICByZXR1
cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSk7Ci19Ci0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmgKaW5kZXggODQwN2U5ZTJiY2YzZWVmZWRkYmYwNTMxYmU2Y2U5Mjc5NDU3Mjc3
Yy4uNWYxODY2ZmUyMDJmY2ZlYTY0NDJjMGJiZWY4MjBmNTZlZDIzZTc0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaApAQCAtMjksNyArMjksNiBAQAogI2RlZmluZSBGcmFtZV9oCiAKICNpbmNsdWRlICJBZGp1
c3RWaWV3U2l6ZU9yTm90LmgiCi0jaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CkBAIC01OCwxMSArNTcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEVkaXRv
cjsKICAgICBjbGFzcyBFbGVtZW50OwogICAgIGNsYXNzIEV2ZW50SGFuZGxlcjsKKyAgICBjbGFz
cyBGbG9hdFNpemU7CiAgICAgY2xhc3MgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyOwogICAgIGNs
YXNzIEZyYW1lU2VsZWN0aW9uOwogICAgIGNsYXNzIEZyYW1lVmlldzsKICAgICBjbGFzcyBIVE1M
RnJhbWVPd25lckVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7CisgICAg
Y2xhc3MgSW1hZ2VCdWZmZXI7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBNYWluRnJh
bWU7CiAgICAgY2xhc3MgTm9kZTsKQEAgLTE3Nyw5ICsxNzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgU3RyaW5nIGRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29u
c3QgU3RyaW5nJikgY29uc3Q7CiAKLSAgICAgICAgRHJhZ0ltYWdlUmVmIG5vZGVJbWFnZShOb2Rl
Kik7Ci0gICAgICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsKLQogICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9p
bnQmIGZyYW1lUG9pbnQpOwogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnRBdFBvaW50KGNvbnN0
IEludFBvaW50JiB3aW5kb3dQb2ludCk7CiAgICAgICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdl
Rm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVTbmFwc2hvdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGU3MDcyMmY0NzBjM2NkNGNiYTYwMTVhYjExNjJi
NDA3YzQxNGU5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVT
bmFwc2hvdC5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMg
VW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
RnJhbWVTbmFwc2hvdC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisj
aW5jbHVkZSAiUGFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZyYW1lU25hcHNob3Q6
OkZyYW1lU25hcHNob3QoT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIpCis6IG1fYnVmZmVyKGJ1
ZmZlci5yZWxlYXNlKCkpIHsgfQorCitGcmFtZVNuYXBzaG90Ojp+RnJhbWVTbmFwc2hvdCgpIHsg
fQorCitzdGQ6OnVuaXF1ZV9wdHI8RnJhbWVTbmFwc2hvdD4gRnJhbWVTbmFwc2hvdDo6Y3JlYXRl
RnJvbVJlY3QoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGJvb2wgaW5j
bHVkZVNlbGVjdGlvbiwgYm9vbCB1c2VWaWV3Q29vcmRpbmF0ZXMpCit7CisgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8RnJhbWVTbmFwc2hvdD4oY3JlYXRlSW1hZ2VGcm9tRnJhbWVSZWN0KGZy
YW1lLCBpbWFnZVJlY3QsIGluY2x1ZGVTZWxlY3Rpb24sIHVzZVZpZXdDb29yZGluYXRlcykucmVs
ZWFzZSgpKTsKK30KKworT3duUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUZyb21GcmFtZVJl
Y3QoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGJvb2wgaW5jbHVkZVNl
bGVjdGlvbiwgYm9vbCB1c2VWaWV3Q29vcmRpbmF0ZXMpCit7CisgICAgZnJhbWUuZG9jdW1lbnQo
KS0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICBJbnRSZWN0IHVzZWRSZWN0KGltYWdlUmVjdCk7Cisg
ICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOworICAgIGlmIChmcmFtZS5wYWdlKCkpCisg
ICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gZnJhbWUucGFnZSgpLT5kZXZpY2VTY2FsZUZhY3Rv
cigpOworICAgIHVzZWRSZWN0LnNldFdpZHRoKGltYWdlUmVjdC53aWR0aCgpICogZGV2aWNlU2Nh
bGVGYWN0b3IpOworICAgIHVzZWRSZWN0LnNldEhlaWdodChpbWFnZVJlY3QuaGVpZ2h0KCkgKiBk
ZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUodXNlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXVzZWRSZWN0LngoKSwgLXVz
ZWRSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAs
IHVzZWRSZWN0Lm1heFgoKSwgdXNlZFJlY3QubWF4WSgpKSk7CisKKyAgICBGcmFtZVZpZXc6OlNl
bGVjdGlvbkluU25hcHNob3Qgc2VsZWN0aW9uTW9kZSA9IGluY2x1ZGVTZWxlY3Rpb24gPyBGcmFt
ZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb24gOiBGcmFtZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rpb247Cisg
ICAgRnJhbWVWaWV3OjpDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlTW9kZSA9
IHVzZVZpZXdDb29yZGluYXRlcyA/IEZyYW1lVmlldzo6Vmlld0Nvb3JkaW5hdGVzIDogRnJhbWVW
aWV3OjpEb2N1bWVudENvb3JkaW5hdGVzOworICAgIGZyYW1lLnZpZXcoKS0+cGFpbnRDb250ZW50
c0ZvclNuYXBzaG90KGJ1ZmZlci0+Y29udGV4dCgpLCB1c2VkUmVjdCwgc2VsZWN0aW9uTW9kZSwg
Y29vcmRpbmF0ZU1vZGUpOworICAgIHJldHVybiBidWZmZXIucmVsZWFzZSgpOworfQorCitTdHJp
bmcgRnJhbWVTbmFwc2hvdDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJs
ZSogcXVhbGl0eSkKK3sKKyAgICByZXR1cm4gYnVmZmVyKCkudG9EYXRhVVJMKG1pbWVUeXBlLCBx
dWFsaXR5KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
U25hcHNob3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjRjYjZiZjY2OTFhMjBkYjliODllYjY4MDNkOGVkZDIz
ZDVhMzNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBz
aG90LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVy
c2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICog
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgRnJhbWVTbmFwc2hvdF9oCisjZGVmaW5lIEZyYW1lU25h
cHNob3RfaAorCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3Mg
SW50UmVjdDsKK2NsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgTm9kZTsKKworLy8gVXNlZCB0byB0
YWtlIGJvdGggc2NyZWVuc2hvdHMgYW5kIGltYWdlcyBmb3IgRHJhZ0ltYWdlLgorT3duUHRyPElt
YWdlQnVmZmVyPiBjcmVhdGVJbWFnZUZyb21GcmFtZVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0
JiwgYm9vbCBpbmNsdWRlU2VsZWN0aW9uID0gdHJ1ZSwgYm9vbCB1c2VWaWV3Q29vcmRpbmF0ZXMg
PSB0cnVlKTsKKworLy8gVGhpcyBjbGFzcyBoaWRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgRnJh
bWVTbmFwc2hvdDo6dG9EYXRhVVJMIGZyb20gZW1iZWRkZXJzLgorY2xhc3MgRnJhbWVTbmFwc2hv
dCB7CitwdWJsaWM6CisgICAgRnJhbWVTbmFwc2hvdChPd25QdHI8SW1hZ2VCdWZmZXI+KTsKKyAg
ICB+RnJhbWVTbmFwc2hvdCgpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RnJhbWVTbmFw
c2hvdD4gY3JlYXRlRnJvbVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgYm9vbCBpbmNsdWRl
U2VsZWN0aW9uID0gdHJ1ZSwgYm9vbCB1c2VWaWV3Q29vcmRpbmF0ZXMgPSB0cnVlKTsKKworICAg
IFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKiBxdWFsaXR5
ID0gbnVsbHB0cik7CisgICAgSW1hZ2VCdWZmZXImIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuICpt
X2J1ZmZlcjsgfQorcHJpdmF0ZToKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9idWZmZXI7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBGcmFtZVNuYXBzaG90
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGRhZmIxZjkxYmNiZDZmMDYyN2E2MWQxZTk0ZGU5YjcxNGE4YjU0MzQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRnJhbWVNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlh
a292IChhcEBueXBvcC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiRnJhbWUuaCIKLQotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZy
YW1lTG9hZGVyQ2xpZW50LmgiCi0jaW1wb3J0ICJGcmFtZVNlbGVjdGlvbi5oIgotI2ltcG9ydCAi
RnJhbWVTbmFwc2hvdHRpbmdNYWMuaCIKLSNpbXBvcnQgIkZyYW1lVmlldy5oIgotI2ltcG9ydCAi
UmVuZGVyT2JqZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRHJhZ0ltYWdlUmVmIEZy
YW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7
IC8vIGZvcmNlcyBzdHlsZSByZWNhbGMKLQotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBu
b2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgTlNSZWN0IHBhaW50aW5nUmVjdCA9
IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxS
ZWN0KSk7Ci0KLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVj
aWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJv
bVJlY3QodGhpcywgcGFpbnRpbmdSZWN0KTsKLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcoMCk7
Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1EcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFn
ZUZvclNlbGVjdGlvbigpCi17Ci0gICAgaWYgKCFzZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIHNlbGVjdGlvbkltYWdlKHRoaXMpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9GcmFtZVNuYXBzaG90dGluZ01hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVT
bmFwc2hvdHRpbmdNYWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhYjY3ZTc2
NTgxNGFlNmNiYzkwMWJhZDQ0YWZkMTUzZjg2MmEyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBz
aG90dGluZ01hYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgRnJhbWVTbmFwc2hvdHRpbmdNYWNfaAotI2RlZmluZSBGcmFtZVNuYXBzaG90dGluZ01h
Y19oCi0KLU9CSkNfQ0xBU1MgTlNJbWFnZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBGcmFtZTsKLWNsYXNzIFJhbmdlOwotY2xhc3MgTm9kZTsKLQotTlNJbWFnZSogc2VsZWN0aW9u
SW1hZ2UoRnJhbWUqLCBib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpOwotTlNJbWFnZSogcmFu
Z2VJbWFnZShGcmFtZSosIFJhbmdlKiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKTsKLU5T
SW1hZ2UqIHNuYXBzaG90RHJhZ0ltYWdlKEZyYW1lKiwgTm9kZSosIE5TUmVjdCogaW1hZ2VSZWN0
LCBOU1JlY3QqIGVsZW1lbnRSZWN0KTsKLU5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoRnJhbWUqLCBO
U1JlY3QpOwotCi19Ci0KLSNlbmRpZiAvLyBGcmFtZVNuYXBzaG90dGluZ01hY19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlOTJjMmYyM2NiMTdiZDAzZDRlOGE1ZWUxOTUxNGFjNDM5MWQx
OWViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90
dGluZ01hYy5oIgotCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKLSNpbXBvcnQgIkRvY3Vt
ZW50LmgiCi0jaW1wb3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiRnJhbWVTZWxlY3Rpb24uaCIKLSNp
bXBvcnQgIkZyYW1lVmlldy5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW1wb3J0
ICJSYW5nZS5oIgotI2ltcG9ydCAiUmVuZGVyVmlldy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLU5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoRnJhbWUqIGZyYW1lLCBOU1JlY3QgcmVjdCkKLXsK
LSAgICBQYWludEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gZnJhbWUtPnZpZXcoKS0+cGFpbnRCZWhh
dmlvcigpOwotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3Ig
fCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICAKLSAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgCi0gICAgTlNJbWFnZSogcmVzdWx0SW1hZ2Ug
PSBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aFNpemU6cmVjdC5zaXplXSBhdXRvcmVsZWFzZV07
Ci0gICAgCi0gICAgaWYgKHJlY3Quc2l6ZS53aWR0aCAhPSAwICYmIHJlY3Quc2l6ZS5oZWlnaHQg
IT0gMCkgewotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBbcmVz
dWx0SW1hZ2Ugc2V0RmxpcHBlZDpZRVNdOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAot
ICAgICAgICBbcmVzdWx0SW1hZ2UgbG9ja0ZvY3VzXTsKLQotICAgICAgICBHcmFwaGljc0NvbnRl
eHQgZ3JhcGhpY3NDb250ZXh0KChDR0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJy
ZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XSk7ICAgICAgICAKLSAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNhdmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtcmVjdC5vcmln
aW4ueCwgLXJlY3Qub3JpZ2luLnkpOwotICAgICAgICBmcmFtZS0+dmlldygpLT5wYWludENvbnRl
bnRzKCZncmFwaGljc0NvbnRleHQsIEludFJlY3QocmVjdCkpOwotICAgICAgICBncmFwaGljc0Nv
bnRleHQucmVzdG9yZSgpOwotCi0gICAgICAgIFtyZXN1bHRJbWFnZSB1bmxvY2tGb2N1c107Ci0j
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAgIFtyZXN1bHRJbWFnZSBz
ZXRGbGlwcGVkOk5PXTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICB9Ci0gICAg
Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7Ci0gICAg
cmV0dXJuIHJlc3VsdEltYWdlOwotICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
Ci0gICAgCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7
Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2UoRnJhbWUqIGZy
YW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQotewotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50
QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQgPyBQ
YWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQgOiAwKSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dCgpOwotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QoZnJh
bWUsIGZyYW1lLT5zZWxlY3Rpb24oKS5ib3VuZHMoKSk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0
UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yTm9ybWFsKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1OU0ltYWdlICpyYW5nZUltYWdlKEZyYW1lKiBmcmFtZSwgUmFuZ2UqIHJhbmdlLCBib29s
IGZvcmNlQmxhY2tUZXh0KQotewotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Io
UGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQgPyBQYWludEJlaGF2
aW9yRm9yY2VCbGFja1RleHQgOiAwKSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dCgpOwotICAgIFJlbmRlclZpZXcqIHZpZXcgPSBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7
Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgUG9zaXRpb24gc3Rh
cnQgPSByYW5nZS0+c3RhcnRQb3NpdGlvbigpOwotICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHN0
YXJ0LmRvd25zdHJlYW0oKTsKLSAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYg
Y2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgIHN0YXJ0ID0g
Y2FuZGlkYXRlOwotCi0gICAgUG9zaXRpb24gZW5kID0gcmFuZ2UtPmVuZFBvc2l0aW9uKCk7Ci0g
ICAgY2FuZGlkYXRlID0gZW5kLnVwc3RyZWFtKCk7Ci0gICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNh
dGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQotICAg
ICAgICBlbmQgPSBjYW5kaWRhdGU7Ci0KLSAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlz
TnVsbCgpIHx8IHN0YXJ0ID09IGVuZCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFJlbmRl
ck9iamVjdCogc2F2ZWRTdGFydFJlbmRlcmVyOwotICAgIGludCBzYXZlZFN0YXJ0T2Zmc2V0Owot
ICAgIFJlbmRlck9iamVjdCogc2F2ZWRFbmRSZW5kZXJlcjsKLSAgICBpbnQgc2F2ZWRFbmRPZmZz
ZXQ7Ci0gICAgdmlldy0+Z2V0U2VsZWN0aW9uKHNhdmVkU3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFy
dE9mZnNldCwgc2F2ZWRFbmRSZW5kZXJlciwgc2F2ZWRFbmRPZmZzZXQpOwotCi0gICAgUmVuZGVy
T2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIo
KTsKLSAgICBpZiAoIXN0YXJ0UmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBS
ZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyID0gZW5kLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVy
KCk7Ci0gICAgaWYgKCFlbmRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHZp
ZXctPnNldFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpLCBlbmRSZW5kZXJlciwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIFJlbmRl
clZpZXc6OlJlcGFpbnROb3RoaW5nKTsKLSAgICBOU0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21S
ZWN0KGZyYW1lLCB2aWV3LT5zZWxlY3Rpb25Cb3VuZHMoKSk7Ci0gICAgdmlldy0+c2V0U2VsZWN0
aW9uKHNhdmVkU3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNldCwgc2F2ZWRFbmRSZW5kZXJl
ciwgc2F2ZWRFbmRPZmZzZXQsIFJlbmRlclZpZXc6OlJlcGFpbnROb3RoaW5nKTsKLQotICAgIGZy
YW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvck5vcm1hbCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotCi1OU0ltYWdlKiBzbmFwc2hvdERyYWdJbWFnZShGcmFtZSog
ZnJhbWUsIE5vZGUqIG5vZGUsIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnRSZWN0
KQotewotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAg
IGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgcmVuZGVyZXIt
PnVwZGF0ZURyYWdTdGF0ZSh0cnVlKTsgICAgLy8gbWFyayBkcmFnZ2VkIG5vZGVzIChzbyB0aGV5
IHBpY2sgdXAgdGhlIHJpZ2h0IENTUykKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0KCk7ICAvLyBmb3JjZXMgc3R5bGUgcmVjYWxjIC0gbmVlZGVkIHNpbmNlIGNoYW5naW5nIHRo
ZSBkcmFnIHN0YXRlIG1pZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gaW1wbHkgbmV3IHN0eWxlcywgcGx1cyBKUyBjb3VsZCBoYXZlIGNoYW5nZWQgb3RoZXIg
dGhpbmdzCi0KLQotICAgIC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24g
YXdheSB0aGUgb3JpZ2luYWwgUmVuZGVyRWxlbWVudC4KLSAgICByZW5kZXJlciA9IG5vZGUtPnJl
bmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OwotICAgIE5TUmVjdCBwYWludGluZ1JlY3QgPSBwaXhl
bFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkp
OwotCi0gICAgaWYgKE5TSXNFbXB0eVJlY3QocGFpbnRpbmdSZWN0KSkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgIGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9r
ZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGlt
YWdlRnJvbVJlY3QoZnJhbWUsIHBhaW50aW5nUmVjdCk7Ci0gICAgcmVuZGVyZXItPnVwZGF0ZURy
YWdTdGF0ZShmYWxzZSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwot
ICAgIGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcoMCk7Ci0KLSAgICBpZiAoZWxlbWVudFJl
Y3QpCi0gICAgICAgICplbGVtZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9wTGV2ZWxS
ZWN0KTsKLSAgICBpZiAoaW1hZ2VSZWN0KQotICAgICAgICAqaW1hZ2VSZWN0ID0gcGFpbnRpbmdS
ZWN0OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcAppbmRleCA1YWFmM2E2NzhjOWU1NDNhZjY4M2Iz
N2FkNWIwNmNjZTA2NDQzYjlmLi45Njc0ZjE3NjhmNWRkODQyNWI2MGM3YWYxNmYwZjFmN2Q2Zjc2
MzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCkBAIC01NywzMCArNTcsNCBA
QCBHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgYm9v
bCBmb3JjZUJsYWNrVGV4dCkKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLURyYWdJbWFnZVJlZiBG
cmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoc2VsZWN0aW9uKCkuaXNS
YW5nZSgpKQotICAgICAgICByZXR1cm4gaW1hZ2VGcm9tU2VsZWN0aW9uKHRoaXMsIGZhbHNlKS5s
ZWFrKCk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1h
Z2UoTm9kZSogbm9kZSkKLXsKLSAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLQotICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVu
ZGVyZXIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7
Ci0gICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVy
LT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwotCi0gICAgbV92aWV3LT5zZXROb2Rl
VG9EcmF3KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUKLSAg
ICBHRElPYmplY3Q8SEJJVE1BUD4gcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdCh0aGlzLCBwYWludGlu
Z1JlY3QpOwotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKLQotICAgIHJldHVybiByZXN1
bHQubGVhaygpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4v
RnJhbWVXaW4uaAppbmRleCAzYTI3MjNlNjNkNmQ3ZTdlYzA0NGNiMTJmMmVhN2JkMDZjZmU2NTlm
Li4yNjk3MjVjMWY5YjliODBkNTc4MTQ4NGY5MzFhYjI1ZGQzYWUzMzE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvd2luL0ZyYW1lV2luLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBJ
bnRSZWN0OwogCiBHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tUmVjdChjb25zdCBGcmFtZSos
IEludFJlY3QmKTsKLUdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUq
LCBib29sIGZvcmNlV2hpdGVUZXh0KTsKK0dESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxl
Y3Rpb24oRnJhbWUqLCBib29sIGZvcmNlQmxhY2tUZXh0KTsKIHZvaWQgY29tcHV0ZVBhZ2VSZWN0
c0ZvckZyYW1lKEZyYW1lKiwgY29uc3QgSW50UmVjdCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJI
ZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCwgZmxvYXQgdXNlclNjYWxlRmFjdG9yLCBWZWN0b3I8
SW50UmVjdD4mIG91dFBhZ2VzLCBpbnQmIG91dFBhZ2VIZWlnaHQpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAppbmRleCBiODFhZmQ1
NzllODI5M2VlZmEyYmE5M2I5YmI1NWMxZjUwNzZjZjQ3Li44MDkyZmIxM2ZiMDY1ZTYxOTU4MmI2
OTc0YTk0OGZjMWQzYWM5MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAK
QEAgLTI4LDYgKzI4LDE2IEBACiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUgIkZyYW1l
U25hcHNob3QuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAogRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VS
ZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEludFNpemUmIHNpemUpCkBA
IC01OCwxNCArNjgsMjAxIEBAIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJh
Z0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjCiAgICAgICAgIHNjYWxl
eCAqPSByZXNpemVSYXRpbzsKICAgICAgICAgc2NhbGV5ICo9IHJlc2l6ZVJhdGlvOwogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiBzY2FsZURyYWdJbWFnZShpbWFnZSwgRmxvYXRTaXplKHNjYWxl
eCwgc2NhbGV5KSk7CiB9CiAKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShG
cmFtZSYgZnJhbWUsIFJhbmdlKiByYW5nZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKK3sKKyAgICBm
cmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkg
fCAoZm9yY2VCbGFja1RleHQgPyBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQgOiAwKSk7Cisg
ICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgUmVuZGVyVmlldyogdmll
dyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlLT5zdGFydFBvc2l0aW9u
KCk7CisgICAgUG9zaXRpb24gY2FuZGlkYXRlID0gc3RhcnQuZG93bnN0cmVhbSgpOworICAgIGlm
IChjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUo
KS0+cmVuZGVyZXIoKSkKKyAgICAgICAgc3RhcnQgPSBjYW5kaWRhdGU7CisKKyAgICBQb3NpdGlv
biBlbmQgPSByYW5nZS0+ZW5kUG9zaXRpb24oKTsKKyAgICBjYW5kaWRhdGUgPSBlbmQudXBzdHJl
YW0oKTsKKyAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRl
cHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCisgICAgICAgIGVuZCA9IGNhbmRpZGF0ZTsKKwor
ICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkgfHwgc3RhcnQgPT0gZW5kKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlbmRlck9iamVjdCogc2F2ZWRTdGFydFJl
bmRlcmVyOworICAgIGludCBzYXZlZFN0YXJ0T2Zmc2V0OworICAgIFJlbmRlck9iamVjdCogc2F2
ZWRFbmRSZW5kZXJlcjsKKyAgICBpbnQgc2F2ZWRFbmRPZmZzZXQ7CisgICAgdmlldy0+Z2V0U2Vs
ZWN0aW9uKHNhdmVkU3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNldCwgc2F2ZWRFbmRSZW5k
ZXJlciwgc2F2ZWRFbmRPZmZzZXQpOworCisgICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVy
ID0gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXN0YXJ0UmVu
ZGVyZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVuZGVyT2JqZWN0KiBlbmRS
ZW5kZXJlciA9IGVuZC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgIGlmICghZW5k
UmVuZGVyZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgdmlldy0+c2V0U2VsZWN0
aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJl
bmRlcmVyLCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgUmVuZGVyVmlldzo6UmVwYWlu
dE5vdGhpbmcpOworICAgIERyYWdJbWFnZVJlZiByZXN1bHQgPSBjcmVhdGVEcmFnSW1hZ2VGb3JS
ZWN0KGZyYW1lLCB2aWV3LT5zZWxlY3Rpb25Cb3VuZHMoKSwgZmFsc2UpOworICAgIHZpZXctPnNl
dFNlbGVjdGlvbihzYXZlZFN0YXJ0UmVuZGVyZXIsIHNhdmVkU3RhcnRPZmZzZXQsIHNhdmVkRW5k
UmVuZGVyZXIsIHNhdmVkRW5kT2Zmc2V0LCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisK
KyAgICBmcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvck5vcm1hbCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZv
clJlY3QoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGJvb2wgaW5jbHVk
ZVNlbGVjdGlvbikKK3sKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IGNyZWF0ZUlt
YWdlRnJvbUZyYW1lUmVjdChmcmFtZSwgaW1hZ2VSZWN0LCBpbmNsdWRlU2VsZWN0aW9uLCB0cnVl
KTsKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoKTsKKyAgICBy
ZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JJ
bWFnZShGcmFtZSYgZnJhbWUsIE5vZGUqIG5vZGUsIEludFJlY3QmIGltYWdlUmVjdCwgSW50UmVj
dCYgZWxlbWVudFJlY3QpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJl
bmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAvLyBNYXJrIGRyYWdnZWQgbm9kZXMgdG8gZm9yY2UgZHJhZy1zcGVjaWZpYyBzdHlsZSBy
ZWNhbGN1bGF0aW9uLgorICAgIHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7CisgICAg
ZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICAvLyBEb2N1bWVudDo6dXBk
YXRlTGF5b3V0IG1heSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIFJlbmRlckVsZW1lbnQu
CisgICAgcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Cisg
ICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5w
YWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworCisgICAgaWYgKHBhaW50aW5nUmVjdC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZnJhbWUudmlldygpLT5z
ZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1v
ZGUKKyAgICBEcmFnSW1hZ2VSZWYgcmVzdWx0ID0gY3JlYXRlRHJhZ0ltYWdlRm9yUmVjdChmcmFt
ZSwgcGFpbnRpbmdSZWN0KTsKKyAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsK
KyAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBmcmFtZS52aWV3KCkt
PnNldE5vZGVUb0RyYXcobnVsbHB0cik7CisKKyAgICBlbGVtZW50UmVjdCA9IHBpeGVsU25hcHBl
ZEludFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICBpbWFnZVJlY3QgPSBwYWludGluZ1JlY3Q7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmICFQTEFURk9STShXSU4pCitzdHJ1Y3QgU2NvcGVk
RnJhbWVQYWludGluZ1N0YXRlIHsKKyAgICBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoRnJhbWUm
IGZyYW1lLCBOb2RlKiBub2RlKQorICAgIDogZnJhbWUoZnJhbWUpCisgICAgLCBub2RlKG5vZGUp
CisgICAgLCBwYWludEJlaGF2aW9yKGZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpKQorICAg
ICwgYmFja2dyb3VuZENvbG9yKGZyYW1lLnZpZXcoKS0+YmFzZUJhY2tncm91bmRDb2xvcigpKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPnJlbmRlcmVyKCkpOworICAgICAg
ICBpZiAobm9kZSkKKyAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURyYWdTdGF0
ZSh0cnVlKTsKKyAgICB9CisKKyAgICB+U2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKCkKKyAgICB7
CisgICAgICAgIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBub2Rl
LT5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOworICAgICAgICBmcmFtZS52aWV3
KCktPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CisgICAgICAgIGZyYW1lLnZpZXco
KS0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICBmcmFt
ZS52aWV3KCktPnNldE5vZGVUb0RyYXcobnVsbHB0cik7CisgICAgfQorCisgICAgRnJhbWUmIGZy
YW1lOworICAgIE5vZGUqIG5vZGU7CisgICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOwor
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKK307CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGb3JGcmFtZVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGZvcmNlQmxhY2tUZXh0KTsKKworICAgIGlmICghZnJhbWUu
c2VsZWN0aW9uKCkuaXNSYW5nZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNv
bnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBzdGF0ZShmcmFtZSwgbnVsbHB0cik7CisgICAg
ZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5
IHwgKGZvcmNlQmxhY2tUZXh0ID8gUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0IDogMCkpOwor
ICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworCisgICAgSW50UmVjdCBwYWlu
dGluZ1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZyYW1lLnNlbGVjdGlvbigpLmJvdW5kcygpKTsK
KworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpZiAoZnJhbWUucGFnZSgp
KQorICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9IGZyYW1lLnBhZ2UoKS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKTsKKyAgICBwYWludGluZ1JlY3Quc2V0V2lkdGgocGFpbnRpbmdSZWN0LndpZHRoKCkg
KiBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgcGFpbnRpbmdSZWN0LnNldEhlaWdodChwYWludGlu
Z1JlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBPd25QdHI8SW1hZ2VC
dWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIGRl
dmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgaWYgKCFidWZmZXIp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xh
dGUoLXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKKyAgICBidWZmZXItPmNv
bnRleHQoKS0+Y2xpcChGbG9hdFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0Lm1heFgoKSwgcGFpbnRp
bmdSZWN0Lm1heFkoKSkpOworCisgICAgZnJhbWUudmlldygpLT5wYWludENvbnRlbnRzKGJ1ZmZl
ci0+Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOworCisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9
IGJ1ZmZlci0+Y29weUltYWdlKCk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFn
ZShpbWFnZS5nZXQoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworfQorCitEcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZShGcmFtZSYgZnJhbWUsIE5vZGUqIG5vZGUp
Cit7CisgICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBzdGF0ZShmcmFtZSwgbm9kZSk7
CisKKyAgICBmcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3Ioc3RhdGUucGFpbnRCZWhhdmlv
ciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOworCisgICAgLy8gV2hl
biBnZW5lcmF0aW5nIHRoZSBkcmFnIGltYWdlIGZvciBhbiBlbGVtZW50LCBpZ25vcmUgdGhlIGRv
Y3VtZW50IGJhY2tncm91bmQuCisgICAgZnJhbWUudmlldygpLT5zZXRCYXNlQmFja2dyb3VuZENv
bG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0KCk7CisgICAgZnJhbWUudmlldygpLT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUg
c3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUuCisKKyAgICAvLyBEb2N1bWVudDo6dXBkYXRl
TGF5b3V0IG1heSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIHJlbmRlcmVyLgorICAgIGF1
dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAg
SW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWlu
dGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworCisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IgPSAxOworICAgIGlmIChmcmFtZS5wYWdlKCkpCisgICAgICAgIGRldmljZVNjYWxlRmFjdG9y
ID0gZnJhbWUucGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIHBhaW50aW5nUmVjdC5z
ZXRXaWR0aChwYWludGluZ1JlY3Qud2lkdGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBw
YWludGluZ1JlY3Quc2V0SGVpZ2h0KHBhaW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxl
RmFjdG9yKTsKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpj
cmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50
aW5nUmVjdC55KCkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAw
LCBwYWludGluZ1JlY3QubWF4WCgpLCBwYWludGluZ1JlY3QubWF4WSgpKSk7CisKKyAgICBmcmFt
ZS52aWV3KCktPnBhaW50Q29udGVudHMoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7
CisKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoKTsKKworICAg
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHJlbmRl
cmVyLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyNpZiBFTkFCTEUoQ1NTX0lN
QUdFX09SSUVOVEFUSU9OKQorICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmll
bnRhdGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyNlbmRp
ZgorICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0KCksIG9yaWVu
dGF0aW9uRGVzY3JpcHRpb24pOworfQorI2VuZGlmIC8vICFQTEFURk9STShXSU4pCisKICNpZiAh
UExBVEZPUk0oTUFDKSAmJiAoIVBMQVRGT1JNKFdJTikgfHwgT1MoV0lOQ0UpKQogRHJhZ0ltYWdl
UmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiwgRm9udFJlbmRl
cmluZ01vZGUpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAppbmRleCBkOGY1MmJjZmFkNDQyNDNm
OGFjY2I4NjcwYTA5NGFmMTEzYzRiMjRkLi5lYTkzNzc4ZWQxZDg1YjNhYjJlOTllZmQzNWMyNzU5
M2RjNjZhZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaApAQCAtNDEsMzggKzQx
LDQ3IEBAIHR5cGVkZWYgc3RydWN0IEhCSVRNQVBfXyogSEJJVE1BUDsKIHR5cGVkZWYgc3RydWN0
IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKICNlbmRpZgogCi0vL1dlIG5lZWQgdG8g
I2RlZmluZSBZT2Zmc2V0IGFzIGl0IG5lZWRzIHRvIGJlIHNoYXJlZCB3aXRoIFdlYktpdAorLy8g
V2UgbmVlZCB0byAjZGVmaW5lIFlPZmZzZXQgYXMgaXQgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGgg
V2ViS2l0CiAjZGVmaW5lIERyYWdMYWJlbEJvcmRlcllPZmZzZXQgMgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSAgICBjbGFzcyBJbWFnZTsKLSAgICBjbGFzcyBVUkw7CitjbGFzcyBGcmFtZTsK
K2NsYXNzIEltYWdlOworY2xhc3MgSW50UmVjdDsKK2NsYXNzIE5vZGU7CitjbGFzcyBSYW5nZTsK
K2NsYXNzIFVSTDsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB0eXBlZGVmIFJldGFpblB0cjxO
U0ltYWdlPiBEcmFnSW1hZ2VSZWY7Cit0eXBlZGVmIFJldGFpblB0cjxOU0ltYWdlPiBEcmFnSW1h
Z2VSZWY7CiAjZWxpZiBQTEFURk9STShXSU4pCi0gICAgdHlwZWRlZiBIQklUTUFQIERyYWdJbWFn
ZVJlZjsKK3R5cGVkZWYgSEJJVE1BUCBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKE5JWCkKLSAgICB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogRHJhZ0ltYWdl
UmVmOwordHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRG
T1JNKEVGTCkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkKLSAgICB0eXBlZGVmIHZvaWQqIERyYWdJ
bWFnZVJlZjsKK3R5cGVkZWYgdm9pZCogRHJhZ0ltYWdlUmVmOwogI2VuZGlmCi0gICAgCi0gICAg
SW50U2l6ZSBkcmFnSW1hZ2VTaXplKERyYWdJbWFnZVJlZik7Ci0gICAgCi0gICAgLy9UaGVzZSBm
dW5jdGlvbnMgc2hvdWxkIGJlIG1lbW9yeSBuZXV0cmFsLCBlZy4gaWYgdGhleSByZXR1cm4gYSBu
ZXdseSBhbGxvY2F0ZWQgaW1hZ2UsIAotICAgIC8vdGhleSBzaG91bGQgcmVsZWFzZSB0aGUgaW5w
dXQgaW1hZ2UuICBBcyBhIGNvcm9sbGFyeSB0aGVzZSBtZXRob2RzIGRvbid0IGd1YXJhbnRlZQot
ICAgIC8vdGhlIGlucHV0IGltYWdlIHJlZiB3aWxsIHN0aWxsIGJlIHZhbGlkIGFmdGVyIHRoZXkg
aGF2ZSBiZWVuIGNhbGxlZAotICAgIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUo
RHJhZ0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbnRTaXpl
JiBzaXplKTsKLSAgICBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmLCBG
bG9hdFNpemUgc2NhbGUpOwotICAgIERyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJh
Y3Rpb24oRHJhZ0ltYWdlUmVmIGltYWdlLCBmbG9hdCBkZWx0YSk7Ci0gICAgCi0gICAgRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbik7Ci0gICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNo
ZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwotICAgIERyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGb3JMaW5rKFVSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZvbnRSZW5kZXJpbmdN
b2RlKTsKLSAgICB2b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOworCitJbnRTaXpl
IGRyYWdJbWFnZVNpemUoRHJhZ0ltYWdlUmVmKTsKKworLy8gVGhlc2UgZnVuY3Rpb25zIHNob3Vs
ZCBiZSBtZW1vcnkgbmV1dHJhbCwgZWcuIGlmIHRoZXkgcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVk
IGltYWdlLAorLy8gdGhleSBzaG91bGQgcmVsZWFzZSB0aGUgaW5wdXQgaW1hZ2UuIEFzIGEgY29y
b2xsYXJ5IHRoZXNlIG1ldGhvZHMgZG9uJ3QgZ3VhcmFudGVlCisvLyB0aGUgaW5wdXQgaW1hZ2Ug
cmVmIHdpbGwgc3RpbGwgYmUgdmFsaWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gY2FsbGVkLgorRHJh
Z0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIGNvbnN0IEludFNpemUmIGRzdFNpemUpOworRHJhZ0ltYWdlUmVmIHNjYWxl
RHJhZ0ltYWdlKERyYWdJbWFnZVJlZiwgRmxvYXRTaXplIHNjYWxlKTsKK0RyYWdJbWFnZVJlZiBk
aXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmLCBmbG9hdCBkZWx0YSk7CisK
K0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24pOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JD
YWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZvck5vZGUoRnJhbWUmLCBOb2RlKik7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0lt
YWdlRm9yUmFuZ2UoRnJhbWUmLCBSYW5nZSosIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7
CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmVjdChGcmFtZSYsIGNvbnN0IEludFJl
Y3QmLCBib29sIGluY2x1ZGVTZWxlY3Rpb24gPSB0cnVlKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGb3JJbWFnZShGcmFtZSYsIE5vZGUqLCBJbnRSZWN0JiBpbWFnZVJlY3QsIEludFJl
Y3QmIGVsZW1lbnRSZWN0KTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JGcmFtZVNl
bGVjdGlvbihGcmFtZSYsIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7CitEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGb250
UmVuZGVyaW5nTW9kZSk7Cit2b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOwogfQog
CiAKLSNlbmRpZiAvLyFEcmFnSW1hZ2VfaAorI2VuZGlmIC8vICFEcmFnSW1hZ2VfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXggNjNhNTM1NjBmYzk1
ZDg4YjZmYmY2MDZmYzU2Zjk0NGIzMDI5MWM5NC4uNTU2YmM1YTcxOTcwMWY3MmZkZWM2ZTE2YTZk
ZDZhN2JiMmRiNTgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Ry
YWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdl
TWFjLm1tCkBAIC0zMiw5ICszMiwxNSBAQAogI2ltcG9ydCAiRm9udENhY2hlLmgiCiAjaW1wb3J0
ICJGb250RGVzY3JpcHRpb24uaCIKICNpbXBvcnQgIkZvbnRTZWxlY3Rvci5oIgorI2ltcG9ydCAi
RnJhbWUuaCIKKyNpbXBvcnQgIkZyYW1lU2VsZWN0aW9uLmgiCisjaW1wb3J0ICJGcmFtZVZpZXcu
aCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKKyNpbXBv
cnQgIkxheW91dFJlY3QuaCIKICNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiTm9kZS5oIgorI2lt
cG9ydCAiUmVuZGVyT2JqZWN0LmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW1w
b3J0ICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbXBvcnQgIlRleHRSdW4uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKaW5kZXggMzFhMzJlNGMzYzAyNTNl
ODE1N2U4NDg1YmQxM2I1YTExY2VlYTQ3ZS4uNmQ1N2EwMTU5ODg0ZWI4OGIyZDA3YzhlM2ZkMTM1
OTU1N2FmNmFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJ
bWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdp
bi5jcHAKQEAgLTI2LDE2ICsyNiwyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkRyYWdJbWFnZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGb250Lmgi
CiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAj
aW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJG
cmFtZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0j
aW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIk5vZGUu
aCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3Iu
aCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZVRleHRSZW5kZXJlci5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvd2luL0dESU9iamVjdC5oPgpAQCAtMTIxLDYgKzEyOCwzMiBAQCBzdGF0aWMgRm9udCBk
cmFnTGFiZWxGb250KGludCBzaXplLCBib29sIGJvbGQsIEZvbnRSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZvckZyYW1lU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4
dCkKK3sKKyAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQorICAgICAgICByZXR1
cm4gaW1hZ2VGcm9tU2VsZWN0aW9uKCZmcmFtZSwgZm9yY2VCbGFja1RleHQpLmxlYWsoKTsKKwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9y
Tm9kZShGcmFtZSYgZnJhbWUsIE5vZGUqIG5vZGUpCit7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0KCk7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVu
ZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0g
cGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJl
Y3QpKTsKKworICAgIGZyYW1lLnZpZXcoKS0+c2V0Tm9kZVRvRHJhdyhub2RlKTsgLy8gaW52b2tl
IHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCisgICAgR0RJT2JqZWN0PEhCSVRNQVA+IHJl
c3VsdCA9IGltYWdlRnJvbVJlY3QoJmZyYW1lLCBwYWludGluZ1JlY3QpOworICAgIGZyYW1lLnZp
ZXcoKS0+c2V0Tm9kZVRvRHJhdyhudWxscHRyKTsKKworICAgIHJldHVybiByZXN1bHQubGVhaygp
OworfQorCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBpbkxhYmVsLCBGb250UmVuZGVyaW5nTW9kZSBmb250UmVuZGVyaW5nTW9kZSkK
IHsKICAgICAvLyBUaGlzIGlzIG1vcmUgb3IgbGVzcyBhbiBleGFjdCBtYXRjaCBmb3IgdGhlIE1h
YyBPUyBYIGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lSU9TLm1tCmluZGV4IDVkZmY2ZjBmZTljMWQ5ZjJkZTRhMWUxMTkzYTVlZmI0NDYyZDA3OTEu
LjZhNDkzMzYzNDFjODljNTBhOGMxMmU5MTBlMTE4N2E0OGZkODc2M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCkBAIC0zMCwxMCArMzAs
MTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0RyYWdJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rp
b24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTbmFwc2hvdHRpbmdNYWMuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvaHRtbGVkaXRpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDQ4NjI4MGU0N2I2YTU1ZDY5M2Y4NGEzNTE0MmRhMzM4ZTJi
Zjc5YmYuLmU2ODY1ZDhjMzAxMTI5YTYxODViNzBlZjhmNDYyODk5OTIzNDNhMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtODUsNiArODUsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9y
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckRlbGV0ZUFjdGlvbi5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9FbGVtZW50Lmg+CkBAIC05NSw3ICs5Niw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zy
YW1lU2VsZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU25hcHNob3R0aW5nTWFjLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29u
dmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpAQCAtMTgyMCw3ICsxODIw
LDEyIEBAIHN0YXRpYyBib29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNrT3JEcmFnKE5TRXZlbnQg
KmV2ZW50KQogewogICAgIGlmICghW3NlbGYgX2hhc1NlbGVjdGlvbl0pCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gc2VsZWN0aW9uSW1hZ2UoY29yZShbc2Vs
ZiBfZnJhbWVdKSk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVd
KTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TSW1h
Z2UgKmRyYWdJbWFnZSA9IFtjcmVhdGVEcmFnSW1hZ2VGb3JGcmFtZVNlbGVjdGlvbigqY29yZUZy
YW1lKSBhdXRvcmVsZWFzZV07CiAgICAgW2RyYWdJbWFnZSBfd2ViX2Rpc3NvbHZlVG9GcmFjdGlv
bjpXZWJEcmFnSW1hZ2VBbHBoYV07CiAgICAgcmV0dXJuIGRyYWdJbWFnZTsKIH0KQEAgLTU5NjUs
NyArNTk3MCwxMSBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRT
dHJpbmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogewogICAgIGlmICghW3NlbGYg
X2hhc1NlbGVjdGlvbl0pCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIHNlbGVjdGlv
bkltYWdlKGNvcmUoW3NlbGYgX2ZyYW1lXSksIGZvcmNlQmxhY2tUZXh0KTsKKworICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOworICAgIGlmICghY29yZUZyYW1lKQor
ICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBbY3JlYXRlRHJhZ0ltYWdlRm9yRnJhbWVT
ZWxlY3Rpb24oKmNvcmVGcmFtZSwgZm9yY2VCbGFja1RleHQpIGF1dG9yZWxlYXNlXTsKIH0KIAog
LSAoTlNSZWN0KXNlbGVjdGlvbkltYWdlUmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMu
Y3BwCmluZGV4IGNjYmQ3MTkwMWU0NTU3OTAzMWI5MDJiYTU2YTg5NGU2YThkNzljYjMuLjRiN2Yz
YTU1OGEzMTAxYzlhZGQzN2ZjOWJmOGM5N2QzOWEyYmI1YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01D
b3JlQ2xhc3Nlcy5jcHAKQEAgLTM2LDEwICszNiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ09N
UHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1M
SW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KQEAgLTQ5LDYg
KzQ5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogCiAjaW5jbHVkZSA8aW5pdGd1
aWQuaD4KIC8vIHszQjBDMEVGRi00NzhCLTRiMGItODI5MC1EMjMyMUUwOEUyM0V9CkBAIC0xMjc5
LDcgKzEyODAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnJlbmRl
cmVkSW1hZ2UoSEJJVE1BUCogaW1hZ2UpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAotICAgICppbWFnZSA9IGZyYW1lLT5ub2RlSW1hZ2UobV9lbGVtZW50KTsKKyAg
ICAqaW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgbV9lbGVtZW50KTsKICAg
ICBpZiAoISppbWFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216956</attachid>
            <date>2013-11-14 10:08:53 -0800</date>
            <delta_ts>2013-11-16 15:47:44 -0800</delta_ts>
            <desc>v2.0</desc>
            <filename>bug-124325-20131114100853.patch</filename>
            <type>text/plain</type>
            <size>70556</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThmMzdhYTc5OWNiZmI0
MzI3OTEzZWE4ZjIzNzA0YzE2YzE2OTk2MC4uNmE2MGE1MzkwZGRmM2MxNmRmNTFiMTQ4YWQ3ZTk0
N2ZiY2I0MTlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEzLTExLTEzICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc2NyZWVuc2hvdCBjb2xsZWN0
aW9uIGNvZGUgaXMgc3ByZWFkIGJldHdlZW4gRnJhbWUsCisgICAgICAgIEZyYW1lU25hcHNob3R0
aW5nLCBhbmQgcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGZvcgorICAgICAgICBl
YWNoLiBBbGwgb2YgdGhpcyBjb2RlIGlzIG5vdyBsb2NhdGVkIHdpdGggRHJhZ0ltYWdlIGZ1bmN0
aW9ucywKKyAgICAgICAgYXMgYWxtb3N0IGFsbCB1c2VzIG9mIHNuYXBzaG90cyBhcmUgdXNlZCBm
b3IgZHJhZ2dpbmcgZWZmZWN0cy4KKworICAgICAgICBGb3IgaW5zcGVjdG9yIGNsaWVudHMgdG8g
YmUgYWJsZSB0byBlbmNvZGUgdGhlc2Ugc2NyZWVuc2hvdHMgd2l0aAorICAgICAgICB0aGUgcGxh
dGZvcm0tc3BlY2lmaWMgYmFzZTY0IGVuY29kZXIgcHJvdmlkZWQgYnkKKyAgICAgICAgSW1hZ2VC
dWZmZXI6OnRvRGF0YVVSTCwgd2UgYWRkIGEgdGhpbiB3cmFwcGVyIHRvIGJyZWFrCisgICAgICAg
IGRlcGVuZGVuY2llcyBvbiB0aGUgSW1hZ2VCdWZmZXIgaGVhZGVyIGFzIHdlbGwuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCB0aGlzIGlzIGEgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTS5tbToKKyAgICAgICAgKFdl
YkNvcmU6Omxvb2t1cEVsZW1lbnRDbGFzcyk6CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJ
bWFnZV0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4
dDpdKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAg
ICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRy
b2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWVTbmFwc2hvdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTbmFw
c2hvdDo6RnJhbWVTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNuYXBzaG90Ojp+
RnJhbWVTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNuYXBzaG90OjpjcmVhdGVG
cm9tUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUZyb21GcmFtZVJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVTbmFwc2hvdDo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lU25hcHNob3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNuYXBz
aG90OjpidWZmZXIpOgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lTWFjLm1tOiBSZW1vdmVkLgor
ICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMubW06IFJlbW92ZWQuCisgICAgICAg
ICogcGFnZS93aW4vRnJhbWVXaW4uY3BwOgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmg6
CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
dERyYWdJbWFnZVRvTWF4U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6flNjb3BlZEZyYW1l
UGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JGcmFt
ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAgICAgICAqIHBs
YXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6Zm9udEZyb21OU0ZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6
d2lkdGhXaXRoRm9udCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3QXRQb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpkcmF3RG91YmxlZEF0UG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yRnJh
bWVTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKToKKwogMjAxMy0xMS0x
MyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJlbmFtZSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIHRvIEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaGVycy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggMTQ5M2MyYmYxZDhiNWIx
MDU0NzUxY2EzOTQxY2M2YTg5ZTBiM2QyNi4uN2QzNGFhY2EwNDFmYmVhNjYzM2RkNjA3Y2RkNTlj
MTdmYTZiOTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTExLTEz
ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25z
b2xpZGF0ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVJT1MubW06IHVzZSBuZXcgaGVhZGVyIGZpbGUuCisKIDIwMTMtMTEtMDcgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYSBQTEFURk9S
TShJT1MpIGZyb20gV2ViS2l0IFByaXZhdGUgSGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNTIz
MDE2MTFkZDExMTY1ZDQ2NDBmZGUxOWYzNzllNjVkNTZmMTc1ZC4uMWZlNDQ4YzQxOGM1OTVmYmFm
MzliNzA2NmM5MTIxNzg2Njc4ZjdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDEzLTExLTEzICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKwor
ICAgICAgICBDb25zb2xpZGF0ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBuZXcg
cGxhdGZvcm0taW5kZXBlbmRlbnQgbWV0aG9kcyBpbnN0ZWFkIG9mIE1hYyBtZXRob2RzLgorCisg
ICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
X3NlbGVjdGlvbkRyYWdnaW5nSW1hZ2VdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2VsZWN0
aW9uSW1hZ2VGb3JjaW5nQmxhY2tUZXh0Ol0pOgorCiAyMDEzLTExLTEzICBHb3Jkb24gU2hlcmlk
YW4gIDxnb3Jkb25fc2hlcmlkYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZWQgZGVwcmVj
YXRlZCBkb3dubG9hZCBkZWxlZ2F0ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggZGUxYTgzYzdjMjlm
ZWI2OGEwZDJmNzYzNjg2MjIwOGQ3MzczMjE2MS4uNzU5YTYzZDE4MTg5MDNmZmIzODU4NjBiNTZm
YzNlYzQzMDEzYjUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTEx
LTE0ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBD
b25zb2xpZGF0ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NQ29yZUNsYXNzZXMu
Y3BwOgorICAgICAgICAoRE9NRWxlbWVudDo6cmVuZGVyZWRJbWFnZSk6IHVzZSBjcmVhdGVEcmFn
SW1hZ2VGb3JOb2RlLgorCiAyMDEzLTExLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dpbkNhaXJvXSBQcmVwYXJhdGlvbiBmb3IgRU5B
QkxFKFZJREVPKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDFkZTA3MmJlODljYmI5YWE2ODc2
NmU4YTJlNWYxYjYyZDBkYjJiZi4uYTc2MDBlZDA0MzFhZjIxNmEwYjlhYWVhZTkwMWFjMGYwMmNl
ZjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3MjIsNiArMTcyMiw3IEBAIHNldChXZWJD
b3JlX1NPVVJDRVMKICAgICBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKICAgICBwYWdlL0ZyYW1l
LmNwcAogICAgIHBhZ2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcAorICAgIHBhZ2UvRnJh
bWVTbmFwc2hvdC5jcHAKICAgICBwYWdlL0ZyYW1lVHJlZS5jcHAKICAgICBwYWdlL0ZyYW1lVmll
dy5jcHAKICAgICBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IGVjMDc5NTFiZDdlOWUzNmI3YTA4YTY3MTJmNzRkNTAzOTRkNzNm
NGUuLjhiYWZlZmM3YzEyNmUxNTg0MzAzODc3NThhYTIxZDg1YTQwYjcwNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDEwOSw2ICs0MTA5LDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90LmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90LmggXAogCVNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVRyZWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggMTQyNDJiMzIxMmY5ZjRhZTFkOGIzZDM2MjI1NTIzZWU3ODE2ODIx
ZS4uZTI2ZDhhYWRlMzVkOTNkNTVmMzczYjkyYWIzZmFiZmMxMjRlMzVmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTI1Myw2ICsyNTMsOSBAQCBfX1pON1dlYkNvcmUxM0FYT2JqZWN0Q2FjaGU0
MmdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZEUKIF9fWk43V2ViQ29y
ZTEzQ2hhcmFjdGVyRGF0YTdzZXREYXRhRVJLTjNXVEY2U3RyaW5nRVJpCiBfX1pON1dlYkNvcmUx
M0NvbnRhaW5lck5vZGUxMWFwcGVuZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVF
UmlOU18xNEF0dGFjaEJlaGF2aW9yRQogX19aTjdXZWJDb3JlMTNDb250YWluZXJOb2RlMTFyZW1v
dmVDaGlsZEVQTlNfNE5vZGVFUmkKK19fWk43V2ViQ29yZTEzRnJhbWVTbmFwc2hvdDE0Y3JlYXRl
RnJvbVJlY3RFUk5TXzVGcmFtZUVSS05TXzdJbnRSZWN0RWJiCitfX1pON1dlYkNvcmUxM0ZyYW1l
U25hcHNob3Q5dG9EYXRhVVJMRVJLTjNXVEY2U3RyaW5nRVBkCitfX1pON1dlYkNvcmUxM0ZyYW1l
U25hcHNob3REMUV2CiBfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxMXNldENoaWxkcmVuRVJL
TjNXVEY2VmVjdG9ySVBTMF9MbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNv
cmUxM0dyYXBoaWNzTGF5ZXIxMnJlcGxhY2VDaGlsZEVQUzBfUzFfCiBfX1pON1dlYkNvcmUxM0dy
YXBoaWNzTGF5ZXIxMnNldFpQb3NpdGlvbkVmCkBAIC00MjcsNyArNDMwLDYgQEAgX19aTjdXZWJD
b3JlMTRjb29raWVzRW5hYmxlZEVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VS
TEVTNV8KIF9fWk43V2ViQ29yZTE0ZGVjb2RlSG9zdE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJD
b3JlMTRlbmNvZGVIb3N0TmFtZUVQOE5TU3RyaW5nCiBfX1pON1dlYkNvcmUxNGVuZE9mUGFyYWdy
YXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1
bGVFCi1fX1pON1dlYkNvcmUxNHNlbGVjdGlvbkltYWdlRVBOU181RnJhbWVFYgogX19aTjdXZWJD
b3JlMTRzZXRNZXRhZGF0YVVSTEVSTjNXVEY2U3RyaW5nRVJLUzFfUzRfCiBfX1pON1dlYkNvcmUx
NUFmZmluZVRyYW5zZm9ybTVmbGlwWUV2CiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVz
Y2FsZUVkCkBAIC05MDEsNiArOTAzLDcgQEAgX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5j
b2RpbmdXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBvdmVycmlk
ZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNFUktOM1dURjZWZWN0b3JJTlMwXzZTdHJpbmdFTG0wRU5T
MF8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMzFDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlNWVtcHR5RXYKIF9fWk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZTZzaGFyZWRFdgorX19aTjdXZWJDb3JlMzJjcmVhdGVEcmFnSW1hZ2VGb3JGcmFt
ZVNlbGVjdGlvbkVSTlNfNUZyYW1lRWIKIF9fWk43V2ViQ29yZTMzc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMzdXaWRnZXRIaWVy
YXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlMTFtb3ZlV2lkZ2V0c0V2CiBfX1pON1dlYkNvcmUz
N1dpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUzNXNfd2lkZ2V0SGllcmFyY2h5
VXBkYXRlU3VzcGVuZENvdW50RQpAQCAtMjAzMiw3ICsyMDM1LDYgQEAgX19aTjdXZWJDb3JlMzhj
b250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CiBfX1pON1dlYkNvcmU0MmNv
bnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZ0V2CiBfX1pON1dlYkNvcmU0
MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZ0V2CiBfX1pON1dlYkNv
cmU0NmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9tYXRpY2FsbHlFdgotX19a
TjdXZWJDb3JlNUZyYW1lOW5vZGVJbWFnZUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmU2Q3Vyc29y
OGZyb21UeXBlRU5TMF80VHlwZUUKIF9fWk43V2ViQ29yZTZDdXJzb3JDMUVQTlNfNUltYWdlRVJL
TlNfOEludFBvaW50RQogX19aTjdXZWJDb3JlNkN1cnNvckMxRVJLUzBfCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA5ZjdkNjA5YTdjYWQx
NGY1NTg3MDQ0NDFhMjRlYmE4MTczNTBmMWI1Li4zY2RiZjJiNmE1MjMxYmM3NjA1MWU0NjA1ZDEx
YzMzZTE0M2IxMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2oKQEAgLTY5ODMsNiArNjk4Myw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwYWdlXEZvY3VzQ29udHJvbGxlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwYWdlXEZyYW1lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2Vc
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwYWdlXEZyYW1lVHJlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdl
XEZyYW1lVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEdyb3Vw
U2V0dGluZ3MuY3BwIiAvPgpAQCAtMTg3ODAsNiArMTg3ODEsNyBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGFnZVxGb2N1c0RpcmVjdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGFnZVxGcmFtZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFn
ZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGFnZVxGcmFtZVRyZWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJh
bWVWaWV3LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEdyb3VwU2V0dGlu
Z3MuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBhNDgxNDJlOGJhZGY2NWIxNDU3MDI5MTk5OGQ5NGY4
YTQzOGJmMzFjLi5jNTg0NjQ0NWMyMTQyYTU1MGU4MjczYTdhM2UwY2E5ZjhkMTBkNzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCkBAIC03MTcsNiArNzE3LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhZ2U8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBh
Z2VcRnJhbWVTbmFwc2hvdC5jcHAiPgorICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CisgICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5j
cHAiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03
NjA4LDYgKzc2MTEsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURl
c3RydWN0aW9uT2JzZXJ2ZXIuaCI+CiAgICAgICA8RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hv
dC5oIj4KKyAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuaCI+CiAgICAgICA8RmlsdGVy
PnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMmE2NTEzMTJlZDU3ZGMxNjYw
OWEwMzMyOTI5ODlkZmJkYWRkOTU1Li5hNDY2NjI2M2JjYjRkMWIzNDI0ZWQwNjk3MGQwM2I3N2U5
MzEwZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yMDAwLDcgKzIwMDAsNiBAQAogCQk2NUEyMTQ4NTA5N0EzRjUzMDBCOTA1
MEEgLyogRnJhbWVUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjVCRjAyMkUwOTc0ODE2
MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1QkYwMjI5MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgKi87IH07
CiAJCTY1QkYwMjJGMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2IC8q
IEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCRjAyM0MwOTc0ODE5MDAwQzQzMTk2
IC8qIEZyYW1lTWFjLm1tICovOyB9OwogCQk2NUM5N0FGMzA4RUE5MDg4MDBBQ0QyNzMgLyogY29u
ZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUM5
N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi87IH07CiAJCTY1Q0JGRUY5MDk3NEY2
MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5j
cHAgKi87IH07CiAJCTY1Q0JGRUZBMDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY4MDk3NEY2
MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjIwMSw4ICsyMjAwLDYgQEAKIAkJN0M1MzQzRkMxN0I3NEI2
MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQTE3Qjc0QjYzMDA0MjMyRjAg
LyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJN0M1MzQzRkQxN0I3NEI2
MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MzQzRkIxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oICovOyB9OwogCQk3Q0M3RTNENzE3MjA4QzBGMDAz
QzUyNzcgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDN0UzRDYxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNj
cmlwdFdoaXRlTGlzdC50eHQgKi87IH07Ci0JCTdDRTMwREE5MTcxQjYzRDIwMEVDMzNFMSAvKiBG
cmFtZVNuYXBzaG90dGluZ01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDRTMwREE3MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGlu
Z01hYy5tbSAqLzsgfTsKLQkJN0NFMzBEQUExNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNo
b3R0aW5nTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Q0UzMERBODE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RDc0MUJEQTE3
NzIyNkFBMDA4NTkxNzAgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oIGluIENvcHkgR2VuZXJhdGVkIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxNDgwOUQxMzA0
MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCAqLzsgfTsKIAkJN0UxMkU5MEYxNUZBNUQz
QTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMTJFOTBEMTVGQTVEM0EwMDVFNDEyNiAv
KiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi87IH07CiAJCTdFMTJFOTEwMTVGQTVEM0Ew
MDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMTJFOTBFMTVGQTVEM0EwMDVFNDEyNiAv
KiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCAqLzsgfTsKQEAgLTUyMzgsNiArNTIzNSw4
IEBACiAJCUMzQ0YxN0E1MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMTE1QjAw
NjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMzQ0YxN0E2MTVCMDA2M0YwMDI3NkQzOSAvKiBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTIxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2Jz
ZXJ2ZXJSZWdpc3RyeS5jcHAgKi87IH07CiAJCUMzQ0YxN0E3MTVCMDA2M0YwMDI3NkQzOSAvKiBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDNENENjI5MjE4MzQ2QkVBMDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNENENjI5MDE4MzQ2
QkVBMDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdC5jcHAgKi87IH07CisJCUM0Q0Q2MjkzMTgzNDZC
RUEwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNENENjI5MTE4MzQ2QkVBMDA3RUJBRjEgLyogRnJhbWVTbmFw
c2hvdC5oICovOyB9OwogCQlDNTBCNTYxNjEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5n
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBC
NTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi87IH07CiAJCUM1MEI1
NjE3MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBCNTYxNTEyMTE5RDIzMDA4QjQ2RTAgLyog
R3JvdXBTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUM1MEQwRTgyMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEQwRTgw
MEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCAqLzsgfTsKQEAgLTg3MzAs
NyArODcyOSw2IEBACiAJCTY1QTY0MEYwMDUzM0JCMUYwMDg1RTc3NyAvKiBCbG9ja0V4Y2VwdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QmxvY2tFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQk2NUJGMDIyOTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRnJhbWVNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAv
KiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgdXNl
c1RhYnMgPSAwOyB9OwogCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVZpZXcuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyog
RnJhbWVWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVZpZXcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5NTgsOCArODk1Niw2IEBACiAJCTdD
NjEzNkY4MTcxMEMzNTIwMEZGNEE1NyAvKiBJbkZpbGVzUGFyc2VyLnBtICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFt
ZSA9IEluRmlsZXNQYXJzZXIucG07IHBhdGggPSBzY3JpcHRzL0luRmlsZXNQYXJzZXIucG07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNjEzNkY5MTcxMEMzNTIwMEZGNEE1NyAvKiBT
dGF0aWNTdHJpbmcucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gU3RhdGljU3RyaW5nLnBtOyBwYXRoID0g
c2NyaXB0cy9TdGF0aWNTdHJpbmcucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
QzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IElETlNjcmlwdFdoaXRlTGlzdC50eHQ7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTdDRTMwREE3MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGlu
Z01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZyYW1lU25h
cHNob3R0aW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0UzMERBODE3
MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVTbmFwc2hvdHRpbmdNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0UxMkU5MEQxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1l
c2hHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ3VzdG9tRmls
dGVyTWVzaEdlbmVyYXRvci5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMTJFOTBFMTVGQTVEM0EwMDVF
NDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwOyBwYXRoID0g
ZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVyZ2VQcmlvcml0eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIyNjMsNiArMTIyNTksOCBAQAogCQlDM0NGMTdBMTE1
QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMzQ0YxN0EyMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSWRUYXJnZXRPYnNl
cnZlclJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzNDRjE3QTMx
NUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRDRDYyOTAxODM0NkJFQTAwN0VCQUYxIC8qIEZyYW1l
U25hcHNob3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVT
bmFwc2hvdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0Q0Q2MjkxMTgzNDZC
RUEwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZyYW1lU25hcHNob3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUw
QjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyb3VwU2V0dGluZ3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0
b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTU4
Nyw2ICsxNTU4NSw4IEBACiAJCQkJNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmgg
Ki8sCiAJCQkJOTc0QTg2MjAxNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5jcHAgKi8sCiAJCQkJOTc0QTg2MjExNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVzdHJ1
Y3Rpb25PYnNlcnZlci5oICovLAorCQkJCUM0Q0Q2MjkwMTgzNDZCRUEwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90LmNwcCAqLywKKwkJCQlDNENENjI5MTE4MzQ2QkVBMDA3RUJBRjEgLyogRnJhbWVT
bmFwc2hvdC5oICovLAogCQkJCTY1QTIxNDgyMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUu
Y3BwICovLAogCQkJCTY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLywK
IAkJCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAqLywKQEAgLTE2
NTAxLDkgKzE2NTAxLDYgQEAKIAkJCQlBQkFGMjIwNzBDMDNCMUM3MDBCMEJDRjAgLyogQ2hyb21l
TWFjLm1tICovLAogCQkJCUE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxl
ck1hYy5tbSAqLywKIAkJCQk5M0MwOUE3RTBCMDY0RUVGMDA1QUJENEQgLyogRXZlbnRIYW5kbGVy
TWFjLm1tICovLAotCQkJCTY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAq
LywKLQkJCQk3Q0UzMERBODE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMu
aCAqLywKLQkJCQk3Q0UzMERBNzE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdN
YWMubW0gKi8sCiAJCQkJMUMyNjQ5N0IwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3BwICov
LAogCQkJCUUxQzJGMjQ4MTUzM0EyMTIwMDgzRjk3NCAvKiBTZXR0aW5nc01hYy5tbSAqLywKIAkJ
CQlGNTg3ODU0QzAyREUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUZyYW1lVmlldy5oICovLApAQCAt
MjI0MDEsNiArMjIzOTgsNyBAQAogCQkJCThBMTJFMzVEMTFGQTMzMjgwMDI1ODM2QSAvKiBEb2N1
bWVudExvYWRUaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUVEMkJBODNDMDlBMjRCOTEwMDZD
MEFDNCAvKiBEb2N1bWVudE1hcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UwNTdGQTYxMjIw
NzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQzRDRDYyOTMxODM0NkJFQTAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0OTQ3RkZFMTJGODBDRDIwMEEwRjYzMSAvKiBEb2N1bWVudE9yZGVyZWRN
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0ZCQUU4MEI1MTUyRUQwMDAxRjFENyAvKiBEb2N1
bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwNTg1MjkxN0ZERTAyQzAwNUYyQkNC
IC8qIE1lZGlhVHJhY2tDb25zdHJhaW50U2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTIyOTQ4LDcg
KzIyOTQ2LDYgQEAKIAkJCQk2MjhEMjE0RTEyMTMxRUY0MDA1NURDRkMgLyogRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNzAxODBGMjg5NTAwRkJBREI5
IC8qIENyeXB0b0tleVVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOUUwRTA5OUU2NDky
MDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTdDRTMwREFB
MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTcyMDVBQjAxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERpcmVjdG9yeURvY3Vt
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjI0LDEwICsyNjIyMSw4IEBACiAJCQkJOTMyRTE2
MDkwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkJBNzY2RTE2NjQyN0E4MDA1QkU1RDEgLyogRnJhbWVMb2Fk
UmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NUJGMDI0NTA5NzQ4MTkwMDBDNDMxOTYg
LyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwRDA5OUU2NDkyMDA1NkU1
ODEgLyogRnJhbWVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEE4Qzk2RUIwQkU2
OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJ
N0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDc5NjlEQUQxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDRGF0YUNoYW5u
ZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUEyMTQ4NDA5N0EzRjUzMDBCOTA1MEEg
LyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzkxQTEwMTgwMjM0MzkwMEEx
N0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2OTc1LDYgKzI2
OTcwLDcgQEAKIAkJCQlCMkZBM0Q5QTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdHRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjdCMjgyNzBDRUYwQzA3MDBEMzlENTQgLyogSlNTVkdH
bHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzYzRTExODFBMUNEQzAwQzA3
NEE1IC8qIEFWQXVkaW9DYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzRDRDYy
OTIxODM0NkJFQTAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMjREOTEyOTgxM0NBOTZERTAwRDIxOTE1IC8qIEpTU1ZHR2x5cGhSZWZFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUIyRkEzRDlDMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR0dyYWRp
ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTE3NEVDMkJDQ0FGMTdFQUUzRjQ2
RjggLyogSlNTVkdHcmFwaGljc0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL29iamMvRE9NLm1tCmluZGV4IGNjMDM2NTUyNmUzMTZlMDVkNWIxNWJiNzQ0NGMzYmIy
YmNmYTkwNTAuLmQzNzU5OTgyZGNlZDIyNGY4OGU2MTM2ZjUyNGJjYWNkM2UwZDU0MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0ICJE
T01Ob2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVByaXZhdGUuaCIKICNpbXBvcnQgIkRPTVJh
bmdlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRyYWdJbWFnZS5oIgogI2ltcG9ydCAiRm9udC5oIgog
I2ltcG9ydCAiRnJhbWUuaCIKLSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCiAjaW1w
b3J0ICJIVE1MRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJIVE1M
UGFyc2VySWRpb21zLmgiCkBAIC0yODksNyArMjg5LDcgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBr
aXQoV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgIFdlYkNvcmU6OkZyYW1l
KiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBmcmFtZS0+bm9kZUltYWdlKG5vZGUpLmdldCgp
OworICAgIHJldHVybiBbW2NyZWF0ZURyYWdJbWFnZUZvck5vZGUoKmZyYW1lLCBub2RlKSByZXRh
aW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKXRleHRSZWN0cwpAQCAtMzM1LDcg
KzMzNSw3IEBAIGlkIDxET01FdmVudFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBl
dmVudFRhcmdldCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
cmV0dXJuIFdlYkNvcmU6OnJhbmdlSW1hZ2UoZnJhbWUsIHJhbmdlLCBmb3JjZUJsYWNrVGV4dCk7
CisgICAgcmV0dXJuIFtbY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoKmZyYW1lLCByYW5nZSwgZm9y
Y2VCbGFja1RleHQpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopdGV4
dFJlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCmluZGV4IDlkMmUyNzUyZmRmMmI3YzY2NDJh
MjQyNGY4ODA2M2VjOGE3MWM3YzguLjgwMzhlNzg0NzA4NTgwODA3MGQ4N2YxYTdmMjllNDNkODBh
MzZkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCkBAIC0yNzcsMTAgKzI3NywxMSBAQCBE
cmFnSW1hZ2VSZWYgQ2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGxvY2F0aW9u
KSBjb25zdAogCiAgICAgaWYgKG1fZHJhZ0ltYWdlRWxlbWVudCkgewogICAgICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gbV9kcmFnSW1hZ2VFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZnJhbWUtPm5vZGVJbWFnZShtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCkp
OworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoKmZyYW1lLCBtX2Ry
YWdJbWFnZUVsZW1lbnQuZ2V0KCkpOwogICAgIH0KIAotICAgIHJldHVybiAwOyAvLyBXZSBkbyBu
b3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gY3JlYXRlIGEgZHJhZyBpbWFnZSwgdXNlIHRo
ZSBkZWZhdWx0IGljb24uCisgICAgLy8gV2UgZG8gbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9u
IHRvIGNyZWF0ZSBhIGRyYWcgaW1hZ2UsIHVzZSB0aGUgZGVmYXVsdCBpY29uLgorICAgIHJldHVy
biBudWxscHRyOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
bGlwYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tCmluZGV4
IDc2Y2E2ZmNhM2U0MjQwN2I1ZjhlN2IzNWU2NTg3MzdjMjExM2U4ZmIuLjlmOWJlMDFmZGQzMmJm
YjYzZmYyNzhkZDkyZGVmNDU0MTA4NWNmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9DbGlwYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZE1hYy5t
bQpAQCAtMjgsNyArMjgsNyBAQAogCiAjaW1wb3J0ICJDYWNoZWRJbWFnZS5oIgogI2ltcG9ydCAi
RWxlbWVudC5oIgotI2ltcG9ydCAiRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCIKKyNpbXBvcnQgIkRy
YWdJbWFnZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDE2ICszNywxNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBDbGlwYm9hcmQ6OmRyYWdJbWFnZSBpbiBDbGlwYm9hcmQu
Y3BwIGRvZXMgbm90IGhhbmRsZSBjb3JyZWN0bHksIHNvIG11c3QgcmVzb2x2ZSB0aGF0IGFzIHdl
bGwuCiBEcmFnSW1hZ2VSZWYgQ2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGxv
Y2F0aW9uKSBjb25zdAogewotICAgIE5TSW1hZ2UgKnJlc3VsdCA9IG5pbDsKKyAgICBEcmFnSW1h
Z2VSZWYgcmVzdWx0ID0gbmlsOwogICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fZHJhZ0ltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFt
ZSgpKSB7Ci0gICAgICAgICAgICBOU1JlY3QgaW1hZ2VSZWN0OwotICAgICAgICAgICAgTlNSZWN0
IGVsZW1lbnRSZWN0OwotICAgICAgICAgICAgcmVzdWx0ID0gc25hcHNob3REcmFnSW1hZ2UoZnJh
bWUsIG1fZHJhZ0ltYWdlRWxlbWVudC5nZXQoKSwgJmltYWdlUmVjdCwgJmVsZW1lbnRSZWN0KTsK
KyAgICAgICAgICAgIEludFJlY3QgaW1hZ2VSZWN0OworICAgICAgICAgICAgSW50UmVjdCBlbGVt
ZW50UmVjdDsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZURyYWdJbWFnZUZvckltYWdlKCpm
cmFtZSwgbV9kcmFnSW1hZ2VFbGVtZW50LmdldCgpLCBpbWFnZVJlY3QsIGVsZW1lbnRSZWN0KTsK
ICAgICAgICAgICAgIC8vIENsaWVudCBzcGVjaWZpZXMgcG9pbnQgcmVsYXRpdmUgdG8gZWxlbWVu
dCwgbm90IHRoZSB3aG9sZSBpbWFnZSwgd2hpY2ggbWF5IGluY2x1ZGUgY2hpbGQKICAgICAgICAg
ICAgIC8vIGxheWVycyBzcHJlYWQgb3V0IGFsbCBvdmVyIHRoZSBwbGFjZS4KLSAgICAgICAgICAg
IGxvY2F0aW9uLnNldFgoZWxlbWVudFJlY3Qub3JpZ2luLnggLSBpbWFnZVJlY3Qub3JpZ2luLngg
KyBtX2RyYWdMb2NhdGlvbi54KCkpOwotICAgICAgICAgICAgbG9jYXRpb24uc2V0WShpbWFnZVJl
Y3Quc2l6ZS5oZWlnaHQgLSAoZWxlbWVudFJlY3Qub3JpZ2luLnkgLSBpbWFnZVJlY3Qub3JpZ2lu
LnkgKyBtX2RyYWdMb2NhdGlvbi55KCkpKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNldFgoZWxl
bWVudFJlY3QueCgpIC0gaW1hZ2VSZWN0LngoKSArIG1fZHJhZ0xvY2F0aW9uLngoKSk7CisgICAg
ICAgICAgICBsb2NhdGlvbi5zZXRZKGltYWdlUmVjdC5oZWlnaHQoKSAtIChlbGVtZW50UmVjdC55
KCkgLSBpbWFnZVJlY3QueSgpICsgbV9kcmFnTG9jYXRpb24ueSgpKSk7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIHJlc3VsdCA9IG1fZHJhZ0ltYWdl
LT5pbWFnZSgpLT5nZXROU0ltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCmluZGV4IDdlYjI0OWRmN2ZmOWI1NWE4ZWNlNWFlN2ZmNDcyZTBjZDdiYWMyNDcuLmFhMjMx
ZjU4ODZlNDhiOWEwMWU5ZWI4M2ZhYmY0YzRjOGZiMWQ2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRHJhZ0FjdGlv
bnMuaCIKICNpbmNsdWRlICJEcmFnQ2xpZW50LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKKyNp
bmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJEcmFnU2Vzc2lvbi5oIgogI2luY2x1ZGUg
IkRyYWdTdGF0ZS5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtNzgwLDcgKzc4MSw3IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUm
IHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAgIH0KICAgICAgICAgbV9jbGllbnQud2lsbFBl
cmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmln
aW4sIGNsaXBib2FyZCk7CiAgICAgICAgIGlmICghZHJhZ0ltYWdlKSB7Ci0gICAgICAgICAgICBk
cmFnSW1hZ2UgPSBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oc3JjLmRyYWdJbWFnZUZvclNl
bGVjdGlvbigpLCBEcmFnSW1hZ2VBbHBoYSk7CisgICAgICAgICAgICBkcmFnSW1hZ2UgPSBkaXNz
b2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oY3JlYXRlRHJhZ0ltYWdlRm9yRnJhbWVTZWxlY3Rpb24o
c3JjKSwgRHJhZ0ltYWdlQWxwaGEpOwogICAgICAgICAgICAgZHJhZ0xvYyA9IGRyYWdMb2NGb3JT
ZWxlY3Rpb25EcmFnKHNyYyk7CiAgICAgICAgICAgICBtX2RyYWdPZmZzZXQgPSBJbnRQb2ludChk
cmFnT3JpZ2luLngoKSAtIGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnkoKSAtIGRyYWdMb2MueSgp
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA2MjQxZWUzYzk1MmI0NjE1NWMy
OTIwNmIwOGY5MDFlMDBlNTJmNTgwLi41YzAzNjExZThiNzUxZjkxNmRlMmVkNGI3MjZiNjM2MWI3
MmZhYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTY2LDEwOCArOTY2LDQgQEAgYm9vbCBG
cmFtZTo6aXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdJTikKLXN0cnVjdCBTY29w
ZWRGcmFtZVBhaW50aW5nU3RhdGUgewotICAgIFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZShGcmFt
ZSogZnJhbWUsIE5vZGUqIG5vZGUpCi0gICAgICAgIDogZnJhbWUoZnJhbWUpCi0gICAgICAgICwg
bm9kZShub2RlKQotICAgICAgICAsIHBhaW50QmVoYXZpb3IoZnJhbWUtPnZpZXcoKS0+cGFpbnRC
ZWhhdmlvcigpKQotICAgICAgICAsIGJhY2tncm91bmRDb2xvcihmcmFtZS0+dmlldygpLT5iYXNl
QmFja2dyb3VuZENvbG9yKCkpCi0gICAgewotICAgICAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+
cmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmIChub2RlKQotICAgICAgICAgICAgbm9kZS0+cmVuZGVy
ZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOwotICAgIH0KLQotICAgIH5TY29wZWRGcmFtZVBh
aW50aW5nU3RhdGUoKQotICAgIHsKLSAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIo
KSkKLSAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURyYWdTdGF0ZShmYWxzZSk7
Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7
Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3Vu
ZENvbG9yKTsKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJhdygwKTsKLSAgICB9
Ci0KLSAgICBGcmFtZSogZnJhbWU7Ci0gICAgTm9kZSogbm9kZTsKLSAgICBQYWludEJlaGF2aW9y
IHBhaW50QmVoYXZpb3I7Ci0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yOwotfTsKLQotRHJhZ0lt
YWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUtPnJl
bmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgY29uc3QgU2NvcGVkRnJh
bWVQYWludGluZ1N0YXRlIHN0YXRlKHRoaXMsIG5vZGUpOwotCi0gICAgbV92aWV3LT5zZXRQYWlu
dEJlaGF2aW9yKHN0YXRlLnBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBv
c2l0aW5nTGF5ZXJzKTsKLQotICAgIC8vIFdoZW4gZ2VuZXJhdGluZyB0aGUgZHJhZyBpbWFnZSBm
b3IgYW4gZWxlbWVudCwgaWdub3JlIHRoZSBkb2N1bWVudCBiYWNrZ3JvdW5kLgotICAgIG1fdmll
dy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwotICAgIG1fZG9j
LT51cGRhdGVMYXlvdXQoKTsKLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIEVu
YWJsZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZS4KLQotICAgIC8vIERvY3VtZW50Ojp1
cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2luYWwgcmVuZGVyZXIuCi0g
ICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsK
LSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXIt
PnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciA9IDE7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3Ig
PSBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgcGFpbnRpbmdSZWN0LnNldFdpZHRo
KHBhaW50aW5nUmVjdC53aWR0aCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50aW5n
UmVjdC5zZXRIZWlnaHQocGFpbnRpbmdSZWN0LmhlaWdodCgpICogZGV2aWNlU2NhbGVGYWN0b3Ip
OwotCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShw
YWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJH
QikpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBidWZm
ZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0
LnkoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50
aW5nUmVjdC5tYXhYKCksIHBhaW50aW5nUmVjdC5tYXhZKCkpKTsKLQotICAgIG1fdmlldy0+cGFp
bnRDb250ZW50cyhidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0KTsKLQotICAgIFJlZlB0
cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZSgpOwotCi0gICAgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24ocmVuZGVyZXItPnNob3VsZFJl
c3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwotI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJ
T04pCi0gICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShy
ZW5kZXJlci0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotI2VuZGlmCi0gICAgcmV0dXJu
IGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZS5nZXQoKSwgb3JpZW50YXRpb25EZXNjcmlw
dGlvbik7Ci19Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkK
LXsKLSAgICBpZiAoIXNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBjb25zdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgc3RhdGUodGhpcywgMCk7Ci0gICAg
bV92aWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsKLSAg
ICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7Ci0KLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IGVu
Y2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uKCkuYm91bmRzKCkpOwotCi0gICAgZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IgPSAxOwotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIGRldmljZVNjYWxlRmFj
dG9yID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIHBhaW50aW5nUmVjdC5zZXRX
aWR0aChwYWludGluZ1JlY3Qud2lkdGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBwYWlu
dGluZ1JlY3Quc2V0SGVpZ2h0KHBhaW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxlRmFj
dG9yKTsKLQotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVh
dGUocGFpbnRpbmdSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpKTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgYnVmZmVy
LT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55
KCkpOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGlu
Z1JlY3QubWF4WCgpLCBwYWludGluZ1JlY3QubWF4WSgpKSk7Ci0KLSAgICBtX3ZpZXctPnBhaW50
Q29udGVudHMoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7Ci0KLSAgICBSZWZQdHI8
SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoKTsKLSAgICByZXR1cm4gY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24o
KSk7Ci19Ci0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgK
aW5kZXggODQwN2U5ZTJiY2YzZWVmZWRkYmYwNTMxYmU2Y2U5Mjc5NDU3Mjc3Yy4uNWYxODY2ZmUy
MDJmY2ZlYTY0NDJjMGJiZWY4MjBmNTZlZDIzZTc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjks
NyArMjksNiBAQAogI2RlZmluZSBGcmFtZV9oCiAKICNpbmNsdWRlICJBZGp1c3RWaWV3U2l6ZU9y
Tm90LmgiCi0jaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIK
ICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC01OCwxMSAr
NTcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEVkaXRvcjsKICAgICBjbGFz
cyBFbGVtZW50OwogICAgIGNsYXNzIEV2ZW50SGFuZGxlcjsKKyAgICBjbGFzcyBGbG9hdFNpemU7
CiAgICAgY2xhc3MgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyOwogICAgIGNsYXNzIEZyYW1lU2Vs
ZWN0aW9uOwogICAgIGNsYXNzIEZyYW1lVmlldzsKICAgICBjbGFzcyBIVE1MRnJhbWVPd25lckVs
ZW1lbnQ7CiAgICAgY2xhc3MgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7CisgICAgY2xhc3MgSW1hZ2VC
dWZmZXI7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBNYWluRnJhbWU7CiAgICAgY2xh
c3MgTm9kZTsKQEAgLTE3Nyw5ICsxNzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgU3RyaW5nIGRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CiAKLSAgICAgICAgRHJhZ0ltYWdlUmVmIG5vZGVJbWFnZShOb2RlKik7Ci0gICAgICAg
IERyYWdJbWFnZVJlZiBkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsKLQogICAgICAgICBWaXNpYmxl
UG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9p
bnQpOwogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnRBdFBvaW50KGNvbnN0IEludFBvaW50JiB3
aW5kb3dQb2ludCk7CiAgICAgICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnQoY29u
c3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVNuYXBzaG90LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGU3MDcyMmY0NzBjM2NkNGNiYTYwMTVhYjExNjJiNDA3YzQxNGU5Ywot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdC5jcHAK
QEAgLTAsMCArMSw3OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBv
ZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiRnJhbWVTbmFwc2hv
dC5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUGFn
ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZyYW1lU25hcHNob3Q6OkZyYW1lU25hcHNo
b3QoT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIpCis6IG1fYnVmZmVyKGJ1ZmZlci5yZWxlYXNl
KCkpIHsgfQorCitGcmFtZVNuYXBzaG90Ojp+RnJhbWVTbmFwc2hvdCgpIHsgfQorCitzdGQ6OnVu
aXF1ZV9wdHI8RnJhbWVTbmFwc2hvdD4gRnJhbWVTbmFwc2hvdDo6Y3JlYXRlRnJvbVJlY3QoRnJh
bWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGJvb2wgaW5jbHVkZVNlbGVjdGlv
biwgYm9vbCB1c2VWaWV3Q29vcmRpbmF0ZXMpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8RnJhbWVTbmFwc2hvdD4oY3JlYXRlSW1hZ2VGcm9tRnJhbWVSZWN0KGZyYW1lLCBpbWFnZVJl
Y3QsIGluY2x1ZGVTZWxlY3Rpb24sIHVzZVZpZXdDb29yZGluYXRlcykucmVsZWFzZSgpKTsKK30K
KworT3duUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUZyb21GcmFtZVJlY3QoRnJhbWUmIGZy
YW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGJvb2wgaW5jbHVkZVNlbGVjdGlvbiwgYm9v
bCB1c2VWaWV3Q29vcmRpbmF0ZXMpCit7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0KCk7CisKKyAgICBJbnRSZWN0IHVzZWRSZWN0KGltYWdlUmVjdCk7CisgICAgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IgPSAxOworICAgIGlmIChmcmFtZS5wYWdlKCkpCisgICAgICAgIGRldmlj
ZVNjYWxlRmFjdG9yID0gZnJhbWUucGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIHVz
ZWRSZWN0LnNldFdpZHRoKGltYWdlUmVjdC53aWR0aCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwor
ICAgIHVzZWRSZWN0LnNldEhlaWdodChpbWFnZVJlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZh
Y3Rvcik7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUodXNlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJ1
ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXVzZWRSZWN0LngoKSwgLXVzZWRSZWN0LnkoKSk7
CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHVzZWRSZWN0Lm1h
eFgoKSwgdXNlZFJlY3QubWF4WSgpKSk7CisKKyAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25h
cHNob3Qgc2VsZWN0aW9uTW9kZSA9IGluY2x1ZGVTZWxlY3Rpb24gPyBGcmFtZVZpZXc6OkluY2x1
ZGVTZWxlY3Rpb24gOiBGcmFtZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rpb247CisgICAgRnJhbWVWaWV3
OjpDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlTW9kZSA9IHVzZVZpZXdDb29y
ZGluYXRlcyA/IEZyYW1lVmlldzo6Vmlld0Nvb3JkaW5hdGVzIDogRnJhbWVWaWV3OjpEb2N1bWVu
dENvb3JkaW5hdGVzOworICAgIGZyYW1lLnZpZXcoKS0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90
KGJ1ZmZlci0+Y29udGV4dCgpLCB1c2VkUmVjdCwgc2VsZWN0aW9uTW9kZSwgY29vcmRpbmF0ZU1v
ZGUpOworICAgIHJldHVybiBidWZmZXIucmVsZWFzZSgpOworfQorCitTdHJpbmcgRnJhbWVTbmFw
c2hvdDo6dG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSogcXVhbGl0eSkK
K3sKKyAgICByZXR1cm4gYnVmZmVyKCkudG9EYXRhVVJMKG1pbWVUeXBlLCBxdWFsaXR5KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVNuYXBzaG90LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43NjRjYjZiZjY2OTFhMjBkYjliODllYjY4MDNkOGVkZDIzZDVhMzNmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90LmgKQEAgLTAs
MCArMSw1OSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNo
aW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgRnJhbWVTbmFwc2hvdF9oCisjZGVmaW5lIEZyYW1lU25hcHNob3RfaAorCisj
aW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgSW50UmVjdDsKK2Ns
YXNzIEltYWdlQnVmZmVyOworY2xhc3MgTm9kZTsKKworLy8gVXNlZCB0byB0YWtlIGJvdGggc2Ny
ZWVuc2hvdHMgYW5kIGltYWdlcyBmb3IgRHJhZ0ltYWdlLgorT3duUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUZyb21GcmFtZVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgYm9vbCBpbmNs
dWRlU2VsZWN0aW9uID0gdHJ1ZSwgYm9vbCB1c2VWaWV3Q29vcmRpbmF0ZXMgPSB0cnVlKTsKKwor
Ly8gVGhpcyBjbGFzcyBoaWRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgRnJhbWVTbmFwc2hvdDo6
dG9EYXRhVVJMIGZyb20gZW1iZWRkZXJzLgorY2xhc3MgRnJhbWVTbmFwc2hvdCB7CitwdWJsaWM6
CisgICAgRnJhbWVTbmFwc2hvdChPd25QdHI8SW1hZ2VCdWZmZXI+KTsKKyAgICB+RnJhbWVTbmFw
c2hvdCgpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RnJhbWVTbmFwc2hvdD4gY3JlYXRl
RnJvbVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgYm9vbCBpbmNsdWRlU2VsZWN0aW9uID0g
dHJ1ZSwgYm9vbCB1c2VWaWV3Q29vcmRpbmF0ZXMgPSB0cnVlKTsKKworICAgIFN0cmluZyB0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlKiBxdWFsaXR5ID0gbnVsbHB0cik7
CisgICAgSW1hZ2VCdWZmZXImIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuICptX2J1ZmZlcjsgfQor
cHJpdmF0ZToKKworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9idWZmZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBGcmFtZVNuYXBzaG90X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRnJhbWVNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZmIx
ZjkxYmNiZDZmMDYyN2E2MWQxZTk0ZGU5YjcxNGE4YjU0MzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVN
YWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBv
cC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
RnJhbWUuaCIKLQotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lTG9hZGVyQ2xp
ZW50LmgiCi0jaW1wb3J0ICJGcmFtZVNlbGVjdGlvbi5oIgotI2ltcG9ydCAiRnJhbWVTbmFwc2hv
dHRpbmdNYWMuaCIKLSNpbXBvcnQgIkZyYW1lVmlldy5oIgotI2ltcG9ydCAiUmVuZGVyT2JqZWN0
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1h
Z2UoTm9kZSogbm9kZSkKLXsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7IC8vIGZvcmNlcyBz
dHlsZSByZWNhbGMKLQotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJl
cigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgTGF5b3V0
UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgTlNSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBl
ZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAg
ICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1Yi10cmVl
IGRyYXdpbmcgbW9kZQotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QodGhpcywg
cGFpbnRpbmdSZWN0KTsKLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcoMCk7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi1EcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlv
bigpCi17Ci0gICAgaWYgKCFzZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuIHNlbGVjdGlvbkltYWdlKHRoaXMpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBz
aG90dGluZ01hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdN
YWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhYjY3ZTc2NTgxNGFlNmNiYzkw
MWJhZDQ0YWZkMTUzZjg2MmEyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5o
CisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRnJhbWVT
bmFwc2hvdHRpbmdNYWNfaAotI2RlZmluZSBGcmFtZVNuYXBzaG90dGluZ01hY19oCi0KLU9CSkNf
Q0xBU1MgTlNJbWFnZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGcmFtZTsKLWNs
YXNzIFJhbmdlOwotY2xhc3MgTm9kZTsKLQotTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2UoRnJhbWUq
LCBib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpOwotTlNJbWFnZSogcmFuZ2VJbWFnZShGcmFt
ZSosIFJhbmdlKiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKTsKLU5TSW1hZ2UqIHNuYXBz
aG90RHJhZ0ltYWdlKEZyYW1lKiwgTm9kZSosIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVs
ZW1lbnRSZWN0KTsKLU5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoRnJhbWUqLCBOU1JlY3QpOwotCi19
Ci0KLSNlbmRpZiAvLyBGcmFtZVNuYXBzaG90dGluZ01hY19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlOTJjMmYyM2NiMTdiZDAzZDRlOGE1ZWUxOTUxNGFjNDM5MWQxOWViLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTY4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENvcHlyaWdodCAoQykg
MjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgot
Ci0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKLSNpbXBvcnQgIkRvY3VtZW50LmgiCi0jaW1w
b3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiRnJhbWVTZWxlY3Rpb24uaCIKLSNpbXBvcnQgIkZyYW1l
Vmlldy5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW1wb3J0ICJSYW5nZS5oIgot
I2ltcG9ydCAiUmVuZGVyVmlldy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5TSW1hZ2Uq
IGltYWdlRnJvbVJlY3QoRnJhbWUqIGZyYW1lLCBOU1JlY3QgcmVjdCkKLXsKLSAgICBQYWludEJl
aGF2aW9yIG9sZEJlaGF2aW9yID0gZnJhbWUtPnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpOwotICAg
IGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IgfCBQYWludEJlaGF2
aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICAKLSAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7Ci0gICAgCi0gICAgTlNJbWFnZSogcmVzdWx0SW1hZ2UgPSBbW1tOU0ltYWdl
IGFsbG9jXSBpbml0V2l0aFNpemU6cmVjdC5zaXplXSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAg
aWYgKHJlY3Quc2l6ZS53aWR0aCAhPSAwICYmIHJlY3Quc2l6ZS5oZWlnaHQgIT0gMCkgewotI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBbcmVzdWx0SW1hZ2Ugc2V0
RmxpcHBlZDpZRVNdOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgICAgICBbcmVz
dWx0SW1hZ2UgbG9ja0ZvY3VzXTsKLQotICAgICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3ND
b250ZXh0KChDR0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0g
Z3JhcGhpY3NQb3J0XSk7ICAgICAgICAKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsK
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtcmVjdC5vcmlnaW4ueCwgLXJlY3Qu
b3JpZ2luLnkpOwotICAgICAgICBmcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKCZncmFwaGlj
c0NvbnRleHQsIEludFJlY3QocmVjdCkpOwotICAgICAgICBncmFwaGljc0NvbnRleHQucmVzdG9y
ZSgpOwotCi0gICAgICAgIFtyZXN1bHRJbWFnZSB1bmxvY2tGb2N1c107Ci0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVw
cmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAgIFtyZXN1bHRJbWFnZSBzZXRGbGlwcGVkOk5P
XTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICB9Ci0gICAgCi0gICAgZnJhbWUt
PnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7Ci0gICAgcmV0dXJuIHJlc3Vs
dEltYWdlOwotICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgCi0gICAg
ZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7Ci0gICAgcmV0dXJu
IG5pbDsKLX0KLQotTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2UoRnJhbWUqIGZyYW1lLCBib29sIGZv
cmNlQmxhY2tUZXh0KQotewotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFp
bnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQgPyBQYWludEJlaGF2aW9y
Rm9yY2VCbGFja1RleHQgOiAwKSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91
dCgpOwotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QoZnJhbWUsIGZyYW1lLT5z
ZWxlY3Rpb24oKS5ib3VuZHMoKSk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlv
cihQYWludEJlaGF2aW9yTm9ybWFsKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1OU0ltYWdl
ICpyYW5nZUltYWdlKEZyYW1lKiBmcmFtZSwgUmFuZ2UqIHJhbmdlLCBib29sIGZvcmNlQmxhY2tU
ZXh0KQotewotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlv
clNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQgPyBQYWludEJlaGF2aW9yRm9yY2VCbGFj
a1RleHQgOiAwKSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwotICAg
IFJlbmRlclZpZXcqIHZpZXcgPSBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7Ci0gICAgaWYgKCF2
aWV3KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgUG9zaXRpb24gc3RhcnQgPSByYW5nZS0+
c3RhcnRQb3NpdGlvbigpOwotICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHN0YXJ0LmRvd25zdHJl
YW0oKTsKLSAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRl
cHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgIHN0YXJ0ID0gY2FuZGlkYXRlOwot
Ci0gICAgUG9zaXRpb24gZW5kID0gcmFuZ2UtPmVuZFBvc2l0aW9uKCk7Ci0gICAgY2FuZGlkYXRl
ID0gZW5kLnVwc3RyZWFtKCk7Ci0gICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYm
IGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQotICAgICAgICBlbmQgPSBj
YW5kaWRhdGU7Ci0KLSAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpIHx8IHN0
YXJ0ID09IGVuZCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFJlbmRlck9iamVjdCogc2F2
ZWRTdGFydFJlbmRlcmVyOwotICAgIGludCBzYXZlZFN0YXJ0T2Zmc2V0OwotICAgIFJlbmRlck9i
amVjdCogc2F2ZWRFbmRSZW5kZXJlcjsKLSAgICBpbnQgc2F2ZWRFbmRPZmZzZXQ7Ci0gICAgdmll
dy0+Z2V0U2VsZWN0aW9uKHNhdmVkU3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNldCwgc2F2
ZWRFbmRSZW5kZXJlciwgc2F2ZWRFbmRPZmZzZXQpOwotCi0gICAgUmVuZGVyT2JqZWN0KiBzdGFy
dFJlbmRlcmVyID0gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBpZiAo
IXN0YXJ0UmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBSZW5kZXJPYmplY3Qq
IGVuZFJlbmRlcmVyID0gZW5kLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgaWYg
KCFlbmRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHZpZXctPnNldFNlbGVj
dGlvbihzdGFydFJlbmRlcmVyLCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRS
ZW5kZXJlciwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIFJlbmRlclZpZXc6OlJlcGFp
bnROb3RoaW5nKTsKLSAgICBOU0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KGZyYW1lLCB2
aWV3LT5zZWxlY3Rpb25Cb3VuZHMoKSk7Ci0gICAgdmlldy0+c2V0U2VsZWN0aW9uKHNhdmVkU3Rh
cnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNldCwgc2F2ZWRFbmRSZW5kZXJlciwgc2F2ZWRFbmRP
ZmZzZXQsIFJlbmRlclZpZXc6OlJlcGFpbnROb3RoaW5nKTsKLQotICAgIGZyYW1lLT52aWV3KCkt
PnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvck5vcm1hbCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotCi1OU0ltYWdlKiBzbmFwc2hvdERyYWdJbWFnZShGcmFtZSogZnJhbWUsIE5vZGUq
IG5vZGUsIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnRSZWN0KQotewotICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVy
ZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgcmVuZGVyZXItPnVwZGF0ZURyYWdT
dGF0ZSh0cnVlKTsgICAgLy8gbWFyayBkcmFnZ2VkIG5vZGVzIChzbyB0aGV5IHBpY2sgdXAgdGhl
IHJpZ2h0IENTUykKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7ICAvLyBm
b3JjZXMgc3R5bGUgcmVjYWxjIC0gbmVlZGVkIHNpbmNlIGNoYW5naW5nIHRoZSBkcmFnIHN0YXRl
IG1pZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW1wbHkg
bmV3IHN0eWxlcywgcGx1cyBKUyBjb3VsZCBoYXZlIGNoYW5nZWQgb3RoZXIgdGhpbmdzCi0KLQot
ICAgIC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3Jp
Z2luYWwgUmVuZGVyRWxlbWVudC4KLSAgICByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0g
ICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIExheW91dFJlY3Qg
dG9wTGV2ZWxSZWN0OwotICAgIE5TUmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwotCi0gICAgaWYg
KE5TSXNFbXB0eVJlY3QocGFpbnRpbmdSZWN0KSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1
Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3Qo
ZnJhbWUsIHBhaW50aW5nUmVjdCk7Ci0gICAgcmVuZGVyZXItPnVwZGF0ZURyYWdTdGF0ZShmYWxz
ZSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwotICAgIGZyYW1lLT52
aWV3KCktPnNldE5vZGVUb0RyYXcoMCk7Ci0KLSAgICBpZiAoZWxlbWVudFJlY3QpCi0gICAgICAg
ICplbGVtZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9wTGV2ZWxSZWN0KTsKLSAgICBp
ZiAoaW1hZ2VSZWN0KQotICAgICAgICAqaW1hZ2VSZWN0ID0gcGFpbnRpbmdSZWN0OwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
d2luL0ZyYW1lV2luLmNwcAppbmRleCA1YWFmM2E2NzhjOWU1NDNhZjY4M2IzN2FkNWIwNmNjZTA2
NDQzYjlmLi45Njc0ZjE3NjhmNWRkODQyNWI2MGM3YWYxNmYwZjFmN2Q2Zjc2MzFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCkBAIC01NywzMCArNTcsNCBAQCBHRElPYmplY3Q8
SEJJVE1BUD4gaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNr
VGV4dCkKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLURyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0lt
YWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQotICAg
ICAgICByZXR1cm4gaW1hZ2VGcm9tU2VsZWN0aW9uKHRoaXMsIGZhbHNlKS5sZWFrKCk7Ci0KLSAg
ICByZXR1cm4gMDsKLX0KLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9k
ZSkKLXsKLSAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLQotICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgSW50UmVj
dCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jv
b3RSZWN0KHRvcExldmVsUmVjdCkpOwotCi0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUp
OyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUKLSAgICBHRElPYmplY3Q8
SEJJVE1BUD4gcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdCh0aGlzLCBwYWludGluZ1JlY3QpOwotICAg
IG1fdmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKLQotICAgIHJldHVybiByZXN1bHQubGVhaygpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3dpbi9GcmFtZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uaApp
bmRleCAzYTI3MjNlNjNkNmQ3ZTdlYzA0NGNiMTJmMmVhN2JkMDZjZmU2NTlmLi4yNjk3MjVjMWY5
YjliODBkNTc4MTQ4NGY5MzFhYjI1ZGQzYWUzMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3dpbi9GcmFtZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1l
V2luLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnRSZWN0OwogCiBH
RElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tUmVjdChjb25zdCBGcmFtZSosIEludFJlY3QmKTsK
LUdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUqLCBib29sIGZvcmNl
V2hpdGVUZXh0KTsKK0dESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUq
LCBib29sIGZvcmNlQmxhY2tUZXh0KTsKIHZvaWQgY29tcHV0ZVBhZ2VSZWN0c0ZvckZyYW1lKEZy
YW1lKiwgY29uc3QgSW50UmVjdCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnaHQsIGZsb2F0
IGZvb3RlckhlaWdodCwgZmxvYXQgdXNlclNjYWxlRmFjdG9yLCBWZWN0b3I8SW50UmVjdD4mIG91
dFBhZ2VzLCBpbnQmIG91dFBhZ2VIZWlnaHQpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAppbmRleCBiODFhZmQ1NzllODI5M2VlZmEy
YmE5M2I5YmI1NWMxZjUwNzZjZjQ3Li44MDkyZmIxM2ZiMDY1ZTYxOTU4MmI2OTc0YTk0OGZjMWQz
YWM5MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKQEAgLTI4LDYgKzI4
LDE2IEBACiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUgIkZyYW1lU25hcHNob3QuaCIK
KyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1
ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5o
IgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAog
RHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNv
bnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEludFNpemUmIHNpemUpCkBAIC01OCwxNCArNjgs
MjAxIEBAIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJhZ0ltYWdlUmVmIGlt
YWdlLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjCiAgICAgICAgIHNjYWxleCAqPSByZXNpemVS
YXRpbzsKICAgICAgICAgc2NhbGV5ICo9IHJlc2l6ZVJhdGlvOwogICAgIH0KLSAgICAKKwogICAg
IHJldHVybiBzY2FsZURyYWdJbWFnZShpbWFnZSwgRmxvYXRTaXplKHNjYWxleCwgc2NhbGV5KSk7
CiB9CiAKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShGcmFtZSYgZnJhbWUs
IFJhbmdlKiByYW5nZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKK3sKKyAgICBmcmFtZS52aWV3KCkt
PnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFj
a1RleHQgPyBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQgOiAwKSk7CisgICAgZnJhbWUuZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgUmVuZGVyVmlldyogdmlldyA9IGZyYW1lLmNv
bnRlbnRSZW5kZXJlcigpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlLT5zdGFydFBvc2l0aW9uKCk7CisgICAgUG9z
aXRpb24gY2FuZGlkYXRlID0gc3RhcnQuZG93bnN0cmVhbSgpOworICAgIGlmIChjYW5kaWRhdGUu
ZGVwcmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgc3RhcnQgPSBjYW5kaWRhdGU7CisKKyAgICBQb3NpdGlvbiBlbmQgPSByYW5n
ZS0+ZW5kUG9zaXRpb24oKTsKKyAgICBjYW5kaWRhdGUgPSBlbmQudXBzdHJlYW0oKTsKKyAgICBp
ZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2Rl
KCktPnJlbmRlcmVyKCkpCisgICAgICAgIGVuZCA9IGNhbmRpZGF0ZTsKKworICAgIGlmIChzdGFy
dC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkgfHwgc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIFJlbmRlck9iamVjdCogc2F2ZWRTdGFydFJlbmRlcmVyOworICAg
IGludCBzYXZlZFN0YXJ0T2Zmc2V0OworICAgIFJlbmRlck9iamVjdCogc2F2ZWRFbmRSZW5kZXJl
cjsKKyAgICBpbnQgc2F2ZWRFbmRPZmZzZXQ7CisgICAgdmlldy0+Z2V0U2VsZWN0aW9uKHNhdmVk
U3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNldCwgc2F2ZWRFbmRSZW5kZXJlciwgc2F2ZWRF
bmRPZmZzZXQpOworCisgICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnQuZGVw
cmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXN0YXJ0UmVuZGVyZXIpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciA9IGVu
ZC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgIGlmICghZW5kUmVuZGVyZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgdmlldy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVu
ZGVyZXIsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJlbmRlcmVyLCBlbmQu
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOwor
ICAgIERyYWdJbWFnZVJlZiByZXN1bHQgPSBjcmVhdGVEcmFnSW1hZ2VGb3JSZWN0KGZyYW1lLCB2
aWV3LT5zZWxlY3Rpb25Cb3VuZHMoKSwgZmFsc2UpOworICAgIHZpZXctPnNldFNlbGVjdGlvbihz
YXZlZFN0YXJ0UmVuZGVyZXIsIHNhdmVkU3RhcnRPZmZzZXQsIHNhdmVkRW5kUmVuZGVyZXIsIHNh
dmVkRW5kT2Zmc2V0LCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisKKyAgICBmcmFtZS52
aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvck5vcm1hbCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclJlY3QoRnJhbWUm
IGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJlY3QsIGJvb2wgaW5jbHVkZVNlbGVjdGlvbikK
K3sKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IGNyZWF0ZUltYWdlRnJvbUZyYW1l
UmVjdChmcmFtZSwgaW1hZ2VSZWN0LCBpbmNsdWRlU2VsZWN0aW9uLCB0cnVlKTsKKyAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoKTsKKyAgICByZXR1cm4gY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oKSk7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZShGcmFtZSYg
ZnJhbWUsIE5vZGUqIG5vZGUsIEludFJlY3QmIGltYWdlUmVjdCwgSW50UmVjdCYgZWxlbWVudFJl
Y3QpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Cisg
ICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBNYXJr
IGRyYWdnZWQgbm9kZXMgdG8gZm9yY2UgZHJhZy1zcGVjaWZpYyBzdHlsZSByZWNhbGN1bGF0aW9u
LgorICAgIHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7CisgICAgZnJhbWUuZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0KCk7CisKKyAgICAvLyBEb2N1bWVudDo6dXBkYXRlTGF5b3V0IG1h
eSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIFJlbmRlckVsZW1lbnQuCisgICAgcmVuZGVy
ZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgSW50UmVjdCBw
YWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RS
ZWN0KHRvcExldmVsUmVjdCkpOworCisgICAgaWYgKHBhaW50aW5nUmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZnJhbWUudmlldygpLT5zZXROb2RlVG9EcmF3
KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUKKyAgICBEcmFn
SW1hZ2VSZWYgcmVzdWx0ID0gY3JlYXRlRHJhZ0ltYWdlRm9yUmVjdChmcmFtZSwgcGFpbnRpbmdS
ZWN0KTsKKyAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsKKyAgICBmcmFtZS5k
b2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0Ry
YXcobnVsbHB0cik7CisKKyAgICBlbGVtZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9w
TGV2ZWxSZWN0KTsKKyAgICBpbWFnZVJlY3QgPSBwYWludGluZ1JlY3Q7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworI2lmICFQTEFURk9STShXSU4pCitzdHJ1Y3QgU2NvcGVkRnJhbWVQYWludGlu
Z1N0YXRlIHsKKyAgICBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoRnJhbWUmIGZyYW1lLCBOb2Rl
KiBub2RlKQorICAgIDogZnJhbWUoZnJhbWUpCisgICAgLCBub2RlKG5vZGUpCisgICAgLCBwYWlu
dEJlaGF2aW9yKGZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpKQorICAgICwgYmFja2dyb3Vu
ZENvbG9yKGZyYW1lLnZpZXcoKS0+YmFzZUJhY2tncm91bmRDb2xvcigpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPnJlbmRlcmVyKCkpOworICAgICAgICBpZiAobm9kZSkK
KyAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURyYWdTdGF0ZSh0cnVlKTsKKyAg
ICB9CisKKyAgICB+U2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKCkKKyAgICB7CisgICAgICAgIGlm
IChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBub2RlLT5yZW5kZXJlcigp
LT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOworICAgICAgICBmcmFtZS52aWV3KCktPnNldFBhaW50
QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CisgICAgICAgIGZyYW1lLnZpZXcoKS0+c2V0QmFzZUJh
Y2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICBmcmFtZS52aWV3KCktPnNl
dE5vZGVUb0RyYXcobnVsbHB0cik7CisgICAgfQorCisgICAgRnJhbWUmIGZyYW1lOworICAgIE5v
ZGUqIG5vZGU7CisgICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOworICAgIENvbG9yIGJh
Y2tncm91bmRDb2xvcjsKK307CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JGcmFt
ZVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCit7CisgICAgVU5V
U0VEX1BBUkFNKGZvcmNlQmxhY2tUZXh0KTsKKworICAgIGlmICghZnJhbWUuc2VsZWN0aW9uKCku
aXNSYW5nZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IFNjb3BlZEZy
YW1lUGFpbnRpbmdTdGF0ZSBzdGF0ZShmcmFtZSwgbnVsbHB0cik7CisgICAgZnJhbWUudmlldygp
LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5IHwgKGZvcmNlQmxh
Y2tUZXh0ID8gUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0IDogMCkpOworICAgIGZyYW1lLmRv
Y3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworCisgICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBl
bmNsb3NpbmdJbnRSZWN0KGZyYW1lLnNlbGVjdGlvbigpLmJvdW5kcygpKTsKKworICAgIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yID0gMTsKKyAgICBpZiAoZnJhbWUucGFnZSgpKQorICAgICAgICBk
ZXZpY2VTY2FsZUZhY3RvciA9IGZyYW1lLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAg
ICBwYWludGluZ1JlY3Quc2V0V2lkdGgocGFpbnRpbmdSZWN0LndpZHRoKCkgKiBkZXZpY2VTY2Fs
ZUZhY3Rvcik7CisgICAgcGFpbnRpbmdSZWN0LnNldEhlaWdodChwYWludGluZ1JlY3QuaGVpZ2h0
KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZl
cihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFj
dG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXBhaW50aW5n
UmVjdC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+Y2xp
cChGbG9hdFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0Lm1heFgoKSwgcGFpbnRpbmdSZWN0Lm1heFko
KSkpOworCisgICAgZnJhbWUudmlldygpLT5wYWludENvbnRlbnRzKGJ1ZmZlci0+Y29udGV4dCgp
LCBwYWludGluZ1JlY3QpOworCisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJ1ZmZlci0+Y29w
eUltYWdlKCk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZS5nZXQo
KSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOworfQorCitEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRm9yTm9kZShGcmFtZSYgZnJhbWUsIE5vZGUqIG5vZGUpCit7CisgICAgaWYg
KCFub2RlLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0
IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBzdGF0ZShmcmFtZSwgbm9kZSk7CisKKyAgICBmcmFt
ZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3Ioc3RhdGUucGFpbnRCZWhhdmlvciB8IFBhaW50QmVo
YXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOworCisgICAgLy8gV2hlbiBnZW5lcmF0aW5n
IHRoZSBkcmFnIGltYWdlIGZvciBhbiBlbGVtZW50LCBpZ25vcmUgdGhlIGRvY3VtZW50IGJhY2tn
cm91bmQuCisgICAgZnJhbWUudmlldygpLT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCk7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAg
ZnJhbWUudmlldygpLT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUgc3BlY2lhbCBzdWIt
dHJlZSBkcmF3aW5nIG1vZGUuCisKKyAgICAvLyBEb2N1bWVudDo6dXBkYXRlTGF5b3V0IG1heSBo
YXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIHJlbmRlcmVyLgorICAgIGF1dG8gcmVuZGVyZXIg
PSBub2RlLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgSW50UmVjdCBwYWlu
dGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0
KHRvcExldmVsUmVjdCkpOworCisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOworICAg
IGlmIChmcmFtZS5wYWdlKCkpCisgICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gZnJhbWUucGFn
ZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIHBhaW50aW5nUmVjdC5zZXRXaWR0aChwYWlu
dGluZ1JlY3Qud2lkdGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBwYWludGluZ1JlY3Qu
c2V0SGVpZ2h0KHBhaW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKKwor
ICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRp
bmdSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsK
KyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYnVmZmVyLT5j
b250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkp
OworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1Jl
Y3QubWF4WCgpLCBwYWludGluZ1JlY3QubWF4WSgpKSk7CisKKyAgICBmcmFtZS52aWV3KCktPnBh
aW50Q29udGVudHMoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7CisKKyAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoKTsKKworICAgIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKHJlbmRlcmVyLT5zaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFU
SU9OKQorICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0o
cmVuZGVyZXItPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyNlbmRpZgorICAgIHJldHVy
biBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0KCksIG9yaWVudGF0aW9uRGVzY3Jp
cHRpb24pOworfQorI2VuZGlmIC8vICFQTEFURk9STShXSU4pCisKICNpZiAhUExBVEZPUk0oTUFD
KSAmJiAoIVBMQVRGT1JNKFdJTikgfHwgT1MoV0lOQ0UpKQogRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZvckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiwgRm9udFJlbmRlcmluZ01vZGUpCiB7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAppbmRleCBkOGY1MmJjZmFkNDQyNDNmOGFjY2I4NjcwYTA5
NGFmMTEzYzRiMjRkLi5lYTkzNzc4ZWQxZDg1YjNhYjJlOTllZmQzNWMyNzU5M2RjNjZhZjQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaApAQCAtNDEsMzggKzQxLDQ3IEBAIHR5cGVk
ZWYgc3RydWN0IEhCSVRNQVBfXyogSEJJVE1BUDsKIHR5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJm
YWNlIGNhaXJvX3N1cmZhY2VfdDsKICNlbmRpZgogCi0vL1dlIG5lZWQgdG8gI2RlZmluZSBZT2Zm
c2V0IGFzIGl0IG5lZWRzIHRvIGJlIHNoYXJlZCB3aXRoIFdlYktpdAorLy8gV2UgbmVlZCB0byAj
ZGVmaW5lIFlPZmZzZXQgYXMgaXQgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGggV2ViS2l0CiAjZGVm
aW5lIERyYWdMYWJlbEJvcmRlcllPZmZzZXQgMgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAg
ICBjbGFzcyBJbWFnZTsKLSAgICBjbGFzcyBVUkw7CitjbGFzcyBGcmFtZTsKK2NsYXNzIEltYWdl
OworY2xhc3MgSW50UmVjdDsKK2NsYXNzIE5vZGU7CitjbGFzcyBSYW5nZTsKK2NsYXNzIFVSTDsK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB0eXBlZGVmIFJldGFpblB0cjxOU0ltYWdlPiBEcmFn
SW1hZ2VSZWY7Cit0eXBlZGVmIFJldGFpblB0cjxOU0ltYWdlPiBEcmFnSW1hZ2VSZWY7CiAjZWxp
ZiBQTEFURk9STShXSU4pCi0gICAgdHlwZWRlZiBIQklUTUFQIERyYWdJbWFnZVJlZjsKK3R5cGVk
ZWYgSEJJVE1BUCBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KE5JWCkKLSAgICB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogRHJhZ0ltYWdlUmVmOwordHlwZWRl
ZiBjYWlyb19zdXJmYWNlX3QqIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKEVGTCkgfHwg
UExBVEZPUk0oQkxBQ0tCRVJSWSkKLSAgICB0eXBlZGVmIHZvaWQqIERyYWdJbWFnZVJlZjsKK3R5
cGVkZWYgdm9pZCogRHJhZ0ltYWdlUmVmOwogI2VuZGlmCi0gICAgCi0gICAgSW50U2l6ZSBkcmFn
SW1hZ2VTaXplKERyYWdJbWFnZVJlZik7Ci0gICAgCi0gICAgLy9UaGVzZSBmdW5jdGlvbnMgc2hv
dWxkIGJlIG1lbW9yeSBuZXV0cmFsLCBlZy4gaWYgdGhleSByZXR1cm4gYSBuZXdseSBhbGxvY2F0
ZWQgaW1hZ2UsIAotICAgIC8vdGhleSBzaG91bGQgcmVsZWFzZSB0aGUgaW5wdXQgaW1hZ2UuICBB
cyBhIGNvcm9sbGFyeSB0aGVzZSBtZXRob2RzIGRvbid0IGd1YXJhbnRlZQotICAgIC8vdGhlIGlu
cHV0IGltYWdlIHJlZiB3aWxsIHN0aWxsIGJlIHZhbGlkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGNh
bGxlZAotICAgIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJhZ0ltYWdlUmVm
IGltYWdlLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbnRTaXplJiBzaXplKTsKLSAg
ICBEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmLCBGbG9hdFNpemUgc2Nh
bGUpOwotICAgIERyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0lt
YWdlUmVmIGltYWdlLCBmbG9hdCBkZWx0YSk7Ci0gICAgCi0gICAgRHJhZ0ltYWdlUmVmIGNyZWF0
ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7
Ci0gICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVu
YW1lKGNvbnN0IFN0cmluZyYpOwotICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKFVSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlKTsKLSAgICB2
b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOworCitJbnRTaXplIGRyYWdJbWFnZVNp
emUoRHJhZ0ltYWdlUmVmKTsKKworLy8gVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBtZW1vcnkg
bmV1dHJhbCwgZWcuIGlmIHRoZXkgcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGltYWdlLAorLy8g
dGhleSBzaG91bGQgcmVsZWFzZSB0aGUgaW5wdXQgaW1hZ2UuIEFzIGEgY29yb2xsYXJ5IHRoZXNl
IG1ldGhvZHMgZG9uJ3QgZ3VhcmFudGVlCisvLyB0aGUgaW5wdXQgaW1hZ2UgcmVmIHdpbGwgc3Rp
bGwgYmUgdmFsaWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gY2FsbGVkLgorRHJhZ0ltYWdlUmVmIGZp
dERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFNpemUmIHNyY1NpemUs
IGNvbnN0IEludFNpemUmIGRzdFNpemUpOworRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERy
YWdJbWFnZVJlZiwgRmxvYXRTaXplIHNjYWxlKTsKK0RyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJ
bWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmLCBmbG9hdCBkZWx0YSk7CisKK0RyYWdJbWFnZVJl
ZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24pOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZp
bGVuYW1lKGNvbnN0IFN0cmluZyYpOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvck5v
ZGUoRnJhbWUmLCBOb2RlKik7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2Uo
RnJhbWUmLCBSYW5nZSosIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7CitEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmVjdChGcmFtZSYsIGNvbnN0IEludFJlY3QmLCBib29sIGlu
Y2x1ZGVTZWxlY3Rpb24gPSB0cnVlKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JJ
bWFnZShGcmFtZSYsIE5vZGUqLCBJbnRSZWN0JiBpbWFnZVJlY3QsIEludFJlY3QmIGVsZW1lbnRS
ZWN0KTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JGcmFtZVNlbGVjdGlvbihGcmFt
ZSYsIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGb250UmVuZGVyaW5nTW9k
ZSk7Cit2b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOwogfQogCiAKLSNlbmRpZiAv
LyFEcmFnSW1hZ2VfaAorI2VuZGlmIC8vICFEcmFnSW1hZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXggNjNhNTM1NjBmYzk1ZDg4YjZmYmY2MDZm
YzU2Zjk0NGIzMDI5MWM5NC4uNTU2YmM1YTcxOTcwMWY3MmZkZWM2ZTE2YTZkZDZhN2JiMmRiNTgy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0z
Miw5ICszMiwxNSBAQAogI2ltcG9ydCAiRm9udENhY2hlLmgiCiAjaW1wb3J0ICJGb250RGVzY3Jp
cHRpb24uaCIKICNpbXBvcnQgIkZvbnRTZWxlY3Rvci5oIgorI2ltcG9ydCAiRnJhbWUuaCIKKyNp
bXBvcnQgIkZyYW1lU2VsZWN0aW9uLmgiCisjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKKyNpbXBvcnQgIkxheW91dFJl
Y3QuaCIKICNpbXBvcnQgIlVSTC5oIgorI2ltcG9ydCAiTm9kZS5oIgorI2ltcG9ydCAiUmVuZGVy
T2JqZWN0LmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW1wb3J0ICJTdHJpbmdU
cnVuY2F0b3IuaCIKICNpbXBvcnQgIlRleHRSdW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKaW5kZXggMzFhMzJlNGMzYzAyNTNlODE1N2U4NDg1YmQx
M2I1YTExY2VlYTQ3ZS4uNmQ1N2EwMTU5ODg0ZWI4OGIyZDA3YzhlM2ZkMTM1OTU1N2FmNmFiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKQEAgLTI2
LDE2ICsyNiwyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdJbWFnZS5o
IgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAi
Rm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9u
dFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVNlbGVjdGlv
bi5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogI2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiVVJM
LmgiCisjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbmNsdWRl
ICJUZXh0UnVuLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRleHRSZW5k
ZXJlci5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dE
SU9iamVjdC5oPgpAQCAtMTIxLDYgKzEyOCwzMiBAQCBzdGF0aWMgRm9udCBkcmFnTGFiZWxGb250
KGludCBzaXplLCBib29sIGJvbGQsIEZvbnRSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckZy
YW1lU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKK3sKKyAgICBp
ZiAoZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQorICAgICAgICByZXR1cm4gaW1hZ2VGcm9t
U2VsZWN0aW9uKCZmcmFtZSwgZm9yY2VCbGFja1RleHQpLmxlYWsoKTsKKworICAgIHJldHVybiBu
dWxscHRyOworfQorCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZShGcmFtZSYg
ZnJhbWUsIE5vZGUqIG5vZGUpCit7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0
KCk7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAg
ICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIExheW91dFJl
Y3QgdG9wTGV2ZWxSZWN0OworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVk
SW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKKworICAg
IGZyYW1lLnZpZXcoKS0+c2V0Tm9kZVRvRHJhdyhub2RlKTsgLy8gaW52b2tlIHNwZWNpYWwgc3Vi
LXRyZWUgZHJhd2luZyBtb2RlCisgICAgR0RJT2JqZWN0PEhCSVRNQVA+IHJlc3VsdCA9IGltYWdl
RnJvbVJlY3QoJmZyYW1lLCBwYWludGluZ1JlY3QpOworICAgIGZyYW1lLnZpZXcoKS0+c2V0Tm9k
ZVRvRHJhdyhudWxscHRyKTsKKworICAgIHJldHVybiByZXN1bHQubGVhaygpOworfQorCiBEcmFn
SW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBp
bkxhYmVsLCBGb250UmVuZGVyaW5nTW9kZSBmb250UmVuZGVyaW5nTW9kZSkKIHsKICAgICAvLyBU
aGlzIGlzIG1vcmUgb3IgbGVzcyBhbiBleGFjdCBtYXRjaCBmb3IgdGhlIE1hYyBPUyBYIGNvZGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCmlu
ZGV4IDVkZmY2ZjBmZTljMWQ5ZjJkZTRhMWUxMTkzYTVlZmI0NDYyZDA3OTEuLjZhNDkzMzYzNDFj
ODljNTBhOGMxMmU5MTBlMTE4N2E0OGZkODc2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
aW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCkBAIC0zMCwxMCArMzAsMTAgQEAKICNpbXBv
cnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0RyYWdJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KLSNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVTbmFwc2hvdHRpbmdNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvaHRtbGVkaXRpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCmluZGV4IDQ4NjI4MGU0N2I2YTU1ZDY5M2Y4NGEzNTE0MmRhMzM4ZTJiZjc5YmYuLmE5OTY4
MTViM2JjZDg0MjM5ZTAzYWM5YTQ1ZWFlMzJjYTJiY2RjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtODUsNiArODUsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0VkaXRvckRlbGV0ZUFjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50
Lmg+CkBAIC05NSw3ICs5Niw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU2VsZWN0aW9u
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU25hcHNob3R0aW5nTWFjLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpAQCAtMTgyMCw3ICsxODIwLDEyIEBAIHN0YXRp
YyBib29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNrT3JEcmFnKE5TRXZlbnQgKmV2ZW50KQogewog
ICAgIGlmICghW3NlbGYgX2hhc1NlbGVjdGlvbl0pCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
TlNJbWFnZSAqZHJhZ0ltYWdlID0gc2VsZWN0aW9uSW1hZ2UoY29yZShbc2VsZiBfZnJhbWVdKSk7
CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKKyAgICBpZiAo
IWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TSW1hZ2UgKmRyYWdJbWFn
ZSA9IFtbY3JlYXRlRHJhZ0ltYWdlRm9yRnJhbWVTZWxlY3Rpb24oKmNvcmVGcmFtZSkgcmV0YWlu
XSBhdXRvcmVsZWFzZV07CiAgICAgW2RyYWdJbWFnZSBfd2ViX2Rpc3NvbHZlVG9GcmFjdGlvbjpX
ZWJEcmFnSW1hZ2VBbHBoYV07CiAgICAgcmV0dXJuIGRyYWdJbWFnZTsKIH0KQEAgLTU5NjUsNyAr
NTk3MCwxMSBAQCBzdGF0aWMgdm9pZCBleHRyYWN0VW5kZXJsaW5lcyhOU0F0dHJpYnV0ZWRTdHJp
bmcgKnN0cmluZywgVmVjdG9yPENvbXBvc2l0aW9uVW5kZQogewogICAgIGlmICghW3NlbGYgX2hh
c1NlbGVjdGlvbl0pCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIHNlbGVjdGlvbklt
YWdlKGNvcmUoW3NlbGYgX2ZyYW1lXSksIGZvcmNlQmxhY2tUZXh0KTsKKworICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOworICAgIGlmICghY29yZUZyYW1lKQorICAg
ICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBbW2NyZWF0ZURyYWdJbWFnZUZvckZyYW1lU2Vs
ZWN0aW9uKCpjb3JlRnJhbWUsIGZvcmNlQmxhY2tUZXh0KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
IH0KIAogLSAoTlNSZWN0KXNlbGVjdGlvbkltYWdlUmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNs
YXNzZXMuY3BwCmluZGV4IGNjYmQ3MTkwMWU0NTU3OTAzMWI5MDJiYTU2YTg5NGU2YThkNzljYjMu
LjRiN2YzYTU1OGEzMTAxYzlhZGQzN2ZjOWJmOGM5N2QzOWEyYmI1YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTM2LDEwICszNiwxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KQEAg
LTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNU
ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogCiAjaW5jbHVkZSA8
aW5pdGd1aWQuaD4KIC8vIHszQjBDMEVGRi00NzhCLTRiMGItODI5MC1EMjMyMUUwOEUyM0V9CkBA
IC0xMjc5LDcgKzEyODAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6
OnJlbmRlcmVkSW1hZ2UoSEJJVE1BUCogaW1hZ2UpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgICppbWFnZSA9IGZyYW1lLT5ub2RlSW1hZ2UobV9lbGVtZW50
KTsKKyAgICAqaW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgbV9lbGVtZW50
KTsKICAgICBpZiAoISppbWFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217137</attachid>
            <date>2013-11-16 15:47:48 -0800</date>
            <delta_ts>2013-11-16 15:50:01 -0800</delta_ts>
            <desc>v2.0</desc>
            <filename>bug-124325-20131116154748.patch</filename>
            <type>text/plain</type>
            <size>67210</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0NGNiZWZkMmZkZjI5
NGE0N2FkNmZiMzk2YTViZDIyMzAwOTdkMS4uZTI5ZmUyMjgwNWFhYzMzZDQ5Y2NmNjhjNTg3Yjg1
YjJkNzE3ZDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTExLTE2ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc25hcHNob3QgY3JlYXRpb24g
bWV0aG9kcyBoYWQgZHVwbGljYXRlZCBjb2RlIGFuZCB3ZXJlIHNwbGl0CisgICAgICAgIGJldHdl
ZW4gRnJhbWUsIERyYWdJbWFnZSwgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9u
c3MuCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBXZWJDb3JlIHNuYXBzaG90IG1ldGhvZHMgaW50
byBGcmFtZVNuYXBzaG90dGluZworICAgICAgICBhbmQgcmVtb3ZlcyBwbGF0Zm9ybSBpbXBsZW1l
bnRhdGlvbnMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgRHJhZ0ltYWdlIG1ldGhvZHMgcmV1
c2Ugc25hcHNob3QgbWV0aG9kcyB3aGVyZSBwb3NzaWJsZS4gSW5zcGVjdG9yCisgICAgICAgIHdp
bGwgYmUgYWJsZSB0byB0YWtlIHNuYXBzaG90cyB3aXRob3V0IHVzaW5nIGRyYWcgaW1hZ2VzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJbWFn
ZV0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpd
KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQ
YWludGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0
ZTo6flNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hv
dEZyYW1lUmVjdCk6IE1vdmUgbW9zdCBidWZmZXIgbG9naWMgdG8gaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90U2VsZWN0aW9uKTogTW92ZWQgZnJvbSBGcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90Tm9kZSk6IE1vdmVkIGZyb20gRnJhbWUuCisgICAgICAgICogcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcDogcmVtb3ZlIGR1cGxpY2F0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5oOiBGaXggYW4gaW5j
b3JyZWN0IHBhcmFtZXRlciBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY29wZWROb2RlRHJhZ1N0YXRlOjpTY29wZWROb2RlRHJhZ1N0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZE5vZGVEcmFnU3RhdGU6On5TY29wZWROb2Rl
RHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dCk6IEJvaWxlcnBsYXRlIGJ1ZmZlciBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0
ZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRG
cmFtZVNlbGVjdGlvblN0YXRlOjp+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6IE1vdmVkIGZyb20gRnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6IE1vdmVkIGZyb20gRnJh
bWVTbmFwc2hvdHRpbmdNYWMuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKTogdXNlIG51bGxwdHIuCisKIDIwMTMtMTEtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ3J5cHRvIG5vIGxvbmdlciB1c2VzIHNlcXVlbmNl
cyBvZiBBcnJheUJ1ZmZlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCAxNDkzYzJiZjFkOGI1YjEwNTQ3
NTFjYTM5NDFjYzZhODllMGIzZDI2Li43ZDM0YWFjYTA0MWZiZWE2NjMzZGQ2MDdjZGQ1OWMxN2Zh
NmI5MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTMgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIENvbnNvbGlk
YXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUlPUy5tbTogdXNlIG5ldyBoZWFkZXIgZmlsZS4KKwogMjAxMy0xMS0wNyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhIFBMQVRGT1JNKElP
UykgZnJvbSBXZWJLaXQgUHJpdmF0ZSBIZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBhYTNmMTM0
NDEyZDI2YmNlNjhiYmVmMDliZTQyYjRlYTlkYjM0MjYzLi40OWM1ZTlmMzgzOTliYjFhZmYyYzFj
NTBjM2E3MmI0Zjg1ZDc2NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTMtMTEtMTMgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIENvbnNvbGlkYXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG5ldyBwbGF0
Zm9ybS1pbmRlcGVuZGVudCBtZXRob2RzIGluc3RlYWQgb2YgTWFjIG1ldGhvZHMuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2Vs
ZWN0aW9uRHJhZ2dpbmdJbWFnZV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZWxlY3Rpb25J
bWFnZUZvcmNpbmdCbGFja1RleHQ6XSk6CisKIDIwMTMtMTEtMTQgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWltcGxlbWVudCBnZXREYXlCb3VuZGFy
aWVzIHVzaW5nIE5TQ2FsZW5kYXIgb24gMTAuOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDY4N2QyZTU0
YmQ0YjZhNjBjYzhhMDFkNDA0ZTgyNmZhOTg0NTA3M2YuLjY5MWFjMGY2NGQ5NjJjMzI4MDE4MGU0
YzRmYmQ5Mjg5OWZkZDhiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
My0xMS0xNCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAg
ICAgQ29uc29saWRhdGUgdmFyaW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVDbGFz
c2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UpOiB1c2UgY3JlYXRl
RHJhZ0ltYWdlRm9yTm9kZS4KKwogMjAxMy0xMS0xNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIFdpbiBidWlsZCBmaXg7IHNldEN1cnJlbnRU
aW1lKCkgbm8gbG9uZ2VyIHRha2VzIGFuIGV4Y2VwdGlvbiBwYXJhbWV0ZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDQ3MGRmMjQxZWZlODk2M2NjNmY0Nzc1NjJkNGM1MDU2MzhiZjc1OGMuLjcx
Y2EzMjYwZTNkM2EwOTk1YmZjZGZmYzY0MTQxY2Q5Zjk1ZjNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNzI2LDYgKzE3MjYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCiAgICAgcGFnZS9GcmFtZS5jcHAKICAgICBwYWdlL0ZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlci5jcHAKKyAgICBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAogICAg
IHBhZ2UvRnJhbWVUcmVlLmNwcAogICAgIHBhZ2UvRnJhbWVWaWV3LmNwcAogICAgIHBhZ2UvR2Vz
dHVyZVRhcEhpZ2hsaWdodGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
ZmQ1MzI3ODEyNGM5ZDhhZGM1ZjMyNDM0YjA1NWRhM2VhZDBhZGNhYS4uZWVmYjkzYjY1NjU3OTUy
ZGFjODI2NWNmYTEyYzhiYWZiZDA2Mjc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC00MTE4LDYgKzQxMTgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDE0MjQyYjMyMTJmOWY0YWUxZDhiM2QzNjIyNTUyM2VlNzgxNjgyMWUuLjhjZGQxZmY2
ZTM0YmYzNmZiOWE2NDhlODY4YjI0NzBjZmJlNzBlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC00MjcsNyArNDI3LDYgQEAgX19aTjdXZWJDb3JlMTRjb29raWVzRW5hYmxlZEVSS05TXzIxTmV0
d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43V2ViQ29yZTE0ZGVjb2RlSG9z
dE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRlbmNvZGVIb3N0TmFtZUVQOE5TU3RyaW5n
CiBfX1pON1dlYkNvcmUxNGVuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCi1fX1pON1dlYkNvcmUxNHNlbGVjdGlvbklt
YWdlRVBOU181RnJhbWVFYgogX19aTjdXZWJDb3JlMTRzZXRNZXRhZGF0YVVSTEVSTjNXVEY2U3Ry
aW5nRVJLUzFfUzRfCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVmbGlwWUV2CiBfX1pO
N1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVzY2FsZUVkCkBAIC04ODcsNiArODg2LDcgQEAgX19a
TjdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2VDMkV2CiBfX1pON1dlYkNvcmUy
N0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2Rl
RUVFYlJLTlMxXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jazE0c2V0T3JpZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRh
dGlvbkRhdGFFRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFF
dgorX19aTjdXZWJDb3JlMjdjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb25FUk5TXzVGcmFtZUVi
CiBfX1pON1dlYkNvcmUyN3Byb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbEVSS05TXzNVUkxFUzJf
CiBfX1pON1dlYkNvcmUyN3N0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlc0VQRnZ2RQogX19aTjdX
ZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFTjNXVEY3
UGFzc1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQpAQCAtMjAzMiw3ICsyMDMyLDYgQEAg
X19aTjdXZWJDb3JlMzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CiBf
X1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZ0V2
CiBfX1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGlu
Z0V2CiBfX1pON1dlYkNvcmU0NmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9t
YXRpY2FsbHlFdgotX19aTjdXZWJDb3JlNUZyYW1lOW5vZGVJbWFnZUVQTlNfNE5vZGVFCiBfX1pO
N1dlYkNvcmU2Q3Vyc29yOGZyb21UeXBlRU5TMF80VHlwZUUKIF9fWk43V2ViQ29yZTZDdXJzb3JD
MUVQTlNfNUltYWdlRVJLTlNfOEludFBvaW50RQogX19aTjdXZWJDb3JlNkN1cnNvckMxRVJLUzBf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCA1MWU5MThlNzk0ODkyMmNmZDIyMDMxM2E1ZDFhNGJiOTFkYzA5YTBhLi4wMzFiNmNmZTk2YmY1
ODk4NWRlYzNlNTk2OTQ2M2U0YjRlZGI1OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTY5ODMsNiArNjk4Myw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZvY3VzQ29udHJvbGxlci5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGFnZVxHcm91cFNldHRpbmdzLmNwcCIgLz4KQEAgLTE4ODEyLDYgKzE4ODEzLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRm9jdXNEaXJlY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNob3R0aW5nLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhZ2VcR3JvdXBTZXR0aW5ncy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGEzOTVkYWI5
YjYzNjI2N2MxYThhNmJhYmNjNWExYzA2MmVjZjUyY2MuLjExYjJjNTRhNTMxZjExMjUzMDdiMjE4
MDAyOTg2NWVmMGYxOTljMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcxNyw2ICs3MTcsOSBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVNuYXBzaG90dGluZy5jcHAiPgorICAgICAg
PEZpbHRlcj5wYWdlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03NjE3LDYgKzc2MjAsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCI+CiAgICAgICA8
RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuaCI+CisgICAgICA8RmlsdGVyPnBhZ2U8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
Z2VcRnJhbWVUcmVlLmgiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMDRiZWQwN2VmYWM1ODkyOGU1YmEwMTY5NjY0ZTMxYmYwYThiMzlkZS4uMWZm
ZjIxNzI5OTNiYjU3OTVlMzdiOGNkYWVhYjYwYjNkNWNhZGEyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjAwNSw3ICsyMDA1
LDYgQEAKIAkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODMwOTdBM0Y1MzAw
QjkwNTBBIC8qIEZyYW1lVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1QkYwMjJFMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyOTA5NzQ4
MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwICovOyB9OwogCQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1QkYwMjQ1MDk3NDgxOTAwMEM0MzE5
NiAvKiBGcmFtZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAqLzsgfTsKIAkJ
NjVDOTdBRjMwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNv
bmZpZy5oICovOyB9OwogCQk2NUNCRkVGOTA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY3
MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovOyB9OwogCQk2NUNCRkVGQTA5NzRG
NjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIyMDYs
OCArMjIwNSw2IEBACiAJCTdDNTM0M0ZDMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M1MzQzRkExN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAgKi87IH07CiAJCTdDNTM0M0ZEMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNTM0M0ZCMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aCAqLzsgfTsKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlz
dC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
QzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9Owot
CQk3Q0UzMERBOTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi87IH07Ci0JCTdDRTMwREFB
MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0Ux
IC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8qIENTU1ZhbHVl
S2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdv
cmRzLmggKi87IH07CiAJCTdFMTJFOTBGMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5oICovOyB9OwogCQk3RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAgKi87IH07CkBAIC01MjQ0LDYgKzUyNDEsOCBAQAogCQlDM0NGMTdBNTE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0Ey
MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovOyB9Owog
CQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMzE1
QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzRDRDYyOUExODM4Mzc2NjAw
N0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5jcHAgKi87IH07CisJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYx
MjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdy
b3VwU2V0dGluZ3MuY3BwICovOyB9OwogCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3Jv
dXBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MjBGRjQyNzI5
MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFn
ZU5hbWVzcGFjZS5jcHAgKi87IH07CkBAIC04NzQwLDcgKzg3MzksNiBAQAogCQk2NUE2NDBGMDA1
MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVCRjAy
MjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVCRjAy
M0MwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEZyYW1lTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVDQkZFRjcw
OTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnJhbWVWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04OTY4LDggKzg5NjYsNiBAQAogCQk3QzYxMzZGODE3MTBDMzUyMDBGRjRBNTcgLyog
SW5GaWxlc1BhcnNlci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJbkZpbGVzUGFyc2VyLnBtOyBwYXRo
ID0gc2NyaXB0cy9JbkZpbGVzUGFyc2VyLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzYxMzZGOTE3MTBDMzUyMDBGRjRBNTcgLyogU3RhdGljU3RyaW5nLnBtICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsg
bmFtZSA9IFN0YXRpY1N0cmluZy5wbTsgcGF0aCA9IHNjcmlwdHMvU3RhdGljU3RyaW5nLnBtOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyog
SUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJRE5TY3JpcHRX
aGl0ZUxpc3QudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZ01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25h
cHNob3R0aW5nTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lU25h
cHNob3R0aW5nTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMTJFOTBEMTVG
QTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDsgcGF0aCA9
IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21G
aWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAwMTI3RjM0
MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
Mjc0LDYgKzEyMjcwLDggQEAKIAkJQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRUYXJnZXRPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDM0NGMTdBMjE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0
Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVNu
YXBzaG90dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5
RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVz
cGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFt
ZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjA2LDYgKzE1NjA0
LDggQEAKIAkJCQk2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLywKIAkJCQk5
NzRBODYyMDE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCAq
LywKIAkJCQk5NzRBODYyMTE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyLmggKi8sCisJCQkJQzRDRDYyOTgxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0
aW5nLmNwcCAqLywKKwkJCQlDNENENjI5OTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hv
dHRpbmcuaCAqLywKIAkJCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNw
cCAqLywKIAkJCQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8sCiAJ
CQkJNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCkBAIC0xNjUy
MCw5ICsxNjUyMCw2IEBACiAJCQkJQUJBRjIyMDcwQzAzQjFDNzAwQjBCQ0YwIC8qIENocm9tZU1h
Yy5tbSAqLywKIAkJCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJN
YWMubW0gKi8sCiAJCQkJOTNDMDlBN0UwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1h
Yy5tbSAqLywKLQkJCQk2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gKi8s
Ci0JCQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmgg
Ki8sCi0JCQkJN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tICovLAogCQkJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLywK
IAkJCQlFMUMyRjI0ODE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0gKi8sCiAJCQkJ
RjU4Nzg1NEMwMkRFMzc1OTAxRUE0MTIyIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCAqLywKQEAgLTIy
MTIxLDYgKzIyMTE4LDcgQEAKIAkJCQkxQTU2OUNGODBEN0UyQjgyMDA3QzM5ODMgLyogY19jbGFz
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkEwRDdFMkI4MjAwN0MzOTgzIC8qIGNfaW5z
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZDMEQ3RTJCODIwMDdDMzk4MyAvKiBj
X3J1bnRpbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAv
KiBGcmFtZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkUwRDdFMkI4
MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMUEwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNjRCNENDMENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmggaW4gSGVhZGVycyAqLywK
QEAgLTIyOTc5LDcgKzIyOTc3LDYgQEAKIAkJCQk2MjhEMjE0RTEyMTMxRUY0MDA1NURDRkMgLyog
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNzAxODBG
Mjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OUUwRTA5OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAot
CQkJCTdDRTMwREFBMTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVBQjAxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERp
cmVjdG9yeURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjU5LDEwICsyNjI1Niw4IEBA
CiAJCQkJOTMyRTE2MDkwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRl
TWFjaGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkJBNzY2RTE2NjQyN0E4MDA1QkU1RDEg
LyogRnJhbWVMb2FkUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NUJGMDI0NTA5NzQ4
MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwRDA5
OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEE4Qzk2RUIwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJN0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5n
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQUQxN0QxNDE1MTAwN0ZGODQyIC8qIEpT
UlRDRGF0YUNoYW5uZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUEyMTQ4NDA5N0Ez
RjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzkxQTEw
MTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3NzY4LDYgKzI3NzYzLDcgQEAKIAkJCQk1MUUwQkIzOTBEQTVBQ0I2MDBBOUU0MTcgLyogU3Rv
cmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzI3N0U1MjE3RDAxOENDMDAxNTUzNEQg
LyogSlNNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MEQwRTgyMEZG
NDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUM0Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDNTVFMzhDMDEwMDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMDlEQjQxNkFGNUY2QzAwODUzOEU3IC8q
IFN0b3JhZ2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEwMkQ5NTBGRDlBQTJE
MDBGQUZGMDQgLyogU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCBjYzAzNjU1MjZlMzE2ZTA1ZDViMTViYjc0NDRj
M2JiMmJjZmE5MDUwLi5kMzc1OTk4MmRjZWQyMjRmODhlNjEzNmY1MjRiY2FjZDNlMGQ1NDMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9y
dCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2YXRlLmgiCiAjaW1wb3J0ICJE
T01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKICNpbXBvcnQgIkZvbnQu
aCIKICNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgog
I2ltcG9ydCAiSFRNTEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAi
SFRNTFBhcnNlcklkaW9tcy5oIgpAQCAtMjg5LDcgKzI4OSw3IEBAIGlkIDxET01FdmVudFRhcmdl
dD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKICAgICBXZWJDb3JlOjpG
cmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZnJhbWUtPm5vZGVJbWFnZShub2RlKS5n
ZXQoKTsKKyAgICByZXR1cm4gW1tjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgbm9kZSkg
cmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKQEAgLTMz
NSw3ICszMzUsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdl
dCogZXZlbnRUYXJnZXQpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIHJldHVybiBXZWJDb3JlOjpyYW5nZUltYWdlKGZyYW1lLCByYW5nZSwgZm9yY2VCbGFja1Rl
eHQpOworICAgIHJldHVybiBbW2NyZWF0ZURyYWdJbWFnZUZvclJhbmdlKCpmcmFtZSwgcmFuZ2Us
IGZvcmNlQmxhY2tUZXh0KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAq
KXRleHRSZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAppbmRleCA5ZDJlMjc1MmZkZjJiN2M2
NjQyYTI0MjRmODgwNjNlYzhhNzFjN2M4Li44MDM4ZTc4NDcwODU4MDgwNzBkODdmMWE3ZjI5ZTQz
ZDgwYTM2ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcApAQCAtMjc3LDEwICsyNzcsMTEg
QEAgRHJhZ0ltYWdlUmVmIENsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBsb2Nh
dGlvbikgY29uc3QKIAogICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKICAgICAgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IG1fZHJhZ0ltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5ub2RlSW1hZ2UobV9kcmFnSW1hZ2VFbGVtZW50Lmdl
dCgpKTsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwg
bV9kcmFnSW1hZ2VFbGVtZW50LmdldCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gMDsgLy8gV2Ug
ZG8gbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGNyZWF0ZSBhIGRyYWcgaW1hZ2UsIHVz
ZSB0aGUgZGVmYXVsdCBpY29uLgorICAgIC8vIFdlIGRvIG5vdCBoYXZlIGVub3VnaCBpbmZvcm1h
dGlvbiB0byBjcmVhdGUgYSBkcmFnIGltYWdlLCB1c2UgdGhlIGRlZmF1bHQgaWNvbi4KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZE1hYy5tbQpp
bmRleCA3NmNhNmZjYTNlNDI0MDdiNWY4ZTdiMzVlNjU4NzM3YzIxMTNlOGZiLi45ZjliZTAxZmRk
MzJiZmI2M2ZmMjc4ZGQ5MmRlZjQ1NDEwODVjZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRN
YWMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ2FjaGVkSW1hZ2UuaCIKICNpbXBv
cnQgIkVsZW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCisjaW1wb3J0
ICJEcmFnSW1hZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywxNiArMzcsMTYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQ2xpcGJvYXJkOjpkcmFnSW1hZ2UgaW4gQ2xpcGJv
YXJkLmNwcCBkb2VzIG5vdCBoYW5kbGUgY29ycmVjdGx5LCBzbyBtdXN0IHJlc29sdmUgdGhhdCBh
cyB3ZWxsLgogRHJhZ0ltYWdlUmVmIENsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50
JiBsb2NhdGlvbikgY29uc3QKIHsKLSAgICBOU0ltYWdlICpyZXN1bHQgPSBuaWw7CisgICAgRHJh
Z0ltYWdlUmVmIHJlc3VsdCA9IG5pbDsKICAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7CiAg
ICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RyYWdJbWFnZUVsZW1lbnQtPmRvY3VtZW50KCku
ZnJhbWUoKSkgewotICAgICAgICAgICAgTlNSZWN0IGltYWdlUmVjdDsKLSAgICAgICAgICAgIE5T
UmVjdCBlbGVtZW50UmVjdDsKLSAgICAgICAgICAgIHJlc3VsdCA9IHNuYXBzaG90RHJhZ0ltYWdl
KGZyYW1lLCBtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCksICZpbWFnZVJlY3QsICZlbGVtZW50UmVj
dCk7CisgICAgICAgICAgICBJbnRSZWN0IGltYWdlUmVjdDsKKyAgICAgICAgICAgIEludFJlY3Qg
ZWxlbWVudFJlY3Q7CisgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVEcmFnSW1hZ2VGb3JJbWFn
ZSgqZnJhbWUsIG1fZHJhZ0ltYWdlRWxlbWVudC5nZXQoKSwgaW1hZ2VSZWN0LCBlbGVtZW50UmVj
dCk7CiAgICAgICAgICAgICAvLyBDbGllbnQgc3BlY2lmaWVzIHBvaW50IHJlbGF0aXZlIHRvIGVs
ZW1lbnQsIG5vdCB0aGUgd2hvbGUgaW1hZ2UsIHdoaWNoIG1heSBpbmNsdWRlIGNoaWxkCiAgICAg
ICAgICAgICAvLyBsYXllcnMgc3ByZWFkIG91dCBhbGwgb3ZlciB0aGUgcGxhY2UuCi0gICAgICAg
ICAgICBsb2NhdGlvbi5zZXRYKGVsZW1lbnRSZWN0Lm9yaWdpbi54IC0gaW1hZ2VSZWN0Lm9yaWdp
bi54ICsgbV9kcmFnTG9jYXRpb24ueCgpKTsKLSAgICAgICAgICAgIGxvY2F0aW9uLnNldFkoaW1h
Z2VSZWN0LnNpemUuaGVpZ2h0IC0gKGVsZW1lbnRSZWN0Lm9yaWdpbi55IC0gaW1hZ2VSZWN0Lm9y
aWdpbi55ICsgbV9kcmFnTG9jYXRpb24ueSgpKSk7CisgICAgICAgICAgICBsb2NhdGlvbi5zZXRY
KGVsZW1lbnRSZWN0LngoKSAtIGltYWdlUmVjdC54KCkgKyBtX2RyYWdMb2NhdGlvbi54KCkpOwor
ICAgICAgICAgICAgbG9jYXRpb24uc2V0WShpbWFnZVJlY3QuaGVpZ2h0KCkgLSAoZWxlbWVudFJl
Y3QueSgpIC0gaW1hZ2VSZWN0LnkoKSArIG1fZHJhZ0xvY2F0aW9uLnkoKSkpOwogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChtX2RyYWdJbWFnZSkgewogICAgICAgICByZXN1bHQgPSBtX2RyYWdJ
bWFnZS0+aW1hZ2UoKS0+Z2V0TlNJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAppbmRleCA3ZWIyNDlkZjdmZjliNTVhOGVjZTVhZTdmZjQ3MmUwY2Q3YmFjMjQ3Li5m
ODY2ZGNmZGZiYjI3Y2VjNTY1OTY1Y2NiYzM1Y2Q1NzgyOTk4NmRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRyYWdB
Y3Rpb25zLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudC5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgi
CisjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiRHJhZ1Nlc3Npb24uaCIKICNpbmNs
dWRlICJEcmFnU3RhdGUuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTc4MCw3ICs3ODEsNyBA
QCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0
YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICB9CiAgICAgICAgIG1fY2xpZW50Lndp
bGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uLCBkcmFn
T3JpZ2luLCBjbGlwYm9hcmQpOwogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAg
ICAgZHJhZ0ltYWdlID0gZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKHNyYy5kcmFnSW1hZ2VG
b3JTZWxlY3Rpb24oKSwgRHJhZ0ltYWdlQWxwaGEpOworICAgICAgICAgICAgZHJhZ0ltYWdlID0g
ZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbihz
cmMpLCBEcmFnSW1hZ2VBbHBoYSk7CiAgICAgICAgICAgICBkcmFnTG9jID0gZHJhZ0xvY0ZvclNl
bGVjdGlvbkRyYWcoc3JjKTsKICAgICAgICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50KGRy
YWdPcmlnaW4ueCgpIC0gZHJhZ0xvYy54KCksIGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDYyNDFlZTNjOTUyYjQ2MTU1YzI5
MjA2YjA4ZjkwMWUwMGU1MmY1ODAuLjVjMDM2MTFlOGI3NTFmOTE2ZGUyZWQ0YjcyNmI2MzYxYjcy
ZmFhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC05NjYsMTA4ICs5NjYsNCBAQCBib29sIEZy
YW1lOjppc1VSTEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLSNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oV0lOKQotc3RydWN0IFNjb3Bl
ZEZyYW1lUGFpbnRpbmdTdGF0ZSB7Ci0gICAgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKEZyYW1l
KiBmcmFtZSwgTm9kZSogbm9kZSkKLSAgICAgICAgOiBmcmFtZShmcmFtZSkKLSAgICAgICAgLCBu
b2RlKG5vZGUpCi0gICAgICAgICwgcGFpbnRCZWhhdmlvcihmcmFtZS0+dmlldygpLT5wYWludEJl
aGF2aW9yKCkpCi0gICAgICAgICwgYmFja2dyb3VuZENvbG9yKGZyYW1lLT52aWV3KCktPmJhc2VC
YWNrZ3JvdW5kQ29sb3IoKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5y
ZW5kZXJlcigpKTsKLSAgICAgICAgaWYgKG5vZGUpCi0gICAgICAgICAgICBub2RlLT5yZW5kZXJl
cigpLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7Ci0gICAgfQotCi0gICAgflNjb3BlZEZyYW1lUGFp
bnRpbmdTdGF0ZSgpCi0gICAgewotICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5yZW5kZXJlcigp
KQotICAgICAgICAgICAgbm9kZS0+cmVuZGVyZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsK
LSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsK
LSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5k
Q29sb3IpOwotICAgICAgICBmcmFtZS0+dmlldygpLT5zZXROb2RlVG9EcmF3KDApOwotICAgIH0K
LQotICAgIEZyYW1lKiBmcmFtZTsKLSAgICBOb2RlKiBub2RlOwotICAgIFBhaW50QmVoYXZpb3Ig
cGFpbnRCZWhhdmlvcjsKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci19OwotCi1EcmFnSW1h
Z2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewotICAgIGlmICghbm9kZS0+cmVu
ZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBjb25zdCBTY29wZWRGcmFt
ZVBhaW50aW5nU3RhdGUgc3RhdGUodGhpcywgbm9kZSk7Ci0KLSAgICBtX3ZpZXctPnNldFBhaW50
QmVoYXZpb3Ioc3RhdGUucGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9z
aXRpbmdMYXllcnMpOwotCi0gICAgLy8gV2hlbiBnZW5lcmF0aW5nIHRoZSBkcmFnIGltYWdlIGZv
ciBhbiBlbGVtZW50LCBpZ25vcmUgdGhlIGRvY3VtZW50IGJhY2tncm91bmQuCi0gICAgbV92aWV3
LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7Ci0gICAgbV9kb2Mt
PnVwZGF0ZUxheW91dCgpOwotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdyhub2RlKTsgLy8gRW5h
YmxlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlLgotCi0gICAgLy8gRG9jdW1lbnQ6OnVw
ZGF0ZUxheW91dCBtYXkgaGF2ZSBibG93biBhd2F5IHRoZSBvcmlnaW5hbCByZW5kZXJlci4KLSAg
ICBhdXRvIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0Owot
ICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+
cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKLQotICAgIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yID0gMTsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9
IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBwYWludGluZ1JlY3Quc2V0V2lkdGgo
cGFpbnRpbmdSZWN0LndpZHRoKCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcGFpbnRpbmdS
ZWN0LnNldEhlaWdodChwYWludGluZ1JlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7
Ci0KLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBh
aW50aW5nUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KSk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3Qu
eSgpKTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+Y2xpcChGbG9hdFJlY3QoMCwgMCwgcGFpbnRp
bmdSZWN0Lm1heFgoKSwgcGFpbnRpbmdSZWN0Lm1heFkoKSkpOwotCi0gICAgbV92aWV3LT5wYWlu
dENvbnRlbnRzKGJ1ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOwotCi0gICAgUmVmUHRy
PEltYWdlPiBpbWFnZSA9IGJ1ZmZlci0+Y29weUltYWdlKCk7Ci0KLSAgICBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihyZW5kZXJlci0+c2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKSk7Ci0jaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElP
TikKLSAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHJl
bmRlcmVyLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4g
Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uKTsKLX0KLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQot
ewotICAgIGlmICghc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBzdGF0ZSh0aGlzLCAwKTsKLSAgICBt
X3ZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkpOwotICAg
IG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKLQotICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gZW5j
bG9zaW5nSW50UmVjdChzZWxlY3Rpb24oKS5ib3VuZHMoKSk7Ci0KLSAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvciA9IDE7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgZGV2aWNlU2NhbGVGYWN0
b3IgPSBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgcGFpbnRpbmdSZWN0LnNldFdp
ZHRoKHBhaW50aW5nUmVjdC53aWR0aCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50
aW5nUmVjdC5zZXRIZWlnaHQocGFpbnRpbmdSZWN0LmhlaWdodCgpICogZGV2aWNlU2NhbGVGYWN0
b3IpOwotCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0
ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmlj
ZVJHQikpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBidWZmZXIt
PmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0Lnko
KSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5n
UmVjdC5tYXhYKCksIHBhaW50aW5nUmVjdC5tYXhZKCkpKTsKLQotICAgIG1fdmlldy0+cGFpbnRD
b250ZW50cyhidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0KTsKLQotICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZSgpOwotICAgIHJldHVybiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0KCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigp
KTsKLX0KLQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApp
bmRleCA4NDA3ZTllMmJjZjNlZWZlZGRiZjA1MzFiZTZjZTkyNzk0NTcyNzdjLi41ZjE4NjZmZTIw
MmZjZmVhNjQ0MmMwYmJlZjgyMGY1NmVkMjNlNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yOSw3
ICsyOSw2IEBACiAjZGVmaW5lIEZyYW1lX2gKIAogI2luY2x1ZGUgIkFkanVzdFZpZXdTaXplT3JO
b3QuaCIKLSNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgog
I2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTU4LDExICs1
NywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRWRpdG9yOwogICAgIGNsYXNz
IEVsZW1lbnQ7CiAgICAgY2xhc3MgRXZlbnRIYW5kbGVyOworICAgIGNsYXNzIEZsb2F0U2l6ZTsK
ICAgICBjbGFzcyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI7CiAgICAgY2xhc3MgRnJhbWVTZWxl
Y3Rpb247CiAgICAgY2xhc3MgRnJhbWVWaWV3OwogICAgIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxl
bWVudDsKICAgICBjbGFzcyBIVE1MVGFibGVDZWxsRWxlbWVudDsKKyAgICBjbGFzcyBJbWFnZUJ1
ZmZlcjsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIE1haW5GcmFtZTsKICAgICBjbGFz
cyBOb2RlOwpAQCAtMTc3LDkgKzE3OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICBTdHJpbmcgZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBj
b25zdDsKIAotICAgICAgICBEcmFnSW1hZ2VSZWYgbm9kZUltYWdlKE5vZGUqKTsKLSAgICAgICAg
RHJhZ0ltYWdlUmVmIGRyYWdJbWFnZUZvclNlbGVjdGlvbigpOwotCiAgICAgICAgIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2lu
dCk7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHdp
bmRvd1BvaW50KTsKICAgICAgICAgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQb2ludChjb25z
dCBJbnRQb2ludCYgZnJhbWVQb2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lU25hcHNob3R0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2ODg5ZTI2ZjM3MDRiOTFiOTlkYzdmMDY4YWIxNjU5ZWZl
MzRiMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNo
b3R0aW5nLmNwcApAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMg
VW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
RnJhbWVTbmFwc2hvdHRpbmcuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CisjaW5jbHVkZSAiUGFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTY29w
ZWRGcmFtZVBhaW50aW5nU3RhdGUgeworICAgIFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZShGcmFt
ZSYgZnJhbWUsIE5vZGUqIG5vZGUpCisgICAgOiBmcmFtZShmcmFtZSkKKyAgICAsIG5vZGUobm9k
ZSkKKyAgICAsIHBhaW50QmVoYXZpb3IoZnJhbWUudmlldygpLT5wYWludEJlaGF2aW9yKCkpCisg
ICAgLCBiYWNrZ3JvdW5kQ29sb3IoZnJhbWUudmlldygpLT5iYXNlQmFja2dyb3VuZENvbG9yKCkp
CisgICAgeworICAgICAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+cmVuZGVyZXIoKSk7CisgICAg
fQorCisgICAgflNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSgpCisgICAgeworICAgICAgICBmcmFt
ZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CisgICAgICAgIGZyYW1l
LnZpZXcoKS0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOworICAgICAg
ICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0RyYXcobnVsbHB0cik7CisgICAgfQorCisgICAgRnJh
bWUmIGZyYW1lOworICAgIE5vZGUqIG5vZGU7CisgICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2
aW9yOworICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKK307CisKK093blB0cjxJbWFnZUJ1ZmZl
cj4gc25hcHNob3RGcmFtZVJlY3QoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJl
Y3QsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQoreworICAgIEZyYW1lVmlldzo6U2VsZWN0aW9u
SW5TbmFwc2hvdCBzaG91bGRJbmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpJbmNsdWRlU2Vs
ZWN0aW9uOworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlv
bkhpZ2hsaWdodGluZykKKyAgICAgICAgc2hvdWxkSW5jbHVkZVNlbGVjdGlvbiA9IEZyYW1lVmll
dzo6RXhjbHVkZVNlbGVjdGlvbjsKKworICAgIEZyYW1lVmlldzo6Q29vcmRpbmF0ZVNwYWNlRm9y
U25hcHNob3QgY29vcmRpbmF0ZVNwYWNlID0gRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVz
OworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMpCisg
ICAgICAgIGNvb3JkaW5hdGVTcGFjZSA9IEZyYW1lVmlldzo6Vmlld0Nvb3JkaW5hdGVzOworCisg
ICAgUGFpbnRCZWhhdmlvciB0ZXh0UGFpbnRCZWhhdmlvciA9IDA7CisgICAgaWYgKG9wdGlvbnMg
JiBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKKyAgICAgICAgdGV4dFBhaW50QmVoYXZp
b3IgPSBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQ7CisKKyAgICBjb25zdCBTY29wZWRGcmFt
ZVBhaW50aW5nU3RhdGUgc3RhdGUoZnJhbWUsIG51bGxwdHIpOworCisgICAgLy8gT3RoZXIgcGFp
bnQgYmVoYXZpb3JzIGFyZSBzZXQgYnkgcGFpbnRDb250ZW50c0ZvclNuYXBzaG90LgorICAgIFBh
aW50QmVoYXZpb3IgZXhpc3RpbmdCZWhhdmlvciA9IGZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlv
cigpOworICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihleGlzdGluZ0JlaGF2aW9y
IHwgdGV4dFBhaW50QmVoYXZpb3IpOworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91
dCgpOworCisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBmcmFtZS5wYWdlKCkgPyAxIDog
ZnJhbWUucGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIEludFJlY3QgdXNlZFJlY3Qo
aW1hZ2VSZWN0KTsKKyAgICB1c2VkUmVjdC5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAg
ICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodXNlZFJl
Y3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
aWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJ1ZmZlci0+Y29udGV4
dCgpLT50cmFuc2xhdGUoLXVzZWRSZWN0LngoKSwgLXVzZWRSZWN0LnkoKSk7CisgICAgYnVmZmVy
LT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHVzZWRSZWN0Lm1heFgoKSwgdXNlZFJl
Y3QubWF4WSgpKSk7CisKKyAgICBmcmFtZS52aWV3KCktPnBhaW50Q29udGVudHNGb3JTbmFwc2hv
dChidWZmZXItPmNvbnRleHQoKSwgdXNlZFJlY3QsIHNob3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNv
b3JkaW5hdGVTcGFjZSk7CisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7Cit9CisKKyNpZiAh
UExBVEZPUk0oV0lOKQorT3duUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihGcmFt
ZSYgZnJhbWUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQoreworICAgIGlmICghZnJhbWUuc2Vs
ZWN0aW9uKCkuaXNSYW5nZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZv
cmNlIHNlbGVjdGlvbiBoaWdobGlnaHRpbmcgdG8gYmUgaW5jbHVkZWQuCisgICAgb3B0aW9ucyAm
PSB+U25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdodGluZzsKKyAgICBJbnRS
ZWN0IHNlbGVjdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZyYW1lLnNlbGVjdGlvbigpLmJv
dW5kcygpKTsKKyAgICByZXR1cm4gc25hcHNob3RGcmFtZVJlY3QoZnJhbWUsIHNlbGVjdGlvblJl
Y3QsIG9wdGlvbnMpOworfQorCitPd25QdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFt
ZSYgZnJhbWUsIE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0
ZSBzdGF0ZShmcmFtZSwgbm9kZSk7CisKKyAgICBmcmFtZS52aWV3KCktPnNldEJhc2VCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRh
dGVMYXlvdXQoKTsKKyAgICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0RyYXcobm9kZSk7CisKKyAg
ICAvLyBEb2N1bWVudDo6dXBkYXRlTGF5b3V0IG1heSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdp
bmFsIHJlbmRlcmVyLgorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJl
cigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
TGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhl
bFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkp
OworICAgIHJldHVybiBzbmFwc2hvdEZyYW1lUmVjdChmcmFtZSwgcGFpbnRpbmdSZWN0KTsKK30K
KyNlbmRpZiAvLyAhUExBVEZPUk0oV0lOKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlkOTJhMDQxYjYz
NzJlNTM0NmJlMTZmNTE4YjEzMDdiYTdhOWZiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaApAQCAtMCwwICsxLDUyIEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGcmFtZVNu
YXBzaG90dGluZ19oCisjZGVmaW5lIEZyYW1lU25hcHNob3R0aW5nX2gKKworI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRnJhbWU7CitjbGFz
cyBJbnRSZWN0OworY2xhc3MgSW1hZ2VCdWZmZXI7CitjbGFzcyBOb2RlOworCitlbnVtIHsKKyAg
ICBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nID0gMSA8PCAxLAor
ICAgIFNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzID0gMSA8PCAyLAorICAgIFNuYXBz
aG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0ID0gMSA8PCAzLAorfTsKK3R5cGVkZWYgdWludDMyX3Qg
U25hcHNob3RPcHRpb25zOworCitPd25QdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0
KEZyYW1lJiwgY29uc3QgSW50UmVjdCYsIFNuYXBzaG90T3B0aW9ucyA9IDApOworT3duUHRyPElt
YWdlQnVmZmVyPiBzbmFwc2hvdE5vZGUoRnJhbWUmLCBOb2RlKik7CitPd25QdHI8SW1hZ2VCdWZm
ZXI+IHNuYXBzaG90U2VsZWN0aW9uKEZyYW1lJiwgU25hcHNob3RPcHRpb25zID0gMCk7CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEZyYW1lU25hcHNob3R0aW5nX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGRhZmIxZjkxYmNiZDZmMDYyN2E2MWQxZTk0ZGU5YjcxNGE4YjU0MzQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RnJhbWVNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChh
cEBueXBvcC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiRnJhbWUuaCIKLQotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCi0jaW1wb3J0ICJGcmFtZVNlbGVjdGlvbi5oIgotI2ltcG9ydCAiRnJhbWVT
bmFwc2hvdHRpbmdNYWMuaCIKLSNpbXBvcnQgIkZyYW1lVmlldy5oIgotI2ltcG9ydCAiUmVuZGVy
T2JqZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpu
b2RlSW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7IC8vIGZv
cmNlcyBzdHlsZSByZWNhbGMKLQotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5y
ZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
TGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgTlNSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVs
U25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7
Ci0KLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1
Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3Qo
dGhpcywgcGFpbnRpbmdSZWN0KTsKLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcoMCk7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1EcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNl
bGVjdGlvbigpCi17Ci0gICAgaWYgKCFzZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIHNlbGVjdGlvbkltYWdlKHRoaXMpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFt
ZVNuYXBzaG90dGluZ01hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hv
dHRpbmdNYWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhYjY3ZTc2NTgxNGFl
NmNiYzkwMWJhZDQ0YWZkMTUzZjg2MmEyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGlu
Z01hYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
RnJhbWVTbmFwc2hvdHRpbmdNYWNfaAotI2RlZmluZSBGcmFtZVNuYXBzaG90dGluZ01hY19oCi0K
LU9CSkNfQ0xBU1MgTlNJbWFnZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGcmFt
ZTsKLWNsYXNzIFJhbmdlOwotY2xhc3MgTm9kZTsKLQotTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2Uo
RnJhbWUqLCBib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpOwotTlNJbWFnZSogcmFuZ2VJbWFn
ZShGcmFtZSosIFJhbmdlKiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKTsKLU5TSW1hZ2Uq
IHNuYXBzaG90RHJhZ0ltYWdlKEZyYW1lKiwgTm9kZSosIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1Jl
Y3QqIGVsZW1lbnRSZWN0KTsKLU5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoRnJhbWUqLCBOU1JlY3Qp
OwotCi19Ci0KLSNlbmRpZiAvLyBGcmFtZVNuYXBzaG90dGluZ01hY19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlOTJjMmYyM2NiMTdiZDAzZDRlOGE1ZWUxOTUxNGFjNDM5MWQxOWViLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
MTY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01h
Yy5oIgotCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKLSNpbXBvcnQgIkRvY3VtZW50Lmgi
Ci0jaW1wb3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiRnJhbWVTZWxlY3Rpb24uaCIKLSNpbXBvcnQg
IkZyYW1lVmlldy5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW1wb3J0ICJSYW5n
ZS5oIgotI2ltcG9ydCAiUmVuZGVyVmlldy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5T
SW1hZ2UqIGltYWdlRnJvbVJlY3QoRnJhbWUqIGZyYW1lLCBOU1JlY3QgcmVjdCkKLXsKLSAgICBQ
YWludEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gZnJhbWUtPnZpZXcoKS0+cGFpbnRCZWhhdmlvcigp
OwotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IgfCBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICAKLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgCi0gICAgTlNJbWFnZSogcmVzdWx0SW1hZ2UgPSBbW1tO
U0ltYWdlIGFsbG9jXSBpbml0V2l0aFNpemU6cmVjdC5zaXplXSBhdXRvcmVsZWFzZV07Ci0gICAg
Ci0gICAgaWYgKHJlY3Quc2l6ZS53aWR0aCAhPSAwICYmIHJlY3Quc2l6ZS5oZWlnaHQgIT0gMCkg
ewotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBbcmVzdWx0SW1h
Z2Ugc2V0RmxpcHBlZDpZRVNdOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgICAg
ICBbcmVzdWx0SW1hZ2UgbG9ja0ZvY3VzXTsKLQotICAgICAgICBHcmFwaGljc0NvbnRleHQgZ3Jh
cGhpY3NDb250ZXh0KChDR0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29u
dGV4dF0gZ3JhcGhpY3NQb3J0XSk7ICAgICAgICAKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNh
dmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtcmVjdC5vcmlnaW4ueCwg
LXJlY3Qub3JpZ2luLnkpOwotICAgICAgICBmcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKCZn
cmFwaGljc0NvbnRleHQsIEludFJlY3QocmVjdCkpOwotICAgICAgICBncmFwaGljc0NvbnRleHQu
cmVzdG9yZSgpOwotCi0gICAgICAgIFtyZXN1bHRJbWFnZSB1bmxvY2tGb2N1c107Ci0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAgIFtyZXN1bHRJbWFnZSBzZXRGbGlw
cGVkOk5PXTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICB9Ci0gICAgCi0gICAg
ZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7Ci0gICAgcmV0dXJu
IHJlc3VsdEltYWdlOwotICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAg
Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7Ci0gICAg
cmV0dXJuIG5pbDsKLX0KLQotTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2UoRnJhbWUqIGZyYW1lLCBi
b29sIGZvcmNlQmxhY2tUZXh0KQotewotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZp
b3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQgPyBQYWludEJl
aGF2aW9yRm9yY2VCbGFja1RleHQgOiAwKSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0
ZUxheW91dCgpOwotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QoZnJhbWUsIGZy
YW1lLT5zZWxlY3Rpb24oKS5ib3VuZHMoKSk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRC
ZWhhdmlvcihQYWludEJlaGF2aW9yTm9ybWFsKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1O
U0ltYWdlICpyYW5nZUltYWdlKEZyYW1lKiBmcmFtZSwgUmFuZ2UqIHJhbmdlLCBib29sIGZvcmNl
QmxhY2tUZXh0KQotewotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRC
ZWhhdmlvclNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQgPyBQYWludEJlaGF2aW9yRm9y
Y2VCbGFja1RleHQgOiAwKSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgp
OwotICAgIFJlbmRlclZpZXcqIHZpZXcgPSBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7Ci0gICAg
aWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgUG9zaXRpb24gc3RhcnQgPSBy
YW5nZS0+c3RhcnRQb3NpdGlvbigpOwotICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHN0YXJ0LmRv
d25zdHJlYW0oKTsKLSAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlk
YXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgIHN0YXJ0ID0gY2FuZGlk
YXRlOwotCi0gICAgUG9zaXRpb24gZW5kID0gcmFuZ2UtPmVuZFBvc2l0aW9uKCk7Ci0gICAgY2Fu
ZGlkYXRlID0gZW5kLnVwc3RyZWFtKCk7Ci0gICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9k
ZSgpICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQotICAgICAgICBl
bmQgPSBjYW5kaWRhdGU7Ci0KLSAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgp
IHx8IHN0YXJ0ID09IGVuZCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFJlbmRlck9iamVj
dCogc2F2ZWRTdGFydFJlbmRlcmVyOwotICAgIGludCBzYXZlZFN0YXJ0T2Zmc2V0OwotICAgIFJl
bmRlck9iamVjdCogc2F2ZWRFbmRSZW5kZXJlcjsKLSAgICBpbnQgc2F2ZWRFbmRPZmZzZXQ7Ci0g
ICAgdmlldy0+Z2V0U2VsZWN0aW9uKHNhdmVkU3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNl
dCwgc2F2ZWRFbmRSZW5kZXJlciwgc2F2ZWRFbmRPZmZzZXQpOwotCi0gICAgUmVuZGVyT2JqZWN0
KiBzdGFydFJlbmRlcmVyID0gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAg
ICBpZiAoIXN0YXJ0UmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBSZW5kZXJP
YmplY3QqIGVuZFJlbmRlcmVyID0gZW5kLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0g
ICAgaWYgKCFlbmRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHZpZXctPnNl
dFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
LCBlbmRSZW5kZXJlciwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIFJlbmRlclZpZXc6
OlJlcGFpbnROb3RoaW5nKTsKLSAgICBOU0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KGZy
YW1lLCB2aWV3LT5zZWxlY3Rpb25Cb3VuZHMoKSk7Ci0gICAgdmlldy0+c2V0U2VsZWN0aW9uKHNh
dmVkU3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNldCwgc2F2ZWRFbmRSZW5kZXJlciwgc2F2
ZWRFbmRPZmZzZXQsIFJlbmRlclZpZXc6OlJlcGFpbnROb3RoaW5nKTsKLQotICAgIGZyYW1lLT52
aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvck5vcm1hbCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotCi1OU0ltYWdlKiBzbmFwc2hvdERyYWdJbWFnZShGcmFtZSogZnJhbWUs
IE5vZGUqIG5vZGUsIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnRSZWN0KQotewot
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICgh
cmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgcmVuZGVyZXItPnVwZGF0
ZURyYWdTdGF0ZSh0cnVlKTsgICAgLy8gbWFyayBkcmFnZ2VkIG5vZGVzIChzbyB0aGV5IHBpY2sg
dXAgdGhlIHJpZ2h0IENTUykKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7
ICAvLyBmb3JjZXMgc3R5bGUgcmVjYWxjIC0gbmVlZGVkIHNpbmNlIGNoYW5naW5nIHRoZSBkcmFn
IHN0YXRlIG1pZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aW1wbHkgbmV3IHN0eWxlcywgcGx1cyBKUyBjb3VsZCBoYXZlIGNoYW5nZWQgb3RoZXIgdGhpbmdz
Ci0KLQotICAgIC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0
aGUgb3JpZ2luYWwgUmVuZGVyRWxlbWVudC4KLSAgICByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVy
KCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIExheW91
dFJlY3QgdG9wTGV2ZWxSZWN0OwotICAgIE5TUmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBw
ZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwotCi0g
ICAgaWYgKE5TSXNFbXB0eVJlY3QocGFpbnRpbmdSZWN0KSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVj
aWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJv
bVJlY3QoZnJhbWUsIHBhaW50aW5nUmVjdCk7Ci0gICAgcmVuZGVyZXItPnVwZGF0ZURyYWdTdGF0
ZShmYWxzZSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwotICAgIGZy
YW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcoMCk7Ci0KLSAgICBpZiAoZWxlbWVudFJlY3QpCi0g
ICAgICAgICplbGVtZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9wTGV2ZWxSZWN0KTsK
LSAgICBpZiAoaW1hZ2VSZWN0KQotICAgICAgICAqaW1hZ2VSZWN0ID0gcGFpbnRpbmdSZWN0Owot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvd2luL0ZyYW1lV2luLmNwcAppbmRleCA1YWFmM2E2NzhjOWU1NDNhZjY4M2IzN2FkNWIw
NmNjZTA2NDQzYjlmLi45Njc0ZjE3NjhmNWRkODQyNWI2MGM3YWYxNmYwZjFmN2Q2Zjc2MzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCkBAIC01NywzMCArNTcsNCBAQCBHRElP
YmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3Jj
ZUJsYWNrVGV4dCkKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLURyYWdJbWFnZVJlZiBGcmFtZTo6
ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoc2VsZWN0aW9uKCkuaXNSYW5nZSgp
KQotICAgICAgICByZXR1cm4gaW1hZ2VGcm9tU2VsZWN0aW9uKHRoaXMsIGZhbHNlKS5sZWFrKCk7
Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9k
ZSogbm9kZSkKLXsKLSAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLQotICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAg
SW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWlu
dGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwotCi0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3
KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUKLSAgICBHRElP
YmplY3Q8SEJJVE1BUD4gcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdCh0aGlzLCBwYWludGluZ1JlY3Qp
OwotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKLQotICAgIHJldHVybiByZXN1bHQubGVh
aygpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVX
aW4uaAppbmRleCAzYTI3MjNlNjNkNmQ3ZTdlYzA0NGNiMTJmMmVhN2JkMDZjZmU2NTlmLi4yNjk3
MjVjMWY5YjliODBkNTc4MTQ4NGY5MzFhYjI1ZGQzYWUzMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2lu
L0ZyYW1lV2luLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnRSZWN0
OwogCiBHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tUmVjdChjb25zdCBGcmFtZSosIEludFJl
Y3QmKTsKLUdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUqLCBib29s
IGZvcmNlV2hpdGVUZXh0KTsKK0dESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxlY3Rpb24o
RnJhbWUqLCBib29sIGZvcmNlQmxhY2tUZXh0KTsKIHZvaWQgY29tcHV0ZVBhZ2VSZWN0c0ZvckZy
YW1lKEZyYW1lKiwgY29uc3QgSW50UmVjdCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnaHQs
IGZsb2F0IGZvb3RlckhlaWdodCwgZmxvYXQgdXNlclNjYWxlRmFjdG9yLCBWZWN0b3I8SW50UmVj
dD4mIG91dFBhZ2VzLCBpbnQmIG91dFBhZ2VIZWlnaHQpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAppbmRleCBiODFhZmQ1NzllODI5
M2VlZmEyYmE5M2I5YmI1NWMxZjUwNzZjZjQ3Li5lNjJkYzE1YjA3MTFhOGE2YmI3Zjc1ODU4NWYz
NmNlYWVhMmFlYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKQEAgLTIw
LDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpA
QCAtMjgsMjkgKzI4LDM3IEBACiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVNuYXBzaG90dGluZy5oIgorI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIK
KyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4
U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IElu
dFNpemUmIHNpemUpCiB7CiAgICAgZmxvYXQgaGVpZ2h0UmVzaXplUmF0aW8gPSAwLjBmOwogICAg
IGZsb2F0IHdpZHRoUmVzaXplUmF0aW8gPSAwLjBmOwogICAgIGZsb2F0IHJlc2l6ZVJhdGlvID0g
LTEuMGY7CiAgICAgSW50U2l6ZSBvcmlnaW5hbFNpemUgPSBkcmFnSW1hZ2VTaXplKGltYWdlKTsK
LSAgICAKKwogICAgIGlmIChzcmNTaXplLndpZHRoKCkgPiBzaXplLndpZHRoKCkpIHsKICAgICAg
ICAgd2lkdGhSZXNpemVSYXRpbyA9IHNpemUud2lkdGgoKSAvIChmbG9hdClzcmNTaXplLndpZHRo
KCk7CiAgICAgICAgIHJlc2l6ZVJhdGlvID0gd2lkdGhSZXNpemVSYXRpbzsKICAgICB9Ci0gICAg
CisKICAgICBpZiAoc3JjU2l6ZS5oZWlnaHQoKSA+IHNpemUuaGVpZ2h0KCkpIHsKICAgICAgICAg
aGVpZ2h0UmVzaXplUmF0aW8gPSBzaXplLmhlaWdodCgpIC8gKGZsb2F0KXNyY1NpemUuaGVpZ2h0
KCk7CiAgICAgICAgIGlmICgocmVzaXplUmF0aW8gPCAwLjBmKSB8fCAocmVzaXplUmF0aW8gPiBo
ZWlnaHRSZXNpemVSYXRpbykpCiAgICAgICAgICAgICByZXNpemVSYXRpbyA9IGhlaWdodFJlc2l6
ZVJhdGlvOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzcmNTaXplID09IG9yaWdpbmFsU2l6ZSkK
ICAgICAgICAgcmV0dXJuIHJlc2l6ZVJhdGlvID4gMC4wZiA/IHNjYWxlRHJhZ0ltYWdlKGltYWdl
LCBGbG9hdFNpemUocmVzaXplUmF0aW8sIHJlc2l6ZVJhdGlvKSkgOiBpbWFnZTsKLSAgICAKKwog
ICAgIC8vIFRoZSBpbWFnZSB3YXMgc2NhbGVkIGluIHRoZSB3ZWJwYWdlIHNvIGF0IG1pbmltdW0g
d2UgbXVzdCBhY2NvdW50IGZvciB0aGF0IHNjYWxpbmcKICAgICBmbG9hdCBzY2FsZXggPSBzcmNT
aXplLndpZHRoKCkgLyAoZmxvYXQpb3JpZ2luYWxTaXplLndpZHRoKCk7CiAgICAgZmxvYXQgc2Nh
bGV5ID0gc3JjU2l6ZS5oZWlnaHQoKSAvIChmbG9hdClvcmlnaW5hbFNpemUuaGVpZ2h0KCk7CkBA
IC01OCwxNCArNjYsMTUxIEBAIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJh
Z0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjCiAgICAgICAgIHNjYWxl
eCAqPSByZXNpemVSYXRpbzsKICAgICAgICAgc2NhbGV5ICo9IHJlc2l6ZVJhdGlvOwogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiBzY2FsZURyYWdJbWFnZShpbWFnZSwgRmxvYXRTaXplKHNjYWxl
eCwgc2NhbGV5KSk7CiB9CiAKK3N0cnVjdCBTY29wZWROb2RlRHJhZ1N0YXRlIHsKKyAgICBTY29w
ZWROb2RlRHJhZ1N0YXRlKEZyYW1lJiBmcmFtZSwgTm9kZSogbm9kZSkKKyAgICA6IGZyYW1lKGZy
YW1lKQorICAgICwgbm9kZShub2RlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFub2RlIHx8IG5v
ZGUtPnJlbmRlcmVyKCkpOworICAgICAgICBpZiAobm9kZSkgeworICAgICAgICAgICAgbm9kZS0+
cmVuZGVyZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOworICAgICAgICAgICAgZnJhbWUuZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB+U2NvcGVk
Tm9kZURyYWdTdGF0ZSgpCisgICAgeworICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5yZW5kZXJl
cigpKSB7CisgICAgICAgICAgICBub2RlLT5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUoZmFs
c2UpOworICAgICAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBGcmFtZSYgZnJhbWU7CisgICAgTm9kZSogbm9kZTsKK307CisK
K3N0YXRpYyBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KE93blB0cjxJ
bWFnZUJ1ZmZlcj4gc25hcHNob3QsIE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFzbmFwc2hvdCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24gb3JpZW50YXRpb247CisjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAgICBp
ZiAobm9kZSkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVy
ZXIoKTsKKyAgICAgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgICAgIG9yaWVudGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHJlbmRl
cmVyLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgb3JpZW50YXRp
b24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCkuaW1hZ2VPcmllbnRh
dGlvbigpKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyNlbmRpZgor
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBzbmFwc2hvdC0+Y29weUltYWdlKEltYWdlQnVmZmVy
OjpmYXN0Q29weUltYWdlTW9kZSgpKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKGltYWdlLmdldCgpLCBvcmllbnRhdGlvbik7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiBmcmFtZSwgTm9kZSogbm9kZSkKK3sKKyAgICBTY29wZWRO
b2RlRHJhZ1N0YXRlIGVuYWJsZURyYWcoZnJhbWUsIG5vZGUpOworICAgIE93blB0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpOworICAgIHJldHVybiBj
cmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25hcHNob3QucmVsZWFzZSgpLCBub2RlKTsKK30K
KworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbihGcmFtZSYgZnJhbWUs
IGJvb2wgZm9yY2VCbGFja1RleHQpCit7CisgICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBm
b3JjZUJsYWNrVGV4dCA/IFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0IDogMDsKKyAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24oZnJhbWUsIG9w
dGlvbnMpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25hcHNob3Qu
cmVsZWFzZSgpLCBudWxscHRyKTsKK30KKworc3RydWN0IFNjb3BlZEZyYW1lU2VsZWN0aW9uU3Rh
dGUgeworICAgIFNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUoRnJhbWUmIGZyYW1lKQorICAgIDog
ZnJhbWUoZnJhbWUpCisgICAgeworICAgICAgICBpZiAoUmVuZGVyVmlldyogdmlldyA9IGZyYW1l
LmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICAgICAgdmlldy0+Z2V0U2VsZWN0aW9uKHN0YXJ0
UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRSZW5kZXJlciwgZW5kT2Zmc2V0KTsKKyAgICB9CisK
KyAgICB+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSgpCisgICAgeworICAgICAgICBpZiAoUmVu
ZGVyVmlldyogdmlldyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICAgICAgdmll
dy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRSZW5kZXJlciwg
ZW5kT2Zmc2V0LCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisgICAgfQorCisgICAgRnJh
bWUmIGZyYW1lOworICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlcjsKKyAgICBSZW5kZXJP
YmplY3QqIGVuZFJlbmRlcmVyOworICAgIGludCBzdGFydE9mZnNldDsKKyAgICBpbnQgZW5kT2Zm
c2V0OworfTsKKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKEZyYW1lJiBm
cmFtZSwgUmFuZ2UqIHJhbmdlLCBib29sIGZvcmNlQmxhY2tUZXh0KQoreworICAgIGZyYW1lLmRv
Y3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIFJlbmRlclZpZXcqIHZpZXcgPSBmcmFtZS5j
b250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgLy8gVG8gc25hcHNob3QgdGhlIHJhbmdlLCB0ZW1wb3JhcmlseSBzZWxlY3QgaXQg
YW5kIHRha2Ugc2VsZWN0aW9uIHNuYXBzaG90LgorICAgIFBvc2l0aW9uIHN0YXJ0ID0gcmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKTsKKyAgICBQb3NpdGlvbiBjYW5kaWRhdGUgPSBzdGFydC5kb3duc3Ry
ZWFtKCk7CisgICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5k
ZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICBzdGFydCA9IGNhbmRpZGF0ZTsK
KworICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlLT5lbmRQb3NpdGlvbigpOworICAgIGNhbmRpZGF0
ZSA9IGVuZC51cHN0cmVhbSgpOworICAgIGlmIChjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKSAm
JiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgZW5kID0g
Y2FuZGlkYXRlOworCisgICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8IGVuZC5pc051bGwoKSB8fCBz
dGFydCA9PSBlbmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgY29uc3QgU2NvcGVk
RnJhbWVTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZShmcmFtZSk7CisKKyAgICBSZW5kZXJP
YmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigp
OworICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmQuZGVwcmVjYXRlZE5vZGUoKS0+
cmVuZGVyZXIoKTsKKyAgICBpZiAoIXN0YXJ0UmVuZGVyZXIgfHwgIWVuZFJlbmRlcmVyKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zID0gZm9y
Y2VCbGFja1RleHQgPyBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA6IDA7CisgICAgdmll
dy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCksIGVuZFJlbmRlcmVyLCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgUmVuZGVy
Vmlldzo6UmVwYWludE5vdGhpbmcpOworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3Qg
PSBzbmFwc2hvdFNlbGVjdGlvbihmcmFtZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIGNyZWF0ZURy
YWdJbWFnZUZyb21TbmFwc2hvdChzbmFwc2hvdC5yZWxlYXNlKCksIG51bGxwdHIpOworfQorCitE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2UoRnJhbWUmIGZyYW1lLCBOb2RlKiBu
b2RlLCBJbnRSZWN0JiBpbWFnZVJlY3QsIEludFJlY3QmIGVsZW1lbnRSZWN0KQoreworICAgIFNj
b3BlZE5vZGVEcmFnU3RhdGUgZW5hYmxlRHJhZyhmcmFtZSwgbm9kZSk7CisKKyAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIENhbGN1bGF0ZSBpbWFnZSBhbmQgZWxl
bWVudCBtZXRyaWNzIGZvciB0aGUgY2xpZW50LCB0aGVuIGNyZWF0ZSBkcmFnIGltYWdlLgorICAg
IExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3Qp
KTsKKworICAgIGlmIChwYWludGluZ1JlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGVsZW1lbnRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdCh0b3BMZXZlbFJl
Y3QpOworICAgIGltYWdlUmVjdCA9IHBhaW50aW5nUmVjdDsKKworICAgIE93blB0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpOworICAgIHJldHVybiBj
cmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25hcHNob3QucmVsZWFzZSgpLCBub2RlKTsKK30K
KwogI2lmICFQTEFURk9STShNQUMpICYmICghUExBVEZPUk0oV0lOKSB8fCBPUyhXSU5DRSkpCiBE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcmLCBG
b250UmVuZGVyaW5nTW9kZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IGQ4ZjUyYmNm
YWQ0NDI0M2Y4YWNjYjg2NzBhMDk0YWYxMTNjNGIyNGQuLmM3MjNhMmY3NmNjZTUwOTM1MmEyMjZi
ZWM0NjZmMjNkN2M5YWEyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC0y
NiwxMCArMjYsMTEgQEAKICNpZm5kZWYgRHJhZ0ltYWdlX2gKICNkZWZpbmUgRHJhZ0ltYWdlX2gK
IAorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdNb2RlLmgi
CisjaW5jbHVkZSAiRnJhbWVTbmFwc2hvdHRpbmcuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00MSwzOCArNDIs
NDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSEJJVE1BUF9fKiBIQklUTUFQOwogdHlwZWRlZiBzdHJ1Y3Qg
X2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwogI2VuZGlmCiAKLS8vV2UgbmVlZCB0byAj
ZGVmaW5lIFlPZmZzZXQgYXMgaXQgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGggV2ViS2l0CisvLyBX
ZSBuZWVkIHRvICNkZWZpbmUgWU9mZnNldCBhcyBpdCBuZWVkcyB0byBiZSBzaGFyZWQgd2l0aCBX
ZWJLaXQKICNkZWZpbmUgRHJhZ0xhYmVsQm9yZGVyWU9mZnNldCAyCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotICAgIGNsYXNzIEltYWdlOwotICAgIGNsYXNzIFVSTDsKK2NsYXNzIEZyYW1lOwor
Y2xhc3MgSW1hZ2U7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgTm9kZTsKK2NsYXNzIFJhbmdlOwor
Y2xhc3MgVVJMOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHR5cGVkZWYgUmV0YWluUHRyPE5T
SW1hZ2U+IERyYWdJbWFnZVJlZjsKK3R5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFn
ZVJlZjsKICNlbGlmIFBMQVRGT1JNKFdJTikKLSAgICB0eXBlZGVmIEhCSVRNQVAgRHJhZ0ltYWdl
UmVmOwordHlwZWRlZiBIQklUTUFQIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oTklYKQotICAgIHR5cGVkZWYgY2Fpcm9fc3VyZmFjZV90KiBEcmFnSW1hZ2VS
ZWY7Cit0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZP
Uk0oRUZMKSB8fCBQTEFURk9STShCTEFDS0JFUlJZKQotICAgIHR5cGVkZWYgdm9pZCogRHJhZ0lt
YWdlUmVmOwordHlwZWRlZiB2b2lkKiBEcmFnSW1hZ2VSZWY7CiAjZW5kaWYKLSAgICAKLSAgICBJ
bnRTaXplIGRyYWdJbWFnZVNpemUoRHJhZ0ltYWdlUmVmKTsKLSAgICAKLSAgICAvL1RoZXNlIGZ1
bmN0aW9ucyBzaG91bGQgYmUgbWVtb3J5IG5ldXRyYWwsIGVnLiBpZiB0aGV5IHJldHVybiBhIG5l
d2x5IGFsbG9jYXRlZCBpbWFnZSwgCi0gICAgLy90aGV5IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1
dCBpbWFnZS4gIEFzIGEgY29yb2xsYXJ5IHRoZXNlIG1ldGhvZHMgZG9uJ3QgZ3VhcmFudGVlCi0g
ICAgLy90aGUgaW5wdXQgaW1hZ2UgcmVmIHdpbGwgc3RpbGwgYmUgdmFsaWQgYWZ0ZXIgdGhleSBo
YXZlIGJlZW4gY2FsbGVkCi0gICAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShE
cmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEludFNpemUm
IHNpemUpOwotICAgIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYsIEZs
b2F0U2l6ZSBzY2FsZSk7Ci0gICAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFj
dGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2UsIGZsb2F0IGRlbHRhKTsKLSAgICAKLSAgICBEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKTsKLSAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hl
ZEltYWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZvckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJlbmRlcmluZ01v
ZGUpOwotICAgIHZvaWQgZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7CisKK0ludFNpemUg
ZHJhZ0ltYWdlU2l6ZShEcmFnSW1hZ2VSZWYpOworCisvLyBUaGVzZSBmdW5jdGlvbnMgc2hvdWxk
IGJlIG1lbW9yeSBuZXV0cmFsLCBlZy4gaWYgdGhleSByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQg
aW1hZ2UsCisvLyB0aGV5IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4gQXMgYSBjb3Jv
bGxhcnkgdGhlc2UgbWV0aG9kcyBkb24ndCBndWFyYW50ZWUKKy8vIHRoZSBpbnB1dCBpbWFnZSBy
ZWYgd2lsbCBzdGlsbCBiZSB2YWxpZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBjYWxsZWQuCitEcmFn
SW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiwgY29uc3QgSW50U2l6
ZSYgc3JjU2l6ZSwgY29uc3QgSW50U2l6ZSYgZHN0U2l6ZSk7CitEcmFnSW1hZ2VSZWYgc2NhbGVE
cmFnSW1hZ2UoRHJhZ0ltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpOworRHJhZ0ltYWdlUmVmIGRp
c3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYsIGZsb2F0IGRlbHRhKTsKKwor
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbik7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNh
Y2hlZEltYWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiwgTm9kZSopOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvclNlbGVjdGlvbihGcmFtZSYsIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7CitE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmLCBSYW5nZSosIGJvb2wg
Zm9yY2VCbGFja1RleHQgPSBmYWxzZSk7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9y
SW1hZ2UoRnJhbWUmLCBOb2RlKiwgSW50UmVjdCYgaW1hZ2VSZWN0LCBJbnRSZWN0JiBlbGVtZW50
UmVjdCk7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBGb250UmVuZGVyaW5nTW9kZSk7Cit2b2lkIGRlbGV0ZURyYWdJbWFnZShE
cmFnSW1hZ2VSZWYpOwogfQogCiAKLSNlbmRpZiAvLyFEcmFnSW1hZ2VfaAorI2VuZGlmIC8vICFE
cmFnSW1hZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUlPUy5tbQppbmRleCA1ZGZmNmYwZmU5YzFkOWYyZGU0YTFlMTE5M2E1ZWZiNDQ2MmQwNzkxLi5k
NTYyYTE2MTkyNjVmYTYxZTBiNGMxODk2YTA4ZmY1ZmViMTNiNWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQpAQCAtMzMsNyArMzMsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVTbmFwc2hvdHRpbmdNYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTbmFwc2hvdHRp
bmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hp
dFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvaHRtbGVkaXRpbmcuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDQ4NjI4MGU0N2I2YTU1ZDY5M2Y4
NGEzNTE0MmRhMzM4ZTJiZjc5YmYuLmFmYmY4Y2M2NGUwNTQzZWQyMzViNzI2MTNkZGJhM2E4MDhi
OTNmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtODUs
NiArODUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
cmFnQ29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckRlbGV0ZUFjdGlvbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Lmg+CkBAIC05NSw3ICs5Niw2IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lU2VsZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU25h
cHNob3R0aW5nTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpA
QCAtMTgyMCw3ICsxODIwLDEyIEBAIHN0YXRpYyBib29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNr
T3JEcmFnKE5TRXZlbnQgKmV2ZW50KQogewogICAgIGlmICghW3NlbGYgX2hhc1NlbGVjdGlvbl0p
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gc2VsZWN0aW9u
SW1hZ2UoY29yZShbc2VsZiBfZnJhbWVdKSk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShbc2VsZiBfZnJhbWVdKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIE5TSW1hZ2UgKmRyYWdJbWFnZSA9IFtbY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0
aW9uKCpjb3JlRnJhbWUpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIFtkcmFnSW1hZ2UgX3dl
Yl9kaXNzb2x2ZVRvRnJhY3Rpb246V2ViRHJhZ0ltYWdlQWxwaGFdOwogICAgIHJldHVybiBkcmFn
SW1hZ2U7CiB9CkBAIC01OTY1LDcgKzU5NzAsMTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVy
bGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUK
IHsKICAgICBpZiAoIVtzZWxmIF9oYXNTZWxlY3Rpb25dKQogICAgICAgICByZXR1cm4gbmlsOwot
ICAgIHJldHVybiBzZWxlY3Rpb25JbWFnZShjb3JlKFtzZWxmIF9mcmFtZV0pLCBmb3JjZUJsYWNr
VGV4dCk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKKyAg
ICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW1tjcmVh
dGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKmNvcmVGcmFtZSwgZm9yY2VCbGFja1RleHQpIHJldGFp
bl0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU1JlY3Qpc2VsZWN0aW9uSW1hZ2VSZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXggY2NiZDcxOTAxZTQ1NTc5MDMxYjkwMmJh
NTZhODk0ZTZhOGQ3OWNiMy4uNGI3ZjNhNTU4YTMxMDFjOWFkZDM3ZmM5YmY4Yzk3ZDM5YTJiYjVi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRv
dy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Ry
YWdJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRm9udC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1NpbXBsZUZvbnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0hUTUxOYW1lcy5oPgpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZUxp
c3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlclRyZWVBc1RleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZUZvbnREYXRh
Lmg+CiAKICNpbmNsdWRlIDxpbml0Z3VpZC5oPgogLy8gezNCMEMwRUZGLTQ3OEItNGIwYi04Mjkw
LUQyMzIxRTA4RTIzRX0KQEAgLTEyNzksNyArMTI4MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NRWxlbWVudDo6cmVuZGVyZWRJbWFnZShIQklUTUFQKiBpbWFnZSkKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKmltYWdlID0gZnJhbWUtPm5v
ZGVJbWFnZShtX2VsZW1lbnQpOworICAgICppbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvck5vZGUo
KmZyYW1lLCBtX2VsZW1lbnQpOwogICAgIGlmICghKmltYWdlKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217138</attachid>
            <date>2013-11-16 15:50:06 -0800</date>
            <delta_ts>2013-11-17 15:20:02 -0800</delta_ts>
            <desc>v2.0 (appease style bot)</desc>
            <filename>bug-124325-20131116155005.patch</filename>
            <type>text/plain</type>
            <size>67210</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0NGNiZWZkMmZkZjI5
NGE0N2FkNmZiMzk2YTViZDIyMzAwOTdkMS4uZTI5ZmUyMjgwNWFhYzMzZDQ5Y2NmNjhjNTg3Yjg1
YjJkNzE3ZDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTExLTE2ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc25hcHNob3QgY3JlYXRpb24g
bWV0aG9kcyBoYWQgZHVwbGljYXRlZCBjb2RlIGFuZCB3ZXJlIHNwbGl0CisgICAgICAgIGJldHdl
ZW4gRnJhbWUsIERyYWdJbWFnZSwgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9u
c3MuCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBXZWJDb3JlIHNuYXBzaG90IG1ldGhvZHMgaW50
byBGcmFtZVNuYXBzaG90dGluZworICAgICAgICBhbmQgcmVtb3ZlcyBwbGF0Zm9ybSBpbXBsZW1l
bnRhdGlvbnMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgRHJhZ0ltYWdlIG1ldGhvZHMgcmV1
c2Ugc25hcHNob3QgbWV0aG9kcyB3aGVyZSBwb3NzaWJsZS4gSW5zcGVjdG9yCisgICAgICAgIHdp
bGwgYmUgYWJsZSB0byB0YWtlIHNuYXBzaG90cyB3aXRob3V0IHVzaW5nIGRyYWcgaW1hZ2VzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJbWFn
ZV0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpd
KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQ
YWludGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0
ZTo6flNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hv
dEZyYW1lUmVjdCk6IE1vdmUgbW9zdCBidWZmZXIgbG9naWMgdG8gaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90U2VsZWN0aW9uKTogTW92ZWQgZnJvbSBGcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90Tm9kZSk6IE1vdmVkIGZyb20gRnJhbWUuCisgICAgICAgICogcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcDogcmVtb3ZlIGR1cGxpY2F0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5oOiBGaXggYW4gaW5j
b3JyZWN0IHBhcmFtZXRlciBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY29wZWROb2RlRHJhZ1N0YXRlOjpTY29wZWROb2RlRHJhZ1N0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZE5vZGVEcmFnU3RhdGU6On5TY29wZWROb2Rl
RHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dCk6IEJvaWxlcnBsYXRlIGJ1ZmZlciBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0
ZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRG
cmFtZVNlbGVjdGlvblN0YXRlOjp+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6IE1vdmVkIGZyb20gRnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6IE1vdmVkIGZyb20gRnJh
bWVTbmFwc2hvdHRpbmdNYWMuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKTogdXNlIG51bGxwdHIuCisKIDIwMTMtMTEtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ3J5cHRvIG5vIGxvbmdlciB1c2VzIHNlcXVlbmNl
cyBvZiBBcnJheUJ1ZmZlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCAxNDkzYzJiZjFkOGI1YjEwNTQ3
NTFjYTM5NDFjYzZhODllMGIzZDI2Li43ZDM0YWFjYTA0MWZiZWE2NjMzZGQ2MDdjZGQ1OWMxN2Zh
NmI5MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTMgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIENvbnNvbGlk
YXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUlPUy5tbTogdXNlIG5ldyBoZWFkZXIgZmlsZS4KKwogMjAxMy0xMS0wNyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhIFBMQVRGT1JNKElP
UykgZnJvbSBXZWJLaXQgUHJpdmF0ZSBIZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBhYTNmMTM0
NDEyZDI2YmNlNjhiYmVmMDliZTQyYjRlYTlkYjM0MjYzLi40OWM1ZTlmMzgzOTliYjFhZmYyYzFj
NTBjM2E3MmI0Zjg1ZDc2NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTMtMTEtMTMgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIENvbnNvbGlkYXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG5ldyBwbGF0
Zm9ybS1pbmRlcGVuZGVudCBtZXRob2RzIGluc3RlYWQgb2YgTWFjIG1ldGhvZHMuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2Vs
ZWN0aW9uRHJhZ2dpbmdJbWFnZV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZWxlY3Rpb25J
bWFnZUZvcmNpbmdCbGFja1RleHQ6XSk6CisKIDIwMTMtMTEtMTQgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWltcGxlbWVudCBnZXREYXlCb3VuZGFy
aWVzIHVzaW5nIE5TQ2FsZW5kYXIgb24gMTAuOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDY4N2QyZTU0
YmQ0YjZhNjBjYzhhMDFkNDA0ZTgyNmZhOTg0NTA3M2YuLjY5MWFjMGY2NGQ5NjJjMzI4MDE4MGU0
YzRmYmQ5Mjg5OWZkZDhiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
My0xMS0xNCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAg
ICAgQ29uc29saWRhdGUgdmFyaW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVDbGFz
c2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UpOiB1c2UgY3JlYXRl
RHJhZ0ltYWdlRm9yTm9kZS4KKwogMjAxMy0xMS0xNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIFdpbiBidWlsZCBmaXg7IHNldEN1cnJlbnRU
aW1lKCkgbm8gbG9uZ2VyIHRha2VzIGFuIGV4Y2VwdGlvbiBwYXJhbWV0ZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDQ3MGRmMjQxZWZlODk2M2NjNmY0Nzc1NjJkNGM1MDU2MzhiZjc1OGMuLjcx
Y2EzMjYwZTNkM2EwOTk1YmZjZGZmYzY0MTQxY2Q5Zjk1ZjNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNzI2LDYgKzE3MjYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCiAgICAgcGFnZS9GcmFtZS5jcHAKICAgICBwYWdlL0ZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlci5jcHAKKyAgICBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAogICAg
IHBhZ2UvRnJhbWVUcmVlLmNwcAogICAgIHBhZ2UvRnJhbWVWaWV3LmNwcAogICAgIHBhZ2UvR2Vz
dHVyZVRhcEhpZ2hsaWdodGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
ZmQ1MzI3ODEyNGM5ZDhhZGM1ZjMyNDM0YjA1NWRhM2VhZDBhZGNhYS4uZWVmYjkzYjY1NjU3OTUy
ZGFjODI2NWNmYTEyYzhiYWZiZDA2Mjc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC00MTE4LDYgKzQxMTgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDE0MjQyYjMyMTJmOWY0YWUxZDhiM2QzNjIyNTUyM2VlNzgxNjgyMWUuLjhjZGQxZmY2
ZTM0YmYzNmZiOWE2NDhlODY4YjI0NzBjZmJlNzBlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC00MjcsNyArNDI3LDYgQEAgX19aTjdXZWJDb3JlMTRjb29raWVzRW5hYmxlZEVSS05TXzIxTmV0
d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43V2ViQ29yZTE0ZGVjb2RlSG9z
dE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRlbmNvZGVIb3N0TmFtZUVQOE5TU3RyaW5n
CiBfX1pON1dlYkNvcmUxNGVuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCi1fX1pON1dlYkNvcmUxNHNlbGVjdGlvbklt
YWdlRVBOU181RnJhbWVFYgogX19aTjdXZWJDb3JlMTRzZXRNZXRhZGF0YVVSTEVSTjNXVEY2U3Ry
aW5nRVJLUzFfUzRfCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVmbGlwWUV2CiBfX1pO
N1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVzY2FsZUVkCkBAIC04ODcsNiArODg2LDcgQEAgX19a
TjdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2VDMkV2CiBfX1pON1dlYkNvcmUy
N0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2Rl
RUVFYlJLTlMxXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jazE0c2V0T3JpZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRh
dGlvbkRhdGFFRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFF
dgorX19aTjdXZWJDb3JlMjdjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb25FUk5TXzVGcmFtZUVi
CiBfX1pON1dlYkNvcmUyN3Byb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbEVSS05TXzNVUkxFUzJf
CiBfX1pON1dlYkNvcmUyN3N0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlc0VQRnZ2RQogX19aTjdX
ZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFTjNXVEY3
UGFzc1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQpAQCAtMjAzMiw3ICsyMDMyLDYgQEAg
X19aTjdXZWJDb3JlMzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CiBf
X1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZ0V2
CiBfX1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGlu
Z0V2CiBfX1pON1dlYkNvcmU0NmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9t
YXRpY2FsbHlFdgotX19aTjdXZWJDb3JlNUZyYW1lOW5vZGVJbWFnZUVQTlNfNE5vZGVFCiBfX1pO
N1dlYkNvcmU2Q3Vyc29yOGZyb21UeXBlRU5TMF80VHlwZUUKIF9fWk43V2ViQ29yZTZDdXJzb3JD
MUVQTlNfNUltYWdlRVJLTlNfOEludFBvaW50RQogX19aTjdXZWJDb3JlNkN1cnNvckMxRVJLUzBf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCA1MWU5MThlNzk0ODkyMmNmZDIyMDMxM2E1ZDFhNGJiOTFkYzA5YTBhLi4wMzFiNmNmZTk2YmY1
ODk4NWRlYzNlNTk2OTQ2M2U0YjRlZGI1OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTY5ODMsNiArNjk4Myw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZvY3VzQ29udHJvbGxlci5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGFnZVxHcm91cFNldHRpbmdzLmNwcCIgLz4KQEAgLTE4ODEyLDYgKzE4ODEzLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRm9jdXNEaXJlY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNob3R0aW5nLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhZ2VcR3JvdXBTZXR0aW5ncy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGEzOTVkYWI5
YjYzNjI2N2MxYThhNmJhYmNjNWExYzA2MmVjZjUyY2MuLjExYjJjNTRhNTMxZjExMjUzMDdiMjE4
MDAyOTg2NWVmMGYxOTljMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcxNyw2ICs3MTcsOSBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVNuYXBzaG90dGluZy5jcHAiPgorICAgICAg
PEZpbHRlcj5wYWdlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03NjE3LDYgKzc2MjAsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCI+CiAgICAgICA8
RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuaCI+CisgICAgICA8RmlsdGVyPnBhZ2U8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
Z2VcRnJhbWVUcmVlLmgiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMDRiZWQwN2VmYWM1ODkyOGU1YmEwMTY5NjY0ZTMxYmYwYThiMzlkZS4uMWZm
ZjIxNzI5OTNiYjU3OTVlMzdiOGNkYWVhYjYwYjNkNWNhZGEyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjAwNSw3ICsyMDA1
LDYgQEAKIAkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODMwOTdBM0Y1MzAw
QjkwNTBBIC8qIEZyYW1lVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1QkYwMjJFMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyOTA5NzQ4
MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwICovOyB9OwogCQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1QkYwMjQ1MDk3NDgxOTAwMEM0MzE5
NiAvKiBGcmFtZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAqLzsgfTsKIAkJ
NjVDOTdBRjMwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNv
bmZpZy5oICovOyB9OwogCQk2NUNCRkVGOTA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY3
MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovOyB9OwogCQk2NUNCRkVGQTA5NzRG
NjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIyMDYs
OCArMjIwNSw2IEBACiAJCTdDNTM0M0ZDMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M1MzQzRkExN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAgKi87IH07CiAJCTdDNTM0M0ZEMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNTM0M0ZCMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aCAqLzsgfTsKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlz
dC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
QzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9Owot
CQk3Q0UzMERBOTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi87IH07Ci0JCTdDRTMwREFB
MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0Ux
IC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8qIENTU1ZhbHVl
S2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdv
cmRzLmggKi87IH07CiAJCTdFMTJFOTBGMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5oICovOyB9OwogCQk3RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAgKi87IH07CkBAIC01MjQ0LDYgKzUyNDEsOCBAQAogCQlDM0NGMTdBNTE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0Ey
MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovOyB9Owog
CQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMzE1
QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzRDRDYyOUExODM4Mzc2NjAw
N0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5jcHAgKi87IH07CisJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYx
MjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdy
b3VwU2V0dGluZ3MuY3BwICovOyB9OwogCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3Jv
dXBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MjBGRjQyNzI5
MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFn
ZU5hbWVzcGFjZS5jcHAgKi87IH07CkBAIC04NzQwLDcgKzg3MzksNiBAQAogCQk2NUE2NDBGMDA1
MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVCRjAy
MjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVCRjAy
M0MwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEZyYW1lTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVDQkZFRjcw
OTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnJhbWVWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04OTY4LDggKzg5NjYsNiBAQAogCQk3QzYxMzZGODE3MTBDMzUyMDBGRjRBNTcgLyog
SW5GaWxlc1BhcnNlci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJbkZpbGVzUGFyc2VyLnBtOyBwYXRo
ID0gc2NyaXB0cy9JbkZpbGVzUGFyc2VyLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzYxMzZGOTE3MTBDMzUyMDBGRjRBNTcgLyogU3RhdGljU3RyaW5nLnBtICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsg
bmFtZSA9IFN0YXRpY1N0cmluZy5wbTsgcGF0aCA9IHNjcmlwdHMvU3RhdGljU3RyaW5nLnBtOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyog
SUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJRE5TY3JpcHRX
aGl0ZUxpc3QudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZ01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25h
cHNob3R0aW5nTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lU25h
cHNob3R0aW5nTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMTJFOTBEMTVG
QTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDsgcGF0aCA9
IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21G
aWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAwMTI3RjM0
MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
Mjc0LDYgKzEyMjcwLDggQEAKIAkJQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRUYXJnZXRPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDM0NGMTdBMjE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0
Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVNu
YXBzaG90dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5
RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVz
cGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFt
ZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjA2LDYgKzE1NjA0
LDggQEAKIAkJCQk2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLywKIAkJCQk5
NzRBODYyMDE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCAq
LywKIAkJCQk5NzRBODYyMTE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyLmggKi8sCisJCQkJQzRDRDYyOTgxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0
aW5nLmNwcCAqLywKKwkJCQlDNENENjI5OTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hv
dHRpbmcuaCAqLywKIAkJCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNw
cCAqLywKIAkJCQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8sCiAJ
CQkJNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCkBAIC0xNjUy
MCw5ICsxNjUyMCw2IEBACiAJCQkJQUJBRjIyMDcwQzAzQjFDNzAwQjBCQ0YwIC8qIENocm9tZU1h
Yy5tbSAqLywKIAkJCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJN
YWMubW0gKi8sCiAJCQkJOTNDMDlBN0UwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1h
Yy5tbSAqLywKLQkJCQk2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gKi8s
Ci0JCQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmgg
Ki8sCi0JCQkJN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tICovLAogCQkJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLywK
IAkJCQlFMUMyRjI0ODE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0gKi8sCiAJCQkJ
RjU4Nzg1NEMwMkRFMzc1OTAxRUE0MTIyIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCAqLywKQEAgLTIy
MTIxLDYgKzIyMTE4LDcgQEAKIAkJCQkxQTU2OUNGODBEN0UyQjgyMDA3QzM5ODMgLyogY19jbGFz
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkEwRDdFMkI4MjAwN0MzOTgzIC8qIGNfaW5z
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZDMEQ3RTJCODIwMDdDMzk4MyAvKiBj
X3J1bnRpbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAv
KiBGcmFtZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkUwRDdFMkI4
MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMUEwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNjRCNENDMENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmggaW4gSGVhZGVycyAqLywK
QEAgLTIyOTc5LDcgKzIyOTc3LDYgQEAKIAkJCQk2MjhEMjE0RTEyMTMxRUY0MDA1NURDRkMgLyog
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNzAxODBG
Mjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OUUwRTA5OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAot
CQkJCTdDRTMwREFBMTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVBQjAxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERp
cmVjdG9yeURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjU5LDEwICsyNjI1Niw4IEBA
CiAJCQkJOTMyRTE2MDkwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRl
TWFjaGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkJBNzY2RTE2NjQyN0E4MDA1QkU1RDEg
LyogRnJhbWVMb2FkUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NUJGMDI0NTA5NzQ4
MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwRDA5
OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEE4Qzk2RUIwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJN0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5n
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQUQxN0QxNDE1MTAwN0ZGODQyIC8qIEpT
UlRDRGF0YUNoYW5uZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUEyMTQ4NDA5N0Ez
RjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzkxQTEw
MTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3NzY4LDYgKzI3NzYzLDcgQEAKIAkJCQk1MUUwQkIzOTBEQTVBQ0I2MDBBOUU0MTcgLyogU3Rv
cmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzI3N0U1MjE3RDAxOENDMDAxNTUzNEQg
LyogSlNNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MEQwRTgyMEZG
NDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUM0Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDNTVFMzhDMDEwMDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMDlEQjQxNkFGNUY2QzAwODUzOEU3IC8q
IFN0b3JhZ2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEwMkQ5NTBGRDlBQTJE
MDBGQUZGMDQgLyogU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCBjYzAzNjU1MjZlMzE2ZTA1ZDViMTViYjc0NDRj
M2JiMmJjZmE5MDUwLi5kMzc1OTk4MmRjZWQyMjRmODhlNjEzNmY1MjRiY2FjZDNlMGQ1NDMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9y
dCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2YXRlLmgiCiAjaW1wb3J0ICJE
T01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKICNpbXBvcnQgIkZvbnQu
aCIKICNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgog
I2ltcG9ydCAiSFRNTEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAi
SFRNTFBhcnNlcklkaW9tcy5oIgpAQCAtMjg5LDcgKzI4OSw3IEBAIGlkIDxET01FdmVudFRhcmdl
dD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKICAgICBXZWJDb3JlOjpG
cmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gZnJhbWUtPm5vZGVJbWFnZShub2RlKS5n
ZXQoKTsKKyAgICByZXR1cm4gW1tjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgbm9kZSkg
cmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKQEAgLTMz
NSw3ICszMzUsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdl
dCogZXZlbnRUYXJnZXQpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIHJldHVybiBXZWJDb3JlOjpyYW5nZUltYWdlKGZyYW1lLCByYW5nZSwgZm9yY2VCbGFja1Rl
eHQpOworICAgIHJldHVybiBbW2NyZWF0ZURyYWdJbWFnZUZvclJhbmdlKCpmcmFtZSwgcmFuZ2Us
IGZvcmNlQmxhY2tUZXh0KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAq
KXRleHRSZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAppbmRleCA5ZDJlMjc1MmZkZjJiN2M2
NjQyYTI0MjRmODgwNjNlYzhhNzFjN2M4Li44MDM4ZTc4NDcwODU4MDgwNzBkODdmMWE3ZjI5ZTQz
ZDgwYTM2ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcApAQCAtMjc3LDEwICsyNzcsMTEg
QEAgRHJhZ0ltYWdlUmVmIENsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBsb2Nh
dGlvbikgY29uc3QKIAogICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKICAgICAgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IG1fZHJhZ0ltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5ub2RlSW1hZ2UobV9kcmFnSW1hZ2VFbGVtZW50Lmdl
dCgpKTsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwg
bV9kcmFnSW1hZ2VFbGVtZW50LmdldCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gMDsgLy8gV2Ug
ZG8gbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGNyZWF0ZSBhIGRyYWcgaW1hZ2UsIHVz
ZSB0aGUgZGVmYXVsdCBpY29uLgorICAgIC8vIFdlIGRvIG5vdCBoYXZlIGVub3VnaCBpbmZvcm1h
dGlvbiB0byBjcmVhdGUgYSBkcmFnIGltYWdlLCB1c2UgdGhlIGRlZmF1bHQgaWNvbi4KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZE1hYy5tbQpp
bmRleCA3NmNhNmZjYTNlNDI0MDdiNWY4ZTdiMzVlNjU4NzM3YzIxMTNlOGZiLi45ZjliZTAxZmRk
MzJiZmI2M2ZmMjc4ZGQ5MmRlZjQ1NDEwODVjZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRN
YWMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ2FjaGVkSW1hZ2UuaCIKICNpbXBv
cnQgIkVsZW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCisjaW1wb3J0
ICJEcmFnSW1hZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywxNiArMzcsMTYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQ2xpcGJvYXJkOjpkcmFnSW1hZ2UgaW4gQ2xpcGJv
YXJkLmNwcCBkb2VzIG5vdCBoYW5kbGUgY29ycmVjdGx5LCBzbyBtdXN0IHJlc29sdmUgdGhhdCBh
cyB3ZWxsLgogRHJhZ0ltYWdlUmVmIENsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50
JiBsb2NhdGlvbikgY29uc3QKIHsKLSAgICBOU0ltYWdlICpyZXN1bHQgPSBuaWw7CisgICAgRHJh
Z0ltYWdlUmVmIHJlc3VsdCA9IG5pbDsKICAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7CiAg
ICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RyYWdJbWFnZUVsZW1lbnQtPmRvY3VtZW50KCku
ZnJhbWUoKSkgewotICAgICAgICAgICAgTlNSZWN0IGltYWdlUmVjdDsKLSAgICAgICAgICAgIE5T
UmVjdCBlbGVtZW50UmVjdDsKLSAgICAgICAgICAgIHJlc3VsdCA9IHNuYXBzaG90RHJhZ0ltYWdl
KGZyYW1lLCBtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCksICZpbWFnZVJlY3QsICZlbGVtZW50UmVj
dCk7CisgICAgICAgICAgICBJbnRSZWN0IGltYWdlUmVjdDsKKyAgICAgICAgICAgIEludFJlY3Qg
ZWxlbWVudFJlY3Q7CisgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVEcmFnSW1hZ2VGb3JJbWFn
ZSgqZnJhbWUsIG1fZHJhZ0ltYWdlRWxlbWVudC5nZXQoKSwgaW1hZ2VSZWN0LCBlbGVtZW50UmVj
dCk7CiAgICAgICAgICAgICAvLyBDbGllbnQgc3BlY2lmaWVzIHBvaW50IHJlbGF0aXZlIHRvIGVs
ZW1lbnQsIG5vdCB0aGUgd2hvbGUgaW1hZ2UsIHdoaWNoIG1heSBpbmNsdWRlIGNoaWxkCiAgICAg
ICAgICAgICAvLyBsYXllcnMgc3ByZWFkIG91dCBhbGwgb3ZlciB0aGUgcGxhY2UuCi0gICAgICAg
ICAgICBsb2NhdGlvbi5zZXRYKGVsZW1lbnRSZWN0Lm9yaWdpbi54IC0gaW1hZ2VSZWN0Lm9yaWdp
bi54ICsgbV9kcmFnTG9jYXRpb24ueCgpKTsKLSAgICAgICAgICAgIGxvY2F0aW9uLnNldFkoaW1h
Z2VSZWN0LnNpemUuaGVpZ2h0IC0gKGVsZW1lbnRSZWN0Lm9yaWdpbi55IC0gaW1hZ2VSZWN0Lm9y
aWdpbi55ICsgbV9kcmFnTG9jYXRpb24ueSgpKSk7CisgICAgICAgICAgICBsb2NhdGlvbi5zZXRY
KGVsZW1lbnRSZWN0LngoKSAtIGltYWdlUmVjdC54KCkgKyBtX2RyYWdMb2NhdGlvbi54KCkpOwor
ICAgICAgICAgICAgbG9jYXRpb24uc2V0WShpbWFnZVJlY3QuaGVpZ2h0KCkgLSAoZWxlbWVudFJl
Y3QueSgpIC0gaW1hZ2VSZWN0LnkoKSArIG1fZHJhZ0xvY2F0aW9uLnkoKSkpOwogICAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChtX2RyYWdJbWFnZSkgewogICAgICAgICByZXN1bHQgPSBtX2RyYWdJ
bWFnZS0+aW1hZ2UoKS0+Z2V0TlNJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAppbmRleCA3ZWIyNDlkZjdmZjliNTVhOGVjZTVhZTdmZjQ3MmUwY2Q3YmFjMjQ3Li5m
ODY2ZGNmZGZiYjI3Y2VjNTY1OTY1Y2NiYzM1Y2Q1NzgyOTk4NmRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRyYWdB
Y3Rpb25zLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudC5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgi
CisjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiRHJhZ1Nlc3Npb24uaCIKICNpbmNs
dWRlICJEcmFnU3RhdGUuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKQEAgLTc4MCw3ICs3ODEsNyBA
QCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0
YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICB9CiAgICAgICAgIG1fY2xpZW50Lndp
bGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uLCBkcmFn
T3JpZ2luLCBjbGlwYm9hcmQpOwogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewotICAgICAgICAg
ICAgZHJhZ0ltYWdlID0gZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKHNyYy5kcmFnSW1hZ2VG
b3JTZWxlY3Rpb24oKSwgRHJhZ0ltYWdlQWxwaGEpOworICAgICAgICAgICAgZHJhZ0ltYWdlID0g
ZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbihz
cmMpLCBEcmFnSW1hZ2VBbHBoYSk7CiAgICAgICAgICAgICBkcmFnTG9jID0gZHJhZ0xvY0ZvclNl
bGVjdGlvbkRyYWcoc3JjKTsKICAgICAgICAgICAgIG1fZHJhZ09mZnNldCA9IEludFBvaW50KGRy
YWdPcmlnaW4ueCgpIC0gZHJhZ0xvYy54KCksIGRyYWdPcmlnaW4ueSgpIC0gZHJhZ0xvYy55KCkp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDYyNDFlZTNjOTUyYjQ2MTU1YzI5
MjA2YjA4ZjkwMWUwMGU1MmY1ODAuLjVjMDM2MTFlOGI3NTFmOTE2ZGUyZWQ0YjcyNmI2MzYxYjcy
ZmFhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC05NjYsMTA4ICs5NjYsNCBAQCBib29sIEZy
YW1lOjppc1VSTEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLSNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oV0lOKQotc3RydWN0IFNjb3Bl
ZEZyYW1lUGFpbnRpbmdTdGF0ZSB7Ci0gICAgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKEZyYW1l
KiBmcmFtZSwgTm9kZSogbm9kZSkKLSAgICAgICAgOiBmcmFtZShmcmFtZSkKLSAgICAgICAgLCBu
b2RlKG5vZGUpCi0gICAgICAgICwgcGFpbnRCZWhhdmlvcihmcmFtZS0+dmlldygpLT5wYWludEJl
aGF2aW9yKCkpCi0gICAgICAgICwgYmFja2dyb3VuZENvbG9yKGZyYW1lLT52aWV3KCktPmJhc2VC
YWNrZ3JvdW5kQ29sb3IoKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5y
ZW5kZXJlcigpKTsKLSAgICAgICAgaWYgKG5vZGUpCi0gICAgICAgICAgICBub2RlLT5yZW5kZXJl
cigpLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7Ci0gICAgfQotCi0gICAgflNjb3BlZEZyYW1lUGFp
bnRpbmdTdGF0ZSgpCi0gICAgewotICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5yZW5kZXJlcigp
KQotICAgICAgICAgICAgbm9kZS0+cmVuZGVyZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsK
LSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsK
LSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5k
Q29sb3IpOwotICAgICAgICBmcmFtZS0+dmlldygpLT5zZXROb2RlVG9EcmF3KDApOwotICAgIH0K
LQotICAgIEZyYW1lKiBmcmFtZTsKLSAgICBOb2RlKiBub2RlOwotICAgIFBhaW50QmVoYXZpb3Ig
cGFpbnRCZWhhdmlvcjsKLSAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci19OwotCi1EcmFnSW1h
Z2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewotICAgIGlmICghbm9kZS0+cmVu
ZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBjb25zdCBTY29wZWRGcmFt
ZVBhaW50aW5nU3RhdGUgc3RhdGUodGhpcywgbm9kZSk7Ci0KLSAgICBtX3ZpZXctPnNldFBhaW50
QmVoYXZpb3Ioc3RhdGUucGFpbnRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9z
aXRpbmdMYXllcnMpOwotCi0gICAgLy8gV2hlbiBnZW5lcmF0aW5nIHRoZSBkcmFnIGltYWdlIGZv
ciBhbiBlbGVtZW50LCBpZ25vcmUgdGhlIGRvY3VtZW50IGJhY2tncm91bmQuCi0gICAgbV92aWV3
LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7Ci0gICAgbV9kb2Mt
PnVwZGF0ZUxheW91dCgpOwotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdyhub2RlKTsgLy8gRW5h
YmxlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlLgotCi0gICAgLy8gRG9jdW1lbnQ6OnVw
ZGF0ZUxheW91dCBtYXkgaGF2ZSBibG93biBhd2F5IHRoZSBvcmlnaW5hbCByZW5kZXJlci4KLSAg
ICBhdXRvIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0Owot
ICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+
cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKLQotICAgIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yID0gMTsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9
IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBwYWludGluZ1JlY3Quc2V0V2lkdGgo
cGFpbnRpbmdSZWN0LndpZHRoKCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcGFpbnRpbmdS
ZWN0LnNldEhlaWdodChwYWludGluZ1JlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7
Ci0KLSAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBh
aW50aW5nUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KSk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3Qu
eSgpKTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+Y2xpcChGbG9hdFJlY3QoMCwgMCwgcGFpbnRp
bmdSZWN0Lm1heFgoKSwgcGFpbnRpbmdSZWN0Lm1heFkoKSkpOwotCi0gICAgbV92aWV3LT5wYWlu
dENvbnRlbnRzKGJ1ZmZlci0+Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOwotCi0gICAgUmVmUHRy
PEltYWdlPiBpbWFnZSA9IGJ1ZmZlci0+Y29weUltYWdlKCk7Ci0KLSAgICBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbihyZW5kZXJlci0+c2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oKSk7Ci0jaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElP
TikKLSAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHJl
bmRlcmVyLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4g
Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBvcmllbnRhdGlvbkRlc2NyaXB0
aW9uKTsKLX0KLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQot
ewotICAgIGlmICghc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBzdGF0ZSh0aGlzLCAwKTsKLSAgICBt
X3ZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkpOwotICAg
IG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKLQotICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gZW5j
bG9zaW5nSW50UmVjdChzZWxlY3Rpb24oKS5ib3VuZHMoKSk7Ci0KLSAgICBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvciA9IDE7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgZGV2aWNlU2NhbGVGYWN0
b3IgPSBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgcGFpbnRpbmdSZWN0LnNldFdp
ZHRoKHBhaW50aW5nUmVjdC53aWR0aCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50
aW5nUmVjdC5zZXRIZWlnaHQocGFpbnRpbmdSZWN0LmhlaWdodCgpICogZGV2aWNlU2NhbGVGYWN0
b3IpOwotCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0
ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmlj
ZVJHQikpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBidWZmZXIt
PmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0Lnko
KSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5n
UmVjdC5tYXhYKCksIHBhaW50aW5nUmVjdC5tYXhZKCkpKTsKLQotICAgIG1fdmlldy0+cGFpbnRD
b250ZW50cyhidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0KTsKLQotICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZSgpOwotICAgIHJldHVybiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0KCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigp
KTsKLX0KLQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApp
bmRleCA4NDA3ZTllMmJjZjNlZWZlZGRiZjA1MzFiZTZjZTkyNzk0NTcyNzdjLi41ZjE4NjZmZTIw
MmZjZmVhNjQ0MmMwYmJlZjgyMGY1NmVkMjNlNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0yOSw3
ICsyOSw2IEBACiAjZGVmaW5lIEZyYW1lX2gKIAogI2luY2x1ZGUgIkFkanVzdFZpZXdTaXplT3JO
b3QuaCIKLSNpbmNsdWRlICJEcmFnSW1hZ2UuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgog
I2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTU4LDExICs1
NywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRWRpdG9yOwogICAgIGNsYXNz
IEVsZW1lbnQ7CiAgICAgY2xhc3MgRXZlbnRIYW5kbGVyOworICAgIGNsYXNzIEZsb2F0U2l6ZTsK
ICAgICBjbGFzcyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXI7CiAgICAgY2xhc3MgRnJhbWVTZWxl
Y3Rpb247CiAgICAgY2xhc3MgRnJhbWVWaWV3OwogICAgIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxl
bWVudDsKICAgICBjbGFzcyBIVE1MVGFibGVDZWxsRWxlbWVudDsKKyAgICBjbGFzcyBJbWFnZUJ1
ZmZlcjsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIE1haW5GcmFtZTsKICAgICBjbGFz
cyBOb2RlOwpAQCAtMTc3LDkgKzE3OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICBTdHJpbmcgZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBj
b25zdDsKIAotICAgICAgICBEcmFnSW1hZ2VSZWYgbm9kZUltYWdlKE5vZGUqKTsKLSAgICAgICAg
RHJhZ0ltYWdlUmVmIGRyYWdJbWFnZUZvclNlbGVjdGlvbigpOwotCiAgICAgICAgIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2lu
dCk7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHdp
bmRvd1BvaW50KTsKICAgICAgICAgUGFzc1JlZlB0cjxSYW5nZT4gcmFuZ2VGb3JQb2ludChjb25z
dCBJbnRQb2ludCYgZnJhbWVQb2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lU25hcHNob3R0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5NDNkNjQ2ZjExMDFlOWJjMDAxYjMxYmY3NGIxODdhYzMz
MjkyMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNo
b3R0aW5nLmNwcApAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMg
VW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
RnJhbWVTbmFwc2hvdHRpbmcuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTY29w
ZWRGcmFtZVBhaW50aW5nU3RhdGUgeworICAgIFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZShGcmFt
ZSYgZnJhbWUsIE5vZGUqIG5vZGUpCisgICAgOiBmcmFtZShmcmFtZSkKKyAgICAsIG5vZGUobm9k
ZSkKKyAgICAsIHBhaW50QmVoYXZpb3IoZnJhbWUudmlldygpLT5wYWludEJlaGF2aW9yKCkpCisg
ICAgLCBiYWNrZ3JvdW5kQ29sb3IoZnJhbWUudmlldygpLT5iYXNlQmFja2dyb3VuZENvbG9yKCkp
CisgICAgeworICAgICAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+cmVuZGVyZXIoKSk7CisgICAg
fQorCisgICAgflNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSgpCisgICAgeworICAgICAgICBmcmFt
ZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CisgICAgICAgIGZyYW1l
LnZpZXcoKS0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpOworICAgICAg
ICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0RyYXcobnVsbHB0cik7CisgICAgfQorCisgICAgRnJh
bWUmIGZyYW1lOworICAgIE5vZGUqIG5vZGU7CisgICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2
aW9yOworICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKK307CisKK093blB0cjxJbWFnZUJ1ZmZl
cj4gc25hcHNob3RGcmFtZVJlY3QoRnJhbWUmIGZyYW1lLCBjb25zdCBJbnRSZWN0JiBpbWFnZVJl
Y3QsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQoreworICAgIEZyYW1lVmlldzo6U2VsZWN0aW9u
SW5TbmFwc2hvdCBzaG91bGRJbmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpJbmNsdWRlU2Vs
ZWN0aW9uOworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlv
bkhpZ2hsaWdodGluZykKKyAgICAgICAgc2hvdWxkSW5jbHVkZVNlbGVjdGlvbiA9IEZyYW1lVmll
dzo6RXhjbHVkZVNlbGVjdGlvbjsKKworICAgIEZyYW1lVmlldzo6Q29vcmRpbmF0ZVNwYWNlRm9y
U25hcHNob3QgY29vcmRpbmF0ZVNwYWNlID0gRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVz
OworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMpCisg
ICAgICAgIGNvb3JkaW5hdGVTcGFjZSA9IEZyYW1lVmlldzo6Vmlld0Nvb3JkaW5hdGVzOworCisg
ICAgUGFpbnRCZWhhdmlvciB0ZXh0UGFpbnRCZWhhdmlvciA9IDA7CisgICAgaWYgKG9wdGlvbnMg
JiBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKKyAgICAgICAgdGV4dFBhaW50QmVoYXZp
b3IgPSBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQ7CisKKyAgICBjb25zdCBTY29wZWRGcmFt
ZVBhaW50aW5nU3RhdGUgc3RhdGUoZnJhbWUsIG51bGxwdHIpOworCisgICAgLy8gT3RoZXIgcGFp
bnQgYmVoYXZpb3JzIGFyZSBzZXQgYnkgcGFpbnRDb250ZW50c0ZvclNuYXBzaG90LgorICAgIFBh
aW50QmVoYXZpb3IgZXhpc3RpbmdCZWhhdmlvciA9IGZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlv
cigpOworICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihleGlzdGluZ0JlaGF2aW9y
IHwgdGV4dFBhaW50QmVoYXZpb3IpOworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91
dCgpOworCisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBmcmFtZS5wYWdlKCkgPyAxIDog
ZnJhbWUucGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIEludFJlY3QgdXNlZFJlY3Qo
aW1hZ2VSZWN0KTsKKyAgICB1c2VkUmVjdC5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAg
ICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodXNlZFJl
Y3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
aWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJ1ZmZlci0+Y29udGV4
dCgpLT50cmFuc2xhdGUoLXVzZWRSZWN0LngoKSwgLXVzZWRSZWN0LnkoKSk7CisgICAgYnVmZmVy
LT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHVzZWRSZWN0Lm1heFgoKSwgdXNlZFJl
Y3QubWF4WSgpKSk7CisKKyAgICBmcmFtZS52aWV3KCktPnBhaW50Q29udGVudHNGb3JTbmFwc2hv
dChidWZmZXItPmNvbnRleHQoKSwgdXNlZFJlY3QsIHNob3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNv
b3JkaW5hdGVTcGFjZSk7CisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlKCk7Cit9CisKKyNpZiAh
UExBVEZPUk0oV0lOKQorT3duUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihGcmFt
ZSYgZnJhbWUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQoreworICAgIGlmICghZnJhbWUuc2Vs
ZWN0aW9uKCkuaXNSYW5nZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZv
cmNlIHNlbGVjdGlvbiBoaWdobGlnaHRpbmcgdG8gYmUgaW5jbHVkZWQuCisgICAgb3B0aW9ucyAm
PSB+U25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhpZ2hsaWdodGluZzsKKyAgICBJbnRS
ZWN0IHNlbGVjdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGZyYW1lLnNlbGVjdGlvbigpLmJv
dW5kcygpKTsKKyAgICByZXR1cm4gc25hcHNob3RGcmFtZVJlY3QoZnJhbWUsIHNlbGVjdGlvblJl
Y3QsIG9wdGlvbnMpOworfQorCitPd25QdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFt
ZSYgZnJhbWUsIE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0
ZSBzdGF0ZShmcmFtZSwgbm9kZSk7CisKKyAgICBmcmFtZS52aWV3KCktPnNldEJhc2VCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRh
dGVMYXlvdXQoKTsKKyAgICBmcmFtZS52aWV3KCktPnNldE5vZGVUb0RyYXcobm9kZSk7CisKKyAg
ICAvLyBEb2N1bWVudDo6dXBkYXRlTGF5b3V0IG1heSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdp
bmFsIHJlbmRlcmVyLgorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJl
cigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
TGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhl
bFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkp
OworICAgIHJldHVybiBzbmFwc2hvdEZyYW1lUmVjdChmcmFtZSwgcGFpbnRpbmdSZWN0KTsKK30K
KyNlbmRpZiAvLyAhUExBVEZPUk0oV0lOKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlkOTJhMDQxYjYz
NzJlNTM0NmJlMTZmNTE4YjEzMDdiYTdhOWZiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaApAQCAtMCwwICsxLDUyIEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGcmFtZVNu
YXBzaG90dGluZ19oCisjZGVmaW5lIEZyYW1lU25hcHNob3R0aW5nX2gKKworI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRnJhbWU7CitjbGFz
cyBJbnRSZWN0OworY2xhc3MgSW1hZ2VCdWZmZXI7CitjbGFzcyBOb2RlOworCitlbnVtIHsKKyAg
ICBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nID0gMSA8PCAxLAor
ICAgIFNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzID0gMSA8PCAyLAorICAgIFNuYXBz
aG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0ID0gMSA8PCAzLAorfTsKK3R5cGVkZWYgdWludDMyX3Qg
U25hcHNob3RPcHRpb25zOworCitPd25QdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0
KEZyYW1lJiwgY29uc3QgSW50UmVjdCYsIFNuYXBzaG90T3B0aW9ucyA9IDApOworT3duUHRyPElt
YWdlQnVmZmVyPiBzbmFwc2hvdE5vZGUoRnJhbWUmLCBOb2RlKik7CitPd25QdHI8SW1hZ2VCdWZm
ZXI+IHNuYXBzaG90U2VsZWN0aW9uKEZyYW1lJiwgU25hcHNob3RPcHRpb25zID0gMCk7CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEZyYW1lU25hcHNob3R0aW5nX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGRhZmIxZjkxYmNiZDZmMDYyN2E2MWQxZTk0ZGU5YjcxNGE4YjU0MzQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RnJhbWVNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChh
cEBueXBvcC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiRnJhbWUuaCIKLQotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCi0jaW1wb3J0ICJGcmFtZVNlbGVjdGlvbi5oIgotI2ltcG9ydCAiRnJhbWVT
bmFwc2hvdHRpbmdNYWMuaCIKLSNpbXBvcnQgIkZyYW1lVmlldy5oIgotI2ltcG9ydCAiUmVuZGVy
T2JqZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpu
b2RlSW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7IC8vIGZv
cmNlcyBzdHlsZSByZWNhbGMKLQotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5y
ZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
TGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgTlNSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVs
U25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7
Ci0KLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1
Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3Qo
dGhpcywgcGFpbnRpbmdSZWN0KTsKLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcoMCk7Ci0KLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1EcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNl
bGVjdGlvbigpCi17Ci0gICAgaWYgKCFzZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIHNlbGVjdGlvbkltYWdlKHRoaXMpOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFt
ZVNuYXBzaG90dGluZ01hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hv
dHRpbmdNYWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZhYjY3ZTc2NTgxNGFl
NmNiYzkwMWJhZDQ0YWZkMTUzZjg2MmEyMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGlu
Z01hYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
RnJhbWVTbmFwc2hvdHRpbmdNYWNfaAotI2RlZmluZSBGcmFtZVNuYXBzaG90dGluZ01hY19oCi0K
LU9CSkNfQ0xBU1MgTlNJbWFnZTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGcmFt
ZTsKLWNsYXNzIFJhbmdlOwotY2xhc3MgTm9kZTsKLQotTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2Uo
RnJhbWUqLCBib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpOwotTlNJbWFnZSogcmFuZ2VJbWFn
ZShGcmFtZSosIFJhbmdlKiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKTsKLU5TSW1hZ2Uq
IHNuYXBzaG90RHJhZ0ltYWdlKEZyYW1lKiwgTm9kZSosIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1Jl
Y3QqIGVsZW1lbnRSZWN0KTsKLU5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoRnJhbWUqLCBOU1JlY3Qp
OwotCi19Ci0KLSNlbmRpZiAvLyBGcmFtZVNuYXBzaG90dGluZ01hY19oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlOTJjMmYyM2NiMTdiZDAzZDRlOGE1ZWUxOTUxNGFjNDM5MWQxOWViLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEs
MTY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01h
Yy5oIgotCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKLSNpbXBvcnQgIkRvY3VtZW50Lmgi
Ci0jaW1wb3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiRnJhbWVTZWxlY3Rpb24uaCIKLSNpbXBvcnQg
IkZyYW1lVmlldy5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW1wb3J0ICJSYW5n
ZS5oIgotI2ltcG9ydCAiUmVuZGVyVmlldy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLU5T
SW1hZ2UqIGltYWdlRnJvbVJlY3QoRnJhbWUqIGZyYW1lLCBOU1JlY3QgcmVjdCkKLXsKLSAgICBQ
YWludEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gZnJhbWUtPnZpZXcoKS0+cGFpbnRCZWhhdmlvcigp
OwotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IgfCBQYWlu
dEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICAKLSAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgCi0gICAgTlNJbWFnZSogcmVzdWx0SW1hZ2UgPSBbW1tO
U0ltYWdlIGFsbG9jXSBpbml0V2l0aFNpemU6cmVjdC5zaXplXSBhdXRvcmVsZWFzZV07Ci0gICAg
Ci0gICAgaWYgKHJlY3Quc2l6ZS53aWR0aCAhPSAwICYmIHJlY3Quc2l6ZS5oZWlnaHQgIT0gMCkg
ewotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgICAgICBbcmVzdWx0SW1h
Z2Ugc2V0RmxpcHBlZDpZRVNdOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgICAg
ICBbcmVzdWx0SW1hZ2UgbG9ja0ZvY3VzXTsKLQotICAgICAgICBHcmFwaGljc0NvbnRleHQgZ3Jh
cGhpY3NDb250ZXh0KChDR0NvbnRleHRSZWYpW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29u
dGV4dF0gZ3JhcGhpY3NQb3J0XSk7ICAgICAgICAKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNh
dmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtcmVjdC5vcmlnaW4ueCwg
LXJlY3Qub3JpZ2luLnkpOwotICAgICAgICBmcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKCZn
cmFwaGljc0NvbnRleHQsIEludFJlY3QocmVjdCkpOwotICAgICAgICBncmFwaGljc0NvbnRleHQu
cmVzdG9yZSgpOwotCi0gICAgICAgIFtyZXN1bHRJbWFnZSB1bmxvY2tGb2N1c107Ci0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAgIFtyZXN1bHRJbWFnZSBzZXRGbGlw
cGVkOk5PXTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICB9Ci0gICAgCi0gICAg
ZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7Ci0gICAgcmV0dXJu
IHJlc3VsdEltYWdlOwotICAgIAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAg
Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7Ci0gICAg
cmV0dXJuIG5pbDsKLX0KLQotTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2UoRnJhbWUqIGZyYW1lLCBi
b29sIGZvcmNlQmxhY2tUZXh0KQotewotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZp
b3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQgPyBQYWludEJl
aGF2aW9yRm9yY2VCbGFja1RleHQgOiAwKSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0
ZUxheW91dCgpOwotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QoZnJhbWUsIGZy
YW1lLT5zZWxlY3Rpb24oKS5ib3VuZHMoKSk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRC
ZWhhdmlvcihQYWludEJlaGF2aW9yTm9ybWFsKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1O
U0ltYWdlICpyYW5nZUltYWdlKEZyYW1lKiBmcmFtZSwgUmFuZ2UqIHJhbmdlLCBib29sIGZvcmNl
QmxhY2tUZXh0KQotewotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRC
ZWhhdmlvclNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1RleHQgPyBQYWludEJlaGF2aW9yRm9y
Y2VCbGFja1RleHQgOiAwKSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgp
OwotICAgIFJlbmRlclZpZXcqIHZpZXcgPSBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7Ci0gICAg
aWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgUG9zaXRpb24gc3RhcnQgPSBy
YW5nZS0+c3RhcnRQb3NpdGlvbigpOwotICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHN0YXJ0LmRv
d25zdHJlYW0oKTsKLSAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlk
YXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgIHN0YXJ0ID0gY2FuZGlk
YXRlOwotCi0gICAgUG9zaXRpb24gZW5kID0gcmFuZ2UtPmVuZFBvc2l0aW9uKCk7Ci0gICAgY2Fu
ZGlkYXRlID0gZW5kLnVwc3RyZWFtKCk7Ci0gICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9k
ZSgpICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQotICAgICAgICBl
bmQgPSBjYW5kaWRhdGU7Ci0KLSAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgp
IHx8IHN0YXJ0ID09IGVuZCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFJlbmRlck9iamVj
dCogc2F2ZWRTdGFydFJlbmRlcmVyOwotICAgIGludCBzYXZlZFN0YXJ0T2Zmc2V0OwotICAgIFJl
bmRlck9iamVjdCogc2F2ZWRFbmRSZW5kZXJlcjsKLSAgICBpbnQgc2F2ZWRFbmRPZmZzZXQ7Ci0g
ICAgdmlldy0+Z2V0U2VsZWN0aW9uKHNhdmVkU3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNl
dCwgc2F2ZWRFbmRSZW5kZXJlciwgc2F2ZWRFbmRPZmZzZXQpOwotCi0gICAgUmVuZGVyT2JqZWN0
KiBzdGFydFJlbmRlcmVyID0gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAg
ICBpZiAoIXN0YXJ0UmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBSZW5kZXJP
YmplY3QqIGVuZFJlbmRlcmVyID0gZW5kLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0g
ICAgaWYgKCFlbmRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHZpZXctPnNl
dFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
LCBlbmRSZW5kZXJlciwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIFJlbmRlclZpZXc6
OlJlcGFpbnROb3RoaW5nKTsKLSAgICBOU0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KGZy
YW1lLCB2aWV3LT5zZWxlY3Rpb25Cb3VuZHMoKSk7Ci0gICAgdmlldy0+c2V0U2VsZWN0aW9uKHNh
dmVkU3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNldCwgc2F2ZWRFbmRSZW5kZXJlciwgc2F2
ZWRFbmRPZmZzZXQsIFJlbmRlclZpZXc6OlJlcGFpbnROb3RoaW5nKTsKLQotICAgIGZyYW1lLT52
aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvck5vcm1hbCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotCi1OU0ltYWdlKiBzbmFwc2hvdERyYWdJbWFnZShGcmFtZSogZnJhbWUs
IE5vZGUqIG5vZGUsIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnRSZWN0KQotewot
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICgh
cmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgcmVuZGVyZXItPnVwZGF0
ZURyYWdTdGF0ZSh0cnVlKTsgICAgLy8gbWFyayBkcmFnZ2VkIG5vZGVzIChzbyB0aGV5IHBpY2sg
dXAgdGhlIHJpZ2h0IENTUykKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7
ICAvLyBmb3JjZXMgc3R5bGUgcmVjYWxjIC0gbmVlZGVkIHNpbmNlIGNoYW5naW5nIHRoZSBkcmFn
IHN0YXRlIG1pZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
aW1wbHkgbmV3IHN0eWxlcywgcGx1cyBKUyBjb3VsZCBoYXZlIGNoYW5nZWQgb3RoZXIgdGhpbmdz
Ci0KLQotICAgIC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0
aGUgb3JpZ2luYWwgUmVuZGVyRWxlbWVudC4KLSAgICByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVy
KCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIExheW91
dFJlY3QgdG9wTGV2ZWxSZWN0OwotICAgIE5TUmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBw
ZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwotCi0g
ICAgaWYgKE5TSXNFbXB0eVJlY3QocGFpbnRpbmdSZWN0KSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVj
aWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJv
bVJlY3QoZnJhbWUsIHBhaW50aW5nUmVjdCk7Ci0gICAgcmVuZGVyZXItPnVwZGF0ZURyYWdTdGF0
ZShmYWxzZSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwotICAgIGZy
YW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcoMCk7Ci0KLSAgICBpZiAoZWxlbWVudFJlY3QpCi0g
ICAgICAgICplbGVtZW50UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9wTGV2ZWxSZWN0KTsK
LSAgICBpZiAoaW1hZ2VSZWN0KQotICAgICAgICAqaW1hZ2VSZWN0ID0gcGFpbnRpbmdSZWN0Owot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvd2luL0ZyYW1lV2luLmNwcAppbmRleCA1YWFmM2E2NzhjOWU1NDNhZjY4M2IzN2FkNWIw
NmNjZTA2NDQzYjlmLi45Njc0ZjE3NjhmNWRkODQyNWI2MGM3YWYxNmYwZjFmN2Q2Zjc2MzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCkBAIC01NywzMCArNTcsNCBAQCBHRElP
YmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3Jj
ZUJsYWNrVGV4dCkKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLURyYWdJbWFnZVJlZiBGcmFtZTo6
ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoc2VsZWN0aW9uKCkuaXNSYW5nZSgp
KQotICAgICAgICByZXR1cm4gaW1hZ2VGcm9tU2VsZWN0aW9uKHRoaXMsIGZhbHNlKS5sZWFrKCk7
Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9k
ZSogbm9kZSkKLXsKLSAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLQotICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAg
SW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWlu
dGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwotCi0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3
KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUKLSAgICBHRElP
YmplY3Q8SEJJVE1BUD4gcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdCh0aGlzLCBwYWludGluZ1JlY3Qp
OwotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKLQotICAgIHJldHVybiByZXN1bHQubGVh
aygpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVX
aW4uaAppbmRleCAzYTI3MjNlNjNkNmQ3ZTdlYzA0NGNiMTJmMmVhN2JkMDZjZmU2NTlmLi4yNjk3
MjVjMWY5YjliODBkNTc4MTQ4NGY5MzFhYjI1ZGQzYWUzMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2lu
L0ZyYW1lV2luLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBJbnRSZWN0
OwogCiBHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tUmVjdChjb25zdCBGcmFtZSosIEludFJl
Y3QmKTsKLUdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUqLCBib29s
IGZvcmNlV2hpdGVUZXh0KTsKK0dESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxlY3Rpb24o
RnJhbWUqLCBib29sIGZvcmNlQmxhY2tUZXh0KTsKIHZvaWQgY29tcHV0ZVBhZ2VSZWN0c0ZvckZy
YW1lKEZyYW1lKiwgY29uc3QgSW50UmVjdCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnaHQs
IGZsb2F0IGZvb3RlckhlaWdodCwgZmxvYXQgdXNlclNjYWxlRmFjdG9yLCBWZWN0b3I8SW50UmVj
dD4mIG91dFBhZ2VzLCBpbnQmIG91dFBhZ2VIZWlnaHQpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAppbmRleCBiODFhZmQ1NzllODI5
M2VlZmEyYmE5M2I5YmI1NWMxZjUwNzZjZjQ3Li5lMTExNjhlMzQ4OTRjNWNlNGE1NGIxMGVhZDU0
MmIxOWJlYTRlZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKQEAgLTIw
LDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpA
QCAtMjgsMjkgKzI4LDM3IEBACiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogCisjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVNuYXBzaG90dGluZy5oIgorI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIK
KyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4
U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IElu
dFNpemUmIHNpemUpCiB7CiAgICAgZmxvYXQgaGVpZ2h0UmVzaXplUmF0aW8gPSAwLjBmOwogICAg
IGZsb2F0IHdpZHRoUmVzaXplUmF0aW8gPSAwLjBmOwogICAgIGZsb2F0IHJlc2l6ZVJhdGlvID0g
LTEuMGY7CiAgICAgSW50U2l6ZSBvcmlnaW5hbFNpemUgPSBkcmFnSW1hZ2VTaXplKGltYWdlKTsK
LSAgICAKKwogICAgIGlmIChzcmNTaXplLndpZHRoKCkgPiBzaXplLndpZHRoKCkpIHsKICAgICAg
ICAgd2lkdGhSZXNpemVSYXRpbyA9IHNpemUud2lkdGgoKSAvIChmbG9hdClzcmNTaXplLndpZHRo
KCk7CiAgICAgICAgIHJlc2l6ZVJhdGlvID0gd2lkdGhSZXNpemVSYXRpbzsKICAgICB9Ci0gICAg
CisKICAgICBpZiAoc3JjU2l6ZS5oZWlnaHQoKSA+IHNpemUuaGVpZ2h0KCkpIHsKICAgICAgICAg
aGVpZ2h0UmVzaXplUmF0aW8gPSBzaXplLmhlaWdodCgpIC8gKGZsb2F0KXNyY1NpemUuaGVpZ2h0
KCk7CiAgICAgICAgIGlmICgocmVzaXplUmF0aW8gPCAwLjBmKSB8fCAocmVzaXplUmF0aW8gPiBo
ZWlnaHRSZXNpemVSYXRpbykpCiAgICAgICAgICAgICByZXNpemVSYXRpbyA9IGhlaWdodFJlc2l6
ZVJhdGlvOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzcmNTaXplID09IG9yaWdpbmFsU2l6ZSkK
ICAgICAgICAgcmV0dXJuIHJlc2l6ZVJhdGlvID4gMC4wZiA/IHNjYWxlRHJhZ0ltYWdlKGltYWdl
LCBGbG9hdFNpemUocmVzaXplUmF0aW8sIHJlc2l6ZVJhdGlvKSkgOiBpbWFnZTsKLSAgICAKKwog
ICAgIC8vIFRoZSBpbWFnZSB3YXMgc2NhbGVkIGluIHRoZSB3ZWJwYWdlIHNvIGF0IG1pbmltdW0g
d2UgbXVzdCBhY2NvdW50IGZvciB0aGF0IHNjYWxpbmcKICAgICBmbG9hdCBzY2FsZXggPSBzcmNT
aXplLndpZHRoKCkgLyAoZmxvYXQpb3JpZ2luYWxTaXplLndpZHRoKCk7CiAgICAgZmxvYXQgc2Nh
bGV5ID0gc3JjU2l6ZS5oZWlnaHQoKSAvIChmbG9hdClvcmlnaW5hbFNpemUuaGVpZ2h0KCk7CkBA
IC01OCwxNCArNjYsMTUxIEBAIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJh
Z0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjCiAgICAgICAgIHNjYWxl
eCAqPSByZXNpemVSYXRpbzsKICAgICAgICAgc2NhbGV5ICo9IHJlc2l6ZVJhdGlvOwogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiBzY2FsZURyYWdJbWFnZShpbWFnZSwgRmxvYXRTaXplKHNjYWxl
eCwgc2NhbGV5KSk7CiB9CiAKK3N0cnVjdCBTY29wZWROb2RlRHJhZ1N0YXRlIHsKKyAgICBTY29w
ZWROb2RlRHJhZ1N0YXRlKEZyYW1lJiBmcmFtZSwgTm9kZSogbm9kZSkKKyAgICA6IGZyYW1lKGZy
YW1lKQorICAgICwgbm9kZShub2RlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFub2RlIHx8IG5v
ZGUtPnJlbmRlcmVyKCkpOworICAgICAgICBpZiAobm9kZSkgeworICAgICAgICAgICAgbm9kZS0+
cmVuZGVyZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOworICAgICAgICAgICAgZnJhbWUuZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB+U2NvcGVk
Tm9kZURyYWdTdGF0ZSgpCisgICAgeworICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5yZW5kZXJl
cigpKSB7CisgICAgICAgICAgICBub2RlLT5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUoZmFs
c2UpOworICAgICAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBGcmFtZSYgZnJhbWU7CisgICAgTm9kZSogbm9kZTsKK307CisK
K3N0YXRpYyBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KE93blB0cjxJ
bWFnZUJ1ZmZlcj4gc25hcHNob3QsIE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFzbmFwc2hvdCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24gb3JpZW50YXRpb247CisjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAgICBp
ZiAobm9kZSkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVy
ZXIoKTsKKyAgICAgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgICAgIG9yaWVudGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHJlbmRl
cmVyLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgb3JpZW50YXRp
b24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCkuaW1hZ2VPcmllbnRh
dGlvbigpKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyNlbmRpZgor
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBzbmFwc2hvdC0+Y29weUltYWdlKEltYWdlQnVmZmVy
OjpmYXN0Q29weUltYWdlTW9kZSgpKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKGltYWdlLmdldCgpLCBvcmllbnRhdGlvbik7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiBmcmFtZSwgTm9kZSogbm9kZSkKK3sKKyAgICBTY29wZWRO
b2RlRHJhZ1N0YXRlIGVuYWJsZURyYWcoZnJhbWUsIG5vZGUpOworICAgIE93blB0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpOworICAgIHJldHVybiBj
cmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25hcHNob3QucmVsZWFzZSgpLCBub2RlKTsKK30K
KworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbihGcmFtZSYgZnJhbWUs
IGJvb2wgZm9yY2VCbGFja1RleHQpCit7CisgICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBm
b3JjZUJsYWNrVGV4dCA/IFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0IDogMDsKKyAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24oZnJhbWUsIG9w
dGlvbnMpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25hcHNob3Qu
cmVsZWFzZSgpLCBudWxscHRyKTsKK30KKworc3RydWN0IFNjb3BlZEZyYW1lU2VsZWN0aW9uU3Rh
dGUgeworICAgIFNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUoRnJhbWUmIGZyYW1lKQorICAgIDog
ZnJhbWUoZnJhbWUpCisgICAgeworICAgICAgICBpZiAoUmVuZGVyVmlldyogcm9vdCA9IGZyYW1l
LmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICAgICAgcm9vdC0+Z2V0U2VsZWN0aW9uKHN0YXJ0
UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRSZW5kZXJlciwgZW5kT2Zmc2V0KTsKKyAgICB9CisK
KyAgICB+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSgpCisgICAgeworICAgICAgICBpZiAoUmVu
ZGVyVmlldyogcm9vdCA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICAgICAgcm9v
dC0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRSZW5kZXJlciwg
ZW5kT2Zmc2V0LCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisgICAgfQorCisgICAgRnJh
bWUmIGZyYW1lOworICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlcjsKKyAgICBSZW5kZXJP
YmplY3QqIGVuZFJlbmRlcmVyOworICAgIGludCBzdGFydE9mZnNldDsKKyAgICBpbnQgZW5kT2Zm
c2V0OworfTsKKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKEZyYW1lJiBm
cmFtZSwgUmFuZ2UqIHJhbmdlLCBib29sIGZvcmNlQmxhY2tUZXh0KQoreworICAgIGZyYW1lLmRv
Y3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIFJlbmRlclZpZXcqIHZpZXcgPSBmcmFtZS5j
b250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgLy8gVG8gc25hcHNob3QgdGhlIHJhbmdlLCB0ZW1wb3JhcmlseSBzZWxlY3QgaXQg
YW5kIHRha2Ugc2VsZWN0aW9uIHNuYXBzaG90LgorICAgIFBvc2l0aW9uIHN0YXJ0ID0gcmFuZ2Ut
PnN0YXJ0UG9zaXRpb24oKTsKKyAgICBQb3NpdGlvbiBjYW5kaWRhdGUgPSBzdGFydC5kb3duc3Ry
ZWFtKCk7CisgICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5k
ZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICBzdGFydCA9IGNhbmRpZGF0ZTsK
KworICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlLT5lbmRQb3NpdGlvbigpOworICAgIGNhbmRpZGF0
ZSA9IGVuZC51cHN0cmVhbSgpOworICAgIGlmIChjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKSAm
JiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgZW5kID0g
Y2FuZGlkYXRlOworCisgICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8IGVuZC5pc051bGwoKSB8fCBz
dGFydCA9PSBlbmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgY29uc3QgU2NvcGVk
RnJhbWVTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZShmcmFtZSk7CisKKyAgICBSZW5kZXJP
YmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigp
OworICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmQuZGVwcmVjYXRlZE5vZGUoKS0+
cmVuZGVyZXIoKTsKKyAgICBpZiAoIXN0YXJ0UmVuZGVyZXIgfHwgIWVuZFJlbmRlcmVyKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zID0gZm9y
Y2VCbGFja1RleHQgPyBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA6IDA7CisgICAgdmll
dy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCksIGVuZFJlbmRlcmVyLCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgUmVuZGVy
Vmlldzo6UmVwYWludE5vdGhpbmcpOworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3Qg
PSBzbmFwc2hvdFNlbGVjdGlvbihmcmFtZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIGNyZWF0ZURy
YWdJbWFnZUZyb21TbmFwc2hvdChzbmFwc2hvdC5yZWxlYXNlKCksIG51bGxwdHIpOworfQorCitE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2UoRnJhbWUmIGZyYW1lLCBOb2RlKiBu
b2RlLCBJbnRSZWN0JiBpbWFnZVJlY3QsIEludFJlY3QmIGVsZW1lbnRSZWN0KQoreworICAgIFNj
b3BlZE5vZGVEcmFnU3RhdGUgZW5hYmxlRHJhZyhmcmFtZSwgbm9kZSk7CisKKyAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIENhbGN1bGF0ZSBpbWFnZSBhbmQgZWxl
bWVudCBtZXRyaWNzIGZvciB0aGUgY2xpZW50LCB0aGVuIGNyZWF0ZSBkcmFnIGltYWdlLgorICAg
IExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3Qp
KTsKKworICAgIGlmIChwYWludGluZ1JlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGVsZW1lbnRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdCh0b3BMZXZlbFJl
Y3QpOworICAgIGltYWdlUmVjdCA9IHBhaW50aW5nUmVjdDsKKworICAgIE93blB0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpOworICAgIHJldHVybiBj
cmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25hcHNob3QucmVsZWFzZSgpLCBub2RlKTsKK30K
KwogI2lmICFQTEFURk9STShNQUMpICYmICghUExBVEZPUk0oV0lOKSB8fCBPUyhXSU5DRSkpCiBE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcmLCBG
b250UmVuZGVyaW5nTW9kZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IGQ4ZjUyYmNm
YWQ0NDI0M2Y4YWNjYjg2NzBhMDk0YWYxMTNjNGIyNGQuLmM3MjNhMmY3NmNjZTUwOTM1MmEyMjZi
ZWM0NjZmMjNkN2M5YWEyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC0y
NiwxMCArMjYsMTEgQEAKICNpZm5kZWYgRHJhZ0ltYWdlX2gKICNkZWZpbmUgRHJhZ0ltYWdlX2gK
IAorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdNb2RlLmgi
CisjaW5jbHVkZSAiRnJhbWVTbmFwc2hvdHRpbmcuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00MSwzOCArNDIs
NDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSEJJVE1BUF9fKiBIQklUTUFQOwogdHlwZWRlZiBzdHJ1Y3Qg
X2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwogI2VuZGlmCiAKLS8vV2UgbmVlZCB0byAj
ZGVmaW5lIFlPZmZzZXQgYXMgaXQgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGggV2ViS2l0CisvLyBX
ZSBuZWVkIHRvICNkZWZpbmUgWU9mZnNldCBhcyBpdCBuZWVkcyB0byBiZSBzaGFyZWQgd2l0aCBX
ZWJLaXQKICNkZWZpbmUgRHJhZ0xhYmVsQm9yZGVyWU9mZnNldCAyCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotICAgIGNsYXNzIEltYWdlOwotICAgIGNsYXNzIFVSTDsKK2NsYXNzIEZyYW1lOwor
Y2xhc3MgSW1hZ2U7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgTm9kZTsKK2NsYXNzIFJhbmdlOwor
Y2xhc3MgVVJMOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHR5cGVkZWYgUmV0YWluUHRyPE5T
SW1hZ2U+IERyYWdJbWFnZVJlZjsKK3R5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFn
ZVJlZjsKICNlbGlmIFBMQVRGT1JNKFdJTikKLSAgICB0eXBlZGVmIEhCSVRNQVAgRHJhZ0ltYWdl
UmVmOwordHlwZWRlZiBIQklUTUFQIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKEdUSykg
fHwgUExBVEZPUk0oTklYKQotICAgIHR5cGVkZWYgY2Fpcm9fc3VyZmFjZV90KiBEcmFnSW1hZ2VS
ZWY7Cit0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZP
Uk0oRUZMKSB8fCBQTEFURk9STShCTEFDS0JFUlJZKQotICAgIHR5cGVkZWYgdm9pZCogRHJhZ0lt
YWdlUmVmOwordHlwZWRlZiB2b2lkKiBEcmFnSW1hZ2VSZWY7CiAjZW5kaWYKLSAgICAKLSAgICBJ
bnRTaXplIGRyYWdJbWFnZVNpemUoRHJhZ0ltYWdlUmVmKTsKLSAgICAKLSAgICAvL1RoZXNlIGZ1
bmN0aW9ucyBzaG91bGQgYmUgbWVtb3J5IG5ldXRyYWwsIGVnLiBpZiB0aGV5IHJldHVybiBhIG5l
d2x5IGFsbG9jYXRlZCBpbWFnZSwgCi0gICAgLy90aGV5IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1
dCBpbWFnZS4gIEFzIGEgY29yb2xsYXJ5IHRoZXNlIG1ldGhvZHMgZG9uJ3QgZ3VhcmFudGVlCi0g
ICAgLy90aGUgaW5wdXQgaW1hZ2UgcmVmIHdpbGwgc3RpbGwgYmUgdmFsaWQgYWZ0ZXIgdGhleSBo
YXZlIGJlZW4gY2FsbGVkCi0gICAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShE
cmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEludFNpemUm
IHNpemUpOwotICAgIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYsIEZs
b2F0U2l6ZSBzY2FsZSk7Ci0gICAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFj
dGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2UsIGZsb2F0IGRlbHRhKTsKLSAgICAKLSAgICBEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKTsKLSAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hl
ZEltYWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZvckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJlbmRlcmluZ01v
ZGUpOwotICAgIHZvaWQgZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7CisKK0ludFNpemUg
ZHJhZ0ltYWdlU2l6ZShEcmFnSW1hZ2VSZWYpOworCisvLyBUaGVzZSBmdW5jdGlvbnMgc2hvdWxk
IGJlIG1lbW9yeSBuZXV0cmFsLCBlZy4gaWYgdGhleSByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQg
aW1hZ2UsCisvLyB0aGV5IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4gQXMgYSBjb3Jv
bGxhcnkgdGhlc2UgbWV0aG9kcyBkb24ndCBndWFyYW50ZWUKKy8vIHRoZSBpbnB1dCBpbWFnZSBy
ZWYgd2lsbCBzdGlsbCBiZSB2YWxpZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBjYWxsZWQuCitEcmFn
SW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiwgY29uc3QgSW50U2l6
ZSYgc3JjU2l6ZSwgY29uc3QgSW50U2l6ZSYgZHN0U2l6ZSk7CitEcmFnSW1hZ2VSZWYgc2NhbGVE
cmFnSW1hZ2UoRHJhZ0ltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpOworRHJhZ0ltYWdlUmVmIGRp
c3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYsIGZsb2F0IGRlbHRhKTsKKwor
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbik7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNh
Y2hlZEltYWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiwgTm9kZSopOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvclNlbGVjdGlvbihGcmFtZSYsIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7CitE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmLCBSYW5nZSosIGJvb2wg
Zm9yY2VCbGFja1RleHQgPSBmYWxzZSk7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9y
SW1hZ2UoRnJhbWUmLCBOb2RlKiwgSW50UmVjdCYgaW1hZ2VSZWN0LCBJbnRSZWN0JiBlbGVtZW50
UmVjdCk7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBGb250UmVuZGVyaW5nTW9kZSk7Cit2b2lkIGRlbGV0ZURyYWdJbWFnZShE
cmFnSW1hZ2VSZWYpOwogfQogCiAKLSNlbmRpZiAvLyFEcmFnSW1hZ2VfaAorI2VuZGlmIC8vICFE
cmFnSW1hZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUlPUy5tbQppbmRleCA1ZGZmNmYwZmU5YzFkOWYyZGU0YTFlMTE5M2E1ZWZiNDQ2MmQwNzkxLi5k
NTYyYTE2MTkyNjVmYTYxZTBiNGMxODk2YTA4ZmY1ZmViMTNiNWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQpAQCAtMzMsNyArMzMsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVTbmFwc2hvdHRpbmdNYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTbmFwc2hvdHRp
bmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hp
dFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvaHRtbGVkaXRpbmcuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDQ4NjI4MGU0N2I2YTU1ZDY5M2Y4
NGEzNTE0MmRhMzM4ZTJiZjc5YmYuLmFmYmY4Y2M2NGUwNTQzZWQyMzViNzI2MTNkZGJhM2E4MDhi
OTNmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtODUs
NiArODUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
cmFnQ29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckRlbGV0ZUFjdGlvbi5o
PgogI2ltcG9ydCA8V2ViQ29yZS9FbGVtZW50Lmg+CkBAIC05NSw3ICs5Niw2IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lU2VsZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU25h
cHNob3R0aW5nTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpA
QCAtMTgyMCw3ICsxODIwLDEyIEBAIHN0YXRpYyBib29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNr
T3JEcmFnKE5TRXZlbnQgKmV2ZW50KQogewogICAgIGlmICghW3NlbGYgX2hhc1NlbGVjdGlvbl0p
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gc2VsZWN0aW9u
SW1hZ2UoY29yZShbc2VsZiBfZnJhbWVdKSk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZShbc2VsZiBfZnJhbWVdKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIE5TSW1hZ2UgKmRyYWdJbWFnZSA9IFtbY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0
aW9uKCpjb3JlRnJhbWUpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIFtkcmFnSW1hZ2UgX3dl
Yl9kaXNzb2x2ZVRvRnJhY3Rpb246V2ViRHJhZ0ltYWdlQWxwaGFdOwogICAgIHJldHVybiBkcmFn
SW1hZ2U7CiB9CkBAIC01OTY1LDcgKzU5NzAsMTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVy
bGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUK
IHsKICAgICBpZiAoIVtzZWxmIF9oYXNTZWxlY3Rpb25dKQogICAgICAgICByZXR1cm4gbmlsOwot
ICAgIHJldHVybiBzZWxlY3Rpb25JbWFnZShjb3JlKFtzZWxmIF9mcmFtZV0pLCBmb3JjZUJsYWNr
VGV4dCk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKKyAg
ICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW1tjcmVh
dGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKmNvcmVGcmFtZSwgZm9yY2VCbGFja1RleHQpIHJldGFp
bl0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU1JlY3Qpc2VsZWN0aW9uSW1hZ2VSZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXggY2NiZDcxOTAxZTQ1NTc5MDMxYjkwMmJh
NTZhODk0ZTZhOGQ3OWNiMy4uNGI3ZjNhNTU4YTMxMDFjOWFkZDM3ZmM5YmY4Yzk3ZDM5YTJiYjVi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRv
dy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Ry
YWdJbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRm9udC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L1NpbXBsZUZvbnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0hUTUxOYW1lcy5oPgpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZUxp
c3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlclRyZWVBc1RleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZUZvbnREYXRh
Lmg+CiAKICNpbmNsdWRlIDxpbml0Z3VpZC5oPgogLy8gezNCMEMwRUZGLTQ3OEItNGIwYi04Mjkw
LUQyMzIxRTA4RTIzRX0KQEAgLTEyNzksNyArMTI4MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRE9NRWxlbWVudDo6cmVuZGVyZWRJbWFnZShIQklUTUFQKiBpbWFnZSkKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKmltYWdlID0gZnJhbWUtPm5v
ZGVJbWFnZShtX2VsZW1lbnQpOworICAgICppbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvck5vZGUo
KmZyYW1lLCBtX2VsZW1lbnQpOwogICAgIGlmICghKmltYWdlKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217155</attachid>
            <date>2013-11-17 15:20:07 -0800</date>
            <delta_ts>2013-11-17 15:30:19 -0800</delta_ts>
            <desc>v2.1 (missing win exports)</desc>
            <filename>bug-124325-20131117152006.patch</filename>
            <type>text/plain</type>
            <size>67708</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0NGNiZWZkMmZkZjI5
NGE0N2FkNmZiMzk2YTViZDIyMzAwOTdkMS4uZTI5ZmUyMjgwNWFhYzMzZDQ5Y2NmNjhjNTg3Yjg1
YjJkNzE3ZDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTExLTE2ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc25hcHNob3QgY3JlYXRpb24g
bWV0aG9kcyBoYWQgZHVwbGljYXRlZCBjb2RlIGFuZCB3ZXJlIHNwbGl0CisgICAgICAgIGJldHdl
ZW4gRnJhbWUsIERyYWdJbWFnZSwgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9u
c3MuCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBXZWJDb3JlIHNuYXBzaG90IG1ldGhvZHMgaW50
byBGcmFtZVNuYXBzaG90dGluZworICAgICAgICBhbmQgcmVtb3ZlcyBwbGF0Zm9ybSBpbXBsZW1l
bnRhdGlvbnMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgRHJhZ0ltYWdlIG1ldGhvZHMgcmV1
c2Ugc25hcHNob3QgbWV0aG9kcyB3aGVyZSBwb3NzaWJsZS4gSW5zcGVjdG9yCisgICAgICAgIHdp
bGwgYmUgYWJsZSB0byB0YWtlIHNuYXBzaG90cyB3aXRob3V0IHVzaW5nIGRyYWcgaW1hZ2VzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJbWFn
ZV0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpd
KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQ
YWludGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0
ZTo6flNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hv
dEZyYW1lUmVjdCk6IE1vdmUgbW9zdCBidWZmZXIgbG9naWMgdG8gaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90U2VsZWN0aW9uKTogTW92ZWQgZnJvbSBGcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90Tm9kZSk6IE1vdmVkIGZyb20gRnJhbWUuCisgICAgICAgICogcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcDogcmVtb3ZlIGR1cGxpY2F0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5oOiBGaXggYW4gaW5j
b3JyZWN0IHBhcmFtZXRlciBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY29wZWROb2RlRHJhZ1N0YXRlOjpTY29wZWROb2RlRHJhZ1N0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZE5vZGVEcmFnU3RhdGU6On5TY29wZWROb2Rl
RHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dCk6IEJvaWxlcnBsYXRlIGJ1ZmZlciBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0
ZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRG
cmFtZVNlbGVjdGlvblN0YXRlOjp+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6IE1vdmVkIGZyb20gRnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6IE1vdmVkIGZyb20gRnJh
bWVTbmFwc2hvdHRpbmdNYWMuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKTogdXNlIG51bGxwdHIuCisKIDIwMTMtMTEtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ3J5cHRvIG5vIGxvbmdlciB1c2VzIHNlcXVlbmNl
cyBvZiBBcnJheUJ1ZmZlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCAxNDkzYzJiZjFkOGI1YjEwNTQ3
NTFjYTM5NDFjYzZhODllMGIzZDI2Li43ZDM0YWFjYTA0MWZiZWE2NjMzZGQ2MDdjZGQ1OWMxN2Zh
NmI5MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTMgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIENvbnNvbGlk
YXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUlPUy5tbTogdXNlIG5ldyBoZWFkZXIgZmlsZS4KKwogMjAxMy0xMS0wNyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhIFBMQVRGT1JNKElP
UykgZnJvbSBXZWJLaXQgUHJpdmF0ZSBIZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBhYTNmMTM0
NDEyZDI2YmNlNjhiYmVmMDliZTQyYjRlYTlkYjM0MjYzLi40OWM1ZTlmMzgzOTliYjFhZmYyYzFj
NTBjM2E3MmI0Zjg1ZDc2NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTMtMTEtMTMgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIENvbnNvbGlkYXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG5ldyBwbGF0
Zm9ybS1pbmRlcGVuZGVudCBtZXRob2RzIGluc3RlYWQgb2YgTWFjIG1ldGhvZHMuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2Vs
ZWN0aW9uRHJhZ2dpbmdJbWFnZV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZWxlY3Rpb25J
bWFnZUZvcmNpbmdCbGFja1RleHQ6XSk6CisKIDIwMTMtMTEtMTQgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWltcGxlbWVudCBnZXREYXlCb3VuZGFy
aWVzIHVzaW5nIE5TQ2FsZW5kYXIgb24gMTAuOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDY4N2QyZTU0
YmQ0YjZhNjBjYzhhMDFkNDA0ZTgyNmZhOTg0NTA3M2YuLjY5MWFjMGY2NGQ5NjJjMzI4MDE4MGU0
YzRmYmQ5Mjg5OWZkZDhiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
My0xMS0xNCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAg
ICAgQ29uc29saWRhdGUgdmFyaW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVDbGFz
c2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UpOiB1c2UgY3JlYXRl
RHJhZ0ltYWdlRm9yTm9kZS4KKwogMjAxMy0xMS0xNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIFdpbiBidWlsZCBmaXg7IHNldEN1cnJlbnRU
aW1lKCkgbm8gbG9uZ2VyIHRha2VzIGFuIGV4Y2VwdGlvbiBwYXJhbWV0ZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDQ3MGRmMjQxZWZlODk2M2NjNmY0Nzc1NjJkNGM1MDU2MzhiZjc1OGMuLjcx
Y2EzMjYwZTNkM2EwOTk1YmZjZGZmYzY0MTQxY2Q5Zjk1ZjNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNzI2LDYgKzE3MjYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCiAgICAgcGFnZS9GcmFtZS5jcHAKICAgICBwYWdlL0ZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlci5jcHAKKyAgICBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAogICAg
IHBhZ2UvRnJhbWVUcmVlLmNwcAogICAgIHBhZ2UvRnJhbWVWaWV3LmNwcAogICAgIHBhZ2UvR2Vz
dHVyZVRhcEhpZ2hsaWdodGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
ZmQ1MzI3ODEyNGM5ZDhhZGM1ZjMyNDM0YjA1NWRhM2VhZDBhZGNhYS4uZWVmYjkzYjY1NjU3OTUy
ZGFjODI2NWNmYTEyYzhiYWZiZDA2Mjc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC00MTE4LDYgKzQxMTgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDE0MjQyYjMyMTJmOWY0YWUxZDhiM2QzNjIyNTUyM2VlNzgxNjgyMWUuLjhjZGQxZmY2
ZTM0YmYzNmZiOWE2NDhlODY4YjI0NzBjZmJlNzBlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC00MjcsNyArNDI3LDYgQEAgX19aTjdXZWJDb3JlMTRjb29raWVzRW5hYmxlZEVSS05TXzIxTmV0
d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43V2ViQ29yZTE0ZGVjb2RlSG9z
dE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRlbmNvZGVIb3N0TmFtZUVQOE5TU3RyaW5n
CiBfX1pON1dlYkNvcmUxNGVuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCi1fX1pON1dlYkNvcmUxNHNlbGVjdGlvbklt
YWdlRVBOU181RnJhbWVFYgogX19aTjdXZWJDb3JlMTRzZXRNZXRhZGF0YVVSTEVSTjNXVEY2U3Ry
aW5nRVJLUzFfUzRfCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVmbGlwWUV2CiBfX1pO
N1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVzY2FsZUVkCkBAIC04ODcsNiArODg2LDcgQEAgX19a
TjdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2VDMkV2CiBfX1pON1dlYkNvcmUy
N0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2Rl
RUVFYlJLTlMxXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jazE0c2V0T3JpZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRh
dGlvbkRhdGFFRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFF
dgorX19aTjdXZWJDb3JlMjdjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb25FUk5TXzVGcmFtZUVi
CiBfX1pON1dlYkNvcmUyN3Byb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbEVSS05TXzNVUkxFUzJf
CiBfX1pON1dlYkNvcmUyN3N0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlc0VQRnZ2RQogX19aTjdX
ZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFTjNXVEY3
UGFzc1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQpAQCAtMjAzMiw3ICsyMDMyLDYgQEAg
X19aTjdXZWJDb3JlMzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CiBf
X1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZ0V2
CiBfX1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGlu
Z0V2CiBfX1pON1dlYkNvcmU0NmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9t
YXRpY2FsbHlFdgotX19aTjdXZWJDb3JlNUZyYW1lOW5vZGVJbWFnZUVQTlNfNE5vZGVFCiBfX1pO
N1dlYkNvcmU2Q3Vyc29yOGZyb21UeXBlRU5TMF80VHlwZUUKIF9fWk43V2ViQ29yZTZDdXJzb3JD
MUVQTlNfNUltYWdlRVJLTlNfOEludFBvaW50RQogX19aTjdXZWJDb3JlNkN1cnNvckMxRVJLUzBf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCA1MWU5MThlNzk0ODkyMmNmZDIyMDMxM2E1ZDFhNGJiOTFkYzA5YTBhLi4wMzFiNmNmZTk2YmY1
ODk4NWRlYzNlNTk2OTQ2M2U0YjRlZGI1OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTY5ODMsNiArNjk4Myw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZvY3VzQ29udHJvbGxlci5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGFnZVxHcm91cFNldHRpbmdzLmNwcCIgLz4KQEAgLTE4ODEyLDYgKzE4ODEzLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRm9jdXNEaXJlY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNob3R0aW5nLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhZ2VcR3JvdXBTZXR0aW5ncy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGEzOTVkYWI5
YjYzNjI2N2MxYThhNmJhYmNjNWExYzA2MmVjZjUyY2MuLjExYjJjNTRhNTMxZjExMjUzMDdiMjE4
MDAyOTg2NWVmMGYxOTljMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcxNyw2ICs3MTcsOSBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVNuYXBzaG90dGluZy5jcHAiPgorICAgICAg
PEZpbHRlcj5wYWdlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03NjE3LDYgKzc2MjAsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCI+CiAgICAgICA8
RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuaCI+CisgICAgICA8RmlsdGVyPnBhZ2U8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
Z2VcRnJhbWVUcmVlLmgiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMDRiZWQwN2VmYWM1ODkyOGU1YmEwMTY5NjY0ZTMxYmYwYThiMzlkZS4uMWZm
ZjIxNzI5OTNiYjU3OTVlMzdiOGNkYWVhYjYwYjNkNWNhZGEyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjAwNSw3ICsyMDA1
LDYgQEAKIAkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODMwOTdBM0Y1MzAw
QjkwNTBBIC8qIEZyYW1lVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1QkYwMjJFMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyOTA5NzQ4
MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwICovOyB9OwogCQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1QkYwMjQ1MDk3NDgxOTAwMEM0MzE5
NiAvKiBGcmFtZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAqLzsgfTsKIAkJ
NjVDOTdBRjMwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNv
bmZpZy5oICovOyB9OwogCQk2NUNCRkVGOTA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY3
MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovOyB9OwogCQk2NUNCRkVGQTA5NzRG
NjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIyMDYs
OCArMjIwNSw2IEBACiAJCTdDNTM0M0ZDMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M1MzQzRkExN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAgKi87IH07CiAJCTdDNTM0M0ZEMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNTM0M0ZCMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aCAqLzsgfTsKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlz
dC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
QzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9Owot
CQk3Q0UzMERBOTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi87IH07Ci0JCTdDRTMwREFB
MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0Ux
IC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8qIENTU1ZhbHVl
S2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdv
cmRzLmggKi87IH07CiAJCTdFMTJFOTBGMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5oICovOyB9OwogCQk3RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAgKi87IH07CkBAIC01MjQ0LDYgKzUyNDEsOCBAQAogCQlDM0NGMTdBNTE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0Ey
MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovOyB9Owog
CQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMzE1
QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzRDRDYyOUExODM4Mzc2NjAw
N0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5jcHAgKi87IH07CisJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYx
MjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdy
b3VwU2V0dGluZ3MuY3BwICovOyB9OwogCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3Jv
dXBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MjBGRjQyNzI5
MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFn
ZU5hbWVzcGFjZS5jcHAgKi87IH07CkBAIC04NzQwLDcgKzg3MzksNiBAQAogCQk2NUE2NDBGMDA1
MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVCRjAy
MjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVCRjAy
M0MwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEZyYW1lTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVDQkZFRjcw
OTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnJhbWVWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04OTY4LDggKzg5NjYsNiBAQAogCQk3QzYxMzZGODE3MTBDMzUyMDBGRjRBNTcgLyog
SW5GaWxlc1BhcnNlci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJbkZpbGVzUGFyc2VyLnBtOyBwYXRo
ID0gc2NyaXB0cy9JbkZpbGVzUGFyc2VyLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzYxMzZGOTE3MTBDMzUyMDBGRjRBNTcgLyogU3RhdGljU3RyaW5nLnBtICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsg
bmFtZSA9IFN0YXRpY1N0cmluZy5wbTsgcGF0aCA9IHNjcmlwdHMvU3RhdGljU3RyaW5nLnBtOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyog
SUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJRE5TY3JpcHRX
aGl0ZUxpc3QudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZ01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25h
cHNob3R0aW5nTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lU25h
cHNob3R0aW5nTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMTJFOTBEMTVG
QTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDsgcGF0aCA9
IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21G
aWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAwMTI3RjM0
MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
Mjc0LDYgKzEyMjcwLDggQEAKIAkJQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRUYXJnZXRPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDM0NGMTdBMjE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0
Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVNu
YXBzaG90dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5
RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVz
cGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFt
ZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjA2LDYgKzE1NjA0
LDggQEAKIAkJCQk2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLywKIAkJCQk5
NzRBODYyMDE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCAq
LywKIAkJCQk5NzRBODYyMTE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyLmggKi8sCisJCQkJQzRDRDYyOTgxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0
aW5nLmNwcCAqLywKKwkJCQlDNENENjI5OTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hv
dHRpbmcuaCAqLywKIAkJCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNw
cCAqLywKIAkJCQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8sCiAJ
CQkJNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCkBAIC0xNjUy
MCw5ICsxNjUyMCw2IEBACiAJCQkJQUJBRjIyMDcwQzAzQjFDNzAwQjBCQ0YwIC8qIENocm9tZU1h
Yy5tbSAqLywKIAkJCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJN
YWMubW0gKi8sCiAJCQkJOTNDMDlBN0UwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1h
Yy5tbSAqLywKLQkJCQk2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gKi8s
Ci0JCQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmgg
Ki8sCi0JCQkJN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tICovLAogCQkJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLywK
IAkJCQlFMUMyRjI0ODE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0gKi8sCiAJCQkJ
RjU4Nzg1NEMwMkRFMzc1OTAxRUE0MTIyIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCAqLywKQEAgLTIy
MTIxLDYgKzIyMTE4LDcgQEAKIAkJCQkxQTU2OUNGODBEN0UyQjgyMDA3QzM5ODMgLyogY19jbGFz
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkEwRDdFMkI4MjAwN0MzOTgzIC8qIGNfaW5z
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZDMEQ3RTJCODIwMDdDMzk4MyAvKiBj
X3J1bnRpbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAv
KiBGcmFtZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkUwRDdFMkI4
MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMUEwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNjRCNENDMENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmggaW4gSGVhZGVycyAqLywK
QEAgLTIyOTc5LDcgKzIyOTc3LDYgQEAKIAkJCQk2MjhEMjE0RTEyMTMxRUY0MDA1NURDRkMgLyog
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNzAxODBG
Mjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OUUwRTA5OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAot
CQkJCTdDRTMwREFBMTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVBQjAxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERp
cmVjdG9yeURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjU5LDEwICsyNjI1Niw4IEBA
CiAJCQkJOTMyRTE2MDkwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRl
TWFjaGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkJBNzY2RTE2NjQyN0E4MDA1QkU1RDEg
LyogRnJhbWVMb2FkUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NUJGMDI0NTA5NzQ4
MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwRDA5
OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEE4Qzk2RUIwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJN0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5n
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQUQxN0QxNDE1MTAwN0ZGODQyIC8qIEpT
UlRDRGF0YUNoYW5uZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUEyMTQ4NDA5N0Ez
RjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzkxQTEw
MTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3NzY4LDYgKzI3NzYzLDcgQEAKIAkJCQk1MUUwQkIzOTBEQTVBQ0I2MDBBOUU0MTcgLyogU3Rv
cmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzI3N0U1MjE3RDAxOENDMDAxNTUzNEQg
LyogSlNNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MEQwRTgyMEZG
NDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUM0Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDNTVFMzhDMDEwMDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMDlEQjQxNkFGNUY2QzAwODUzOEU3IC8q
IFN0b3JhZ2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEwMkQ5NTBGRDlBQTJE
MDBGQUZGMDQgLyogU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCBjYzAzNjU1MjZlMzE2ZTA1ZDViMTViYjc0NDRj
M2JiMmJjZmE5MDUwLi5hNmFjMzk5YzBlNzc2NDM1OWQ1YTkyZjNmZWVlY2JhYzBmMjViY2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9y
dCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2YXRlLmgiCiAjaW1wb3J0ICJE
T01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKICNpbXBvcnQgIkZvbnQu
aCIKICNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgog
I2ltcG9ydCAiSFRNTEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAi
SFRNTFBhcnNlcklkaW9tcy5oIgpAQCAtMjg3LDkgKzI4Nyw5IEBAIGlkIDxET01FdmVudFRhcmdl
dD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKICAgICAvLyBGSVhNRTog
Q291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6Ok5vZGUgYW5kIGF1dG9nZW5l
cmF0ZT8KICAgICBXZWJDb3JlOjpOb2RlKiBub2RlID0gY29yZShzZWxmKTsKICAgICBXZWJDb3Jl
OjpGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFt
ZSkKKyAgICBpZiAoIWZyYW1lIHx8ICFub2RlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBmcmFtZS0+bm9kZUltYWdlKG5vZGUpLmdldCgpOworICAgIHJldHVybiBbW2NyZWF0ZURy
YWdJbWFnZUZvck5vZGUoKmZyYW1lLCAqbm9kZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAK
IC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKQEAgLTMzMiwxMCArMzMyLDEwIEBAIGlkIDxET01FdmVu
dFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKIHsKICAgICBX
ZWJDb3JlOjpSYW5nZSogcmFuZ2UgPSBjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSA9IHJhbmdlLT5vd25lckRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQor
ICAgIGlmICghZnJhbWUgfHwgIXJhbmdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFdlYkNvcmU6OnJhbmdlSW1hZ2UoZnJhbWUsIHJhbmdlLCBmb3JjZUJsYWNrVGV4dCk7Cisg
ICAgcmV0dXJuIFtbY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoKmZyYW1lLCAqcmFuZ2UsIGZvcmNl
QmxhY2tUZXh0KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKXRleHRS
ZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAppbmRleCA5ZDJlMjc1MmZkZjJiN2M2NjQyYTI0
MjRmODgwNjNlYzhhNzFjN2M4Li44MDM4ZTc4NDcwODU4MDgwNzBkODdmMWE3ZjI5ZTQzZDgwYTM2
ZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcApAQCAtMjc3LDEwICsyNzcsMTEgQEAgRHJh
Z0ltYWdlUmVmIENsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBsb2NhdGlvbikg
Y29uc3QKIAogICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKICAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IG1fZHJhZ0ltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZyYW1lLT5ub2RlSW1hZ2UobV9kcmFnSW1hZ2VFbGVtZW50LmdldCgpKTsK
KyAgICAgICAgICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgbV9kcmFn
SW1hZ2VFbGVtZW50LmdldCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gMDsgLy8gV2UgZG8gbm90
IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGNyZWF0ZSBhIGRyYWcgaW1hZ2UsIHVzZSB0aGUg
ZGVmYXVsdCBpY29uLgorICAgIC8vIFdlIGRvIG5vdCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0
byBjcmVhdGUgYSBkcmFnIGltYWdlLCB1c2UgdGhlIGRlZmF1bHQgaWNvbi4KKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xp
cGJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZE1hYy5tbQppbmRleCA3
NmNhNmZjYTNlNDI0MDdiNWY4ZTdiMzVlNjU4NzM3YzIxMTNlOGZiLi5hMDliMzBhNGE2NjgzYmEx
ZmQ3ZmI0NWZhODliMmRiZWMwMGMzMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q2xpcGJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRNYWMubW0K
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ2FjaGVkSW1hZ2UuaCIKICNpbXBvcnQgIkVs
ZW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCisjaW1wb3J0ICJEcmFn
SW1hZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywxNiArMzcsMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogLy8gQ2xpcGJvYXJkOjpkcmFnSW1hZ2UgaW4gQ2xpcGJvYXJkLmNw
cCBkb2VzIG5vdCBoYW5kbGUgY29ycmVjdGx5LCBzbyBtdXN0IHJlc29sdmUgdGhhdCBhcyB3ZWxs
LgogRHJhZ0ltYWdlUmVmIENsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBsb2Nh
dGlvbikgY29uc3QKIHsKLSAgICBOU0ltYWdlICpyZXN1bHQgPSBuaWw7CisgICAgRHJhZ0ltYWdl
UmVmIHJlc3VsdCA9IG5pbDsKICAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7CiAgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBtX2RyYWdJbWFnZUVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUo
KSkgewotICAgICAgICAgICAgTlNSZWN0IGltYWdlUmVjdDsKLSAgICAgICAgICAgIE5TUmVjdCBl
bGVtZW50UmVjdDsKLSAgICAgICAgICAgIHJlc3VsdCA9IHNuYXBzaG90RHJhZ0ltYWdlKGZyYW1l
LCBtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCksICZpbWFnZVJlY3QsICZlbGVtZW50UmVjdCk7Cisg
ICAgICAgICAgICBJbnRSZWN0IGltYWdlUmVjdDsKKyAgICAgICAgICAgIEludFJlY3QgZWxlbWVu
dFJlY3Q7CisgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSgqZnJh
bWUsICptX2RyYWdJbWFnZUVsZW1lbnQsIGltYWdlUmVjdCwgZWxlbWVudFJlY3QpOwogICAgICAg
ICAgICAgLy8gQ2xpZW50IHNwZWNpZmllcyBwb2ludCByZWxhdGl2ZSB0byBlbGVtZW50LCBub3Qg
dGhlIHdob2xlIGltYWdlLCB3aGljaCBtYXkgaW5jbHVkZSBjaGlsZAogICAgICAgICAgICAgLy8g
bGF5ZXJzIHNwcmVhZCBvdXQgYWxsIG92ZXIgdGhlIHBsYWNlLgotICAgICAgICAgICAgbG9jYXRp
b24uc2V0WChlbGVtZW50UmVjdC5vcmlnaW4ueCAtIGltYWdlUmVjdC5vcmlnaW4ueCArIG1fZHJh
Z0xvY2F0aW9uLngoKSk7Ci0gICAgICAgICAgICBsb2NhdGlvbi5zZXRZKGltYWdlUmVjdC5zaXpl
LmhlaWdodCAtIChlbGVtZW50UmVjdC5vcmlnaW4ueSAtIGltYWdlUmVjdC5vcmlnaW4ueSArIG1f
ZHJhZ0xvY2F0aW9uLnkoKSkpOworICAgICAgICAgICAgbG9jYXRpb24uc2V0WChlbGVtZW50UmVj
dC54KCkgLSBpbWFnZVJlY3QueCgpICsgbV9kcmFnTG9jYXRpb24ueCgpKTsKKyAgICAgICAgICAg
IGxvY2F0aW9uLnNldFkoaW1hZ2VSZWN0LmhlaWdodCgpIC0gKGVsZW1lbnRSZWN0LnkoKSAtIGlt
YWdlUmVjdC55KCkgKyBtX2RyYWdMb2NhdGlvbi55KCkpKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSBpZiAobV9kcmFnSW1hZ2UpIHsKICAgICAgICAgcmVzdWx0ID0gbV9kcmFnSW1hZ2UtPmltYWdl
KCktPmdldE5TSW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5k
ZXggN2ViMjQ5ZGY3ZmY5YjU1YThlY2U1YWU3ZmY0NzJlMGNkN2JhYzI0Ny4uZjg2NmRjZmRmYmIy
N2NlYzU2NTk2NWNjYmMzNWNkNTc4Mjk5ODZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgog
I2luY2x1ZGUgIkRyYWdDbGllbnQuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgorI2luY2x1ZGUg
IkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkRyYWdTZXNzaW9uLmgiCiAjaW5jbHVkZSAiRHJhZ1N0
YXRlLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCkBAIC03ODAsNyArNzgxLDcgQEAgYm9vbCBEcmFn
Q29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUs
IERyYWdPcGVyYXRpb24KICAgICAgICAgfQogICAgICAgICBtX2NsaWVudC53aWxsUGVyZm9ybURy
YWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiwgZHJhZ09yaWdpbiwgY2xp
cGJvYXJkKTsKICAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKLSAgICAgICAgICAgIGRyYWdJbWFn
ZSA9IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihzcmMuZHJhZ0ltYWdlRm9yU2VsZWN0aW9u
KCksIERyYWdJbWFnZUFscGhhKTsKKyAgICAgICAgICAgIGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJh
Z0ltYWdlVG9GcmFjdGlvbihjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oc3JjKSwgRHJhZ0lt
YWdlQWxwaGEpOwogICAgICAgICAgICAgZHJhZ0xvYyA9IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFn
KHNyYyk7CiAgICAgICAgICAgICBtX2RyYWdPZmZzZXQgPSBJbnRQb2ludChkcmFnT3JpZ2luLngo
KSAtIGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnkoKSAtIGRyYWdMb2MueSgpKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA2MjQxZWUzYzk1MmI0NjE1NWMyOTIwNmIwOGY5MDFl
MDBlNTJmNTgwLi41YzAzNjExZThiNzUxZjkxNmRlMmVkNGI3MjZiNjM2MWI3MmZhYTE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTY2LDEwOCArOTY2LDQgQEAgYm9vbCBGcmFtZTo6aXNVUkxB
bGxvd2VkKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYg
IVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdJTikKLXN0cnVjdCBTY29wZWRGcmFtZVBhaW50
aW5nU3RhdGUgewotICAgIFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZShGcmFtZSogZnJhbWUsIE5v
ZGUqIG5vZGUpCi0gICAgICAgIDogZnJhbWUoZnJhbWUpCi0gICAgICAgICwgbm9kZShub2RlKQot
ICAgICAgICAsIHBhaW50QmVoYXZpb3IoZnJhbWUtPnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpKQot
ICAgICAgICAsIGJhY2tncm91bmRDb2xvcihmcmFtZS0+dmlldygpLT5iYXNlQmFja2dyb3VuZENv
bG9yKCkpCi0gICAgewotICAgICAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+cmVuZGVyZXIoKSk7
Ci0gICAgICAgIGlmIChub2RlKQotICAgICAgICAgICAgbm9kZS0+cmVuZGVyZXIoKS0+dXBkYXRl
RHJhZ1N0YXRlKHRydWUpOwotICAgIH0KLQotICAgIH5TY29wZWRGcmFtZVBhaW50aW5nU3RhdGUo
KQotICAgIHsKLSAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAg
ICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURyYWdTdGF0ZShmYWxzZSk7Ci0gICAgICAgIGZy
YW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7Ci0gICAgICAgIGZy
YW1lLT52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKLSAg
ICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJhdygwKTsKLSAgICB9Ci0KLSAgICBGcmFt
ZSogZnJhbWU7Ci0gICAgTm9kZSogbm9kZTsKLSAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZp
b3I7Ci0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yOwotfTsKLQotRHJhZ0ltYWdlUmVmIEZyYW1l
Ojpub2RlSW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgY29uc3QgU2NvcGVkRnJhbWVQYWludGluZ1N0
YXRlIHN0YXRlKHRoaXMsIG5vZGUpOwotCi0gICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKHN0
YXRlLnBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
KTsKLQotICAgIC8vIFdoZW4gZ2VuZXJhdGluZyB0aGUgZHJhZyBpbWFnZSBmb3IgYW4gZWxlbWVu
dCwgaWdub3JlIHRoZSBkb2N1bWVudCBiYWNrZ3JvdW5kLgotICAgIG1fdmlldy0+c2V0QmFzZUJh
Y2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwotICAgIG1fZG9jLT51cGRhdGVMYXlv
dXQoKTsKLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIEVuYWJsZSBzcGVjaWFs
IHN1Yi10cmVlIGRyYXdpbmcgbW9kZS4KLQotICAgIC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQg
bWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2luYWwgcmVuZGVyZXIuCi0gICAgYXV0byByZW5k
ZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKLSAgICBJbnRSZWN0
IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9v
dFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDE7
Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3BhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgcGFpbnRpbmdSZWN0LnNldFdpZHRoKHBhaW50aW5nUmVj
dC53aWR0aCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50aW5nUmVjdC5zZXRIZWln
aHQocGFpbnRpbmdSZWN0LmhlaWdodCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwotCi0gICAgT3du
UHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Qu
c2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQikpOwotICAgIGlm
ICghYnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBidWZmZXItPmNvbnRleHQo
KS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7Ci0gICAg
YnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5tYXhY
KCksIHBhaW50aW5nUmVjdC5tYXhZKCkpKTsKLQotICAgIG1fdmlldy0+cGFpbnRDb250ZW50cyhi
dWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0KTsKLQotICAgIFJlZlB0cjxJbWFnZT4gaW1h
Z2UgPSBidWZmZXItPmNvcHlJbWFnZSgpOwotCi0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24ocmVuZGVyZXItPnNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uKCkpOwotI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgb3Jp
ZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShyZW5kZXJlci0+c3R5
bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZURyYWdJ
bWFnZUZyb21JbWFnZShpbWFnZS5nZXQoKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci19Ci0K
LURyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAo
IXNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBT
Y29wZWRGcmFtZVBhaW50aW5nU3RhdGUgc3RhdGUodGhpcywgMCk7Ci0gICAgbV92aWV3LT5zZXRQ
YWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsKLSAgICBtX2RvYy0+dXBk
YXRlTGF5b3V0KCk7Ci0KLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IGVuY2xvc2luZ0ludFJl
Y3Qoc2VsZWN0aW9uKCkuYm91bmRzKCkpOwotCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
PSAxOwotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gbV9wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIHBhaW50aW5nUmVjdC5zZXRXaWR0aChwYWludGlu
Z1JlY3Qud2lkdGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBwYWludGluZ1JlY3Quc2V0
SGVpZ2h0KHBhaW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLQotICAg
IE93blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdS
ZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKLSAg
ICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCkt
PnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOwotICAgIGJ1
ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QubWF4WCgp
LCBwYWludGluZ1JlY3QubWF4WSgpKSk7Ci0KLSAgICBtX3ZpZXctPnBhaW50Q29udGVudHMoYnVm
ZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdl
ID0gYnVmZmVyLT5jb3B5SW1hZ2UoKTsKLSAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKGltYWdlLmdldCgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7Ci19Ci0KLSNl
bmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggODQwN2U5
ZTJiY2YzZWVmZWRkYmYwNTMxYmU2Y2U5Mjc5NDU3Mjc3Yy4uNWYxODY2ZmUyMDJmY2ZlYTY0NDJj
MGJiZWY4MjBmNTZlZDIzZTc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjksNyArMjksNiBAQAog
I2RlZmluZSBGcmFtZV9oCiAKICNpbmNsdWRlICJBZGp1c3RWaWV3U2l6ZU9yTm90LmgiCi0jaW5j
bHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZVRyZWUuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC01OCwxMSArNTcsMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEVkaXRvcjsKICAgICBjbGFzcyBFbGVtZW50Owog
ICAgIGNsYXNzIEV2ZW50SGFuZGxlcjsKKyAgICBjbGFzcyBGbG9hdFNpemU7CiAgICAgY2xhc3Mg
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyOwogICAgIGNsYXNzIEZyYW1lU2VsZWN0aW9uOwogICAg
IGNsYXNzIEZyYW1lVmlldzsKICAgICBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiAgICAg
Y2xhc3MgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7CisgICAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAgICAg
Y2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBNYWluRnJhbWU7CiAgICAgY2xhc3MgTm9kZTsKQEAg
LTE3Nyw5ICsxNzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgU3RyaW5nIGRp
c3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKLSAg
ICAgICAgRHJhZ0ltYWdlUmVmIG5vZGVJbWFnZShOb2RlKik7Ci0gICAgICAgIERyYWdJbWFnZVJl
ZiBkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsKLQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwogICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnRBdFBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCk7
CiAgICAgICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQm
IGZyYW1lUG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBz
aG90dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iY2IzMGNkZTQ5Y2U5MTM5ZjAzOThhNmE3ZjlhNTdhMTVkZTRmZTFiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
QEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkg
b2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkZyYW1lU25hcHNo
b3R0aW5nLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisj
aW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJP
YmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgU2NvcGVkRnJhbWVQYWlu
dGluZ1N0YXRlIHsKKyAgICBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoRnJhbWUmIGZyYW1lLCBO
b2RlKiBub2RlKQorICAgIDogZnJhbWUoZnJhbWUpCisgICAgLCBub2RlKG5vZGUpCisgICAgLCBw
YWludEJlaGF2aW9yKGZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpKQorICAgICwgYmFja2dy
b3VuZENvbG9yKGZyYW1lLnZpZXcoKS0+YmFzZUJhY2tncm91bmRDb2xvcigpKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPnJlbmRlcmVyKCkpOworICAgIH0KKworICAgIH5T
Y29wZWRGcmFtZVBhaW50aW5nU3RhdGUoKQorICAgIHsKKyAgICAgICAgZnJhbWUudmlldygpLT5z
ZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOworICAgICAgICBmcmFtZS52aWV3KCktPnNl
dEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgZnJhbWUudmll
dygpLT5zZXROb2RlVG9EcmF3KG51bGxwdHIpOworICAgIH0KKworICAgIEZyYW1lJiBmcmFtZTsK
KyAgICBOb2RlKiBub2RlOworICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcjsKKyAgICBD
b2xvciBiYWNrZ3JvdW5kQ29sb3I7Cit9OworCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0
LCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbklu
U25hcHNob3Qgc2hvdWxkSW5jbHVkZVNlbGVjdGlvbiA9IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVj
dGlvbjsKKyAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25I
aWdobGlnaHRpbmcpCisgICAgICAgIHNob3VsZEluY2x1ZGVTZWxlY3Rpb24gPSBGcmFtZVZpZXc6
OkV4Y2x1ZGVTZWxlY3Rpb247CisKKyAgICBGcmFtZVZpZXc6OkNvb3JkaW5hdGVTcGFjZUZvclNu
YXBzaG90IGNvb3JkaW5hdGVTcGFjZSA9IEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlczsK
KyAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzKQorICAg
ICAgICBjb29yZGluYXRlU3BhY2UgPSBGcmFtZVZpZXc6OlZpZXdDb29yZGluYXRlczsKKworICAg
IFBhaW50QmVoYXZpb3IgdGV4dFBhaW50QmVoYXZpb3IgPSAwOworICAgIGlmIChvcHRpb25zICYg
U25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQpCisgICAgICAgIHRleHRQYWludEJlaGF2aW9y
ID0gUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0OworCisgICAgY29uc3QgU2NvcGVkRnJhbWVQ
YWludGluZ1N0YXRlIHN0YXRlKGZyYW1lLCBudWxscHRyKTsKKworICAgIC8vIE90aGVyIHBhaW50
IGJlaGF2aW9ycyBhcmUgc2V0IGJ5IHBhaW50Q29udGVudHNGb3JTbmFwc2hvdC4KKyAgICBQYWlu
dEJlaGF2aW9yIGV4aXN0aW5nQmVoYXZpb3IgPSBmcmFtZS52aWV3KCktPnBhaW50QmVoYXZpb3Io
KTsKKyAgICBmcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoZXhpc3RpbmdCZWhhdmlvciB8
IHRleHRQYWludEJlaGF2aW9yKTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQo
KTsKKworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gZnJhbWUucGFnZSgpID8gMSA6IGZy
YW1lLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICBJbnRSZWN0IHVzZWRSZWN0KGlt
YWdlUmVjdCk7CisgICAgdXNlZFJlY3Quc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+KEltYWdlQnVmZmVyOjpjcmVhdGUodXNlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQikubGVha1B0cigpKTsKKyAgICBpZiAoIWJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5z
bGF0ZSgtdXNlZFJlY3QueCgpLCAtdXNlZFJlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQo
KS0+Y2xpcChGbG9hdFJlY3QoMCwgMCwgdXNlZFJlY3QubWF4WCgpLCB1c2VkUmVjdC5tYXhZKCkp
KTsKKworICAgIGZyYW1lLnZpZXcoKS0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGJ1ZmZlci0+
Y29udGV4dCgpLCB1c2VkUmVjdCwgc2hvdWxkSW5jbHVkZVNlbGVjdGlvbiwgY29vcmRpbmF0ZVNw
YWNlKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCisjaWYgIVBMQVRGT1JNKFdJTikKK3N0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBT
bmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBpZiAoIWZyYW1lLnNlbGVjdGlvbigpLmlz
UmFuZ2UoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBGb3JjZSBzZWxlY3Rp
b24gaGlnaGxpZ2h0aW5nIHRvIGJlIGluY2x1ZGVkLgorICAgIG9wdGlvbnMgJj0gflNuYXBzaG90
T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmc7CisgICAgSW50UmVjdCBzZWxlY3Rp
b25SZWN0ID0gZW5jbG9zaW5nSW50UmVjdChmcmFtZS5zZWxlY3Rpb24oKS5ib3VuZHMoKSk7Cisg
ICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBzZWxlY3Rpb25SZWN0LCBvcHRpb25z
KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdE5vZGUoRnJhbWUm
IGZyYW1lLCBOb2RlJiBub2RlKQoreworICAgIGlmICghbm9kZS5yZW5kZXJlcigpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBz
dGF0ZShmcmFtZSwgJm5vZGUpOworCisgICAgZnJhbWUudmlldygpLT5zZXRCYXNlQmFja2dyb3Vu
ZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRl
TGF5b3V0KCk7CisgICAgZnJhbWUudmlldygpLT5zZXROb2RlVG9EcmF3KCZub2RlKTsKKworICAg
IC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2lu
YWwgcmVuZGVyZXIuCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIo
KTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIExh
eW91dFJlY3QgdG9wTGV2ZWxSZWN0OworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxT
bmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsK
KyAgICByZXR1cm4gc25hcHNob3RGcmFtZVJlY3QoZnJhbWUsIHBhaW50aW5nUmVjdCk7Cit9Cisj
ZW5kaWYgLy8gIVBMQVRGT1JNKFdJTikKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ODkzYmQ0MGU2ODA2
NjAxNzlkY2FkNGI1MmU2MDBjNDI1OTNiNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRnJhbWVTbmFw
c2hvdHRpbmdfaAorI2RlZmluZSBGcmFtZVNuYXBzaG90dGluZ19oCisKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3Mg
SW50UmVjdDsKK2NsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgTm9kZTsKKworZW51bSB7CisgICAg
U25hcHNob3RPcHRpb25zTm9uZSA9IDAsCisgICAgU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVj
dGlvbkhpZ2hsaWdodGluZyA9IDEgPDwgMCwKKyAgICBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29y
ZGluYXRlcyA9IDEgPDwgMSwKKyAgICBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA9IDEg
PDwgMiwKK307Cit0eXBlZGVmIHVpbnQzMl90IFNuYXBzaG90T3B0aW9uczsKKworc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFtZSYsIGNvbnN0IEludFJl
Y3QmLCBTbmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKK3N0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiwgTm9kZSYpOworc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihGcmFtZSYsIFNuYXBzaG90T3B0
aW9ucyA9IFNuYXBzaG90T3B0aW9uc05vbmUpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBGcmFtZVNuYXBzaG90dGluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9GcmFtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFj
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWZiMWY5MWJjYmQ2ZjA2MjdhNjFk
MWU5NGRlOWI3MTRhOGI1NDM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQotICogQ29weXJp
Z2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCi0KLSNpbXBv
cnQgIkRvY3VtZW50LmgiCi0jaW1wb3J0ICJGcmFtZUxvYWRlckNsaWVudC5oIgotI2ltcG9ydCAi
RnJhbWVTZWxlY3Rpb24uaCIKLSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCi0jaW1w
b3J0ICJGcmFtZVZpZXcuaCIKLSNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpCi17
Ci0gICAgbV9kb2MtPnVwZGF0ZUxheW91dCgpOyAvLyBmb3JjZXMgc3R5bGUgcmVjYWxjCi0KLSAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJl
bmRlcmVyKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0
OwotICAgIE5TUmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVy
LT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwotCi0gICAgbV92aWV3LT5zZXROb2Rl
VG9EcmF3KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUKLSAg
ICBOU0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KHRoaXMsIHBhaW50aW5nUmVjdCk7Ci0g
ICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KDApOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
RHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQotewotICAgIGlmICgh
c2VsZWN0aW9uKCkuaXNSYW5nZSgpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBz
ZWxlY3Rpb25JbWFnZSh0aGlzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGJmYWI2N2U3NjU4MTRhZTZjYmM5MDFiYWQ0NGFmZDE1M2Y4NjJh
MjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZyYW1lU25hcHNob3R0aW5nTWFjX2gK
LSNkZWZpbmUgRnJhbWVTbmFwc2hvdHRpbmdNYWNfaAotCi1PQkpDX0NMQVNTIE5TSW1hZ2U7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRnJhbWU7Ci1jbGFzcyBSYW5nZTsKLWNsYXNz
IE5vZGU7Ci0KLU5TSW1hZ2UqIHNlbGVjdGlvbkltYWdlKEZyYW1lKiwgYm9vbCBmb3JjZUJsYWNr
VGV4dCA9IGZhbHNlKTsKLU5TSW1hZ2UqIHJhbmdlSW1hZ2UoRnJhbWUqLCBSYW5nZSosIGJvb2wg
Zm9yY2VCbGFja1RleHQgPSBmYWxzZSk7Ci1OU0ltYWdlKiBzbmFwc2hvdERyYWdJbWFnZShGcmFt
ZSosIE5vZGUqLCBOU1JlY3QqIGltYWdlUmVjdCwgTlNSZWN0KiBlbGVtZW50UmVjdCk7Ci1OU0lt
YWdlKiBpbWFnZUZyb21SZWN0KEZyYW1lKiwgTlNSZWN0KTsKLQotfQotCi0jZW5kaWYgLy8gRnJh
bWVTbmFwc2hvdHRpbmdNYWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNu
YXBzaG90dGluZ01hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkyYzJmMjNj
YjE3YmQwM2Q0ZThhNWVlMTk1MTRhYzQzOTFkMTllYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBz
aG90dGluZ01hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE2OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1
cnlha292IChhcEBueXBvcC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCIKLQotI2ltcG9ydCAiQmxvY2tF
eGNlcHRpb25zLmgiCi0jaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRnJhbWUuaCIKLSNp
bXBvcnQgIkZyYW1lU2VsZWN0aW9uLmgiCi0jaW1wb3J0ICJGcmFtZVZpZXcuaCIKLSNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dC5oIgotI2ltcG9ydCAiUmFuZ2UuaCIKLSNpbXBvcnQgIlJlbmRlclZp
ZXcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1OU0ltYWdlKiBpbWFnZUZyb21SZWN0KEZy
YW1lKiBmcmFtZSwgTlNSZWN0IHJlY3QpCi17Ci0gICAgUGFpbnRCZWhhdmlvciBvbGRCZWhhdmlv
ciA9IGZyYW1lLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKTsKLSAgICBmcmFtZS0+dmlldygpLT5z
ZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycyk7Ci0gICAgCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAg
IAotICAgIE5TSW1hZ2UqIHJlc3VsdEltYWdlID0gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhT
aXplOnJlY3Quc2l6ZV0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIGlmIChyZWN0LnNpemUud2lk
dGggIT0gMCAmJiByZWN0LnNpemUuaGVpZ2h0ICE9IDApIHsKLSNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVk
LWRlY2xhcmF0aW9ucyIKLSAgICAgICAgW3Jlc3VsdEltYWdlIHNldEZsaXBwZWQ6WUVTXTsKLSNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICAgICAgW3Jlc3VsdEltYWdlIGxvY2tGb2N1
c107Ci0KLSAgICAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgoQ0dDb250ZXh0
UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF0pOyAg
ICAgICAgCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7Ci0gICAgICAgIGdyYXBoaWNz
Q29udGV4dC50cmFuc2xhdGUoLXJlY3Qub3JpZ2luLngsIC1yZWN0Lm9yaWdpbi55KTsKLSAgICAg
ICAgZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cygmZ3JhcGhpY3NDb250ZXh0LCBJbnRSZWN0
KHJlY3QpKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKLQotICAgICAgICBb
cmVzdWx0SW1hZ2UgdW5sb2NrRm9jdXNdOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRp
b25zIgotICAgICAgICBbcmVzdWx0SW1hZ2Ugc2V0RmxpcHBlZDpOT107Ci0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCi0gICAgfQotICAgIAotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50
QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwotICAgIHJldHVybiByZXN1bHRJbWFnZTsKLSAgICAKLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIAotICAgIGZyYW1lLT52aWV3KCktPnNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLU5TSW1h
Z2UqIHNlbGVjdGlvbkltYWdlKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKLXsK
LSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rp
b25Pbmx5IHwgKGZvcmNlQmxhY2tUZXh0ID8gUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0IDog
MCkpOwotICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLSAgICBOU0ltYWdl
KiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KGZyYW1lLCBmcmFtZS0+c2VsZWN0aW9uKCkuYm91bmRz
KCkpOwotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvck5v
cm1hbCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotTlNJbWFnZSAqcmFuZ2VJbWFnZShGcmFt
ZSogZnJhbWUsIFJhbmdlKiByYW5nZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKLXsKLSAgICBmcmFt
ZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5IHwg
KGZvcmNlQmxhY2tUZXh0ID8gUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0IDogMCkpOwotICAg
IGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLSAgICBSZW5kZXJWaWV3KiB2aWV3
ID0gZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOwotICAgIGlmICghdmlldykKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgIFBvc2l0aW9uIHN0YXJ0ID0gcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsK
LSAgICBQb3NpdGlvbiBjYW5kaWRhdGUgPSBzdGFydC5kb3duc3RyZWFtKCk7Ci0gICAgaWYgKGNh
bmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5y
ZW5kZXJlcigpKQotICAgICAgICBzdGFydCA9IGNhbmRpZGF0ZTsKLQotICAgIFBvc2l0aW9uIGVu
ZCA9IHJhbmdlLT5lbmRQb3NpdGlvbigpOwotICAgIGNhbmRpZGF0ZSA9IGVuZC51cHN0cmVhbSgp
OwotICAgIGlmIChjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVj
YXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgZW5kID0gY2FuZGlkYXRlOwotCi0gICAg
aWYgKHN0YXJ0LmlzTnVsbCgpIHx8IGVuZC5pc051bGwoKSB8fCBzdGFydCA9PSBlbmQpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHNhdmVkU3RhcnRSZW5kZXJlcjsK
LSAgICBpbnQgc2F2ZWRTdGFydE9mZnNldDsKLSAgICBSZW5kZXJPYmplY3QqIHNhdmVkRW5kUmVu
ZGVyZXI7Ci0gICAgaW50IHNhdmVkRW5kT2Zmc2V0OwotICAgIHZpZXctPmdldFNlbGVjdGlvbihz
YXZlZFN0YXJ0UmVuZGVyZXIsIHNhdmVkU3RhcnRPZmZzZXQsIHNhdmVkRW5kUmVuZGVyZXIsIHNh
dmVkRW5kT2Zmc2V0KTsKLQotICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciA9IHN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFzdGFydFJlbmRlcmVyKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciA9IGVu
ZC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgIGlmICghZW5kUmVuZGVyZXIpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc3RhcnRSZW5kZXJl
ciwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmVuZGVyZXIsIGVuZC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpLCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7Ci0gICAg
TlNJbWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgdmlldy0+c2VsZWN0aW9uQm91
bmRzKCkpOwotICAgIHZpZXctPnNldFNlbGVjdGlvbihzYXZlZFN0YXJ0UmVuZGVyZXIsIHNhdmVk
U3RhcnRPZmZzZXQsIHNhdmVkRW5kUmVuZGVyZXIsIHNhdmVkRW5kT2Zmc2V0LCBSZW5kZXJWaWV3
OjpSZXBhaW50Tm90aGluZyk7Ci0KLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9y
KFBhaW50QmVoYXZpb3JOb3JtYWwpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotTlNJbWFn
ZSogc25hcHNob3REcmFnSW1hZ2UoRnJhbWUqIGZyYW1lLCBOb2RlKiBub2RlLCBOU1JlY3QqIGlt
YWdlUmVjdCwgTlNSZWN0KiBlbGVtZW50UmVjdCkKLXsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIAotICAgIHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7ICAgIC8v
IG1hcmsgZHJhZ2dlZCBub2RlcyAoc28gdGhleSBwaWNrIHVwIHRoZSByaWdodCBDU1MpCi0gICAg
ZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOyAgLy8gZm9yY2VzIHN0eWxlIHJlY2Fs
YyAtIG5lZWRlZCBzaW5jZSBjaGFuZ2luZyB0aGUgZHJhZyBzdGF0ZSBtaWdodAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltcGx5IG5ldyBzdHlsZXMsIHBsdXMg
SlMgY291bGQgaGF2ZSBjaGFuZ2VkIG90aGVyIHRoaW5ncwotCi0KLSAgICAvLyBEb2N1bWVudDo6
dXBkYXRlTGF5b3V0IG1heSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIFJlbmRlckVsZW1l
bnQuCi0gICAgcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKLSAg
ICBOU1JlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFp
bnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKLQotICAgIGlmIChOU0lzRW1wdHlSZWN0KHBh
aW50aW5nUmVjdCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBmcmFtZS0+dmlldygpLT5z
ZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1v
ZGUKLSAgICBOU0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KGZyYW1lLCBwYWludGluZ1Jl
Y3QpOwotICAgIHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOwotICAgIGZyYW1lLT5k
b2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLSAgICBmcmFtZS0+dmlldygpLT5zZXROb2RlVG9E
cmF3KDApOwotCi0gICAgaWYgKGVsZW1lbnRSZWN0KQotICAgICAgICAqZWxlbWVudFJlY3QgPSBw
aXhlbFNuYXBwZWRJbnRSZWN0KHRvcExldmVsUmVjdCk7Ci0gICAgaWYgKGltYWdlUmVjdCkKLSAg
ICAgICAgKmltYWdlUmVjdCA9IHBhaW50aW5nUmVjdDsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3dpbi9GcmFtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAK
aW5kZXggNWFhZjNhNjc4YzllNTQzYWY2ODNiMzdhZDViMDZjY2UwNjQ0M2I5Zi4uOTY3NGYxNzY4
ZjVkZDg0MjViNjBjN2FmMTZmMGYxZjdkNmY3NjMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0Zy
YW1lV2luLmNwcApAQCAtNTcsMzAgKzU3LDQgQEAgR0RJT2JqZWN0PEhCSVRNQVA+IGltYWdlRnJv
bVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCiAgICAgcmV0dXJu
IGltYWdlOwogfQogCi1EcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigp
Ci17Ci0gICAgaWYgKHNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIGltYWdl
RnJvbVNlbGVjdGlvbih0aGlzLCBmYWxzZSkubGVhaygpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0K
LURyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpCi17Ci0gICAgZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9k
ZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OwotICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0g
cGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJl
Y3QpKTsKLQotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdyhub2RlKTsgLy8gaW52b2tlIHNwZWNp
YWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0gICAgR0RJT2JqZWN0PEhCSVRNQVA+IHJlc3VsdCA9
IGltYWdlRnJvbVJlY3QodGhpcywgcGFpbnRpbmdSZWN0KTsKLSAgICBtX3ZpZXctPnNldE5vZGVU
b0RyYXcoMCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0LmxlYWsoKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4u
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmgKaW5kZXggM2EyNzIzZTYzZDZk
N2U3ZWMwNDRjYjEyZjJlYTdiZDA2Y2ZlNjU5Zi4uMjY5NzI1YzFmOWI5YjgwZDU3ODE0ODRmOTMx
YWIyNWRkM2FlMzMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVX
aW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCkBAIC0zNSw3ICsz
NSw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSW50UmVjdDsKIAogR0RJT2JqZWN0PEhCSVRNQVA+
IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqLCBJbnRSZWN0Jik7Ci1HRElPYmplY3Q8SEJJVE1B
UD4gaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiwgYm9vbCBmb3JjZVdoaXRlVGV4dCk7CitHRElP
YmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiwgYm9vbCBmb3JjZUJsYWNr
VGV4dCk7CiB2b2lkIGNvbXB1dGVQYWdlUmVjdHNGb3JGcmFtZShGcmFtZSosIGNvbnN0IEludFJl
Y3QmIHByaW50UmVjdCwgZmxvYXQgaGVhZGVySGVpZ2h0LCBmbG9hdCBmb290ZXJIZWlnaHQsIGZs
b2F0IHVzZXJTY2FsZUZhY3RvciwgVmVjdG9yPEludFJlY3Q+JiBvdXRQYWdlcywgaW50JiBvdXRQ
YWdlSGVpZ2h0KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdJbWFnZS5jcHAKaW5kZXggYjgxYWZkNTc5ZTgyOTNlZWZhMmJhOTNiOWJiNTVjMWY1MDc2
Y2Y0Ny4uN2M0Njc0ODFiZDU2YTNkNzViOTY5MGZmMTFlYWU2M2M1ZWI4OGE2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTI4LDI5ICsyOCwzNyBAQAogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
RnJhbWVTbmFwc2hvdHRpbmcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
CisKIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJhZ0ltYWdlUmVmIGltYWdl
LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIGZs
b2F0IGhlaWdodFJlc2l6ZVJhdGlvID0gMC4wZjsKICAgICBmbG9hdCB3aWR0aFJlc2l6ZVJhdGlv
ID0gMC4wZjsKICAgICBmbG9hdCByZXNpemVSYXRpbyA9IC0xLjBmOwogICAgIEludFNpemUgb3Jp
Z2luYWxTaXplID0gZHJhZ0ltYWdlU2l6ZShpbWFnZSk7Ci0gICAgCisKICAgICBpZiAoc3JjU2l6
ZS53aWR0aCgpID4gc2l6ZS53aWR0aCgpKSB7CiAgICAgICAgIHdpZHRoUmVzaXplUmF0aW8gPSBz
aXplLndpZHRoKCkgLyAoZmxvYXQpc3JjU2l6ZS53aWR0aCgpOwogICAgICAgICByZXNpemVSYXRp
byA9IHdpZHRoUmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAgICAgaWYgKHNyY1NpemUuaGVp
Z2h0KCkgPiBzaXplLmhlaWdodCgpKSB7CiAgICAgICAgIGhlaWdodFJlc2l6ZVJhdGlvID0gc2l6
ZS5oZWlnaHQoKSAvIChmbG9hdClzcmNTaXplLmhlaWdodCgpOwogICAgICAgICBpZiAoKHJlc2l6
ZVJhdGlvIDwgMC4wZikgfHwgKHJlc2l6ZVJhdGlvID4gaGVpZ2h0UmVzaXplUmF0aW8pKQogICAg
ICAgICAgICAgcmVzaXplUmF0aW8gPSBoZWlnaHRSZXNpemVSYXRpbzsKICAgICB9Ci0gICAgCisK
ICAgICBpZiAoc3JjU2l6ZSA9PSBvcmlnaW5hbFNpemUpCiAgICAgICAgIHJldHVybiByZXNpemVS
YXRpbyA+IDAuMGYgPyBzY2FsZURyYWdJbWFnZShpbWFnZSwgRmxvYXRTaXplKHJlc2l6ZVJhdGlv
LCByZXNpemVSYXRpbykpIDogaW1hZ2U7Ci0gICAgCisKICAgICAvLyBUaGUgaW1hZ2Ugd2FzIHNj
YWxlZCBpbiB0aGUgd2VicGFnZSBzbyBhdCBtaW5pbXVtIHdlIG11c3QgYWNjb3VudCBmb3IgdGhh
dCBzY2FsaW5nCiAgICAgZmxvYXQgc2NhbGV4ID0gc3JjU2l6ZS53aWR0aCgpIC8gKGZsb2F0KW9y
aWdpbmFsU2l6ZS53aWR0aCgpOwogICAgIGZsb2F0IHNjYWxleSA9IHNyY1NpemUuaGVpZ2h0KCkg
LyAoZmxvYXQpb3JpZ2luYWxTaXplLmhlaWdodCgpOwpAQCAtNTgsMTQgKzY2LDE1MSBAQCBEcmFn
SW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiBpbWFnZSwgY29uc3Qg
SW50U2l6ZSYgc3JjU2l6ZSwgYwogICAgICAgICBzY2FsZXggKj0gcmVzaXplUmF0aW87CiAgICAg
ICAgIHNjYWxleSAqPSByZXNpemVSYXRpbzsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gc2Nh
bGVEcmFnSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZShzY2FsZXgsIHNjYWxleSkpOwogfQogCitzdHJ1
Y3QgU2NvcGVkTm9kZURyYWdTdGF0ZSB7CisgICAgU2NvcGVkTm9kZURyYWdTdGF0ZShGcmFtZSYg
ZnJhbWUsIE5vZGUmIG5vZGUpCisgICAgOiBmcmFtZShmcmFtZSkKKyAgICAsIG5vZGUobm9kZSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChub2RlLnJlbmRlcmVyKCkpOworICAgICAgICBub2RlLnJl
bmRlcmVyKCktPnVwZGF0ZURyYWdTdGF0ZSh0cnVlKTsKKyAgICAgICAgZnJhbWUuZG9jdW1lbnQo
KS0+dXBkYXRlTGF5b3V0KCk7CisgICAgfQorCisgICAgflNjb3BlZE5vZGVEcmFnU3RhdGUoKQor
ICAgIHsKKyAgICAgICAgaWYgKG5vZGUucmVuZGVyZXIoKSkgeworICAgICAgICAgICAgbm9kZS5y
ZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOworICAgICAgICAgICAgZnJhbWUuZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGcmFtZSYg
ZnJhbWU7CisgICAgTm9kZSYgbm9kZTsKK307CisKK3N0YXRpYyBEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRnJvbVNuYXBzaG90KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNo
b3QsIE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFzbmFwc2hvdCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb247Cisj
aWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAgICBpZiAobm9kZSkgeworICAgICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgaWYg
KCFyZW5kZXJlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIG9yaWVu
dGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHJlbmRlcmVyLT5zaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgb3JpZW50YXRpb24uc2V0SW1hZ2VPcmllbnRh
dGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICB9Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyNlbmRpZgorICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UgPSBzbmFwc2hvdC0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9k
ZSgpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBvcmllbnRhdGlvbik7Cit9
CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiBmcmFtZSwgTm9k
ZSYgbm9kZSkKK3sKKyAgICBTY29wZWROb2RlRHJhZ1N0YXRlIGVuYWJsZURyYWcoZnJhbWUsIG5v
ZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hv
dE5vZGUoZnJhbWUsIG5vZGUpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNo
b3Qoc3RkOjptb3ZlKHNuYXBzaG90KSwgJm5vZGUpOworfQorCitEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRm9yU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkK
K3sKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucyA9IGZvcmNlQmxhY2tUZXh0ID8gU25hcHNo
b3RPcHRpb25zRm9yY2VCbGFja1RleHQgOiBTbmFwc2hvdE9wdGlvbnNOb25lOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdFNlbGVjdGlvbihmcmFt
ZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hvdChzdGQ6
Om1vdmUoc25hcHNob3QpLCBudWxscHRyKTsKK30KKworc3RydWN0IFNjb3BlZEZyYW1lU2VsZWN0
aW9uU3RhdGUgeworICAgIFNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUoRnJhbWUmIGZyYW1lKQor
ICAgIDogZnJhbWUoZnJhbWUpCisgICAgeworICAgICAgICBpZiAoUmVuZGVyVmlldyogcm9vdCA9
IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICAgICAgcm9vdC0+Z2V0U2VsZWN0aW9u
KHN0YXJ0UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRSZW5kZXJlciwgZW5kT2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSgpCisgICAgeworICAgICAgICBp
ZiAoUmVuZGVyVmlldyogcm9vdCA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICAg
ICAgcm9vdC0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRSZW5k
ZXJlciwgZW5kT2Zmc2V0LCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisgICAgfQorCisg
ICAgRnJhbWUmIGZyYW1lOworICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlcjsKKyAgICBS
ZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyOworICAgIGludCBzdGFydE9mZnNldDsKKyAgICBpbnQg
ZW5kT2Zmc2V0OworfTsKKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKEZy
YW1lJiBmcmFtZSwgUmFuZ2UmIHJhbmdlLCBib29sIGZvcmNlQmxhY2tUZXh0KQoreworICAgIGZy
YW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIFJlbmRlclZpZXcqIHZpZXcgPSBm
cmFtZS5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgLy8gVG8gc25hcHNob3QgdGhlIHJhbmdlLCB0ZW1wb3JhcmlseSBzZWxl
Y3QgaXQgYW5kIHRha2Ugc2VsZWN0aW9uIHNuYXBzaG90LgorICAgIFBvc2l0aW9uIHN0YXJ0ID0g
cmFuZ2Uuc3RhcnRQb3NpdGlvbigpOworICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHN0YXJ0LmRv
d25zdHJlYW0oKTsKKyAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlk
YXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCisgICAgICAgIHN0YXJ0ID0gY2FuZGlk
YXRlOworCisgICAgUG9zaXRpb24gZW5kID0gcmFuZ2UuZW5kUG9zaXRpb24oKTsKKyAgICBjYW5k
aWRhdGUgPSBlbmQudXBzdHJlYW0oKTsKKyAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2Rl
KCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCisgICAgICAgIGVu
ZCA9IGNhbmRpZGF0ZTsKKworICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkg
fHwgc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IFNj
b3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoZnJhbWUpOworCisgICAgUmVu
ZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVy
ZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyID0gZW5kLmRlcHJlY2F0ZWROb2Rl
KCktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFzdGFydFJlbmRlcmVyIHx8ICFlbmRSZW5kZXJlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucyA9
IGZvcmNlQmxhY2tUZXh0ID8gU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgOiBTbmFwc2hv
dE9wdGlvbnNOb25lOworICAgIHZpZXctPnNldFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFy
dC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSZW5kZXJlciwgZW5kLmRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0KCksIFJlbmRlclZpZXc6OlJlcGFpbnROb3RoaW5nKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24oZnJhbWUs
IG9wdGlvbnMpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc3RkOjpt
b3ZlKHNuYXBzaG90KSwgbnVsbHB0cik7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGb3JJbWFnZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUsIEludFJlY3QmIGltYWdlUmVjdCwg
SW50UmVjdCYgZWxlbWVudFJlY3QpCit7CisgICAgU2NvcGVkTm9kZURyYWdTdGF0ZSBlbmFibGVE
cmFnKGZyYW1lLCBub2RlKTsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLnJl
bmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICAvLyBDYWxjdWxhdGUgaW1hZ2UgYW5kIGVsZW1lbnQgbWV0cmljcyBmb3IgdGhlIGNsaWVu
dCwgdGhlbiBjcmVhdGUgZHJhZyBpbWFnZS4KKyAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsK
KyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXIt
PnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7CisKKyAgICBpZiAocGFpbnRpbmdSZWN0
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBlbGVtZW50UmVjdCA9
IHBpeGVsU25hcHBlZEludFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICBpbWFnZVJlY3QgPSBwYWlu
dGluZ1JlY3Q7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0g
c25hcHNob3ROb2RlKGZyYW1lLCBub2RlKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJv
bVNuYXBzaG90KHN0ZDo6bW92ZShzbmFwc2hvdCksICZub2RlKTsKK30KKwogI2lmICFQTEFURk9S
TShNQUMpICYmICghUExBVEZPUk0oV0lOKSB8fCBPUyhXSU5DRSkpCiBEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcmLCBGb250UmVuZGVyaW5nTW9k
ZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IGQ4ZjUyYmNmYWQ0NDI0M2Y4YWNjYjg2
NzBhMDk0YWYxMTNjNGIyNGQuLjljMTkwMDc1MDZmYWIxOTU1MjQ4NTcwMjk2NTlhY2Y2Y2VlNzA3
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC0yNiwxMCArMjYsMTEgQEAK
ICNpZm5kZWYgRHJhZ0ltYWdlX2gKICNkZWZpbmUgRHJhZ0ltYWdlX2gKIAorI2luY2x1ZGUgIkZs
b2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdNb2RlLmgiCisjaW5jbHVkZSAiRnJh
bWVTbmFwc2hvdHRpbmcuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00MSwzOCArNDIsNDcgQEAgdHlwZWRlZiBz
dHJ1Y3QgSEJJVE1BUF9fKiBIQklUTUFQOwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2Ug
Y2Fpcm9fc3VyZmFjZV90OwogI2VuZGlmCiAKLS8vV2UgbmVlZCB0byAjZGVmaW5lIFlPZmZzZXQg
YXMgaXQgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGggV2ViS2l0CisvLyBXZSBuZWVkIHRvICNkZWZp
bmUgWU9mZnNldCBhcyBpdCBuZWVkcyB0byBiZSBzaGFyZWQgd2l0aCBXZWJLaXQKICNkZWZpbmUg
RHJhZ0xhYmVsQm9yZGVyWU9mZnNldCAyCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNs
YXNzIEltYWdlOwotICAgIGNsYXNzIFVSTDsKK2NsYXNzIEZyYW1lOworY2xhc3MgSW1hZ2U7Citj
bGFzcyBJbnRSZWN0OworY2xhc3MgTm9kZTsKK2NsYXNzIFJhbmdlOworY2xhc3MgVVJMOwogCiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIHR5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFn
ZVJlZjsKK3R5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFnZVJlZjsKICNlbGlmIFBM
QVRGT1JNKFdJTikKLSAgICB0eXBlZGVmIEhCSVRNQVAgRHJhZ0ltYWdlUmVmOwordHlwZWRlZiBI
QklUTUFQIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oTklY
KQotICAgIHR5cGVkZWYgY2Fpcm9fc3VyZmFjZV90KiBEcmFnSW1hZ2VSZWY7Cit0eXBlZGVmIGNh
aXJvX3N1cmZhY2VfdCogRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oRUZMKSB8fCBQTEFU
Rk9STShCTEFDS0JFUlJZKQotICAgIHR5cGVkZWYgdm9pZCogRHJhZ0ltYWdlUmVmOwordHlwZWRl
ZiB2b2lkKiBEcmFnSW1hZ2VSZWY7CiAjZW5kaWYKLSAgICAKLSAgICBJbnRTaXplIGRyYWdJbWFn
ZVNpemUoRHJhZ0ltYWdlUmVmKTsKLSAgICAKLSAgICAvL1RoZXNlIGZ1bmN0aW9ucyBzaG91bGQg
YmUgbWVtb3J5IG5ldXRyYWwsIGVnLiBpZiB0aGV5IHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBp
bWFnZSwgCi0gICAgLy90aGV5IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4gIEFzIGEg
Y29yb2xsYXJ5IHRoZXNlIG1ldGhvZHMgZG9uJ3QgZ3VhcmFudGVlCi0gICAgLy90aGUgaW5wdXQg
aW1hZ2UgcmVmIHdpbGwgc3RpbGwgYmUgdmFsaWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gY2FsbGVk
Ci0gICAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYgaW1h
Z2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEludFNpemUmIHNpemUpOwotICAgIERy
YWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSk7
Ci0gICAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VS
ZWYgaW1hZ2UsIGZsb2F0IGRlbHRhKTsKLSAgICAKLSAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKLSAg
ICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5hbWUo
Y29uc3QgU3RyaW5nJik7Ci0gICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmso
VVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJlbmRlcmluZ01vZGUpOwotICAgIHZvaWQg
ZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7CisKK0ludFNpemUgZHJhZ0ltYWdlU2l6ZShE
cmFnSW1hZ2VSZWYpOworCisvLyBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIG1lbW9yeSBuZXV0
cmFsLCBlZy4gaWYgdGhleSByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaW1hZ2UsCisvLyB0aGV5
IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4gQXMgYSBjb3JvbGxhcnkgdGhlc2UgbWV0
aG9kcyBkb24ndCBndWFyYW50ZWUKKy8vIHRoZSBpbnB1dCBpbWFnZSByZWYgd2lsbCBzdGlsbCBi
ZSB2YWxpZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBjYWxsZWQuCitEcmFnSW1hZ2VSZWYgZml0RHJh
Z0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29u
c3QgSW50U2l6ZSYgZHN0U2l6ZSk7CitEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0lt
YWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpOworRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdl
VG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYsIGZsb2F0IGRlbHRhKTsKKworRHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bik7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5h
bWUoY29uc3QgU3RyaW5nJik7CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2Rl
KEZyYW1lJiwgTm9kZSYpOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlv
bihGcmFtZSYsIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7CitEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmLCBSYW5nZSYsIGJvb2wgZm9yY2VCbGFja1RleHQg
PSBmYWxzZSk7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2UoRnJhbWUmLCBO
b2RlJiwgSW50UmVjdCYgaW1hZ2VSZWN0LCBJbnRSZWN0JiBlbGVtZW50UmVjdCk7CitEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBG
b250UmVuZGVyaW5nTW9kZSk7Cit2b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOwog
fQogCiAKLSNlbmRpZiAvLyFEcmFnSW1hZ2VfaAorI2VuZGlmIC8vICFEcmFnSW1hZ2VfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQppbmRleCA1
ZGZmNmYwZmU5YzFkOWYyZGU0YTFlMTE5M2E1ZWZiNDQ2MmQwNzkxLi5kNTYyYTE2MTkyNjVmYTYx
ZTBiNGMxODk2YTA4ZmY1ZmViMTNiNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTbmFwc2hvdHRp
bmdNYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTbmFwc2hvdHRpbmcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvaHRtbGVkaXRpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDQ4NjI4MGU0N2I2YTU1ZDY5M2Y4NGEzNTE0MmRhMzM4ZTJi
Zjc5YmYuLmFmYmY4Y2M2NGUwNTQzZWQyMzViNzI2MTNkZGJhM2E4MDhiOTNmMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtODUsNiArODUsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3Vt
ZW50TWFya2VyQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9y
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckRlbGV0ZUFjdGlvbi5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9FbGVtZW50Lmg+CkBAIC05NSw3ICs5Niw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zy
YW1lU2VsZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU25hcHNob3R0aW5nTWFjLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29u
dmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpAQCAtMTgyMCw3ICsxODIw
LDEyIEBAIHN0YXRpYyBib29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNrT3JEcmFnKE5TRXZlbnQg
KmV2ZW50KQogewogICAgIGlmICghW3NlbGYgX2hhc1NlbGVjdGlvbl0pCiAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gc2VsZWN0aW9uSW1hZ2UoY29yZShbc2Vs
ZiBfZnJhbWVdKSk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVd
KTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TSW1h
Z2UgKmRyYWdJbWFnZSA9IFtbY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCpjb3JlRnJhbWUp
IHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIFtkcmFnSW1hZ2UgX3dlYl9kaXNzb2x2ZVRvRnJh
Y3Rpb246V2ViRHJhZ0ltYWdlQWxwaGFdOwogICAgIHJldHVybiBkcmFnSW1hZ2U7CiB9CkBAIC01
OTY1LDcgKzU5NzAsMTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1
dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKIHsKICAgICBpZiAoIVtz
ZWxmIF9oYXNTZWxlY3Rpb25dKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBzZWxl
Y3Rpb25JbWFnZShjb3JlKFtzZWxmIF9mcmFtZV0pLCBmb3JjZUJsYWNrVGV4dCk7CisKKyAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKKyAgICBpZiAoIWNvcmVGcmFt
ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW1tjcmVhdGVEcmFnSW1hZ2VGb3JT
ZWxlY3Rpb24oKmNvcmVGcmFtZSwgZm9yY2VCbGFja1RleHQpIHJldGFpbl0gYXV0b3JlbGVhc2Vd
OwogfQogCiAtIChOU1JlY3Qpc2VsZWN0aW9uSW1hZ2VSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3Jl
Q2xhc3Nlcy5jcHAKaW5kZXggY2NiZDcxOTAxZTQ1NTc5MDMxYjkwMmJhNTZhODk0ZTZhOGQ3OWNi
My4uNGI3ZjNhNTU4YTMxMDFjOWFkZDM3ZmM5YmY4Yzk3ZDM5YTJiYjViMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdJbWFnZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZUZvbnREYXRh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpA
QCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRyZWVB
c1RleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZUZvbnREYXRhLmg+CiAKICNpbmNsdWRl
IDxpbml0Z3VpZC5oPgogLy8gezNCMEMwRUZGLTQ3OEItNGIwYi04MjkwLUQyMzIxRTA4RTIzRX0K
QEAgLTEyNzksNyArMTI4MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxlbWVu
dDo6cmVuZGVyZWRJbWFnZShIQklUTUFQKiBpbWFnZSkKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCi0gICAgKmltYWdlID0gZnJhbWUtPm5vZGVJbWFnZShtX2VsZW1l
bnQpOworICAgICppbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoKmZyYW1lLCBtX2VsZW1l
bnQpOwogICAgIGlmICghKmltYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217157</attachid>
            <date>2013-11-17 15:30:25 -0800</date>
            <delta_ts>2013-11-17 16:21:08 -0800</delta_ts>
            <desc>v2.2 (missing win exports)</desc>
            <filename>bug-124325-20131117153024.patch</filename>
            <type>text/plain</type>
            <size>67704</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0NGNiZWZkMmZkZjI5
NGE0N2FkNmZiMzk2YTViZDIyMzAwOTdkMS4uZTI5ZmUyMjgwNWFhYzMzZDQ5Y2NmNjhjNTg3Yjg1
YjJkNzE3ZDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTExLTE2ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc25hcHNob3QgY3JlYXRpb24g
bWV0aG9kcyBoYWQgZHVwbGljYXRlZCBjb2RlIGFuZCB3ZXJlIHNwbGl0CisgICAgICAgIGJldHdl
ZW4gRnJhbWUsIERyYWdJbWFnZSwgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9u
c3MuCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBXZWJDb3JlIHNuYXBzaG90IG1ldGhvZHMgaW50
byBGcmFtZVNuYXBzaG90dGluZworICAgICAgICBhbmQgcmVtb3ZlcyBwbGF0Zm9ybSBpbXBsZW1l
bnRhdGlvbnMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgRHJhZ0ltYWdlIG1ldGhvZHMgcmV1
c2Ugc25hcHNob3QgbWV0aG9kcyB3aGVyZSBwb3NzaWJsZS4gSW5zcGVjdG9yCisgICAgICAgIHdp
bGwgYmUgYWJsZSB0byB0YWtlIHNuYXBzaG90cyB3aXRob3V0IHVzaW5nIGRyYWcgaW1hZ2VzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJbWFn
ZV0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpd
KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQ
YWludGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0
ZTo6flNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hv
dEZyYW1lUmVjdCk6IE1vdmUgbW9zdCBidWZmZXIgbG9naWMgdG8gaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90U2VsZWN0aW9uKTogTW92ZWQgZnJvbSBGcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90Tm9kZSk6IE1vdmVkIGZyb20gRnJhbWUuCisgICAgICAgICogcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcDogcmVtb3ZlIGR1cGxpY2F0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5oOiBGaXggYW4gaW5j
b3JyZWN0IHBhcmFtZXRlciBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY29wZWROb2RlRHJhZ1N0YXRlOjpTY29wZWROb2RlRHJhZ1N0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZE5vZGVEcmFnU3RhdGU6On5TY29wZWROb2Rl
RHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dCk6IEJvaWxlcnBsYXRlIGJ1ZmZlciBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0
ZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRG
cmFtZVNlbGVjdGlvblN0YXRlOjp+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6IE1vdmVkIGZyb20gRnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6IE1vdmVkIGZyb20gRnJh
bWVTbmFwc2hvdHRpbmdNYWMuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKTogdXNlIG51bGxwdHIuCisKIDIwMTMtMTEtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ3J5cHRvIG5vIGxvbmdlciB1c2VzIHNlcXVlbmNl
cyBvZiBBcnJheUJ1ZmZlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCAxNDkzYzJiZjFkOGI1YjEwNTQ3
NTFjYTM5NDFjYzZhODllMGIzZDI2Li43ZDM0YWFjYTA0MWZiZWE2NjMzZGQ2MDdjZGQ1OWMxN2Zh
NmI5MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTMgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIENvbnNvbGlk
YXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUlPUy5tbTogdXNlIG5ldyBoZWFkZXIgZmlsZS4KKwogMjAxMy0xMS0wNyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhIFBMQVRGT1JNKElP
UykgZnJvbSBXZWJLaXQgUHJpdmF0ZSBIZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBhYTNmMTM0
NDEyZDI2YmNlNjhiYmVmMDliZTQyYjRlYTlkYjM0MjYzLi40OWM1ZTlmMzgzOTliYjFhZmYyYzFj
NTBjM2E3MmI0Zjg1ZDc2NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTMtMTEtMTMgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIENvbnNvbGlkYXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG5ldyBwbGF0
Zm9ybS1pbmRlcGVuZGVudCBtZXRob2RzIGluc3RlYWQgb2YgTWFjIG1ldGhvZHMuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2Vs
ZWN0aW9uRHJhZ2dpbmdJbWFnZV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZWxlY3Rpb25J
bWFnZUZvcmNpbmdCbGFja1RleHQ6XSk6CisKIDIwMTMtMTEtMTQgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWltcGxlbWVudCBnZXREYXlCb3VuZGFy
aWVzIHVzaW5nIE5TQ2FsZW5kYXIgb24gMTAuOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDY4N2QyZTU0
YmQ0YjZhNjBjYzhhMDFkNDA0ZTgyNmZhOTg0NTA3M2YuLjY5MWFjMGY2NGQ5NjJjMzI4MDE4MGU0
YzRmYmQ5Mjg5OWZkZDhiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
My0xMS0xNCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAg
ICAgQ29uc29saWRhdGUgdmFyaW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVDbGFz
c2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UpOiB1c2UgY3JlYXRl
RHJhZ0ltYWdlRm9yTm9kZS4KKwogMjAxMy0xMS0xNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIFdpbiBidWlsZCBmaXg7IHNldEN1cnJlbnRU
aW1lKCkgbm8gbG9uZ2VyIHRha2VzIGFuIGV4Y2VwdGlvbiBwYXJhbWV0ZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDQ3MGRmMjQxZWZlODk2M2NjNmY0Nzc1NjJkNGM1MDU2MzhiZjc1OGMuLjcx
Y2EzMjYwZTNkM2EwOTk1YmZjZGZmYzY0MTQxY2Q5Zjk1ZjNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNzI2LDYgKzE3MjYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCiAgICAgcGFnZS9GcmFtZS5jcHAKICAgICBwYWdlL0ZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlci5jcHAKKyAgICBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAogICAg
IHBhZ2UvRnJhbWVUcmVlLmNwcAogICAgIHBhZ2UvRnJhbWVWaWV3LmNwcAogICAgIHBhZ2UvR2Vz
dHVyZVRhcEhpZ2hsaWdodGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
ZmQ1MzI3ODEyNGM5ZDhhZGM1ZjMyNDM0YjA1NWRhM2VhZDBhZGNhYS4uZWVmYjkzYjY1NjU3OTUy
ZGFjODI2NWNmYTEyYzhiYWZiZDA2Mjc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC00MTE4LDYgKzQxMTgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDE0MjQyYjMyMTJmOWY0YWUxZDhiM2QzNjIyNTUyM2VlNzgxNjgyMWUuLjhjZGQxZmY2
ZTM0YmYzNmZiOWE2NDhlODY4YjI0NzBjZmJlNzBlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC00MjcsNyArNDI3LDYgQEAgX19aTjdXZWJDb3JlMTRjb29raWVzRW5hYmxlZEVSS05TXzIxTmV0
d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43V2ViQ29yZTE0ZGVjb2RlSG9z
dE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRlbmNvZGVIb3N0TmFtZUVQOE5TU3RyaW5n
CiBfX1pON1dlYkNvcmUxNGVuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCi1fX1pON1dlYkNvcmUxNHNlbGVjdGlvbklt
YWdlRVBOU181RnJhbWVFYgogX19aTjdXZWJDb3JlMTRzZXRNZXRhZGF0YVVSTEVSTjNXVEY2U3Ry
aW5nRVJLUzFfUzRfCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVmbGlwWUV2CiBfX1pO
N1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVzY2FsZUVkCkBAIC04ODcsNiArODg2LDcgQEAgX19a
TjdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2VDMkV2CiBfX1pON1dlYkNvcmUy
N0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2Rl
RUVFYlJLTlMxXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jazE0c2V0T3JpZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRh
dGlvbkRhdGFFRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFF
dgorX19aTjdXZWJDb3JlMjdjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb25FUk5TXzVGcmFtZUVi
CiBfX1pON1dlYkNvcmUyN3Byb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbEVSS05TXzNVUkxFUzJf
CiBfX1pON1dlYkNvcmUyN3N0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlc0VQRnZ2RQogX19aTjdX
ZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFTjNXVEY3
UGFzc1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQpAQCAtMjAzMiw3ICsyMDMyLDYgQEAg
X19aTjdXZWJDb3JlMzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CiBf
X1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZ0V2
CiBfX1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGlu
Z0V2CiBfX1pON1dlYkNvcmU0NmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9t
YXRpY2FsbHlFdgotX19aTjdXZWJDb3JlNUZyYW1lOW5vZGVJbWFnZUVQTlNfNE5vZGVFCiBfX1pO
N1dlYkNvcmU2Q3Vyc29yOGZyb21UeXBlRU5TMF80VHlwZUUKIF9fWk43V2ViQ29yZTZDdXJzb3JD
MUVQTlNfNUltYWdlRVJLTlNfOEludFBvaW50RQogX19aTjdXZWJDb3JlNkN1cnNvckMxRVJLUzBf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCA1MWU5MThlNzk0ODkyMmNmZDIyMDMxM2E1ZDFhNGJiOTFkYzA5YTBhLi4wMzFiNmNmZTk2YmY1
ODk4NWRlYzNlNTk2OTQ2M2U0YjRlZGI1OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTY5ODMsNiArNjk4Myw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZvY3VzQ29udHJvbGxlci5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGFnZVxHcm91cFNldHRpbmdzLmNwcCIgLz4KQEAgLTE4ODEyLDYgKzE4ODEzLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRm9jdXNEaXJlY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNob3R0aW5nLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhZ2VcR3JvdXBTZXR0aW5ncy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGEzOTVkYWI5
YjYzNjI2N2MxYThhNmJhYmNjNWExYzA2MmVjZjUyY2MuLjExYjJjNTRhNTMxZjExMjUzMDdiMjE4
MDAyOTg2NWVmMGYxOTljMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcxNyw2ICs3MTcsOSBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVNuYXBzaG90dGluZy5jcHAiPgorICAgICAg
PEZpbHRlcj5wYWdlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03NjE3LDYgKzc2MjAsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCI+CiAgICAgICA8
RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuaCI+CisgICAgICA8RmlsdGVyPnBhZ2U8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
Z2VcRnJhbWVUcmVlLmgiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMDRiZWQwN2VmYWM1ODkyOGU1YmEwMTY5NjY0ZTMxYmYwYThiMzlkZS4uMWZm
ZjIxNzI5OTNiYjU3OTVlMzdiOGNkYWVhYjYwYjNkNWNhZGEyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjAwNSw3ICsyMDA1
LDYgQEAKIAkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODMwOTdBM0Y1MzAw
QjkwNTBBIC8qIEZyYW1lVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1QkYwMjJFMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyOTA5NzQ4
MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwICovOyB9OwogCQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1QkYwMjQ1MDk3NDgxOTAwMEM0MzE5
NiAvKiBGcmFtZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAqLzsgfTsKIAkJ
NjVDOTdBRjMwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNv
bmZpZy5oICovOyB9OwogCQk2NUNCRkVGOTA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY3
MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovOyB9OwogCQk2NUNCRkVGQTA5NzRG
NjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIyMDYs
OCArMjIwNSw2IEBACiAJCTdDNTM0M0ZDMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M1MzQzRkExN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAgKi87IH07CiAJCTdDNTM0M0ZEMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNTM0M0ZCMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aCAqLzsgfTsKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlz
dC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
QzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9Owot
CQk3Q0UzMERBOTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi87IH07Ci0JCTdDRTMwREFB
MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0Ux
IC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8qIENTU1ZhbHVl
S2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdv
cmRzLmggKi87IH07CiAJCTdFMTJFOTBGMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5oICovOyB9OwogCQk3RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAgKi87IH07CkBAIC01MjQ0LDYgKzUyNDEsOCBAQAogCQlDM0NGMTdBNTE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0Ey
MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovOyB9Owog
CQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMzE1
QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzRDRDYyOUExODM4Mzc2NjAw
N0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5jcHAgKi87IH07CisJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYx
MjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdy
b3VwU2V0dGluZ3MuY3BwICovOyB9OwogCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3Jv
dXBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MjBGRjQyNzI5
MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFn
ZU5hbWVzcGFjZS5jcHAgKi87IH07CkBAIC04NzQwLDcgKzg3MzksNiBAQAogCQk2NUE2NDBGMDA1
MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVCRjAy
MjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVCRjAy
M0MwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEZyYW1lTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVDQkZFRjcw
OTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnJhbWVWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04OTY4LDggKzg5NjYsNiBAQAogCQk3QzYxMzZGODE3MTBDMzUyMDBGRjRBNTcgLyog
SW5GaWxlc1BhcnNlci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJbkZpbGVzUGFyc2VyLnBtOyBwYXRo
ID0gc2NyaXB0cy9JbkZpbGVzUGFyc2VyLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzYxMzZGOTE3MTBDMzUyMDBGRjRBNTcgLyogU3RhdGljU3RyaW5nLnBtICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsg
bmFtZSA9IFN0YXRpY1N0cmluZy5wbTsgcGF0aCA9IHNjcmlwdHMvU3RhdGljU3RyaW5nLnBtOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyog
SUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJRE5TY3JpcHRX
aGl0ZUxpc3QudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZ01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25h
cHNob3R0aW5nTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lU25h
cHNob3R0aW5nTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMTJFOTBEMTVG
QTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDsgcGF0aCA9
IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21G
aWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAwMTI3RjM0
MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
Mjc0LDYgKzEyMjcwLDggQEAKIAkJQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRUYXJnZXRPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDM0NGMTdBMjE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0
Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVNu
YXBzaG90dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5
RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVz
cGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFt
ZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjA2LDYgKzE1NjA0
LDggQEAKIAkJCQk2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLywKIAkJCQk5
NzRBODYyMDE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCAq
LywKIAkJCQk5NzRBODYyMTE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyLmggKi8sCisJCQkJQzRDRDYyOTgxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0
aW5nLmNwcCAqLywKKwkJCQlDNENENjI5OTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hv
dHRpbmcuaCAqLywKIAkJCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNw
cCAqLywKIAkJCQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8sCiAJ
CQkJNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCkBAIC0xNjUy
MCw5ICsxNjUyMCw2IEBACiAJCQkJQUJBRjIyMDcwQzAzQjFDNzAwQjBCQ0YwIC8qIENocm9tZU1h
Yy5tbSAqLywKIAkJCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJN
YWMubW0gKi8sCiAJCQkJOTNDMDlBN0UwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1h
Yy5tbSAqLywKLQkJCQk2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gKi8s
Ci0JCQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmgg
Ki8sCi0JCQkJN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tICovLAogCQkJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLywK
IAkJCQlFMUMyRjI0ODE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0gKi8sCiAJCQkJ
RjU4Nzg1NEMwMkRFMzc1OTAxRUE0MTIyIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCAqLywKQEAgLTIy
MTIxLDYgKzIyMTE4LDcgQEAKIAkJCQkxQTU2OUNGODBEN0UyQjgyMDA3QzM5ODMgLyogY19jbGFz
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkEwRDdFMkI4MjAwN0MzOTgzIC8qIGNfaW5z
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZDMEQ3RTJCODIwMDdDMzk4MyAvKiBj
X3J1bnRpbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAv
KiBGcmFtZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkUwRDdFMkI4
MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMUEwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNjRCNENDMENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmggaW4gSGVhZGVycyAqLywK
QEAgLTIyOTc5LDcgKzIyOTc3LDYgQEAKIAkJCQk2MjhEMjE0RTEyMTMxRUY0MDA1NURDRkMgLyog
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNzAxODBG
Mjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OUUwRTA5OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAot
CQkJCTdDRTMwREFBMTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVBQjAxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERp
cmVjdG9yeURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjU5LDEwICsyNjI1Niw4IEBA
CiAJCQkJOTMyRTE2MDkwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRl
TWFjaGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkJBNzY2RTE2NjQyN0E4MDA1QkU1RDEg
LyogRnJhbWVMb2FkUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NUJGMDI0NTA5NzQ4
MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwRDA5
OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEE4Qzk2RUIwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJN0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5n
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQUQxN0QxNDE1MTAwN0ZGODQyIC8qIEpT
UlRDRGF0YUNoYW5uZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUEyMTQ4NDA5N0Ez
RjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzkxQTEw
MTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3NzY4LDYgKzI3NzYzLDcgQEAKIAkJCQk1MUUwQkIzOTBEQTVBQ0I2MDBBOUU0MTcgLyogU3Rv
cmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzI3N0U1MjE3RDAxOENDMDAxNTUzNEQg
LyogSlNNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MEQwRTgyMEZG
NDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUM0Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDNTVFMzhDMDEwMDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMDlEQjQxNkFGNUY2QzAwODUzOEU3IC8q
IFN0b3JhZ2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEwMkQ5NTBGRDlBQTJE
MDBGQUZGMDQgLyogU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCBjYzAzNjU1MjZlMzE2ZTA1ZDViMTViYjc0NDRj
M2JiMmJjZmE5MDUwLi5hNmFjMzk5YzBlNzc2NDM1OWQ1YTkyZjNmZWVlY2JhYzBmMjViY2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9y
dCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2YXRlLmgiCiAjaW1wb3J0ICJE
T01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKICNpbXBvcnQgIkZvbnQu
aCIKICNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgog
I2ltcG9ydCAiSFRNTEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAi
SFRNTFBhcnNlcklkaW9tcy5oIgpAQCAtMjg3LDkgKzI4Nyw5IEBAIGlkIDxET01FdmVudFRhcmdl
dD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKICAgICAvLyBGSVhNRTog
Q291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6Ok5vZGUgYW5kIGF1dG9nZW5l
cmF0ZT8KICAgICBXZWJDb3JlOjpOb2RlKiBub2RlID0gY29yZShzZWxmKTsKICAgICBXZWJDb3Jl
OjpGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFt
ZSkKKyAgICBpZiAoIWZyYW1lIHx8ICFub2RlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBmcmFtZS0+bm9kZUltYWdlKG5vZGUpLmdldCgpOworICAgIHJldHVybiBbW2NyZWF0ZURy
YWdJbWFnZUZvck5vZGUoKmZyYW1lLCAqbm9kZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAK
IC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKQEAgLTMzMiwxMCArMzMyLDEwIEBAIGlkIDxET01FdmVu
dFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKIHsKICAgICBX
ZWJDb3JlOjpSYW5nZSogcmFuZ2UgPSBjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSA9IHJhbmdlLT5vd25lckRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQor
ICAgIGlmICghZnJhbWUgfHwgIXJhbmdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFdlYkNvcmU6OnJhbmdlSW1hZ2UoZnJhbWUsIHJhbmdlLCBmb3JjZUJsYWNrVGV4dCk7Cisg
ICAgcmV0dXJuIFtbY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoKmZyYW1lLCAqcmFuZ2UsIGZvcmNl
QmxhY2tUZXh0KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKXRleHRS
ZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAppbmRleCA5ZDJlMjc1MmZkZjJiN2M2NjQyYTI0
MjRmODgwNjNlYzhhNzFjN2M4Li4zMDdmY2MxNWY3ZDA4MDhmY2RlZDY0OWEyNzJlYmMwY2I2ODAz
NTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcApAQCAtMjc3LDEwICsyNzcsMTEgQEAgRHJh
Z0ltYWdlUmVmIENsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBsb2NhdGlvbikg
Y29uc3QKIAogICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKICAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IG1fZHJhZ0ltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZyYW1lLT5ub2RlSW1hZ2UobV9kcmFnSW1hZ2VFbGVtZW50LmdldCgpKTsK
KyAgICAgICAgICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgKm1fZHJh
Z0ltYWdlRWxlbWVudCk7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7IC8vIFdlIGRvIG5vdCBoYXZl
IGVub3VnaCBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYSBkcmFnIGltYWdlLCB1c2UgdGhlIGRlZmF1
bHQgaWNvbi4KKyAgICAvLyBXZSBkbyBub3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gY3Jl
YXRlIGEgZHJhZyBpbWFnZSwgdXNlIHRoZSBkZWZhdWx0IGljb24uCisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2Fy
ZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRNYWMubW0KaW5kZXggNzZjYTZm
Y2EzZTQyNDA3YjVmOGU3YjM1ZTY1ODczN2MyMTEzZThmYi4uYTA5YjMwYTRhNjY4M2JhMWZkN2Zi
NDVmYTg5YjJkYmVjMDBjMzI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBi
b2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpbXBvcnQgIkNhY2hlZEltYWdlLmgiCiAjaW1wb3J0ICJFbGVtZW50
LmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgorI2ltcG9ydCAiRHJhZ0ltYWdl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsMTYgKzM3LDE2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIENsaXBib2FyZDo6ZHJhZ0ltYWdlIGluIENsaXBib2FyZC5jcHAgZG9l
cyBub3QgaGFuZGxlIGNvcnJlY3RseSwgc28gbXVzdCByZXNvbHZlIHRoYXQgYXMgd2VsbC4KIERy
YWdJbWFnZVJlZiBDbGlwYm9hcmQ6OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgbG9jYXRpb24p
IGNvbnN0CiB7Ci0gICAgTlNJbWFnZSAqcmVzdWx0ID0gbmlsOworICAgIERyYWdJbWFnZVJlZiBy
ZXN1bHQgPSBuaWw7CiAgICAgaWYgKG1fZHJhZ0ltYWdlRWxlbWVudCkgewogICAgICAgICBpZiAo
RnJhbWUqIGZyYW1lID0gbV9kcmFnSW1hZ2VFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpIHsK
LSAgICAgICAgICAgIE5TUmVjdCBpbWFnZVJlY3Q7Ci0gICAgICAgICAgICBOU1JlY3QgZWxlbWVu
dFJlY3Q7Ci0gICAgICAgICAgICByZXN1bHQgPSBzbmFwc2hvdERyYWdJbWFnZShmcmFtZSwgbV9k
cmFnSW1hZ2VFbGVtZW50LmdldCgpLCAmaW1hZ2VSZWN0LCAmZWxlbWVudFJlY3QpOworICAgICAg
ICAgICAgSW50UmVjdCBpbWFnZVJlY3Q7CisgICAgICAgICAgICBJbnRSZWN0IGVsZW1lbnRSZWN0
OworICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2UoKmZyYW1lLCAq
bV9kcmFnSW1hZ2VFbGVtZW50LCBpbWFnZVJlY3QsIGVsZW1lbnRSZWN0KTsKICAgICAgICAgICAg
IC8vIENsaWVudCBzcGVjaWZpZXMgcG9pbnQgcmVsYXRpdmUgdG8gZWxlbWVudCwgbm90IHRoZSB3
aG9sZSBpbWFnZSwgd2hpY2ggbWF5IGluY2x1ZGUgY2hpbGQKICAgICAgICAgICAgIC8vIGxheWVy
cyBzcHJlYWQgb3V0IGFsbCBvdmVyIHRoZSBwbGFjZS4KLSAgICAgICAgICAgIGxvY2F0aW9uLnNl
dFgoZWxlbWVudFJlY3Qub3JpZ2luLnggLSBpbWFnZVJlY3Qub3JpZ2luLnggKyBtX2RyYWdMb2Nh
dGlvbi54KCkpOwotICAgICAgICAgICAgbG9jYXRpb24uc2V0WShpbWFnZVJlY3Quc2l6ZS5oZWln
aHQgLSAoZWxlbWVudFJlY3Qub3JpZ2luLnkgLSBpbWFnZVJlY3Qub3JpZ2luLnkgKyBtX2RyYWdM
b2NhdGlvbi55KCkpKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNldFgoZWxlbWVudFJlY3QueCgp
IC0gaW1hZ2VSZWN0LngoKSArIG1fZHJhZ0xvY2F0aW9uLngoKSk7CisgICAgICAgICAgICBsb2Nh
dGlvbi5zZXRZKGltYWdlUmVjdC5oZWlnaHQoKSAtIChlbGVtZW50UmVjdC55KCkgLSBpbWFnZVJl
Y3QueSgpICsgbV9kcmFnTG9jYXRpb24ueSgpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIHJlc3VsdCA9IG1fZHJhZ0ltYWdlLT5pbWFnZSgpLT5n
ZXROU0ltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDdl
YjI0OWRmN2ZmOWI1NWE4ZWNlNWFlN2ZmNDcyZTBjZDdiYWMyNDcuLmY4NjZkY2ZkZmJiMjdjZWM1
NjU5NjVjY2JjMzVjZDU3ODI5OTg2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNs
dWRlICJEcmFnQ2xpZW50LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKKyNpbmNsdWRlICJEcmFn
SW1hZ2UuaCIKICNpbmNsdWRlICJEcmFnU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkRyYWdTdGF0ZS5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtNzgwLDcgKzc4MSw3IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFn
T3BlcmF0aW9uCiAgICAgICAgIH0KICAgICAgICAgbV9jbGllbnQud2lsbFBlcmZvcm1EcmFnU291
cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGNsaXBib2Fy
ZCk7CiAgICAgICAgIGlmICghZHJhZ0ltYWdlKSB7Ci0gICAgICAgICAgICBkcmFnSW1hZ2UgPSBk
aXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oc3JjLmRyYWdJbWFnZUZvclNlbGVjdGlvbigpLCBE
cmFnSW1hZ2VBbHBoYSk7CisgICAgICAgICAgICBkcmFnSW1hZ2UgPSBkaXNzb2x2ZURyYWdJbWFn
ZVRvRnJhY3Rpb24oY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKHNyYyksIERyYWdJbWFnZUFs
cGhhKTsKICAgICAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhzcmMp
OwogICAgICAgICAgICAgbV9kcmFnT2Zmc2V0ID0gSW50UG9pbnQoZHJhZ09yaWdpbi54KCkgLSBk
cmFnTG9jLngoKSwgZHJhZ09yaWdpbi55KCkgLSBkcmFnTG9jLnkoKSk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggNjI0MWVlM2M5NTJiNDYxNTVjMjkyMDZiMDhmOTAxZTAwZTUy
ZjU4MC4uNWMwMzYxMWU4Yjc1MWY5MTZkZTJlZDRiNzI2YjYzNjFiNzJmYWExNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTk2NiwxMDggKzk2Niw0IEBAIGJvb2wgRnJhbWU6OmlzVVJMQWxsb3dl
ZChjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmICFQTEFU
Rk9STShNQUMpICYmICFQTEFURk9STShXSU4pCi1zdHJ1Y3QgU2NvcGVkRnJhbWVQYWludGluZ1N0
YXRlIHsKLSAgICBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoRnJhbWUqIGZyYW1lLCBOb2RlKiBu
b2RlKQotICAgICAgICA6IGZyYW1lKGZyYW1lKQotICAgICAgICAsIG5vZGUobm9kZSkKLSAgICAg
ICAgLCBwYWludEJlaGF2aW9yKGZyYW1lLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKSkKLSAgICAg
ICAgLCBiYWNrZ3JvdW5kQ29sb3IoZnJhbWUtPnZpZXcoKS0+YmFzZUJhY2tncm91bmRDb2xvcigp
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPnJlbmRlcmVyKCkpOwotICAg
ICAgICBpZiAobm9kZSkKLSAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURyYWdT
dGF0ZSh0cnVlKTsKLSAgICB9Ci0KLSAgICB+U2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKCkKLSAg
ICB7Ci0gICAgICAgIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBu
b2RlLT5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOwotICAgICAgICBmcmFtZS0+
dmlldygpLT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwotICAgICAgICBmcmFtZS0+
dmlldygpLT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7Ci0gICAgICAg
IGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcoMCk7Ci0gICAgfQotCi0gICAgRnJhbWUqIGZy
YW1lOwotICAgIE5vZGUqIG5vZGU7Ci0gICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOwot
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKLX07Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6bm9k
ZUltYWdlKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBz
dGF0ZSh0aGlzLCBub2RlKTsKLQotICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihzdGF0ZS5w
YWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0K
LSAgICAvLyBXaGVuIGdlbmVyYXRpbmcgdGhlIGRyYWcgaW1hZ2UgZm9yIGFuIGVsZW1lbnQsIGln
bm9yZSB0aGUgZG9jdW1lbnQgYmFja2dyb3VuZC4KLSAgICBtX3ZpZXctPnNldEJhc2VCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7
Ci0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUgc3BlY2lhbCBzdWIt
dHJlZSBkcmF3aW5nIG1vZGUuCi0KLSAgICAvLyBEb2N1bWVudDo6dXBkYXRlTGF5b3V0IG1heSBo
YXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIHJlbmRlcmVyLgotICAgIGF1dG8gcmVuZGVyZXIg
PSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgSW50UmVjdCBwYWlu
dGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0
KHRvcExldmVsUmVjdCkpOwotCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOwotICAg
IGlmIChtX3BhZ2UpCi0gICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gbV9wYWdlLT5kZXZpY2VT
Y2FsZUZhY3RvcigpOwotICAgIHBhaW50aW5nUmVjdC5zZXRXaWR0aChwYWludGluZ1JlY3Qud2lk
dGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBwYWludGluZ1JlY3Quc2V0SGVpZ2h0KHBh
aW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLQotICAgIE93blB0cjxJ
bWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUo
KSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKLSAgICBpZiAoIWJ1
ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRy
YW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOwotICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QubWF4WCgpLCBw
YWludGluZ1JlY3QubWF4WSgpKSk7Ci0KLSAgICBtX3ZpZXctPnBhaW50Q29udGVudHMoYnVmZmVy
LT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
YnVmZmVyLT5jb3B5SW1hZ2UoKTsKLQotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBv
cmllbnRhdGlvbkRlc2NyaXB0aW9uKHJlbmRlcmVyLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbigpKTsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIG9yaWVudGF0
aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCku
aW1hZ2VPcmllbnRhdGlvbigpKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UoaW1hZ2UuZ2V0KCksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwotfQotCi1EcmFn
SW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCi17Ci0gICAgaWYgKCFzZWxl
Y3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgU2NvcGVk
RnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKHRoaXMsIDApOwotICAgIG1fdmlldy0+c2V0UGFpbnRC
ZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSk7Ci0gICAgbV9kb2MtPnVwZGF0ZUxh
eW91dCgpOwotCi0gICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHNl
bGVjdGlvbigpLmJvdW5kcygpKTsKLQotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsK
LSAgICBpZiAobV9wYWdlKQotICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9IG1fcGFnZS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBwYWludGluZ1JlY3Quc2V0V2lkdGgocGFpbnRpbmdSZWN0
LndpZHRoKCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcGFpbnRpbmdSZWN0LnNldEhlaWdo
dChwYWludGluZ1JlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5z
aXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7Ci0gICAgaWYg
KCFidWZmZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFu
c2xhdGUoLXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKLSAgICBidWZmZXIt
PmNvbnRleHQoKS0+Y2xpcChGbG9hdFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0Lm1heFgoKSwgcGFp
bnRpbmdSZWN0Lm1heFkoKSkpOwotCi0gICAgbV92aWV3LT5wYWludENvbnRlbnRzKGJ1ZmZlci0+
Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOwotCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJ1
ZmZlci0+Y29weUltYWdlKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShp
bWFnZS5nZXQoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwotfQotCi0jZW5kaWYK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDg0MDdlOWUyYmNm
M2VlZmVkZGJmMDUzMWJlNmNlOTI3OTQ1NzI3N2MuLjVmMTg2NmZlMjAyZmNmZWE2NDQyYzBiYmVm
ODIwZjU2ZWQyM2U3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNkZWZp
bmUgRnJhbWVfaAogCiAjaW5jbHVkZSAiQWRqdXN0Vmlld1NpemVPck5vdC5oIgotI2luY2x1ZGUg
IkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVU
cmVlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtNTgsMTEgKzU3LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBFZGl0b3I7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBj
bGFzcyBFdmVudEhhbmRsZXI7CisgICAgY2xhc3MgRmxvYXRTaXplOwogICAgIGNsYXNzIEZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlcjsKICAgICBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKICAgICBjbGFz
cyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogICAgIGNsYXNz
IEhUTUxUYWJsZUNlbGxFbGVtZW50OworICAgIGNsYXNzIEltYWdlQnVmZmVyOwogICAgIGNsYXNz
IEludFJlY3Q7CiAgICAgY2xhc3MgTWFpbkZyYW1lOwogICAgIGNsYXNzIE5vZGU7CkBAIC0xNzcs
OSArMTc4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0cmluZyBkaXNwbGF5
U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgICAg
IERyYWdJbWFnZVJlZiBub2RlSW1hZ2UoTm9kZSopOwotICAgICAgICBEcmFnSW1hZ2VSZWYgZHJh
Z0ltYWdlRm9yU2VsZWN0aW9uKCk7Ci0KICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KTsKICAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50QXRQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpOwogICAg
ICAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFt
ZVBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmNiMzBjZGU0OWNlOTEzOWYwMzk4YTZhN2Y5YTU3YTE1ZGU0ZmUxYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCkBAIC0w
LDAgKzEsMTM0IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdh
c2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJGcmFtZVNuYXBzaG90dGlu
Zy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1
ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNjb3BlZEZyYW1lUGFpbnRpbmdT
dGF0ZSB7CisgICAgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKEZyYW1lJiBmcmFtZSwgTm9kZSog
bm9kZSkKKyAgICA6IGZyYW1lKGZyYW1lKQorICAgICwgbm9kZShub2RlKQorICAgICwgcGFpbnRC
ZWhhdmlvcihmcmFtZS52aWV3KCktPnBhaW50QmVoYXZpb3IoKSkKKyAgICAsIGJhY2tncm91bmRD
b2xvcihmcmFtZS52aWV3KCktPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKSkKKyAgICB7CisgICAgICAg
IEFTU0VSVCghbm9kZSB8fCBub2RlLT5yZW5kZXJlcigpKTsKKyAgICB9CisKKyAgICB+U2NvcGVk
RnJhbWVQYWludGluZ1N0YXRlKCkKKyAgICB7CisgICAgICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFp
bnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKKyAgICAgICAgZnJhbWUudmlldygpLT5zZXRCYXNl
QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7CisgICAgICAgIGZyYW1lLnZpZXcoKS0+
c2V0Tm9kZVRvRHJhdyhudWxscHRyKTsKKyAgICB9CisKKyAgICBGcmFtZSYgZnJhbWU7CisgICAg
Tm9kZSogbm9kZTsKKyAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CisgICAgQ29sb3Ig
YmFja2dyb3VuZENvbG9yOworfTsKKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFw
c2hvdEZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgU25h
cHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgRnJhbWVWaWV3OjpTZWxlY3Rpb25JblNuYXBz
aG90IHNob3VsZEluY2x1ZGVTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247
CisgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxp
Z2h0aW5nKQorICAgICAgICBzaG91bGRJbmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpFeGNs
dWRlU2VsZWN0aW9uOworCisgICAgRnJhbWVWaWV3OjpDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hv
dCBjb29yZGluYXRlU3BhY2UgPSBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXM7CisgICAg
aWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlcykKKyAgICAgICAg
Y29vcmRpbmF0ZVNwYWNlID0gRnJhbWVWaWV3OjpWaWV3Q29vcmRpbmF0ZXM7CisKKyAgICBQYWlu
dEJlaGF2aW9yIHRleHRQYWludEJlaGF2aW9yID0gMDsKKyAgICBpZiAob3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQorICAgICAgICB0ZXh0UGFpbnRCZWhhdmlvciA9IFBh
aW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dDsKKworICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRp
bmdTdGF0ZSBzdGF0ZShmcmFtZSwgbnVsbHB0cik7CisKKyAgICAvLyBPdGhlciBwYWludCBiZWhh
dmlvcnMgYXJlIHNldCBieSBwYWludENvbnRlbnRzRm9yU25hcHNob3QuCisgICAgUGFpbnRCZWhh
dmlvciBleGlzdGluZ0JlaGF2aW9yID0gZnJhbWUudmlldygpLT5wYWludEJlaGF2aW9yKCk7Cisg
ICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKGV4aXN0aW5nQmVoYXZpb3IgfCB0ZXh0
UGFpbnRCZWhhdmlvcik7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisK
KyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGZyYW1lLnBhZ2UoKSA/IDEgOiBmcmFtZS5w
YWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgSW50UmVjdCB1c2VkUmVjdChpbWFnZVJl
Y3QpOworICAgIHVzZWRSZWN0LnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHVzZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0
b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpLmxlYWtQdHIoKSk7CisgICAgaWYgKCFidWZmZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUo
LXVzZWRSZWN0LngoKSwgLXVzZWRSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNs
aXAoRmxvYXRSZWN0KDAsIDAsIHVzZWRSZWN0Lm1heFgoKSwgdXNlZFJlY3QubWF4WSgpKSk7CisK
KyAgICBmcmFtZS52aWV3KCktPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChidWZmZXItPmNvbnRl
eHQoKSwgdXNlZFJlY3QsIHNob3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7
CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworI2lmICFQTEFURk9STShXSU4pCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgU25hcHNo
b3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgaWYgKCFmcmFtZS5zZWxlY3Rpb24oKS5pc1Jhbmdl
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRm9yY2Ugc2VsZWN0aW9uIGhp
Z2hsaWdodGluZyB0byBiZSBpbmNsdWRlZC4KKyAgICBvcHRpb25zICY9IH5TbmFwc2hvdE9wdGlv
bnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nOworICAgIEludFJlY3Qgc2VsZWN0aW9uUmVj
dCA9IGVuY2xvc2luZ0ludFJlY3QoZnJhbWUuc2VsZWN0aW9uKCkuYm91bmRzKCkpOworICAgIHJl
dHVybiBzbmFwc2hvdEZyYW1lUmVjdChmcmFtZSwgc2VsZWN0aW9uUmVjdCwgb3B0aW9ucyk7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiBmcmFt
ZSwgTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUucmVuZGVyZXIoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBjb25zdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgc3RhdGUo
ZnJhbWUsICZub2RlKTsKKworICAgIGZyYW1lLnZpZXcoKS0+c2V0QmFzZUJhY2tncm91bmRDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91
dCgpOworICAgIGZyYW1lLnZpZXcoKS0+c2V0Tm9kZVRvRHJhdygmbm9kZSk7CisKKyAgICAvLyBE
b2N1bWVudDo6dXBkYXRlTGF5b3V0IG1heSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIHJl
bmRlcmVyLgorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7Cisg
ICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBMYXlvdXRS
ZWN0IHRvcExldmVsUmVjdDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBl
ZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7CisgICAg
cmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBwYWludGluZ1JlY3QpOworfQorI2VuZGlm
IC8vICFQTEFURk9STShXSU4pCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzg5M2JkNDBlNjgwNjYwMTc5
ZGNhZDRiNTJlNjAwYzQyNTkzYjUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworICogSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZyYW1lU25hcHNob3R0
aW5nX2gKKyNkZWZpbmUgRnJhbWVTbmFwc2hvdHRpbmdfaAorCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNzIEludFJl
Y3Q7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKK2NsYXNzIE5vZGU7CisKK2VudW0geworICAgIFNuYXBz
aG90T3B0aW9uc05vbmUgPSAwLAorICAgIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25I
aWdobGlnaHRpbmcgPSAxIDw8IDAsCisgICAgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0
ZXMgPSAxIDw8IDEsCisgICAgU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgPSAxIDw8IDIs
Cit9OwordHlwZWRlZiB1aW50MzJfdCBTbmFwc2hvdE9wdGlvbnM7CisKK3N0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0Jiwg
U25hcHNob3RPcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZSk7CitzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYsIE5vZGUmKTsKK3N0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmLCBTbmFwc2hvdE9wdGlvbnMg
PSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRnJhbWVTbmFwc2hvdHRpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRnJhbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmYjFmOTFiY2JkNmYwNjI3YTYxZDFlOTRk
ZTliNzE0YThiNTQzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGcmFtZS5oIgotCi0jaW1wb3J0ICJE
b2N1bWVudC5oIgotI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbXBvcnQgIkZyYW1l
U2VsZWN0aW9uLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgotI2ltcG9ydCAi
RnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1EcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewotICAg
IG1fZG9jLT51cGRhdGVMYXlvdXQoKTsgLy8gZm9yY2VzIHN0eWxlIHJlY2FsYwotCi0gICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKLSAg
ICBOU1JlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFp
bnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKLQotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJh
dyhub2RlKTsgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0gICAgTlNJ
bWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdCh0aGlzLCBwYWludGluZ1JlY3QpOwotICAgIG1f
dmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLURyYWdJ
bWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoIXNlbGVj
dGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gc2VsZWN0
aW9uSW1hZ2UodGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiZmFiNjdlNzY1ODE0YWU2Y2JjOTAxYmFkNDRhZmQxNTNmODYyYTIyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGcmFtZVNuYXBzaG90dGluZ01hY19oCi0jZGVm
aW5lIEZyYW1lU25hcHNob3R0aW5nTWFjX2gKLQotT0JKQ19DTEFTUyBOU0ltYWdlOwotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZyYW1lOwotY2xhc3MgUmFuZ2U7Ci1jbGFzcyBOb2Rl
OwotCi1OU0ltYWdlKiBzZWxlY3Rpb25JbWFnZShGcmFtZSosIGJvb2wgZm9yY2VCbGFja1RleHQg
PSBmYWxzZSk7Ci1OU0ltYWdlKiByYW5nZUltYWdlKEZyYW1lKiwgUmFuZ2UqLCBib29sIGZvcmNl
QmxhY2tUZXh0ID0gZmFsc2UpOwotTlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoRnJhbWUqLCBO
b2RlKiwgTlNSZWN0KiBpbWFnZVJlY3QsIE5TUmVjdCogZWxlbWVudFJlY3QpOwotTlNJbWFnZSog
aW1hZ2VGcm9tUmVjdChGcmFtZSosIE5TUmVjdCk7Ci0KLX0KLQotI2VuZGlmIC8vIEZyYW1lU25h
cHNob3R0aW5nTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1l
U25hcHNob3R0aW5nTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hv
dHRpbmdNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MmMyZjIzY2IxN2Jk
MDNkNGU4YTVlZTE5NTE0YWM0MzkxZDE5ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRp
bmdNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtv
diAoYXBAbnlwb3AuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCi0KLSNpbXBvcnQgIkJsb2NrRXhjZXB0
aW9ucy5oIgotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0
ICJGcmFtZVNlbGVjdGlvbi5oIgotI2ltcG9ydCAiRnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJHcmFw
aGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIlJhbmdlLmgiCi0jaW1wb3J0ICJSZW5kZXJWaWV3Lmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTlNJbWFnZSogaW1hZ2VGcm9tUmVjdChGcmFtZSog
ZnJhbWUsIE5TUmVjdCByZWN0KQotewotICAgIFBhaW50QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBm
cmFtZS0+dmlldygpLT5wYWludEJlaGF2aW9yKCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFp
bnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdM
YXllcnMpOwotICAgIAotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICAKLSAg
ICBOU0ltYWdlKiByZXN1bHRJbWFnZSA9IFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoU2l6ZTpy
ZWN0LnNpemVdIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBpZiAocmVjdC5zaXplLndpZHRoICE9
IDAgJiYgcmVjdC5zaXplLmhlaWdodCAhPSAwKSB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNs
YXJhdGlvbnMiCi0gICAgICAgIFtyZXN1bHRJbWFnZSBzZXRGbGlwcGVkOllFU107Ci0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgICAgIFtyZXN1bHRJbWFnZSBsb2NrRm9jdXNdOwot
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoKENHQ29udGV4dFJlZilb
W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdKTsgICAgICAg
IAotICAgICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotICAgICAgICBncmFwaGljc0NvbnRl
eHQudHJhbnNsYXRlKC1yZWN0Lm9yaWdpbi54LCAtcmVjdC5vcmlnaW4ueSk7Ci0gICAgICAgIGZy
YW1lLT52aWV3KCktPnBhaW50Q29udGVudHMoJmdyYXBoaWNzQ29udGV4dCwgSW50UmVjdChyZWN0
KSk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICAgICAgW3Jlc3Vs
dEltYWdlIHVubG9ja0ZvY3VzXTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIK
LSAgICAgICAgW3Jlc3VsdEltYWdlIHNldEZsaXBwZWQ6Tk9dOwotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHBvcAotICAgIH0KLSAgICAKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2
aW9yKG9sZEJlaGF2aW9yKTsKLSAgICByZXR1cm4gcmVzdWx0SW1hZ2U7Ci0gICAgCi0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICAKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWlu
dEJlaGF2aW9yKG9sZEJlaGF2aW9yKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi1OU0ltYWdlKiBz
ZWxlY3Rpb25JbWFnZShGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCi17Ci0gICAg
ZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25s
eSB8IChmb3JjZUJsYWNrVGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsK
LSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgTlNJbWFnZSogcmVz
dWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgZnJhbWUtPnNlbGVjdGlvbigpLmJvdW5kcygpKTsK
LSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JOb3JtYWwp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLU5TSW1hZ2UgKnJhbmdlSW1hZ2UoRnJhbWUqIGZy
YW1lLCBSYW5nZSogcmFuZ2UsIGJvb2wgZm9yY2VCbGFja1RleHQpCi17Ci0gICAgZnJhbWUtPnZp
ZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IChmb3Jj
ZUJsYWNrVGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsKLSAgICBmcmFt
ZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgUmVuZGVyVmlldyogdmlldyA9IGZy
YW1lLT5jb250ZW50UmVuZGVyZXIoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0KLSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlLT5zdGFydFBvc2l0aW9uKCk7Ci0gICAg
UG9zaXRpb24gY2FuZGlkYXRlID0gc3RhcnQuZG93bnN0cmVhbSgpOwotICAgIGlmIChjYW5kaWRh
dGUuZGVwcmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgc3RhcnQgPSBjYW5kaWRhdGU7Ci0KLSAgICBQb3NpdGlvbiBlbmQgPSBy
YW5nZS0+ZW5kUG9zaXRpb24oKTsKLSAgICBjYW5kaWRhdGUgPSBlbmQudXBzdHJlYW0oKTsKLSAg
ICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0ZWRO
b2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgIGVuZCA9IGNhbmRpZGF0ZTsKLQotICAgIGlmIChz
dGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkgfHwgc3RhcnQgPT0gZW5kKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgUmVuZGVyT2JqZWN0KiBzYXZlZFN0YXJ0UmVuZGVyZXI7Ci0gICAg
aW50IHNhdmVkU3RhcnRPZmZzZXQ7Ci0gICAgUmVuZGVyT2JqZWN0KiBzYXZlZEVuZFJlbmRlcmVy
OwotICAgIGludCBzYXZlZEVuZE9mZnNldDsKLSAgICB2aWV3LT5nZXRTZWxlY3Rpb24oc2F2ZWRT
dGFydFJlbmRlcmVyLCBzYXZlZFN0YXJ0T2Zmc2V0LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZlZEVu
ZE9mZnNldCk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydC5kZXBy
ZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgIGlmICghc3RhcnRSZW5kZXJlcikKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmQuZGVw
cmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIWVuZFJlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgdmlldy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0
YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJlbmRlcmVyLCBlbmQuZGVwcmVjYXRl
ZEVkaXRpbmdPZmZzZXQoKSwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOwotICAgIE5TSW1h
Z2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QoZnJhbWUsIHZpZXctPnNlbGVjdGlvbkJvdW5kcygp
KTsKLSAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc2F2ZWRTdGFydFJlbmRlcmVyLCBzYXZlZFN0YXJ0
T2Zmc2V0LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZlZEVuZE9mZnNldCwgUmVuZGVyVmlldzo6UmVw
YWludE5vdGhpbmcpOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWlu
dEJlaGF2aW9yTm9ybWFsKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLU5TSW1hZ2UqIHNu
YXBzaG90RHJhZ0ltYWdlKEZyYW1lKiBmcmFtZSwgTm9kZSogbm9kZSwgTlNSZWN0KiBpbWFnZVJl
Y3QsIE5TUmVjdCogZWxlbWVudFJlY3QpCi17Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICAKLSAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOyAgICAvLyBtYXJr
IGRyYWdnZWQgbm9kZXMgKHNvIHRoZXkgcGljayB1cCB0aGUgcmlnaHQgQ1NTKQotICAgIGZyYW1l
LT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsgIC8vIGZvcmNlcyBzdHlsZSByZWNhbGMgLSBu
ZWVkZWQgc2luY2UgY2hhbmdpbmcgdGhlIGRyYWcgc3RhdGUgbWlnaHQKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbXBseSBuZXcgc3R5bGVzLCBwbHVzIEpTIGNv
dWxkIGhhdmUgY2hhbmdlZCBvdGhlciB0aGluZ3MKLQotCi0gICAgLy8gRG9jdW1lbnQ6OnVwZGF0
ZUxheW91dCBtYXkgaGF2ZSBibG93biBhd2F5IHRoZSBvcmlnaW5hbCBSZW5kZXJFbGVtZW50Lgot
ICAgIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgTlNS
ZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5n
Um9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBpZiAoTlNJc0VtcHR5UmVjdChwYWludGlu
Z1JlY3QpKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9k
ZVRvRHJhdyhub2RlKTsgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0g
ICAgTlNJbWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgcGFpbnRpbmdSZWN0KTsK
LSAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsKLSAgICBmcmFtZS0+ZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJhdygw
KTsKLQotICAgIGlmIChlbGVtZW50UmVjdCkKLSAgICAgICAgKmVsZW1lbnRSZWN0ID0gcGl4ZWxT
bmFwcGVkSW50UmVjdCh0b3BMZXZlbFJlY3QpOwotICAgIGlmIChpbWFnZVJlY3QpCi0gICAgICAg
ICppbWFnZVJlY3QgPSBwYWludGluZ1JlY3Q7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4v
RnJhbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCmluZGV4
IDVhYWYzYTY3OGM5ZTU0M2FmNjgzYjM3YWQ1YjA2Y2NlMDY0NDNiOWYuLjk2NzRmMTc2OGY1ZGQ4
NDI1YjYwYzdhZjE2ZjBmMWY3ZDZmNzYzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvd2luL0ZyYW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdp
bi5jcHAKQEAgLTU3LDMwICs1Nyw0IEBAIEdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQogICAgIHJldHVybiBpbWFn
ZTsKIH0KIAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQotewot
ICAgIGlmIChzZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiBpbWFnZUZyb21T
ZWxlY3Rpb24odGhpcywgZmFsc2UpLmxlYWsoKTsKLQotICAgIHJldHVybiAwOwotfQotCi1EcmFn
SW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewotICAgIGRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dCgpOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJl
bmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBM
YXlvdXRSZWN0IHRvcExldmVsUmVjdDsKLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVs
U25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7
Ci0KLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1
Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIEdESU9iamVjdDxIQklUTUFQPiByZXN1bHQgPSBpbWFn
ZUZyb21SZWN0KHRoaXMsIHBhaW50aW5nUmVjdCk7Ci0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3
KDApOwotCi0gICAgcmV0dXJuIHJlc3VsdC5sZWFrKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCmluZGV4IDNhMjcyM2U2M2Q2ZDdlN2Vj
MDQ0Y2IxMmYyZWE3YmQwNmNmZTY1OWYuLjI2OTcyNWMxZjliOWI4MGQ1NzgxNDg0ZjkzMWFiMjVk
ZDNhZTMzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uaApAQCAtMzUsNyArMzUsNyBA
QCBjbGFzcyBGcmFtZTsKIGNsYXNzIEludFJlY3Q7CiAKIEdESU9iamVjdDxIQklUTUFQPiBpbWFn
ZUZyb21SZWN0KGNvbnN0IEZyYW1lKiwgSW50UmVjdCYpOwotR0RJT2JqZWN0PEhCSVRNQVA+IGlt
YWdlRnJvbVNlbGVjdGlvbihGcmFtZSosIGJvb2wgZm9yY2VXaGl0ZVRleHQpOworR0RJT2JqZWN0
PEhCSVRNQVA+IGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSosIGJvb2wgZm9yY2VCbGFja1RleHQp
Owogdm9pZCBjb21wdXRlUGFnZVJlY3RzRm9yRnJhbWUoRnJhbWUqLCBjb25zdCBJbnRSZWN0JiBw
cmludFJlY3QsIGZsb2F0IGhlYWRlckhlaWdodCwgZmxvYXQgZm9vdGVySGVpZ2h0LCBmbG9hdCB1
c2VyU2NhbGVGYWN0b3IsIFZlY3RvcjxJbnRSZWN0PiYgb3V0UGFnZXMsIGludCYgb3V0UGFnZUhl
aWdodCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
SW1hZ2UuY3BwCmluZGV4IGI4MWFmZDU3OWU4MjkzZWVmYTJiYTkzYjliYjU1YzFmNTA3NmNmNDcu
LjdjNDY3NDgxYmQ1NmEzZDc1Yjk2OTBmZjExZWFlNjNjNWViODhhNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0ltYWdlLmNwcApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQog
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0yOCwyOSArMjgsMzcgQEAKIAogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCiAKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1l
U25hcHNob3R0aW5nLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgor
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiBE
cmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiBpbWFnZSwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBmbG9hdCBo
ZWlnaHRSZXNpemVSYXRpbyA9IDAuMGY7CiAgICAgZmxvYXQgd2lkdGhSZXNpemVSYXRpbyA9IDAu
MGY7CiAgICAgZmxvYXQgcmVzaXplUmF0aW8gPSAtMS4wZjsKICAgICBJbnRTaXplIG9yaWdpbmFs
U2l6ZSA9IGRyYWdJbWFnZVNpemUoaW1hZ2UpOwotICAgIAorCiAgICAgaWYgKHNyY1NpemUud2lk
dGgoKSA+IHNpemUud2lkdGgoKSkgewogICAgICAgICB3aWR0aFJlc2l6ZVJhdGlvID0gc2l6ZS53
aWR0aCgpIC8gKGZsb2F0KXNyY1NpemUud2lkdGgoKTsKICAgICAgICAgcmVzaXplUmF0aW8gPSB3
aWR0aFJlc2l6ZVJhdGlvOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzcmNTaXplLmhlaWdodCgp
ID4gc2l6ZS5oZWlnaHQoKSkgewogICAgICAgICBoZWlnaHRSZXNpemVSYXRpbyA9IHNpemUuaGVp
Z2h0KCkgLyAoZmxvYXQpc3JjU2l6ZS5oZWlnaHQoKTsKICAgICAgICAgaWYgKChyZXNpemVSYXRp
byA8IDAuMGYpIHx8IChyZXNpemVSYXRpbyA+IGhlaWdodFJlc2l6ZVJhdGlvKSkKICAgICAgICAg
ICAgIHJlc2l6ZVJhdGlvID0gaGVpZ2h0UmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAgICAg
aWYgKHNyY1NpemUgPT0gb3JpZ2luYWxTaXplKQogICAgICAgICByZXR1cm4gcmVzaXplUmF0aW8g
PiAwLjBmID8gc2NhbGVEcmFnSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZShyZXNpemVSYXRpbywgcmVz
aXplUmF0aW8pKSA6IGltYWdlOwotICAgIAorCiAgICAgLy8gVGhlIGltYWdlIHdhcyBzY2FsZWQg
aW4gdGhlIHdlYnBhZ2Ugc28gYXQgbWluaW11bSB3ZSBtdXN0IGFjY291bnQgZm9yIHRoYXQgc2Nh
bGluZwogICAgIGZsb2F0IHNjYWxleCA9IHNyY1NpemUud2lkdGgoKSAvIChmbG9hdClvcmlnaW5h
bFNpemUud2lkdGgoKTsKICAgICBmbG9hdCBzY2FsZXkgPSBzcmNTaXplLmhlaWdodCgpIC8gKGZs
b2F0KW9yaWdpbmFsU2l6ZS5oZWlnaHQoKTsKQEAgLTU4LDE0ICs2NiwxNTEgQEAgRHJhZ0ltYWdl
UmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIGMKICAgICAgICAgc2NhbGV4ICo9IHJlc2l6ZVJhdGlvOwogICAgICAgICBz
Y2FsZXkgKj0gcmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHNjYWxlRHJh
Z0ltYWdlKGltYWdlLCBGbG9hdFNpemUoc2NhbGV4LCBzY2FsZXkpKTsKIH0KIAorc3RydWN0IFNj
b3BlZE5vZGVEcmFnU3RhdGUgeworICAgIFNjb3BlZE5vZGVEcmFnU3RhdGUoRnJhbWUmIGZyYW1l
LCBOb2RlJiBub2RlKQorICAgIDogZnJhbWUoZnJhbWUpCisgICAgLCBub2RlKG5vZGUpCisgICAg
eworICAgICAgICBBU1NFUlQobm9kZS5yZW5kZXJlcigpKTsKKyAgICAgICAgbm9kZS5yZW5kZXJl
cigpLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7CisgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnVw
ZGF0ZUxheW91dCgpOworICAgIH0KKworICAgIH5TY29wZWROb2RlRHJhZ1N0YXRlKCkKKyAgICB7
CisgICAgICAgIGlmIChub2RlLnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgIG5vZGUucmVuZGVy
ZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsKKyAgICAgICAgICAgIGZyYW1lLmRvY3VtZW50
KCktPnVwZGF0ZUxheW91dCgpOworICAgICAgICB9CisgICAgfQorCisgICAgRnJhbWUmIGZyYW1l
OworICAgIE5vZGUmIG5vZGU7Cit9OworCitzdGF0aWMgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZyb21TbmFwc2hvdChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90LCBO
b2RlKiBub2RlKQoreworICAgIGlmICghc25hcHNob3QpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uOworI2lmIEVO
QUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCisgICAgaWYgKG5vZGUpIHsKKyAgICAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIGlmICghcmVu
ZGVyZXIpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBvcmllbnRhdGlv
bi5zZXRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbihyZW5kZXJlci0+c2hvdWxkUmVzcGVjdEltYWdl
T3JpZW50YXRpb24oKSk7CisgICAgICAgIG9yaWVudGF0aW9uLnNldEltYWdlT3JpZW50YXRpb25F
bnVtKHJlbmRlcmVyLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgfQorI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0obm9kZSk7CisjZW5kaWYKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdl
ID0gc25hcHNob3QtPmNvcHlJbWFnZShJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKSk7
CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZS5nZXQoKSwgb3JpZW50YXRpb24pOworfQorCitE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5v
ZGUpCit7CisgICAgU2NvcGVkTm9kZURyYWdTdGF0ZSBlbmFibGVEcmFnKGZyYW1lLCBub2RlKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25hcHNob3ROb2Rl
KGZyYW1lLCBub2RlKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHN0
ZDo6bW92ZShzbmFwc2hvdCksICZub2RlKTsKK30KKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvclNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCit7Cisg
ICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBmb3JjZUJsYWNrVGV4dCA/IFNuYXBzaG90T3B0
aW9uc0ZvcmNlQmxhY2tUZXh0IDogU25hcHNob3RPcHRpb25zTm9uZTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24oZnJhbWUsIG9w
dGlvbnMpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc3RkOjptb3Zl
KHNuYXBzaG90KSwgbnVsbHB0cik7Cit9CisKK3N0cnVjdCBTY29wZWRGcmFtZVNlbGVjdGlvblN0
YXRlIHsKKyAgICBTY29wZWRGcmFtZVNlbGVjdGlvblN0YXRlKEZyYW1lJiBmcmFtZSkKKyAgICA6
IGZyYW1lKGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSBmcmFt
ZS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJvb3QtPmdldFNlbGVjdGlvbihzdGFy
dFJlbmRlcmVyLCBzdGFydE9mZnNldCwgZW5kUmVuZGVyZXIsIGVuZE9mZnNldCk7CisgICAgfQor
CisgICAgflNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUoKQorICAgIHsKKyAgICAgICAgaWYgKFJl
bmRlclZpZXcqIHJvb3QgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJv
b3QtPnNldFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydE9mZnNldCwgZW5kUmVuZGVyZXIs
IGVuZE9mZnNldCwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOworICAgIH0KKworICAgIEZy
YW1lJiBmcmFtZTsKKyAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXI7CisgICAgUmVuZGVy
T2JqZWN0KiBlbmRSZW5kZXJlcjsKKyAgICBpbnQgc3RhcnRPZmZzZXQ7CisgICAgaW50IGVuZE9m
ZnNldDsKK307CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShGcmFtZSYg
ZnJhbWUsIFJhbmdlJiByYW5nZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKK3sKKyAgICBmcmFtZS5k
b2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBSZW5kZXJWaWV3KiB2aWV3ID0gZnJhbWUu
Y29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIC8vIFRvIHNuYXBzaG90IHRoZSByYW5nZSwgdGVtcG9yYXJpbHkgc2VsZWN0IGl0
IGFuZCB0YWtlIHNlbGVjdGlvbiBzbmFwc2hvdC4KKyAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdl
LnN0YXJ0UG9zaXRpb24oKTsKKyAgICBQb3NpdGlvbiBjYW5kaWRhdGUgPSBzdGFydC5kb3duc3Ry
ZWFtKCk7CisgICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5k
ZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICBzdGFydCA9IGNhbmRpZGF0ZTsK
KworICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlLmVuZFBvc2l0aW9uKCk7CisgICAgY2FuZGlkYXRl
ID0gZW5kLnVwc3RyZWFtKCk7CisgICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYm
IGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICBlbmQgPSBj
YW5kaWRhdGU7CisKKyAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpIHx8IHN0
YXJ0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBjb25zdCBTY29wZWRG
cmFtZVNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKGZyYW1lKTsKKworICAgIFJlbmRlck9i
amVjdCogc3RhcnRSZW5kZXJlciA9IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7
CisgICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciA9IGVuZC5kZXByZWNhdGVkTm9kZSgpLT5y
ZW5kZXJlcigpOworICAgIGlmICghc3RhcnRSZW5kZXJlciB8fCAhZW5kUmVuZGVyZXIpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBmb3Jj
ZUJsYWNrVGV4dCA/IFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0IDogU25hcHNob3RPcHRp
b25zTm9uZTsKKyAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc3RhcnRSZW5kZXJlciwgc3RhcnQuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmVuZGVyZXIsIGVuZC5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpLCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCA9IHNuYXBzaG90U2VsZWN0aW9uKGZyYW1lLCBvcHRp
b25zKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHN0ZDo6bW92ZShz
bmFwc2hvdCksIG51bGxwdHIpOworfQorCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9y
SW1hZ2UoRnJhbWUmIGZyYW1lLCBOb2RlJiBub2RlLCBJbnRSZWN0JiBpbWFnZVJlY3QsIEludFJl
Y3QmIGVsZW1lbnRSZWN0KQoreworICAgIFNjb3BlZE5vZGVEcmFnU3RhdGUgZW5hYmxlRHJhZyhm
cmFtZSwgbm9kZSk7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS5yZW5kZXJl
cigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
Ly8gQ2FsY3VsYXRlIGltYWdlIGFuZCBlbGVtZW50IG1ldHJpY3MgZm9yIHRoZSBjbGllbnQsIHRo
ZW4gY3JlYXRlIGRyYWcgaW1hZ2UuCisgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAg
SW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWlu
dGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworCisgICAgaWYgKHBhaW50aW5nUmVjdC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZWxlbWVudFJlY3QgPSBwaXhl
bFNuYXBwZWRJbnRSZWN0KHRvcExldmVsUmVjdCk7CisgICAgaW1hZ2VSZWN0ID0gcGFpbnRpbmdS
ZWN0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCA9IHNuYXBz
aG90Tm9kZShmcmFtZSwgbm9kZSk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21TbmFw
c2hvdChzdGQ6Om1vdmUoc25hcHNob3QpLCAmbm9kZSk7Cit9CisKICNpZiAhUExBVEZPUk0oTUFD
KSAmJiAoIVBMQVRGT1JNKFdJTikgfHwgT1MoV0lOQ0UpKQogRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZvckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiwgRm9udFJlbmRlcmluZ01vZGUpCiB7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAppbmRleCBkOGY1MmJjZmFkNDQyNDNmOGFjY2I4NjcwYTA5
NGFmMTEzYzRiMjRkLi45YzE5MDA3NTA2ZmFiMTk1NTI0ODU3MDI5NjU5YWNmNmNlZTcwN2UzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaApAQCAtMjYsMTAgKzI2LDExIEBACiAjaWZu
ZGVmIERyYWdJbWFnZV9oCiAjZGVmaW5lIERyYWdJbWFnZV9oCiAKKyNpbmNsdWRlICJGbG9hdFNp
emUuaCIKICNpbmNsdWRlICJGb250UmVuZGVyaW5nTW9kZS5oIgorI2luY2x1ZGUgIkZyYW1lU25h
cHNob3R0aW5nLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIklu
dFNpemUuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNDEsMzggKzQyLDQ3IEBAIHR5cGVkZWYgc3RydWN0
IEhCSVRNQVBfXyogSEJJVE1BUDsKIHR5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJv
X3N1cmZhY2VfdDsKICNlbmRpZgogCi0vL1dlIG5lZWQgdG8gI2RlZmluZSBZT2Zmc2V0IGFzIGl0
IG5lZWRzIHRvIGJlIHNoYXJlZCB3aXRoIFdlYktpdAorLy8gV2UgbmVlZCB0byAjZGVmaW5lIFlP
ZmZzZXQgYXMgaXQgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGggV2ViS2l0CiAjZGVmaW5lIERyYWdM
YWJlbEJvcmRlcllPZmZzZXQgMgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBJ
bWFnZTsKLSAgICBjbGFzcyBVUkw7CitjbGFzcyBGcmFtZTsKK2NsYXNzIEltYWdlOworY2xhc3Mg
SW50UmVjdDsKK2NsYXNzIE5vZGU7CitjbGFzcyBSYW5nZTsKK2NsYXNzIFVSTDsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICB0eXBlZGVmIFJldGFpblB0cjxOU0ltYWdlPiBEcmFnSW1hZ2VSZWY7
Cit0eXBlZGVmIFJldGFpblB0cjxOU0ltYWdlPiBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9S
TShXSU4pCi0gICAgdHlwZWRlZiBIQklUTUFQIERyYWdJbWFnZVJlZjsKK3R5cGVkZWYgSEJJVE1B
UCBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKE5JWCkKLSAg
ICB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogRHJhZ0ltYWdlUmVmOwordHlwZWRlZiBjYWlyb19z
dXJmYWNlX3QqIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0o
QkxBQ0tCRVJSWSkKLSAgICB0eXBlZGVmIHZvaWQqIERyYWdJbWFnZVJlZjsKK3R5cGVkZWYgdm9p
ZCogRHJhZ0ltYWdlUmVmOwogI2VuZGlmCi0gICAgCi0gICAgSW50U2l6ZSBkcmFnSW1hZ2VTaXpl
KERyYWdJbWFnZVJlZik7Ci0gICAgCi0gICAgLy9UaGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIG1l
bW9yeSBuZXV0cmFsLCBlZy4gaWYgdGhleSByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaW1hZ2Us
IAotICAgIC8vdGhleSBzaG91bGQgcmVsZWFzZSB0aGUgaW5wdXQgaW1hZ2UuICBBcyBhIGNvcm9s
bGFyeSB0aGVzZSBtZXRob2RzIGRvbid0IGd1YXJhbnRlZQotICAgIC8vdGhlIGlucHV0IGltYWdl
IHJlZiB3aWxsIHN0aWxsIGJlIHZhbGlkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGNhbGxlZAotICAg
IERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJhZ0ltYWdlUmVmIGltYWdlLCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbnRTaXplJiBzaXplKTsKLSAgICBEcmFnSW1h
Z2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpOwotICAg
IERyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmIGlt
YWdlLCBmbG9hdCBkZWx0YSk7Ci0gICAgCi0gICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci0gICAgRHJh
Z0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0
IFN0cmluZyYpOwotICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlKTsKLSAgICB2b2lkIGRlbGV0
ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOworCitJbnRTaXplIGRyYWdJbWFnZVNpemUoRHJhZ0lt
YWdlUmVmKTsKKworLy8gVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBtZW1vcnkgbmV1dHJhbCwg
ZWcuIGlmIHRoZXkgcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGltYWdlLAorLy8gdGhleSBzaG91
bGQgcmVsZWFzZSB0aGUgaW5wdXQgaW1hZ2UuIEFzIGEgY29yb2xsYXJ5IHRoZXNlIG1ldGhvZHMg
ZG9uJ3QgZ3VhcmFudGVlCisvLyB0aGUgaW5wdXQgaW1hZ2UgcmVmIHdpbGwgc3RpbGwgYmUgdmFs
aWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gY2FsbGVkLgorRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFn
ZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IElu
dFNpemUmIGRzdFNpemUpOworRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJl
ZiwgRmxvYXRTaXplIHNjYWxlKTsKK0RyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJh
Y3Rpb24oRHJhZ0ltYWdlUmVmLCBmbG9hdCBkZWx0YSk7CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwor
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNv
bnN0IFN0cmluZyYpOworCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZShGcmFt
ZSYsIE5vZGUmKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oRnJh
bWUmLCBib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZvclJhbmdlKEZyYW1lJiwgUmFuZ2UmLCBib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFs
c2UpOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckltYWdlKEZyYW1lJiwgTm9kZSYs
IEludFJlY3QmIGltYWdlUmVjdCwgSW50UmVjdCYgZWxlbWVudFJlY3QpOworRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJl
bmRlcmluZ01vZGUpOwordm9pZCBkZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmKTsKIH0KIAog
Ci0jZW5kaWYgLy8hRHJhZ0ltYWdlX2gKKyNlbmRpZiAvLyAhRHJhZ0ltYWdlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tIGIvU291
cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0KaW5kZXggNWRmZjZm
MGZlOWMxZDlmMmRlNGExZTExOTNhNWVmYjQ0NjJkMDc5MS4uZDU2MmExNjE5MjY1ZmE2MWUwYjRj
MTg5NmEwOGZmNWZlYjEzYjVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVJT1MubW0KQEAgLTMzLDcgKzMzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
RmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lU2VsZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU25hcHNob3R0aW5nTWFj
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU25hcHNob3R0aW5nLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL2h0bWxlZGl0aW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQppbmRleCA0ODYyODBlNDdiNmE1NWQ2OTNmODRhMzUxNDJkYTMzOGUyYmY3OWJm
Li5hZmJmOGNjNjRlMDU0M2VkMjM1YjcyNjEzZGRiYTNhODA4YjkzZjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTg1LDYgKzg1LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvRHJhZ0ltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9FZGl0b3JEZWxldGVBY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUv
RWxlbWVudC5oPgpAQCAtOTUsNyArOTYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNl
bGVjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNuYXBzaG90dGluZ01hYy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KQEAgLTE4MjAsNyArMTgyMCwxMiBA
QCBzdGF0aWMgYm9vbCBtb3VzZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2ZW50ICpldmVu
dCkKIHsKICAgICBpZiAoIVtzZWxmIF9oYXNTZWxlY3Rpb25dKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIE5TSW1hZ2UgKmRyYWdJbWFnZSA9IHNlbGVjdGlvbkltYWdlKGNvcmUoW3NlbGYgX2Zy
YW1lXSkpOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Cisg
ICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU0ltYWdlICpk
cmFnSW1hZ2UgPSBbW2NyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbigqY29yZUZyYW1lKSByZXRh
aW5dIGF1dG9yZWxlYXNlXTsKICAgICBbZHJhZ0ltYWdlIF93ZWJfZGlzc29sdmVUb0ZyYWN0aW9u
OldlYkRyYWdJbWFnZUFscGhhXTsKICAgICByZXR1cm4gZHJhZ0ltYWdlOwogfQpAQCAtNTk2NSw3
ICs1OTcwLDExIEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiB7CiAgICAgaWYgKCFbc2VsZiBf
aGFzU2VsZWN0aW9uXSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gc2VsZWN0aW9u
SW1hZ2UoY29yZShbc2VsZiBfZnJhbWVdKSwgZm9yY2VCbGFja1RleHQpOworCisgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFtbY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0
aW9uKCpjb3JlRnJhbWUsIGZvcmNlQmxhY2tUZXh0KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0K
IAogLSAoTlNSZWN0KXNlbGVjdGlvbkltYWdlUmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNz
ZXMuY3BwCmluZGV4IGNjYmQ3MTkwMWU0NTU3OTAzMWI5MDJiYTU2YTg5NGU2YThkNzljYjMuLmI4
MWQ0YTdkNzM0NzdhZGY4YmRiNzgzYjI1MWRlMWRjOWZmZDkzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9E
T01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTM2LDEwICszNiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
Q09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9I
VE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KQEAgLTQ5
LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogCiAjaW5jbHVkZSA8aW5p
dGd1aWQuaD4KIC8vIHszQjBDMEVGRi00NzhCLTRiMGItODI5MC1EMjMyMUUwOEUyM0V9CkBAIC0x
Mjc5LDcgKzEyODAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnJl
bmRlcmVkSW1hZ2UoSEJJVE1BUCogaW1hZ2UpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIAotICAgICppbWFnZSA9IGZyYW1lLT5ub2RlSW1hZ2UobV9lbGVtZW50KTsK
KyAgICAqaW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgKm1fZWxlbWVudCk7
CiAgICAgaWYgKCEqaW1hZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217159</attachid>
            <date>2013-11-17 16:21:13 -0800</date>
            <delta_ts>2013-11-17 17:21:33 -0800</delta_ts>
            <desc>v2.2</desc>
            <filename>bug-124325-20131117162112.patch</filename>
            <type>text/plain</type>
            <size>69696</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0NGNiZWZkMmZkZjI5
NGE0N2FkNmZiMzk2YTViZDIyMzAwOTdkMS4uZTI5ZmUyMjgwNWFhYzMzZDQ5Y2NmNjhjNTg3Yjg1
YjJkNzE3ZDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTExLTE2ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc25hcHNob3QgY3JlYXRpb24g
bWV0aG9kcyBoYWQgZHVwbGljYXRlZCBjb2RlIGFuZCB3ZXJlIHNwbGl0CisgICAgICAgIGJldHdl
ZW4gRnJhbWUsIERyYWdJbWFnZSwgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9u
c3MuCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBXZWJDb3JlIHNuYXBzaG90IG1ldGhvZHMgaW50
byBGcmFtZVNuYXBzaG90dGluZworICAgICAgICBhbmQgcmVtb3ZlcyBwbGF0Zm9ybSBpbXBsZW1l
bnRhdGlvbnMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgRHJhZ0ltYWdlIG1ldGhvZHMgcmV1
c2Ugc25hcHNob3QgbWV0aG9kcyB3aGVyZSBwb3NzaWJsZS4gSW5zcGVjdG9yCisgICAgICAgIHdp
bGwgYmUgYWJsZSB0byB0YWtlIHNuYXBzaG90cyB3aXRob3V0IHVzaW5nIGRyYWcgaW1hZ2VzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJbWFn
ZV0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpd
KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQ
YWludGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0
ZTo6flNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hv
dEZyYW1lUmVjdCk6IE1vdmUgbW9zdCBidWZmZXIgbG9naWMgdG8gaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90U2VsZWN0aW9uKTogTW92ZWQgZnJvbSBGcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90Tm9kZSk6IE1vdmVkIGZyb20gRnJhbWUuCisgICAgICAgICogcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcDogcmVtb3ZlIGR1cGxpY2F0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5oOiBGaXggYW4gaW5j
b3JyZWN0IHBhcmFtZXRlciBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY29wZWROb2RlRHJhZ1N0YXRlOjpTY29wZWROb2RlRHJhZ1N0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZE5vZGVEcmFnU3RhdGU6On5TY29wZWROb2Rl
RHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dCk6IEJvaWxlcnBsYXRlIGJ1ZmZlciBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0
ZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRG
cmFtZVNlbGVjdGlvblN0YXRlOjp+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6IE1vdmVkIGZyb20gRnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6IE1vdmVkIGZyb20gRnJh
bWVTbmFwc2hvdHRpbmdNYWMuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKTogdXNlIG51bGxwdHIuCisKIDIwMTMtMTEtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ3J5cHRvIG5vIGxvbmdlciB1c2VzIHNlcXVlbmNl
cyBvZiBBcnJheUJ1ZmZlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCAxNDkzYzJiZjFkOGI1YjEwNTQ3
NTFjYTM5NDFjYzZhODllMGIzZDI2Li43ZDM0YWFjYTA0MWZiZWE2NjMzZGQ2MDdjZGQ1OWMxN2Zh
NmI5MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTMgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIENvbnNvbGlk
YXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUlPUy5tbTogdXNlIG5ldyBoZWFkZXIgZmlsZS4KKwogMjAxMy0xMS0wNyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhIFBMQVRGT1JNKElP
UykgZnJvbSBXZWJLaXQgUHJpdmF0ZSBIZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBhYTNmMTM0
NDEyZDI2YmNlNjhiYmVmMDliZTQyYjRlYTlkYjM0MjYzLi40OWM1ZTlmMzgzOTliYjFhZmYyYzFj
NTBjM2E3MmI0Zjg1ZDc2NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTMtMTEtMTMgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIENvbnNvbGlkYXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG5ldyBwbGF0
Zm9ybS1pbmRlcGVuZGVudCBtZXRob2RzIGluc3RlYWQgb2YgTWFjIG1ldGhvZHMuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2Vs
ZWN0aW9uRHJhZ2dpbmdJbWFnZV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZWxlY3Rpb25J
bWFnZUZvcmNpbmdCbGFja1RleHQ6XSk6CisKIDIwMTMtMTEtMTQgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWltcGxlbWVudCBnZXREYXlCb3VuZGFy
aWVzIHVzaW5nIE5TQ2FsZW5kYXIgb24gMTAuOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDY4N2QyZTU0
YmQ0YjZhNjBjYzhhMDFkNDA0ZTgyNmZhOTg0NTA3M2YuLjY5MWFjMGY2NGQ5NjJjMzI4MDE4MGU0
YzRmYmQ5Mjg5OWZkZDhiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
My0xMS0xNCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAg
ICAgQ29uc29saWRhdGUgdmFyaW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVDbGFz
c2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UpOiB1c2UgY3JlYXRl
RHJhZ0ltYWdlRm9yTm9kZS4KKwogMjAxMy0xMS0xNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIFdpbiBidWlsZCBmaXg7IHNldEN1cnJlbnRU
aW1lKCkgbm8gbG9uZ2VyIHRha2VzIGFuIGV4Y2VwdGlvbiBwYXJhbWV0ZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDQ3MGRmMjQxZWZlODk2M2NjNmY0Nzc1NjJkNGM1MDU2MzhiZjc1OGMuLjcx
Y2EzMjYwZTNkM2EwOTk1YmZjZGZmYzY0MTQxY2Q5Zjk1ZjNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNzI2LDYgKzE3MjYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCiAgICAgcGFnZS9GcmFtZS5jcHAKICAgICBwYWdlL0ZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlci5jcHAKKyAgICBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAogICAg
IHBhZ2UvRnJhbWVUcmVlLmNwcAogICAgIHBhZ2UvRnJhbWVWaWV3LmNwcAogICAgIHBhZ2UvR2Vz
dHVyZVRhcEhpZ2hsaWdodGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
ZmQ1MzI3ODEyNGM5ZDhhZGM1ZjMyNDM0YjA1NWRhM2VhZDBhZGNhYS4uZWVmYjkzYjY1NjU3OTUy
ZGFjODI2NWNmYTEyYzhiYWZiZDA2Mjc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC00MTE4LDYgKzQxMTgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDE0MjQyYjMyMTJmOWY0YWUxZDhiM2QzNjIyNTUyM2VlNzgxNjgyMWUuLjhjZGQxZmY2
ZTM0YmYzNmZiOWE2NDhlODY4YjI0NzBjZmJlNzBlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC00MjcsNyArNDI3LDYgQEAgX19aTjdXZWJDb3JlMTRjb29raWVzRW5hYmxlZEVSS05TXzIxTmV0
d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43V2ViQ29yZTE0ZGVjb2RlSG9z
dE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRlbmNvZGVIb3N0TmFtZUVQOE5TU3RyaW5n
CiBfX1pON1dlYkNvcmUxNGVuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCi1fX1pON1dlYkNvcmUxNHNlbGVjdGlvbklt
YWdlRVBOU181RnJhbWVFYgogX19aTjdXZWJDb3JlMTRzZXRNZXRhZGF0YVVSTEVSTjNXVEY2U3Ry
aW5nRVJLUzFfUzRfCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVmbGlwWUV2CiBfX1pO
N1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVzY2FsZUVkCkBAIC04ODcsNiArODg2LDcgQEAgX19a
TjdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2VDMkV2CiBfX1pON1dlYkNvcmUy
N0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2Rl
RUVFYlJLTlMxXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jazE0c2V0T3JpZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRh
dGlvbkRhdGFFRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFF
dgorX19aTjdXZWJDb3JlMjdjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb25FUk5TXzVGcmFtZUVi
CiBfX1pON1dlYkNvcmUyN3Byb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbEVSS05TXzNVUkxFUzJf
CiBfX1pON1dlYkNvcmUyN3N0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlc0VQRnZ2RQogX19aTjdX
ZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFTjNXVEY3
UGFzc1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQpAQCAtMjAzMiw3ICsyMDMyLDYgQEAg
X19aTjdXZWJDb3JlMzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CiBf
X1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZ0V2
CiBfX1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGlu
Z0V2CiBfX1pON1dlYkNvcmU0NmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9t
YXRpY2FsbHlFdgotX19aTjdXZWJDb3JlNUZyYW1lOW5vZGVJbWFnZUVQTlNfNE5vZGVFCiBfX1pO
N1dlYkNvcmU2Q3Vyc29yOGZyb21UeXBlRU5TMF80VHlwZUUKIF9fWk43V2ViQ29yZTZDdXJzb3JD
MUVQTlNfNUltYWdlRVJLTlNfOEludFBvaW50RQogX19aTjdXZWJDb3JlNkN1cnNvckMxRVJLUzBf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCA1MWU5MThlNzk0ODkyMmNmZDIyMDMxM2E1ZDFhNGJiOTFkYzA5YTBhLi4wMzFiNmNmZTk2YmY1
ODk4NWRlYzNlNTk2OTQ2M2U0YjRlZGI1OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTY5ODMsNiArNjk4Myw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZvY3VzQ29udHJvbGxlci5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGFnZVxHcm91cFNldHRpbmdzLmNwcCIgLz4KQEAgLTE4ODEyLDYgKzE4ODEzLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRm9jdXNEaXJlY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNob3R0aW5nLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhZ2VcR3JvdXBTZXR0aW5ncy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGEzOTVkYWI5
YjYzNjI2N2MxYThhNmJhYmNjNWExYzA2MmVjZjUyY2MuLjExYjJjNTRhNTMxZjExMjUzMDdiMjE4
MDAyOTg2NWVmMGYxOTljMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcxNyw2ICs3MTcsOSBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVNuYXBzaG90dGluZy5jcHAiPgorICAgICAg
PEZpbHRlcj5wYWdlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03NjE3LDYgKzc2MjAsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCI+CiAgICAgICA8
RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuaCI+CisgICAgICA8RmlsdGVyPnBhZ2U8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
Z2VcRnJhbWVUcmVlLmgiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMDRiZWQwN2VmYWM1ODkyOGU1YmEwMTY5NjY0ZTMxYmYwYThiMzlkZS4uMWZm
ZjIxNzI5OTNiYjU3OTVlMzdiOGNkYWVhYjYwYjNkNWNhZGEyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjAwNSw3ICsyMDA1
LDYgQEAKIAkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODMwOTdBM0Y1MzAw
QjkwNTBBIC8qIEZyYW1lVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1QkYwMjJFMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyOTA5NzQ4
MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwICovOyB9OwogCQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1QkYwMjQ1MDk3NDgxOTAwMEM0MzE5
NiAvKiBGcmFtZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAqLzsgfTsKIAkJ
NjVDOTdBRjMwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNv
bmZpZy5oICovOyB9OwogCQk2NUNCRkVGOTA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY3
MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovOyB9OwogCQk2NUNCRkVGQTA5NzRG
NjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIyMDYs
OCArMjIwNSw2IEBACiAJCTdDNTM0M0ZDMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M1MzQzRkExN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAgKi87IH07CiAJCTdDNTM0M0ZEMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNTM0M0ZCMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aCAqLzsgfTsKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlz
dC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
QzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9Owot
CQk3Q0UzMERBOTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi87IH07Ci0JCTdDRTMwREFB
MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0Ux
IC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8qIENTU1ZhbHVl
S2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdv
cmRzLmggKi87IH07CiAJCTdFMTJFOTBGMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5oICovOyB9OwogCQk3RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAgKi87IH07CkBAIC01MjQ0LDYgKzUyNDEsOCBAQAogCQlDM0NGMTdBNTE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0Ey
MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovOyB9Owog
CQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMzE1
QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzRDRDYyOUExODM4Mzc2NjAw
N0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5jcHAgKi87IH07CisJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYx
MjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdy
b3VwU2V0dGluZ3MuY3BwICovOyB9OwogCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3Jv
dXBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MjBGRjQyNzI5
MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFn
ZU5hbWVzcGFjZS5jcHAgKi87IH07CkBAIC04NzQwLDcgKzg3MzksNiBAQAogCQk2NUE2NDBGMDA1
MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVCRjAy
MjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVCRjAy
M0MwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEZyYW1lTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVDQkZFRjcw
OTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnJhbWVWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04OTY4LDggKzg5NjYsNiBAQAogCQk3QzYxMzZGODE3MTBDMzUyMDBGRjRBNTcgLyog
SW5GaWxlc1BhcnNlci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJbkZpbGVzUGFyc2VyLnBtOyBwYXRo
ID0gc2NyaXB0cy9JbkZpbGVzUGFyc2VyLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzYxMzZGOTE3MTBDMzUyMDBGRjRBNTcgLyogU3RhdGljU3RyaW5nLnBtICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsg
bmFtZSA9IFN0YXRpY1N0cmluZy5wbTsgcGF0aCA9IHNjcmlwdHMvU3RhdGljU3RyaW5nLnBtOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyog
SUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJRE5TY3JpcHRX
aGl0ZUxpc3QudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZ01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25h
cHNob3R0aW5nTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lU25h
cHNob3R0aW5nTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMTJFOTBEMTVG
QTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDsgcGF0aCA9
IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21G
aWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAwMTI3RjM0
MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
Mjc0LDYgKzEyMjcwLDggQEAKIAkJQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRUYXJnZXRPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDM0NGMTdBMjE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0
Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVNu
YXBzaG90dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5
RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVz
cGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFt
ZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjA2LDYgKzE1NjA0
LDggQEAKIAkJCQk2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLywKIAkJCQk5
NzRBODYyMDE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCAq
LywKIAkJCQk5NzRBODYyMTE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyLmggKi8sCisJCQkJQzRDRDYyOTgxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0
aW5nLmNwcCAqLywKKwkJCQlDNENENjI5OTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hv
dHRpbmcuaCAqLywKIAkJCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNw
cCAqLywKIAkJCQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8sCiAJ
CQkJNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCkBAIC0xNjUy
MCw5ICsxNjUyMCw2IEBACiAJCQkJQUJBRjIyMDcwQzAzQjFDNzAwQjBCQ0YwIC8qIENocm9tZU1h
Yy5tbSAqLywKIAkJCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJN
YWMubW0gKi8sCiAJCQkJOTNDMDlBN0UwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1h
Yy5tbSAqLywKLQkJCQk2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gKi8s
Ci0JCQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmgg
Ki8sCi0JCQkJN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tICovLAogCQkJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLywK
IAkJCQlFMUMyRjI0ODE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0gKi8sCiAJCQkJ
RjU4Nzg1NEMwMkRFMzc1OTAxRUE0MTIyIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCAqLywKQEAgLTIy
MTIxLDYgKzIyMTE4LDcgQEAKIAkJCQkxQTU2OUNGODBEN0UyQjgyMDA3QzM5ODMgLyogY19jbGFz
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkEwRDdFMkI4MjAwN0MzOTgzIC8qIGNfaW5z
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZDMEQ3RTJCODIwMDdDMzk4MyAvKiBj
X3J1bnRpbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAv
KiBGcmFtZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkUwRDdFMkI4
MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMUEwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNjRCNENDMENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmggaW4gSGVhZGVycyAqLywK
QEAgLTIyOTc5LDcgKzIyOTc3LDYgQEAKIAkJCQk2MjhEMjE0RTEyMTMxRUY0MDA1NURDRkMgLyog
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNzAxODBG
Mjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OUUwRTA5OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAot
CQkJCTdDRTMwREFBMTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVBQjAxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERp
cmVjdG9yeURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjU5LDEwICsyNjI1Niw4IEBA
CiAJCQkJOTMyRTE2MDkwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRl
TWFjaGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkJBNzY2RTE2NjQyN0E4MDA1QkU1RDEg
LyogRnJhbWVMb2FkUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NUJGMDI0NTA5NzQ4
MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwRDA5
OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEE4Qzk2RUIwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJN0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5n
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQUQxN0QxNDE1MTAwN0ZGODQyIC8qIEpT
UlRDRGF0YUNoYW5uZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUEyMTQ4NDA5N0Ez
RjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzkxQTEw
MTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3NzY4LDYgKzI3NzYzLDcgQEAKIAkJCQk1MUUwQkIzOTBEQTVBQ0I2MDBBOUU0MTcgLyogU3Rv
cmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzI3N0U1MjE3RDAxOENDMDAxNTUzNEQg
LyogSlNNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MEQwRTgyMEZG
NDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUM0Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDNTVFMzhDMDEwMDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMDlEQjQxNkFGNUY2QzAwODUzOEU3IC8q
IFN0b3JhZ2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEwMkQ5NTBGRDlBQTJE
MDBGQUZGMDQgLyogU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCBjYzAzNjU1MjZlMzE2ZTA1ZDViMTViYjc0NDRj
M2JiMmJjZmE5MDUwLi5hNmFjMzk5YzBlNzc2NDM1OWQ1YTkyZjNmZWVlY2JhYzBmMjViY2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9y
dCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2YXRlLmgiCiAjaW1wb3J0ICJE
T01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKICNpbXBvcnQgIkZvbnQu
aCIKICNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgog
I2ltcG9ydCAiSFRNTEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAi
SFRNTFBhcnNlcklkaW9tcy5oIgpAQCAtMjg3LDkgKzI4Nyw5IEBAIGlkIDxET01FdmVudFRhcmdl
dD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKICAgICAvLyBGSVhNRTog
Q291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6Ok5vZGUgYW5kIGF1dG9nZW5l
cmF0ZT8KICAgICBXZWJDb3JlOjpOb2RlKiBub2RlID0gY29yZShzZWxmKTsKICAgICBXZWJDb3Jl
OjpGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFt
ZSkKKyAgICBpZiAoIWZyYW1lIHx8ICFub2RlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBmcmFtZS0+bm9kZUltYWdlKG5vZGUpLmdldCgpOworICAgIHJldHVybiBbW2NyZWF0ZURy
YWdJbWFnZUZvck5vZGUoKmZyYW1lLCAqbm9kZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAK
IC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKQEAgLTMzMiwxMCArMzMyLDEwIEBAIGlkIDxET01FdmVu
dFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKIHsKICAgICBX
ZWJDb3JlOjpSYW5nZSogcmFuZ2UgPSBjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSA9IHJhbmdlLT5vd25lckRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQor
ICAgIGlmICghZnJhbWUgfHwgIXJhbmdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFdlYkNvcmU6OnJhbmdlSW1hZ2UoZnJhbWUsIHJhbmdlLCBmb3JjZUJsYWNrVGV4dCk7Cisg
ICAgcmV0dXJuIFtbY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoKmZyYW1lLCAqcmFuZ2UsIGZvcmNl
QmxhY2tUZXh0KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKXRleHRS
ZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAppbmRleCA5ZDJlMjc1MmZkZjJiN2M2NjQyYTI0
MjRmODgwNjNlYzhhNzFjN2M4Li4zMDdmY2MxNWY3ZDA4MDhmY2RlZDY0OWEyNzJlYmMwY2I2ODAz
NTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcApAQCAtMjc3LDEwICsyNzcsMTEgQEAgRHJh
Z0ltYWdlUmVmIENsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBsb2NhdGlvbikg
Y29uc3QKIAogICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKICAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IG1fZHJhZ0ltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZyYW1lLT5ub2RlSW1hZ2UobV9kcmFnSW1hZ2VFbGVtZW50LmdldCgpKTsK
KyAgICAgICAgICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgKm1fZHJh
Z0ltYWdlRWxlbWVudCk7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7IC8vIFdlIGRvIG5vdCBoYXZl
IGVub3VnaCBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYSBkcmFnIGltYWdlLCB1c2UgdGhlIGRlZmF1
bHQgaWNvbi4KKyAgICAvLyBXZSBkbyBub3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gY3Jl
YXRlIGEgZHJhZyBpbWFnZSwgdXNlIHRoZSBkZWZhdWx0IGljb24uCisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2Fy
ZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRNYWMubW0KaW5kZXggNzZjYTZm
Y2EzZTQyNDA3YjVmOGU3YjM1ZTY1ODczN2MyMTEzZThmYi4uYTA5YjMwYTRhNjY4M2JhMWZkN2Zi
NDVmYTg5YjJkYmVjMDBjMzI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBi
b2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpbXBvcnQgIkNhY2hlZEltYWdlLmgiCiAjaW1wb3J0ICJFbGVtZW50
LmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgorI2ltcG9ydCAiRHJhZ0ltYWdl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsMTYgKzM3LDE2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIENsaXBib2FyZDo6ZHJhZ0ltYWdlIGluIENsaXBib2FyZC5jcHAgZG9l
cyBub3QgaGFuZGxlIGNvcnJlY3RseSwgc28gbXVzdCByZXNvbHZlIHRoYXQgYXMgd2VsbC4KIERy
YWdJbWFnZVJlZiBDbGlwYm9hcmQ6OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgbG9jYXRpb24p
IGNvbnN0CiB7Ci0gICAgTlNJbWFnZSAqcmVzdWx0ID0gbmlsOworICAgIERyYWdJbWFnZVJlZiBy
ZXN1bHQgPSBuaWw7CiAgICAgaWYgKG1fZHJhZ0ltYWdlRWxlbWVudCkgewogICAgICAgICBpZiAo
RnJhbWUqIGZyYW1lID0gbV9kcmFnSW1hZ2VFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpIHsK
LSAgICAgICAgICAgIE5TUmVjdCBpbWFnZVJlY3Q7Ci0gICAgICAgICAgICBOU1JlY3QgZWxlbWVu
dFJlY3Q7Ci0gICAgICAgICAgICByZXN1bHQgPSBzbmFwc2hvdERyYWdJbWFnZShmcmFtZSwgbV9k
cmFnSW1hZ2VFbGVtZW50LmdldCgpLCAmaW1hZ2VSZWN0LCAmZWxlbWVudFJlY3QpOworICAgICAg
ICAgICAgSW50UmVjdCBpbWFnZVJlY3Q7CisgICAgICAgICAgICBJbnRSZWN0IGVsZW1lbnRSZWN0
OworICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2UoKmZyYW1lLCAq
bV9kcmFnSW1hZ2VFbGVtZW50LCBpbWFnZVJlY3QsIGVsZW1lbnRSZWN0KTsKICAgICAgICAgICAg
IC8vIENsaWVudCBzcGVjaWZpZXMgcG9pbnQgcmVsYXRpdmUgdG8gZWxlbWVudCwgbm90IHRoZSB3
aG9sZSBpbWFnZSwgd2hpY2ggbWF5IGluY2x1ZGUgY2hpbGQKICAgICAgICAgICAgIC8vIGxheWVy
cyBzcHJlYWQgb3V0IGFsbCBvdmVyIHRoZSBwbGFjZS4KLSAgICAgICAgICAgIGxvY2F0aW9uLnNl
dFgoZWxlbWVudFJlY3Qub3JpZ2luLnggLSBpbWFnZVJlY3Qub3JpZ2luLnggKyBtX2RyYWdMb2Nh
dGlvbi54KCkpOwotICAgICAgICAgICAgbG9jYXRpb24uc2V0WShpbWFnZVJlY3Quc2l6ZS5oZWln
aHQgLSAoZWxlbWVudFJlY3Qub3JpZ2luLnkgLSBpbWFnZVJlY3Qub3JpZ2luLnkgKyBtX2RyYWdM
b2NhdGlvbi55KCkpKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNldFgoZWxlbWVudFJlY3QueCgp
IC0gaW1hZ2VSZWN0LngoKSArIG1fZHJhZ0xvY2F0aW9uLngoKSk7CisgICAgICAgICAgICBsb2Nh
dGlvbi5zZXRZKGltYWdlUmVjdC5oZWlnaHQoKSAtIChlbGVtZW50UmVjdC55KCkgLSBpbWFnZVJl
Y3QueSgpICsgbV9kcmFnTG9jYXRpb24ueSgpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIHJlc3VsdCA9IG1fZHJhZ0ltYWdlLT5pbWFnZSgpLT5n
ZXROU0ltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDdl
YjI0OWRmN2ZmOWI1NWE4ZWNlNWFlN2ZmNDcyZTBjZDdiYWMyNDcuLmY4NjZkY2ZkZmJiMjdjZWM1
NjU5NjVjY2JjMzVjZDU3ODI5OTg2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNs
dWRlICJEcmFnQ2xpZW50LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKKyNpbmNsdWRlICJEcmFn
SW1hZ2UuaCIKICNpbmNsdWRlICJEcmFnU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkRyYWdTdGF0ZS5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtNzgwLDcgKzc4MSw3IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFn
T3BlcmF0aW9uCiAgICAgICAgIH0KICAgICAgICAgbV9jbGllbnQud2lsbFBlcmZvcm1EcmFnU291
cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGNsaXBib2Fy
ZCk7CiAgICAgICAgIGlmICghZHJhZ0ltYWdlKSB7Ci0gICAgICAgICAgICBkcmFnSW1hZ2UgPSBk
aXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oc3JjLmRyYWdJbWFnZUZvclNlbGVjdGlvbigpLCBE
cmFnSW1hZ2VBbHBoYSk7CisgICAgICAgICAgICBkcmFnSW1hZ2UgPSBkaXNzb2x2ZURyYWdJbWFn
ZVRvRnJhY3Rpb24oY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKHNyYyksIERyYWdJbWFnZUFs
cGhhKTsKICAgICAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhzcmMp
OwogICAgICAgICAgICAgbV9kcmFnT2Zmc2V0ID0gSW50UG9pbnQoZHJhZ09yaWdpbi54KCkgLSBk
cmFnTG9jLngoKSwgZHJhZ09yaWdpbi55KCkgLSBkcmFnTG9jLnkoKSk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggNjI0MWVlM2M5NTJiNDYxNTVjMjkyMDZiMDhmOTAxZTAwZTUy
ZjU4MC4uNWMwMzYxMWU4Yjc1MWY5MTZkZTJlZDRiNzI2YjYzNjFiNzJmYWExNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTk2NiwxMDggKzk2Niw0IEBAIGJvb2wgRnJhbWU6OmlzVVJMQWxsb3dl
ZChjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmICFQTEFU
Rk9STShNQUMpICYmICFQTEFURk9STShXSU4pCi1zdHJ1Y3QgU2NvcGVkRnJhbWVQYWludGluZ1N0
YXRlIHsKLSAgICBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoRnJhbWUqIGZyYW1lLCBOb2RlKiBu
b2RlKQotICAgICAgICA6IGZyYW1lKGZyYW1lKQotICAgICAgICAsIG5vZGUobm9kZSkKLSAgICAg
ICAgLCBwYWludEJlaGF2aW9yKGZyYW1lLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKSkKLSAgICAg
ICAgLCBiYWNrZ3JvdW5kQ29sb3IoZnJhbWUtPnZpZXcoKS0+YmFzZUJhY2tncm91bmRDb2xvcigp
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPnJlbmRlcmVyKCkpOwotICAg
ICAgICBpZiAobm9kZSkKLSAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURyYWdT
dGF0ZSh0cnVlKTsKLSAgICB9Ci0KLSAgICB+U2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKCkKLSAg
ICB7Ci0gICAgICAgIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBu
b2RlLT5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOwotICAgICAgICBmcmFtZS0+
dmlldygpLT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwotICAgICAgICBmcmFtZS0+
dmlldygpLT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7Ci0gICAgICAg
IGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcoMCk7Ci0gICAgfQotCi0gICAgRnJhbWUqIGZy
YW1lOwotICAgIE5vZGUqIG5vZGU7Ci0gICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOwot
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKLX07Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6bm9k
ZUltYWdlKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBz
dGF0ZSh0aGlzLCBub2RlKTsKLQotICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihzdGF0ZS5w
YWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0K
LSAgICAvLyBXaGVuIGdlbmVyYXRpbmcgdGhlIGRyYWcgaW1hZ2UgZm9yIGFuIGVsZW1lbnQsIGln
bm9yZSB0aGUgZG9jdW1lbnQgYmFja2dyb3VuZC4KLSAgICBtX3ZpZXctPnNldEJhc2VCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7
Ci0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUgc3BlY2lhbCBzdWIt
dHJlZSBkcmF3aW5nIG1vZGUuCi0KLSAgICAvLyBEb2N1bWVudDo6dXBkYXRlTGF5b3V0IG1heSBo
YXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIHJlbmRlcmVyLgotICAgIGF1dG8gcmVuZGVyZXIg
PSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgSW50UmVjdCBwYWlu
dGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0
KHRvcExldmVsUmVjdCkpOwotCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOwotICAg
IGlmIChtX3BhZ2UpCi0gICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gbV9wYWdlLT5kZXZpY2VT
Y2FsZUZhY3RvcigpOwotICAgIHBhaW50aW5nUmVjdC5zZXRXaWR0aChwYWludGluZ1JlY3Qud2lk
dGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBwYWludGluZ1JlY3Quc2V0SGVpZ2h0KHBh
aW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLQotICAgIE93blB0cjxJ
bWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUo
KSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKLSAgICBpZiAoIWJ1
ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRy
YW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOwotICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QubWF4WCgpLCBw
YWludGluZ1JlY3QubWF4WSgpKSk7Ci0KLSAgICBtX3ZpZXctPnBhaW50Q29udGVudHMoYnVmZmVy
LT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
YnVmZmVyLT5jb3B5SW1hZ2UoKTsKLQotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBv
cmllbnRhdGlvbkRlc2NyaXB0aW9uKHJlbmRlcmVyLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbigpKTsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIG9yaWVudGF0
aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCku
aW1hZ2VPcmllbnRhdGlvbigpKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UoaW1hZ2UuZ2V0KCksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwotfQotCi1EcmFn
SW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCi17Ci0gICAgaWYgKCFzZWxl
Y3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgU2NvcGVk
RnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKHRoaXMsIDApOwotICAgIG1fdmlldy0+c2V0UGFpbnRC
ZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSk7Ci0gICAgbV9kb2MtPnVwZGF0ZUxh
eW91dCgpOwotCi0gICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHNl
bGVjdGlvbigpLmJvdW5kcygpKTsKLQotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsK
LSAgICBpZiAobV9wYWdlKQotICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9IG1fcGFnZS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBwYWludGluZ1JlY3Quc2V0V2lkdGgocGFpbnRpbmdSZWN0
LndpZHRoKCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcGFpbnRpbmdSZWN0LnNldEhlaWdo
dChwYWludGluZ1JlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5z
aXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7Ci0gICAgaWYg
KCFidWZmZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFu
c2xhdGUoLXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKLSAgICBidWZmZXIt
PmNvbnRleHQoKS0+Y2xpcChGbG9hdFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0Lm1heFgoKSwgcGFp
bnRpbmdSZWN0Lm1heFkoKSkpOwotCi0gICAgbV92aWV3LT5wYWludENvbnRlbnRzKGJ1ZmZlci0+
Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOwotCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJ1
ZmZlci0+Y29weUltYWdlKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShp
bWFnZS5nZXQoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwotfQotCi0jZW5kaWYK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDg0MDdlOWUyYmNm
M2VlZmVkZGJmMDUzMWJlNmNlOTI3OTQ1NzI3N2MuLjVmMTg2NmZlMjAyZmNmZWE2NDQyYzBiYmVm
ODIwZjU2ZWQyM2U3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNkZWZp
bmUgRnJhbWVfaAogCiAjaW5jbHVkZSAiQWRqdXN0Vmlld1NpemVPck5vdC5oIgotI2luY2x1ZGUg
IkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVU
cmVlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtNTgsMTEgKzU3LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBFZGl0b3I7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBj
bGFzcyBFdmVudEhhbmRsZXI7CisgICAgY2xhc3MgRmxvYXRTaXplOwogICAgIGNsYXNzIEZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlcjsKICAgICBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKICAgICBjbGFz
cyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogICAgIGNsYXNz
IEhUTUxUYWJsZUNlbGxFbGVtZW50OworICAgIGNsYXNzIEltYWdlQnVmZmVyOwogICAgIGNsYXNz
IEludFJlY3Q7CiAgICAgY2xhc3MgTWFpbkZyYW1lOwogICAgIGNsYXNzIE5vZGU7CkBAIC0xNzcs
OSArMTc4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0cmluZyBkaXNwbGF5
U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgICAg
IERyYWdJbWFnZVJlZiBub2RlSW1hZ2UoTm9kZSopOwotICAgICAgICBEcmFnSW1hZ2VSZWYgZHJh
Z0ltYWdlRm9yU2VsZWN0aW9uKCk7Ci0KICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KTsKICAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50QXRQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpOwogICAg
ICAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFt
ZVBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmNiMzBjZGU0OWNlOTEzOWYwMzk4YTZhN2Y5YTU3YTE1ZGU0ZmUxYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCkBAIC0w
LDAgKzEsMTM0IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdh
c2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJGcmFtZVNuYXBzaG90dGlu
Zy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1
ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNjb3BlZEZyYW1lUGFpbnRpbmdT
dGF0ZSB7CisgICAgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKEZyYW1lJiBmcmFtZSwgTm9kZSog
bm9kZSkKKyAgICA6IGZyYW1lKGZyYW1lKQorICAgICwgbm9kZShub2RlKQorICAgICwgcGFpbnRC
ZWhhdmlvcihmcmFtZS52aWV3KCktPnBhaW50QmVoYXZpb3IoKSkKKyAgICAsIGJhY2tncm91bmRD
b2xvcihmcmFtZS52aWV3KCktPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKSkKKyAgICB7CisgICAgICAg
IEFTU0VSVCghbm9kZSB8fCBub2RlLT5yZW5kZXJlcigpKTsKKyAgICB9CisKKyAgICB+U2NvcGVk
RnJhbWVQYWludGluZ1N0YXRlKCkKKyAgICB7CisgICAgICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFp
bnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKKyAgICAgICAgZnJhbWUudmlldygpLT5zZXRCYXNl
QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7CisgICAgICAgIGZyYW1lLnZpZXcoKS0+
c2V0Tm9kZVRvRHJhdyhudWxscHRyKTsKKyAgICB9CisKKyAgICBGcmFtZSYgZnJhbWU7CisgICAg
Tm9kZSogbm9kZTsKKyAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CisgICAgQ29sb3Ig
YmFja2dyb3VuZENvbG9yOworfTsKKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFw
c2hvdEZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgU25h
cHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgRnJhbWVWaWV3OjpTZWxlY3Rpb25JblNuYXBz
aG90IHNob3VsZEluY2x1ZGVTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247
CisgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxp
Z2h0aW5nKQorICAgICAgICBzaG91bGRJbmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpFeGNs
dWRlU2VsZWN0aW9uOworCisgICAgRnJhbWVWaWV3OjpDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hv
dCBjb29yZGluYXRlU3BhY2UgPSBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXM7CisgICAg
aWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlcykKKyAgICAgICAg
Y29vcmRpbmF0ZVNwYWNlID0gRnJhbWVWaWV3OjpWaWV3Q29vcmRpbmF0ZXM7CisKKyAgICBQYWlu
dEJlaGF2aW9yIHRleHRQYWludEJlaGF2aW9yID0gMDsKKyAgICBpZiAob3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQorICAgICAgICB0ZXh0UGFpbnRCZWhhdmlvciA9IFBh
aW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dDsKKworICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRp
bmdTdGF0ZSBzdGF0ZShmcmFtZSwgbnVsbHB0cik7CisKKyAgICAvLyBPdGhlciBwYWludCBiZWhh
dmlvcnMgYXJlIHNldCBieSBwYWludENvbnRlbnRzRm9yU25hcHNob3QuCisgICAgUGFpbnRCZWhh
dmlvciBleGlzdGluZ0JlaGF2aW9yID0gZnJhbWUudmlldygpLT5wYWludEJlaGF2aW9yKCk7Cisg
ICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKGV4aXN0aW5nQmVoYXZpb3IgfCB0ZXh0
UGFpbnRCZWhhdmlvcik7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisK
KyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGZyYW1lLnBhZ2UoKSA/IDEgOiBmcmFtZS5w
YWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgSW50UmVjdCB1c2VkUmVjdChpbWFnZVJl
Y3QpOworICAgIHVzZWRSZWN0LnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHVzZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0
b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpLmxlYWtQdHIoKSk7CisgICAgaWYgKCFidWZmZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUo
LXVzZWRSZWN0LngoKSwgLXVzZWRSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNs
aXAoRmxvYXRSZWN0KDAsIDAsIHVzZWRSZWN0Lm1heFgoKSwgdXNlZFJlY3QubWF4WSgpKSk7CisK
KyAgICBmcmFtZS52aWV3KCktPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChidWZmZXItPmNvbnRl
eHQoKSwgdXNlZFJlY3QsIHNob3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7
CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworI2lmICFQTEFURk9STShXSU4pCitzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgU25hcHNo
b3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgaWYgKCFmcmFtZS5zZWxlY3Rpb24oKS5pc1Jhbmdl
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRm9yY2Ugc2VsZWN0aW9uIGhp
Z2hsaWdodGluZyB0byBiZSBpbmNsdWRlZC4KKyAgICBvcHRpb25zICY9IH5TbmFwc2hvdE9wdGlv
bnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nOworICAgIEludFJlY3Qgc2VsZWN0aW9uUmVj
dCA9IGVuY2xvc2luZ0ludFJlY3QoZnJhbWUuc2VsZWN0aW9uKCkuYm91bmRzKCkpOworICAgIHJl
dHVybiBzbmFwc2hvdEZyYW1lUmVjdChmcmFtZSwgc2VsZWN0aW9uUmVjdCwgb3B0aW9ucyk7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiBmcmFt
ZSwgTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUucmVuZGVyZXIoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBjb25zdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgc3RhdGUo
ZnJhbWUsICZub2RlKTsKKworICAgIGZyYW1lLnZpZXcoKS0+c2V0QmFzZUJhY2tncm91bmRDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91
dCgpOworICAgIGZyYW1lLnZpZXcoKS0+c2V0Tm9kZVRvRHJhdygmbm9kZSk7CisKKyAgICAvLyBE
b2N1bWVudDo6dXBkYXRlTGF5b3V0IG1heSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIHJl
bmRlcmVyLgorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLnJlbmRlcmVyKCk7Cisg
ICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBMYXlvdXRS
ZWN0IHRvcExldmVsUmVjdDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBl
ZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7CisgICAg
cmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBwYWludGluZ1JlY3QpOworfQorI2VuZGlm
IC8vICFQTEFURk9STShXSU4pCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzg5M2JkNDBlNjgwNjYwMTc5
ZGNhZDRiNTJlNjAwYzQyNTkzYjUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworICogSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZyYW1lU25hcHNob3R0
aW5nX2gKKyNkZWZpbmUgRnJhbWVTbmFwc2hvdHRpbmdfaAorCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNzIEludFJl
Y3Q7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKK2NsYXNzIE5vZGU7CisKK2VudW0geworICAgIFNuYXBz
aG90T3B0aW9uc05vbmUgPSAwLAorICAgIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25I
aWdobGlnaHRpbmcgPSAxIDw8IDAsCisgICAgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0
ZXMgPSAxIDw8IDEsCisgICAgU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgPSAxIDw8IDIs
Cit9OwordHlwZWRlZiB1aW50MzJfdCBTbmFwc2hvdE9wdGlvbnM7CisKK3N0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0Jiwg
U25hcHNob3RPcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZSk7CitzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYsIE5vZGUmKTsKK3N0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmLCBTbmFwc2hvdE9wdGlvbnMg
PSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRnJhbWVTbmFwc2hvdHRpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRnJhbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmYjFmOTFiY2JkNmYwNjI3YTYxZDFlOTRk
ZTliNzE0YThiNTQzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQorKysgL2Rldi9udWxsCkBA
IC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGcmFtZS5oIgotCi0jaW1wb3J0ICJE
b2N1bWVudC5oIgotI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbXBvcnQgIkZyYW1l
U2VsZWN0aW9uLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgotI2ltcG9ydCAi
RnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1EcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewotICAg
IG1fZG9jLT51cGRhdGVMYXlvdXQoKTsgLy8gZm9yY2VzIHN0eWxlIHJlY2FsYwotCi0gICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKLSAg
ICBOU1JlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFp
bnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKLQotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJh
dyhub2RlKTsgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0gICAgTlNJ
bWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdCh0aGlzLCBwYWludGluZ1JlY3QpOwotICAgIG1f
dmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLURyYWdJ
bWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoIXNlbGVj
dGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gc2VsZWN0
aW9uSW1hZ2UodGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiZmFiNjdlNzY1ODE0YWU2Y2JjOTAxYmFkNDRhZmQxNTNmODYyYTIyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGcmFtZVNuYXBzaG90dGluZ01hY19oCi0jZGVm
aW5lIEZyYW1lU25hcHNob3R0aW5nTWFjX2gKLQotT0JKQ19DTEFTUyBOU0ltYWdlOwotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZyYW1lOwotY2xhc3MgUmFuZ2U7Ci1jbGFzcyBOb2Rl
OwotCi1OU0ltYWdlKiBzZWxlY3Rpb25JbWFnZShGcmFtZSosIGJvb2wgZm9yY2VCbGFja1RleHQg
PSBmYWxzZSk7Ci1OU0ltYWdlKiByYW5nZUltYWdlKEZyYW1lKiwgUmFuZ2UqLCBib29sIGZvcmNl
QmxhY2tUZXh0ID0gZmFsc2UpOwotTlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoRnJhbWUqLCBO
b2RlKiwgTlNSZWN0KiBpbWFnZVJlY3QsIE5TUmVjdCogZWxlbWVudFJlY3QpOwotTlNJbWFnZSog
aW1hZ2VGcm9tUmVjdChGcmFtZSosIE5TUmVjdCk7Ci0KLX0KLQotI2VuZGlmIC8vIEZyYW1lU25h
cHNob3R0aW5nTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1l
U25hcHNob3R0aW5nTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hv
dHRpbmdNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MmMyZjIzY2IxN2Jk
MDNkNGU4YTVlZTE5NTE0YWM0MzkxZDE5ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRp
bmdNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtv
diAoYXBAbnlwb3AuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCi0KLSNpbXBvcnQgIkJsb2NrRXhjZXB0
aW9ucy5oIgotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0
ICJGcmFtZVNlbGVjdGlvbi5oIgotI2ltcG9ydCAiRnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJHcmFw
aGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIlJhbmdlLmgiCi0jaW1wb3J0ICJSZW5kZXJWaWV3Lmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTlNJbWFnZSogaW1hZ2VGcm9tUmVjdChGcmFtZSog
ZnJhbWUsIE5TUmVjdCByZWN0KQotewotICAgIFBhaW50QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBm
cmFtZS0+dmlldygpLT5wYWludEJlaGF2aW9yKCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFp
bnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdM
YXllcnMpOwotICAgIAotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICAKLSAg
ICBOU0ltYWdlKiByZXN1bHRJbWFnZSA9IFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoU2l6ZTpy
ZWN0LnNpemVdIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBpZiAocmVjdC5zaXplLndpZHRoICE9
IDAgJiYgcmVjdC5zaXplLmhlaWdodCAhPSAwKSB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNs
YXJhdGlvbnMiCi0gICAgICAgIFtyZXN1bHRJbWFnZSBzZXRGbGlwcGVkOllFU107Ci0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgICAgIFtyZXN1bHRJbWFnZSBsb2NrRm9jdXNdOwot
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoKENHQ29udGV4dFJlZilb
W05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdKTsgICAgICAg
IAotICAgICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotICAgICAgICBncmFwaGljc0NvbnRl
eHQudHJhbnNsYXRlKC1yZWN0Lm9yaWdpbi54LCAtcmVjdC5vcmlnaW4ueSk7Ci0gICAgICAgIGZy
YW1lLT52aWV3KCktPnBhaW50Q29udGVudHMoJmdyYXBoaWNzQ29udGV4dCwgSW50UmVjdChyZWN0
KSk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICAgICAgW3Jlc3Vs
dEltYWdlIHVubG9ja0ZvY3VzXTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIK
LSAgICAgICAgW3Jlc3VsdEltYWdlIHNldEZsaXBwZWQ6Tk9dOwotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHBvcAotICAgIH0KLSAgICAKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2
aW9yKG9sZEJlaGF2aW9yKTsKLSAgICByZXR1cm4gcmVzdWx0SW1hZ2U7Ci0gICAgCi0gICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICAKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWlu
dEJlaGF2aW9yKG9sZEJlaGF2aW9yKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi1OU0ltYWdlKiBz
ZWxlY3Rpb25JbWFnZShGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCi17Ci0gICAg
ZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25s
eSB8IChmb3JjZUJsYWNrVGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsK
LSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgTlNJbWFnZSogcmVz
dWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgZnJhbWUtPnNlbGVjdGlvbigpLmJvdW5kcygpKTsK
LSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JOb3JtYWwp
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLU5TSW1hZ2UgKnJhbmdlSW1hZ2UoRnJhbWUqIGZy
YW1lLCBSYW5nZSogcmFuZ2UsIGJvb2wgZm9yY2VCbGFja1RleHQpCi17Ci0gICAgZnJhbWUtPnZp
ZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IChmb3Jj
ZUJsYWNrVGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsKLSAgICBmcmFt
ZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgUmVuZGVyVmlldyogdmlldyA9IGZy
YW1lLT5jb250ZW50UmVuZGVyZXIoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0KLSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlLT5zdGFydFBvc2l0aW9uKCk7Ci0gICAg
UG9zaXRpb24gY2FuZGlkYXRlID0gc3RhcnQuZG93bnN0cmVhbSgpOwotICAgIGlmIChjYW5kaWRh
dGUuZGVwcmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgc3RhcnQgPSBjYW5kaWRhdGU7Ci0KLSAgICBQb3NpdGlvbiBlbmQgPSBy
YW5nZS0+ZW5kUG9zaXRpb24oKTsKLSAgICBjYW5kaWRhdGUgPSBlbmQudXBzdHJlYW0oKTsKLSAg
ICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0ZWRO
b2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgIGVuZCA9IGNhbmRpZGF0ZTsKLQotICAgIGlmIChz
dGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkgfHwgc3RhcnQgPT0gZW5kKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgUmVuZGVyT2JqZWN0KiBzYXZlZFN0YXJ0UmVuZGVyZXI7Ci0gICAg
aW50IHNhdmVkU3RhcnRPZmZzZXQ7Ci0gICAgUmVuZGVyT2JqZWN0KiBzYXZlZEVuZFJlbmRlcmVy
OwotICAgIGludCBzYXZlZEVuZE9mZnNldDsKLSAgICB2aWV3LT5nZXRTZWxlY3Rpb24oc2F2ZWRT
dGFydFJlbmRlcmVyLCBzYXZlZFN0YXJ0T2Zmc2V0LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZlZEVu
ZE9mZnNldCk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydC5kZXBy
ZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgIGlmICghc3RhcnRSZW5kZXJlcikKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmQuZGVw
cmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIWVuZFJlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgdmlldy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0
YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJlbmRlcmVyLCBlbmQuZGVwcmVjYXRl
ZEVkaXRpbmdPZmZzZXQoKSwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOwotICAgIE5TSW1h
Z2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QoZnJhbWUsIHZpZXctPnNlbGVjdGlvbkJvdW5kcygp
KTsKLSAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc2F2ZWRTdGFydFJlbmRlcmVyLCBzYXZlZFN0YXJ0
T2Zmc2V0LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZlZEVuZE9mZnNldCwgUmVuZGVyVmlldzo6UmVw
YWludE5vdGhpbmcpOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWlu
dEJlaGF2aW9yTm9ybWFsKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLU5TSW1hZ2UqIHNu
YXBzaG90RHJhZ0ltYWdlKEZyYW1lKiBmcmFtZSwgTm9kZSogbm9kZSwgTlNSZWN0KiBpbWFnZVJl
Y3QsIE5TUmVjdCogZWxlbWVudFJlY3QpCi17Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICAKLSAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOyAgICAvLyBtYXJr
IGRyYWdnZWQgbm9kZXMgKHNvIHRoZXkgcGljayB1cCB0aGUgcmlnaHQgQ1NTKQotICAgIGZyYW1l
LT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsgIC8vIGZvcmNlcyBzdHlsZSByZWNhbGMgLSBu
ZWVkZWQgc2luY2UgY2hhbmdpbmcgdGhlIGRyYWcgc3RhdGUgbWlnaHQKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbXBseSBuZXcgc3R5bGVzLCBwbHVzIEpTIGNv
dWxkIGhhdmUgY2hhbmdlZCBvdGhlciB0aGluZ3MKLQotCi0gICAgLy8gRG9jdW1lbnQ6OnVwZGF0
ZUxheW91dCBtYXkgaGF2ZSBibG93biBhd2F5IHRoZSBvcmlnaW5hbCBSZW5kZXJFbGVtZW50Lgot
ICAgIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgTlNS
ZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5n
Um9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBpZiAoTlNJc0VtcHR5UmVjdChwYWludGlu
Z1JlY3QpKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9k
ZVRvRHJhdyhub2RlKTsgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0g
ICAgTlNJbWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgcGFpbnRpbmdSZWN0KTsK
LSAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsKLSAgICBmcmFtZS0+ZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJhdygw
KTsKLQotICAgIGlmIChlbGVtZW50UmVjdCkKLSAgICAgICAgKmVsZW1lbnRSZWN0ID0gcGl4ZWxT
bmFwcGVkSW50UmVjdCh0b3BMZXZlbFJlY3QpOwotICAgIGlmIChpbWFnZVJlY3QpCi0gICAgICAg
ICppbWFnZVJlY3QgPSBwYWludGluZ1JlY3Q7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4v
RnJhbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCmluZGV4
IDVhYWYzYTY3OGM5ZTU0M2FmNjgzYjM3YWQ1YjA2Y2NlMDY0NDNiOWYuLjk2NzRmMTc2OGY1ZGQ4
NDI1YjYwYzdhZjE2ZjBmMWY3ZDZmNzYzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvd2luL0ZyYW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdp
bi5jcHAKQEAgLTU3LDMwICs1Nyw0IEBAIEdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQogICAgIHJldHVybiBpbWFn
ZTsKIH0KIAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQotewot
ICAgIGlmIChzZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiBpbWFnZUZyb21T
ZWxlY3Rpb24odGhpcywgZmFsc2UpLmxlYWsoKTsKLQotICAgIHJldHVybiAwOwotfQotCi1EcmFn
SW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewotICAgIGRvY3VtZW50KCkt
PnVwZGF0ZUxheW91dCgpOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJl
bmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBM
YXlvdXRSZWN0IHRvcExldmVsUmVjdDsKLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVs
U25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7
Ci0KLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1
Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIEdESU9iamVjdDxIQklUTUFQPiByZXN1bHQgPSBpbWFn
ZUZyb21SZWN0KHRoaXMsIHBhaW50aW5nUmVjdCk7Ci0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3
KDApOwotCi0gICAgcmV0dXJuIHJlc3VsdC5sZWFrKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCmluZGV4IDNhMjcyM2U2M2Q2ZDdlN2Vj
MDQ0Y2IxMmYyZWE3YmQwNmNmZTY1OWYuLjI2OTcyNWMxZjliOWI4MGQ1NzgxNDg0ZjkzMWFiMjVk
ZDNhZTMzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uaApAQCAtMzUsNyArMzUsNyBA
QCBjbGFzcyBGcmFtZTsKIGNsYXNzIEludFJlY3Q7CiAKIEdESU9iamVjdDxIQklUTUFQPiBpbWFn
ZUZyb21SZWN0KGNvbnN0IEZyYW1lKiwgSW50UmVjdCYpOwotR0RJT2JqZWN0PEhCSVRNQVA+IGlt
YWdlRnJvbVNlbGVjdGlvbihGcmFtZSosIGJvb2wgZm9yY2VXaGl0ZVRleHQpOworR0RJT2JqZWN0
PEhCSVRNQVA+IGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSosIGJvb2wgZm9yY2VCbGFja1RleHQp
Owogdm9pZCBjb21wdXRlUGFnZVJlY3RzRm9yRnJhbWUoRnJhbWUqLCBjb25zdCBJbnRSZWN0JiBw
cmludFJlY3QsIGZsb2F0IGhlYWRlckhlaWdodCwgZmxvYXQgZm9vdGVySGVpZ2h0LCBmbG9hdCB1
c2VyU2NhbGVGYWN0b3IsIFZlY3RvcjxJbnRSZWN0PiYgb3V0UGFnZXMsIGludCYgb3V0UGFnZUhl
aWdodCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
SW1hZ2UuY3BwCmluZGV4IGI4MWFmZDU3OWU4MjkzZWVmYTJiYTkzYjliYjU1YzFmNTA3NmNmNDcu
LjdjNDY3NDgxYmQ1NmEzZDc1Yjk2OTBmZjExZWFlNjNjNWViODhhNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0ltYWdlLmNwcApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQog
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0yOCwyOSArMjgsMzcgQEAKIAogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCiAKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1l
U25hcHNob3R0aW5nLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgor
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiBE
cmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiBpbWFnZSwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBmbG9hdCBo
ZWlnaHRSZXNpemVSYXRpbyA9IDAuMGY7CiAgICAgZmxvYXQgd2lkdGhSZXNpemVSYXRpbyA9IDAu
MGY7CiAgICAgZmxvYXQgcmVzaXplUmF0aW8gPSAtMS4wZjsKICAgICBJbnRTaXplIG9yaWdpbmFs
U2l6ZSA9IGRyYWdJbWFnZVNpemUoaW1hZ2UpOwotICAgIAorCiAgICAgaWYgKHNyY1NpemUud2lk
dGgoKSA+IHNpemUud2lkdGgoKSkgewogICAgICAgICB3aWR0aFJlc2l6ZVJhdGlvID0gc2l6ZS53
aWR0aCgpIC8gKGZsb2F0KXNyY1NpemUud2lkdGgoKTsKICAgICAgICAgcmVzaXplUmF0aW8gPSB3
aWR0aFJlc2l6ZVJhdGlvOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzcmNTaXplLmhlaWdodCgp
ID4gc2l6ZS5oZWlnaHQoKSkgewogICAgICAgICBoZWlnaHRSZXNpemVSYXRpbyA9IHNpemUuaGVp
Z2h0KCkgLyAoZmxvYXQpc3JjU2l6ZS5oZWlnaHQoKTsKICAgICAgICAgaWYgKChyZXNpemVSYXRp
byA8IDAuMGYpIHx8IChyZXNpemVSYXRpbyA+IGhlaWdodFJlc2l6ZVJhdGlvKSkKICAgICAgICAg
ICAgIHJlc2l6ZVJhdGlvID0gaGVpZ2h0UmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAgICAg
aWYgKHNyY1NpemUgPT0gb3JpZ2luYWxTaXplKQogICAgICAgICByZXR1cm4gcmVzaXplUmF0aW8g
PiAwLjBmID8gc2NhbGVEcmFnSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZShyZXNpemVSYXRpbywgcmVz
aXplUmF0aW8pKSA6IGltYWdlOwotICAgIAorCiAgICAgLy8gVGhlIGltYWdlIHdhcyBzY2FsZWQg
aW4gdGhlIHdlYnBhZ2Ugc28gYXQgbWluaW11bSB3ZSBtdXN0IGFjY291bnQgZm9yIHRoYXQgc2Nh
bGluZwogICAgIGZsb2F0IHNjYWxleCA9IHNyY1NpemUud2lkdGgoKSAvIChmbG9hdClvcmlnaW5h
bFNpemUud2lkdGgoKTsKICAgICBmbG9hdCBzY2FsZXkgPSBzcmNTaXplLmhlaWdodCgpIC8gKGZs
b2F0KW9yaWdpbmFsU2l6ZS5oZWlnaHQoKTsKQEAgLTU4LDE0ICs2NiwxNTEgQEAgRHJhZ0ltYWdl
UmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIGMKICAgICAgICAgc2NhbGV4ICo9IHJlc2l6ZVJhdGlvOwogICAgICAgICBz
Y2FsZXkgKj0gcmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHNjYWxlRHJh
Z0ltYWdlKGltYWdlLCBGbG9hdFNpemUoc2NhbGV4LCBzY2FsZXkpKTsKIH0KIAorc3RydWN0IFNj
b3BlZE5vZGVEcmFnU3RhdGUgeworICAgIFNjb3BlZE5vZGVEcmFnU3RhdGUoRnJhbWUmIGZyYW1l
LCBOb2RlJiBub2RlKQorICAgIDogZnJhbWUoZnJhbWUpCisgICAgLCBub2RlKG5vZGUpCisgICAg
eworICAgICAgICBBU1NFUlQobm9kZS5yZW5kZXJlcigpKTsKKyAgICAgICAgbm9kZS5yZW5kZXJl
cigpLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7CisgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnVw
ZGF0ZUxheW91dCgpOworICAgIH0KKworICAgIH5TY29wZWROb2RlRHJhZ1N0YXRlKCkKKyAgICB7
CisgICAgICAgIGlmIChub2RlLnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgIG5vZGUucmVuZGVy
ZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsKKyAgICAgICAgICAgIGZyYW1lLmRvY3VtZW50
KCktPnVwZGF0ZUxheW91dCgpOworICAgICAgICB9CisgICAgfQorCisgICAgRnJhbWUmIGZyYW1l
OworICAgIE5vZGUmIG5vZGU7Cit9OworCitzdGF0aWMgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZyb21TbmFwc2hvdChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90LCBO
b2RlKiBub2RlKQoreworICAgIGlmICghc25hcHNob3QpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uOworI2lmIEVO
QUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCisgICAgaWYgKG5vZGUpIHsKKyAgICAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgIGlmICghcmVu
ZGVyZXIpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBvcmllbnRhdGlv
bi5zZXRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbihyZW5kZXJlci0+c2hvdWxkUmVzcGVjdEltYWdl
T3JpZW50YXRpb24oKSk7CisgICAgICAgIG9yaWVudGF0aW9uLnNldEltYWdlT3JpZW50YXRpb25F
bnVtKHJlbmRlcmVyLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgfQorI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0obm9kZSk7CisjZW5kaWYKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdl
ID0gc25hcHNob3QtPmNvcHlJbWFnZShJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKSk7
CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZS5nZXQoKSwgb3JpZW50YXRpb24pOworfQorCitE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5v
ZGUpCit7CisgICAgU2NvcGVkTm9kZURyYWdTdGF0ZSBlbmFibGVEcmFnKGZyYW1lLCBub2RlKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25hcHNob3ROb2Rl
KGZyYW1lLCBub2RlKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHN0
ZDo6bW92ZShzbmFwc2hvdCksICZub2RlKTsKK30KKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJ
bWFnZUZvclNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCit7Cisg
ICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBmb3JjZUJsYWNrVGV4dCA/IFNuYXBzaG90T3B0
aW9uc0ZvcmNlQmxhY2tUZXh0IDogU25hcHNob3RPcHRpb25zTm9uZTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24oZnJhbWUsIG9w
dGlvbnMpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc3RkOjptb3Zl
KHNuYXBzaG90KSwgbnVsbHB0cik7Cit9CisKK3N0cnVjdCBTY29wZWRGcmFtZVNlbGVjdGlvblN0
YXRlIHsKKyAgICBTY29wZWRGcmFtZVNlbGVjdGlvblN0YXRlKEZyYW1lJiBmcmFtZSkKKyAgICA6
IGZyYW1lKGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSBmcmFt
ZS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJvb3QtPmdldFNlbGVjdGlvbihzdGFy
dFJlbmRlcmVyLCBzdGFydE9mZnNldCwgZW5kUmVuZGVyZXIsIGVuZE9mZnNldCk7CisgICAgfQor
CisgICAgflNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUoKQorICAgIHsKKyAgICAgICAgaWYgKFJl
bmRlclZpZXcqIHJvb3QgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJv
b3QtPnNldFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydE9mZnNldCwgZW5kUmVuZGVyZXIs
IGVuZE9mZnNldCwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOworICAgIH0KKworICAgIEZy
YW1lJiBmcmFtZTsKKyAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXI7CisgICAgUmVuZGVy
T2JqZWN0KiBlbmRSZW5kZXJlcjsKKyAgICBpbnQgc3RhcnRPZmZzZXQ7CisgICAgaW50IGVuZE9m
ZnNldDsKK307CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShGcmFtZSYg
ZnJhbWUsIFJhbmdlJiByYW5nZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKK3sKKyAgICBmcmFtZS5k
b2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBSZW5kZXJWaWV3KiB2aWV3ID0gZnJhbWUu
Y29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIC8vIFRvIHNuYXBzaG90IHRoZSByYW5nZSwgdGVtcG9yYXJpbHkgc2VsZWN0IGl0
IGFuZCB0YWtlIHNlbGVjdGlvbiBzbmFwc2hvdC4KKyAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdl
LnN0YXJ0UG9zaXRpb24oKTsKKyAgICBQb3NpdGlvbiBjYW5kaWRhdGUgPSBzdGFydC5kb3duc3Ry
ZWFtKCk7CisgICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5k
ZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICBzdGFydCA9IGNhbmRpZGF0ZTsK
KworICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlLmVuZFBvc2l0aW9uKCk7CisgICAgY2FuZGlkYXRl
ID0gZW5kLnVwc3RyZWFtKCk7CisgICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYm
IGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICBlbmQgPSBj
YW5kaWRhdGU7CisKKyAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpIHx8IHN0
YXJ0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBjb25zdCBTY29wZWRG
cmFtZVNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKGZyYW1lKTsKKworICAgIFJlbmRlck9i
amVjdCogc3RhcnRSZW5kZXJlciA9IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7
CisgICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciA9IGVuZC5kZXByZWNhdGVkTm9kZSgpLT5y
ZW5kZXJlcigpOworICAgIGlmICghc3RhcnRSZW5kZXJlciB8fCAhZW5kUmVuZGVyZXIpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgU25hcHNob3RPcHRpb25zIG9wdGlvbnMgPSBmb3Jj
ZUJsYWNrVGV4dCA/IFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0IDogU25hcHNob3RPcHRp
b25zTm9uZTsKKyAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc3RhcnRSZW5kZXJlciwgc3RhcnQuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmVuZGVyZXIsIGVuZC5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpLCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCA9IHNuYXBzaG90U2VsZWN0aW9uKGZyYW1lLCBvcHRp
b25zKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHN0ZDo6bW92ZShz
bmFwc2hvdCksIG51bGxwdHIpOworfQorCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9y
SW1hZ2UoRnJhbWUmIGZyYW1lLCBOb2RlJiBub2RlLCBJbnRSZWN0JiBpbWFnZVJlY3QsIEludFJl
Y3QmIGVsZW1lbnRSZWN0KQoreworICAgIFNjb3BlZE5vZGVEcmFnU3RhdGUgZW5hYmxlRHJhZyhm
cmFtZSwgbm9kZSk7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS5yZW5kZXJl
cigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
Ly8gQ2FsY3VsYXRlIGltYWdlIGFuZCBlbGVtZW50IG1ldHJpY3MgZm9yIHRoZSBjbGllbnQsIHRo
ZW4gY3JlYXRlIGRyYWcgaW1hZ2UuCisgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7CisgICAg
SW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWlu
dGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworCisgICAgaWYgKHBhaW50aW5nUmVjdC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgZWxlbWVudFJlY3QgPSBwaXhl
bFNuYXBwZWRJbnRSZWN0KHRvcExldmVsUmVjdCk7CisgICAgaW1hZ2VSZWN0ID0gcGFpbnRpbmdS
ZWN0OworCisgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCA9IHNuYXBz
aG90Tm9kZShmcmFtZSwgbm9kZSk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21TbmFw
c2hvdChzdGQ6Om1vdmUoc25hcHNob3QpLCAmbm9kZSk7Cit9CisKICNpZiAhUExBVEZPUk0oTUFD
KSAmJiAoIVBMQVRGT1JNKFdJTikgfHwgT1MoV0lOQ0UpKQogRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZvckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiwgRm9udFJlbmRlcmluZ01vZGUpCiB7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAppbmRleCBkOGY1MmJjZmFkNDQyNDNmOGFjY2I4NjcwYTA5
NGFmMTEzYzRiMjRkLi45YzE5MDA3NTA2ZmFiMTk1NTI0ODU3MDI5NjU5YWNmNmNlZTcwN2UzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaApAQCAtMjYsMTAgKzI2LDExIEBACiAjaWZu
ZGVmIERyYWdJbWFnZV9oCiAjZGVmaW5lIERyYWdJbWFnZV9oCiAKKyNpbmNsdWRlICJGbG9hdFNp
emUuaCIKICNpbmNsdWRlICJGb250UmVuZGVyaW5nTW9kZS5oIgorI2luY2x1ZGUgIkZyYW1lU25h
cHNob3R0aW5nLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgIklu
dFNpemUuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNDEsMzggKzQyLDQ3IEBAIHR5cGVkZWYgc3RydWN0
IEhCSVRNQVBfXyogSEJJVE1BUDsKIHR5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJv
X3N1cmZhY2VfdDsKICNlbmRpZgogCi0vL1dlIG5lZWQgdG8gI2RlZmluZSBZT2Zmc2V0IGFzIGl0
IG5lZWRzIHRvIGJlIHNoYXJlZCB3aXRoIFdlYktpdAorLy8gV2UgbmVlZCB0byAjZGVmaW5lIFlP
ZmZzZXQgYXMgaXQgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGggV2ViS2l0CiAjZGVmaW5lIERyYWdM
YWJlbEJvcmRlcllPZmZzZXQgMgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBJ
bWFnZTsKLSAgICBjbGFzcyBVUkw7CitjbGFzcyBGcmFtZTsKK2NsYXNzIEltYWdlOworY2xhc3Mg
SW50UmVjdDsKK2NsYXNzIE5vZGU7CitjbGFzcyBSYW5nZTsKK2NsYXNzIFVSTDsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICB0eXBlZGVmIFJldGFpblB0cjxOU0ltYWdlPiBEcmFnSW1hZ2VSZWY7
Cit0eXBlZGVmIFJldGFpblB0cjxOU0ltYWdlPiBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9S
TShXSU4pCi0gICAgdHlwZWRlZiBIQklUTUFQIERyYWdJbWFnZVJlZjsKK3R5cGVkZWYgSEJJVE1B
UCBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKE5JWCkKLSAg
ICB0eXBlZGVmIGNhaXJvX3N1cmZhY2VfdCogRHJhZ0ltYWdlUmVmOwordHlwZWRlZiBjYWlyb19z
dXJmYWNlX3QqIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0o
QkxBQ0tCRVJSWSkKLSAgICB0eXBlZGVmIHZvaWQqIERyYWdJbWFnZVJlZjsKK3R5cGVkZWYgdm9p
ZCogRHJhZ0ltYWdlUmVmOwogI2VuZGlmCi0gICAgCi0gICAgSW50U2l6ZSBkcmFnSW1hZ2VTaXpl
KERyYWdJbWFnZVJlZik7Ci0gICAgCi0gICAgLy9UaGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIG1l
bW9yeSBuZXV0cmFsLCBlZy4gaWYgdGhleSByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaW1hZ2Us
IAotICAgIC8vdGhleSBzaG91bGQgcmVsZWFzZSB0aGUgaW5wdXQgaW1hZ2UuICBBcyBhIGNvcm9s
bGFyeSB0aGVzZSBtZXRob2RzIGRvbid0IGd1YXJhbnRlZQotICAgIC8vdGhlIGlucHV0IGltYWdl
IHJlZiB3aWxsIHN0aWxsIGJlIHZhbGlkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGNhbGxlZAotICAg
IERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJhZ0ltYWdlUmVmIGltYWdlLCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbnRTaXplJiBzaXplKTsKLSAgICBEcmFnSW1h
Z2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpOwotICAg
IERyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmIGlt
YWdlLCBmbG9hdCBkZWx0YSk7Ci0gICAgCi0gICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci0gICAgRHJh
Z0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0
IFN0cmluZyYpOwotICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlKTsKLSAgICB2b2lkIGRlbGV0
ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOworCitJbnRTaXplIGRyYWdJbWFnZVNpemUoRHJhZ0lt
YWdlUmVmKTsKKworLy8gVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBtZW1vcnkgbmV1dHJhbCwg
ZWcuIGlmIHRoZXkgcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGltYWdlLAorLy8gdGhleSBzaG91
bGQgcmVsZWFzZSB0aGUgaW5wdXQgaW1hZ2UuIEFzIGEgY29yb2xsYXJ5IHRoZXNlIG1ldGhvZHMg
ZG9uJ3QgZ3VhcmFudGVlCisvLyB0aGUgaW5wdXQgaW1hZ2UgcmVmIHdpbGwgc3RpbGwgYmUgdmFs
aWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gY2FsbGVkLgorRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFn
ZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IElu
dFNpemUmIGRzdFNpemUpOworRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJl
ZiwgRmxvYXRTaXplIHNjYWxlKTsKK0RyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJh
Y3Rpb24oRHJhZ0ltYWdlUmVmLCBmbG9hdCBkZWx0YSk7CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwor
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNv
bnN0IFN0cmluZyYpOworCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTm9kZShGcmFt
ZSYsIE5vZGUmKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oRnJh
bWUmLCBib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURy
YWdJbWFnZUZvclJhbmdlKEZyYW1lJiwgUmFuZ2UmLCBib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFs
c2UpOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckltYWdlKEZyYW1lJiwgTm9kZSYs
IEludFJlY3QmIGltYWdlUmVjdCwgSW50UmVjdCYgZWxlbWVudFJlY3QpOworRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJl
bmRlcmluZ01vZGUpOwordm9pZCBkZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmKTsKIH0KIAog
Ci0jZW5kaWYgLy8hRHJhZ0ltYWdlX2gKKyNlbmRpZiAvLyAhRHJhZ0ltYWdlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dl
YktpdEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRF
eHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggNGQyOGI4N2Y5ZTM3YzBk
NDJmM2ExMThjZDlkM2IwMjg2ZDdjZDY4NS4uN2NhZjI3ZmI5Nzc4NmJmNzFmNGEyZDM2NDczNTY4
ZjY1YTcxZTM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJL
aXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYu
aW4KQEAgLTM3NCw2ICszNzQsMTAgQEAgRVhQT1JUUwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRl
cig/bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWVAQml0bWFwSW1hZ2VAV2ViQ29yZUBAVUFFP0FW
PyRQYXNzUmVmUHRyQFVfY2Fpcm9fc3VyZmFjZUBAQFdURkBAWFosID9uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZUBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVRUFBP0FWPyRQYXNzUmVmUHRyQFVfY2Fp
cm9fc3VyZmFjZUBAQFdURkBAWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9kcmF3QEJp
dG1hcEltYWdlQFdlYkNvcmVAQE1BRVhQQVZHcmFwaGljc0NvbnRleHRAMkBBQlZGbG9hdFJlY3RA
MkAxVzRDb2xvclNwYWNlQDJAVzRDb21wb3NpdGVPcGVyYXRvckAyQFc0QmxlbmRNb2RlQDJAVUlt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbkAyQEBaLCA/ZHJhd0BCaXRtYXBJbWFnZUBXZWJDb3Jl
QEBNRUFBWFBFQVZHcmFwaGljc0NvbnRleHRAMkBBRUJWRmxvYXRSZWN0QDJAMVc0Q29sb3JTcGFj
ZUAyQFc0Q29tcG9zaXRlT3BlcmF0b3JAMkBXNEJsZW5kTW9kZUAyQFVJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb25AMkBAWikKICNlbmRpZgorICAgICAgICA/c25hcHNob3ROb2RlQFdlYkNvcmVA
QFlBP0FWPyR1bmlxdWVfcHRyQFZJbWFnZUJ1ZmZlckBXZWJDb3JlQEBVPyRkZWZhdWx0X2RlbGV0
ZUBWSW1hZ2VCdWZmZXJAV2ViQ29yZUBAQHN0ZEBAQHN0ZEBAQUFWRnJhbWVAMUBBQVZOb2RlQDFA
QFoKKyAgICAgICAgP3NuYXBzaG90U2VsZWN0aW9uQFdlYkNvcmVAQFlBP0FWPyR1bmlxdWVfcHRy
QFZJbWFnZUJ1ZmZlckBXZWJDb3JlQEBVPyRkZWZhdWx0X2RlbGV0ZUBWSW1hZ2VCdWZmZXJAV2Vi
Q29yZUBAQHN0ZEBAQHN0ZEBAQUFWRnJhbWVAMUBJQFoKKyAgICAgICAgP2NyZWF0ZURyYWdJbWFn
ZUZvck5vZGVAV2ViQ29yZUBAWUFQQVVIQklUTUFQX19AQEFBVkZyYW1lQDFAQUFWTm9kZUAxQEBa
CisgICAgICAgID9jcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb25AV2ViQ29yZUBAWUFQQVVIQklU
TUFQX19AQEFBVkZyYW1lQDFAX05AWgogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Z2V0SEJJ
VE1BUEBCaXRtYXBJbWFnZUBXZWJDb3JlQEBVQUVfTlBBVUhCSVRNQVBfX0BAQFosID9nZXRIQklU
TUFQQEJpdG1hcEltYWdlQFdlYkNvcmVAQFVFQUFfTlBFQVVIQklUTUFQX19AQEBaKQogICAgICAg
ICBzeW1ib2xXaXRoUG9pbnRlcig/Z2V0SEJJVE1BUE9mU2l6ZUBCaXRtYXBJbWFnZUBXZWJDb3Jl
QEBVQUVfTlBBVUhCSVRNQVBfX0BAUEJWSW50U2l6ZUAyQEBaLCA/Z2V0SEJJVE1BUE9mU2l6ZUBC
aXRtYXBJbWFnZUBXZWJDb3JlQEBVRUFBX05QRUFVSEJJVE1BUF9fQEBQRUJWSW50U2l6ZUAyQEBa
KQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y3JlYXRlQEJpdG1hcEltYWdlQFdlYkNvcmVA
QFNBP0FWPyRQYXNzUmVmUHRyQFZCaXRtYXBJbWFnZUBXZWJDb3JlQEBAV1RGQEBQQVVIQklUTUFQ
X19AQEBaLCA/Y3JlYXRlQEJpdG1hcEltYWdlQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZC
aXRtYXBJbWFnZUBXZWJDb3JlQEBAV1RGQEBQRUFVSEJJVE1BUF9fQEBAWikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tIGIvU291cmNl
L1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0KaW5kZXggNWRmZjZmMGZl
OWMxZDlmMmRlNGExZTExOTNhNWVmYjQ0NjJkMDc5MS4uZDU2MmExNjE5MjY1ZmE2MWUwYjRjMTg5
NmEwOGZmNWZlYjEzYjVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVJT1MubW0KQEAgLTMzLDcgKzMzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRmxv
YXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zy
YW1lU2VsZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU25hcHNob3R0aW5nTWFjLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU25hcHNob3R0aW5nLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL2h0bWxlZGl0aW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQppbmRleCA0ODYyODBlNDdiNmE1NWQ2OTNmODRhMzUxNDJkYTMzOGUyYmY3OWJmLi5h
ZmJmOGNjNjRlMDU0M2VkMjM1YjcyNjEzZGRiYTNhODA4YjkzZjEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTg1LDYgKzg1LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvRG9jdW1lbnRGcmFnbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvRHJhZ0ltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9FZGl0b3JEZWxldGVBY3Rpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvRWxl
bWVudC5oPgpAQCAtOTUsNyArOTYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNlbGVj
dGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNuYXBzaG90dGluZ01hYy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KQEAgLTE4MjAsNyArMTgyMCwxMiBAQCBz
dGF0aWMgYm9vbCBtb3VzZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2ZW50ICpldmVudCkK
IHsKICAgICBpZiAoIVtzZWxmIF9oYXNTZWxlY3Rpb25dKQogICAgICAgICByZXR1cm4gbmlsOwot
ICAgIE5TSW1hZ2UgKmRyYWdJbWFnZSA9IHNlbGVjdGlvbkltYWdlKGNvcmUoW3NlbGYgX2ZyYW1l
XSkpOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CisgICAg
aWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBOU0ltYWdlICpkcmFn
SW1hZ2UgPSBbW2NyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbigqY29yZUZyYW1lKSByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKICAgICBbZHJhZ0ltYWdlIF93ZWJfZGlzc29sdmVUb0ZyYWN0aW9uOldl
YkRyYWdJbWFnZUFscGhhXTsKICAgICByZXR1cm4gZHJhZ0ltYWdlOwogfQpAQCAtNTk2NSw3ICs1
OTcwLDExIEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmlu
ZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiB7CiAgICAgaWYgKCFbc2VsZiBfaGFz
U2VsZWN0aW9uXSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gc2VsZWN0aW9uSW1h
Z2UoY29yZShbc2VsZiBfZnJhbWVdKSwgZm9yY2VCbGFja1RleHQpOworCisgICAgRnJhbWUqIGNv
cmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFtbY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9u
KCpjb3JlRnJhbWUsIGZvcmNlQmxhY2tUZXh0KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAog
LSAoTlNSZWN0KXNlbGVjdGlvbkltYWdlUmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMu
Y3BwCmluZGV4IGNjYmQ3MTkwMWU0NTU3OTAzMWI5MDJiYTU2YTg5NGU2YThkNzljYjMuLmI4MWQ0
YTdkNzM0NzdhZGY4YmRiNzgzYjI1MWRlMWRjOWZmZDkzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01D
b3JlQ2xhc3Nlcy5jcHAKQEAgLTM2LDEwICszNiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ09N
UHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1M
SW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KQEAgLTQ5LDYg
KzQ5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogCiAjaW5jbHVkZSA8aW5pdGd1
aWQuaD4KIC8vIHszQjBDMEVGRi00NzhCLTRiMGItODI5MC1EMjMyMUUwOEUyM0V9CkBAIC0xMjc5
LDcgKzEyODAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnJlbmRl
cmVkSW1hZ2UoSEJJVE1BUCogaW1hZ2UpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAotICAgICppbWFnZSA9IGZyYW1lLT5ub2RlSW1hZ2UobV9lbGVtZW50KTsKKyAg
ICAqaW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgKm1fZWxlbWVudCk7CiAg
ICAgaWYgKCEqaW1hZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217162</attachid>
            <date>2013-11-17 17:21:39 -0800</date>
            <delta_ts>2013-11-18 12:38:32 -0800</delta_ts>
            <desc>v2.3</desc>
            <filename>bug-124325-20131117172138.patch</filename>
            <type>text/plain</type>
            <size>67658</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0NGNiZWZkMmZkZjI5
NGE0N2FkNmZiMzk2YTViZDIyMzAwOTdkMS4uZTI5ZmUyMjgwNWFhYzMzZDQ5Y2NmNjhjNTg3Yjg1
YjJkNzE3ZDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTExLTE2ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc25hcHNob3QgY3JlYXRpb24g
bWV0aG9kcyBoYWQgZHVwbGljYXRlZCBjb2RlIGFuZCB3ZXJlIHNwbGl0CisgICAgICAgIGJldHdl
ZW4gRnJhbWUsIERyYWdJbWFnZSwgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9u
c3MuCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBXZWJDb3JlIHNuYXBzaG90IG1ldGhvZHMgaW50
byBGcmFtZVNuYXBzaG90dGluZworICAgICAgICBhbmQgcmVtb3ZlcyBwbGF0Zm9ybSBpbXBsZW1l
bnRhdGlvbnMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgRHJhZ0ltYWdlIG1ldGhvZHMgcmV1
c2Ugc25hcHNob3QgbWV0aG9kcyB3aGVyZSBwb3NzaWJsZS4gSW5zcGVjdG9yCisgICAgICAgIHdp
bGwgYmUgYWJsZSB0byB0YWtlIHNuYXBzaG90cyB3aXRob3V0IHVzaW5nIGRyYWcgaW1hZ2VzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJbWFn
ZV0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpd
KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQ
YWludGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0
ZTo6flNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hv
dEZyYW1lUmVjdCk6IE1vdmUgbW9zdCBidWZmZXIgbG9naWMgdG8gaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90U2VsZWN0aW9uKTogTW92ZWQgZnJvbSBGcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90Tm9kZSk6IE1vdmVkIGZyb20gRnJhbWUuCisgICAgICAgICogcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcDogcmVtb3ZlIGR1cGxpY2F0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5oOiBGaXggYW4gaW5j
b3JyZWN0IHBhcmFtZXRlciBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY29wZWROb2RlRHJhZ1N0YXRlOjpTY29wZWROb2RlRHJhZ1N0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZE5vZGVEcmFnU3RhdGU6On5TY29wZWROb2Rl
RHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dCk6IEJvaWxlcnBsYXRlIGJ1ZmZlciBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0
ZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRG
cmFtZVNlbGVjdGlvblN0YXRlOjp+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6IE1vdmVkIGZyb20gRnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6IE1vdmVkIGZyb20gRnJh
bWVTbmFwc2hvdHRpbmdNYWMuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKTogdXNlIG51bGxwdHIuCisKIDIwMTMtMTEtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ3J5cHRvIG5vIGxvbmdlciB1c2VzIHNlcXVlbmNl
cyBvZiBBcnJheUJ1ZmZlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCAxNDkzYzJiZjFkOGI1YjEwNTQ3
NTFjYTM5NDFjYzZhODllMGIzZDI2Li43ZDM0YWFjYTA0MWZiZWE2NjMzZGQ2MDdjZGQ1OWMxN2Zh
NmI5MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTMgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIENvbnNvbGlk
YXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUlPUy5tbTogdXNlIG5ldyBoZWFkZXIgZmlsZS4KKwogMjAxMy0xMS0wNyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhIFBMQVRGT1JNKElP
UykgZnJvbSBXZWJLaXQgUHJpdmF0ZSBIZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBhYTNmMTM0
NDEyZDI2YmNlNjhiYmVmMDliZTQyYjRlYTlkYjM0MjYzLi40OWM1ZTlmMzgzOTliYjFhZmYyYzFj
NTBjM2E3MmI0Zjg1ZDc2NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTMtMTEtMTMgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIENvbnNvbGlkYXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG5ldyBwbGF0
Zm9ybS1pbmRlcGVuZGVudCBtZXRob2RzIGluc3RlYWQgb2YgTWFjIG1ldGhvZHMuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2Vs
ZWN0aW9uRHJhZ2dpbmdJbWFnZV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZWxlY3Rpb25J
bWFnZUZvcmNpbmdCbGFja1RleHQ6XSk6CisKIDIwMTMtMTEtMTQgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWltcGxlbWVudCBnZXREYXlCb3VuZGFy
aWVzIHVzaW5nIE5TQ2FsZW5kYXIgb24gMTAuOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDY4N2QyZTU0
YmQ0YjZhNjBjYzhhMDFkNDA0ZTgyNmZhOTg0NTA3M2YuLjY5MWFjMGY2NGQ5NjJjMzI4MDE4MGU0
YzRmYmQ5Mjg5OWZkZDhiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
My0xMS0xNCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAg
ICAgQ29uc29saWRhdGUgdmFyaW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVDbGFz
c2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UpOiB1c2UgY3JlYXRl
RHJhZ0ltYWdlRm9yTm9kZS4KKwogMjAxMy0xMS0xNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIFdpbiBidWlsZCBmaXg7IHNldEN1cnJlbnRU
aW1lKCkgbm8gbG9uZ2VyIHRha2VzIGFuIGV4Y2VwdGlvbiBwYXJhbWV0ZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDQ3MGRmMjQxZWZlODk2M2NjNmY0Nzc1NjJkNGM1MDU2MzhiZjc1OGMuLjcx
Y2EzMjYwZTNkM2EwOTk1YmZjZGZmYzY0MTQxY2Q5Zjk1ZjNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNzI2LDYgKzE3MjYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCiAgICAgcGFnZS9GcmFtZS5jcHAKICAgICBwYWdlL0ZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlci5jcHAKKyAgICBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAogICAg
IHBhZ2UvRnJhbWVUcmVlLmNwcAogICAgIHBhZ2UvRnJhbWVWaWV3LmNwcAogICAgIHBhZ2UvR2Vz
dHVyZVRhcEhpZ2hsaWdodGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
ZmQ1MzI3ODEyNGM5ZDhhZGM1ZjMyNDM0YjA1NWRhM2VhZDBhZGNhYS4uZWVmYjkzYjY1NjU3OTUy
ZGFjODI2NWNmYTEyYzhiYWZiZDA2Mjc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC00MTE4LDYgKzQxMTgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDE0MjQyYjMyMTJmOWY0YWUxZDhiM2QzNjIyNTUyM2VlNzgxNjgyMWUuLjhjZGQxZmY2
ZTM0YmYzNmZiOWE2NDhlODY4YjI0NzBjZmJlNzBlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC00MjcsNyArNDI3LDYgQEAgX19aTjdXZWJDb3JlMTRjb29raWVzRW5hYmxlZEVSS05TXzIxTmV0
d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43V2ViQ29yZTE0ZGVjb2RlSG9z
dE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRlbmNvZGVIb3N0TmFtZUVQOE5TU3RyaW5n
CiBfX1pON1dlYkNvcmUxNGVuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCi1fX1pON1dlYkNvcmUxNHNlbGVjdGlvbklt
YWdlRVBOU181RnJhbWVFYgogX19aTjdXZWJDb3JlMTRzZXRNZXRhZGF0YVVSTEVSTjNXVEY2U3Ry
aW5nRVJLUzFfUzRfCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVmbGlwWUV2CiBfX1pO
N1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVzY2FsZUVkCkBAIC04ODcsNiArODg2LDcgQEAgX19a
TjdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2VDMkV2CiBfX1pON1dlYkNvcmUy
N0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2Rl
RUVFYlJLTlMxXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jazE0c2V0T3JpZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRh
dGlvbkRhdGFFRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFF
dgorX19aTjdXZWJDb3JlMjdjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb25FUk5TXzVGcmFtZUVi
CiBfX1pON1dlYkNvcmUyN3Byb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbEVSS05TXzNVUkxFUzJf
CiBfX1pON1dlYkNvcmUyN3N0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlc0VQRnZ2RQogX19aTjdX
ZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFTjNXVEY3
UGFzc1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQpAQCAtMjAzMiw3ICsyMDMyLDYgQEAg
X19aTjdXZWJDb3JlMzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CiBf
X1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZ0V2
CiBfX1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGlu
Z0V2CiBfX1pON1dlYkNvcmU0NmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9t
YXRpY2FsbHlFdgotX19aTjdXZWJDb3JlNUZyYW1lOW5vZGVJbWFnZUVQTlNfNE5vZGVFCiBfX1pO
N1dlYkNvcmU2Q3Vyc29yOGZyb21UeXBlRU5TMF80VHlwZUUKIF9fWk43V2ViQ29yZTZDdXJzb3JD
MUVQTlNfNUltYWdlRVJLTlNfOEludFBvaW50RQogX19aTjdXZWJDb3JlNkN1cnNvckMxRVJLUzBf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCA1MWU5MThlNzk0ODkyMmNmZDIyMDMxM2E1ZDFhNGJiOTFkYzA5YTBhLi4wMzFiNmNmZTk2YmY1
ODk4NWRlYzNlNTk2OTQ2M2U0YjRlZGI1OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTY5ODMsNiArNjk4Myw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZvY3VzQ29udHJvbGxlci5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGFnZVxHcm91cFNldHRpbmdzLmNwcCIgLz4KQEAgLTE4ODEyLDYgKzE4ODEzLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRm9jdXNEaXJlY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNob3R0aW5nLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhZ2VcR3JvdXBTZXR0aW5ncy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGEzOTVkYWI5
YjYzNjI2N2MxYThhNmJhYmNjNWExYzA2MmVjZjUyY2MuLjExYjJjNTRhNTMxZjExMjUzMDdiMjE4
MDAyOTg2NWVmMGYxOTljMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcxNyw2ICs3MTcsOSBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVNuYXBzaG90dGluZy5jcHAiPgorICAgICAg
PEZpbHRlcj5wYWdlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03NjE3LDYgKzc2MjAsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCI+CiAgICAgICA8
RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuaCI+CisgICAgICA8RmlsdGVyPnBhZ2U8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
Z2VcRnJhbWVUcmVlLmgiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMDRiZWQwN2VmYWM1ODkyOGU1YmEwMTY5NjY0ZTMxYmYwYThiMzlkZS4uMWZm
ZjIxNzI5OTNiYjU3OTVlMzdiOGNkYWVhYjYwYjNkNWNhZGEyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjAwNSw3ICsyMDA1
LDYgQEAKIAkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODMwOTdBM0Y1MzAw
QjkwNTBBIC8qIEZyYW1lVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1QkYwMjJFMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyOTA5NzQ4
MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwICovOyB9OwogCQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1QkYwMjQ1MDk3NDgxOTAwMEM0MzE5
NiAvKiBGcmFtZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAqLzsgfTsKIAkJ
NjVDOTdBRjMwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNv
bmZpZy5oICovOyB9OwogCQk2NUNCRkVGOTA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY3
MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovOyB9OwogCQk2NUNCRkVGQTA5NzRG
NjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIyMDYs
OCArMjIwNSw2IEBACiAJCTdDNTM0M0ZDMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M1MzQzRkExN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAgKi87IH07CiAJCTdDNTM0M0ZEMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNTM0M0ZCMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aCAqLzsgfTsKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlz
dC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
QzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9Owot
CQk3Q0UzMERBOTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi87IH07Ci0JCTdDRTMwREFB
MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0Ux
IC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8qIENTU1ZhbHVl
S2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdv
cmRzLmggKi87IH07CiAJCTdFMTJFOTBGMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5oICovOyB9OwogCQk3RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAgKi87IH07CkBAIC01MjQ0LDYgKzUyNDEsOCBAQAogCQlDM0NGMTdBNTE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0Ey
MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovOyB9Owog
CQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMzE1
QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzRDRDYyOUExODM4Mzc2NjAw
N0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5jcHAgKi87IH07CisJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYx
MjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdy
b3VwU2V0dGluZ3MuY3BwICovOyB9OwogCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3Jv
dXBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MjBGRjQyNzI5
MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFn
ZU5hbWVzcGFjZS5jcHAgKi87IH07CkBAIC04NzQwLDcgKzg3MzksNiBAQAogCQk2NUE2NDBGMDA1
MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVCRjAy
MjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVCRjAy
M0MwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEZyYW1lTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVDQkZFRjcw
OTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnJhbWVWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04OTY4LDggKzg5NjYsNiBAQAogCQk3QzYxMzZGODE3MTBDMzUyMDBGRjRBNTcgLyog
SW5GaWxlc1BhcnNlci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJbkZpbGVzUGFyc2VyLnBtOyBwYXRo
ID0gc2NyaXB0cy9JbkZpbGVzUGFyc2VyLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzYxMzZGOTE3MTBDMzUyMDBGRjRBNTcgLyogU3RhdGljU3RyaW5nLnBtICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsg
bmFtZSA9IFN0YXRpY1N0cmluZy5wbTsgcGF0aCA9IHNjcmlwdHMvU3RhdGljU3RyaW5nLnBtOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyog
SUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJRE5TY3JpcHRX
aGl0ZUxpc3QudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZ01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25h
cHNob3R0aW5nTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lU25h
cHNob3R0aW5nTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMTJFOTBEMTVG
QTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDsgcGF0aCA9
IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21G
aWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAwMTI3RjM0
MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
Mjc0LDYgKzEyMjcwLDggQEAKIAkJQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRUYXJnZXRPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDM0NGMTdBMjE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0
Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVNu
YXBzaG90dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5
RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVz
cGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFt
ZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjA2LDYgKzE1NjA0
LDggQEAKIAkJCQk2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLywKIAkJCQk5
NzRBODYyMDE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCAq
LywKIAkJCQk5NzRBODYyMTE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyLmggKi8sCisJCQkJQzRDRDYyOTgxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0
aW5nLmNwcCAqLywKKwkJCQlDNENENjI5OTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hv
dHRpbmcuaCAqLywKIAkJCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNw
cCAqLywKIAkJCQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8sCiAJ
CQkJNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCkBAIC0xNjUy
MCw5ICsxNjUyMCw2IEBACiAJCQkJQUJBRjIyMDcwQzAzQjFDNzAwQjBCQ0YwIC8qIENocm9tZU1h
Yy5tbSAqLywKIAkJCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJN
YWMubW0gKi8sCiAJCQkJOTNDMDlBN0UwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1h
Yy5tbSAqLywKLQkJCQk2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gKi8s
Ci0JCQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmgg
Ki8sCi0JCQkJN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tICovLAogCQkJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLywK
IAkJCQlFMUMyRjI0ODE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0gKi8sCiAJCQkJ
RjU4Nzg1NEMwMkRFMzc1OTAxRUE0MTIyIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCAqLywKQEAgLTIy
MTIxLDYgKzIyMTE4LDcgQEAKIAkJCQkxQTU2OUNGODBEN0UyQjgyMDA3QzM5ODMgLyogY19jbGFz
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkEwRDdFMkI4MjAwN0MzOTgzIC8qIGNfaW5z
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZDMEQ3RTJCODIwMDdDMzk4MyAvKiBj
X3J1bnRpbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAv
KiBGcmFtZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkUwRDdFMkI4
MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMUEwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNjRCNENDMENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmggaW4gSGVhZGVycyAqLywK
QEAgLTIyOTc5LDcgKzIyOTc3LDYgQEAKIAkJCQk2MjhEMjE0RTEyMTMxRUY0MDA1NURDRkMgLyog
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNzAxODBG
Mjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OUUwRTA5OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAot
CQkJCTdDRTMwREFBMTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVBQjAxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERp
cmVjdG9yeURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjU5LDEwICsyNjI1Niw4IEBA
CiAJCQkJOTMyRTE2MDkwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRl
TWFjaGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkJBNzY2RTE2NjQyN0E4MDA1QkU1RDEg
LyogRnJhbWVMb2FkUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NUJGMDI0NTA5NzQ4
MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwRDA5
OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEE4Qzk2RUIwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJN0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5n
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQUQxN0QxNDE1MTAwN0ZGODQyIC8qIEpT
UlRDRGF0YUNoYW5uZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUEyMTQ4NDA5N0Ez
RjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzkxQTEw
MTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3NzY4LDYgKzI3NzYzLDcgQEAKIAkJCQk1MUUwQkIzOTBEQTVBQ0I2MDBBOUU0MTcgLyogU3Rv
cmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzI3N0U1MjE3RDAxOENDMDAxNTUzNEQg
LyogSlNNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MEQwRTgyMEZG
NDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUM0Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDNTVFMzhDMDEwMDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMDlEQjQxNkFGNUY2QzAwODUzOEU3IC8q
IFN0b3JhZ2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEwMkQ5NTBGRDlBQTJE
MDBGQUZGMDQgLyogU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCBjYzAzNjU1MjZlMzE2ZTA1ZDViMTViYjc0NDRj
M2JiMmJjZmE5MDUwLi5hNmFjMzk5YzBlNzc2NDM1OWQ1YTkyZjNmZWVlY2JhYzBmMjViY2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9y
dCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2YXRlLmgiCiAjaW1wb3J0ICJE
T01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKICNpbXBvcnQgIkZvbnQu
aCIKICNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgog
I2ltcG9ydCAiSFRNTEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAi
SFRNTFBhcnNlcklkaW9tcy5oIgpAQCAtMjg3LDkgKzI4Nyw5IEBAIGlkIDxET01FdmVudFRhcmdl
dD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKICAgICAvLyBGSVhNRTog
Q291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6Ok5vZGUgYW5kIGF1dG9nZW5l
cmF0ZT8KICAgICBXZWJDb3JlOjpOb2RlKiBub2RlID0gY29yZShzZWxmKTsKICAgICBXZWJDb3Jl
OjpGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFt
ZSkKKyAgICBpZiAoIWZyYW1lIHx8ICFub2RlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBmcmFtZS0+bm9kZUltYWdlKG5vZGUpLmdldCgpOworICAgIHJldHVybiBbW2NyZWF0ZURy
YWdJbWFnZUZvck5vZGUoKmZyYW1lLCAqbm9kZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAK
IC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKQEAgLTMzMiwxMCArMzMyLDEwIEBAIGlkIDxET01FdmVu
dFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKIHsKICAgICBX
ZWJDb3JlOjpSYW5nZSogcmFuZ2UgPSBjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSA9IHJhbmdlLT5vd25lckRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQor
ICAgIGlmICghZnJhbWUgfHwgIXJhbmdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFdlYkNvcmU6OnJhbmdlSW1hZ2UoZnJhbWUsIHJhbmdlLCBmb3JjZUJsYWNrVGV4dCk7Cisg
ICAgcmV0dXJuIFtbY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoKmZyYW1lLCAqcmFuZ2UsIGZvcmNl
QmxhY2tUZXh0KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKXRleHRS
ZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAppbmRleCA5ZDJlMjc1MmZkZjJiN2M2NjQyYTI0
MjRmODgwNjNlYzhhNzFjN2M4Li4zMDdmY2MxNWY3ZDA4MDhmY2RlZDY0OWEyNzJlYmMwY2I2ODAz
NTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcApAQCAtMjc3LDEwICsyNzcsMTEgQEAgRHJh
Z0ltYWdlUmVmIENsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBsb2NhdGlvbikg
Y29uc3QKIAogICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKICAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IG1fZHJhZ0ltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZyYW1lLT5ub2RlSW1hZ2UobV9kcmFnSW1hZ2VFbGVtZW50LmdldCgpKTsK
KyAgICAgICAgICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgKm1fZHJh
Z0ltYWdlRWxlbWVudCk7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7IC8vIFdlIGRvIG5vdCBoYXZl
IGVub3VnaCBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYSBkcmFnIGltYWdlLCB1c2UgdGhlIGRlZmF1
bHQgaWNvbi4KKyAgICAvLyBXZSBkbyBub3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gY3Jl
YXRlIGEgZHJhZyBpbWFnZSwgdXNlIHRoZSBkZWZhdWx0IGljb24uCisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2Fy
ZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRNYWMubW0KaW5kZXggNzZjYTZm
Y2EzZTQyNDA3YjVmOGU3YjM1ZTY1ODczN2MyMTEzZThmYi4uYTA5YjMwYTRhNjY4M2JhMWZkN2Zi
NDVmYTg5YjJkYmVjMDBjMzI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBi
b2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpbXBvcnQgIkNhY2hlZEltYWdlLmgiCiAjaW1wb3J0ICJFbGVtZW50
LmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgorI2ltcG9ydCAiRHJhZ0ltYWdl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsMTYgKzM3LDE2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIENsaXBib2FyZDo6ZHJhZ0ltYWdlIGluIENsaXBib2FyZC5jcHAgZG9l
cyBub3QgaGFuZGxlIGNvcnJlY3RseSwgc28gbXVzdCByZXNvbHZlIHRoYXQgYXMgd2VsbC4KIERy
YWdJbWFnZVJlZiBDbGlwYm9hcmQ6OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgbG9jYXRpb24p
IGNvbnN0CiB7Ci0gICAgTlNJbWFnZSAqcmVzdWx0ID0gbmlsOworICAgIERyYWdJbWFnZVJlZiBy
ZXN1bHQgPSBuaWw7CiAgICAgaWYgKG1fZHJhZ0ltYWdlRWxlbWVudCkgewogICAgICAgICBpZiAo
RnJhbWUqIGZyYW1lID0gbV9kcmFnSW1hZ2VFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpIHsK
LSAgICAgICAgICAgIE5TUmVjdCBpbWFnZVJlY3Q7Ci0gICAgICAgICAgICBOU1JlY3QgZWxlbWVu
dFJlY3Q7Ci0gICAgICAgICAgICByZXN1bHQgPSBzbmFwc2hvdERyYWdJbWFnZShmcmFtZSwgbV9k
cmFnSW1hZ2VFbGVtZW50LmdldCgpLCAmaW1hZ2VSZWN0LCAmZWxlbWVudFJlY3QpOworICAgICAg
ICAgICAgSW50UmVjdCBpbWFnZVJlY3Q7CisgICAgICAgICAgICBJbnRSZWN0IGVsZW1lbnRSZWN0
OworICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2UoKmZyYW1lLCAq
bV9kcmFnSW1hZ2VFbGVtZW50LCBpbWFnZVJlY3QsIGVsZW1lbnRSZWN0KTsKICAgICAgICAgICAg
IC8vIENsaWVudCBzcGVjaWZpZXMgcG9pbnQgcmVsYXRpdmUgdG8gZWxlbWVudCwgbm90IHRoZSB3
aG9sZSBpbWFnZSwgd2hpY2ggbWF5IGluY2x1ZGUgY2hpbGQKICAgICAgICAgICAgIC8vIGxheWVy
cyBzcHJlYWQgb3V0IGFsbCBvdmVyIHRoZSBwbGFjZS4KLSAgICAgICAgICAgIGxvY2F0aW9uLnNl
dFgoZWxlbWVudFJlY3Qub3JpZ2luLnggLSBpbWFnZVJlY3Qub3JpZ2luLnggKyBtX2RyYWdMb2Nh
dGlvbi54KCkpOwotICAgICAgICAgICAgbG9jYXRpb24uc2V0WShpbWFnZVJlY3Quc2l6ZS5oZWln
aHQgLSAoZWxlbWVudFJlY3Qub3JpZ2luLnkgLSBpbWFnZVJlY3Qub3JpZ2luLnkgKyBtX2RyYWdM
b2NhdGlvbi55KCkpKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNldFgoZWxlbWVudFJlY3QueCgp
IC0gaW1hZ2VSZWN0LngoKSArIG1fZHJhZ0xvY2F0aW9uLngoKSk7CisgICAgICAgICAgICBsb2Nh
dGlvbi5zZXRZKGltYWdlUmVjdC5oZWlnaHQoKSAtIChlbGVtZW50UmVjdC55KCkgLSBpbWFnZVJl
Y3QueSgpICsgbV9kcmFnTG9jYXRpb24ueSgpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIHJlc3VsdCA9IG1fZHJhZ0ltYWdlLT5pbWFnZSgpLT5n
ZXROU0ltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDdl
YjI0OWRmN2ZmOWI1NWE4ZWNlNWFlN2ZmNDcyZTBjZDdiYWMyNDcuLmY4NjZkY2ZkZmJiMjdjZWM1
NjU5NjVjY2JjMzVjZDU3ODI5OTg2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNs
dWRlICJEcmFnQ2xpZW50LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKKyNpbmNsdWRlICJEcmFn
SW1hZ2UuaCIKICNpbmNsdWRlICJEcmFnU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkRyYWdTdGF0ZS5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtNzgwLDcgKzc4MSw3IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFn
T3BlcmF0aW9uCiAgICAgICAgIH0KICAgICAgICAgbV9jbGllbnQud2lsbFBlcmZvcm1EcmFnU291
cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGNsaXBib2Fy
ZCk7CiAgICAgICAgIGlmICghZHJhZ0ltYWdlKSB7Ci0gICAgICAgICAgICBkcmFnSW1hZ2UgPSBk
aXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oc3JjLmRyYWdJbWFnZUZvclNlbGVjdGlvbigpLCBE
cmFnSW1hZ2VBbHBoYSk7CisgICAgICAgICAgICBkcmFnSW1hZ2UgPSBkaXNzb2x2ZURyYWdJbWFn
ZVRvRnJhY3Rpb24oY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKHNyYyksIERyYWdJbWFnZUFs
cGhhKTsKICAgICAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhzcmMp
OwogICAgICAgICAgICAgbV9kcmFnT2Zmc2V0ID0gSW50UG9pbnQoZHJhZ09yaWdpbi54KCkgLSBk
cmFnTG9jLngoKSwgZHJhZ09yaWdpbi55KCkgLSBkcmFnTG9jLnkoKSk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggNjI0MWVlM2M5NTJiNDYxNTVjMjkyMDZiMDhmOTAxZTAwZTUy
ZjU4MC4uNWMwMzYxMWU4Yjc1MWY5MTZkZTJlZDRiNzI2YjYzNjFiNzJmYWExNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTk2NiwxMDggKzk2Niw0IEBAIGJvb2wgRnJhbWU6OmlzVVJMQWxsb3dl
ZChjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmICFQTEFU
Rk9STShNQUMpICYmICFQTEFURk9STShXSU4pCi1zdHJ1Y3QgU2NvcGVkRnJhbWVQYWludGluZ1N0
YXRlIHsKLSAgICBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoRnJhbWUqIGZyYW1lLCBOb2RlKiBu
b2RlKQotICAgICAgICA6IGZyYW1lKGZyYW1lKQotICAgICAgICAsIG5vZGUobm9kZSkKLSAgICAg
ICAgLCBwYWludEJlaGF2aW9yKGZyYW1lLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKSkKLSAgICAg
ICAgLCBiYWNrZ3JvdW5kQ29sb3IoZnJhbWUtPnZpZXcoKS0+YmFzZUJhY2tncm91bmRDb2xvcigp
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPnJlbmRlcmVyKCkpOwotICAg
ICAgICBpZiAobm9kZSkKLSAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURyYWdT
dGF0ZSh0cnVlKTsKLSAgICB9Ci0KLSAgICB+U2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKCkKLSAg
ICB7Ci0gICAgICAgIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBu
b2RlLT5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOwotICAgICAgICBmcmFtZS0+
dmlldygpLT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwotICAgICAgICBmcmFtZS0+
dmlldygpLT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7Ci0gICAgICAg
IGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcoMCk7Ci0gICAgfQotCi0gICAgRnJhbWUqIGZy
YW1lOwotICAgIE5vZGUqIG5vZGU7Ci0gICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOwot
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKLX07Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6bm9k
ZUltYWdlKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBz
dGF0ZSh0aGlzLCBub2RlKTsKLQotICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihzdGF0ZS5w
YWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0K
LSAgICAvLyBXaGVuIGdlbmVyYXRpbmcgdGhlIGRyYWcgaW1hZ2UgZm9yIGFuIGVsZW1lbnQsIGln
bm9yZSB0aGUgZG9jdW1lbnQgYmFja2dyb3VuZC4KLSAgICBtX3ZpZXctPnNldEJhc2VCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7
Ci0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUgc3BlY2lhbCBzdWIt
dHJlZSBkcmF3aW5nIG1vZGUuCi0KLSAgICAvLyBEb2N1bWVudDo6dXBkYXRlTGF5b3V0IG1heSBo
YXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIHJlbmRlcmVyLgotICAgIGF1dG8gcmVuZGVyZXIg
PSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgSW50UmVjdCBwYWlu
dGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0
KHRvcExldmVsUmVjdCkpOwotCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOwotICAg
IGlmIChtX3BhZ2UpCi0gICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gbV9wYWdlLT5kZXZpY2VT
Y2FsZUZhY3RvcigpOwotICAgIHBhaW50aW5nUmVjdC5zZXRXaWR0aChwYWludGluZ1JlY3Qud2lk
dGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBwYWludGluZ1JlY3Quc2V0SGVpZ2h0KHBh
aW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLQotICAgIE93blB0cjxJ
bWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUo
KSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKLSAgICBpZiAoIWJ1
ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRy
YW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOwotICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QubWF4WCgpLCBw
YWludGluZ1JlY3QubWF4WSgpKSk7Ci0KLSAgICBtX3ZpZXctPnBhaW50Q29udGVudHMoYnVmZmVy
LT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
YnVmZmVyLT5jb3B5SW1hZ2UoKTsKLQotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBv
cmllbnRhdGlvbkRlc2NyaXB0aW9uKHJlbmRlcmVyLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbigpKTsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIG9yaWVudGF0
aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCku
aW1hZ2VPcmllbnRhdGlvbigpKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UoaW1hZ2UuZ2V0KCksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwotfQotCi1EcmFn
SW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCi17Ci0gICAgaWYgKCFzZWxl
Y3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgU2NvcGVk
RnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKHRoaXMsIDApOwotICAgIG1fdmlldy0+c2V0UGFpbnRC
ZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSk7Ci0gICAgbV9kb2MtPnVwZGF0ZUxh
eW91dCgpOwotCi0gICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHNl
bGVjdGlvbigpLmJvdW5kcygpKTsKLQotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsK
LSAgICBpZiAobV9wYWdlKQotICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9IG1fcGFnZS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBwYWludGluZ1JlY3Quc2V0V2lkdGgocGFpbnRpbmdSZWN0
LndpZHRoKCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcGFpbnRpbmdSZWN0LnNldEhlaWdo
dChwYWludGluZ1JlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5z
aXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7Ci0gICAgaWYg
KCFidWZmZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFu
c2xhdGUoLXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKLSAgICBidWZmZXIt
PmNvbnRleHQoKS0+Y2xpcChGbG9hdFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0Lm1heFgoKSwgcGFp
bnRpbmdSZWN0Lm1heFkoKSkpOwotCi0gICAgbV92aWV3LT5wYWludENvbnRlbnRzKGJ1ZmZlci0+
Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOwotCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJ1
ZmZlci0+Y29weUltYWdlKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShp
bWFnZS5nZXQoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwotfQotCi0jZW5kaWYK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDg0MDdlOWUyYmNm
M2VlZmVkZGJmMDUzMWJlNmNlOTI3OTQ1NzI3N2MuLjVmMTg2NmZlMjAyZmNmZWE2NDQyYzBiYmVm
ODIwZjU2ZWQyM2U3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNkZWZp
bmUgRnJhbWVfaAogCiAjaW5jbHVkZSAiQWRqdXN0Vmlld1NpemVPck5vdC5oIgotI2luY2x1ZGUg
IkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVU
cmVlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtNTgsMTEgKzU3LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBFZGl0b3I7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBj
bGFzcyBFdmVudEhhbmRsZXI7CisgICAgY2xhc3MgRmxvYXRTaXplOwogICAgIGNsYXNzIEZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlcjsKICAgICBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKICAgICBjbGFz
cyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogICAgIGNsYXNz
IEhUTUxUYWJsZUNlbGxFbGVtZW50OworICAgIGNsYXNzIEltYWdlQnVmZmVyOwogICAgIGNsYXNz
IEludFJlY3Q7CiAgICAgY2xhc3MgTWFpbkZyYW1lOwogICAgIGNsYXNzIE5vZGU7CkBAIC0xNzcs
OSArMTc4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0cmluZyBkaXNwbGF5
U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgICAg
IERyYWdJbWFnZVJlZiBub2RlSW1hZ2UoTm9kZSopOwotICAgICAgICBEcmFnSW1hZ2VSZWYgZHJh
Z0ltYWdlRm9yU2VsZWN0aW9uKCk7Ci0KICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KTsKICAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50QXRQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpOwogICAg
ICAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFt
ZVBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTc5MmRkY2EyOWEzZTViNzg3MzAzNTAyMTg5MGQwYzEyMmQwNzE2NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCkBAIC0w
LDAgKzEsMTMyIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdh
c2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJGcmFtZVNuYXBzaG90dGlu
Zy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1
ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNjb3BlZEZyYW1lUGFpbnRpbmdT
dGF0ZSB7CisgICAgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKEZyYW1lJiBmcmFtZSwgTm9kZSog
bm9kZSkKKyAgICA6IGZyYW1lKGZyYW1lKQorICAgICwgbm9kZShub2RlKQorICAgICwgcGFpbnRC
ZWhhdmlvcihmcmFtZS52aWV3KCktPnBhaW50QmVoYXZpb3IoKSkKKyAgICAsIGJhY2tncm91bmRD
b2xvcihmcmFtZS52aWV3KCktPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKSkKKyAgICB7CisgICAgICAg
IEFTU0VSVCghbm9kZSB8fCBub2RlLT5yZW5kZXJlcigpKTsKKyAgICB9CisKKyAgICB+U2NvcGVk
RnJhbWVQYWludGluZ1N0YXRlKCkKKyAgICB7CisgICAgICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFp
bnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKKyAgICAgICAgZnJhbWUudmlldygpLT5zZXRCYXNl
QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7CisgICAgICAgIGZyYW1lLnZpZXcoKS0+
c2V0Tm9kZVRvRHJhdyhudWxscHRyKTsKKyAgICB9CisKKyAgICBGcmFtZSYgZnJhbWU7CisgICAg
Tm9kZSogbm9kZTsKKyAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CisgICAgQ29sb3Ig
YmFja2dyb3VuZENvbG9yOworfTsKKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFw
c2hvdEZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgU25h
cHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgRnJhbWVWaWV3OjpTZWxlY3Rpb25JblNuYXBz
aG90IHNob3VsZEluY2x1ZGVTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247
CisgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxp
Z2h0aW5nKQorICAgICAgICBzaG91bGRJbmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpFeGNs
dWRlU2VsZWN0aW9uOworCisgICAgRnJhbWVWaWV3OjpDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hv
dCBjb29yZGluYXRlU3BhY2UgPSBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXM7CisgICAg
aWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlcykKKyAgICAgICAg
Y29vcmRpbmF0ZVNwYWNlID0gRnJhbWVWaWV3OjpWaWV3Q29vcmRpbmF0ZXM7CisKKyAgICBQYWlu
dEJlaGF2aW9yIHRleHRQYWludEJlaGF2aW9yID0gMDsKKyAgICBpZiAob3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQorICAgICAgICB0ZXh0UGFpbnRCZWhhdmlvciA9IFBh
aW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dDsKKworICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRp
bmdTdGF0ZSBzdGF0ZShmcmFtZSwgbnVsbHB0cik7CisKKyAgICAvLyBPdGhlciBwYWludCBiZWhh
dmlvcnMgYXJlIHNldCBieSBwYWludENvbnRlbnRzRm9yU25hcHNob3QuCisgICAgUGFpbnRCZWhh
dmlvciBleGlzdGluZ0JlaGF2aW9yID0gZnJhbWUudmlldygpLT5wYWludEJlaGF2aW9yKCk7Cisg
ICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKGV4aXN0aW5nQmVoYXZpb3IgfCB0ZXh0
UGFpbnRCZWhhdmlvcik7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisK
KyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGZyYW1lLnBhZ2UoKSA/IDEgOiBmcmFtZS5w
YWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCk7CisgICAgSW50UmVjdCB1c2VkUmVjdChpbWFnZVJl
Y3QpOworICAgIHVzZWRSZWN0LnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHVzZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0
b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpLmxlYWtQdHIoKSk7CisgICAgaWYgKCFidWZmZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUo
LXVzZWRSZWN0LngoKSwgLXVzZWRSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNs
aXAoRmxvYXRSZWN0KDAsIDAsIHVzZWRSZWN0Lm1heFgoKSwgdXNlZFJlY3QubWF4WSgpKSk7CisK
KyAgICBmcmFtZS52aWV3KCktPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChidWZmZXItPmNvbnRl
eHQoKSwgdXNlZFJlY3QsIHNob3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7
CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBz
bmFwc2hvdFNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQor
eworICAgIGlmICghZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIC8vIEZvcmNlIHNlbGVjdGlvbiBoaWdobGlnaHRpbmcgdG8gYmUgaW5j
bHVkZWQuCisgICAgb3B0aW9ucyAmPSB+U25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhp
Z2hsaWdodGluZzsKKyAgICBJbnRSZWN0IHNlbGVjdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0
KGZyYW1lLnNlbGVjdGlvbigpLmJvdW5kcygpKTsKKyAgICByZXR1cm4gc25hcHNob3RGcmFtZVJl
Y3QoZnJhbWUsIHNlbGVjdGlvblJlY3QsIG9wdGlvbnMpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUpCit7Cisg
ICAgaWYgKCFub2RlLnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
Y29uc3QgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKGZyYW1lLCAmbm9kZSk7CisKKyAg
ICBmcmFtZS52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50
KTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBmcmFtZS52aWV3
KCktPnNldE5vZGVUb0RyYXcoJm5vZGUpOworCisgICAgLy8gRG9jdW1lbnQ6OnVwZGF0ZUxheW91
dCBtYXkgaGF2ZSBibG93biBhd2F5IHRoZSBvcmlnaW5hbCByZW5kZXJlci4KKyAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Cisg
ICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5w
YWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworICAgIHJldHVybiBzbmFwc2hvdEZyYW1l
UmVjdChmcmFtZSwgcGFpbnRpbmdSZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ODkzYmQ0
MGU2ODA2NjAxNzlkY2FkNGI1MmU2MDBjNDI1OTNiNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisg
KiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRnJh
bWVTbmFwc2hvdHRpbmdfaAorI2RlZmluZSBGcmFtZVNuYXBzaG90dGluZ19oCisKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOwor
Y2xhc3MgSW50UmVjdDsKK2NsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgTm9kZTsKKworZW51bSB7
CisgICAgU25hcHNob3RPcHRpb25zTm9uZSA9IDAsCisgICAgU25hcHNob3RPcHRpb25zRXhjbHVk
ZVNlbGVjdGlvbkhpZ2hsaWdodGluZyA9IDEgPDwgMCwKKyAgICBTbmFwc2hvdE9wdGlvbnNJblZp
ZXdDb29yZGluYXRlcyA9IDEgPDwgMSwKKyAgICBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4
dCA9IDEgPDwgMiwKK307Cit0eXBlZGVmIHVpbnQzMl90IFNuYXBzaG90T3B0aW9uczsKKworc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFtZSYsIGNvbnN0
IEludFJlY3QmLCBTbmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKK3N0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiwgTm9kZSYpOworc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihGcmFtZSYsIFNuYXBz
aG90T3B0aW9ucyA9IFNuYXBzaG90T3B0aW9uc05vbmUpOworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBGcmFtZVNuYXBzaG90dGluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Zy
YW1lTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWZiMWY5MWJjYmQ2ZjA2
MjdhNjFkMWU5NGRlOWI3MTRhOGI1NDM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQotICog
Q29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCi0K
LSNpbXBvcnQgIkRvY3VtZW50LmgiCi0jaW1wb3J0ICJGcmFtZUxvYWRlckNsaWVudC5oIgotI2lt
cG9ydCAiRnJhbWVTZWxlY3Rpb24uaCIKLSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgi
Ci0jaW1wb3J0ICJGcmFtZVZpZXcuaCIKLSNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5v
ZGUpCi17Ci0gICAgbV9kb2MtPnVwZGF0ZUxheW91dCgpOyAvLyBmb3JjZXMgc3R5bGUgcmVjYWxj
Ci0KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBp
ZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIExheW91dFJlY3QgdG9wTGV2
ZWxSZWN0OwotICAgIE5TUmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJl
bmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwotCi0gICAgbV92aWV3LT5z
ZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1v
ZGUKLSAgICBOU0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KHRoaXMsIHBhaW50aW5nUmVj
dCk7Ci0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KDApOwotCi0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQotewotICAg
IGlmICghc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBzZWxlY3Rpb25JbWFnZSh0aGlzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYWI2N2U3NjU4MTRhZTZjYmM5MDFiYWQ0NGFmZDE1
M2Y4NjJhMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZyYW1lU25hcHNob3R0aW5n
TWFjX2gKLSNkZWZpbmUgRnJhbWVTbmFwc2hvdHRpbmdNYWNfaAotCi1PQkpDX0NMQVNTIE5TSW1h
Z2U7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRnJhbWU7Ci1jbGFzcyBSYW5nZTsK
LWNsYXNzIE5vZGU7Ci0KLU5TSW1hZ2UqIHNlbGVjdGlvbkltYWdlKEZyYW1lKiwgYm9vbCBmb3Jj
ZUJsYWNrVGV4dCA9IGZhbHNlKTsKLU5TSW1hZ2UqIHJhbmdlSW1hZ2UoRnJhbWUqLCBSYW5nZSos
IGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7Ci1OU0ltYWdlKiBzbmFwc2hvdERyYWdJbWFn
ZShGcmFtZSosIE5vZGUqLCBOU1JlY3QqIGltYWdlUmVjdCwgTlNSZWN0KiBlbGVtZW50UmVjdCk7
Ci1OU0ltYWdlKiBpbWFnZUZyb21SZWN0KEZyYW1lKiwgTlNSZWN0KTsKLQotfQotCi0jZW5kaWYg
Ly8gRnJhbWVTbmFwc2hvdHRpbmdNYWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9G
cmFtZVNuYXBzaG90dGluZ01hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTky
YzJmMjNjYjE3YmQwM2Q0ZThhNWVlMTk1MTRhYzQzOTFkMTllYi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFt
ZVNuYXBzaG90dGluZ01hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE2OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkg
UHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCIKLQotI2ltcG9ydCAi
QmxvY2tFeGNlcHRpb25zLmgiCi0jaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRnJhbWUu
aCIKLSNpbXBvcnQgIkZyYW1lU2VsZWN0aW9uLmgiCi0jaW1wb3J0ICJGcmFtZVZpZXcuaCIKLSNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgotI2ltcG9ydCAiUmFuZ2UuaCIKLSNpbXBvcnQgIlJl
bmRlclZpZXcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1OU0ltYWdlKiBpbWFnZUZyb21S
ZWN0KEZyYW1lKiBmcmFtZSwgTlNSZWN0IHJlY3QpCi17Ci0gICAgUGFpbnRCZWhhdmlvciBvbGRC
ZWhhdmlvciA9IGZyYW1lLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKTsKLSAgICBmcmFtZS0+dmll
dygpLT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5D
b21wb3NpdGluZ0xheWVycyk7Ci0gICAgCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwotICAgIAotICAgIE5TSW1hZ2UqIHJlc3VsdEltYWdlID0gW1tbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhTaXplOnJlY3Quc2l6ZV0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIGlmIChyZWN0LnNp
emUud2lkdGggIT0gMCAmJiByZWN0LnNpemUuaGVpZ2h0ICE9IDApIHsKLSNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXBy
ZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAgW3Jlc3VsdEltYWdlIHNldEZsaXBwZWQ6WUVT
XTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICAgICAgW3Jlc3VsdEltYWdlIGxv
Y2tGb2N1c107Ci0KLSAgICAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgoQ0dD
b250ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9y
dF0pOyAgICAgICAgCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7Ci0gICAgICAgIGdy
YXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXJlY3Qub3JpZ2luLngsIC1yZWN0Lm9yaWdpbi55KTsK
LSAgICAgICAgZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cygmZ3JhcGhpY3NDb250ZXh0LCBJ
bnRSZWN0KHJlY3QpKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKLQotICAg
ICAgICBbcmVzdWx0SW1hZ2UgdW5sb2NrRm9jdXNdOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVj
bGFyYXRpb25zIgotICAgICAgICBbcmVzdWx0SW1hZ2Ugc2V0RmxpcHBlZDpOT107Ci0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgfQotICAgIAotICAgIGZyYW1lLT52aWV3KCktPnNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwotICAgIHJldHVybiByZXN1bHRJbWFnZTsKLSAg
ICAKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIAotICAgIGZyYW1lLT52aWV3
KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwotICAgIHJldHVybiBuaWw7Ci19Ci0K
LU5TSW1hZ2UqIHNlbGVjdGlvbkltYWdlKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4
dCkKLXsKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JT
ZWxlY3Rpb25Pbmx5IHwgKGZvcmNlQmxhY2tUZXh0ID8gUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tU
ZXh0IDogMCkpOwotICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLSAgICBO
U0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KGZyYW1lLCBmcmFtZS0+c2VsZWN0aW9uKCku
Ym91bmRzKCkpOwotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhh
dmlvck5vcm1hbCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotTlNJbWFnZSAqcmFuZ2VJbWFn
ZShGcmFtZSogZnJhbWUsIFJhbmdlKiByYW5nZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKLXsKLSAg
ICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25P
bmx5IHwgKGZvcmNlQmxhY2tUZXh0ID8gUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0IDogMCkp
OwotICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLSAgICBSZW5kZXJWaWV3
KiB2aWV3ID0gZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOwotICAgIGlmICghdmlldykKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgIFBvc2l0aW9uIHN0YXJ0ID0gcmFuZ2UtPnN0YXJ0UG9zaXRp
b24oKTsKLSAgICBQb3NpdGlvbiBjYW5kaWRhdGUgPSBzdGFydC5kb3duc3RyZWFtKCk7Ci0gICAg
aWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9k
ZSgpLT5yZW5kZXJlcigpKQotICAgICAgICBzdGFydCA9IGNhbmRpZGF0ZTsKLQotICAgIFBvc2l0
aW9uIGVuZCA9IHJhbmdlLT5lbmRQb3NpdGlvbigpOwotICAgIGNhbmRpZGF0ZSA9IGVuZC51cHN0
cmVhbSgpOwotICAgIGlmIChjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUu
ZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgZW5kID0gY2FuZGlkYXRlOwot
Ci0gICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8IGVuZC5pc051bGwoKSB8fCBzdGFydCA9PSBlbmQp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHNhdmVkU3RhcnRSZW5k
ZXJlcjsKLSAgICBpbnQgc2F2ZWRTdGFydE9mZnNldDsKLSAgICBSZW5kZXJPYmplY3QqIHNhdmVk
RW5kUmVuZGVyZXI7Ci0gICAgaW50IHNhdmVkRW5kT2Zmc2V0OwotICAgIHZpZXctPmdldFNlbGVj
dGlvbihzYXZlZFN0YXJ0UmVuZGVyZXIsIHNhdmVkU3RhcnRPZmZzZXQsIHNhdmVkRW5kUmVuZGVy
ZXIsIHNhdmVkRW5kT2Zmc2V0KTsKLQotICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciA9
IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFzdGFydFJlbmRl
cmVyKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJl
ciA9IGVuZC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgIGlmICghZW5kUmVuZGVy
ZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc3RhcnRS
ZW5kZXJlciwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmVuZGVyZXIsIGVu
ZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7
Ci0gICAgTlNJbWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgdmlldy0+c2VsZWN0
aW9uQm91bmRzKCkpOwotICAgIHZpZXctPnNldFNlbGVjdGlvbihzYXZlZFN0YXJ0UmVuZGVyZXIs
IHNhdmVkU3RhcnRPZmZzZXQsIHNhdmVkRW5kUmVuZGVyZXIsIHNhdmVkRW5kT2Zmc2V0LCBSZW5k
ZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7Ci0KLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJl
aGF2aW9yKFBhaW50QmVoYXZpb3JOb3JtYWwpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQot
TlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoRnJhbWUqIGZyYW1lLCBOb2RlKiBub2RlLCBOU1Jl
Y3QqIGltYWdlUmVjdCwgTlNSZWN0KiBlbGVtZW50UmVjdCkKLXsKLSAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIAotICAgIHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7
ICAgIC8vIG1hcmsgZHJhZ2dlZCBub2RlcyAoc28gdGhleSBwaWNrIHVwIHRoZSByaWdodCBDU1Mp
Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOyAgLy8gZm9yY2VzIHN0eWxl
IHJlY2FsYyAtIG5lZWRlZCBzaW5jZSBjaGFuZ2luZyB0aGUgZHJhZyBzdGF0ZSBtaWdodAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltcGx5IG5ldyBzdHlsZXMs
IHBsdXMgSlMgY291bGQgaGF2ZSBjaGFuZ2VkIG90aGVyIHRoaW5ncwotCi0KLSAgICAvLyBEb2N1
bWVudDo6dXBkYXRlTGF5b3V0IG1heSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIFJlbmRl
ckVsZW1lbnQuCi0gICAgcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVu
ZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVj
dDsKLSAgICBOU1JlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJl
ci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKLQotICAgIGlmIChOU0lzRW1wdHlS
ZWN0KHBhaW50aW5nUmVjdCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBmcmFtZS0+dmll
dygpLT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3
aW5nIG1vZGUKLSAgICBOU0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KGZyYW1lLCBwYWlu
dGluZ1JlY3QpOwotICAgIHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOwotICAgIGZy
YW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLSAgICBmcmFtZS0+dmlldygpLT5zZXRO
b2RlVG9EcmF3KDApOwotCi0gICAgaWYgKGVsZW1lbnRSZWN0KQotICAgICAgICAqZWxlbWVudFJl
Y3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHRvcExldmVsUmVjdCk7Ci0gICAgaWYgKGltYWdlUmVj
dCkKLSAgICAgICAgKmltYWdlUmVjdCA9IHBhaW50aW5nUmVjdDsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdp
bi5jcHAKaW5kZXggNWFhZjNhNjc4YzllNTQzYWY2ODNiMzdhZDViMDZjY2UwNjQ0M2I5Zi4uOTY3
NGYxNzY4ZjVkZDg0MjViNjBjN2FmMTZmMGYxZjdkNmY3NjMxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
d2luL0ZyYW1lV2luLmNwcApAQCAtNTcsMzAgKzU3LDQgQEAgR0RJT2JqZWN0PEhCSVRNQVA+IGlt
YWdlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCiAgICAg
cmV0dXJuIGltYWdlOwogfQogCi1EcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVj
dGlvbigpCi17Ci0gICAgaWYgKHNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJu
IGltYWdlRnJvbVNlbGVjdGlvbih0aGlzLCBmYWxzZSkubGVhaygpOwotCi0gICAgcmV0dXJuIDA7
Ci19Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpCi17Ci0gICAg
ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OwotICAgIEludFJlY3QgcGFpbnRpbmdS
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BM
ZXZlbFJlY3QpKTsKLQotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdyhub2RlKTsgLy8gaW52b2tl
IHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0gICAgR0RJT2JqZWN0PEhCSVRNQVA+IHJl
c3VsdCA9IGltYWdlRnJvbVJlY3QodGhpcywgcGFpbnRpbmdSZWN0KTsKLSAgICBtX3ZpZXctPnNl
dE5vZGVUb0RyYXcoMCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0LmxlYWsoKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmgKaW5kZXggM2EyNzIz
ZTYzZDZkN2U3ZWMwNDRjYjEyZjJlYTdiZDA2Y2ZlNjU5Zi4uMjY5NzI1YzFmOWI5YjgwZDU3ODE0
ODRmOTMxYWIyNWRkM2FlMzMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4v
RnJhbWVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCkBAIC0z
NSw3ICszNSw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSW50UmVjdDsKIAogR0RJT2JqZWN0PEhC
SVRNQVA+IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqLCBJbnRSZWN0Jik7Ci1HRElPYmplY3Q8
SEJJVE1BUD4gaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiwgYm9vbCBmb3JjZVdoaXRlVGV4dCk7
CitHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiwgYm9vbCBmb3Jj
ZUJsYWNrVGV4dCk7CiB2b2lkIGNvbXB1dGVQYWdlUmVjdHNGb3JGcmFtZShGcmFtZSosIGNvbnN0
IEludFJlY3QmIHByaW50UmVjdCwgZmxvYXQgaGVhZGVySGVpZ2h0LCBmbG9hdCBmb290ZXJIZWln
aHQsIGZsb2F0IHVzZXJTY2FsZUZhY3RvciwgVmVjdG9yPEludFJlY3Q+JiBvdXRQYWdlcywgaW50
JiBvdXRQYWdlSGVpZ2h0KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdJbWFnZS5jcHAKaW5kZXggYjgxYWZkNTc5ZTgyOTNlZWZhMmJhOTNiOWJiNTVj
MWY1MDc2Y2Y0Ny4uN2M0Njc0ODFiZDU2YTNkNzViOTY5MGZmMTFlYWU2M2M1ZWI4OGE2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTI4LDI5ICsyOCwzNyBA
QAogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAiRnJhbWVTbmFwc2hvdHRpbmcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci0gICAgCisKIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJhZ0ltYWdlUmVm
IGltYWdlLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbnRTaXplJiBzaXplKQogewog
ICAgIGZsb2F0IGhlaWdodFJlc2l6ZVJhdGlvID0gMC4wZjsKICAgICBmbG9hdCB3aWR0aFJlc2l6
ZVJhdGlvID0gMC4wZjsKICAgICBmbG9hdCByZXNpemVSYXRpbyA9IC0xLjBmOwogICAgIEludFNp
emUgb3JpZ2luYWxTaXplID0gZHJhZ0ltYWdlU2l6ZShpbWFnZSk7Ci0gICAgCisKICAgICBpZiAo
c3JjU2l6ZS53aWR0aCgpID4gc2l6ZS53aWR0aCgpKSB7CiAgICAgICAgIHdpZHRoUmVzaXplUmF0
aW8gPSBzaXplLndpZHRoKCkgLyAoZmxvYXQpc3JjU2l6ZS53aWR0aCgpOwogICAgICAgICByZXNp
emVSYXRpbyA9IHdpZHRoUmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAgICAgaWYgKHNyY1Np
emUuaGVpZ2h0KCkgPiBzaXplLmhlaWdodCgpKSB7CiAgICAgICAgIGhlaWdodFJlc2l6ZVJhdGlv
ID0gc2l6ZS5oZWlnaHQoKSAvIChmbG9hdClzcmNTaXplLmhlaWdodCgpOwogICAgICAgICBpZiAo
KHJlc2l6ZVJhdGlvIDwgMC4wZikgfHwgKHJlc2l6ZVJhdGlvID4gaGVpZ2h0UmVzaXplUmF0aW8p
KQogICAgICAgICAgICAgcmVzaXplUmF0aW8gPSBoZWlnaHRSZXNpemVSYXRpbzsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoc3JjU2l6ZSA9PSBvcmlnaW5hbFNpemUpCiAgICAgICAgIHJldHVybiBy
ZXNpemVSYXRpbyA+IDAuMGYgPyBzY2FsZURyYWdJbWFnZShpbWFnZSwgRmxvYXRTaXplKHJlc2l6
ZVJhdGlvLCByZXNpemVSYXRpbykpIDogaW1hZ2U7Ci0gICAgCisKICAgICAvLyBUaGUgaW1hZ2Ug
d2FzIHNjYWxlZCBpbiB0aGUgd2VicGFnZSBzbyBhdCBtaW5pbXVtIHdlIG11c3QgYWNjb3VudCBm
b3IgdGhhdCBzY2FsaW5nCiAgICAgZmxvYXQgc2NhbGV4ID0gc3JjU2l6ZS53aWR0aCgpIC8gKGZs
b2F0KW9yaWdpbmFsU2l6ZS53aWR0aCgpOwogICAgIGZsb2F0IHNjYWxleSA9IHNyY1NpemUuaGVp
Z2h0KCkgLyAoZmxvYXQpb3JpZ2luYWxTaXplLmhlaWdodCgpOwpAQCAtNTgsMTQgKzY2LDE1MSBA
QCBEcmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiBpbWFnZSwg
Y29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgYwogICAgICAgICBzY2FsZXggKj0gcmVzaXplUmF0aW87
CiAgICAgICAgIHNjYWxleSAqPSByZXNpemVSYXRpbzsKICAgICB9Ci0gICAgCisKICAgICByZXR1
cm4gc2NhbGVEcmFnSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZShzY2FsZXgsIHNjYWxleSkpOwogfQog
CitzdHJ1Y3QgU2NvcGVkTm9kZURyYWdTdGF0ZSB7CisgICAgU2NvcGVkTm9kZURyYWdTdGF0ZShG
cmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUpCisgICAgOiBmcmFtZShmcmFtZSkKKyAgICAsIG5vZGUo
bm9kZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChub2RlLnJlbmRlcmVyKCkpOworICAgICAgICBu
b2RlLnJlbmRlcmVyKCktPnVwZGF0ZURyYWdTdGF0ZSh0cnVlKTsKKyAgICAgICAgZnJhbWUuZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgfQorCisgICAgflNjb3BlZE5vZGVEcmFnU3Rh
dGUoKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUucmVuZGVyZXIoKSkgeworICAgICAgICAgICAg
bm9kZS5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOworICAgICAgICAgICAgZnJh
bWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBG
cmFtZSYgZnJhbWU7CisgICAgTm9kZSYgbm9kZTsKK307CisKK3N0YXRpYyBEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
c25hcHNob3QsIE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFzbmFwc2hvdCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRp
b247CisjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAgICBpZiAobm9kZSkgewor
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAg
ICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IG9yaWVudGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHJlbmRlcmVyLT5zaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgb3JpZW50YXRpb24uc2V0SW1hZ2VP
cmllbnRhdGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAg
ICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyNlbmRpZgorICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBzbmFwc2hvdC0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29weUlt
YWdlTW9kZSgpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBvcmllbnRhdGlv
bik7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiBmcmFt
ZSwgTm9kZSYgbm9kZSkKK3sKKyAgICBTY29wZWROb2RlRHJhZ1N0YXRlIGVuYWJsZURyYWcoZnJh
bWUsIG5vZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBz
bmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9t
U25hcHNob3Qoc3RkOjptb3ZlKHNuYXBzaG90KSwgJm5vZGUpOworfQorCitEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNr
VGV4dCkKK3sKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucyA9IGZvcmNlQmxhY2tUZXh0ID8g
U25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgOiBTbmFwc2hvdE9wdGlvbnNOb25lOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdFNlbGVjdGlv
bihmcmFtZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dChzdGQ6Om1vdmUoc25hcHNob3QpLCBudWxscHRyKTsKK30KKworc3RydWN0IFNjb3BlZEZyYW1l
U2VsZWN0aW9uU3RhdGUgeworICAgIFNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUoRnJhbWUmIGZy
YW1lKQorICAgIDogZnJhbWUoZnJhbWUpCisgICAgeworICAgICAgICBpZiAoUmVuZGVyVmlldyog
cm9vdCA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICAgICAgcm9vdC0+Z2V0U2Vs
ZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRSZW5kZXJlciwgZW5kT2Zmc2V0
KTsKKyAgICB9CisKKyAgICB+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSgpCisgICAgeworICAg
ICAgICBpZiAoUmVuZGVyVmlldyogcm9vdCA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQorICAg
ICAgICAgICAgcm9vdC0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBl
bmRSZW5kZXJlciwgZW5kT2Zmc2V0LCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisgICAg
fQorCisgICAgRnJhbWUmIGZyYW1lOworICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlcjsK
KyAgICBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyOworICAgIGludCBzdGFydE9mZnNldDsKKyAg
ICBpbnQgZW5kT2Zmc2V0OworfTsKKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclJh
bmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhbmdlLCBib29sIGZvcmNlQmxhY2tUZXh0KQorewor
ICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIFJlbmRlclZpZXcqIHZp
ZXcgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgLy8gVG8gc25hcHNob3QgdGhlIHJhbmdlLCB0ZW1wb3Jhcmls
eSBzZWxlY3QgaXQgYW5kIHRha2Ugc2VsZWN0aW9uIHNuYXBzaG90LgorICAgIFBvc2l0aW9uIHN0
YXJ0ID0gcmFuZ2Uuc3RhcnRQb3NpdGlvbigpOworICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHN0
YXJ0LmRvd25zdHJlYW0oKTsKKyAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYg
Y2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCisgICAgICAgIHN0YXJ0ID0g
Y2FuZGlkYXRlOworCisgICAgUG9zaXRpb24gZW5kID0gcmFuZ2UuZW5kUG9zaXRpb24oKTsKKyAg
ICBjYW5kaWRhdGUgPSBlbmQudXBzdHJlYW0oKTsKKyAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0
ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCisgICAg
ICAgIGVuZCA9IGNhbmRpZGF0ZTsKKworICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNO
dWxsKCkgfHwgc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNv
bnN0IFNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoZnJhbWUpOworCisg
ICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+
cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyID0gZW5kLmRlcHJlY2F0
ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFzdGFydFJlbmRlcmVyIHx8ICFlbmRSZW5k
ZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0
aW9ucyA9IGZvcmNlQmxhY2tUZXh0ID8gU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgOiBT
bmFwc2hvdE9wdGlvbnNOb25lOworICAgIHZpZXctPnNldFNlbGVjdGlvbihzdGFydFJlbmRlcmVy
LCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSZW5kZXJlciwgZW5kLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCksIFJlbmRlclZpZXc6OlJlcGFpbnROb3RoaW5nKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24o
ZnJhbWUsIG9wdGlvbnMpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qo
c3RkOjptb3ZlKHNuYXBzaG90KSwgbnVsbHB0cik7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGb3JJbWFnZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUsIEludFJlY3QmIGltYWdl
UmVjdCwgSW50UmVjdCYgZWxlbWVudFJlY3QpCit7CisgICAgU2NvcGVkTm9kZURyYWdTdGF0ZSBl
bmFibGVEcmFnKGZyYW1lLCBub2RlKTsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBu
b2RlLnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAvLyBDYWxjdWxhdGUgaW1hZ2UgYW5kIGVsZW1lbnQgbWV0cmljcyBmb3IgdGhl
IGNsaWVudCwgdGhlbiBjcmVhdGUgZHJhZyBpbWFnZS4KKyAgICBMYXlvdXRSZWN0IHRvcExldmVs
UmVjdDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVu
ZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7CisKKyAgICBpZiAocGFpbnRp
bmdSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBlbGVtZW50
UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICBpbWFnZVJlY3Qg
PSBwYWludGluZ1JlY3Q7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBz
aG90ID0gc25hcHNob3ROb2RlKGZyYW1lLCBub2RlKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0lt
YWdlRnJvbVNuYXBzaG90KHN0ZDo6bW92ZShzbmFwc2hvdCksICZub2RlKTsKK30KKwogI2lmICFQ
TEFURk9STShNQUMpICYmICghUExBVEZPUk0oV0lOKSB8fCBPUyhXSU5DRSkpCiBEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcmLCBGb250UmVuZGVy
aW5nTW9kZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IGQ4ZjUyYmNmYWQ0NDI0M2Y4
YWNjYjg2NzBhMDk0YWYxMTNjNGIyNGQuLmQ4MzY5NmUzMzExY2NlNTQxNzM1MmI2ZDA0Njk5YTEw
MzM0NDBmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC0yNiwxMCArMjYs
MTEgQEAKICNpZm5kZWYgRHJhZ0ltYWdlX2gKICNkZWZpbmUgRHJhZ0ltYWdlX2gKIAorI2luY2x1
ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdNb2RlLmgiCisjaW5jbHVk
ZSAiRnJhbWVTbmFwc2hvdHRpbmcuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00MSwzOCArNDIsNDYgQEAgdHlw
ZWRlZiBzdHJ1Y3QgSEJJVE1BUF9fKiBIQklUTUFQOwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1
cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwogI2VuZGlmCiAKLS8vV2UgbmVlZCB0byAjZGVmaW5lIFlP
ZmZzZXQgYXMgaXQgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGggV2ViS2l0CisvLyBXZSBuZWVkIHRv
ICNkZWZpbmUgWU9mZnNldCBhcyBpdCBuZWVkcyB0byBiZSBzaGFyZWQgd2l0aCBXZWJLaXQKICNk
ZWZpbmUgRHJhZ0xhYmVsQm9yZGVyWU9mZnNldCAyCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ICAgIGNsYXNzIEltYWdlOwotICAgIGNsYXNzIFVSTDsKK2NsYXNzIEZyYW1lOworY2xhc3MgSW1h
Z2U7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgTm9kZTsKK2NsYXNzIFJhbmdlOworY2xhc3MgVVJM
OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHR5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERy
YWdJbWFnZVJlZjsKK3R5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFnZVJlZjsKICNl
bGlmIFBMQVRGT1JNKFdJTikKLSAgICB0eXBlZGVmIEhCSVRNQVAgRHJhZ0ltYWdlUmVmOwordHlw
ZWRlZiBIQklUTUFQIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oTklYKQotICAgIHR5cGVkZWYgY2Fpcm9fc3VyZmFjZV90KiBEcmFnSW1hZ2VSZWY7Cit0eXBl
ZGVmIGNhaXJvX3N1cmZhY2VfdCogRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oRUZMKSB8
fCBQTEFURk9STShCTEFDS0JFUlJZKQotICAgIHR5cGVkZWYgdm9pZCogRHJhZ0ltYWdlUmVmOwor
dHlwZWRlZiB2b2lkKiBEcmFnSW1hZ2VSZWY7CiAjZW5kaWYKLSAgICAKLSAgICBJbnRTaXplIGRy
YWdJbWFnZVNpemUoRHJhZ0ltYWdlUmVmKTsKLSAgICAKLSAgICAvL1RoZXNlIGZ1bmN0aW9ucyBz
aG91bGQgYmUgbWVtb3J5IG5ldXRyYWwsIGVnLiBpZiB0aGV5IHJldHVybiBhIG5ld2x5IGFsbG9j
YXRlZCBpbWFnZSwgCi0gICAgLy90aGV5IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4g
IEFzIGEgY29yb2xsYXJ5IHRoZXNlIG1ldGhvZHMgZG9uJ3QgZ3VhcmFudGVlCi0gICAgLy90aGUg
aW5wdXQgaW1hZ2UgcmVmIHdpbGwgc3RpbGwgYmUgdmFsaWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4g
Y2FsbGVkCi0gICAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VS
ZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEludFNpemUmIHNpemUpOwot
ICAgIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYsIEZsb2F0U2l6ZSBz
Y2FsZSk7Ci0gICAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFn
SW1hZ2VSZWYgaW1hZ2UsIGZsb2F0IGRlbHRhKTsKLSAgICAKLSAgICBEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KTsKLSAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmls
ZW5hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZv
ckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJlbmRlcmluZ01vZGUpOwotICAg
IHZvaWQgZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7Ci19CiAKK0ludFNpemUgZHJhZ0lt
YWdlU2l6ZShEcmFnSW1hZ2VSZWYpOworCisvLyBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIG1l
bW9yeSBuZXV0cmFsLCBlZy4gaWYgdGhleSByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaW1hZ2Us
CisvLyB0aGV5IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4gQXMgYSBjb3JvbGxhcnkg
dGhlc2UgbWV0aG9kcyBkb24ndCBndWFyYW50ZWUKKy8vIHRoZSBpbnB1dCBpbWFnZSByZWYgd2ls
bCBzdGlsbCBiZSB2YWxpZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBjYWxsZWQuCitEcmFnSW1hZ2VS
ZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiwgY29uc3QgSW50U2l6ZSYgc3Jj
U2l6ZSwgY29uc3QgSW50U2l6ZSYgZHN0U2l6ZSk7CitEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1h
Z2UoRHJhZ0ltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpOworRHJhZ0ltYWdlUmVmIGRpc3NvbHZl
RHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYsIGZsb2F0IGRlbHRhKTsKKworRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbik7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZElt
YWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGb3JOb2RlKEZyYW1lJiwgTm9kZSYpOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZv
clNlbGVjdGlvbihGcmFtZSYsIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7CitEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmLCBSYW5nZSYsIGJvb2wgZm9yY2VC
bGFja1RleHQgPSBmYWxzZSk7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2Uo
RnJhbWUmLCBOb2RlJiwgSW50UmVjdCYgaW1hZ2VSZWN0LCBJbnRSZWN0JiBlbGVtZW50UmVjdCk7
CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBGb250UmVuZGVyaW5nTW9kZSk7Cit2b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1h
Z2VSZWYpOworfQogCi0jZW5kaWYgLy8hRHJhZ0ltYWdlX2gKKyNlbmRpZiAvLyBEcmFnSW1hZ2Vf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQpp
bmRleCA1ZGZmNmYwZmU5YzFkOWYyZGU0YTFlMTE5M2E1ZWZiNDQ2MmQwNzkxLi5kNTYyYTE2MTky
NjVmYTYxZTBiNGMxODk2YTA4ZmY1ZmViMTNiNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTbmFw
c2hvdHRpbmdNYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTbmFwc2hvdHRpbmcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1
bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvaHRtbGVkaXRpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDQ4NjI4MGU0N2I2YTU1ZDY5M2Y4NGEzNTE0MmRh
MzM4ZTJiZjc5YmYuLmFmYmY4Y2M2NGUwNTQzZWQyMzViNzI2MTNkZGJhM2E4MDhiOTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtODUsNiArODUsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJv
bGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckRlbGV0ZUFjdGlvbi5oPgogI2ltcG9y
dCA8V2ViQ29yZS9FbGVtZW50Lmg+CkBAIC05NSw3ICs5Niw2IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lU2VsZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU25hcHNob3R0aW5n
TWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MQ29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpAQCAtMTgyMCw3
ICsxODIwLDEyIEBAIHN0YXRpYyBib29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNrT3JEcmFnKE5T
RXZlbnQgKmV2ZW50KQogewogICAgIGlmICghW3NlbGYgX2hhc1NlbGVjdGlvbl0pCiAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gc2VsZWN0aW9uSW1hZ2UoY29y
ZShbc2VsZiBfZnJhbWVdKSk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IE5TSW1hZ2UgKmRyYWdJbWFnZSA9IFtbY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCpjb3Jl
RnJhbWUpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIFtkcmFnSW1hZ2UgX3dlYl9kaXNzb2x2
ZVRvRnJhY3Rpb246V2ViRHJhZ0ltYWdlQWxwaGFdOwogICAgIHJldHVybiBkcmFnSW1hZ2U7CiB9
CkBAIC01OTY1LDcgKzU5NzAsMTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKIHsKICAgICBp
ZiAoIVtzZWxmIF9oYXNTZWxlY3Rpb25dKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVy
biBzZWxlY3Rpb25JbWFnZShjb3JlKFtzZWxmIF9mcmFtZV0pLCBmb3JjZUJsYWNrVGV4dCk7CisK
KyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKKyAgICBpZiAoIWNv
cmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW1tjcmVhdGVEcmFnSW1h
Z2VGb3JTZWxlY3Rpb24oKmNvcmVGcmFtZSwgZm9yY2VCbGFja1RleHQpIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOwogfQogCiAtIChOU1JlY3Qpc2VsZWN0aW9uSW1hZ2VSZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9E
T01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXggY2NiZDcxOTAxZTQ1NTc5MDMxYjkwMmJhNTZhODk0ZTZh
OGQ3OWNiMy4uYjgxZDRhN2Q3MzQ3N2FkZjhiZGI3ODNiMjUxZGUxZGM5ZmZkOTMwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdJbWFnZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZUZv
bnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1l
cy5oPgpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRl
clRyZWVBc1RleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZUZvbnREYXRhLmg+CiAKICNp
bmNsdWRlIDxpbml0Z3VpZC5oPgogLy8gezNCMEMwRUZGLTQ3OEItNGIwYi04MjkwLUQyMzIxRTA4
RTIzRX0KQEAgLTEyNzksNyArMTI4MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
RWxlbWVudDo6cmVuZGVyZWRJbWFnZShIQklUTUFQKiBpbWFnZSkKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKmltYWdlID0gZnJhbWUtPm5vZGVJbWFnZSht
X2VsZW1lbnQpOworICAgICppbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoKmZyYW1lLCAq
bV9lbGVtZW50KTsKICAgICBpZiAoISppbWFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217223</attachid>
            <date>2013-11-18 12:38:39 -0800</date>
            <delta_ts>2013-11-24 16:36:38 -0800</delta_ts>
            <desc>v2.4</desc>
            <filename>bug-124325-20131118123837.patch</filename>
            <type>text/plain</type>
            <size>67658</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5MzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0NGNiZWZkMmZkZjI5
NGE0N2FkNmZiMzk2YTViZDIyMzAwOTdkMS4uZTI5ZmUyMjgwNWFhYzMzZDQ5Y2NmNjhjNTg3Yjg1
YjJkNzE3ZDA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTExLTE2ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc25hcHNob3QgY3JlYXRpb24g
bWV0aG9kcyBoYWQgZHVwbGljYXRlZCBjb2RlIGFuZCB3ZXJlIHNwbGl0CisgICAgICAgIGJldHdl
ZW4gRnJhbWUsIERyYWdJbWFnZSwgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9u
c3MuCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBXZWJDb3JlIHNuYXBzaG90IG1ldGhvZHMgaW50
byBGcmFtZVNuYXBzaG90dGluZworICAgICAgICBhbmQgcmVtb3ZlcyBwbGF0Zm9ybSBpbXBsZW1l
bnRhdGlvbnMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgRHJhZ0ltYWdlIG1ldGhvZHMgcmV1
c2Ugc25hcHNob3QgbWV0aG9kcyB3aGVyZSBwb3NzaWJsZS4gSW5zcGVjdG9yCisgICAgICAgIHdp
bGwgYmUgYWJsZSB0byB0YWtlIHNuYXBzaG90cyB3aXRob3V0IHVzaW5nIGRyYWcgaW1hZ2VzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJbWFn
ZV0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpd
KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQ
YWludGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0
ZTo6flNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hv
dEZyYW1lUmVjdCk6IE1vdmUgbW9zdCBidWZmZXIgbG9naWMgdG8gaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90U2VsZWN0aW9uKTogTW92ZWQgZnJvbSBGcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90Tm9kZSk6IE1vdmVkIGZyb20gRnJhbWUuCisgICAgICAgICogcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcDogcmVtb3ZlIGR1cGxpY2F0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5oOiBGaXggYW4gaW5j
b3JyZWN0IHBhcmFtZXRlciBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY29wZWROb2RlRHJhZ1N0YXRlOjpTY29wZWROb2RlRHJhZ1N0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZE5vZGVEcmFnU3RhdGU6On5TY29wZWROb2Rl
RHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dCk6IEJvaWxlcnBsYXRlIGJ1ZmZlciBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0
ZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRG
cmFtZVNlbGVjdGlvblN0YXRlOjp+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6IE1vdmVkIGZyb20gRnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6IE1vdmVkIGZyb20gRnJh
bWVTbmFwc2hvdHRpbmdNYWMuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKTogdXNlIG51bGxwdHIuCisKIDIwMTMtMTEtMTYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ3J5cHRvIG5vIGxvbmdlciB1c2VzIHNlcXVlbmNl
cyBvZiBBcnJheUJ1ZmZlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwppbmRleCAxNDkzYzJiZjFkOGI1YjEwNTQ3
NTFjYTM5NDFjYzZhODllMGIzZDI2Li43ZDM0YWFjYTA0MWZiZWE2NjMzZGQ2MDdjZGQ1OWMxN2Zh
NmI5MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMTEtMTMgIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIENvbnNvbGlk
YXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUlPUy5tbTogdXNlIG5ldyBoZWFkZXIgZmlsZS4KKwogMjAxMy0xMS0wNyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhIFBMQVRGT1JNKElP
UykgZnJvbSBXZWJLaXQgUHJpdmF0ZSBIZWFkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBhYTNmMTM0
NDEyZDI2YmNlNjhiYmVmMDliZTQyYjRlYTlkYjM0MjYzLi40OWM1ZTlmMzgzOTliYjFhZmYyYzFj
NTBjM2E3MmI0Zjg1ZDc2NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTMtMTEtMTMgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAg
ICAgIENvbnNvbGlkYXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG5ldyBwbGF0
Zm9ybS1pbmRlcGVuZGVudCBtZXRob2RzIGluc3RlYWQgb2YgTWFjIG1ldGhvZHMuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2Vs
ZWN0aW9uRHJhZ2dpbmdJbWFnZV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZWxlY3Rpb25J
bWFnZUZvcmNpbmdCbGFja1RleHQ6XSk6CisKIDIwMTMtMTEtMTQgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWltcGxlbWVudCBnZXREYXlCb3VuZGFy
aWVzIHVzaW5nIE5TQ2FsZW5kYXIgb24gMTAuOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDY4N2QyZTU0
YmQ0YjZhNjBjYzhhMDFkNDA0ZTgyNmZhOTg0NTA3M2YuLjY5MWFjMGY2NGQ5NjJjMzI4MDE4MGU0
YzRmYmQ5Mjg5OWZkZDhiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
My0xMS0xNCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAg
ICAgQ29uc29saWRhdGUgdmFyaW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNvcmVDbGFz
c2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UpOiB1c2UgY3JlYXRl
RHJhZ0ltYWdlRm9yTm9kZS4KKwogMjAxMy0xMS0xNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIFdpbiBidWlsZCBmaXg7IHNldEN1cnJlbnRU
aW1lKCkgbm8gbG9uZ2VyIHRha2VzIGFuIGV4Y2VwdGlvbiBwYXJhbWV0ZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDQ3MGRmMjQxZWZlODk2M2NjNmY0Nzc1NjJkNGM1MDU2MzhiZjc1OGMuLjcx
Y2EzMjYwZTNkM2EwOTk1YmZjZGZmYzY0MTQxY2Q5Zjk1ZjNlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNzI2LDYgKzE3MjYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCiAgICAgcGFnZS9GcmFtZS5jcHAKICAgICBwYWdlL0ZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlci5jcHAKKyAgICBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAogICAg
IHBhZ2UvRnJhbWVUcmVlLmNwcAogICAgIHBhZ2UvRnJhbWVWaWV3LmNwcAogICAgIHBhZ2UvR2Vz
dHVyZVRhcEhpZ2hsaWdodGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
ZmQ1MzI3ODEyNGM5ZDhhZGM1ZjMyNDM0YjA1NWRhM2VhZDBhZGNhYS4uZWVmYjkzYjY1NjU3OTUy
ZGFjODI2NWNmYTEyYzhiYWZiZDA2Mjc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC00MTE4LDYgKzQxMTgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDE0MjQyYjMyMTJmOWY0YWUxZDhiM2QzNjIyNTUyM2VlNzgxNjgyMWUuLjhjZGQxZmY2
ZTM0YmYzNmZiOWE2NDhlODY4YjI0NzBjZmJlNzBlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC00MjcsNyArNDI3LDYgQEAgX19aTjdXZWJDb3JlMTRjb29raWVzRW5hYmxlZEVSS05TXzIxTmV0
d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43V2ViQ29yZTE0ZGVjb2RlSG9z
dE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRlbmNvZGVIb3N0TmFtZUVQOE5TU3RyaW5n
CiBfX1pON1dlYkNvcmUxNGVuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCi1fX1pON1dlYkNvcmUxNHNlbGVjdGlvbklt
YWdlRVBOU181RnJhbWVFYgogX19aTjdXZWJDb3JlMTRzZXRNZXRhZGF0YVVSTEVSTjNXVEY2U3Ry
aW5nRVJLUzFfUzRfCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVmbGlwWUV2CiBfX1pO
N1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybTVzY2FsZUVkCkBAIC04ODcsNiArODg2LDcgQEAgX19a
TjdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2VDMkV2CiBfX1pON1dlYkNvcmUy
N0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2Rl
RUVFYlJLTlMxXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jazE0c2V0T3JpZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRh
dGlvbkRhdGFFRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFF
dgorX19aTjdXZWJDb3JlMjdjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb25FUk5TXzVGcmFtZUVi
CiBfX1pON1dlYkNvcmUyN3Byb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbEVSS05TXzNVUkxFUzJf
CiBfX1pON1dlYkNvcmUyN3N0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlc0VQRnZ2RQogX19aTjdX
ZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFTjNXVEY3
UGFzc1JlZklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQpAQCAtMjAzMiw3ICsyMDMyLDYgQEAg
X19aTjdXZWJDb3JlMzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CiBf
X1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZ0V2
CiBfX1pON1dlYkNvcmU0MmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGlu
Z0V2CiBfX1pON1dlYkNvcmU0NmNvbnRleHRNZW51SXRlbVRhZ0NvcnJlY3RTcGVsbGluZ0F1dG9t
YXRpY2FsbHlFdgotX19aTjdXZWJDb3JlNUZyYW1lOW5vZGVJbWFnZUVQTlNfNE5vZGVFCiBfX1pO
N1dlYkNvcmU2Q3Vyc29yOGZyb21UeXBlRU5TMF80VHlwZUUKIF9fWk43V2ViQ29yZTZDdXJzb3JD
MUVQTlNfNUltYWdlRVJLTlNfOEludFBvaW50RQogX19aTjdXZWJDb3JlNkN1cnNvckMxRVJLUzBf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCA1MWU5MThlNzk0ODkyMmNmZDIyMDMxM2E1ZDFhNGJiOTFkYzA5YTBhLi4wMzFiNmNmZTk2YmY1
ODk4NWRlYzNlNTk2OTQ2M2U0YjRlZGI1OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTY5ODMsNiArNjk4Myw3IEBACiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZvY3VzQ29udHJvbGxlci5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGFnZVxHcm91cFNldHRpbmdzLmNwcCIgLz4KQEAgLTE4ODEyLDYgKzE4ODEzLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRm9jdXNEaXJlY3Rpb24uaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNob3R0aW5nLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVZpZXcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhZ2VcR3JvdXBTZXR0aW5ncy5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGEzOTVkYWI5
YjYzNjI2N2MxYThhNmJhYmNjNWExYzA2MmVjZjUyY2MuLjExYjJjNTRhNTMxZjExMjUzMDdiMjE4
MDAyOTg2NWVmMGYxOTljMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcxNyw2ICs3MTcsOSBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVNuYXBzaG90dGluZy5jcHAiPgorICAgICAg
PEZpbHRlcj5wYWdlPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5jcHAiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03NjE3LDYgKzc2MjAsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCI+CiAgICAgICA8
RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuaCI+CisgICAgICA8RmlsdGVyPnBhZ2U8
L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
Z2VcRnJhbWVUcmVlLmgiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMDRiZWQwN2VmYWM1ODkyOGU1YmEwMTY5NjY0ZTMxYmYwYThiMzlkZS4uMWZm
ZjIxNzI5OTNiYjU3OTVlMzdiOGNkYWVhYjYwYjNkNWNhZGEyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjAwNSw3ICsyMDA1
LDYgQEAKIAkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBMjE0ODMwOTdBM0Y1MzAw
QjkwNTBBIC8qIEZyYW1lVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTY1QkYwMjJFMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyOTA5NzQ4
MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwICovOyB9OwogCQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1QkYwMjQ1MDk3NDgxOTAwMEM0MzE5
NiAvKiBGcmFtZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAqLzsgfTsKIAkJ
NjVDOTdBRjMwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNv
bmZpZy5oICovOyB9OwogCQk2NUNCRkVGOTA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY3
MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovOyB9OwogCQk2NUNCRkVGQTA5NzRG
NjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIyMDYs
OCArMjIwNSw2IEBACiAJCTdDNTM0M0ZDMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M1MzQzRkExN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAgKi87IH07CiAJCTdDNTM0M0ZEMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDNTM0M0ZCMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aCAqLzsgfTsKIAkJN0NDN0UzRDcxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlz
dC50eHQgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
QzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0ICovOyB9Owot
CQk3Q0UzMERBOTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi87IH07Ci0JCTdDRTMwREFB
MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0Ux
IC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0Q3NDFCREExNzcyMjZBQTAwODU5MTcwIC8qIENTU1ZhbHVl
S2V5d29yZHMuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ4MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdv
cmRzLmggKi87IH07CiAJCTdFMTJFOTBGMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5oICovOyB9OwogCQk3RTEyRTkxMDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVz
aEdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRv
ci5jcHAgKi87IH07CkBAIC01MjQ0LDYgKzUyNDEsOCBAQAogCQlDM0NGMTdBNTE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2Jz
ZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDM0NGMTdBNjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0Ey
MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovOyB9Owog
CQlDM0NGMTdBNzE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDM0NGMTdBMzE1
QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzRDRDYyOUExODM4Mzc2NjAw
N0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5jcHAgKi87IH07CisJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwQjU2MTYx
MjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdy
b3VwU2V0dGluZ3MuY3BwICovOyB9OwogCQlDNTBCNTYxNzEyMTE5RDIzMDA4QjQ2RTAgLyogR3Jv
dXBTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBEMEU4MjBGRjQyNzI5
MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFn
ZU5hbWVzcGFjZS5jcHAgKi87IH07CkBAIC04NzQwLDcgKzg3MzksNiBAQAogCQk2NUE2NDBGMDA1
MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVCRjAy
MjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVCRjAy
M0MwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEZyYW1lTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVDQkZFRjcw
OTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRnJhbWVWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04OTY4LDggKzg5NjYsNiBAQAogCQk3QzYxMzZGODE3MTBDMzUyMDBGRjRBNTcgLyog
SW5GaWxlc1BhcnNlci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBJbkZpbGVzUGFyc2VyLnBtOyBwYXRo
ID0gc2NyaXB0cy9JbkZpbGVzUGFyc2VyLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QzYxMzZGOTE3MTBDMzUyMDBGRjRBNTcgLyogU3RhdGljU3RyaW5nLnBtICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsg
bmFtZSA9IFN0YXRpY1N0cmluZy5wbTsgcGF0aCA9IHNjcmlwdHMvU3RhdGljU3RyaW5nLnBtOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyog
SUROU2NyaXB0V2hpdGVMaXN0LnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJRE5TY3JpcHRX
aGl0ZUxpc3QudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0UzMERBNzE3MUI2
M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZ01hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25h
cHNob3R0aW5nTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lU25h
cHNob3R0aW5nTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMTJFOTBEMTVG
QTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDsgcGF0aCA9
IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTEyRTkwRTE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0b21G
aWx0ZXJNZXNoR2VuZXJhdG9yLmNwcDsgcGF0aCA9IGZpbHRlcnMvQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAwMTI3RjM0
MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEy
Mjc0LDYgKzEyMjcwLDggQEAKIAkJQzNDRjE3QTExNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRUYXJnZXRPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDM0NGMTdBMjE1QjAwNjNGMDAy
NzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzQ0YxN0EzMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdl
dE9ic2VydmVyUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSWRU
YXJnZXRPYnNlcnZlclJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0
Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFt
ZVNuYXBzaG90dGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVNu
YXBzaG90dGluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBCNTYxNDEyMTE5
RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBHcm91cFNldHRpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzUwQjU2MTUxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDNTBEMEU4MDBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVz
cGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdG9yYWdlTmFt
ZXNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NjA2LDYgKzE1NjA0
LDggQEAKIAkJCQk2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLywKIAkJCQk5
NzRBODYyMDE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCAq
LywKIAkJCQk5NzRBODYyMTE0QjdBREJCMDAzRkRDNzYgLyogRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyLmggKi8sCisJCQkJQzRDRDYyOTgxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0
aW5nLmNwcCAqLywKKwkJCQlDNENENjI5OTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hv
dHRpbmcuaCAqLywKIAkJCQk2NUEyMTQ4MjA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNw
cCAqLywKIAkJCQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8sCiAJ
CQkJNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCkBAIC0xNjUy
MCw5ICsxNjUyMCw2IEBACiAJCQkJQUJBRjIyMDcwQzAzQjFDNzAwQjBCQ0YwIC8qIENocm9tZU1h
Yy5tbSAqLywKIAkJCQlBNzE4Nzg4RjBCMkQwNEFDMDBBMTZFQ0UgLyogRHJhZ0NvbnRyb2xsZXJN
YWMubW0gKi8sCiAJCQkJOTNDMDlBN0UwQjA2NEVFRjAwNUFCRDREIC8qIEV2ZW50SGFuZGxlck1h
Yy5tbSAqLywKLQkJCQk2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gKi8s
Ci0JCQkJN0NFMzBEQTgxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmgg
Ki8sCi0JCQkJN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tICovLAogCQkJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLywK
IAkJCQlFMUMyRjI0ODE1MzNBMjEyMDA4M0Y5NzQgLyogU2V0dGluZ3NNYWMubW0gKi8sCiAJCQkJ
RjU4Nzg1NEMwMkRFMzc1OTAxRUE0MTIyIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCAqLywKQEAgLTIy
MTIxLDYgKzIyMTE4LDcgQEAKIAkJCQkxQTU2OUNGODBEN0UyQjgyMDA3QzM5ODMgLyogY19jbGFz
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkEwRDdFMkI4MjAwN0MzOTgzIC8qIGNfaW5z
dGFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZDMEQ3RTJCODIwMDdDMzk4MyAvKiBj
X3J1bnRpbWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUM0Q0Q2MjlCMTgzODM3NjYwMDdFQkFGMSAv
KiBGcmFtZVNuYXBzaG90dGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkUwRDdFMkI4
MjAwN0MzOTgzIC8qIGNfdXRpbGl0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMUEwOTc5
QzNCRDAwNDY3NzQxIC8qIENhY2hlZENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNjRCNENDMENCNDI5NUQwMDVGMkI2MiAvKiBDYWNoZWRGb250LmggaW4gSGVhZGVycyAqLywK
QEAgLTIyOTc5LDcgKzIyOTc3LDYgQEAKIAkJCQk2MjhEMjE0RTEyMTMxRUY0MDA1NURDRkMgLyog
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MkFGNzAxODBG
Mjg5NTAwRkJBREI5IC8qIENyeXB0b0tleVVzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMw
OUUwRTA5OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAot
CQkJCTdDRTMwREFBMTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjVBMjE0ODUwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcyMDVBQjAxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERp
cmVjdG9yeURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MjU5LDEwICsyNjI1Niw4IEBA
CiAJCQkJOTMyRTE2MDkwQUY1NzgzNDAwMjVGNDA4IC8qIEZyYW1lTG9hZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUQwMDBFQkEyMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRl
TWFjaGluZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkJBNzY2RTE2NjQyN0E4MDA1QkU1RDEg
LyogRnJhbWVMb2FkUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NUJGMDI0NTA5NzQ4
MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUwRDA5
OUU2NDkyMDA1NkU1ODEgLyogRnJhbWVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NEE4Qzk2RUIwQkU2OTAzMjAwNEVFRkYwIC8qIEZyYW1lU2VsZWN0aW9uTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJN0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5n
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQUQxN0QxNDE1MTAwN0ZGODQyIC8qIEpT
UlRDRGF0YUNoYW5uZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUEyMTQ4NDA5N0Ez
RjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzkxQTEw
MTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3NzY4LDYgKzI3NzYzLDcgQEAKIAkJCQk1MUUwQkIzOTBEQTVBQ0I2MDBBOUU0MTcgLyogU3Rv
cmFnZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzI3N0U1MjE3RDAxOENDMDAxNTUzNEQg
LyogSlNNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MEQwRTgyMEZG
NDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUM0Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDNTVFMzhDMDEwMDQwRDVEMDBBNTZCREIgLyogU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCMDlEQjQxNkFGNUY2QzAwODUzOEU3IC8q
IFN0b3JhZ2VTdHJhdGVneS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEwMkQ5NTBGRDlBQTJE
MDBGQUZGMDQgLyogU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQppbmRleCBjYzAzNjU1MjZlMzE2ZTA1ZDViMTViYjc0NDRj
M2JiMmJjZmE5MDUwLi5hNmFjMzk5YzBlNzc2NDM1OWQ1YTkyZjNmZWVlY2JhYzBmMjViY2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQpAQCAtMzYsOSArMzYsOSBAQAogI2ltcG9y
dCAiRE9NTm9kZUludGVybmFsLmgiCiAjaW1wb3J0ICJET01Qcml2YXRlLmgiCiAjaW1wb3J0ICJE
T01SYW5nZUludGVybmFsLmgiCisjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKICNpbXBvcnQgIkZvbnQu
aCIKICNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgog
I2ltcG9ydCAiSFRNTEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAi
SFRNTFBhcnNlcklkaW9tcy5oIgpAQCAtMjg3LDkgKzI4Nyw5IEBAIGlkIDxET01FdmVudFRhcmdl
dD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKICAgICAvLyBGSVhNRTog
Q291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6Ok5vZGUgYW5kIGF1dG9nZW5l
cmF0ZT8KICAgICBXZWJDb3JlOjpOb2RlKiBub2RlID0gY29yZShzZWxmKTsKICAgICBXZWJDb3Jl
OjpGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFt
ZSkKKyAgICBpZiAoIWZyYW1lIHx8ICFub2RlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBmcmFtZS0+bm9kZUltYWdlKG5vZGUpLmdldCgpOworICAgIHJldHVybiBbW2NyZWF0ZURy
YWdJbWFnZUZvck5vZGUoKmZyYW1lLCAqbm9kZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9CiAK
IC0gKE5TQXJyYXkgKil0ZXh0UmVjdHMKQEAgLTMzMiwxMCArMzMyLDEwIEBAIGlkIDxET01FdmVu
dFRhcmdldD4ga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBldmVudFRhcmdldCkKIHsKICAgICBX
ZWJDb3JlOjpSYW5nZSogcmFuZ2UgPSBjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSA9IHJhbmdlLT5vd25lckRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQor
ICAgIGlmICghZnJhbWUgfHwgIXJhbmdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0
dXJuIFdlYkNvcmU6OnJhbmdlSW1hZ2UoZnJhbWUsIHJhbmdlLCBmb3JjZUJsYWNrVGV4dCk7Cisg
ICAgcmV0dXJuIFtbY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoKmZyYW1lLCAqcmFuZ2UsIGZvcmNl
QmxhY2tUZXh0KSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJheSAqKXRleHRS
ZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAppbmRleCA5ZDJlMjc1MmZkZjJiN2M2NjQyYTI0
MjRmODgwNjNlYzhhNzFjN2M4Li4zMDdmY2MxNWY3ZDA4MDhmY2RlZDY0OWEyNzJlYmMwY2I2ODAz
NTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcApAQCAtMjc3LDEwICsyNzcsMTEgQEAgRHJh
Z0ltYWdlUmVmIENsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBsb2NhdGlvbikg
Y29uc3QKIAogICAgIGlmIChtX2RyYWdJbWFnZUVsZW1lbnQpIHsKICAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IG1fZHJhZ0ltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZyYW1lLT5ub2RlSW1hZ2UobV9kcmFnSW1hZ2VFbGVtZW50LmdldCgpKTsK
KyAgICAgICAgICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgKm1fZHJh
Z0ltYWdlRWxlbWVudCk7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7IC8vIFdlIGRvIG5vdCBoYXZl
IGVub3VnaCBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYSBkcmFnIGltYWdlLCB1c2UgdGhlIGRlZmF1
bHQgaWNvbi4KKyAgICAvLyBXZSBkbyBub3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gY3Jl
YXRlIGEgZHJhZyBpbWFnZSwgdXNlIHRoZSBkZWZhdWx0IGljb24uCisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2Fy
ZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRNYWMubW0KaW5kZXggNzZjYTZm
Y2EzZTQyNDA3YjVmOGU3YjM1ZTY1ODczN2MyMTEzZThmYi4uYTA5YjMwYTRhNjY4M2JhMWZkN2Zi
NDVmYTg5YjJkYmVjMDBjMzI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBi
b2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tCkBAIC0y
OCw3ICsyOCw3IEBACiAKICNpbXBvcnQgIkNhY2hlZEltYWdlLmgiCiAjaW1wb3J0ICJFbGVtZW50
LmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgorI2ltcG9ydCAiRHJhZ0ltYWdl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsMTYgKzM3LDE2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIENsaXBib2FyZDo6ZHJhZ0ltYWdlIGluIENsaXBib2FyZC5jcHAgZG9l
cyBub3QgaGFuZGxlIGNvcnJlY3RseSwgc28gbXVzdCByZXNvbHZlIHRoYXQgYXMgd2VsbC4KIERy
YWdJbWFnZVJlZiBDbGlwYm9hcmQ6OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgbG9jYXRpb24p
IGNvbnN0CiB7Ci0gICAgTlNJbWFnZSAqcmVzdWx0ID0gbmlsOworICAgIERyYWdJbWFnZVJlZiBy
ZXN1bHQgPSBuaWw7CiAgICAgaWYgKG1fZHJhZ0ltYWdlRWxlbWVudCkgewogICAgICAgICBpZiAo
RnJhbWUqIGZyYW1lID0gbV9kcmFnSW1hZ2VFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpIHsK
LSAgICAgICAgICAgIE5TUmVjdCBpbWFnZVJlY3Q7Ci0gICAgICAgICAgICBOU1JlY3QgZWxlbWVu
dFJlY3Q7Ci0gICAgICAgICAgICByZXN1bHQgPSBzbmFwc2hvdERyYWdJbWFnZShmcmFtZSwgbV9k
cmFnSW1hZ2VFbGVtZW50LmdldCgpLCAmaW1hZ2VSZWN0LCAmZWxlbWVudFJlY3QpOworICAgICAg
ICAgICAgSW50UmVjdCBpbWFnZVJlY3Q7CisgICAgICAgICAgICBJbnRSZWN0IGVsZW1lbnRSZWN0
OworICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2UoKmZyYW1lLCAq
bV9kcmFnSW1hZ2VFbGVtZW50LCBpbWFnZVJlY3QsIGVsZW1lbnRSZWN0KTsKICAgICAgICAgICAg
IC8vIENsaWVudCBzcGVjaWZpZXMgcG9pbnQgcmVsYXRpdmUgdG8gZWxlbWVudCwgbm90IHRoZSB3
aG9sZSBpbWFnZSwgd2hpY2ggbWF5IGluY2x1ZGUgY2hpbGQKICAgICAgICAgICAgIC8vIGxheWVy
cyBzcHJlYWQgb3V0IGFsbCBvdmVyIHRoZSBwbGFjZS4KLSAgICAgICAgICAgIGxvY2F0aW9uLnNl
dFgoZWxlbWVudFJlY3Qub3JpZ2luLnggLSBpbWFnZVJlY3Qub3JpZ2luLnggKyBtX2RyYWdMb2Nh
dGlvbi54KCkpOwotICAgICAgICAgICAgbG9jYXRpb24uc2V0WShpbWFnZVJlY3Quc2l6ZS5oZWln
aHQgLSAoZWxlbWVudFJlY3Qub3JpZ2luLnkgLSBpbWFnZVJlY3Qub3JpZ2luLnkgKyBtX2RyYWdM
b2NhdGlvbi55KCkpKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNldFgoZWxlbWVudFJlY3QueCgp
IC0gaW1hZ2VSZWN0LngoKSArIG1fZHJhZ0xvY2F0aW9uLngoKSk7CisgICAgICAgICAgICBsb2Nh
dGlvbi5zZXRZKGltYWdlUmVjdC5oZWlnaHQoKSAtIChlbGVtZW50UmVjdC55KCkgLSBpbWFnZVJl
Y3QueSgpICsgbV9kcmFnTG9jYXRpb24ueSgpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KG1fZHJhZ0ltYWdlKSB7CiAgICAgICAgIHJlc3VsdCA9IG1fZHJhZ0ltYWdlLT5pbWFnZSgpLT5n
ZXROU0ltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDdl
YjI0OWRmN2ZmOWI1NWE4ZWNlNWFlN2ZmNDcyZTBjZDdiYWMyNDcuLmY4NjZkY2ZkZmJiMjdjZWM1
NjU5NjVjY2JjMzVjZDU3ODI5OTg2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRHJhZ0FjdGlvbnMuaCIKICNpbmNs
dWRlICJEcmFnQ2xpZW50LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKKyNpbmNsdWRlICJEcmFn
SW1hZ2UuaCIKICNpbmNsdWRlICJEcmFnU2Vzc2lvbi5oIgogI2luY2x1ZGUgIkRyYWdTdGF0ZS5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgpAQCAtNzgwLDcgKzc4MSw3IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFn
T3BlcmF0aW9uCiAgICAgICAgIH0KICAgICAgICAgbV9jbGllbnQud2lsbFBlcmZvcm1EcmFnU291
cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGNsaXBib2Fy
ZCk7CiAgICAgICAgIGlmICghZHJhZ0ltYWdlKSB7Ci0gICAgICAgICAgICBkcmFnSW1hZ2UgPSBk
aXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oc3JjLmRyYWdJbWFnZUZvclNlbGVjdGlvbigpLCBE
cmFnSW1hZ2VBbHBoYSk7CisgICAgICAgICAgICBkcmFnSW1hZ2UgPSBkaXNzb2x2ZURyYWdJbWFn
ZVRvRnJhY3Rpb24oY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKHNyYyksIERyYWdJbWFnZUFs
cGhhKTsKICAgICAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhzcmMp
OwogICAgICAgICAgICAgbV9kcmFnT2Zmc2V0ID0gSW50UG9pbnQoZHJhZ09yaWdpbi54KCkgLSBk
cmFnTG9jLngoKSwgZHJhZ09yaWdpbi55KCkgLSBkcmFnTG9jLnkoKSk7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggNjI0MWVlM2M5NTJiNDYxNTVjMjkyMDZiMDhmOTAxZTAwZTUy
ZjU4MC4uNWMwMzYxMWU4Yjc1MWY5MTZkZTJlZDRiNzI2YjYzNjFiNzJmYWExNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTk2NiwxMDggKzk2Niw0IEBAIGJvb2wgRnJhbWU6OmlzVVJMQWxsb3dl
ZChjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmICFQTEFU
Rk9STShNQUMpICYmICFQTEFURk9STShXSU4pCi1zdHJ1Y3QgU2NvcGVkRnJhbWVQYWludGluZ1N0
YXRlIHsKLSAgICBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoRnJhbWUqIGZyYW1lLCBOb2RlKiBu
b2RlKQotICAgICAgICA6IGZyYW1lKGZyYW1lKQotICAgICAgICAsIG5vZGUobm9kZSkKLSAgICAg
ICAgLCBwYWludEJlaGF2aW9yKGZyYW1lLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKSkKLSAgICAg
ICAgLCBiYWNrZ3JvdW5kQ29sb3IoZnJhbWUtPnZpZXcoKS0+YmFzZUJhY2tncm91bmRDb2xvcigp
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPnJlbmRlcmVyKCkpOwotICAg
ICAgICBpZiAobm9kZSkKLSAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURyYWdT
dGF0ZSh0cnVlKTsKLSAgICB9Ci0KLSAgICB+U2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKCkKLSAg
ICB7Ci0gICAgICAgIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBu
b2RlLT5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOwotICAgICAgICBmcmFtZS0+
dmlldygpLT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwotICAgICAgICBmcmFtZS0+
dmlldygpLT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7Ci0gICAgICAg
IGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcoMCk7Ci0gICAgfQotCi0gICAgRnJhbWUqIGZy
YW1lOwotICAgIE5vZGUqIG5vZGU7Ci0gICAgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOwot
ICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKLX07Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6bm9k
ZUltYWdlKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBz
dGF0ZSh0aGlzLCBub2RlKTsKLQotICAgIG1fdmlldy0+c2V0UGFpbnRCZWhhdmlvcihzdGF0ZS5w
YWludEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0K
LSAgICAvLyBXaGVuIGdlbmVyYXRpbmcgdGhlIGRyYWcgaW1hZ2UgZm9yIGFuIGVsZW1lbnQsIGln
bm9yZSB0aGUgZG9jdW1lbnQgYmFja2dyb3VuZC4KLSAgICBtX3ZpZXctPnNldEJhc2VCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7
Ci0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBFbmFibGUgc3BlY2lhbCBzdWIt
dHJlZSBkcmF3aW5nIG1vZGUuCi0KLSAgICAvLyBEb2N1bWVudDo6dXBkYXRlTGF5b3V0IG1heSBo
YXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIHJlbmRlcmVyLgotICAgIGF1dG8gcmVuZGVyZXIg
PSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgSW50UmVjdCBwYWlu
dGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0
KHRvcExldmVsUmVjdCkpOwotCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOwotICAg
IGlmIChtX3BhZ2UpCi0gICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gbV9wYWdlLT5kZXZpY2VT
Y2FsZUZhY3RvcigpOwotICAgIHBhaW50aW5nUmVjdC5zZXRXaWR0aChwYWludGluZ1JlY3Qud2lk
dGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBwYWludGluZ1JlY3Quc2V0SGVpZ2h0KHBh
aW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLQotICAgIE93blB0cjxJ
bWFnZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUo
KSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKLSAgICBpZiAoIWJ1
ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRy
YW5zbGF0ZSgtcGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOwotICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QubWF4WCgpLCBw
YWludGluZ1JlY3QubWF4WSgpKSk7Ci0KLSAgICBtX3ZpZXctPnBhaW50Q29udGVudHMoYnVmZmVy
LT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
YnVmZmVyLT5jb3B5SW1hZ2UoKTsKLQotICAgIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBv
cmllbnRhdGlvbkRlc2NyaXB0aW9uKHJlbmRlcmVyLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbigpKTsKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQotICAgIG9yaWVudGF0
aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCku
aW1hZ2VPcmllbnRhdGlvbigpKTsKLSNlbmRpZgotICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UoaW1hZ2UuZ2V0KCksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwotfQotCi1EcmFn
SW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCi17Ci0gICAgaWYgKCFzZWxl
Y3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgU2NvcGVk
RnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKHRoaXMsIDApOwotICAgIG1fdmlldy0+c2V0UGFpbnRC
ZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSk7Ci0gICAgbV9kb2MtPnVwZGF0ZUxh
eW91dCgpOwotCi0gICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHNl
bGVjdGlvbigpLmJvdW5kcygpKTsKLQotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsK
LSAgICBpZiAobV9wYWdlKQotICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9IG1fcGFnZS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKTsKLSAgICBwYWludGluZ1JlY3Quc2V0V2lkdGgocGFpbnRpbmdSZWN0
LndpZHRoKCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcGFpbnRpbmdSZWN0LnNldEhlaWdo
dChwYWludGluZ1JlY3QuaGVpZ2h0KCkgKiBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0KLSAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5z
aXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7Ci0gICAgaWYg
KCFidWZmZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFu
c2xhdGUoLXBhaW50aW5nUmVjdC54KCksIC1wYWludGluZ1JlY3QueSgpKTsKLSAgICBidWZmZXIt
PmNvbnRleHQoKS0+Y2xpcChGbG9hdFJlY3QoMCwgMCwgcGFpbnRpbmdSZWN0Lm1heFgoKSwgcGFp
bnRpbmdSZWN0Lm1heFkoKSkpOwotCi0gICAgbV92aWV3LT5wYWludENvbnRlbnRzKGJ1ZmZlci0+
Y29udGV4dCgpLCBwYWludGluZ1JlY3QpOwotCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJ1
ZmZlci0+Y29weUltYWdlKCk7Ci0gICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShp
bWFnZS5nZXQoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwotfQotCi0jZW5kaWYK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDg0MDdlOWUyYmNm
M2VlZmVkZGJmMDUzMWJlNmNlOTI3OTQ1NzI3N2MuLjVmMTg2NmZlMjAyZmNmZWE2NDQyYzBiYmVm
ODIwZjU2ZWQyM2U3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNkZWZp
bmUgRnJhbWVfaAogCiAjaW5jbHVkZSAiQWRqdXN0Vmlld1NpemVPck5vdC5oIgotI2luY2x1ZGUg
IkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVU
cmVlLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtNTgsMTEgKzU3LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBFZGl0b3I7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBj
bGFzcyBFdmVudEhhbmRsZXI7CisgICAgY2xhc3MgRmxvYXRTaXplOwogICAgIGNsYXNzIEZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlcjsKICAgICBjbGFzcyBGcmFtZVNlbGVjdGlvbjsKICAgICBjbGFz
cyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogICAgIGNsYXNz
IEhUTUxUYWJsZUNlbGxFbGVtZW50OworICAgIGNsYXNzIEltYWdlQnVmZmVyOwogICAgIGNsYXNz
IEludFJlY3Q7CiAgICAgY2xhc3MgTWFpbkZyYW1lOwogICAgIGNsYXNzIE5vZGU7CkBAIC0xNzcs
OSArMTc4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0cmluZyBkaXNwbGF5
U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgICAg
IERyYWdJbWFnZVJlZiBub2RlSW1hZ2UoTm9kZSopOwotICAgICAgICBEcmFnSW1hZ2VSZWYgZHJh
Z0ltYWdlRm9yU2VsZWN0aW9uKCk7Ci0KICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KTsKICAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50QXRQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpOwogICAg
ICAgICBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFt
ZVBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDlhMWViOWIzNTYyODhiMDQ1ODY5NjU2NzBmMjBjZmM0YjQwYWIwMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCkBAIC0w
LDAgKzEsMTMyIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdh
c2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJGcmFtZVNuYXBzaG90dGlu
Zy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1
ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNjb3BlZEZyYW1lUGFpbnRpbmdT
dGF0ZSB7CisgICAgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlKEZyYW1lJiBmcmFtZSwgTm9kZSog
bm9kZSkKKyAgICA6IGZyYW1lKGZyYW1lKQorICAgICwgbm9kZShub2RlKQorICAgICwgcGFpbnRC
ZWhhdmlvcihmcmFtZS52aWV3KCktPnBhaW50QmVoYXZpb3IoKSkKKyAgICAsIGJhY2tncm91bmRD
b2xvcihmcmFtZS52aWV3KCktPmJhc2VCYWNrZ3JvdW5kQ29sb3IoKSkKKyAgICB7CisgICAgICAg
IEFTU0VSVCghbm9kZSB8fCBub2RlLT5yZW5kZXJlcigpKTsKKyAgICB9CisKKyAgICB+U2NvcGVk
RnJhbWVQYWludGluZ1N0YXRlKCkKKyAgICB7CisgICAgICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFp
bnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKKyAgICAgICAgZnJhbWUudmlldygpLT5zZXRCYXNl
QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7CisgICAgICAgIGZyYW1lLnZpZXcoKS0+
c2V0Tm9kZVRvRHJhdyhudWxscHRyKTsKKyAgICB9CisKKyAgICBGcmFtZSYgZnJhbWU7CisgICAg
Tm9kZSogbm9kZTsKKyAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CisgICAgQ29sb3Ig
YmFja2dyb3VuZENvbG9yOworfTsKKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFw
c2hvdEZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWdlUmVjdCwgU25h
cHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAgRnJhbWVWaWV3OjpTZWxlY3Rpb25JblNuYXBz
aG90IHNob3VsZEluY2x1ZGVTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247
CisgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxp
Z2h0aW5nKQorICAgICAgICBzaG91bGRJbmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpFeGNs
dWRlU2VsZWN0aW9uOworCisgICAgRnJhbWVWaWV3OjpDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hv
dCBjb29yZGluYXRlU3BhY2UgPSBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXM7CisgICAg
aWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlcykKKyAgICAgICAg
Y29vcmRpbmF0ZVNwYWNlID0gRnJhbWVWaWV3OjpWaWV3Q29vcmRpbmF0ZXM7CisKKyAgICBQYWlu
dEJlaGF2aW9yIHRleHRQYWludEJlaGF2aW9yID0gMDsKKyAgICBpZiAob3B0aW9ucyAmIFNuYXBz
aG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0KQorICAgICAgICB0ZXh0UGFpbnRCZWhhdmlvciA9IFBh
aW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dDsKKworICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRp
bmdTdGF0ZSBzdGF0ZShmcmFtZSwgbnVsbHB0cik7CisKKyAgICAvLyBPdGhlciBwYWludCBiZWhh
dmlvcnMgYXJlIHNldCBieSBwYWludENvbnRlbnRzRm9yU25hcHNob3QuCisgICAgUGFpbnRCZWhh
dmlvciBleGlzdGluZ0JlaGF2aW9yID0gZnJhbWUudmlldygpLT5wYWludEJlaGF2aW9yKCk7Cisg
ICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKGV4aXN0aW5nQmVoYXZpb3IgfCB0ZXh0
UGFpbnRCZWhhdmlvcik7CisgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisK
KyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGZyYW1lLnBhZ2UoKSA/IGZyYW1lLnBhZ2Uo
KS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSA6IDE7CisgICAgSW50UmVjdCB1c2VkUmVjdChpbWFnZVJl
Y3QpOworICAgIHVzZWRSZWN0LnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHVzZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0
b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpLmxlYWtQdHIoKSk7CisgICAgaWYgKCFidWZmZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUo
LXVzZWRSZWN0LngoKSwgLXVzZWRSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPmNs
aXAoRmxvYXRSZWN0KDAsIDAsIHVzZWRSZWN0Lm1heFgoKSwgdXNlZFJlY3QubWF4WSgpKSk7CisK
KyAgICBmcmFtZS52aWV3KCktPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChidWZmZXItPmNvbnRl
eHQoKSwgdXNlZFJlY3QsIHNob3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7
CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBz
bmFwc2hvdFNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQor
eworICAgIGlmICghZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIC8vIEZvcmNlIHNlbGVjdGlvbiBoaWdobGlnaHRpbmcgdG8gYmUgaW5j
bHVkZWQuCisgICAgb3B0aW9ucyAmPSB+U25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlvbkhp
Z2hsaWdodGluZzsKKyAgICBJbnRSZWN0IHNlbGVjdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0
KGZyYW1lLnNlbGVjdGlvbigpLmJvdW5kcygpKTsKKyAgICByZXR1cm4gc25hcHNob3RGcmFtZVJl
Y3QoZnJhbWUsIHNlbGVjdGlvblJlY3QsIG9wdGlvbnMpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUpCit7Cisg
ICAgaWYgKCFub2RlLnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
Y29uc3QgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKGZyYW1lLCAmbm9kZSk7CisKKyAg
ICBmcmFtZS52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50
KTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBmcmFtZS52aWV3
KCktPnNldE5vZGVUb0RyYXcoJm5vZGUpOworCisgICAgLy8gRG9jdW1lbnQ6OnVwZGF0ZUxheW91
dCBtYXkgaGF2ZSBibG93biBhd2F5IHRoZSBvcmlnaW5hbCByZW5kZXJlci4KKyAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Cisg
ICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5w
YWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworICAgIHJldHVybiBzbmFwc2hvdEZyYW1l
UmVjdChmcmFtZSwgcGFpbnRpbmdSZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ODkzYmQ0
MGU2ODA2NjAxNzlkY2FkNGI1MmU2MDBjNDI1OTNiNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisg
KiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQKKyAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRnJh
bWVTbmFwc2hvdHRpbmdfaAorI2RlZmluZSBGcmFtZVNuYXBzaG90dGluZ19oCisKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOwor
Y2xhc3MgSW50UmVjdDsKK2NsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgTm9kZTsKKworZW51bSB7
CisgICAgU25hcHNob3RPcHRpb25zTm9uZSA9IDAsCisgICAgU25hcHNob3RPcHRpb25zRXhjbHVk
ZVNlbGVjdGlvbkhpZ2hsaWdodGluZyA9IDEgPDwgMCwKKyAgICBTbmFwc2hvdE9wdGlvbnNJblZp
ZXdDb29yZGluYXRlcyA9IDEgPDwgMSwKKyAgICBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4
dCA9IDEgPDwgMiwKK307Cit0eXBlZGVmIHVpbnQzMl90IFNuYXBzaG90T3B0aW9uczsKKworc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFtZSYsIGNvbnN0
IEludFJlY3QmLCBTbmFwc2hvdE9wdGlvbnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKK3N0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiwgTm9kZSYpOworc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihGcmFtZSYsIFNuYXBz
aG90T3B0aW9ucyA9IFNuYXBzaG90T3B0aW9uc05vbmUpOworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBGcmFtZVNuYXBzaG90dGluZ19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Zy
YW1lTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWZiMWY5MWJjYmQ2ZjA2
MjdhNjFkMWU5NGRlOWI3MTRhOGI1NDM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lTWFjLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQotICog
Q29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCi0K
LSNpbXBvcnQgIkRvY3VtZW50LmgiCi0jaW1wb3J0ICJGcmFtZUxvYWRlckNsaWVudC5oIgotI2lt
cG9ydCAiRnJhbWVTZWxlY3Rpb24uaCIKLSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgi
Ci0jaW1wb3J0ICJGcmFtZVZpZXcuaCIKLSNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5v
ZGUpCi17Ci0gICAgbV9kb2MtPnVwZGF0ZUxheW91dCgpOyAvLyBmb3JjZXMgc3R5bGUgcmVjYWxj
Ci0KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBp
ZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIExheW91dFJlY3QgdG9wTGV2
ZWxSZWN0OwotICAgIE5TUmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJl
bmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwotCi0gICAgbV92aWV3LT5z
ZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1v
ZGUKLSAgICBOU0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KHRoaXMsIHBhaW50aW5nUmVj
dCk7Ci0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KDApOwotCi0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQotewotICAg
IGlmICghc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBzZWxlY3Rpb25JbWFnZSh0aGlzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYWI2N2U3NjU4MTRhZTZjYmM5MDFiYWQ0NGFmZDE1
M2Y4NjJhMjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEZyYW1lU25hcHNob3R0aW5n
TWFjX2gKLSNkZWZpbmUgRnJhbWVTbmFwc2hvdHRpbmdNYWNfaAotCi1PQkpDX0NMQVNTIE5TSW1h
Z2U7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRnJhbWU7Ci1jbGFzcyBSYW5nZTsK
LWNsYXNzIE5vZGU7Ci0KLU5TSW1hZ2UqIHNlbGVjdGlvbkltYWdlKEZyYW1lKiwgYm9vbCBmb3Jj
ZUJsYWNrVGV4dCA9IGZhbHNlKTsKLU5TSW1hZ2UqIHJhbmdlSW1hZ2UoRnJhbWUqLCBSYW5nZSos
IGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7Ci1OU0ltYWdlKiBzbmFwc2hvdERyYWdJbWFn
ZShGcmFtZSosIE5vZGUqLCBOU1JlY3QqIGltYWdlUmVjdCwgTlNSZWN0KiBlbGVtZW50UmVjdCk7
Ci1OU0ltYWdlKiBpbWFnZUZyb21SZWN0KEZyYW1lKiwgTlNSZWN0KTsKLQotfQotCi0jZW5kaWYg
Ly8gRnJhbWVTbmFwc2hvdHRpbmdNYWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9G
cmFtZVNuYXBzaG90dGluZ01hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTky
YzJmMjNjYjE3YmQwM2Q0ZThhNWVlMTk1MTRhYzQzOTFkMTllYi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFt
ZVNuYXBzaG90dGluZ01hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE2OCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkg
UHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCIKLQotI2ltcG9ydCAi
QmxvY2tFeGNlcHRpb25zLmgiCi0jaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRnJhbWUu
aCIKLSNpbXBvcnQgIkZyYW1lU2VsZWN0aW9uLmgiCi0jaW1wb3J0ICJGcmFtZVZpZXcuaCIKLSNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgotI2ltcG9ydCAiUmFuZ2UuaCIKLSNpbXBvcnQgIlJl
bmRlclZpZXcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1OU0ltYWdlKiBpbWFnZUZyb21S
ZWN0KEZyYW1lKiBmcmFtZSwgTlNSZWN0IHJlY3QpCi17Ci0gICAgUGFpbnRCZWhhdmlvciBvbGRC
ZWhhdmlvciA9IGZyYW1lLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKTsKLSAgICBmcmFtZS0+dmll
dygpLT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5D
b21wb3NpdGluZ0xheWVycyk7Ci0gICAgCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwotICAgIAotICAgIE5TSW1hZ2UqIHJlc3VsdEltYWdlID0gW1tbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhTaXplOnJlY3Quc2l6ZV0gYXV0b3JlbGVhc2VdOwotICAgIAotICAgIGlmIChyZWN0LnNp
emUud2lkdGggIT0gMCAmJiByZWN0LnNpemUuaGVpZ2h0ICE9IDApIHsKLSNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXBy
ZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAgICAgW3Jlc3VsdEltYWdlIHNldEZsaXBwZWQ6WUVT
XTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICAgICAgW3Jlc3VsdEltYWdlIGxv
Y2tGb2N1c107Ci0KLSAgICAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgoQ0dD
b250ZXh0UmVmKVtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9y
dF0pOyAgICAgICAgCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7Ci0gICAgICAgIGdy
YXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXJlY3Qub3JpZ2luLngsIC1yZWN0Lm9yaWdpbi55KTsK
LSAgICAgICAgZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cygmZ3JhcGhpY3NDb250ZXh0LCBJ
bnRSZWN0KHJlY3QpKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKLQotICAg
ICAgICBbcmVzdWx0SW1hZ2UgdW5sb2NrRm9jdXNdOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVj
bGFyYXRpb25zIgotICAgICAgICBbcmVzdWx0SW1hZ2Ugc2V0RmxpcHBlZDpOT107Ci0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgfQotICAgIAotICAgIGZyYW1lLT52aWV3KCktPnNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwotICAgIHJldHVybiByZXN1bHRJbWFnZTsKLSAg
ICAKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIAotICAgIGZyYW1lLT52aWV3
KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwotICAgIHJldHVybiBuaWw7Ci19Ci0K
LU5TSW1hZ2UqIHNlbGVjdGlvbkltYWdlKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4
dCkKLXsKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JT
ZWxlY3Rpb25Pbmx5IHwgKGZvcmNlQmxhY2tUZXh0ID8gUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tU
ZXh0IDogMCkpOwotICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLSAgICBO
U0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KGZyYW1lLCBmcmFtZS0+c2VsZWN0aW9uKCku
Ym91bmRzKCkpOwotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhh
dmlvck5vcm1hbCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotTlNJbWFnZSAqcmFuZ2VJbWFn
ZShGcmFtZSogZnJhbWUsIFJhbmdlKiByYW5nZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKLXsKLSAg
ICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25P
bmx5IHwgKGZvcmNlQmxhY2tUZXh0ID8gUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0IDogMCkp
OwotICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLSAgICBSZW5kZXJWaWV3
KiB2aWV3ID0gZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpOwotICAgIGlmICghdmlldykKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgIFBvc2l0aW9uIHN0YXJ0ID0gcmFuZ2UtPnN0YXJ0UG9zaXRp
b24oKTsKLSAgICBQb3NpdGlvbiBjYW5kaWRhdGUgPSBzdGFydC5kb3duc3RyZWFtKCk7Ci0gICAg
aWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9k
ZSgpLT5yZW5kZXJlcigpKQotICAgICAgICBzdGFydCA9IGNhbmRpZGF0ZTsKLQotICAgIFBvc2l0
aW9uIGVuZCA9IHJhbmdlLT5lbmRQb3NpdGlvbigpOwotICAgIGNhbmRpZGF0ZSA9IGVuZC51cHN0
cmVhbSgpOwotICAgIGlmIChjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUu
ZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgZW5kID0gY2FuZGlkYXRlOwot
Ci0gICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8IGVuZC5pc051bGwoKSB8fCBzdGFydCA9PSBlbmQp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHNhdmVkU3RhcnRSZW5k
ZXJlcjsKLSAgICBpbnQgc2F2ZWRTdGFydE9mZnNldDsKLSAgICBSZW5kZXJPYmplY3QqIHNhdmVk
RW5kUmVuZGVyZXI7Ci0gICAgaW50IHNhdmVkRW5kT2Zmc2V0OwotICAgIHZpZXctPmdldFNlbGVj
dGlvbihzYXZlZFN0YXJ0UmVuZGVyZXIsIHNhdmVkU3RhcnRPZmZzZXQsIHNhdmVkRW5kUmVuZGVy
ZXIsIHNhdmVkRW5kT2Zmc2V0KTsKLQotICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciA9
IHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFzdGFydFJlbmRl
cmVyKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJl
ciA9IGVuZC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgIGlmICghZW5kUmVuZGVy
ZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc3RhcnRS
ZW5kZXJlciwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmVuZGVyZXIsIGVu
ZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7
Ci0gICAgTlNJbWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgdmlldy0+c2VsZWN0
aW9uQm91bmRzKCkpOwotICAgIHZpZXctPnNldFNlbGVjdGlvbihzYXZlZFN0YXJ0UmVuZGVyZXIs
IHNhdmVkU3RhcnRPZmZzZXQsIHNhdmVkRW5kUmVuZGVyZXIsIHNhdmVkRW5kT2Zmc2V0LCBSZW5k
ZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7Ci0KLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJl
aGF2aW9yKFBhaW50QmVoYXZpb3JOb3JtYWwpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQot
TlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoRnJhbWUqIGZyYW1lLCBOb2RlKiBub2RlLCBOU1Jl
Y3QqIGltYWdlUmVjdCwgTlNSZWN0KiBlbGVtZW50UmVjdCkKLXsKLSAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIAotICAgIHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7
ICAgIC8vIG1hcmsgZHJhZ2dlZCBub2RlcyAoc28gdGhleSBwaWNrIHVwIHRoZSByaWdodCBDU1Mp
Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOyAgLy8gZm9yY2VzIHN0eWxl
IHJlY2FsYyAtIG5lZWRlZCBzaW5jZSBjaGFuZ2luZyB0aGUgZHJhZyBzdGF0ZSBtaWdodAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltcGx5IG5ldyBzdHlsZXMs
IHBsdXMgSlMgY291bGQgaGF2ZSBjaGFuZ2VkIG90aGVyIHRoaW5ncwotCi0KLSAgICAvLyBEb2N1
bWVudDo6dXBkYXRlTGF5b3V0IG1heSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIFJlbmRl
ckVsZW1lbnQuCi0gICAgcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVu
ZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVj
dDsKLSAgICBOU1JlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJl
ci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKLQotICAgIGlmIChOU0lzRW1wdHlS
ZWN0KHBhaW50aW5nUmVjdCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBmcmFtZS0+dmll
dygpLT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBkcmF3
aW5nIG1vZGUKLSAgICBOU0ltYWdlKiByZXN1bHQgPSBpbWFnZUZyb21SZWN0KGZyYW1lLCBwYWlu
dGluZ1JlY3QpOwotICAgIHJlbmRlcmVyLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOwotICAgIGZy
YW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKLSAgICBmcmFtZS0+dmlldygpLT5zZXRO
b2RlVG9EcmF3KDApOwotCi0gICAgaWYgKGVsZW1lbnRSZWN0KQotICAgICAgICAqZWxlbWVudFJl
Y3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHRvcExldmVsUmVjdCk7Ci0gICAgaWYgKGltYWdlUmVj
dCkKLSAgICAgICAgKmltYWdlUmVjdCA9IHBhaW50aW5nUmVjdDsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdp
bi5jcHAKaW5kZXggNWFhZjNhNjc4YzllNTQzYWY2ODNiMzdhZDViMDZjY2UwNjQ0M2I5Zi4uOTY3
NGYxNzY4ZjVkZDg0MjViNjBjN2FmMTZmMGYxZjdkNmY3NjMxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
d2luL0ZyYW1lV2luLmNwcApAQCAtNTcsMzAgKzU3LDQgQEAgR0RJT2JqZWN0PEhCSVRNQVA+IGlt
YWdlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCiAgICAg
cmV0dXJuIGltYWdlOwogfQogCi1EcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNlbGVj
dGlvbigpCi17Ci0gICAgaWYgKHNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJu
IGltYWdlRnJvbVNlbGVjdGlvbih0aGlzLCBmYWxzZSkubGVhaygpOwotCi0gICAgcmV0dXJuIDA7
Ci19Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6bm9kZUltYWdlKE5vZGUqIG5vZGUpCi17Ci0gICAg
ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OwotICAgIEludFJlY3QgcGFpbnRpbmdS
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BM
ZXZlbFJlY3QpKTsKLQotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdyhub2RlKTsgLy8gaW52b2tl
IHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0gICAgR0RJT2JqZWN0PEhCSVRNQVA+IHJl
c3VsdCA9IGltYWdlRnJvbVJlY3QodGhpcywgcGFpbnRpbmdSZWN0KTsKLSAgICBtX3ZpZXctPnNl
dE5vZGVUb0RyYXcoMCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0LmxlYWsoKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmgKaW5kZXggM2EyNzIz
ZTYzZDZkN2U3ZWMwNDRjYjEyZjJlYTdiZDA2Y2ZlNjU5Zi4uMjY5NzI1YzFmOWI5YjgwZDU3ODE0
ODRmOTMxYWIyNWRkM2FlMzMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4v
RnJhbWVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCkBAIC0z
NSw3ICszNSw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSW50UmVjdDsKIAogR0RJT2JqZWN0PEhC
SVRNQVA+IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqLCBJbnRSZWN0Jik7Ci1HRElPYmplY3Q8
SEJJVE1BUD4gaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiwgYm9vbCBmb3JjZVdoaXRlVGV4dCk7
CitHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tU2VsZWN0aW9uKEZyYW1lKiwgYm9vbCBmb3Jj
ZUJsYWNrVGV4dCk7CiB2b2lkIGNvbXB1dGVQYWdlUmVjdHNGb3JGcmFtZShGcmFtZSosIGNvbnN0
IEludFJlY3QmIHByaW50UmVjdCwgZmxvYXQgaGVhZGVySGVpZ2h0LCBmbG9hdCBmb290ZXJIZWln
aHQsIGZsb2F0IHVzZXJTY2FsZUZhY3RvciwgVmVjdG9yPEludFJlY3Q+JiBvdXRQYWdlcywgaW50
JiBvdXRQYWdlSGVpZ2h0KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdJbWFnZS5jcHAKaW5kZXggYjgxYWZkNTc5ZTgyOTNlZWZhMmJhOTNiOWJiNTVj
MWY1MDc2Y2Y0Ny4uN2M0Njc0ODFiZDU2YTNkNzViOTY5MGZmMTFlYWU2M2M1ZWI4OGE2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKQEAgLTI4LDI5ICsyOCwzNyBA
QAogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAiRnJhbWVTbmFwc2hvdHRpbmcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci0gICAgCisKIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJhZ0ltYWdlUmVm
IGltYWdlLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbnRTaXplJiBzaXplKQogewog
ICAgIGZsb2F0IGhlaWdodFJlc2l6ZVJhdGlvID0gMC4wZjsKICAgICBmbG9hdCB3aWR0aFJlc2l6
ZVJhdGlvID0gMC4wZjsKICAgICBmbG9hdCByZXNpemVSYXRpbyA9IC0xLjBmOwogICAgIEludFNp
emUgb3JpZ2luYWxTaXplID0gZHJhZ0ltYWdlU2l6ZShpbWFnZSk7Ci0gICAgCisKICAgICBpZiAo
c3JjU2l6ZS53aWR0aCgpID4gc2l6ZS53aWR0aCgpKSB7CiAgICAgICAgIHdpZHRoUmVzaXplUmF0
aW8gPSBzaXplLndpZHRoKCkgLyAoZmxvYXQpc3JjU2l6ZS53aWR0aCgpOwogICAgICAgICByZXNp
emVSYXRpbyA9IHdpZHRoUmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAgICAgaWYgKHNyY1Np
emUuaGVpZ2h0KCkgPiBzaXplLmhlaWdodCgpKSB7CiAgICAgICAgIGhlaWdodFJlc2l6ZVJhdGlv
ID0gc2l6ZS5oZWlnaHQoKSAvIChmbG9hdClzcmNTaXplLmhlaWdodCgpOwogICAgICAgICBpZiAo
KHJlc2l6ZVJhdGlvIDwgMC4wZikgfHwgKHJlc2l6ZVJhdGlvID4gaGVpZ2h0UmVzaXplUmF0aW8p
KQogICAgICAgICAgICAgcmVzaXplUmF0aW8gPSBoZWlnaHRSZXNpemVSYXRpbzsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoc3JjU2l6ZSA9PSBvcmlnaW5hbFNpemUpCiAgICAgICAgIHJldHVybiBy
ZXNpemVSYXRpbyA+IDAuMGYgPyBzY2FsZURyYWdJbWFnZShpbWFnZSwgRmxvYXRTaXplKHJlc2l6
ZVJhdGlvLCByZXNpemVSYXRpbykpIDogaW1hZ2U7Ci0gICAgCisKICAgICAvLyBUaGUgaW1hZ2Ug
d2FzIHNjYWxlZCBpbiB0aGUgd2VicGFnZSBzbyBhdCBtaW5pbXVtIHdlIG11c3QgYWNjb3VudCBm
b3IgdGhhdCBzY2FsaW5nCiAgICAgZmxvYXQgc2NhbGV4ID0gc3JjU2l6ZS53aWR0aCgpIC8gKGZs
b2F0KW9yaWdpbmFsU2l6ZS53aWR0aCgpOwogICAgIGZsb2F0IHNjYWxleSA9IHNyY1NpemUuaGVp
Z2h0KCkgLyAoZmxvYXQpb3JpZ2luYWxTaXplLmhlaWdodCgpOwpAQCAtNTgsMTQgKzY2LDE1MSBA
QCBEcmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiBpbWFnZSwg
Y29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgYwogICAgICAgICBzY2FsZXggKj0gcmVzaXplUmF0aW87
CiAgICAgICAgIHNjYWxleSAqPSByZXNpemVSYXRpbzsKICAgICB9Ci0gICAgCisKICAgICByZXR1
cm4gc2NhbGVEcmFnSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZShzY2FsZXgsIHNjYWxleSkpOwogfQog
CitzdHJ1Y3QgU2NvcGVkTm9kZURyYWdTdGF0ZSB7CisgICAgU2NvcGVkTm9kZURyYWdTdGF0ZShG
cmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUpCisgICAgOiBmcmFtZShmcmFtZSkKKyAgICAsIG5vZGUo
bm9kZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChub2RlLnJlbmRlcmVyKCkpOworICAgICAgICBu
b2RlLnJlbmRlcmVyKCktPnVwZGF0ZURyYWdTdGF0ZSh0cnVlKTsKKyAgICAgICAgZnJhbWUuZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgfQorCisgICAgflNjb3BlZE5vZGVEcmFnU3Rh
dGUoKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUucmVuZGVyZXIoKSkgeworICAgICAgICAgICAg
bm9kZS5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOworICAgICAgICAgICAgZnJh
bWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBG
cmFtZSYgZnJhbWU7CisgICAgTm9kZSYgbm9kZTsKK307CisKK3N0YXRpYyBEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
c25hcHNob3QsIE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFzbmFwc2hvdCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRp
b247CisjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAgICBpZiAobm9kZSkgewor
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAg
ICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IG9yaWVudGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHJlbmRlcmVyLT5zaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgb3JpZW50YXRpb24uc2V0SW1hZ2VP
cmllbnRhdGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAg
ICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyNlbmRpZgorICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBzbmFwc2hvdC0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29weUlt
YWdlTW9kZSgpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBvcmllbnRhdGlv
bik7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiBmcmFt
ZSwgTm9kZSYgbm9kZSkKK3sKKyAgICBTY29wZWROb2RlRHJhZ1N0YXRlIGVuYWJsZURyYWcoZnJh
bWUsIG5vZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBz
bmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9t
U25hcHNob3Qoc3RkOjptb3ZlKHNuYXBzaG90KSwgJm5vZGUpOworfQorCitEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNr
VGV4dCkKK3sKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucyA9IGZvcmNlQmxhY2tUZXh0ID8g
U25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgOiBTbmFwc2hvdE9wdGlvbnNOb25lOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdFNlbGVjdGlv
bihmcmFtZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dChzdGQ6Om1vdmUoc25hcHNob3QpLCBudWxscHRyKTsKK30KKworc3RydWN0IFNjb3BlZEZyYW1l
U2VsZWN0aW9uU3RhdGUgeworICAgIFNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUoRnJhbWUmIGZy
YW1lKQorICAgIDogZnJhbWUoZnJhbWUpCisgICAgeworICAgICAgICBpZiAoUmVuZGVyVmlldyog
cm9vdCA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICAgICAgcm9vdC0+Z2V0U2Vs
ZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRSZW5kZXJlciwgZW5kT2Zmc2V0
KTsKKyAgICB9CisKKyAgICB+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSgpCisgICAgeworICAg
ICAgICBpZiAoUmVuZGVyVmlldyogcm9vdCA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQorICAg
ICAgICAgICAgcm9vdC0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBl
bmRSZW5kZXJlciwgZW5kT2Zmc2V0LCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisgICAg
fQorCisgICAgRnJhbWUmIGZyYW1lOworICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlcjsK
KyAgICBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyOworICAgIGludCBzdGFydE9mZnNldDsKKyAg
ICBpbnQgZW5kT2Zmc2V0OworfTsKKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclJh
bmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhbmdlLCBib29sIGZvcmNlQmxhY2tUZXh0KQorewor
ICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIFJlbmRlclZpZXcqIHZp
ZXcgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgLy8gVG8gc25hcHNob3QgdGhlIHJhbmdlLCB0ZW1wb3Jhcmls
eSBzZWxlY3QgaXQgYW5kIHRha2Ugc2VsZWN0aW9uIHNuYXBzaG90LgorICAgIFBvc2l0aW9uIHN0
YXJ0ID0gcmFuZ2Uuc3RhcnRQb3NpdGlvbigpOworICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHN0
YXJ0LmRvd25zdHJlYW0oKTsKKyAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYg
Y2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCisgICAgICAgIHN0YXJ0ID0g
Y2FuZGlkYXRlOworCisgICAgUG9zaXRpb24gZW5kID0gcmFuZ2UuZW5kUG9zaXRpb24oKTsKKyAg
ICBjYW5kaWRhdGUgPSBlbmQudXBzdHJlYW0oKTsKKyAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0
ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCisgICAg
ICAgIGVuZCA9IGNhbmRpZGF0ZTsKKworICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNO
dWxsKCkgfHwgc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNv
bnN0IFNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoZnJhbWUpOworCisg
ICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+
cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyID0gZW5kLmRlcHJlY2F0
ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFzdGFydFJlbmRlcmVyIHx8ICFlbmRSZW5k
ZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0
aW9ucyA9IGZvcmNlQmxhY2tUZXh0ID8gU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgOiBT
bmFwc2hvdE9wdGlvbnNOb25lOworICAgIHZpZXctPnNldFNlbGVjdGlvbihzdGFydFJlbmRlcmVy
LCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSZW5kZXJlciwgZW5kLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCksIFJlbmRlclZpZXc6OlJlcGFpbnROb3RoaW5nKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90ID0gc25hcHNob3RTZWxlY3Rpb24o
ZnJhbWUsIG9wdGlvbnMpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qo
c3RkOjptb3ZlKHNuYXBzaG90KSwgbnVsbHB0cik7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGb3JJbWFnZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUsIEludFJlY3QmIGltYWdl
UmVjdCwgSW50UmVjdCYgZWxlbWVudFJlY3QpCit7CisgICAgU2NvcGVkTm9kZURyYWdTdGF0ZSBl
bmFibGVEcmFnKGZyYW1lLCBub2RlKTsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBu
b2RlLnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAvLyBDYWxjdWxhdGUgaW1hZ2UgYW5kIGVsZW1lbnQgbWV0cmljcyBmb3IgdGhl
IGNsaWVudCwgdGhlbiBjcmVhdGUgZHJhZyBpbWFnZS4KKyAgICBMYXlvdXRSZWN0IHRvcExldmVs
UmVjdDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVu
ZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7CisKKyAgICBpZiAocGFpbnRp
bmdSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBlbGVtZW50
UmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICBpbWFnZVJlY3Qg
PSBwYWludGluZ1JlY3Q7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBz
aG90ID0gc25hcHNob3ROb2RlKGZyYW1lLCBub2RlKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0lt
YWdlRnJvbVNuYXBzaG90KHN0ZDo6bW92ZShzbmFwc2hvdCksICZub2RlKTsKK30KKwogI2lmICFQ
TEFURk9STShNQUMpICYmICghUExBVEZPUk0oV0lOKSB8fCBPUyhXSU5DRSkpCiBEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcmLCBGb250UmVuZGVy
aW5nTW9kZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IGQ4ZjUyYmNmYWQ0NDI0M2Y4
YWNjYjg2NzBhMDk0YWYxMTNjNGIyNGQuLmQ4MzY5NmUzMzExY2NlNTQxNzM1MmI2ZDA0Njk5YTEw
MzM0NDBmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC0yNiwxMCArMjYs
MTEgQEAKICNpZm5kZWYgRHJhZ0ltYWdlX2gKICNkZWZpbmUgRHJhZ0ltYWdlX2gKIAorI2luY2x1
ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdNb2RlLmgiCisjaW5jbHVk
ZSAiRnJhbWVTbmFwc2hvdHRpbmcuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00MSwzOCArNDIsNDYgQEAgdHlw
ZWRlZiBzdHJ1Y3QgSEJJVE1BUF9fKiBIQklUTUFQOwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1
cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwogI2VuZGlmCiAKLS8vV2UgbmVlZCB0byAjZGVmaW5lIFlP
ZmZzZXQgYXMgaXQgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGggV2ViS2l0CisvLyBXZSBuZWVkIHRv
ICNkZWZpbmUgWU9mZnNldCBhcyBpdCBuZWVkcyB0byBiZSBzaGFyZWQgd2l0aCBXZWJLaXQKICNk
ZWZpbmUgRHJhZ0xhYmVsQm9yZGVyWU9mZnNldCAyCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ICAgIGNsYXNzIEltYWdlOwotICAgIGNsYXNzIFVSTDsKK2NsYXNzIEZyYW1lOworY2xhc3MgSW1h
Z2U7CitjbGFzcyBJbnRSZWN0OworY2xhc3MgTm9kZTsKK2NsYXNzIFJhbmdlOworY2xhc3MgVVJM
OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHR5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERy
YWdJbWFnZVJlZjsKK3R5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFnZVJlZjsKICNl
bGlmIFBMQVRGT1JNKFdJTikKLSAgICB0eXBlZGVmIEhCSVRNQVAgRHJhZ0ltYWdlUmVmOwordHlw
ZWRlZiBIQklUTUFQIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZP
Uk0oTklYKQotICAgIHR5cGVkZWYgY2Fpcm9fc3VyZmFjZV90KiBEcmFnSW1hZ2VSZWY7Cit0eXBl
ZGVmIGNhaXJvX3N1cmZhY2VfdCogRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oRUZMKSB8
fCBQTEFURk9STShCTEFDS0JFUlJZKQotICAgIHR5cGVkZWYgdm9pZCogRHJhZ0ltYWdlUmVmOwor
dHlwZWRlZiB2b2lkKiBEcmFnSW1hZ2VSZWY7CiAjZW5kaWYKLSAgICAKLSAgICBJbnRTaXplIGRy
YWdJbWFnZVNpemUoRHJhZ0ltYWdlUmVmKTsKLSAgICAKLSAgICAvL1RoZXNlIGZ1bmN0aW9ucyBz
aG91bGQgYmUgbWVtb3J5IG5ldXRyYWwsIGVnLiBpZiB0aGV5IHJldHVybiBhIG5ld2x5IGFsbG9j
YXRlZCBpbWFnZSwgCi0gICAgLy90aGV5IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4g
IEFzIGEgY29yb2xsYXJ5IHRoZXNlIG1ldGhvZHMgZG9uJ3QgZ3VhcmFudGVlCi0gICAgLy90aGUg
aW5wdXQgaW1hZ2UgcmVmIHdpbGwgc3RpbGwgYmUgdmFsaWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4g
Y2FsbGVkCi0gICAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VS
ZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEludFNpemUmIHNpemUpOwot
ICAgIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYsIEZsb2F0U2l6ZSBz
Y2FsZSk7Ci0gICAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFn
SW1hZ2VSZWYgaW1hZ2UsIGZsb2F0IGRlbHRhKTsKLSAgICAKLSAgICBEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KTsKLSAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmls
ZW5hbWUoY29uc3QgU3RyaW5nJik7Ci0gICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZv
ckxpbmsoVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJlbmRlcmluZ01vZGUpOwotICAg
IHZvaWQgZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7Ci19CiAKK0ludFNpemUgZHJhZ0lt
YWdlU2l6ZShEcmFnSW1hZ2VSZWYpOworCisvLyBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIG1l
bW9yeSBuZXV0cmFsLCBlZy4gaWYgdGhleSByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaW1hZ2Us
CisvLyB0aGV5IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4gQXMgYSBjb3JvbGxhcnkg
dGhlc2UgbWV0aG9kcyBkb24ndCBndWFyYW50ZWUKKy8vIHRoZSBpbnB1dCBpbWFnZSByZWYgd2ls
bCBzdGlsbCBiZSB2YWxpZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBjYWxsZWQuCitEcmFnSW1hZ2VS
ZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiwgY29uc3QgSW50U2l6ZSYgc3Jj
U2l6ZSwgY29uc3QgSW50U2l6ZSYgZHN0U2l6ZSk7CitEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1h
Z2UoRHJhZ0ltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpOworRHJhZ0ltYWdlUmVmIGRpc3NvbHZl
RHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYsIGZsb2F0IGRlbHRhKTsKKworRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbik7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZElt
YWdlRmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGb3JOb2RlKEZyYW1lJiwgTm9kZSYpOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZv
clNlbGVjdGlvbihGcmFtZSYsIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7CitEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmLCBSYW5nZSYsIGJvb2wgZm9yY2VC
bGFja1RleHQgPSBmYWxzZSk7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2Uo
RnJhbWUmLCBOb2RlJiwgSW50UmVjdCYgaW1hZ2VSZWN0LCBJbnRSZWN0JiBlbGVtZW50UmVjdCk7
CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBGb250UmVuZGVyaW5nTW9kZSk7Cit2b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1h
Z2VSZWYpOworfQogCi0jZW5kaWYgLy8hRHJhZ0ltYWdlX2gKKyNlbmRpZiAvLyBEcmFnSW1hZ2Vf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQpp
bmRleCA1ZGZmNmYwZmU5YzFkOWYyZGU0YTFlMTE5M2E1ZWZiNDQ2MmQwNzkxLi5kNTYyYTE2MTky
NjVmYTYxZTBiNGMxODk2YTA4ZmY1ZmViMTNiNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTbmFw
c2hvdHRpbmdNYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTbmFwc2hvdHRpbmcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1
bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvaHRtbGVkaXRpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDQ4NjI4MGU0N2I2YTU1ZDY5M2Y4NGEzNTE0MmRh
MzM4ZTJiZjc5YmYuLmFmYmY4Y2M2NGUwNTQzZWQyMzViNzI2MTNkZGJhM2E4MDhiOTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtODUsNiArODUsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJv
bGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckRlbGV0ZUFjdGlvbi5oPgogI2ltcG9y
dCA8V2ViQ29yZS9FbGVtZW50Lmg+CkBAIC05NSw3ICs5Niw2IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lU2VsZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU25hcHNob3R0aW5n
TWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9I
VE1MQ29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpAQCAtMTgyMCw3
ICsxODIwLDEyIEBAIHN0YXRpYyBib29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNrT3JEcmFnKE5T
RXZlbnQgKmV2ZW50KQogewogICAgIGlmICghW3NlbGYgX2hhc1NlbGVjdGlvbl0pCiAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gc2VsZWN0aW9uSW1hZ2UoY29y
ZShbc2VsZiBfZnJhbWVdKSk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IE5TSW1hZ2UgKmRyYWdJbWFnZSA9IFtbY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCpjb3Jl
RnJhbWUpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIFtkcmFnSW1hZ2UgX3dlYl9kaXNzb2x2
ZVRvRnJhY3Rpb246V2ViRHJhZ0ltYWdlQWxwaGFdOwogICAgIHJldHVybiBkcmFnSW1hZ2U7CiB9
CkBAIC01OTY1LDcgKzU5NzAsMTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNB
dHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKIHsKICAgICBp
ZiAoIVtzZWxmIF9oYXNTZWxlY3Rpb25dKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVy
biBzZWxlY3Rpb25JbWFnZShjb3JlKFtzZWxmIF9mcmFtZV0pLCBmb3JjZUJsYWNrVGV4dCk7CisK
KyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKKyAgICBpZiAoIWNv
cmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW1tjcmVhdGVEcmFnSW1h
Z2VGb3JTZWxlY3Rpb24oKmNvcmVGcmFtZSwgZm9yY2VCbGFja1RleHQpIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOwogfQogCiAtIChOU1JlY3Qpc2VsZWN0aW9uSW1hZ2VSZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9E
T01Db3JlQ2xhc3Nlcy5jcHAKaW5kZXggY2NiZDcxOTAxZTQ1NTc5MDMxYjkwMmJhNTZhODk0ZTZh
OGQ3OWNiMy4uYjgxZDRhN2Q3MzQ3N2FkZjhiZGI3ODNiMjUxZGUxZGM5ZmZkOTMwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdJbWFnZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZUZv
bnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1l
cy5oPgpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRl
clRyZWVBc1RleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZUZvbnREYXRhLmg+CiAKICNp
bmNsdWRlIDxpbml0Z3VpZC5oPgogLy8gezNCMEMwRUZGLTQ3OEItNGIwYi04MjkwLUQyMzIxRTA4
RTIzRX0KQEAgLTEyNzksNyArMTI4MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9N
RWxlbWVudDo6cmVuZGVyZWRJbWFnZShIQklUTUFQKiBpbWFnZSkKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKmltYWdlID0gZnJhbWUtPm5vZGVJbWFnZSht
X2VsZW1lbnQpOworICAgICppbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoKmZyYW1lLCAq
bV9lbGVtZW50KTsKICAgICBpZiAoISppbWFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217767</attachid>
            <date>2013-11-24 16:36:47 -0800</date>
            <delta_ts>2013-11-24 22:47:43 -0800</delta_ts>
            <desc>v3 - fix TestWebKitAPI Regressions</desc>
            <filename>bug-124325-20131124163646.patch</filename>
            <type>text/plain</type>
            <size>70034</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU1OWU4MWZhZWZiMjRi
MzQwZWRjMTM2OWNiMzVlZDhmZTliNzVjOC4uNDU5OWZlZThiZjRhZmZhYTkwNDU0MmIwZDE4YmNh
ZjA4OTdlZWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTExLTIzICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc25hcHNob3QgY3JlYXRpb24g
bWV0aG9kcyBoYWQgZHVwbGljYXRlZCBjb2RlIGFuZCB3ZXJlIHNwbGl0CisgICAgICAgIGJldHdl
ZW4gRnJhbWUsIERyYWdJbWFnZSwgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9u
c3MuCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBXZWJDb3JlIHNuYXBzaG90IG1ldGhvZHMgaW50
byBGcmFtZVNuYXBzaG90dGluZworICAgICAgICBhbmQgcmVtb3ZlcyBwbGF0Zm9ybSBpbXBsZW1l
bnRhdGlvbnMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgRHJhZ0ltYWdlIG1ldGhvZHMgcmV1
c2Ugc25hcHNob3QgbWV0aG9kcyB3aGVyZSBwb3NzaWJsZS4gSW5zcGVjdG9yCisgICAgICAgIHdp
bGwgYmUgYWJsZSB0byB0YWtlIHNuYXBzaG90cyB3aXRob3V0IHVzaW5nIGRyYWcgaW1hZ2VzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJbWFn
ZV0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpd
KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQ
YWludGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0
ZTo6flNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hv
dEZyYW1lUmVjdCk6IE1vdmUgbW9zdCBidWZmZXIgbG9naWMgdG8gaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90U2VsZWN0aW9uKTogTW92ZWQgZnJvbSBGcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90Tm9kZSk6IE1vdmVkIGZyb20gRnJhbWUuCisgICAgICAgICogcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcDogcmVtb3ZlIGR1cGxpY2F0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5oOiBGaXggYW4gaW5j
b3JyZWN0IHBhcmFtZXRlciBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY29wZWROb2RlRHJhZ1N0YXRlOjpTY29wZWROb2RlRHJhZ1N0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZE5vZGVEcmFnU3RhdGU6On5TY29wZWROb2Rl
RHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dCk6IEJvaWxlcnBsYXRlIGJ1ZmZlciBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0
ZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRG
cmFtZVNlbGVjdGlvblN0YXRlOjp+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6IE1vdmVkIGZyb20gRnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6IE1vdmVkIGZyb20gRnJh
bWVTbmFwc2hvdHRpbmdNYWMuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKTogdXNlIG51bGxwdHIuCisKIDIwMTMtMTEtMjMgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFy
ICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBSZW1vdmUgMC4x
MCBjb2RlcGF0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IGFiNDM2MzUwNzFiZWY4MmQxNWY2MTEwMzIz
ZjVjODVmMjkyOGU4YjIuLjJhZTE5M2UxN2IyY2QxZTliZTQ3YWE2ZDU2ZDVhMjk3MjY5Zjc2ZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0xMS0yMyAgQnJpYW4gSi4g
QnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgQ29uc29saWRhdGUgdmFy
aW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1t
OiB1c2UgbmV3IGhlYWRlciBmaWxlLgorCiAyMDEzLTExLTE4ICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTU5NDU1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGU5ODM5OGUwNTEyZGIwMjc0N2VhYzI2YzQ3MTU2
MzkwOTg3MWIxYzcuLmRjY2Y3ZjFhZjBmODIwNDM3MDk4NTZhMmQ5OWJjMzI3ZTU0M2Q0ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0xMS0yMyAgQnJpYW4gSi4gQnVy
ZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgQ29uc29saWRhdGUgdmFyaW91
cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbmV3IHBsYXRmb3JtLWluZGVwZW5kZW50IG1ldGhv
ZHMgaW5zdGVhZCBvZiBNYWMgbWV0aG9kcy4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZp
ZXcubW06CisgICAgICAgICgtW1dlYkhUTUxWaWV3IF9zZWxlY3Rpb25EcmFnZ2luZ0ltYWdlXSk6
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHNlbGVjdGlvbkltYWdlRm9yY2luZ0JsYWNrVGV4dDpd
KToKKwogMjAxMy0xMS0yMSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAg
IDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjQ3MDI+IFN0b3Agb3ZlcnJpZGluZyBWQUxJRF9BUkNI
Uy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCBhM2ViN2U1ZTg0MDY3MWFmYzJhOTZmNzUxOThhMDM4ZmQx
YzY3Yzk2Li5iNmNhMTYyMDI0ZGZkYzQ1NWFiMjBkNzNhZmI4Nzg1N2VlNzUwNWY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTEtMjMgIEJyaWFuIEouIEJ1cmcgIDxi
dXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIENvbnNvbGlkYXRlIHZhcmlvdXMgZnJh
bWUgc25hcHNob3QgY2FwYWJpbGl0aWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBET01Db3JlQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01FbGVt
ZW50OjpyZW5kZXJlZEltYWdlKTogdXNlIGNyZWF0ZURyYWdJbWFnZUZvck5vZGUuCisKIDIwMTMt
MTEtMjEgIFBldGVyIE1vbG5hciAgPHBtb2xuYXIudS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNv
bT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1dPUktFUlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggOTRlYmJiMzNmZWNiMzlmODc0NGFlYmVlODA1ODBiY2ExYTdkMzY0ZC4uODYwMmIzMjVhMmEy
Mzg3MWY4ODJlNDYxY2Y3Njk0NDAzOGYxMjMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3
MjYsNiArMTcyNiw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL0ZvY3VzQ29udHJv
bGxlci5jcHAKICAgICBwYWdlL0ZyYW1lLmNwcAogICAgIHBhZ2UvRnJhbWVEZXN0cnVjdGlvbk9i
c2VydmVyLmNwcAorICAgIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwCiAgICAgcGFnZS9GcmFt
ZVRyZWUuY3BwCiAgICAgcGFnZS9GcmFtZVZpZXcuY3BwCiAgICAgcGFnZS9HZXN0dXJlVGFwSGln
aGxpZ2h0ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhMTA5NjkwMjg3
MGM2YzY3MWE2NTY5NjBhNTg5ZWIzZmFhOWVhOGFkLi45MTdmMDFjZTYzNDIxN2MzMTg0MmZhZWYx
ZTZhNDZmODBlMjUyMjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQxMjAs
NiArNDEyMCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmggXAor
CVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVUcmVlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNzBk
NzMzZDM1ZDU5MjdhZGM0ZWQyNzRmM2ZhZjg3MDNmNTQ5ODJmNC4uZjUwOGJkODc5MWZlMDkxMGZj
MWZlM2JjOGQ2ZDkzMTNhYzU0NTBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTQyOCw3ICs0
MjgsNiBAQCBfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFibGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFn
ZVNlc3Npb25FUktOU18zVVJMRVM1XwogX19aTjdXZWJDb3JlMTRkZWNvZGVIb3N0TmFtZUVQOE5T
U3RyaW5nCiBfX1pON1dlYkNvcmUxNGVuY29kZUhvc3ROYW1lRVA4TlNTdHJpbmcKIF9fWk43V2Vi
Q29yZTE0ZW5kT2ZQYXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdC
b3VuZGFyeUNyb3NzaW5nUnVsZUUKLV9fWk43V2ViQ29yZTE0c2VsZWN0aW9uSW1hZ2VFUE5TXzVG
cmFtZUViCiBfX1pON1dlYkNvcmUxNHNldE1ldGFkYXRhVVJMRVJOM1dURjZTdHJpbmdFUktTMV9T
NF8KIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtNWZsaXBZRXYKIF9fWk43V2ViQ29yZTE1
QWZmaW5lVHJhbnNmb3JtNXNjYWxlRWQKQEAgLTg5MCw2ICs4ODksNyBAQCBfX1pON1dlYkNvcmUy
N0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZUMyRXYKIF9fWk43V2ViQ29yZTI3Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUViUktOUzFf
NlN0cmluZ0UKIF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrMTRzZXRP
cmllbnRhdGlvbkVOM1dURjEwUGFzc1JlZlB0cklOU18yMURldmljZU9yaWVudGF0aW9uRGF0YUVF
RQogX19aTjdXZWJDb3JlMjdEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tDMUV2CitfX1pON1dl
YkNvcmUyN2NyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbkVSTlNfNUZyYW1lRWIKIF9fWk43V2Vi
Q29yZTI3cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsRVJLTlNfM1VSTEVTMl8KIF9fWk43V2Vi
Q29yZTI3c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzRVBGdnZFCiBfX1pON1dlYkNvcmUyOERv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24xMmFkZFVzZXJTaGVldEVOM1dURjdQYXNzUmVmSU5T
XzE4U3R5bGVTaGVldENvbnRlbnRzRUVFCkBAIC0yMDM1LDcgKzIwMzUsNiBAQCBfX1pON1dlYkNv
cmUzOGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51RXYKIF9fWk43V2ViQ29y
ZTQyY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nRXYKIF9fWk43V2Vi
Q29yZTQyY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nRXYKIF9fWk43
V2ViQ29yZTQ2Y29udGV4dE1lbnVJdGVtVGFnQ29ycmVjdFNwZWxsaW5nQXV0b21hdGljYWxseUV2
Ci1fX1pON1dlYkNvcmU1RnJhbWU5bm9kZUltYWdlRVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTZD
dXJzb3I4ZnJvbVR5cGVFTlMwXzRUeXBlRQogX19aTjdXZWJDb3JlNkN1cnNvckMxRVBOU181SW1h
Z2VFUktOU184SW50UG9pbnRFCiBfX1pON1dlYkNvcmU2Q3Vyc29yQzFFUktTMF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDkzMDBiNGIz
YmI4NDIyYmE2NzYzOTc1MWRjNmFlOTE1ODcxNTdjNDAuLjg1MzMxZGZhMzU3YWU2ODNlMGUwODFl
YzQ5Y2E1NDhhMDhiNzRhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagpAQCAtNjk4Myw2ICs2OTgzLDcgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRm9jdXNDb250cm9sbGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHBhZ2VcRnJhbWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGFnZVxGcmFtZVNuYXBzaG90dGluZy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwYWdlXEZyYW1lVmlldy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
YWdlXEdyb3VwU2V0dGluZ3MuY3BwIiAvPgpAQCAtMTg4MjcsNiArMTg4MjgsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGb2N1c0RpcmVjdGlvbi5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGFnZVxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVUcmVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwYWdlXEZyYW1lVmlldy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFn
ZVxHcm91cFNldHRpbmdzLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggNGQ3NTE0NGZiMjU1YmU5NzQ3
Yzk5YmNlMjI3YTQ0ZDEwNmNjNmUzYS4uNzNiZWZiMTQ5NjE5NjAxYTNmMGY3OWQ1OGNmMjQ1MzZl
NDQ5ODBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtNzE3LDYgKzcxNyw5IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5jcHAiPgogICAgICAg
PEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNob3R0aW5nLmNwcCI+CisgICAgICA8RmlsdGVyPnBh
Z2U8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBhZ2VcRnJhbWVUcmVlLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KQEAgLTc2MjksNiArNzYzMiw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwYWdlXEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oIj4KICAgICAgIDxGaWx0ZXI+cGFn
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGFnZVxGcmFtZVNuYXBzaG90dGluZy5oIj4KKyAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgor
ICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRy
ZWUuaCI+CiAgICAgICA8RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA1OTQzMjdhYzA4MWJhZTYxODAxYjc5YzkwOGQ5MzQ1YjZjMjkzNDk3Li43MTI3OThjMjIzM2U0
MmViYTJkZGYwYzdmNzIzNjNkYTJjNDE3MzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDAyLDcgKzIwMDIsNiBAQAogCQk2
NUEyMTQ4NTA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyog
RnJhbWVUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNjVCRjAyMkUwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QkYwMjI5MDk3NDgxNjMwMEM0MzE5
NiAvKiBGcmFtZS5jcHAgKi87IH07CiAJCTY1QkYwMjJGMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCRjAy
MkEwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1l
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVC
RjAyM0MwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tICovOyB9OwogCQk2NUM5N0FGMzA4
RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi87
IH07CiAJCTY1Q0JGRUY5MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDQkZFRjcwOTc0RjYwNzAw
MURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi87IH07CiAJCTY1Q0JGRUZBMDk3NEY2MDcwMDFEQUMy
NSAvKiBGcmFtZVZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1Q0JGRUY4MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjIwNyw4ICsyMjA2LDYg
QEAKIAkJN0M1MzQzRkMxN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUz
NDNGQTE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLzsg
fTsKIAkJN0M1MzQzRkQxN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M1MzQz
RkIxN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oICovOyB9Owog
CQk3Q0M3RTNENzE3MjA4QzBGMDAzQzUyNzcgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDN0UzRDYxNzIw
OEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgKi87IH07Ci0JCTdDRTMwREE5
MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTMwREE3MTcxQjYzRDIwMEVDMzNF
MSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5tbSAqLzsgfTsKLQkJN0NFMzBEQUExNzFCNjNEMjAw
RUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0UzMERBODE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVT
bmFwc2hvdHRpbmdNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3RDc0MUJEQTE3NzIyNkFBMDA4NTkxNzAgLyogQ1NTVmFsdWVLZXl3b3Jkcy5o
IGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU2NTgxNDgwOUQxMzA0MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuaCAqLzsg
fTsKIAkJN0UxMkU5MEYxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMTJF
OTBEMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmggKi87IH07
CiAJCTdFMTJFOTEwMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMTJF
OTBFMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNwcCAqLzsg
fTsKQEAgLTUyNDMsNiArNTI0MCw4IEBACiAJCUMzQ0YxN0E1MTVCMDA2M0YwMDI3NkQzOSAvKiBJ
ZFRhcmdldE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDM0NGMTdBMTE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMzQ0YxN0E2
MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzNDRjE3QTIxNUIwMDYzRjAw
Mjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi87IH07CiAJCUMzQ0YxN0E3
MTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0EzMTVCMDA2M0YwMDI3
NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDNENENjI5QTE4MzgzNzY2MDA3RUJBRjEgLyog
RnJhbWVTbmFwc2hvdHRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzRDRDYyOTgxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5n
LmNwcCAqLzsgfTsKKwkJQzRDRDYyOUIxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNENE
NjI5OTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNTBCNTYxNjEyMTE5RDIzMDA4
QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNTBCNTYxNDEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5n
cy5jcHAgKi87IH07CiAJCUM1MEI1NjE3MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNTBCNTYx
NTEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM1MEQwRTgyMEZGNDI3MjkwMEFDMjY0NCAv
KiBTdG9yYWdlTmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM1MEQwRTgwMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNl
LmNwcCAqLzsgfTsKQEAgLTg3NDEsNyArODc0MCw2IEBACiAJCTY1QTY0MEYwMDUzM0JCMUYwMDg1
RTc3NyAvKiBCbG9ja0V4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk2NUJGMDIyOTA5NzQ4MTYz
MDBDNDMxOTYgLyogRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVCRjAyMkEwOTc0
ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2NUJGMDIzQzA5NzQ4MTkw
MDBDNDMxOTYgLyogRnJhbWVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRnJhbWVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Qzk3
QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gNDsgdXNlc1RhYnMgPSAwOyB9OwogCQk2NUNCRkVGNzA5NzRGNjA3MDAx
REFDMjUgLyogRnJhbWVWaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGcmFtZVZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUNCRkVG
ODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGcmFtZVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5
NzMsOCArODk3MSw2IEBACiAJCTdDNjEzNkY4MTcxMEMzNTIwMEZGNEE1NyAvKiBJbkZpbGVzUGFy
c2VyLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IEluRmlsZXNQYXJzZXIucG07IHBhdGggPSBzY3JpcHRz
L0luRmlsZXNQYXJzZXIucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNjEzNkY5
MTcxMEMzNTIwMEZGNEE1NyAvKiBTdGF0aWNTdHJpbmcucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gU3Rh
dGljU3RyaW5nLnBtOyBwYXRoID0gc2NyaXB0cy9TdGF0aWNTdHJpbmcucG07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDQzdFM0Q2MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRX
aGl0ZUxpc3QudHh0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IElETlNjcmlwdFdoaXRlTGlzdC50
eHQ7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDRTMwREE3MTcxQjYzRDIwMEVDMzNF
MSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEZyYW1lU25hcHNob3R0aW5nTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3Q0UzMERBODE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdN
YWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVTbmFwc2hvdHRpbmdN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0UxMkU5MEQxNUZBNUQzQTAwNUU0
MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oOyBwYXRoID0gZmlsdGVycy9D
dXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdFMTJFOTBFMTVGQTVEM0EwMDVFNDEyNiAvKiBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEN1c3RvbUZpbHRlck1lc2hH
ZW5lcmF0b3IuY3BwOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3
IC8qIFB1cmdlUHJpb3JpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHVy
Z2VQcmlvcml0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIyNzYsNiArMTIy
NzIsOCBAQAogCQlDM0NGMTdBMTE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzQ0YxN0EyMTVCMDA2M0YwMDI3NkQzOSAvKiBJ
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZFRhcmdldE9ic2Vy
dmVyUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzRDRDYyOTgxODM4
Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lU25hcHNob3R0aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0
aW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lU25hcHNob3R0aW5n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MEI1NjE0MTIxMTlEMjMwMDhCNDZF
MCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdyb3VwU2V0dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTBC
NTYxNTEyMTE5RDIzMDA4QjQ2RTAgLyogR3JvdXBTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHcm91cFNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM1MEQwRTgwMEZGNDI3MjkwMEFDMjY0NCAvKiBTdG9yYWdlTmFtZXNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0b3JhZ2VOYW1lc3BhY2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU2MTQsNiArMTU2MTIsOCBAQAogCQkJ
CTY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovLAogCQkJCTk3NEE4NjIwMTRC
N0FEQkIwMDNGREM3NiAvKiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwICovLAogCQkJCTk3
NEE4NjIxMTRCN0FEQkIwMDNGREM3NiAvKiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCAqLywK
KwkJCQlDNENENjI5ODE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuY3BwICov
LAorCQkJCUM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5oICov
LAogCQkJCTY1QTIxNDgyMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuY3BwICovLAogCQkJ
CTY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLywKIAkJCQk2NUNCRkVG
NzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAqLywKQEAgLTE2NTI4LDkgKzE2NTI4
LDYgQEAKIAkJCQlBQkFGMjIwNzBDMDNCMUM3MDBCMEJDRjAgLyogQ2hyb21lTWFjLm1tICovLAog
CQkJCUE3MTg3ODhGMEIyRDA0QUMwMEExNkVDRSAvKiBEcmFnQ29udHJvbGxlck1hYy5tbSAqLywK
IAkJCQk5M0MwOUE3RTBCMDY0RUVGMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyTWFjLm1tICovLAot
CQkJCTY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAqLywKLQkJCQk3Q0Uz
MERBODE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCAqLywKLQkJCQk3
Q0UzMERBNzE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gKi8sCiAJ
CQkJMUMyNjQ5N0IwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3BwICovLAogCQkJCUUxQzJG
MjQ4MTUzM0EyMTIwMDgzRjk3NCAvKiBTZXR0aW5nc01hYy5tbSAqLywKIAkJCQlGNTg3ODU0QzAy
REUzNzU5MDFFQTQxMjIgLyogV2ViQ29yZUZyYW1lVmlldy5oICovLApAQCAtMjIxMzYsNiArMjIx
MzMsNyBAQAogCQkJCTFBNTY5Q0Y4MEQ3RTJCODIwMDdDMzk4MyAvKiBjX2NsYXNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTU2OUNGQTBEN0UyQjgyMDA3QzM5ODMgLyogY19pbnN0YW5jZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE1NjlDRkMwRDdFMkI4MjAwN0MzOTgzIC8qIGNfcnVudGltZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzRDRDYyOUIxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25h
cHNob3R0aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUNGRTBEN0UyQjgyMDA3QzM5ODMg
LyogY191dGlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0IxNkMxQTA5NzlDM0JEMDA0Njc3
NDEgLyogQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NEI0Q0Mw
Q0I0Mjk1RDAwNUYyQjYyIC8qIENhY2hlZEZvbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjI5OTMs
NyArMjI5OTEsNiBAQAogCQkJCTYyOEQyMTRFMTIxMzFFRjQwMDU1RENGQyAvKiBGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTcyQUY3MDE4MEYyODk1MDBGQkFE
QjkgLyogQ3J5cHRvS2V5VXNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTBFMDk5RTY0
OTIwMDU2RTU4MSAvKiBGcmFtZVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0NFMzBE
QUExNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2NUEyMTQ4NTA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NUNCRkVGQTA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzIwNUFCMDEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0b3J5RG9j
dW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjYyNzUsMTAgKzI2MjcyLDggQEAKIAkJCQk5MzJF
MTYwOTBBRjU3ODM0MDAyNUY0MDggLyogRnJhbWVMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRDAwMEVCQTIxMUJEQUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2QkE3NjZFMTY2NDI3QTgwMDVCRTVEMSAvKiBGcmFtZUxv
YWRSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTY1QkYwMjQ1MDk3NDgxOTAwMEM0MzE5
NiAvKiBGcmFtZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzMzA5RTBEMDk5RTY0OTIwMDU2
RTU4MSAvKiBGcmFtZVNlbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0QThDOTZFQjBC
RTY5MDMyMDA0RUVGRjAgLyogRnJhbWVTZWxlY3Rpb25NYWMubW0gaW4gU291cmNlcyAqLywKLQkJ
CQk3Q0UzMERBOTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkwNzk2OURBRDE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENEYXRhQ2hh
bm5lbEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QTIxNDg0MDk3QTNGNTMwMEI5MDUw
QSAvKiBGcmFtZVRyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRDOTFBMTAxODAyMzQzOTAw
QTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc3ODQsNiAr
Mjc3NzksNyBAQAogCQkJCTUxRTBCQjM5MERBNUFDQjYwMEE5RTQxNyAvKiBTdG9yYWdlTWFwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTA3Mjc3RTUyMTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlh
U3RyZWFtVHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzUwRDBFODIwRkY0MjcyOTAwQUMy
NjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzRDRDYyOUEx
ODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUM1NUUzOEMwMTAwNDBENUQwMEE1NkJEQiAvKiBTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUIwOURCNDE2QUY1RjZDMDA4NTM4RTcgLyogU3RvcmFnZVN0
cmF0ZWd5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MTAyRDk1MEZEOUFBMkQwMEZBRkYwNCAv
KiBTdG9yYWdlU3luY01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NLm1tCmluZGV4IGNjMDM2NTUyNmUzMTZlMDVkNWIxNWJiNzQ0NGMzYmIyYmNmYTkw
NTAuLmE2YWMzOTljMGU3NzY0MzU5ZDVhOTJmM2ZlZWVjYmFjMGYyNWJjYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvRE9NLm1tCkBAIC0zNiw5ICszNiw5IEBACiAjaW1wb3J0ICJET01Ob2Rl
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVByaXZhdGUuaCIKICNpbXBvcnQgIkRPTVJhbmdlSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIkRyYWdJbWFnZS5oIgogI2ltcG9ydCAiRm9udC5oIgogI2ltcG9y
dCAiRnJhbWUuaCIKLSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCiAjaW1wb3J0ICJI
VE1MRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJIVE1MUGFyc2Vy
SWRpb21zLmgiCkBAIC0yODcsOSArMjg3LDkgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBraXQoV2Vi
Q29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogICAgIC8vIEZJWE1FOiBDb3VsZCB3ZSBt
b3ZlIHRoaXMgZnVuY3Rpb24gdG8gV2ViQ29yZTo6Tm9kZSBhbmQgYXV0b2dlbmVyYXRlPwogICAg
IFdlYkNvcmU6Ok5vZGUqIG5vZGUgPSBjb3JlKHNlbGYpOwogICAgIFdlYkNvcmU6OkZyYW1lKiBm
cmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQorICAgIGlm
ICghZnJhbWUgfHwgIW5vZGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGZyYW1l
LT5ub2RlSW1hZ2Uobm9kZSkuZ2V0KCk7CisgICAgcmV0dXJuIFtbY3JlYXRlRHJhZ0ltYWdlRm9y
Tm9kZSgqZnJhbWUsICpub2RlKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNBcnJh
eSAqKXRleHRSZWN0cwpAQCAtMzMyLDEwICszMzIsMTAgQEAgaWQgPERPTUV2ZW50VGFyZ2V0PiBr
aXQoV2ViQ29yZTo6RXZlbnRUYXJnZXQqIGV2ZW50VGFyZ2V0KQogewogICAgIFdlYkNvcmU6OlJh
bmdlKiByYW5nZSA9IGNvcmUoc2VsZik7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gcmFu
Z2UtPm93bmVyRG9jdW1lbnQoKS5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCisgICAgaWYgKCFm
cmFtZSB8fCAhcmFuZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4gV2ViQ29y
ZTo6cmFuZ2VJbWFnZShmcmFtZSwgcmFuZ2UsIGZvcmNlQmxhY2tUZXh0KTsKKyAgICByZXR1cm4g
W1tjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSgqZnJhbWUsICpyYW5nZSwgZm9yY2VCbGFja1RleHQp
IHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopdGV4dFJlY3RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DbGlwYm9hcmQuY3BwCmluZGV4IDlkMmUyNzUyZmRmMmI3YzY2NDJhMjQyNGY4ODA2M2Vj
OGE3MWM3YzguLjMwN2ZjYzE1ZjdkMDgwOGZjZGVkNjQ5YTI3MmViYzBjYjY4MDM1NzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DbGlwYm9hcmQuY3BwCkBAIC0yNzcsMTAgKzI3NywxMSBAQCBEcmFnSW1hZ2VSZWYg
Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGxvY2F0aW9uKSBjb25zdAogCiAg
ICAgaWYgKG1fZHJhZ0ltYWdlRWxlbWVudCkgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
bV9kcmFnSW1hZ2VFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICByZXR1
cm4gZnJhbWUtPm5vZGVJbWFnZShtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCkpOworICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoKmZyYW1lLCAqbV9kcmFnSW1hZ2VFbGVt
ZW50KTsKICAgICB9CiAKLSAgICByZXR1cm4gMDsgLy8gV2UgZG8gbm90IGhhdmUgZW5vdWdoIGlu
Zm9ybWF0aW9uIHRvIGNyZWF0ZSBhIGRyYWcgaW1hZ2UsIHVzZSB0aGUgZGVmYXVsdCBpY29uLgor
ICAgIC8vIFdlIGRvIG5vdCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYSBkcmFn
IGltYWdlLCB1c2UgdGhlIGRlZmF1bHQgaWNvbi4KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZE1hYy5tbQppbmRleCA3NmNhNmZjYTNlNDI0MDdi
NWY4ZTdiMzVlNjU4NzM3YzIxMTNlOGZiLi5hMDliMzBhNGE2NjgzYmExZmQ3ZmI0NWZhODliMmRi
ZWMwMGMzMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRNYWMubW0KQEAgLTI4LDcgKzI4LDcg
QEAKIAogI2ltcG9ydCAiQ2FjaGVkSW1hZ2UuaCIKICNpbXBvcnQgIkVsZW1lbnQuaCIKLSNpbXBv
cnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCisjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywxNiArMzcsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gQ2xpcGJvYXJkOjpkcmFnSW1hZ2UgaW4gQ2xpcGJvYXJkLmNwcCBkb2VzIG5vdCBoYW5k
bGUgY29ycmVjdGx5LCBzbyBtdXN0IHJlc29sdmUgdGhhdCBhcyB3ZWxsLgogRHJhZ0ltYWdlUmVm
IENsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBsb2NhdGlvbikgY29uc3QKIHsK
LSAgICBOU0ltYWdlICpyZXN1bHQgPSBuaWw7CisgICAgRHJhZ0ltYWdlUmVmIHJlc3VsdCA9IG5p
bDsKICAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJh
bWUgPSBtX2RyYWdJbWFnZUVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkgewotICAgICAgICAg
ICAgTlNSZWN0IGltYWdlUmVjdDsKLSAgICAgICAgICAgIE5TUmVjdCBlbGVtZW50UmVjdDsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IHNuYXBzaG90RHJhZ0ltYWdlKGZyYW1lLCBtX2RyYWdJbWFnZUVs
ZW1lbnQuZ2V0KCksICZpbWFnZVJlY3QsICZlbGVtZW50UmVjdCk7CisgICAgICAgICAgICBJbnRS
ZWN0IGltYWdlUmVjdDsKKyAgICAgICAgICAgIEludFJlY3QgZWxlbWVudFJlY3Q7CisgICAgICAg
ICAgICByZXN1bHQgPSBjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSgqZnJhbWUsICptX2RyYWdJbWFn
ZUVsZW1lbnQsIGltYWdlUmVjdCwgZWxlbWVudFJlY3QpOwogICAgICAgICAgICAgLy8gQ2xpZW50
IHNwZWNpZmllcyBwb2ludCByZWxhdGl2ZSB0byBlbGVtZW50LCBub3QgdGhlIHdob2xlIGltYWdl
LCB3aGljaCBtYXkgaW5jbHVkZSBjaGlsZAogICAgICAgICAgICAgLy8gbGF5ZXJzIHNwcmVhZCBv
dXQgYWxsIG92ZXIgdGhlIHBsYWNlLgotICAgICAgICAgICAgbG9jYXRpb24uc2V0WChlbGVtZW50
UmVjdC5vcmlnaW4ueCAtIGltYWdlUmVjdC5vcmlnaW4ueCArIG1fZHJhZ0xvY2F0aW9uLngoKSk7
Ci0gICAgICAgICAgICBsb2NhdGlvbi5zZXRZKGltYWdlUmVjdC5zaXplLmhlaWdodCAtIChlbGVt
ZW50UmVjdC5vcmlnaW4ueSAtIGltYWdlUmVjdC5vcmlnaW4ueSArIG1fZHJhZ0xvY2F0aW9uLnko
KSkpOworICAgICAgICAgICAgbG9jYXRpb24uc2V0WChlbGVtZW50UmVjdC54KCkgLSBpbWFnZVJl
Y3QueCgpICsgbV9kcmFnTG9jYXRpb24ueCgpKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNldFko
aW1hZ2VSZWN0LmhlaWdodCgpIC0gKGVsZW1lbnRSZWN0LnkoKSAtIGltYWdlUmVjdC55KCkgKyBt
X2RyYWdMb2NhdGlvbi55KCkpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9kcmFnSW1h
Z2UpIHsKICAgICAgICAgcmVzdWx0ID0gbV9kcmFnSW1hZ2UtPmltYWdlKCktPmdldE5TSW1hZ2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNGMyODk1NzllNzEw
M2IwNTI2YzljZTFlY2NkOWJiZTEzZWFhNTBiMi4uMGVkODdhYWVlZWRjYjBjODAyZjMxYTQxODAw
NjMwMTQ1MDIyMWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkRyYWdD
bGllbnQuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgorI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgog
I2luY2x1ZGUgIkRyYWdTZXNzaW9uLmgiCiAjaW5jbHVkZSAiRHJhZ1N0YXRlLmgiCiAjaW5jbHVk
ZSAiRWRpdG9yLmgiCkBAIC03NzksNyArNzgwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24K
ICAgICAgICAgfQogICAgICAgICBtX2NsaWVudC53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24o
RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKICAgICAg
ICAgaWYgKCFkcmFnSW1hZ2UpIHsKLSAgICAgICAgICAgIGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJh
Z0ltYWdlVG9GcmFjdGlvbihzcmMuZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCksIERyYWdJbWFnZUFs
cGhhKTsKKyAgICAgICAgICAgIGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlv
bihjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oc3JjKSwgRHJhZ0ltYWdlQWxwaGEpOwogICAg
ICAgICAgICAgZHJhZ0xvYyA9IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKHNyYyk7CiAgICAgICAg
ICAgICBtX2RyYWdPZmZzZXQgPSBJbnRQb2ludChkcmFnT3JpZ2luLngoKSAtIGRyYWdMb2MueCgp
LCBkcmFnT3JpZ2luLnkoKSAtIGRyYWdMb2MueSgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAppbmRleCBkMjNiYTVmNDJhZTQwMDAwNGUwYjFmYjY0YzkyMzBjNzcyOWI4NjIyLi5jMGRl
MDZiMTQ5NTdhNzczOTliN2JiMzJmYzc1MDk4ZjYxYjkxYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cApAQCAtOTY2LDEwOCArOTY2LDQgQEAgYm9vbCBGcmFtZTo6aXNVUkxBbGxvd2VkKGNvbnN0IFVS
TCYgdXJsKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykg
JiYgIVBMQVRGT1JNKFdJTikKLXN0cnVjdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgewotICAg
IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZShGcmFtZSogZnJhbWUsIE5vZGUqIG5vZGUpCi0gICAg
ICAgIDogZnJhbWUoZnJhbWUpCi0gICAgICAgICwgbm9kZShub2RlKQotICAgICAgICAsIHBhaW50
QmVoYXZpb3IoZnJhbWUtPnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpKQotICAgICAgICAsIGJhY2tn
cm91bmRDb2xvcihmcmFtZS0+dmlldygpLT5iYXNlQmFja2dyb3VuZENvbG9yKCkpCi0gICAgewot
ICAgICAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmIChu
b2RlKQotICAgICAgICAgICAgbm9kZS0+cmVuZGVyZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKHRydWUp
OwotICAgIH0KLQotICAgIH5TY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoKQotICAgIHsKLSAgICAg
ICAgaWYgKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG5vZGUtPnJlbmRl
cmVyKCktPnVwZGF0ZURyYWdTdGF0ZShmYWxzZSk7Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNl
dFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNl
dEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKLSAgICAgICAgZnJhbWUtPnZp
ZXcoKS0+c2V0Tm9kZVRvRHJhdygwKTsKLSAgICB9Ci0KLSAgICBGcmFtZSogZnJhbWU7Ci0gICAg
Tm9kZSogbm9kZTsKLSAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7Ci0gICAgQ29sb3Ig
YmFja2dyb3VuZENvbG9yOwotfTsKLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9k
ZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgY29uc3QgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKHRoaXMs
IG5vZGUpOwotCi0gICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKHN0YXRlLnBhaW50QmVoYXZp
b3IgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLQotICAgIC8vIFdo
ZW4gZ2VuZXJhdGluZyB0aGUgZHJhZyBpbWFnZSBmb3IgYW4gZWxlbWVudCwgaWdub3JlIHRoZSBk
b2N1bWVudCBiYWNrZ3JvdW5kLgotICAgIG1fdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihD
b2xvcjo6dHJhbnNwYXJlbnQpOwotICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKLSAgICBtX3Zp
ZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIEVuYWJsZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdp
bmcgbW9kZS4KLQotICAgIC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24g
YXdheSB0aGUgb3JpZ2luYWwgcmVuZGVyZXIuCi0gICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJl
bmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9
IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxS
ZWN0KSk7Ci0KLSAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDE7Ci0gICAgaWYgKG1fcGFn
ZSkKLSAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IgPSBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCk7Ci0gICAgcGFpbnRpbmdSZWN0LnNldFdpZHRoKHBhaW50aW5nUmVjdC53aWR0aCgpICogZGV2
aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50aW5nUmVjdC5zZXRIZWlnaHQocGFpbnRpbmdSZWN0
LmhlaWdodCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwotCi0gICAgT3duUHRyPEltYWdlQnVmZmVy
PiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VT
Y2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQikpOwotICAgIGlmICghYnVmZmVyKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1w
YWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0
KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5tYXhYKCksIHBhaW50aW5nUmVj
dC5tYXhZKCkpKTsKLQotICAgIG1fdmlldy0+cGFpbnRDb250ZW50cyhidWZmZXItPmNvbnRleHQo
KSwgcGFpbnRpbmdSZWN0KTsKLQotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNv
cHlJbWFnZSgpOwotCi0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24ocmVuZGVyZXItPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwot
I2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgb3JpZW50YXRpb25EZXNjcmlw
dGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShyZW5kZXJlci0+c3R5bGUoKS5pbWFnZU9yaWVu
dGF0aW9uKCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShp
bWFnZS5nZXQoKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci19Ci0KLURyYWdJbWFnZVJlZiBG
cmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoIXNlbGVjdGlvbigpLmlz
UmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBTY29wZWRGcmFtZVBhaW50
aW5nU3RhdGUgc3RhdGUodGhpcywgMCk7Ci0gICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKFBh
aW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7Ci0K
LSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uKCku
Ym91bmRzKCkpOwotCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOwotICAgIGlmICht
X3BhZ2UpCi0gICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZh
Y3RvcigpOwotICAgIHBhaW50aW5nUmVjdC5zZXRXaWR0aChwYWludGluZ1JlY3Qud2lkdGgoKSAq
IGRldmljZVNjYWxlRmFjdG9yKTsKLSAgICBwYWludGluZ1JlY3Quc2V0SGVpZ2h0KHBhaW50aW5n
UmVjdC5oZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLQotICAgIE93blB0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgZGV2
aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKLSAgICBpZiAoIWJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtcGFp
bnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOwotICAgIGJ1ZmZlci0+Y29udGV4dCgp
LT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QubWF4WCgpLCBwYWludGluZ1JlY3Qu
bWF4WSgpKSk7Ci0KLSAgICBtX3ZpZXctPnBhaW50Q29udGVudHMoYnVmZmVyLT5jb250ZXh0KCks
IHBhaW50aW5nUmVjdCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5
SW1hZ2UoKTsKLSAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgp
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7Ci19Ci0KLSNlbmRpZgotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggODQwN2U5ZTJiY2YzZWVmZWRkYmYw
NTMxYmU2Y2U5Mjc5NDU3Mjc3Yy4uNWYxODY2ZmUyMDJmY2ZlYTY0NDJjMGJiZWY4MjBmNTZlZDIz
ZTc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjksNyArMjksNiBAQAogI2RlZmluZSBGcmFtZV9o
CiAKICNpbmNsdWRlICJBZGp1c3RWaWV3U2l6ZU9yTm90LmgiCi0jaW5jbHVkZSAiRHJhZ0ltYWdl
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNp
bmNsdWRlICJJbnRSZWN0LmgiCkBAIC01OCwxMSArNTcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIEVkaXRvcjsKICAgICBjbGFzcyBFbGVtZW50OwogICAgIGNsYXNzIEV2ZW50
SGFuZGxlcjsKKyAgICBjbGFzcyBGbG9hdFNpemU7CiAgICAgY2xhc3MgRnJhbWVEZXN0cnVjdGlv
bk9ic2VydmVyOwogICAgIGNsYXNzIEZyYW1lU2VsZWN0aW9uOwogICAgIGNsYXNzIEZyYW1lVmll
dzsKICAgICBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTFRhYmxl
Q2VsbEVsZW1lbnQ7CisgICAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAgICAgY2xhc3MgSW50UmVjdDsK
ICAgICBjbGFzcyBNYWluRnJhbWU7CiAgICAgY2xhc3MgTm9kZTsKQEAgLTE3Nyw5ICsxNzgsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgU3RyaW5nIGRpc3BsYXlTdHJpbmdNb2Rp
ZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKLSAgICAgICAgRHJhZ0ltYWdl
UmVmIG5vZGVJbWFnZShOb2RlKik7Ci0gICAgICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2VGb3JT
ZWxlY3Rpb24oKTsKLQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9y
UG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwogICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnRBdFBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCk7CiAgICAgICAgIFBhc3NS
ZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTk5
MWQ2ZjU2MTMwOWRiYTI1ZTU3MWQ3MDljMGQ3ZTc3ODA4MzliCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTAsMCArMSwxMzYg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
ICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkZyYW1lU25hcHNob3R0aW5nLmgiCisKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVT
ZWxlY3Rpb24uaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHsKKyAg
ICBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoRnJhbWUmIGZyYW1lLCBOb2RlKiBub2RlKQorICAg
IDogZnJhbWUoZnJhbWUpCisgICAgLCBub2RlKG5vZGUpCisgICAgLCBwYWludEJlaGF2aW9yKGZy
YW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpKQorICAgICwgYmFja2dyb3VuZENvbG9yKGZyYW1l
LnZpZXcoKS0+YmFzZUJhY2tncm91bmRDb2xvcigpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFu
b2RlIHx8IG5vZGUtPnJlbmRlcmVyKCkpOworICAgIH0KKworICAgIH5TY29wZWRGcmFtZVBhaW50
aW5nU3RhdGUoKQorICAgIHsKKyAgICAgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9y
KHBhaW50QmVoYXZpb3IpOworICAgICAgICBmcmFtZS52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5k
Q29sb3IoYmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgZnJhbWUudmlldygpLT5zZXROb2RlVG9E
cmF3KG51bGxwdHIpOworICAgIH0KKworICAgIEZyYW1lJiBmcmFtZTsKKyAgICBOb2RlKiBub2Rl
OworICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcjsKKyAgICBDb2xvciBiYWNrZ3JvdW5k
Q29sb3I7Cit9OworCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVS
ZWN0KEZyYW1lJiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTbmFwc2hvdE9wdGlv
bnMgb3B0aW9ucykKK3sKKyAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25hcHNob3Qgc2hvdWxk
SW5jbHVkZVNlbGVjdGlvbiA9IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsKKyAgICBpZiAo
b3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpCisg
ICAgICAgIHNob3VsZEluY2x1ZGVTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rp
b247CisKKyAgICBGcmFtZVZpZXc6OkNvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IGNvb3JkaW5h
dGVTcGFjZSA9IEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlczsKKyAgICBpZiAob3B0aW9u
cyAmIFNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzKQorICAgICAgICBjb29yZGluYXRl
U3BhY2UgPSBGcmFtZVZpZXc6OlZpZXdDb29yZGluYXRlczsKKworICAgIFBhaW50QmVoYXZpb3Ig
dGV4dFBhaW50QmVoYXZpb3IgPSAwOworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25z
Rm9yY2VCbGFja1RleHQpCisgICAgICAgIHRleHRQYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlv
ckZvcmNlQmxhY2tUZXh0OworCisgICAgUGFpbnRCZWhhdmlvciBzZWxlY3Rpb25Pbmx5QmVoYXZp
b3IgPSAwOworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25P
bmx5KQorICAgICAgICB0ZXh0UGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JTZWxlY3Rpb25P
bmx5OworCisgICAgY29uc3QgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKGZyYW1lLCBu
dWxscHRyKTsKKworICAgIC8vIE90aGVyIHBhaW50IGJlaGF2aW9ycyBhcmUgc2V0IGJ5IHBhaW50
Q29udGVudHNGb3JTbmFwc2hvdC4KKyAgICBQYWludEJlaGF2aW9yIGV4aXN0aW5nQmVoYXZpb3Ig
PSBmcmFtZS52aWV3KCktPnBhaW50QmVoYXZpb3IoKTsKKyAgICBmcmFtZS52aWV3KCktPnNldFBh
aW50QmVoYXZpb3IoZXhpc3RpbmdCZWhhdmlvciB8IHRleHRQYWludEJlaGF2aW9yIHwgc2VsZWN0
aW9uT25seUJlaGF2aW9yKTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsK
KworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gZnJhbWUucGFnZSgpID8gZnJhbWUucGFn
ZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpIDogMTsKKyAgICBJbnRSZWN0IHVzZWRSZWN0KGltYWdl
UmVjdCk7CisgICAgdXNlZFJlY3Quc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOworCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+KEltYWdlQnVmZmVyOjpjcmVhdGUodXNlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZh
Y3RvciwgQ29sb3JTcGFjZURldmljZVJHQikubGVha1B0cigpKTsKKyAgICBpZiAoIWJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0
ZSgtdXNlZFJlY3QueCgpLCAtdXNlZFJlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+
Y2xpcChGbG9hdFJlY3QoMCwgMCwgdXNlZFJlY3QubWF4WCgpLCB1c2VkUmVjdC5tYXhZKCkpKTsK
KworICAgIGZyYW1lLnZpZXcoKS0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGJ1ZmZlci0+Y29u
dGV4dCgpLCB1c2VkUmVjdCwgc2hvdWxkSW5jbHVkZVNlbGVjdGlvbiwgY29vcmRpbmF0ZVNwYWNl
KTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IHNuYXBzaG90U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMp
Cit7CisgICAgaWYgKCFmcmFtZS5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgLy8gRm9yY2UgcGFpbnRpbmcgb2Ygb25seSB0aGUgc2VsZWN0aW9u
IGFyZWEuCisgICAgb3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvbk9ubHk7
CisgICAgSW50UmVjdCBzZWxlY3Rpb25SZWN0ID0gZW5jbG9zaW5nSW50UmVjdChmcmFtZS5zZWxl
Y3Rpb24oKS5ib3VuZHMoKSk7CisgICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBz
ZWxlY3Rpb25SZWN0LCBvcHRpb25zKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBzbmFwc2hvdE5vZGUoRnJhbWUmIGZyYW1lLCBOb2RlJiBub2RlKQoreworICAgIGlmICghbm9k
ZS5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IFNjb3Bl
ZEZyYW1lUGFpbnRpbmdTdGF0ZSBzdGF0ZShmcmFtZSwgJm5vZGUpOworCisgICAgZnJhbWUudmll
dygpLT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgZnJh
bWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgZnJhbWUudmlldygpLT5zZXROb2Rl
VG9EcmF3KCZub2RlKTsKKworICAgIC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUg
Ymxvd24gYXdheSB0aGUgb3JpZ2luYWwgcmVuZGVyZXIuCisgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IG5vZGUucmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OworICAgIEludFJlY3Qg
cGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290
UmVjdCh0b3BMZXZlbFJlY3QpKTsKKyAgICByZXR1cm4gc25hcHNob3RGcmFtZVJlY3QoZnJhbWUs
IHBhaW50aW5nUmVjdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGZmMWFkMDlmZDVmNTEyNWM3
ZWY5NTBmMDZkY2Q4YTllYzZjNjA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiAgQ29weXJp
Z2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworICogSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZyYW1lU25hcHNob3R0
aW5nX2gKKyNkZWZpbmUgRnJhbWVTbmFwc2hvdHRpbmdfaAorCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNzIEludFJl
Y3Q7CitjbGFzcyBJbWFnZUJ1ZmZlcjsKK2NsYXNzIE5vZGU7CisKK2VudW0geworICAgIFNuYXBz
aG90T3B0aW9uc05vbmUgPSAwLAorICAgIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25I
aWdobGlnaHRpbmcgPSAxIDw8IDAsCisgICAgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25P
bmx5ID0gMSA8PCAxLAorICAgIFNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzID0gMSA8
PCAyLAorICAgIFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0ID0gMSA8PCAzLAorfTsKK3R5
cGVkZWYgdWludDMyX3QgU25hcHNob3RPcHRpb25zOworCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1lJiwgY29uc3QgSW50UmVjdCYsIFNuYXBzaG90
T3B0aW9ucyA9IFNuYXBzaG90T3B0aW9uc05vbmUpOworc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBzbmFwc2hvdE5vZGUoRnJhbWUmLCBOb2RlJik7CitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IHNuYXBzaG90U2VsZWN0aW9uKEZyYW1lJiwgU25hcHNob3RPcHRpb25zID0gU25hcHNo
b3RPcHRpb25zTm9uZSk7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEZy
YW1lU25hcHNob3R0aW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Zy
YW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZmIxZjkxYmNiZDZmMDYyN2E2MWQxZTk0ZGU5YjcxNGE4
YjU0MzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw2NCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBB
bGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRnJhbWUuaCIKLQotI2ltcG9ydCAiRG9jdW1lbnQu
aCIKLSNpbXBvcnQgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW1wb3J0ICJGcmFtZVNlbGVjdGlv
bi5oIgotI2ltcG9ydCAiRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCIKLSNpbXBvcnQgIkZyYW1lVmll
dy5oIgotI2ltcG9ydCAiUmVuZGVyT2JqZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
RHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAgICBtX2RvYy0+
dXBkYXRlTGF5b3V0KCk7IC8vIGZvcmNlcyBzdHlsZSByZWNhbGMKLQotICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgTlNSZWN0
IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9v
dFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7
IC8vIGludm9rZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIE5TSW1hZ2UqIHJl
c3VsdCA9IGltYWdlRnJvbVJlY3QodGhpcywgcGFpbnRpbmdSZWN0KTsKLSAgICBtX3ZpZXctPnNl
dE5vZGVUb0RyYXcoMCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1EcmFnSW1hZ2VSZWYg
RnJhbWU6OmRyYWdJbWFnZUZvclNlbGVjdGlvbigpCi17Ci0gICAgaWYgKCFzZWxlY3Rpb24oKS5p
c1JhbmdlKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIHNlbGVjdGlvbkltYWdl
KHRoaXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYmZhYjY3ZTc2NTgxNGFlNmNiYzkwMWJhZDQ0YWZkMTUzZjg2MmEyMi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgRnJhbWVTbmFwc2hvdHRpbmdNYWNfaAotI2RlZmluZSBGcmFt
ZVNuYXBzaG90dGluZ01hY19oCi0KLU9CSkNfQ0xBU1MgTlNJbWFnZTsKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBGcmFtZTsKLWNsYXNzIFJhbmdlOwotY2xhc3MgTm9kZTsKLQotTlNJ
bWFnZSogc2VsZWN0aW9uSW1hZ2UoRnJhbWUqLCBib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2Up
OwotTlNJbWFnZSogcmFuZ2VJbWFnZShGcmFtZSosIFJhbmdlKiwgYm9vbCBmb3JjZUJsYWNrVGV4
dCA9IGZhbHNlKTsKLU5TSW1hZ2UqIHNuYXBzaG90RHJhZ0ltYWdlKEZyYW1lKiwgTm9kZSosIE5T
UmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnRSZWN0KTsKLU5TSW1hZ2UqIGltYWdlRnJv
bVJlY3QoRnJhbWUqLCBOU1JlY3QpOwotCi19Ci0KLSNlbmRpZiAvLyBGcmFtZVNuYXBzaG90dGlu
Z01hY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90
dGluZ01hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTJjMmYyM2NiMTdiZDAzZDRlOGE1
ZWUxOTUxNGFjNDM5MWQxOWViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1t
CisrKyAvZGV2L251bGwKQEAgLTEsMTY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55
cG9wLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgotCi0jaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIK
LSNpbXBvcnQgIkRvY3VtZW50LmgiCi0jaW1wb3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiRnJhbWVT
ZWxlY3Rpb24uaCIKLSNpbXBvcnQgIkZyYW1lVmlldy5oIgotI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0LmgiCi0jaW1wb3J0ICJSYW5nZS5oIgotI2ltcG9ydCAiUmVuZGVyVmlldy5oIgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLU5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoRnJhbWUqIGZyYW1lLCBO
U1JlY3QgcmVjdCkKLXsKLSAgICBQYWludEJlaGF2aW9yIG9sZEJlaGF2aW9yID0gZnJhbWUtPnZp
ZXcoKS0+cGFpbnRCZWhhdmlvcigpOwotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZp
b3Iob2xkQmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsK
LSAgICAKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgCi0gICAgTlNJbWFn
ZSogcmVzdWx0SW1hZ2UgPSBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aFNpemU6cmVjdC5zaXpl
XSBhdXRvcmVsZWFzZV07Ci0gICAgCi0gICAgaWYgKHJlY3Quc2l6ZS53aWR0aCAhPSAwICYmIHJl
Y3Quc2l6ZS5oZWlnaHQgIT0gMCkgewotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25z
IgotICAgICAgICBbcmVzdWx0SW1hZ2Ugc2V0RmxpcHBlZDpZRVNdOwotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAotICAgICAgICBbcmVzdWx0SW1hZ2UgbG9ja0ZvY3VzXTsKLQotICAgICAg
ICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KChDR0NvbnRleHRSZWYpW1tOU0dyYXBo
aWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XSk7ICAgICAgICAKLSAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5z
bGF0ZSgtcmVjdC5vcmlnaW4ueCwgLXJlY3Qub3JpZ2luLnkpOwotICAgICAgICBmcmFtZS0+dmll
dygpLT5wYWludENvbnRlbnRzKCZncmFwaGljc0NvbnRleHQsIEludFJlY3QocmVjdCkpOwotICAg
ICAgICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwotCi0gICAgICAgIFtyZXN1bHRJbWFnZSB1
bmxvY2tGb2N1c107Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0gICAgICAg
IFtyZXN1bHRJbWFnZSBzZXRGbGlwcGVkOk5PXTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKLSAgICB9Ci0gICAgCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihvbGRC
ZWhhdmlvcik7Ci0gICAgcmV0dXJuIHJlc3VsdEltYWdlOwotICAgIAotICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci0gICAgCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlv
cihvbGRCZWhhdmlvcik7Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotTlNJbWFnZSogc2VsZWN0aW9u
SW1hZ2UoRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQotewotICAgIGZyYW1lLT52
aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCAoZm9y
Y2VCbGFja1RleHQgPyBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQgOiAwKSk7Ci0gICAgZnJh
bWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwotICAgIE5TSW1hZ2UqIHJlc3VsdCA9IGlt
YWdlRnJvbVJlY3QoZnJhbWUsIGZyYW1lLT5zZWxlY3Rpb24oKS5ib3VuZHMoKSk7Ci0gICAgZnJh
bWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yTm9ybWFsKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1OU0ltYWdlICpyYW5nZUltYWdlKEZyYW1lKiBmcmFtZSwgUmFu
Z2UqIHJhbmdlLCBib29sIGZvcmNlQmxhY2tUZXh0KQotewotICAgIGZyYW1lLT52aWV3KCktPnNl
dFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCAoZm9yY2VCbGFja1Rl
eHQgPyBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQgOiAwKSk7Ci0gICAgZnJhbWUtPmRvY3Vt
ZW50KCktPnVwZGF0ZUxheW91dCgpOwotICAgIFJlbmRlclZpZXcqIHZpZXcgPSBmcmFtZS0+Y29u
dGVudFJlbmRlcmVyKCk7Ci0gICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgUG9zaXRpb24gc3RhcnQgPSByYW5nZS0+c3RhcnRQb3NpdGlvbigpOwotICAgIFBvc2l0aW9u
IGNhbmRpZGF0ZSA9IHN0YXJ0LmRvd25zdHJlYW0oKTsKLSAgICBpZiAoY2FuZGlkYXRlLmRlcHJl
Y2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCi0g
ICAgICAgIHN0YXJ0ID0gY2FuZGlkYXRlOwotCi0gICAgUG9zaXRpb24gZW5kID0gcmFuZ2UtPmVu
ZFBvc2l0aW9uKCk7Ci0gICAgY2FuZGlkYXRlID0gZW5kLnVwc3RyZWFtKCk7Ci0gICAgaWYgKGNh
bmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5y
ZW5kZXJlcigpKQotICAgICAgICBlbmQgPSBjYW5kaWRhdGU7Ci0KLSAgICBpZiAoc3RhcnQuaXNO
dWxsKCkgfHwgZW5kLmlzTnVsbCgpIHx8IHN0YXJ0ID09IGVuZCkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIFJlbmRlck9iamVjdCogc2F2ZWRTdGFydFJlbmRlcmVyOwotICAgIGludCBzYXZl
ZFN0YXJ0T2Zmc2V0OwotICAgIFJlbmRlck9iamVjdCogc2F2ZWRFbmRSZW5kZXJlcjsKLSAgICBp
bnQgc2F2ZWRFbmRPZmZzZXQ7Ci0gICAgdmlldy0+Z2V0U2VsZWN0aW9uKHNhdmVkU3RhcnRSZW5k
ZXJlciwgc2F2ZWRTdGFydE9mZnNldCwgc2F2ZWRFbmRSZW5kZXJlciwgc2F2ZWRFbmRPZmZzZXQp
OwotCi0gICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnQuZGVwcmVjYXRlZE5v
ZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXN0YXJ0UmVuZGVyZXIpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyID0gZW5kLmRlcHJlY2F0ZWRO
b2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFlbmRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgIHZpZXctPnNldFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSZW5kZXJlciwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCksIFJlbmRlclZpZXc6OlJlcGFpbnROb3RoaW5nKTsKLSAgICBOU0ltYWdlKiByZXN1
bHQgPSBpbWFnZUZyb21SZWN0KGZyYW1lLCB2aWV3LT5zZWxlY3Rpb25Cb3VuZHMoKSk7Ci0gICAg
dmlldy0+c2V0U2VsZWN0aW9uKHNhdmVkU3RhcnRSZW5kZXJlciwgc2F2ZWRTdGFydE9mZnNldCwg
c2F2ZWRFbmRSZW5kZXJlciwgc2F2ZWRFbmRPZmZzZXQsIFJlbmRlclZpZXc6OlJlcGFpbnROb3Ro
aW5nKTsKLQotICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlv
ck5vcm1hbCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi1OU0ltYWdlKiBzbmFwc2hvdERy
YWdJbWFnZShGcmFtZSogZnJhbWUsIE5vZGUqIG5vZGUsIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1Jl
Y3QqIGVsZW1lbnRSZWN0KQotewotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5y
ZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
Ci0gICAgcmVuZGVyZXItPnVwZGF0ZURyYWdTdGF0ZSh0cnVlKTsgICAgLy8gbWFyayBkcmFnZ2Vk
IG5vZGVzIChzbyB0aGV5IHBpY2sgdXAgdGhlIHJpZ2h0IENTUykKLSAgICBmcmFtZS0+ZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0KCk7ICAvLyBmb3JjZXMgc3R5bGUgcmVjYWxjIC0gbmVlZGVkIHNp
bmNlIGNoYW5naW5nIHRoZSBkcmFnIHN0YXRlIG1pZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gaW1wbHkgbmV3IHN0eWxlcywgcGx1cyBKUyBjb3VsZCBoYXZl
IGNoYW5nZWQgb3RoZXIgdGhpbmdzCi0KLQotICAgIC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQg
bWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2luYWwgUmVuZGVyRWxlbWVudC4KLSAgICByZW5k
ZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OwotICAgIE5TUmVjdCBwYWlu
dGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0
KHRvcExldmVsUmVjdCkpOwotCi0gICAgaWYgKE5TSXNFbXB0eVJlY3QocGFpbnRpbmdSZWN0KSkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXco
bm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIE5TSW1h
Z2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QoZnJhbWUsIHBhaW50aW5nUmVjdCk7Ci0gICAgcmVu
ZGVyZXItPnVwZGF0ZURyYWdTdGF0ZShmYWxzZSk7Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVw
ZGF0ZUxheW91dCgpOwotICAgIGZyYW1lLT52aWV3KCktPnNldE5vZGVUb0RyYXcoMCk7Ci0KLSAg
ICBpZiAoZWxlbWVudFJlY3QpCi0gICAgICAgICplbGVtZW50UmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QodG9wTGV2ZWxSZWN0KTsKLSAgICBpZiAoaW1hZ2VSZWN0KQotICAgICAgICAqaW1hZ2VS
ZWN0ID0gcGFpbnRpbmdSZWN0OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcAppbmRleCA1YWFmM2E2
NzhjOWU1NDNhZjY4M2IzN2FkNWIwNmNjZTA2NDQzYjlmLi45Njc0ZjE3NjhmNWRkODQyNWI2MGM3
YWYxNmYwZjFmN2Q2Zjc2MzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9G
cmFtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCkBA
IC01NywzMCArNTcsNCBAQCBHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tU2VsZWN0aW9uKEZy
YW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAK
LURyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAo
c2VsZWN0aW9uKCkuaXNSYW5nZSgpKQotICAgICAgICByZXR1cm4gaW1hZ2VGcm9tU2VsZWN0aW9u
KHRoaXMsIGZhbHNlKS5sZWFrKCk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotRHJhZ0ltYWdlUmVm
IEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAgICBkb2N1bWVudCgpLT51cGRhdGVM
YXlvdXQoKTsKLQotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigp
OwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgTGF5b3V0UmVj
dCB0b3BMZXZlbFJlY3Q7Ci0gICAgSW50UmVjdCBwYWludGluZ1JlY3QgPSBwaXhlbFNuYXBwZWRJ
bnRSZWN0KHJlbmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOwotCi0gICAg
bV92aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBpbnZva2Ugc3BlY2lhbCBzdWItdHJlZSBk
cmF3aW5nIG1vZGUKLSAgICBHRElPYmplY3Q8SEJJVE1BUD4gcmVzdWx0ID0gaW1hZ2VGcm9tUmVj
dCh0aGlzLCBwYWludGluZ1JlY3QpOwotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKLQot
ICAgIHJldHVybiByZXN1bHQubGVhaygpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uaAppbmRleCAzYTI3MjNlNjNkNmQ3ZTdlYzA0NGNiMTJm
MmVhN2JkMDZjZmU2NTlmLi4yNjk3MjVjMWY5YjliODBkNTc4MTQ4NGY5MzFhYjI1ZGQzYWUzMzE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3Mg
RnJhbWU7CiBjbGFzcyBJbnRSZWN0OwogCiBHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VGcm9tUmVj
dChjb25zdCBGcmFtZSosIEludFJlY3QmKTsKLUdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21T
ZWxlY3Rpb24oRnJhbWUqLCBib29sIGZvcmNlV2hpdGVUZXh0KTsKK0dESU9iamVjdDxIQklUTUFQ
PiBpbWFnZUZyb21TZWxlY3Rpb24oRnJhbWUqLCBib29sIGZvcmNlQmxhY2tUZXh0KTsKIHZvaWQg
Y29tcHV0ZVBhZ2VSZWN0c0ZvckZyYW1lKEZyYW1lKiwgY29uc3QgSW50UmVjdCYgcHJpbnRSZWN0
LCBmbG9hdCBoZWFkZXJIZWlnaHQsIGZsb2F0IGZvb3RlckhlaWdodCwgZmxvYXQgdXNlclNjYWxl
RmFjdG9yLCBWZWN0b3I8SW50UmVjdD4mIG91dFBhZ2VzLCBpbnQmIG91dFBhZ2VIZWlnaHQpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNw
cAppbmRleCBiODFhZmQ1NzllODI5M2VlZmEyYmE5M2I5YmI1NWMxZjUwNzZjZjQ3Li41YWZmNTEx
ZDRmZTZhZTZhZjdlNjEwNzc0NzQyYzI2NmMwZTg3YTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdJbWFnZS5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAog
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtMjgsMjkgKzI4LDM3IEBACiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQogCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVNuYXBzaG90
dGluZy5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CisjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRl
ICJSZW5kZXJWaWV3LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogRHJhZ0ltYWdl
UmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgZmxvYXQgaGVpZ2h0UmVz
aXplUmF0aW8gPSAwLjBmOwogICAgIGZsb2F0IHdpZHRoUmVzaXplUmF0aW8gPSAwLjBmOwogICAg
IGZsb2F0IHJlc2l6ZVJhdGlvID0gLTEuMGY7CiAgICAgSW50U2l6ZSBvcmlnaW5hbFNpemUgPSBk
cmFnSW1hZ2VTaXplKGltYWdlKTsKLSAgICAKKwogICAgIGlmIChzcmNTaXplLndpZHRoKCkgPiBz
aXplLndpZHRoKCkpIHsKICAgICAgICAgd2lkdGhSZXNpemVSYXRpbyA9IHNpemUud2lkdGgoKSAv
IChmbG9hdClzcmNTaXplLndpZHRoKCk7CiAgICAgICAgIHJlc2l6ZVJhdGlvID0gd2lkdGhSZXNp
emVSYXRpbzsKICAgICB9Ci0gICAgCisKICAgICBpZiAoc3JjU2l6ZS5oZWlnaHQoKSA+IHNpemUu
aGVpZ2h0KCkpIHsKICAgICAgICAgaGVpZ2h0UmVzaXplUmF0aW8gPSBzaXplLmhlaWdodCgpIC8g
KGZsb2F0KXNyY1NpemUuaGVpZ2h0KCk7CiAgICAgICAgIGlmICgocmVzaXplUmF0aW8gPCAwLjBm
KSB8fCAocmVzaXplUmF0aW8gPiBoZWlnaHRSZXNpemVSYXRpbykpCiAgICAgICAgICAgICByZXNp
emVSYXRpbyA9IGhlaWdodFJlc2l6ZVJhdGlvOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzcmNT
aXplID09IG9yaWdpbmFsU2l6ZSkKICAgICAgICAgcmV0dXJuIHJlc2l6ZVJhdGlvID4gMC4wZiA/
IHNjYWxlRHJhZ0ltYWdlKGltYWdlLCBGbG9hdFNpemUocmVzaXplUmF0aW8sIHJlc2l6ZVJhdGlv
KSkgOiBpbWFnZTsKLSAgICAKKwogICAgIC8vIFRoZSBpbWFnZSB3YXMgc2NhbGVkIGluIHRoZSB3
ZWJwYWdlIHNvIGF0IG1pbmltdW0gd2UgbXVzdCBhY2NvdW50IGZvciB0aGF0IHNjYWxpbmcKICAg
ICBmbG9hdCBzY2FsZXggPSBzcmNTaXplLndpZHRoKCkgLyAoZmxvYXQpb3JpZ2luYWxTaXplLndp
ZHRoKCk7CiAgICAgZmxvYXQgc2NhbGV5ID0gc3JjU2l6ZS5oZWlnaHQoKSAvIChmbG9hdClvcmln
aW5hbFNpemUuaGVpZ2h0KCk7CkBAIC01OCwxNCArNjYsMTU0IEBAIERyYWdJbWFnZVJlZiBmaXRE
cmFnSW1hZ2VUb01heFNpemUoRHJhZ0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBjCiAgICAgICAgIHNjYWxleCAqPSByZXNpemVSYXRpbzsKICAgICAgICAgc2NhbGV5ICo9
IHJlc2l6ZVJhdGlvOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBzY2FsZURyYWdJbWFnZShp
bWFnZSwgRmxvYXRTaXplKHNjYWxleCwgc2NhbGV5KSk7CiB9CiAKK3N0cnVjdCBTY29wZWROb2Rl
RHJhZ1N0YXRlIHsKKyAgICBTY29wZWROb2RlRHJhZ1N0YXRlKEZyYW1lJiBmcmFtZSwgTm9kZSYg
bm9kZSkKKyAgICA6IGZyYW1lKGZyYW1lKQorICAgICwgbm9kZShub2RlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG5vZGUucmVuZGVyZXIoKSk7CisgICAgICAgIG5vZGUucmVuZGVyZXIoKS0+dXBk
YXRlRHJhZ1N0YXRlKHRydWUpOworICAgICAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlv
dXQoKTsKKyAgICB9CisKKyAgICB+U2NvcGVkTm9kZURyYWdTdGF0ZSgpCisgICAgeworICAgICAg
ICBpZiAobm9kZS5yZW5kZXJlcigpKSB7CisgICAgICAgICAgICBub2RlLnJlbmRlcmVyKCktPnVw
ZGF0ZURyYWdTdGF0ZShmYWxzZSk7CisgICAgICAgICAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRh
dGVMYXlvdXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEZyYW1lJiBmcmFtZTsKKyAgICBO
b2RlJiBub2RlOworfTsKKworc3RhdGljIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9t
U25hcHNob3Qoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCwgTm9kZSogbm9k
ZSkKK3sKKyAgICBpZiAoIXNuYXBzaG90KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbjsKKyNpZiBFTkFCTEUoQ1NT
X0lNQUdFX09SSUVOVEFUSU9OKQorICAgIGlmIChub2RlKSB7CisgICAgICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgICAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgb3JpZW50YXRpb24uc2V0UmVz
cGVjdEltYWdlT3JpZW50YXRpb24ocmVuZGVyZXItPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0
aW9uKCkpOworICAgICAgICBvcmllbnRhdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShyZW5k
ZXJlci0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOworICAgIH0KKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKG5vZGUpOworI2VuZGlmCisgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IHNuYXBz
aG90LT5jb3B5SW1hZ2UoSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkpOworICAgIGlm
ICghaW1hZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0KCksIG9yaWVudGF0aW9uKTsKK30KKworRHJhZ0ltYWdl
UmVmIGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoRnJhbWUmIGZyYW1lLCBOb2RlJiBub2RlKQorewor
ICAgIFNjb3BlZE5vZGVEcmFnU3RhdGUgZW5hYmxlRHJhZyhmcmFtZSwgbm9kZSk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCA9IHNuYXBzaG90Tm9kZShmcmFtZSwg
bm9kZSk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hvdChzdGQ6Om1vdmUo
c25hcHNob3QpLCAmbm9kZSk7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JT
ZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQoreworICAgIFNuYXBz
aG90T3B0aW9ucyBvcHRpb25zID0gZm9yY2VCbGFja1RleHQgPyBTbmFwc2hvdE9wdGlvbnNGb3Jj
ZUJsYWNrVGV4dCA6IFNuYXBzaG90T3B0aW9uc05vbmU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBzbmFwc2hvdCA9IHNuYXBzaG90U2VsZWN0aW9uKGZyYW1lLCBvcHRpb25zKTsK
KyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHN0ZDo6bW92ZShzbmFwc2hv
dCksIG51bGxwdHIpOworfQorCitzdHJ1Y3QgU2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSB7Cisg
ICAgU2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZShGcmFtZSYgZnJhbWUpCisgICAgOiBmcmFtZShm
cmFtZSkKKyAgICB7CisgICAgICAgIGlmIChSZW5kZXJWaWV3KiByb290ID0gZnJhbWUuY29udGVu
dFJlbmRlcmVyKCkpCisgICAgICAgICAgICByb290LT5nZXRTZWxlY3Rpb24oc3RhcnRSZW5kZXJl
ciwgc3RhcnRPZmZzZXQsIGVuZFJlbmRlcmVyLCBlbmRPZmZzZXQpOworICAgIH0KKworICAgIH5T
Y29wZWRGcmFtZVNlbGVjdGlvblN0YXRlKCkKKyAgICB7CisgICAgICAgIGlmIChSZW5kZXJWaWV3
KiByb290ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCkpCisgICAgICAgICAgICByb290LT5zZXRT
ZWxlY3Rpb24oc3RhcnRSZW5kZXJlciwgc3RhcnRPZmZzZXQsIGVuZFJlbmRlcmVyLCBlbmRPZmZz
ZXQsIFJlbmRlclZpZXc6OlJlcGFpbnROb3RoaW5nKTsKKyAgICB9CisKKyAgICBGcmFtZSYgZnJh
bWU7CisgICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyOworICAgIFJlbmRlck9iamVjdCog
ZW5kUmVuZGVyZXI7CisgICAgaW50IHN0YXJ0T2Zmc2V0OworICAgIGludCBlbmRPZmZzZXQ7Cit9
OworCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBS
YW5nZSYgcmFuZ2UsIGJvb2wgZm9yY2VCbGFja1RleHQpCit7CisgICAgZnJhbWUuZG9jdW1lbnQo
KS0+dXBkYXRlTGF5b3V0KCk7CisgICAgUmVuZGVyVmlldyogdmlldyA9IGZyYW1lLmNvbnRlbnRS
ZW5kZXJlcigpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAvLyBUbyBzbmFwc2hvdCB0aGUgcmFuZ2UsIHRlbXBvcmFyaWx5IHNlbGVjdCBpdCBhbmQgdGFr
ZSBzZWxlY3Rpb24gc25hcHNob3QuCisgICAgUG9zaXRpb24gc3RhcnQgPSByYW5nZS5zdGFydFBv
c2l0aW9uKCk7CisgICAgUG9zaXRpb24gY2FuZGlkYXRlID0gc3RhcnQuZG93bnN0cmVhbSgpOwor
ICAgIGlmIChjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRl
ZE5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgc3RhcnQgPSBjYW5kaWRhdGU7CisKKyAgICBQ
b3NpdGlvbiBlbmQgPSByYW5nZS5lbmRQb3NpdGlvbigpOworICAgIGNhbmRpZGF0ZSA9IGVuZC51
cHN0cmVhbSgpOworICAgIGlmIChjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRh
dGUuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgZW5kID0gY2FuZGlkYXRl
OworCisgICAgaWYgKHN0YXJ0LmlzTnVsbCgpIHx8IGVuZC5pc051bGwoKSB8fCBzdGFydCA9PSBl
bmQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgY29uc3QgU2NvcGVkRnJhbWVTZWxl
Y3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZShmcmFtZSk7CisKKyAgICBSZW5kZXJPYmplY3QqIHN0
YXJ0UmVuZGVyZXIgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgIFJl
bmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIo
KTsKKyAgICBpZiAoIXN0YXJ0UmVuZGVyZXIgfHwgIWVuZFJlbmRlcmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zID0gZm9yY2VCbGFja1Rl
eHQgPyBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA6IFNuYXBzaG90T3B0aW9uc05vbmU7
CisgICAgb3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvbk9ubHk7CisgICAg
dmlldy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCksIGVuZFJlbmRlcmVyLCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgUmVu
ZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOworICAgIC8vIFdlIGNhcHR1cmUgdXNpbmcgc25hcHNo
b3RGcmFtZVJlY3QoKSBiZWNhdXNlIHdlIGZha2UgdXAgdGhlIHNlbGVjdGlvbiB1c2luZworICAg
IC8vIEZyYW1lVmlldyBidXQgc25hcHNob3RTZWxlY3Rpb24oKSB1c2VzIHRoZSBzZWxlY3Rpb24g
ZnJvbSB0aGUgRnJhbWUgaXRzZWxmLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
c25hcHNob3QgPSBzbmFwc2hvdEZyYW1lUmVjdChmcmFtZSwgdmlldy0+c2VsZWN0aW9uQm91bmRz
KCksIG9wdGlvbnMpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc3Rk
Ojptb3ZlKHNuYXBzaG90KSwgbnVsbHB0cik7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGb3JJbWFnZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUsIEludFJlY3QmIGltYWdlUmVj
dCwgSW50UmVjdCYgZWxlbWVudFJlY3QpCit7CisgICAgU2NvcGVkTm9kZURyYWdTdGF0ZSBlbmFi
bGVEcmFnKGZyYW1lLCBub2RlKTsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2Rl
LnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICAvLyBDYWxjdWxhdGUgaW1hZ2UgYW5kIGVsZW1lbnQgbWV0cmljcyBmb3IgdGhlIGNs
aWVudCwgdGhlbiBjcmVhdGUgZHJhZyBpbWFnZS4KKyAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVj
dDsKKyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVy
ZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7CisKKyAgICBpZiAocGFpbnRpbmdS
ZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBlbGVtZW50UmVj
dCA9IHBpeGVsU25hcHBlZEludFJlY3QodG9wTGV2ZWxSZWN0KTsKKyAgICBpbWFnZVJlY3QgPSBw
YWludGluZ1JlY3Q7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90
ID0gc25hcHNob3ROb2RlKGZyYW1lLCBub2RlKTsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdl
RnJvbVNuYXBzaG90KHN0ZDo6bW92ZShzbmFwc2hvdCksICZub2RlKTsKK30KKwogI2lmICFQTEFU
Rk9STShNQUMpICYmICghUExBVEZPUk0oV0lOKSB8fCBPUyhXSU5DRSkpCiBEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcmLCBGb250UmVuZGVyaW5n
TW9kZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IGQ4ZjUyYmNmYWQ0NDI0M2Y4YWNj
Yjg2NzBhMDk0YWYxMTNjNGIyNGQuLmQ4MzY5NmUzMzExY2NlNTQxNzM1MmI2ZDA0Njk5YTEwMzM0
NDBmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC0yNiwxMCArMjYsMTEg
QEAKICNpZm5kZWYgRHJhZ0ltYWdlX2gKICNkZWZpbmUgRHJhZ0ltYWdlX2gKIAorI2luY2x1ZGUg
IkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdNb2RlLmgiCisjaW5jbHVkZSAi
RnJhbWVTbmFwc2hvdHRpbmcuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC00MSwzOCArNDIsNDYgQEAgdHlwZWRl
ZiBzdHJ1Y3QgSEJJVE1BUF9fKiBIQklUTUFQOwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZh
Y2UgY2Fpcm9fc3VyZmFjZV90OwogI2VuZGlmCiAKLS8vV2UgbmVlZCB0byAjZGVmaW5lIFlPZmZz
ZXQgYXMgaXQgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGggV2ViS2l0CisvLyBXZSBuZWVkIHRvICNk
ZWZpbmUgWU9mZnNldCBhcyBpdCBuZWVkcyB0byBiZSBzaGFyZWQgd2l0aCBXZWJLaXQKICNkZWZp
bmUgRHJhZ0xhYmVsQm9yZGVyWU9mZnNldCAyCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAg
IGNsYXNzIEltYWdlOwotICAgIGNsYXNzIFVSTDsKK2NsYXNzIEZyYW1lOworY2xhc3MgSW1hZ2U7
CitjbGFzcyBJbnRSZWN0OworY2xhc3MgTm9kZTsKK2NsYXNzIFJhbmdlOworY2xhc3MgVVJMOwog
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHR5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJ
bWFnZVJlZjsKK3R5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFnZVJlZjsKICNlbGlm
IFBMQVRGT1JNKFdJTikKLSAgICB0eXBlZGVmIEhCSVRNQVAgRHJhZ0ltYWdlUmVmOwordHlwZWRl
ZiBIQklUTUFQIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
TklYKQotICAgIHR5cGVkZWYgY2Fpcm9fc3VyZmFjZV90KiBEcmFnSW1hZ2VSZWY7Cit0eXBlZGVm
IGNhaXJvX3N1cmZhY2VfdCogRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oRUZMKSB8fCBQ
TEFURk9STShCTEFDS0JFUlJZKQotICAgIHR5cGVkZWYgdm9pZCogRHJhZ0ltYWdlUmVmOwordHlw
ZWRlZiB2b2lkKiBEcmFnSW1hZ2VSZWY7CiAjZW5kaWYKLSAgICAKLSAgICBJbnRTaXplIGRyYWdJ
bWFnZVNpemUoRHJhZ0ltYWdlUmVmKTsKLSAgICAKLSAgICAvL1RoZXNlIGZ1bmN0aW9ucyBzaG91
bGQgYmUgbWVtb3J5IG5ldXRyYWwsIGVnLiBpZiB0aGV5IHJldHVybiBhIG5ld2x5IGFsbG9jYXRl
ZCBpbWFnZSwgCi0gICAgLy90aGV5IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4gIEFz
IGEgY29yb2xsYXJ5IHRoZXNlIG1ldGhvZHMgZG9uJ3QgZ3VhcmFudGVlCi0gICAgLy90aGUgaW5w
dXQgaW1hZ2UgcmVmIHdpbGwgc3RpbGwgYmUgdmFsaWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gY2Fs
bGVkCi0gICAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYg
aW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEludFNpemUmIHNpemUpOwotICAg
IERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2Fs
ZSk7Ci0gICAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1h
Z2VSZWYgaW1hZ2UsIGZsb2F0IGRlbHRhKTsKLSAgICAKLSAgICBEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsK
LSAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlRmlsZW5h
bWUoY29uc3QgU3RyaW5nJik7Ci0gICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxp
bmsoVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJlbmRlcmluZ01vZGUpOwotICAgIHZv
aWQgZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7Ci19CiAKK0ludFNpemUgZHJhZ0ltYWdl
U2l6ZShEcmFnSW1hZ2VSZWYpOworCisvLyBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIG1lbW9y
eSBuZXV0cmFsLCBlZy4gaWYgdGhleSByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgaW1hZ2UsCisv
LyB0aGV5IHNob3VsZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4gQXMgYSBjb3JvbGxhcnkgdGhl
c2UgbWV0aG9kcyBkb24ndCBndWFyYW50ZWUKKy8vIHRoZSBpbnB1dCBpbWFnZSByZWYgd2lsbCBz
dGlsbCBiZSB2YWxpZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBjYWxsZWQuCitEcmFnSW1hZ2VSZWYg
Zml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiwgY29uc3QgSW50U2l6ZSYgc3JjU2l6
ZSwgY29uc3QgSW50U2l6ZSYgZHN0U2l6ZSk7CitEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2Uo
RHJhZ0ltYWdlUmVmLCBGbG9hdFNpemUgc2NhbGUpOworRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJh
Z0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYsIGZsb2F0IGRlbHRhKTsKKworRHJhZ0ltYWdl
UmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbik7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdl
RmlsZW5hbWUoY29uc3QgU3RyaW5nJik7CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VG
b3JOb2RlKEZyYW1lJiwgTm9kZSYpOworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclNl
bGVjdGlvbihGcmFtZSYsIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxzZSk7CitEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmLCBSYW5nZSYsIGJvb2wgZm9yY2VCbGFj
a1RleHQgPSBmYWxzZSk7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9ySW1hZ2UoRnJh
bWUmLCBOb2RlJiwgSW50UmVjdCYgaW1hZ2VSZWN0LCBJbnRSZWN0JiBlbGVtZW50UmVjdCk7CitE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcmIGxh
YmVsLCBGb250UmVuZGVyaW5nTW9kZSk7Cit2b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1hZ2VS
ZWYpOworfQogCi0jZW5kaWYgLy8hRHJhZ0ltYWdlX2gKKyNlbmRpZiAvLyBEcmFnSW1hZ2VfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQppbmRl
eCA1ZGZmNmYwZmU5YzFkOWYyZGU0YTFlMTE5M2E1ZWZiNDQ2MmQwNzkxLi5kNTYyYTE2MTkyNjVm
YTYxZTBiNGMxODk2YTA4ZmY1ZmViMTNiNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTbmFwc2hv
dHRpbmdNYWMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTbmFwc2hvdHRpbmcuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvaHRtbGVkaXRpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGI1YzAzYmIzZGVmZDU0OTNkMWRhZDY1N2E5ZGEwYTE2
ZTdlYmVhZjguLmU2YjdjYWZlZWJlYzc4Nzc3MzhjOWNmOTc3NzE5ZGVhOWY1MjA1NmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtODUsNiArODUsNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudEZyYWdtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJvbGxl
ci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRp
dG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvckRlbGV0ZUFjdGlvbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9FbGVtZW50Lmg+CkBAIC05NSw3ICs5Niw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Zy
YW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0ZyYW1lU2VsZWN0aW9uLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU25hcHNob3R0aW5nTWFj
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1M
Q29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpAQCAtMTgyMCw3ICsx
ODIwLDEyIEBAIHN0YXRpYyBib29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNrT3JEcmFnKE5TRXZl
bnQgKmV2ZW50KQogewogICAgIGlmICghW3NlbGYgX2hhc1NlbGVjdGlvbl0pCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gc2VsZWN0aW9uSW1hZ2UoY29yZShb
c2VsZiBfZnJhbWVdKSk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJh
bWVdKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5T
SW1hZ2UgKmRyYWdJbWFnZSA9IFtbY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCpjb3JlRnJh
bWUpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIFtkcmFnSW1hZ2UgX3dlYl9kaXNzb2x2ZVRv
RnJhY3Rpb246V2ViRHJhZ0ltYWdlQWxwaGFdOwogICAgIHJldHVybiBkcmFnSW1hZ2U7CiB9CkBA
IC01OTY1LDcgKzU5NzAsMTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRy
aWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKIHsKICAgICBpZiAo
IVtzZWxmIF9oYXNTZWxlY3Rpb25dKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBz
ZWxlY3Rpb25JbWFnZShjb3JlKFtzZWxmIF9mcmFtZV0pLCBmb3JjZUJsYWNrVGV4dCk7CisKKyAg
ICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKKyAgICBpZiAoIWNvcmVG
cmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW1tjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24oKmNvcmVGcmFtZSwgZm9yY2VCbGFja1RleHQpIHJldGFpbl0gYXV0b3JlbGVh
c2VdOwogfQogCiAtIChOU1JlY3Qpc2VsZWN0aW9uSW1hZ2VSZWN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01D
b3JlQ2xhc3Nlcy5jcHAKaW5kZXggY2NiZDcxOTAxZTQ1NTc5MDMxYjkwMmJhNTZhODk0ZTZhOGQ3
OWNiMy4uYjgxZDRhN2Q3MzQ3N2FkZjhiZGI3ODNiMjUxZGUxZGM5ZmZkOTMwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcApAQCAtMzYsMTAgKzM2LDEwIEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0RyYWdJbWFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZUZvbnRE
YXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0hUTUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5o
PgpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZUxpc3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlclRy
ZWVBc1RleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZUZvbnREYXRhLmg+CiAKICNpbmNs
dWRlIDxpbml0Z3VpZC5oPgogLy8gezNCMEMwRUZGLTQ3OEItNGIwYi04MjkwLUQyMzIxRTA4RTIz
RX0KQEAgLTEyNzksNyArMTI4MCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRE9NRWxl
bWVudDo6cmVuZGVyZWRJbWFnZShIQklUTUFQKiBpbWFnZSkKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKmltYWdlID0gZnJhbWUtPm5vZGVJbWFnZShtX2Vs
ZW1lbnQpOworICAgICppbWFnZSA9IGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoKmZyYW1lLCAqbV9l
bGVtZW50KTsKICAgICBpZiAoISppbWFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApkaWZm
IC0tZ2l0IGEvV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNv
dXJjZS54Y3NjaGVtZSBiL1dlYktpdC54Y3dvcmtzcGFjZS94Y3NoYXJlZGRhdGEveGNzY2hlbWVz
L0FsbCBTb3VyY2UueGNzY2hlbWUKaW5kZXggZmQyY2NhN2ViZGE4ZWRlOGYwYTY2Mzg5OTI1Y2Fm
NWMwZTQyNWZiNC4uOTgwNzZiODRlNjJiNzNiNjA3YWFiM2MxYWU5NWI3YjJiMTQyZGQ5OSAxMDA2
NDQKLS0tIGEvV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNv
dXJjZS54Y3NjaGVtZQkKKysrIGIvV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3Nj
aGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQkKQEAgLTExNiw2ICsxMTYsMTUgQEAKICAgICAgIGJ1
aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyI+CiAgICAgICA8VGVzdGFibGVzPgogICAgICAgPC9U
ZXN0YWJsZXM+CisgICAgICA8TWFjcm9FeHBhbnNpb24+CisgICAgICAgICA8QnVpbGRhYmxlUmVm
ZXJlbmNlCisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnkiCisgICAg
ICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjhERDc2Rjk2MDQ4NkFBNzYwMEQ5NkI1RSIK
KyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiVGVzdFdlYktpdEFQSSIKKyAgICAgICAgICAg
IEJsdWVwcmludE5hbWUgPSAiVGVzdFdlYktpdEFQSSIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRD
b250YWluZXIgPSAiY29udGFpbmVyOlRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2oiPgorICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+CisgICAgICA8L01hY3Jv
RXhwYW5zaW9uPgogICAgPC9UZXN0QWN0aW9uPgogICAgPExhdW5jaEFjdGlvbgogICAgICAgc2Vs
ZWN0ZWREZWJ1Z2dlcklkZW50aWZpZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVn
Z2VyLkxMREIiCkBAIC0xMjYsOSArMTM1LDIxIEBACiAgICAgICBpZ25vcmVzUGVyc2lzdGVudFN0
YXRlT25MYXVuY2ggPSAiWUVTIgogICAgICAgZGVidWdEb2N1bWVudFZlcnNpb25pbmcgPSAiWUVT
IgogICAgICAgYWxsb3dMb2NhdGlvblNpbXVsYXRpb24gPSAiWUVTIj4KLSAgICAgIDxQYXRoUnVu
bmFibGUKLSAgICAgICAgIEZpbGVQYXRoID0gIi9BcHBsaWNhdGlvbnMvU2FmYXJpLmFwcC9Db250
ZW50cy9NYWNPUy9TYWZhcmlGb3JXZWJLaXREZXZlbG9wbWVudCI+Ci0gICAgICA8L1BhdGhSdW5u
YWJsZT4KKyAgICAgIDxCdWlsZGFibGVQcm9kdWN0UnVubmFibGU+CisgICAgICAgICA8QnVpbGRh
YmxlUmVmZXJlbmNlCisgICAgICAgICAgICBCdWlsZGFibGVJZGVudGlmaWVyID0gInByaW1hcnki
CisgICAgICAgICAgICBCbHVlcHJpbnRJZGVudGlmaWVyID0gIjhERDc2Rjk2MDQ4NkFBNzYwMEQ5
NkI1RSIKKyAgICAgICAgICAgIEJ1aWxkYWJsZU5hbWUgPSAiVGVzdFdlYktpdEFQSSIKKyAgICAg
ICAgICAgIEJsdWVwcmludE5hbWUgPSAiVGVzdFdlYktpdEFQSSIKKyAgICAgICAgICAgIFJlZmVy
ZW5jZWRDb250YWluZXIgPSAiY29udGFpbmVyOlRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2oiPgorICAgICAgICAgPC9CdWlsZGFibGVSZWZlcmVuY2U+CisgICAgICA8
L0J1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZT4KKyAgICAgIDxDb21tYW5kTGluZUFyZ3VtZW50cz4K
KyAgICAgICAgIDxDb21tYW5kTGluZUFyZ3VtZW50CisgICAgICAgICAgICBhcmd1bWVudCA9ICIt
LWd0ZXN0X2ZpbHRlcj1XZWJLaXQxLlJlbmRlcmVkSW1hZ2UqIgorICAgICAgICAgICAgaXNFbmFi
bGVkID0gIllFUyI+CisgICAgICAgICA8L0NvbW1hbmRMaW5lQXJndW1lbnQ+CisgICAgICA8L0Nv
bW1hbmRMaW5lQXJndW1lbnRzPgogICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPgogICAgICAgPC9B
ZGRpdGlvbmFsT3B0aW9ucz4KICAgIDwvTGF1bmNoQWN0aW9uPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217774</attachid>
            <date>2013-11-24 22:47:51 -0800</date>
            <delta_ts>2013-11-26 18:12:42 -0800</delta_ts>
            <desc>v4</desc>
            <filename>bug-124325-20131124224750.patch</filename>
            <type>text/plain</type>
            <size>67908</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIwYTg2YjYxZTNiNzIw
NTdlZjE0NDgyOGU3NGY5NTFjZjE3YWYwMC4uMGI5OTk5NzFlY2ZhY2EyNGM4NGQ5YWMwODU2Mzhk
NDNhZmZmOGMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYzIEBACiAyMDEzLTExLTI0ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAorICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc25hcHNob3QgY3JlYXRpb24g
bWV0aG9kcyBoYWQgZHVwbGljYXRlZCBjb2RlIGFuZCB3ZXJlIHNwbGl0CisgICAgICAgIGJldHdl
ZW4gRnJhbWUsIERyYWdJbWFnZSwgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9u
c3MuCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBXZWJDb3JlIHNuYXBzaG90IG1ldGhvZHMgaW50
byBGcmFtZVNuYXBzaG90dGluZworICAgICAgICBhbmQgcmVtb3ZlcyBwbGF0Zm9ybSBpbXBsZW1l
bnRhdGlvbnMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgRHJhZ0ltYWdlIG1ldGhvZHMgcmV1
c2Ugc25hcHNob3QgbWV0aG9kcyB3aGVyZSBwb3NzaWJsZS4gSW5zcGVjdG9yCisgICAgICAgIHdp
bGwgYmUgYWJsZSB0byB0YWtlIHNuYXBzaG90cyB3aXRob3V0IHVzaW5nIGRyYWcgaW1hZ2VzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJbWFn
ZV0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpd
KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQ
YWludGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0
ZTo6flNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hv
dEZyYW1lUmVjdCk6IE1vdmUgbW9zdCBidWZmZXIgbG9naWMgdG8gaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90U2VsZWN0aW9uKTogTW92ZWQgZnJvbSBGcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90Tm9kZSk6IE1vdmVkIGZyb20gRnJhbWUuCisgICAgICAgICogcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcDogcmVtb3ZlIGR1cGxpY2F0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5oOiBGaXggYW4gaW5j
b3JyZWN0IHBhcmFtZXRlciBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY29wZWROb2RlRHJhZ1N0YXRlOjpTY29wZWROb2RlRHJhZ1N0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZE5vZGVEcmFnU3RhdGU6On5TY29wZWROb2Rl
RHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dCk6IEJvaWxlcnBsYXRlIGJ1ZmZlciBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0
ZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRG
cmFtZVNlbGVjdGlvblN0YXRlOjp+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6IE1vdmVkIGZyb20gRnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6IE1vdmVkIGZyb20gRnJh
bWVTbmFwc2hvdHRpbmdNYWMuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKTogdXNlIG51bGxwdHIuCisKKzIwMTMtMTEtMjQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNz
Lndhc2hpbmd0b24uZWR1PgorCiAgICAgICAgIEltYWdlQnVmZmVyOjpjcmVhdGUgc2hvdWxkIHJl
dHVybiBhIHN0ZDo6dW5pcXVlX3B0ciBpbnN0ZWFkIG9mIE93blB0ci4KICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDgyMgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cK
aW5kZXggYWI0MzYzNTA3MWJlZjgyZDE1ZjYxMTAzMjNmNWM4NWYyOTI4ZThiMi4uMmFlMTkzZTE3
YjJjZDFlOWJlNDdhYTZkNTZkNWEyOTcyNjlmNzZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEzLTExLTIzICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9u
LmVkdT4KKworICAgICAgICBDb25zb2xpZGF0ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFi
aWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW06IHVzZSBuZXcgaGVhZGVyIGZpbGUuCisK
IDIwMTMtMTEtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTk0NTUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggZTk4Mzk4ZTA1MTJkYjAyNzQ3ZWFjMjZjNDcxNTYzOTA5ODcxYjFjNy4uZGNjZjdmMWFmMGY4
MjA0MzcwOTg1NmEyZDk5YmMzMjdlNTQzZDRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDEzLTExLTIzICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVk
dT4KKworICAgICAgICBDb25zb2xpZGF0ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxp
dGllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBuZXcgcGxhdGZvcm0taW5kZXBlbmRlbnQgbWV0aG9kcyBpbnN0ZWFkIG9mIE1hYyBtZXRob2Rz
LgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgX3NlbGVjdGlvbkRyYWdnaW5nSW1hZ2VdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
c2VsZWN0aW9uSW1hZ2VGb3JjaW5nQmxhY2tUZXh0Ol0pOgorCiAyMDEzLTExLTIxICBNYXJrIFJv
d2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEy
NDcwMj4gU3RvcCBvdmVycmlkaW5nIFZBTElEX0FSQ0hTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGEz
ZWI3ZTVlODQwNjcxYWZjMmE5NmY3NTE5OGEwMzhmZDFjNjdjOTYuLmI2Y2ExNjIwMjRkZmRjNDU1
YWIyMGQ3M2FmYjg3ODU3ZWU3NTA1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMy0xMS0yMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisK
KyAgICAgICAgQ29uc29saWRhdGUgdmFyaW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNv
cmVDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UpOiB1c2Ug
Y3JlYXRlRHJhZ0ltYWdlRm9yTm9kZS4KKwogMjAxMy0xMS0yMSAgUGV0ZXIgTW9sbmFyICA8cG1v
bG5hci51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFC
TEVfV09SS0VSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NGViYmIzM2ZlY2IzOWY4NzQ0YWVi
ZWU4MDU4MGJjYTFhN2QzNjRkLi44NjAyYjMyNWEyYTIzODcxZjg4MmU0NjFjZjc2OTQ0MDM4ZjEy
MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTcyNiw2ICsxNzI2LDcgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvRnJhbWUu
Y3BwCiAgICAgcGFnZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwCisgICAgcGFnZS9GcmFt
ZVNuYXBzaG90dGluZy5jcHAKICAgICBwYWdlL0ZyYW1lVHJlZS5jcHAKICAgICBwYWdlL0ZyYW1l
Vmlldy5jcHAKICAgICBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IGExMDk2OTAyODcwYzZjNjcxYTY1Njk2MGE1ODllYjNmYWE5
ZWE4YWQuLjkxN2YwMWNlNjM0MjE3YzMxODQyZmFlZjFlNmE0NmY4MGUyNTIyOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDEyMCw2ICs0MTIwLDggQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVNuYXBzaG90dGluZy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVHJlZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA3MGQ3MzNkMzVkNTkyN2FkYzRlZDI3NGYzZmFm
ODcwM2Y1NDk4MmY0Li5mNTA4YmQ4NzkxZmUwOTEwZmMxZmUzYmM4ZDZkOTMxM2FjNTQ1MGU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNDI4LDcgKzQyOCw2IEBAIF9fWk43V2ViQ29yZTE0Y29v
a2llc0VuYWJsZWRFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUzVfCiBf
X1pON1dlYkNvcmUxNGRlY29kZUhvc3ROYW1lRVA4TlNTdHJpbmcKIF9fWk43V2ViQ29yZTE0ZW5j
b2RlSG9zdE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRlbmRPZlBhcmFncmFwaEVSS05T
XzE1VmlzaWJsZVBvc2l0aW9uRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQotX19a
TjdXZWJDb3JlMTRzZWxlY3Rpb25JbWFnZUVQTlNfNUZyYW1lRWIKIF9fWk43V2ViQ29yZTE0c2V0
TWV0YWRhdGFVUkxFUk4zV1RGNlN0cmluZ0VSS1MxX1M0XwogX19aTjdXZWJDb3JlMTVBZmZpbmVU
cmFuc2Zvcm01ZmxpcFlFdgogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm01c2NhbGVFZApA
QCAtODkwLDYgKzg4OSw3IEBAIF9fWk43V2ViQ29yZTI3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VC
YXNlQzJFdgogX19aTjdXZWJDb3JlMjdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25DMUVOM1dU
RjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRWJSS05TMV82U3RyaW5nRQogX19aTjdXZWJDb3JlMjdE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sxNHNldE9yaWVudGF0aW9uRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzIxRGV2aWNlT3JpZW50YXRpb25EYXRhRUVFCiBfX1pON1dlYkNvcmUyN0RldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9ja0MxRXYKK19fWk43V2ViQ29yZTI3Y3JlYXRlRHJhZ0ltYWdlRm9y
U2VsZWN0aW9uRVJOU181RnJhbWVFYgogX19aTjdXZWJDb3JlMjdwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWxFUktOU18zVVJMRVMyXwogX19aTjdXZWJDb3JlMjdzdGFydE9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXNFUEZ2dkUKIF9fWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjEyYWRkVXNlclNoZWV0RU4zV1RGN1Bhc3NSZWZJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUUK
QEAgLTIwMzUsNyArMjAzNSw2IEBAIF9fWk43V2ViQ29yZTM4Y29udGV4dE1lbnVJdGVtVGFnV3Jp
dGluZ0RpcmVjdGlvbk1lbnVFdgogX19aTjdXZWJDb3JlNDJjb250ZXh0TWVudUl0ZW1UYWdDaGVj
a0dyYW1tYXJXaXRoU3BlbGxpbmdFdgogX19aTjdXZWJDb3JlNDJjb250ZXh0TWVudUl0ZW1UYWdD
aGVja1NwZWxsaW5nV2hpbGVUeXBpbmdFdgogX19aTjdXZWJDb3JlNDZjb250ZXh0TWVudUl0ZW1U
YWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5RXYKLV9fWk43V2ViQ29yZTVGcmFtZTlub2Rl
SW1hZ2VFUE5TXzROb2RlRQogX19aTjdXZWJDb3JlNkN1cnNvcjhmcm9tVHlwZUVOUzBfNFR5cGVF
CiBfX1pON1dlYkNvcmU2Q3Vyc29yQzFFUE5TXzVJbWFnZUVSS05TXzhJbnRQb2ludEUKIF9fWk43
V2ViQ29yZTZDdXJzb3JDMUVSS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oKaW5kZXggOTMwMGI0YjNiYjg0MjJiYTY3NjM5NzUxZGM2YWU5MTU4
NzE1N2M0MC4uODUzMzFkZmEzNTdhZTY4M2UwZTA4MWVjNDljYTU0OGEwOGI3NGFlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC02OTgz
LDYgKzY5ODMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGb2N1c0NvbnRy
b2xsZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNo
b3R0aW5nLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVUcmVl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVWaWV3LmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcR3JvdXBTZXR0aW5ncy5jcHAiIC8+
CkBAIC0xODgyNyw2ICsxODgyOCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdl
XEZvY3VzRGlyZWN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZy
YW1lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVNu
YXBzaG90dGluZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRy
ZWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVWaWV3LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEdyb3VwU2V0dGluZ3MuaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVycwppbmRleCA0ZDc1MTQ0ZmIyNTViZTk3NDdjOTliY2UyMjdhNDRkMTA2Y2M2ZTNhLi43
M2JlZmIxNDk2MTk2MDFhM2YwZjc5ZDU4Y2YyNDUzNmU0NDk4MGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBA
IC03MTcsNiArNzE3LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFw
c2hvdHRpbmcuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgorICAgIDwvQ2xDb21w
aWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzYyOSw2ICs3
NjMyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlv
bk9ic2VydmVyLmgiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNob3R0aW5nLmgi
PgorICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5oIj4KICAgICAgIDxGaWx0ZXI+cGFn
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU5NDMyN2FjMDgxYmFlNjE4MDFiNzlj
OTA4ZDkzNDViNmMyOTM0OTcuLjcxMjc5OGMyMjMzZTQyZWJhMmRkZjBjN2Y3MjM2M2RhMmM0MTcz
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTIwMDIsNyArMjAwMiw2IEBACiAJCTY1QTIxNDg1MDk3QTNGNTMwMEI5MDUwQSAv
KiBGcmFtZVRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUJGMDIyRTA5NzQ4MTYzMDBD
NDMxOTYgLyogRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjVCRjAyMjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLzsgfTsKIAkJ
NjVCRjAyMkYwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJh
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2
NUJGMDI0NTA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyog
RnJhbWVNYWMubW0gKi87IH07CiAJCTY1Qzk3QUYzMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qzk3QUYy
MDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLzsgfTsKIAkJNjVDQkZFRjkwOTc0RjYwNzAw
MURBQzI1IC8qIEZyYW1lVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAq
LzsgfTsKIAkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDQkZFRjgwOTc0RjYwNzAw
MURBQzI1IC8qIEZyYW1lVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yMjA3LDggKzIyMDYsNiBAQAogCQk3QzUzNDNGQzE3Qjc0QjYzMDA0
MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTM0M0ZBMTdCNzRCNjMwMDQyMzJGMCAvKiBK
U01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwICovOyB9OwogCQk3QzUzNDNGRDE3Qjc0QjYzMDA0
MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQjE3Qjc0QjYzMDA0MjMyRjAgLyogSlNN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggKi87IH07CiAJCTdDQzdFM0Q3MTcyMDhDMEYwMDNDNTI3
NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyogSUROU2NyaXB0
V2hpdGVMaXN0LnR4dCAqLzsgfTsKLQkJN0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1l
U25hcHNob3R0aW5nTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tICovOyB9OwotCQk3Q0UzMERBQTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRp
bmdNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
RTMwREE4MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdENzQxQkRBMTc3MjI2
QUEwMDg1OTE3MCAvKiBDU1NWYWx1ZUtleXdvcmRzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODE0ODA5RDEzMDQzMDAw
RTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oICovOyB9OwogCQk3RTEyRTkwRjE1RkE1RDNBMDA1
RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UxMkU5MEQxNUZBNUQzQTAwNUU0MTI2IC8qIEN1
c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCAqLzsgfTsKIAkJN0UxMkU5MTAxNUZBNUQzQTAwNUU0
MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UxMkU5MEUxNUZBNUQzQTAwNUU0MTI2IC8qIEN1
c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwICovOyB9OwpAQCAtNTI0Myw2ICs1MjQwLDggQEAK
IAkJQzNDRjE3QTUxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0ExMTVCMDA2M0Yw
MDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDM0NGMTdBMjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJQzNDRjE3QTcxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUM0Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNENENjI5ODE4Mzgz
NzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuY3BwICovOyB9OworCQlDNENENjI5QjE4
MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBG
cmFtZVNuYXBzaG90dGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUM1MEI1NjE2MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE0
MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLzsgfTsKIAkJQzUwQjU2MTcx
MjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91
cFNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQzUwRDBFODIwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwRDBFODAwRkY0
MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovOyB9OwpAQCAtODc0MSw3ICs4
NzQwLDYgQEAKIAkJNjVBNjQwRjAwNTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhjZXB0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9j
a0V4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCTY1QkYwMjI5MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFtZU1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNv
bmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB1c2VzVGFi
cyA9IDA7IH07CiAJCTY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lVmlldy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Q0JGRUY4MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFt
ZVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lVmlldy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODk3Myw4ICs4OTcxLDYgQEAKIAkJN0M2MTM2
RjgxNzEwQzM1MjAwRkY0QTU3IC8qIEluRmlsZXNQYXJzZXIucG0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0g
SW5GaWxlc1BhcnNlci5wbTsgcGF0aCA9IHNjcmlwdHMvSW5GaWxlc1BhcnNlci5wbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M2MTM2RjkxNzEwQzM1MjAwRkY0QTU3IC8qIFN0YXRp
Y1N0cmluZy5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBTdGF0aWNTdHJpbmcucG07IHBhdGggPSBzY3Jp
cHRzL1N0YXRpY1N0cmluZy5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NDN0Uz
RDYxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gSUROU2NyaXB0V2hpdGVMaXN0LnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRnJhbWVTbmFwc2hv
dHRpbmdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDRTMwREE4MTcxQjYz
RDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZ01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0UxMkU5MEUxNUZBNUQzQTAwNUU0MTI2
IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHA7IHBhdGggPSBmaWx0
ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZVByaW9yaXR5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMjI3Niw2ICsxMjI3Miw4IEBACiAJCUMzQ0YxN0ExMTVCMDA2
M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzNDRjE3QTIxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDM0NGMTdBMzE1QjAw
NjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDNENENjI5ODE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFw
c2hvdHRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVT
bmFwc2hvdHRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNENENjI5OTE4
MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRnJhbWVTbmFwc2hvdHRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBH
cm91cFNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyb3VwU2V0
dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAwRkY0MjcyOTAw
QUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTYxNCw2ICsxNTYxMiw4IEBACiAJCQkJNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2
IC8qIEZyYW1lLmggKi8sCiAJCQkJOTc0QTg2MjAxNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlci5jcHAgKi8sCiAJCQkJOTc0QTg2MjExNEI3QURCQjAwM0ZEQzc2IC8q
IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oICovLAorCQkJCUM0Q0Q2Mjk4MTgzODM3NjYwMDdF
QkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgKi8sCisJCQkJQzRDRDYyOTkxODM4Mzc2NjAw
N0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi8sCiAJCQkJNjVBMjE0ODIwOTdBM0Y1MzAw
QjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgKi8sCiAJCQkJNjVBMjE0ODMwOTdBM0Y1MzAwQjkwNTBB
IC8qIEZyYW1lVHJlZS5oICovLAogCQkJCTY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFt
ZVZpZXcuY3BwICovLApAQCAtMTY1MjgsOSArMTY1MjgsNiBAQAogCQkJCUFCQUYyMjA3MEMwM0Ix
QzcwMEIwQkNGMCAvKiBDaHJvbWVNYWMubW0gKi8sCiAJCQkJQTcxODc4OEYwQjJEMDRBQzAwQTE2
RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovLAogCQkJCTkzQzA5QTdFMEIwNjRFRUYwMDVB
QkQ0RCAvKiBFdmVudEhhbmRsZXJNYWMubW0gKi8sCi0JCQkJNjVCRjAyM0MwOTc0ODE5MDAwQzQz
MTk2IC8qIEZyYW1lTWFjLm1tICovLAotCQkJCTdDRTMwREE4MTcxQjYzRDIwMEVDMzNFMSAvKiBG
cmFtZVNuYXBzaG90dGluZ01hYy5oICovLAotCQkJCTdDRTMwREE3MTcxQjYzRDIwMEVDMzNFMSAv
KiBGcmFtZVNuYXBzaG90dGluZ01hYy5tbSAqLywKIAkJCQkxQzI2NDk3QjBEN0UyNEVDMDBCRDEw
RjIgLyogUGFnZU1hYy5jcHAgKi8sCiAJCQkJRTFDMkYyNDgxNTMzQTIxMjAwODNGOTc0IC8qIFNl
dHRpbmdzTWFjLm1tICovLAogCQkJCUY1ODc4NTRDMDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3Jl
RnJhbWVWaWV3LmggKi8sCkBAIC0yMjEzNiw2ICsyMjEzMyw3IEBACiAJCQkJMUE1NjlDRjgwRDdF
MkI4MjAwN0MzOTgzIC8qIGNfY2xhc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZBMEQ3
RTJCODIwMDdDMzk4MyAvKiBjX2luc3RhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUNG
QzBEN0UyQjgyMDA3QzM5ODMgLyogY19ydW50aW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNENE
NjI5QjE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBNTY5Q0ZFMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDQjE2QzFBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0QjRDQzBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVk
Rm9udC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjk5Myw3ICsyMjk5MSw2IEBACiAJCQkJNjI4RDIx
NEUxMjEzMUVGNDAwNTVEQ0ZDIC8qIEZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxNzJBRjcwMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMEUwOTlFNjQ5MjAwNTZFNTgxIC8qIEZyYW1lU2VsZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk3Q0UzMERBQTE3MUI2M0QyMDBFQzMzRTEgLyogRnJh
bWVTbmFwc2hvdHRpbmdNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QTIxNDg1MDk3QTNGNTMw
MEI5MDUwQSAvKiBGcmFtZVRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1Q0JGRUZBMDk3NEY2
MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjA1QUIwMTIz
OTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjI3NSwxMCArMjYyNzIsOCBAQAogCQkJCTkzMkUxNjA5MEFGNTc4MzQwMDI1RjQwOCAvKiBG
cmFtZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMDAwRUJBMjExQkRBRkQ0MDBDNDc3
MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZC
QTc2NkUxNjY0MjdBODAwNUJFNUQxIC8qIEZyYW1lTG9hZFJlcXVlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTMzMDlFMEQwOTlFNjQ5MjAwNTZFNTgxIC8qIEZyYW1lU2VsZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTRBOEM5NkVCMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNl
bGVjdGlvbk1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdDRTMwREE5MTcxQjYzRDIwMEVDMzNF
MSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3OTY5REFE
MTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNjVBMjE0ODQwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFNEM5MUExMDE4MDIzNDM5MDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzc4NCw2ICsyNzc3OSw3IEBACiAJCQkJNTFFMEJCMzkw
REE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcy
NzdFNTIxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFjay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDNTBEMEU4MjBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDNENENjI5QTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVT
bmFwc2hvdHRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU1RTM4QzAxMDA0MEQ1RDAwQTU2
QkRCIC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjA5
REI0MTZBRjVGNkMwMDg1MzhFNyAvKiBTdG9yYWdlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzUxMDJEOTUwRkQ5QUEyRDAwRkFGRjA0IC8qIFN0b3JhZ2VTeW5jTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggY2MwMzY1
NTI2ZTMxNmUwNWQ1YjE1YmI3NDQ0YzNiYjJiY2ZhOTA1MC4uMTI4NjRiOTBlNjY4NDVlYzNkOGY3
MGFiZDllYmViZjU3NWRlMmFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAg
LTM2LDkgKzM2LDkgQEAKICNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9N
UHJpdmF0ZS5oIgogI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgorI2ltcG9ydCAiRHJhZ0lt
YWdlLmgiCiAjaW1wb3J0ICJGb250LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiRnJh
bWVTbmFwc2hvdHRpbmdNYWMuaCIKICNpbXBvcnQgIkhUTUxFbGVtZW50LmgiCiAjaW1wb3J0ICJI
VE1MTmFtZXMuaCIKICNpbXBvcnQgIkhUTUxQYXJzZXJJZGlvbXMuaCIKQEAgLTI4OSw3ICsyODks
NyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCogZXZlbnRU
YXJnZXQpCiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGZy
YW1lLT5ub2RlSW1hZ2Uobm9kZSkuZ2V0KCk7CisgICAgcmV0dXJuIFtjcmVhdGVEcmFnSW1hZ2VG
b3JOb2RlKCpmcmFtZSwgKm5vZGUpLmxlYWtSZWYoKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5T
QXJyYXkgKil0ZXh0UmVjdHMKQEAgLTMzNSw3ICszMzUsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+
IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCogZXZlbnRUYXJnZXQpCiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBXZWJDb3JlOjpyYW5nZUltYWdlKGZy
YW1lLCByYW5nZSwgZm9yY2VCbGFja1RleHQpOworICAgIHJldHVybiBbY3JlYXRlRHJhZ0ltYWdl
Rm9yUmFuZ2UoKmZyYW1lLCAqcmFuZ2UsIGZvcmNlQmxhY2tUZXh0KS5sZWFrUmVmKCkgYXV0b3Jl
bGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopdGV4dFJlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQu
Y3BwCmluZGV4IDlkMmUyNzUyZmRmMmI3YzY2NDJhMjQyNGY4ODA2M2VjOGE3MWM3YzguLjMwN2Zj
YzE1ZjdkMDgwOGZjZGVkNjQ5YTI3MmViYzBjYjY4MDM1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9h
cmQuY3BwCkBAIC0yNzcsMTAgKzI3NywxMSBAQCBEcmFnSW1hZ2VSZWYgQ2xpcGJvYXJkOjpjcmVh
dGVEcmFnSW1hZ2UoSW50UG9pbnQmIGxvY2F0aW9uKSBjb25zdAogCiAgICAgaWYgKG1fZHJhZ0lt
YWdlRWxlbWVudCkgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9kcmFnSW1hZ2VFbGVt
ZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPm5vZGVJ
bWFnZShtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZURyYWdJbWFnZUZvck5vZGUoKmZyYW1lLCAqbV9kcmFnSW1hZ2VFbGVtZW50KTsKICAgICB9CiAK
LSAgICByZXR1cm4gMDsgLy8gV2UgZG8gbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGNy
ZWF0ZSBhIGRyYWcgaW1hZ2UsIHVzZSB0aGUgZGVmYXVsdCBpY29uLgorICAgIC8vIFdlIGRvIG5v
dCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYSBkcmFnIGltYWdlLCB1c2UgdGhl
IGRlZmF1bHQgaWNvbi4KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NsaXBib2FyZE1hYy5tbQppbmRleCA3NmNhNmZjYTNlNDI0MDdiNWY4ZTdiMzVlNjU4NzM3
YzIxMTNlOGZiLi5hMDliMzBhNGE2NjgzYmExZmQ3ZmI0NWZhODliMmRiZWMwMGMzMjRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DbGlwYm9hcmRNYWMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCAi
Q2FjaGVkSW1hZ2UuaCIKICNpbXBvcnQgIkVsZW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lU25hcHNo
b3R0aW5nTWFjLmgiCisjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zNywxNiArMzcsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQ2xpcGJvYXJk
OjpkcmFnSW1hZ2UgaW4gQ2xpcGJvYXJkLmNwcCBkb2VzIG5vdCBoYW5kbGUgY29ycmVjdGx5LCBz
byBtdXN0IHJlc29sdmUgdGhhdCBhcyB3ZWxsLgogRHJhZ0ltYWdlUmVmIENsaXBib2FyZDo6Y3Jl
YXRlRHJhZ0ltYWdlKEludFBvaW50JiBsb2NhdGlvbikgY29uc3QKIHsKLSAgICBOU0ltYWdlICpy
ZXN1bHQgPSBuaWw7CisgICAgRHJhZ0ltYWdlUmVmIHJlc3VsdCA9IG5pbDsKICAgICBpZiAobV9k
cmFnSW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RyYWdJbWFn
ZUVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkgewotICAgICAgICAgICAgTlNSZWN0IGltYWdl
UmVjdDsKLSAgICAgICAgICAgIE5TUmVjdCBlbGVtZW50UmVjdDsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHNuYXBzaG90RHJhZ0ltYWdlKGZyYW1lLCBtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCksICZp
bWFnZVJlY3QsICZlbGVtZW50UmVjdCk7CisgICAgICAgICAgICBJbnRSZWN0IGltYWdlUmVjdDsK
KyAgICAgICAgICAgIEludFJlY3QgZWxlbWVudFJlY3Q7CisgICAgICAgICAgICByZXN1bHQgPSBj
cmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSgqZnJhbWUsICptX2RyYWdJbWFnZUVsZW1lbnQsIGltYWdl
UmVjdCwgZWxlbWVudFJlY3QpOwogICAgICAgICAgICAgLy8gQ2xpZW50IHNwZWNpZmllcyBwb2lu
dCByZWxhdGl2ZSB0byBlbGVtZW50LCBub3QgdGhlIHdob2xlIGltYWdlLCB3aGljaCBtYXkgaW5j
bHVkZSBjaGlsZAogICAgICAgICAgICAgLy8gbGF5ZXJzIHNwcmVhZCBvdXQgYWxsIG92ZXIgdGhl
IHBsYWNlLgotICAgICAgICAgICAgbG9jYXRpb24uc2V0WChlbGVtZW50UmVjdC5vcmlnaW4ueCAt
IGltYWdlUmVjdC5vcmlnaW4ueCArIG1fZHJhZ0xvY2F0aW9uLngoKSk7Ci0gICAgICAgICAgICBs
b2NhdGlvbi5zZXRZKGltYWdlUmVjdC5zaXplLmhlaWdodCAtIChlbGVtZW50UmVjdC5vcmlnaW4u
eSAtIGltYWdlUmVjdC5vcmlnaW4ueSArIG1fZHJhZ0xvY2F0aW9uLnkoKSkpOworICAgICAgICAg
ICAgbG9jYXRpb24uc2V0WChlbGVtZW50UmVjdC54KCkgLSBpbWFnZVJlY3QueCgpICsgbV9kcmFn
TG9jYXRpb24ueCgpKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNldFkoaW1hZ2VSZWN0LmhlaWdo
dCgpIC0gKGVsZW1lbnRSZWN0LnkoKSAtIGltYWdlUmVjdC55KCkgKyBtX2RyYWdMb2NhdGlvbi55
KCkpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9kcmFnSW1hZ2UpIHsKICAgICAgICAg
cmVzdWx0ID0gbV9kcmFnSW1hZ2UtPmltYWdlKCktPmdldE5TSW1hZ2UoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNGMyODk1NzllNzEwM2IwNTI2YzljZTFlY2Nk
OWJiZTEzZWFhNTBiMi4uMGVkODdhYWVlZWRjYjBjODAyZjMxYTQxODAwNjMwMTQ1MDIyMWVmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnQuaCIKICNpbmNs
dWRlICJEcmFnRGF0YS5oIgorI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkRyYWdT
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiRHJhZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCkBA
IC03NzksNyArNzgwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBz
cmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICAgICAgfQogICAg
ICAgICBtX2NsaWVudC53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlv
blNlbGVjdGlvbiwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKICAgICAgICAgaWYgKCFkcmFnSW1h
Z2UpIHsKLSAgICAgICAgICAgIGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlv
bihzcmMuZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCksIERyYWdJbWFnZUFscGhhKTsKKyAgICAgICAg
ICAgIGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihjcmVhdGVEcmFnSW1h
Z2VGb3JTZWxlY3Rpb24oc3JjKSwgRHJhZ0ltYWdlQWxwaGEpOwogICAgICAgICAgICAgZHJhZ0xv
YyA9IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKHNyYyk7CiAgICAgICAgICAgICBtX2RyYWdPZmZz
ZXQgPSBJbnRQb2ludChkcmFnT3JpZ2luLngoKSAtIGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnko
KSAtIGRyYWdMb2MueSgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA1ZjNm
NzhhZGE4NTg5OTc0MDAzNmI5MzJhMTU1MDkzM2ZkODU3NTQyLi5jMGRlMDZiMTQ5NTdhNzczOTli
N2JiMzJmYzc1MDk4ZjYxYjkxYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTY2LDEwOCAr
OTY2LDQgQEAgYm9vbCBGcmFtZTo6aXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdJ
TikKLXN0cnVjdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgewotICAgIFNjb3BlZEZyYW1lUGFp
bnRpbmdTdGF0ZShGcmFtZSogZnJhbWUsIE5vZGUqIG5vZGUpCi0gICAgICAgIDogZnJhbWUoZnJh
bWUpCi0gICAgICAgICwgbm9kZShub2RlKQotICAgICAgICAsIHBhaW50QmVoYXZpb3IoZnJhbWUt
PnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpKQotICAgICAgICAsIGJhY2tncm91bmRDb2xvcihmcmFt
ZS0+dmlldygpLT5iYXNlQmFja2dyb3VuZENvbG9yKCkpCi0gICAgewotICAgICAgICBBU1NFUlQo
IW5vZGUgfHwgbm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmIChub2RlKQotICAgICAgICAg
ICAgbm9kZS0+cmVuZGVyZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOwotICAgIH0KLQotICAg
IH5TY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoKQotICAgIHsKLSAgICAgICAgaWYgKG5vZGUgJiYg
bm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURy
YWdTdGF0ZShmYWxzZSk7Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Io
cGFpbnRCZWhhdmlvcik7Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5k
Q29sb3IoYmFja2dyb3VuZENvbG9yKTsKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRv
RHJhdygwKTsKLSAgICB9Ci0KLSAgICBGcmFtZSogZnJhbWU7Ci0gICAgTm9kZSogbm9kZTsKLSAg
ICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7Ci0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9y
OwotfTsKLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAg
ICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
Y29uc3QgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKHRoaXMsIG5vZGUpOwotCi0gICAg
bV92aWV3LT5zZXRQYWludEJlaGF2aW9yKHN0YXRlLnBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2
aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLQotICAgIC8vIFdoZW4gZ2VuZXJhdGluZyB0
aGUgZHJhZyBpbWFnZSBmb3IgYW4gZWxlbWVudCwgaWdub3JlIHRoZSBkb2N1bWVudCBiYWNrZ3Jv
dW5kLgotICAgIG1fdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJl
bnQpOwotICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKLSAgICBtX3ZpZXctPnNldE5vZGVUb0Ry
YXcobm9kZSk7IC8vIEVuYWJsZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZS4KLQotICAg
IC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2lu
YWwgcmVuZGVyZXIuCi0gICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAg
aWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBMYXlvdXRSZWN0
IHRvcExldmVsUmVjdDsKLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDE7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgZGV2
aWNlU2NhbGVGYWN0b3IgPSBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgcGFpbnRp
bmdSZWN0LnNldFdpZHRoKHBhaW50aW5nUmVjdC53aWR0aCgpICogZGV2aWNlU2NhbGVGYWN0b3Ip
OwotICAgIHBhaW50aW5nUmVjdC5zZXRIZWlnaHQocGFpbnRpbmdSZWN0LmhlaWdodCgpICogZGV2
aWNlU2NhbGVGYWN0b3IpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZm
ZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZh
Y3RvciwgQ29sb3JTcGFjZURldmljZVJHQikpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGlu
Z1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNs
aXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5tYXhYKCksIHBhaW50aW5nUmVjdC5tYXhZ
KCkpKTsKLQotICAgIG1fdmlldy0+cGFpbnRDb250ZW50cyhidWZmZXItPmNvbnRleHQoKSwgcGFp
bnRpbmdSZWN0KTsKLQotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFn
ZSgpOwotCi0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3Jp
cHRpb24ocmVuZGVyZXItPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwotI2lmIEVO
QUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5z
ZXRJbWFnZU9yaWVudGF0aW9uRW51bShyZW5kZXJlci0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9u
KCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZS5n
ZXQoKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci19Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6
ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoIXNlbGVjdGlvbigpLmlzUmFuZ2Uo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBTY29wZWRGcmFtZVBhaW50aW5nU3Rh
dGUgc3RhdGUodGhpcywgMCk7Ci0gICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVo
YXZpb3JTZWxlY3Rpb25Pbmx5KTsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7Ci0KLSAgICBJ
bnRSZWN0IHBhaW50aW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uKCkuYm91bmRz
KCkpOwotCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOwotICAgIGlmIChtX3BhZ2Up
Ci0gICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rvcigp
OwotICAgIHBhaW50aW5nUmVjdC5zZXRXaWR0aChwYWludGluZ1JlY3Qud2lkdGgoKSAqIGRldmlj
ZVNjYWxlRmFjdG9yKTsKLSAgICBwYWludGluZ1JlY3Quc2V0SGVpZ2h0KHBhaW50aW5nUmVjdC5o
ZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwg
ZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKLSAgICBpZiAoIWJ1ZmZl
cikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgt
cGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOwotICAgIGJ1ZmZlci0+Y29udGV4
dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QubWF4WCgpLCBwYWludGluZ1Jl
Y3QubWF4WSgpKSk7Ci0KLSAgICBtX3ZpZXctPnBhaW50Q29udGVudHMoYnVmZmVyLT5jb250ZXh0
KCksIHBhaW50aW5nUmVjdCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5j
b3B5SW1hZ2UoKTsKLSAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdl
dCgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7Ci19Ci0KLSNlbmRpZgotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggODQwN2U5ZTJiY2YzZWVmZWRk
YmYwNTMxYmU2Y2U5Mjc5NDU3Mjc3Yy4uNWYxODY2ZmUyMDJmY2ZlYTY0NDJjMGJiZWY4MjBmNTZl
ZDIzZTc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjksNyArMjksNiBAQAogI2RlZmluZSBGcmFt
ZV9oCiAKICNpbmNsdWRlICJBZGp1c3RWaWV3U2l6ZU9yTm90LmgiCi0jaW5jbHVkZSAiRHJhZ0lt
YWdlLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC01OCwxMSArNTcsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIEVkaXRvcjsKICAgICBjbGFzcyBFbGVtZW50OwogICAgIGNsYXNzIEV2
ZW50SGFuZGxlcjsKKyAgICBjbGFzcyBGbG9hdFNpemU7CiAgICAgY2xhc3MgRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyOwogICAgIGNsYXNzIEZyYW1lU2VsZWN0aW9uOwogICAgIGNsYXNzIEZyYW1l
VmlldzsKICAgICBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTFRh
YmxlQ2VsbEVsZW1lbnQ7CisgICAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAgICAgY2xhc3MgSW50UmVj
dDsKICAgICBjbGFzcyBNYWluRnJhbWU7CiAgICAgY2xhc3MgTm9kZTsKQEAgLTE3Nyw5ICsxNzgs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgU3RyaW5nIGRpc3BsYXlTdHJpbmdN
b2RpZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKLSAgICAgICAgRHJhZ0lt
YWdlUmVmIG5vZGVJbWFnZShOb2RlKik7Ci0gICAgICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2VG
b3JTZWxlY3Rpb24oKTsKLQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9u
Rm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwogICAgICAgICBEb2N1bWVudCog
ZG9jdW1lbnRBdFBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCk7CiAgICAgICAgIFBh
c3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ZTA1Y2U2NWYxZDNhM2JmZGU4ZDM3Zjc1MTRlYjgzNzI3Yjg5NGRlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTAsMCArMSwx
MzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisg
KiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRnJhbWVT
bmFwc2hvdHRpbmcuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUu
aCIKKyNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgor
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTY29wZWRGcmFt
ZVBhaW50aW5nU3RhdGUgeworICAgIFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZShGcmFtZSYgZnJh
bWUsIE5vZGUqIG5vZGUpCisgICAgICAgIDogZnJhbWUoZnJhbWUpCisgICAgICAgICwgbm9kZShu
b2RlKQorICAgICAgICAsIHBhaW50QmVoYXZpb3IoZnJhbWUudmlldygpLT5wYWludEJlaGF2aW9y
KCkpCisgICAgICAgICwgYmFja2dyb3VuZENvbG9yKGZyYW1lLnZpZXcoKS0+YmFzZUJhY2tncm91
bmRDb2xvcigpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPnJlbmRlcmVy
KCkpOworICAgIH0KKworICAgIH5TY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoKQorICAgIHsKKyAg
ICAgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOworICAg
ICAgICBmcmFtZS52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9y
KTsKKyAgICAgICAgZnJhbWUudmlldygpLT5zZXROb2RlVG9EcmF3KG51bGxwdHIpOworICAgIH0K
KworICAgIEZyYW1lJiBmcmFtZTsKKyAgICBOb2RlKiBub2RlOworICAgIFBhaW50QmVoYXZpb3Ig
cGFpbnRCZWhhdmlvcjsKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Cit9OworCitzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1lJiBmcmFtZSwgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBG
cmFtZVZpZXc6OlNlbGVjdGlvbkluU25hcHNob3Qgc2hvdWxkSW5jbHVkZVNlbGVjdGlvbiA9IEZy
YW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsKKyAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0
aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpCisgICAgICAgIHNob3VsZEluY2x1ZGVT
ZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rpb247CisKKyAgICBGcmFtZVZpZXc6
OkNvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IGNvb3JkaW5hdGVTcGFjZSA9IEZyYW1lVmlldzo6
RG9jdW1lbnRDb29yZGluYXRlczsKKyAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0lu
Vmlld0Nvb3JkaW5hdGVzKQorICAgICAgICBjb29yZGluYXRlU3BhY2UgPSBGcmFtZVZpZXc6OlZp
ZXdDb29yZGluYXRlczsKKworICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBzdGF0
ZShmcmFtZSwgbnVsbHB0cik7CisKKyAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IgPSBz
dGF0ZS5wYWludEJlaGF2aW9yOworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRm9y
Y2VCbGFja1RleHQpCisgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZvcmNl
QmxhY2tUZXh0OworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rp
b25Pbmx5KQorICAgICAgICBwYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9u
bHk7CisKKyAgICAvLyBPdGhlciBwYWludCBiZWhhdmlvcnMgYXJlIHNldCBieSBwYWludENvbnRl
bnRzRm9yU25hcHNob3QuCisgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKHBhaW50
QmVoYXZpb3IpOworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworCisgICAg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBmcmFtZS5wYWdlKCkgPyBmcmFtZS5wYWdlKCktPmRl
dmljZVNjYWxlRmFjdG9yKCkgOiAxOworICAgIEludFJlY3QgdXNlZFJlY3QoaW1hZ2VSZWN0KTsK
KyAgICB1c2VkUmVjdC5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodXNlZFJlY3Qu
c2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgaWYg
KCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJ1ZmZlci0+Y29udGV4dCgp
LT50cmFuc2xhdGUoLXVzZWRSZWN0LngoKSwgLXVzZWRSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5j
b250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHVzZWRSZWN0Lm1heFgoKSwgdXNlZFJlY3Qu
bWF4WSgpKSk7CisKKyAgICBmcmFtZS52aWV3KCktPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChi
dWZmZXItPmNvbnRleHQoKSwgdXNlZFJlY3QsIHNob3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3Jk
aW5hdGVTcGFjZSk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIFNuYXBzaG90T3B0aW9u
cyBvcHRpb25zKQoreworICAgIGlmICghZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZvcmNlIHBhaW50aW5nIG9mIG9ubHkgdGhl
IHNlbGVjdGlvbiBhcmVhLgorICAgIG9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zUGFpbnRTZWxl
Y3Rpb25Pbmx5OworICAgIEludFJlY3Qgc2VsZWN0aW9uUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
ZnJhbWUuc2VsZWN0aW9uKCkuYm91bmRzKCkpOworICAgIHJldHVybiBzbmFwc2hvdEZyYW1lUmVj
dChmcmFtZSwgc2VsZWN0aW9uUmVjdCwgb3B0aW9ucyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiBmcmFtZSwgTm9kZSYgbm9kZSkKK3sKKyAg
ICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBpZiAoIW5vZGUucmVuZGVy
ZXIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBjb25zdCBTY29wZWRGcmFtZVBh
aW50aW5nU3RhdGUgc3RhdGUoZnJhbWUsICZub2RlKTsKKworICAgIGZyYW1lLnZpZXcoKS0+c2V0
QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIGZyYW1lLnZpZXco
KS0+c2V0Tm9kZVRvRHJhdygmbm9kZSk7CisKKyAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsK
KyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3Qobm9kZS5yZW5k
ZXJlcigpLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworICAgIHJldHVybiBzbmFw
c2hvdEZyYW1lUmVjdChmcmFtZSwgcGFpbnRpbmdSZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmEyNDg5N2Q1NzA0NWNhNGFkMmQ0ZGQwMDNmMmE3Nzk5N2I1NDBlNTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKQEAgLTAsMCArMSw1
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0IChDKSAy
MDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29w
eXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAq
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZyYW1lU25hcHNob3R0aW5nX2gKKyNkZWZpbmUgRnJh
bWVTbmFwc2hvdHRpbmdfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOwor
Y2xhc3MgSW50UmVjdDsKK2NsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgTm9kZTsKKworZW51bSB7
CisgICAgU25hcHNob3RPcHRpb25zTm9uZSA9IDAsCisgICAgU25hcHNob3RPcHRpb25zRXhjbHVk
ZVNlbGVjdGlvbkhpZ2hsaWdodGluZyA9IDEgPDwgMCwKKyAgICBTbmFwc2hvdE9wdGlvbnNQYWlu
dFNlbGVjdGlvbk9ubHkgPSAxIDw8IDEsCisgICAgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRp
bmF0ZXMgPSAxIDw8IDIsCisgICAgU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgPSAxIDw8
IDMsCit9OwordHlwZWRlZiB1bnNpZ25lZCBTbmFwc2hvdE9wdGlvbnM7CisKK3N0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0
JiwgU25hcHNob3RPcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZSk7CitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYsIE5vZGUmKTsKK3N0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmLCBTbmFwc2hvdE9wdGlv
bnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRnJhbWVTbmFwc2hvdHRpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRnJhbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmYjFmOTFiY2JkNmYwNjI3YTYxZDFl
OTRkZTliNzE0YThiNTQzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGcmFtZS5oIgotCi0jaW1wb3J0
ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbXBvcnQgIkZy
YW1lU2VsZWN0aW9uLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgotI2ltcG9y
dCAiRnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1EcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewot
ICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsgLy8gZm9yY2VzIHN0eWxlIHJlY2FsYwotCi0gICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5k
ZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsK
LSAgICBOU1JlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+
cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKLQotICAgIG1fdmlldy0+c2V0Tm9kZVRv
RHJhdyhub2RlKTsgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0gICAg
TlNJbWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdCh0aGlzLCBwYWludGluZ1JlY3QpOwotICAg
IG1fdmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLURy
YWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoIXNl
bGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gc2Vs
ZWN0aW9uSW1hZ2UodGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiZmFiNjdlNzY1ODE0YWU2Y2JjOTAxYmFkNDRhZmQxNTNmODYyYTIy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGcmFtZVNuYXBzaG90dGluZ01hY19oCi0j
ZGVmaW5lIEZyYW1lU25hcHNob3R0aW5nTWFjX2gKLQotT0JKQ19DTEFTUyBOU0ltYWdlOwotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZyYW1lOwotY2xhc3MgUmFuZ2U7Ci1jbGFzcyBO
b2RlOwotCi1OU0ltYWdlKiBzZWxlY3Rpb25JbWFnZShGcmFtZSosIGJvb2wgZm9yY2VCbGFja1Rl
eHQgPSBmYWxzZSk7Ci1OU0ltYWdlKiByYW5nZUltYWdlKEZyYW1lKiwgUmFuZ2UqLCBib29sIGZv
cmNlQmxhY2tUZXh0ID0gZmFsc2UpOwotTlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoRnJhbWUq
LCBOb2RlKiwgTlNSZWN0KiBpbWFnZVJlY3QsIE5TUmVjdCogZWxlbWVudFJlY3QpOwotTlNJbWFn
ZSogaW1hZ2VGcm9tUmVjdChGcmFtZSosIE5TUmVjdCk7Ci0KLX0KLQotI2VuZGlmIC8vIEZyYW1l
U25hcHNob3R0aW5nTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Zy
YW1lU25hcHNob3R0aW5nTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFw
c2hvdHRpbmdNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MmMyZjIzY2Ix
N2JkMDNkNGU4YTVlZTE5NTE0YWM0MzkxZDE5ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hv
dHRpbmdNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5
YWtvdiAoYXBAbnlwb3AuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCi0KLSNpbXBvcnQgIkJsb2NrRXhj
ZXB0aW9ucy5oIgotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCi0jaW1w
b3J0ICJGcmFtZVNlbGVjdGlvbi5oIgotI2ltcG9ydCAiRnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJH
cmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIlJhbmdlLmgiCi0jaW1wb3J0ICJSZW5kZXJWaWV3
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTlNJbWFnZSogaW1hZ2VGcm9tUmVjdChGcmFt
ZSogZnJhbWUsIE5TUmVjdCByZWN0KQotewotICAgIFBhaW50QmVoYXZpb3Igb2xkQmVoYXZpb3Ig
PSBmcmFtZS0+dmlldygpLT5wYWludEJlaGF2aW9yKCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0
UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRp
bmdMYXllcnMpOwotICAgIAotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICAK
LSAgICBOU0ltYWdlKiByZXN1bHRJbWFnZSA9IFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoU2l6
ZTpyZWN0LnNpemVdIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBpZiAocmVjdC5zaXplLndpZHRo
ICE9IDAgJiYgcmVjdC5zaXplLmhlaWdodCAhPSAwKSB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1k
ZWNsYXJhdGlvbnMiCi0gICAgICAgIFtyZXN1bHRJbWFnZSBzZXRGbGlwcGVkOllFU107Ci0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgICAgIFtyZXN1bHRJbWFnZSBsb2NrRm9jdXNd
OwotCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoKENHQ29udGV4dFJl
ZilbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdKTsgICAg
ICAgIAotICAgICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotICAgICAgICBncmFwaGljc0Nv
bnRleHQudHJhbnNsYXRlKC1yZWN0Lm9yaWdpbi54LCAtcmVjdC5vcmlnaW4ueSk7Ci0gICAgICAg
IGZyYW1lLT52aWV3KCktPnBhaW50Q29udGVudHMoJmdyYXBoaWNzQ29udGV4dCwgSW50UmVjdChy
ZWN0KSk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICAgICAgW3Jl
c3VsdEltYWdlIHVubG9ja0ZvY3VzXTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0j
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9u
cyIKLSAgICAgICAgW3Jlc3VsdEltYWdlIHNldEZsaXBwZWQ6Tk9dOwotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAotICAgIH0KLSAgICAKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJl
aGF2aW9yKG9sZEJlaGF2aW9yKTsKLSAgICByZXR1cm4gcmVzdWx0SW1hZ2U7Ci0gICAgCi0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICAKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQ
YWludEJlaGF2aW9yKG9sZEJlaGF2aW9yKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi1OU0ltYWdl
KiBzZWxlY3Rpb25JbWFnZShGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCi17Ci0g
ICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9u
T25seSB8IChmb3JjZUJsYWNrVGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDAp
KTsKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgTlNJbWFnZSog
cmVzdWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgZnJhbWUtPnNlbGVjdGlvbigpLmJvdW5kcygp
KTsKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JOb3Jt
YWwpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLU5TSW1hZ2UgKnJhbmdlSW1hZ2UoRnJhbWUq
IGZyYW1lLCBSYW5nZSogcmFuZ2UsIGJvb2wgZm9yY2VCbGFja1RleHQpCi17Ci0gICAgZnJhbWUt
PnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IChm
b3JjZUJsYWNrVGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsKLSAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgUmVuZGVyVmlldyogdmlldyA9
IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlLT5zdGFydFBvc2l0aW9uKCk7Ci0g
ICAgUG9zaXRpb24gY2FuZGlkYXRlID0gc3RhcnQuZG93bnN0cmVhbSgpOwotICAgIGlmIChjYW5k
aWRhdGUuZGVwcmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKS0+cmVu
ZGVyZXIoKSkKLSAgICAgICAgc3RhcnQgPSBjYW5kaWRhdGU7Ci0KLSAgICBQb3NpdGlvbiBlbmQg
PSByYW5nZS0+ZW5kUG9zaXRpb24oKTsKLSAgICBjYW5kaWRhdGUgPSBlbmQudXBzdHJlYW0oKTsK
LSAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0
ZWROb2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgIGVuZCA9IGNhbmRpZGF0ZTsKLQotICAgIGlm
IChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkgfHwgc3RhcnQgPT0gZW5kKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgUmVuZGVyT2JqZWN0KiBzYXZlZFN0YXJ0UmVuZGVyZXI7Ci0g
ICAgaW50IHNhdmVkU3RhcnRPZmZzZXQ7Ci0gICAgUmVuZGVyT2JqZWN0KiBzYXZlZEVuZFJlbmRl
cmVyOwotICAgIGludCBzYXZlZEVuZE9mZnNldDsKLSAgICB2aWV3LT5nZXRTZWxlY3Rpb24oc2F2
ZWRTdGFydFJlbmRlcmVyLCBzYXZlZFN0YXJ0T2Zmc2V0LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZl
ZEVuZE9mZnNldCk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydC5k
ZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgIGlmICghc3RhcnRSZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmQu
ZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIWVuZFJlbmRlcmVyKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgdmlldy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIs
IHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJlbmRlcmVyLCBlbmQuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOwotICAgIE5T
SW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QoZnJhbWUsIHZpZXctPnNlbGVjdGlvbkJvdW5k
cygpKTsKLSAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc2F2ZWRTdGFydFJlbmRlcmVyLCBzYXZlZFN0
YXJ0T2Zmc2V0LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZlZEVuZE9mZnNldCwgUmVuZGVyVmlldzo6
UmVwYWludE5vdGhpbmcpOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQ
YWludEJlaGF2aW9yTm9ybWFsKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLU5TSW1hZ2Uq
IHNuYXBzaG90RHJhZ0ltYWdlKEZyYW1lKiBmcmFtZSwgTm9kZSogbm9kZSwgTlNSZWN0KiBpbWFn
ZVJlY3QsIE5TUmVjdCogZWxlbWVudFJlY3QpCi17Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAKLSAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOyAgICAvLyBt
YXJrIGRyYWdnZWQgbm9kZXMgKHNvIHRoZXkgcGljayB1cCB0aGUgcmlnaHQgQ1NTKQotICAgIGZy
YW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsgIC8vIGZvcmNlcyBzdHlsZSByZWNhbGMg
LSBuZWVkZWQgc2luY2UgY2hhbmdpbmcgdGhlIGRyYWcgc3RhdGUgbWlnaHQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbXBseSBuZXcgc3R5bGVzLCBwbHVzIEpT
IGNvdWxkIGhhdmUgY2hhbmdlZCBvdGhlciB0aGluZ3MKLQotCi0gICAgLy8gRG9jdW1lbnQ6OnVw
ZGF0ZUxheW91dCBtYXkgaGF2ZSBibG93biBhd2F5IHRoZSBvcmlnaW5hbCBSZW5kZXJFbGVtZW50
LgotICAgIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAg
TlNSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50
aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBpZiAoTlNJc0VtcHR5UmVjdChwYWlu
dGluZ1JlY3QpKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0
Tm9kZVRvRHJhdyhub2RlKTsgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2Rl
Ci0gICAgTlNJbWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgcGFpbnRpbmdSZWN0
KTsKLSAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsKLSAgICBmcmFtZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJh
dygwKTsKLQotICAgIGlmIChlbGVtZW50UmVjdCkKLSAgICAgICAgKmVsZW1lbnRSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdCh0b3BMZXZlbFJlY3QpOwotICAgIGlmIChpbWFnZVJlY3QpCi0gICAg
ICAgICppbWFnZVJlY3QgPSBwYWludGluZ1JlY3Q7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93
aW4vRnJhbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCmlu
ZGV4IDVhYWYzYTY3OGM5ZTU0M2FmNjgzYjM3YWQ1YjA2Y2NlMDY0NDNiOWYuLjk2NzRmMTc2OGY1
ZGQ4NDI1YjYwYzdhZjE2ZjBmMWY3ZDZmNzYzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvd2luL0ZyYW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFt
ZVdpbi5jcHAKQEAgLTU3LDMwICs1Nyw0IEBAIEdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21T
ZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQogICAgIHJldHVybiBp
bWFnZTsKIH0KIAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQot
ewotICAgIGlmIChzZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiBpbWFnZUZy
b21TZWxlY3Rpb24odGhpcywgZmFsc2UpLmxlYWsoKTsKLQotICAgIHJldHVybiAwOwotfQotCi1E
cmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewotICAgIGRvY3VtZW50
KCktPnVwZGF0ZUxheW91dCgpOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUt
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBp
eGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0
KSk7Ci0KLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFs
IHN1Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIEdESU9iamVjdDxIQklUTUFQPiByZXN1bHQgPSBp
bWFnZUZyb21SZWN0KHRoaXMsIHBhaW50aW5nUmVjdCk7Ci0gICAgbV92aWV3LT5zZXROb2RlVG9E
cmF3KDApOwotCi0gICAgcmV0dXJuIHJlc3VsdC5sZWFrKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCmluZGV4IDNhMjcyM2U2M2Q2ZDdl
N2VjMDQ0Y2IxMmYyZWE3YmQwNmNmZTY1OWYuLjI2OTcyNWMxZjliOWI4MGQ1NzgxNDg0ZjkzMWFi
MjVkZDNhZTMzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2lu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEludFJlY3Q7CiAKIEdESU9iamVjdDxIQklUTUFQPiBp
bWFnZUZyb21SZWN0KGNvbnN0IEZyYW1lKiwgSW50UmVjdCYpOwotR0RJT2JqZWN0PEhCSVRNQVA+
IGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSosIGJvb2wgZm9yY2VXaGl0ZVRleHQpOworR0RJT2Jq
ZWN0PEhCSVRNQVA+IGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSosIGJvb2wgZm9yY2VCbGFja1Rl
eHQpOwogdm9pZCBjb21wdXRlUGFnZVJlY3RzRm9yRnJhbWUoRnJhbWUqLCBjb25zdCBJbnRSZWN0
JiBwcmludFJlY3QsIGZsb2F0IGhlYWRlckhlaWdodCwgZmxvYXQgZm9vdGVySGVpZ2h0LCBmbG9h
dCB1c2VyU2NhbGVGYWN0b3IsIFZlY3RvcjxJbnRSZWN0PiYgb3V0UGFnZXMsIGludCYgb3V0UGFn
ZUhlaWdodCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnSW1hZ2UuY3BwCmluZGV4IGI4MWFmZDU3OWU4MjkzZWVmYTJiYTkzYjliYjU1YzFmNTA3NmNm
NDcuLmU2NTczOTliMzIzODk1NmVmNDFjMTlmMWQxOTZmNzUzODQyMmMyYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0yOCwyOSArMjgsMzcgQEAKIAogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZy
YW1lU25hcHNob3R0aW5nLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5o
IgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAor
CiBEcmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiBpbWFnZSwg
Y29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBmbG9h
dCBoZWlnaHRSZXNpemVSYXRpbyA9IDAuMGY7CiAgICAgZmxvYXQgd2lkdGhSZXNpemVSYXRpbyA9
IDAuMGY7CiAgICAgZmxvYXQgcmVzaXplUmF0aW8gPSAtMS4wZjsKICAgICBJbnRTaXplIG9yaWdp
bmFsU2l6ZSA9IGRyYWdJbWFnZVNpemUoaW1hZ2UpOwotICAgIAorCiAgICAgaWYgKHNyY1NpemUu
d2lkdGgoKSA+IHNpemUud2lkdGgoKSkgewogICAgICAgICB3aWR0aFJlc2l6ZVJhdGlvID0gc2l6
ZS53aWR0aCgpIC8gKGZsb2F0KXNyY1NpemUud2lkdGgoKTsKICAgICAgICAgcmVzaXplUmF0aW8g
PSB3aWR0aFJlc2l6ZVJhdGlvOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzcmNTaXplLmhlaWdo
dCgpID4gc2l6ZS5oZWlnaHQoKSkgewogICAgICAgICBoZWlnaHRSZXNpemVSYXRpbyA9IHNpemUu
aGVpZ2h0KCkgLyAoZmxvYXQpc3JjU2l6ZS5oZWlnaHQoKTsKICAgICAgICAgaWYgKChyZXNpemVS
YXRpbyA8IDAuMGYpIHx8IChyZXNpemVSYXRpbyA+IGhlaWdodFJlc2l6ZVJhdGlvKSkKICAgICAg
ICAgICAgIHJlc2l6ZVJhdGlvID0gaGVpZ2h0UmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAg
ICAgaWYgKHNyY1NpemUgPT0gb3JpZ2luYWxTaXplKQogICAgICAgICByZXR1cm4gcmVzaXplUmF0
aW8gPiAwLjBmID8gc2NhbGVEcmFnSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZShyZXNpemVSYXRpbywg
cmVzaXplUmF0aW8pKSA6IGltYWdlOwotICAgIAorCiAgICAgLy8gVGhlIGltYWdlIHdhcyBzY2Fs
ZWQgaW4gdGhlIHdlYnBhZ2Ugc28gYXQgbWluaW11bSB3ZSBtdXN0IGFjY291bnQgZm9yIHRoYXQg
c2NhbGluZwogICAgIGZsb2F0IHNjYWxleCA9IHNyY1NpemUud2lkdGgoKSAvIChmbG9hdClvcmln
aW5hbFNpemUud2lkdGgoKTsKICAgICBmbG9hdCBzY2FsZXkgPSBzcmNTaXplLmhlaWdodCgpIC8g
KGZsb2F0KW9yaWdpbmFsU2l6ZS5oZWlnaHQoKTsKQEAgLTU4LDE0ICs2NiwxNTQgQEAgRHJhZ0lt
YWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIGMKICAgICAgICAgc2NhbGV4ICo9IHJlc2l6ZVJhdGlvOwogICAgICAg
ICBzY2FsZXkgKj0gcmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHNjYWxl
RHJhZ0ltYWdlKGltYWdlLCBGbG9hdFNpemUoc2NhbGV4LCBzY2FsZXkpKTsKIH0KIAorc3RydWN0
IFNjb3BlZE5vZGVEcmFnU3RhdGUgeworICAgIFNjb3BlZE5vZGVEcmFnU3RhdGUoRnJhbWUmIGZy
YW1lLCBOb2RlJiBub2RlKQorICAgICAgICA6IGZyYW1lKGZyYW1lKQorICAgICAgICAsIG5vZGUo
bm9kZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChub2RlLnJlbmRlcmVyKCkpOworICAgICAgICBu
b2RlLnJlbmRlcmVyKCktPnVwZGF0ZURyYWdTdGF0ZSh0cnVlKTsKKyAgICAgICAgZnJhbWUuZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgfQorCisgICAgflNjb3BlZE5vZGVEcmFnU3Rh
dGUoKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUucmVuZGVyZXIoKSkgeworICAgICAgICAgICAg
bm9kZS5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOworICAgICAgICAgICAgZnJh
bWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBG
cmFtZSYgZnJhbWU7CisgICAgTm9kZSYgbm9kZTsKK307CisKK3N0YXRpYyBEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
c25hcHNob3QsIE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFzbmFwc2hvdCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRp
b247CisjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAgICBpZiAobm9kZSkgewor
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAg
ICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IG9yaWVudGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHJlbmRlcmVyLT5zaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgb3JpZW50YXRpb24uc2V0SW1hZ2VP
cmllbnRhdGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAg
ICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyNlbmRpZgorICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBzbmFwc2hvdC0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29weUlt
YWdlTW9kZSgpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBvcmllbnRhdGlv
bik7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiBmcmFt
ZSwgTm9kZSYgbm9kZSkKK3sKKyAgICBTY29wZWROb2RlRHJhZ1N0YXRlIGVuYWJsZURyYWcoZnJh
bWUsIG5vZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBz
bmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9t
U25hcHNob3Qoc3RkOjptb3ZlKHNuYXBzaG90KSwgJm5vZGUpOworfQorCitEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNr
VGV4dCkKK3sKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucyA9IGZvcmNlQmxhY2tUZXh0ID8g
U25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgOiBTbmFwc2hvdE9wdGlvbnNOb25lOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdFNlbGVjdGlv
bihmcmFtZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dChzdGQ6Om1vdmUoc25hcHNob3QpLCBudWxscHRyKTsKK30KKworc3RydWN0IFNjb3BlZEZyYW1l
U2VsZWN0aW9uU3RhdGUgeworICAgIFNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUoRnJhbWUmIGZy
YW1lKQorICAgICAgICA6IGZyYW1lKGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKFJlbmRlclZp
ZXcqIHJvb3QgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJvb3QtPmdl
dFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydE9mZnNldCwgZW5kUmVuZGVyZXIsIGVuZE9m
ZnNldCk7CisgICAgfQorCisgICAgflNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUoKQorICAgIHsK
KyAgICAgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKSkK
KyAgICAgICAgICAgIHJvb3QtPnNldFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydE9mZnNl
dCwgZW5kUmVuZGVyZXIsIGVuZE9mZnNldCwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOwor
ICAgIH0KKworICAgIEZyYW1lJiBmcmFtZTsKKyAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVy
ZXI7CisgICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlcjsKKyAgICBpbnQgc3RhcnRPZmZzZXQ7
CisgICAgaW50IGVuZE9mZnNldDsKK307CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VG
b3JSYW5nZShGcmFtZSYgZnJhbWUsIFJhbmdlJiByYW5nZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkK
K3sKKyAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBSZW5kZXJWaWV3
KiB2aWV3ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCF2aWV3KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFRvIHNuYXBzaG90IHRoZSByYW5nZSwgdGVtcG9y
YXJpbHkgc2VsZWN0IGl0IGFuZCB0YWtlIHNlbGVjdGlvbiBzbmFwc2hvdC4KKyAgICBQb3NpdGlv
biBzdGFydCA9IHJhbmdlLnN0YXJ0UG9zaXRpb24oKTsKKyAgICBQb3NpdGlvbiBjYW5kaWRhdGUg
PSBzdGFydC5kb3duc3RyZWFtKCk7CisgICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgp
ICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICBzdGFy
dCA9IGNhbmRpZGF0ZTsKKworICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlLmVuZFBvc2l0aW9uKCk7
CisgICAgY2FuZGlkYXRlID0gZW5kLnVwc3RyZWFtKCk7CisgICAgaWYgKGNhbmRpZGF0ZS5kZXBy
ZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQor
ICAgICAgICBlbmQgPSBjYW5kaWRhdGU7CisKKyAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5k
LmlzTnVsbCgpIHx8IHN0YXJ0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBjb25zdCBTY29wZWRGcmFtZVNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKGZyYW1lKTsK
KworICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciA9IHN0YXJ0LmRlcHJlY2F0ZWROb2Rl
KCktPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciA9IGVuZC5kZXBy
ZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgIGlmICghc3RhcnRSZW5kZXJlciB8fCAhZW5k
UmVuZGVyZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU25hcHNob3RPcHRpb25z
IG9wdGlvbnMgPSBmb3JjZUJsYWNrVGV4dCA/IFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0
IDogU25hcHNob3RPcHRpb25zTm9uZTsKKyAgICBvcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc1Bh
aW50U2VsZWN0aW9uT25seTsKKyAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc3RhcnRSZW5kZXJlciwg
c3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmVuZGVyZXIsIGVuZC5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpLCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisgICAgLy8g
V2UgY2FwdHVyZSB1c2luZyBzbmFwc2hvdEZyYW1lUmVjdCgpIGJlY2F1c2Ugd2UgZmFrZSB1cCB0
aGUgc2VsZWN0aW9uIHVzaW5nCisgICAgLy8gRnJhbWVWaWV3IGJ1dCBzbmFwc2hvdFNlbGVjdGlv
bigpIHVzZXMgdGhlIHNlbGVjdGlvbiBmcm9tIHRoZSBGcmFtZSBpdHNlbGYuCisgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCA9IHNuYXBzaG90RnJhbWVSZWN0KGZyYW1l
LCB2aWV3LT5zZWxlY3Rpb25Cb3VuZHMoKSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIGNyZWF0ZURy
YWdJbWFnZUZyb21TbmFwc2hvdChzdGQ6Om1vdmUoc25hcHNob3QpLCBudWxscHRyKTsKK30KKwor
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckltYWdlKEZyYW1lJiBmcmFtZSwgTm9kZSYg
bm9kZSwgSW50UmVjdCYgaW1hZ2VSZWN0LCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKK3sKKyAgICBT
Y29wZWROb2RlRHJhZ1N0YXRlIGVuYWJsZURyYWcoZnJhbWUsIG5vZGUpOworCisgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIENhbGN1bGF0ZSBpbWFnZSBhbmQgZWxl
bWVudCBtZXRyaWNzIGZvciB0aGUgY2xpZW50LCB0aGVuIGNyZWF0ZSBkcmFnIGltYWdlLgorICAg
IExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3Qp
KTsKKworICAgIGlmIChwYWludGluZ1JlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGVsZW1lbnRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdCh0b3BMZXZlbFJl
Y3QpOworICAgIGltYWdlUmVjdCA9IHBhaW50aW5nUmVjdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpOworICAg
IHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc3RkOjptb3ZlKHNuYXBzaG90KSwg
Jm5vZGUpOworfQorCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgKCFQTEFURk9STShXSU4pIHx8IE9T
KFdJTkNFKSkKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYsIGNvbnN0
IFN0cmluZyYsIEZvbnRSZW5kZXJpbmdNb2RlKQogewotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKaW5k
ZXggZDhmNTJiY2ZhZDQ0MjQzZjhhY2NiODY3MGEwOTRhZjExM2M0YjI0ZC4uZDgzNjk2ZTMzMTFj
Y2U1NDE3MzUyYjZkMDQ2OTlhMTAzMzQ0MGYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmgKQEAgLTI2LDEwICsyNiwxMSBAQAogI2lmbmRlZiBEcmFnSW1hZ2VfaAogI2RlZmluZSBE
cmFnSW1hZ2VfaAogCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiRm9udFJlbmRl
cmluZ01vZGUuaCIKKyNpbmNsdWRlICJGcmFtZVNuYXBzaG90dGluZy5oIgogI2luY2x1ZGUgIklt
YWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiRmxvYXRT
aXplLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAg
LTQxLDM4ICs0Miw0NiBAQCB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18qIEhCSVRNQVA7CiB0eXBl
ZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7CiAjZW5kaWYKIAotLy9X
ZSBuZWVkIHRvICNkZWZpbmUgWU9mZnNldCBhcyBpdCBuZWVkcyB0byBiZSBzaGFyZWQgd2l0aCBX
ZWJLaXQKKy8vIFdlIG5lZWQgdG8gI2RlZmluZSBZT2Zmc2V0IGFzIGl0IG5lZWRzIHRvIGJlIHNo
YXJlZCB3aXRoIFdlYktpdAogI2RlZmluZSBEcmFnTGFiZWxCb3JkZXJZT2Zmc2V0IDIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgSW1hZ2U7Ci0gICAgY2xhc3MgVVJMOworY2xh
c3MgRnJhbWU7CitjbGFzcyBJbWFnZTsKK2NsYXNzIEludFJlY3Q7CitjbGFzcyBOb2RlOworY2xh
c3MgUmFuZ2U7CitjbGFzcyBVUkw7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdHlwZWRlZiBS
ZXRhaW5QdHI8TlNJbWFnZT4gRHJhZ0ltYWdlUmVmOwordHlwZWRlZiBSZXRhaW5QdHI8TlNJbWFn
ZT4gRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oV0lOKQotICAgIHR5cGVkZWYgSEJJVE1B
UCBEcmFnSW1hZ2VSZWY7Cit0eXBlZGVmIEhCSVRNQVAgRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShOSVgpCi0gICAgdHlwZWRlZiBjYWlyb19zdXJmYWNlX3Qq
IERyYWdJbWFnZVJlZjsKK3R5cGVkZWYgY2Fpcm9fc3VyZmFjZV90KiBEcmFnSW1hZ2VSZWY7CiAj
ZWxpZiBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpCi0gICAgdHlwZWRlZiB2
b2lkKiBEcmFnSW1hZ2VSZWY7Cit0eXBlZGVmIHZvaWQqIERyYWdJbWFnZVJlZjsKICNlbmRpZgot
ICAgIAotICAgIEludFNpemUgZHJhZ0ltYWdlU2l6ZShEcmFnSW1hZ2VSZWYpOwotICAgIAotICAg
IC8vVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBtZW1vcnkgbmV1dHJhbCwgZWcuIGlmIHRoZXkg
cmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGltYWdlLCAKLSAgICAvL3RoZXkgc2hvdWxkIHJlbGVh
c2UgdGhlIGlucHV0IGltYWdlLiAgQXMgYSBjb3JvbGxhcnkgdGhlc2UgbWV0aG9kcyBkb24ndCBn
dWFyYW50ZWUKLSAgICAvL3RoZSBpbnB1dCBpbWFnZSByZWYgd2lsbCBzdGlsbCBiZSB2YWxpZCBh
ZnRlciB0aGV5IGhhdmUgYmVlbiBjYWxsZWQKLSAgICBEcmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdl
VG9NYXhTaXplKERyYWdJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSk7Ci0gICAgRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJ
bWFnZVJlZiwgRmxvYXRTaXplIHNjYWxlKTsKLSAgICBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFn
SW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwgZmxvYXQgZGVsdGEpOwotICAgIAot
ICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pOwotICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJ
Y29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICBEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGb250
UmVuZGVyaW5nTW9kZSk7Ci0gICAgdm9pZCBkZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmKTsK
LX0KIAorSW50U2l6ZSBkcmFnSW1hZ2VTaXplKERyYWdJbWFnZVJlZik7CisKKy8vIFRoZXNlIGZ1
bmN0aW9ucyBzaG91bGQgYmUgbWVtb3J5IG5ldXRyYWwsIGVnLiBpZiB0aGV5IHJldHVybiBhIG5l
d2x5IGFsbG9jYXRlZCBpbWFnZSwKKy8vIHRoZXkgc2hvdWxkIHJlbGVhc2UgdGhlIGlucHV0IGlt
YWdlLiBBcyBhIGNvcm9sbGFyeSB0aGVzZSBtZXRob2RzIGRvbid0IGd1YXJhbnRlZQorLy8gdGhl
IGlucHV0IGltYWdlIHJlZiB3aWxsIHN0aWxsIGJlIHZhbGlkIGFmdGVyIHRoZXkgaGF2ZSBiZWVu
IGNhbGxlZC4KK0RyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJhZ0ltYWdlUmVm
LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbnRTaXplJiBkc3RTaXplKTsKK0RyYWdJ
bWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSk7CitE
cmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiwgZmxv
YXQgZGVsdGEpOworCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdl
KiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKKworRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoRnJhbWUmLCBOb2RlJik7CitEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKEZyYW1lJiwgYm9vbCBmb3JjZUJsYWNrVGV4
dCA9IGZhbHNlKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShGcmFtZSYs
IFJhbmdlJiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKTsKK0RyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGb3JJbWFnZShGcmFtZSYsIE5vZGUmLCBJbnRSZWN0JiBpbWFnZVJlY3QsIElu
dFJlY3QmIGVsZW1lbnRSZWN0KTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5r
KFVSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlKTsKK3ZvaWQgZGVs
ZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7Cit9CiAKLSNlbmRpZiAvLyFEcmFnSW1hZ2VfaAor
I2VuZGlmIC8vIERyYWdJbWFnZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lSU9TLm1tCmluZGV4IDVkZmY2ZjBmZTljMWQ5ZjJkZTRhMWUxMTkzYTVlZmI0
NDYyZDA3OTEuLmQ1NjJhMTYxOTI2NWZhNjFlMGI0YzE4OTZhMDhmZjVmZWIxM2I1ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCkBAIC0z
Myw3ICszMyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNlbGVjdGlvbi5oPgotI2ltcG9y
dCA8V2ViQ29yZS9GcmFtZVNuYXBzaG90dGluZ01hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZVNuYXBzaG90dGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9odG1sZWRpdGluZy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggYjVjMDNiYjNk
ZWZkNTQ5M2QxZGFkNjU3YTlkYTBhMTZlN2ViZWFmOC4uMTNmODMzNjhlNjgxYTVjYzdiYzQxNWYz
N2E3MmIzNGZlZjU2NzIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCkBAIC04NSw2ICs4NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RyYWdJbWFnZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yRGVs
ZXRlQWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KQEAgLTk1LDcgKzk2LDYg
QEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2Fk
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNv
cmUvRnJhbWVTbmFwc2hvdHRpbmdNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE5hbWVzLmg+CkBAIC0xODIwLDcgKzE4MjAsMTIgQEAgc3RhdGljIGJvb2wgbW91c2VFdmVudElz
UGFydE9mQ2xpY2tPckRyYWcoTlNFdmVudCAqZXZlbnQpCiB7CiAgICAgaWYgKCFbc2VsZiBfaGFz
U2VsZWN0aW9uXSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBOU0ltYWdlICpkcmFnSW1hZ2Ug
PSBzZWxlY3Rpb25JbWFnZShjb3JlKFtzZWxmIF9mcmFtZV0pKTsKKworICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gW2NyZWF0ZURyYWdJbWFn
ZUZvclNlbGVjdGlvbigqY29yZUZyYW1lKS5sZWFrUmVmKCkgYXV0b3JlbGVhc2VdOwogICAgIFtk
cmFnSW1hZ2UgX3dlYl9kaXNzb2x2ZVRvRnJhY3Rpb246V2ViRHJhZ0ltYWdlQWxwaGFdOwogICAg
IHJldHVybiBkcmFnSW1hZ2U7CiB9CkBAIC01OTY1LDcgKzU5NzAsMTEgQEAgc3RhdGljIHZvaWQg
ZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21w
b3NpdGlvblVuZGUKIHsKICAgICBpZiAoIVtzZWxmIF9oYXNTZWxlY3Rpb25dKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIHJldHVybiBzZWxlY3Rpb25JbWFnZShjb3JlKFtzZWxmIF9mcmFtZV0p
LCBmb3JjZUJsYWNrVGV4dCk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBy
ZXR1cm4gW2NyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbigqY29yZUZyYW1lLCBmb3JjZUJsYWNr
VGV4dCkubGVha1JlZigpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNSZWN0KXNlbGVjdGlvbklt
YWdlUmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IGNjYmQ3MTkwMWU0
NTU3OTAzMWI5MDJiYTU2YTg5NGU2YThkNzljYjMuLmI4MWQ0YTdkNzM0NzdhZGY4YmRiNzgzYjI1
MWRlMWRjOWZmZDkzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFz
c2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTM2
LDEwICszNiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9ET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZv
cm1FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJFbGVtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
aW1wbGVGb250RGF0YS5oPgogCiAjaW5jbHVkZSA8aW5pdGd1aWQuaD4KIC8vIHszQjBDMEVGRi00
NzhCLTRiMGItODI5MC1EMjMyMUUwOEUyM0V9CkBAIC0xMjc5LDcgKzEyODAsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UoSEJJVE1BUCogaW1h
Z2UpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgICppbWFn
ZSA9IGZyYW1lLT5ub2RlSW1hZ2UobV9lbGVtZW50KTsKKyAgICAqaW1hZ2UgPSBjcmVhdGVEcmFn
SW1hZ2VGb3JOb2RlKCpmcmFtZSwgKm1fZWxlbWVudCk7CiAgICAgaWYgKCEqaW1hZ2UpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>217916</attachid>
            <date>2013-11-26 18:12:42 -0800</date>
            <delta_ts>2013-11-26 18:13:10 -0800</delta_ts>
            <desc>copy of last attachment, this time for EWS with deps landed</desc>
            <filename>url.txt</filename>
            <type>text/plain</type>
            <size>48</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9MjE3Nzc0
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217917</attachid>
            <date>2013-11-26 18:14:14 -0800</date>
            <delta_ts>2013-12-04 15:41:48 -0800</delta_ts>
            <desc>v4 - an actual patch, not the url</desc>
            <filename>bug-124325-20131124224750.patch</filename>
            <type>text/plain</type>
            <size>67908</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIwYTg2YjYxZTNiNzIw
NTdlZjE0NDgyOGU3NGY5NTFjZjE3YWYwMC4uMGI5OTk5NzFlY2ZhY2EyNGM4NGQ5YWMwODU2Mzhk
NDNhZmZmOGMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYzIEBACiAyMDEzLTExLTI0ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KIAorICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFZhcmlvdXMgc25hcHNob3QgY3JlYXRpb24g
bWV0aG9kcyBoYWQgZHVwbGljYXRlZCBjb2RlIGFuZCB3ZXJlIHNwbGl0CisgICAgICAgIGJldHdl
ZW4gRnJhbWUsIERyYWdJbWFnZSwgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9u
c3MuCisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBXZWJDb3JlIHNuYXBzaG90IG1ldGhvZHMgaW50
byBGcmFtZVNuYXBzaG90dGluZworICAgICAgICBhbmQgcmVtb3ZlcyBwbGF0Zm9ybSBpbXBsZW1l
bnRhdGlvbnMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgRHJhZ0ltYWdlIG1ldGhvZHMgcmV1
c2Ugc25hcHNob3QgbWV0aG9kcyB3aGVyZSBwb3NzaWJsZS4gSW5zcGVjdG9yCisgICAgICAgIHdp
bGwgYmUgYWJsZSB0byB0YWtlIHNuYXBzaG90cyB3aXRob3V0IHVzaW5nIGRyYWcgaW1hZ2VzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJbWFn
ZV0pOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpd
KToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAgICAq
IHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQ
YWludGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0
ZTo6flNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hv
dEZyYW1lUmVjdCk6IE1vdmUgbW9zdCBidWZmZXIgbG9naWMgdG8gaGVyZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90U2VsZWN0aW9uKTogTW92ZWQgZnJvbSBGcmFtZS4KKyAgICAgICAgKFdl
YkNvcmU6OnNuYXBzaG90Tm9kZSk6IE1vdmVkIGZyb20gRnJhbWUuCisgICAgICAgICogcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5t
bTogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcDogcmVtb3ZlIGR1cGxpY2F0ZSBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5oOiBGaXggYW4gaW5j
b3JyZWN0IHBhcmFtZXRlciBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY29wZWROb2RlRHJhZ1N0YXRlOjpTY29wZWROb2RlRHJhZ1N0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZE5vZGVEcmFnU3RhdGU6On5TY29wZWROb2Rl
RHJhZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dCk6IEJvaWxlcnBsYXRlIGJ1ZmZlciBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
b3JTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0
ZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRG
cmFtZVNlbGVjdGlvblN0YXRlOjp+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6IE1vdmVkIGZyb20gRnJhbWUuCisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6IE1vdmVkIGZyb20gRnJh
bWVTbmFwc2hvdHRpbmdNYWMuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKTogdXNlIG51bGxwdHIuCisKKzIwMTMtMTEtMjQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNz
Lndhc2hpbmd0b24uZWR1PgorCiAgICAgICAgIEltYWdlQnVmZmVyOjpjcmVhdGUgc2hvdWxkIHJl
dHVybiBhIHN0ZDo6dW5pcXVlX3B0ciBpbnN0ZWFkIG9mIE93blB0ci4KICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDgyMgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cK
aW5kZXggYWI0MzYzNTA3MWJlZjgyZDE1ZjYxMTAzMjNmNWM4NWYyOTI4ZThiMi4uMmFlMTkzZTE3
YjJjZDFlOWJlNDdhYTZkNTZkNWEyOTcyNjlmNzZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEzLTExLTIzICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9u
LmVkdT4KKworICAgICAgICBDb25zb2xpZGF0ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFi
aWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyNDMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW06IHVzZSBuZXcgaGVhZGVyIGZpbGUuCisK
IDIwMTMtMTEtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTk0NTUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggZTk4Mzk4ZTA1MTJkYjAyNzQ3ZWFjMjZjNDcxNTYzOTA5ODcxYjFjNy4uZGNjZjdmMWFmMGY4
MjA0MzcwOTg1NmEyZDk5YmMzMjdlNTQzZDRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDEzLTExLTIzICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVk
dT4KKworICAgICAgICBDb25zb2xpZGF0ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxp
dGllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBuZXcgcGxhdGZvcm0taW5kZXBlbmRlbnQgbWV0aG9kcyBpbnN0ZWFkIG9mIE1hYyBtZXRob2Rz
LgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgX3NlbGVjdGlvbkRyYWdnaW5nSW1hZ2VdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
c2VsZWN0aW9uSW1hZ2VGb3JjaW5nQmxhY2tUZXh0Ol0pOgorCiAyMDEzLTExLTIxICBNYXJrIFJv
d2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEy
NDcwMj4gU3RvcCBvdmVycmlkaW5nIFZBTElEX0FSQ0hTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGEz
ZWI3ZTVlODQwNjcxYWZjMmE5NmY3NTE5OGEwMzhmZDFjNjdjOTYuLmI2Y2ExNjIwMjRkZmRjNDU1
YWIyMGQ3M2FmYjg3ODU3ZWU3NTA1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMy0xMS0yMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisK
KyAgICAgICAgQ29uc29saWRhdGUgdmFyaW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRpZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQzMjUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTUNv
cmVDbGFzc2VzLmNwcDoKKyAgICAgICAgKERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UpOiB1c2Ug
Y3JlYXRlRHJhZ0ltYWdlRm9yTm9kZS4KKwogMjAxMy0xMS0yMSAgUGV0ZXIgTW9sbmFyICA8cG1v
bG5hci51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFC
TEVfV09SS0VSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NGViYmIzM2ZlY2IzOWY4NzQ0YWVi
ZWU4MDU4MGJjYTFhN2QzNjRkLi44NjAyYjMyNWEyYTIzODcxZjg4MmU0NjFjZjc2OTQ0MDM4ZjEy
MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTcyNiw2ICsxNzI2LDcgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvRnJhbWUu
Y3BwCiAgICAgcGFnZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwCisgICAgcGFnZS9GcmFt
ZVNuYXBzaG90dGluZy5jcHAKICAgICBwYWdlL0ZyYW1lVHJlZS5jcHAKICAgICBwYWdlL0ZyYW1l
Vmlldy5jcHAKICAgICBwYWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IGExMDk2OTAyODcwYzZjNjcxYTY1Njk2MGE1ODllYjNmYWE5
ZWE4YWQuLjkxN2YwMWNlNjM0MjE3YzMxODQyZmFlZjFlNmE0NmY4MGUyNTIyOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDEyMCw2ICs0MTIwLDggQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVNuYXBzaG90dGluZy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVHJlZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA3MGQ3MzNkMzVkNTkyN2FkYzRlZDI3NGYzZmFm
ODcwM2Y1NDk4MmY0Li5mNTA4YmQ4NzkxZmUwOTEwZmMxZmUzYmM4ZDZkOTMxM2FjNTQ1MGU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNDI4LDcgKzQyOCw2IEBAIF9fWk43V2ViQ29yZTE0Y29v
a2llc0VuYWJsZWRFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUzVfCiBf
X1pON1dlYkNvcmUxNGRlY29kZUhvc3ROYW1lRVA4TlNTdHJpbmcKIF9fWk43V2ViQ29yZTE0ZW5j
b2RlSG9zdE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRlbmRPZlBhcmFncmFwaEVSS05T
XzE1VmlzaWJsZVBvc2l0aW9uRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQotX19a
TjdXZWJDb3JlMTRzZWxlY3Rpb25JbWFnZUVQTlNfNUZyYW1lRWIKIF9fWk43V2ViQ29yZTE0c2V0
TWV0YWRhdGFVUkxFUk4zV1RGNlN0cmluZ0VSS1MxX1M0XwogX19aTjdXZWJDb3JlMTVBZmZpbmVU
cmFuc2Zvcm01ZmxpcFlFdgogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm01c2NhbGVFZApA
QCAtODkwLDYgKzg4OSw3IEBAIF9fWk43V2ViQ29yZTI3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VC
YXNlQzJFdgogX19aTjdXZWJDb3JlMjdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25DMUVOM1dU
RjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRWJSS05TMV82U3RyaW5nRQogX19aTjdXZWJDb3JlMjdE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sxNHNldE9yaWVudGF0aW9uRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzIxRGV2aWNlT3JpZW50YXRpb25EYXRhRUVFCiBfX1pON1dlYkNvcmUyN0RldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9ja0MxRXYKK19fWk43V2ViQ29yZTI3Y3JlYXRlRHJhZ0ltYWdlRm9y
U2VsZWN0aW9uRVJOU181RnJhbWVFYgogX19aTjdXZWJDb3JlMjdwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWxFUktOU18zVVJMRVMyXwogX19aTjdXZWJDb3JlMjdzdGFydE9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXNFUEZ2dkUKIF9fWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjEyYWRkVXNlclNoZWV0RU4zV1RGN1Bhc3NSZWZJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUUK
QEAgLTIwMzUsNyArMjAzNSw2IEBAIF9fWk43V2ViQ29yZTM4Y29udGV4dE1lbnVJdGVtVGFnV3Jp
dGluZ0RpcmVjdGlvbk1lbnVFdgogX19aTjdXZWJDb3JlNDJjb250ZXh0TWVudUl0ZW1UYWdDaGVj
a0dyYW1tYXJXaXRoU3BlbGxpbmdFdgogX19aTjdXZWJDb3JlNDJjb250ZXh0TWVudUl0ZW1UYWdD
aGVja1NwZWxsaW5nV2hpbGVUeXBpbmdFdgogX19aTjdXZWJDb3JlNDZjb250ZXh0TWVudUl0ZW1U
YWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5RXYKLV9fWk43V2ViQ29yZTVGcmFtZTlub2Rl
SW1hZ2VFUE5TXzROb2RlRQogX19aTjdXZWJDb3JlNkN1cnNvcjhmcm9tVHlwZUVOUzBfNFR5cGVF
CiBfX1pON1dlYkNvcmU2Q3Vyc29yQzFFUE5TXzVJbWFnZUVSS05TXzhJbnRQb2ludEUKIF9fWk43
V2ViQ29yZTZDdXJzb3JDMUVSS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oKaW5kZXggOTMwMGI0YjNiYjg0MjJiYTY3NjM5NzUxZGM2YWU5MTU4
NzE1N2M0MC4uODUzMzFkZmEzNTdhZTY4M2UwZTA4MWVjNDljYTU0OGEwOGI3NGFlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC02OTgz
LDYgKzY5ODMsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGb2N1c0NvbnRy
b2xsZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lRGVzdHJ1Y3Rpb25PYnNl
cnZlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNo
b3R0aW5nLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVUcmVl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVWaWV3LmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcR3JvdXBTZXR0aW5ncy5jcHAiIC8+
CkBAIC0xODgyNyw2ICsxODgyOCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdl
XEZvY3VzRGlyZWN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZy
YW1lLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVNu
YXBzaG90dGluZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRy
ZWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVWaWV3LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEdyb3VwU2V0dGluZ3MuaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVycwppbmRleCA0ZDc1MTQ0ZmIyNTViZTk3NDdjOTliY2UyMjdhNDRkMTA2Y2M2ZTNhLi43
M2JlZmIxNDk2MTk2MDFhM2YwZjc5ZDU4Y2YyNDUzNmU0NDk4MGQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBA
IC03MTcsNiArNzE3LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFw
c2hvdHRpbmcuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgorICAgIDwvQ2xDb21w
aWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzYyOSw2ICs3
NjMyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlv
bk9ic2VydmVyLmgiPgogICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNob3R0aW5nLmgi
PgorICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lVHJlZS5oIj4KICAgICAgIDxGaWx0ZXI+cGFn
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU5NDMyN2FjMDgxYmFlNjE4MDFiNzlj
OTA4ZDkzNDViNmMyOTM0OTcuLjcxMjc5OGMyMjMzZTQyZWJhMmRkZjBjN2Y3MjM2M2RhMmM0MTcz
OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTIwMDIsNyArMjAwMiw2IEBACiAJCTY1QTIxNDg1MDk3QTNGNTMwMEI5MDUwQSAv
KiBGcmFtZVRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUJGMDIyRTA5NzQ4MTYzMDBD
NDMxOTYgLyogRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjVCRjAyMjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLzsgfTsKIAkJ
NjVCRjAyMkYwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJh
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2
NUJGMDI0NTA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyog
RnJhbWVNYWMubW0gKi87IH07CiAJCTY1Qzk3QUYzMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qzk3QUYy
MDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLzsgfTsKIAkJNjVDQkZFRjkwOTc0RjYwNzAw
MURBQzI1IC8qIEZyYW1lVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAq
LzsgfTsKIAkJNjVDQkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDQkZFRjgwOTc0RjYwNzAw
MURBQzI1IC8qIEZyYW1lVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yMjA3LDggKzIyMDYsNiBAQAogCQk3QzUzNDNGQzE3Qjc0QjYzMDA0
MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTM0M0ZBMTdCNzRCNjMwMDQyMzJGMCAvKiBK
U01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwICovOyB9OwogCQk3QzUzNDNGRDE3Qjc0QjYzMDA0
MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQjE3Qjc0QjYzMDA0MjMyRjAgLyogSlNN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggKi87IH07CiAJCTdDQzdFM0Q3MTcyMDhDMEYwMDNDNTI3
NyAvKiBJRE5TY3JpcHRXaGl0ZUxpc3QudHh0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyogSUROU2NyaXB0
V2hpdGVMaXN0LnR4dCAqLzsgfTsKLQkJN0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1l
U25hcHNob3R0aW5nTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tICovOyB9OwotCQk3Q0UzMERBQTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRp
bmdNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
RTMwREE4MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdENzQxQkRBMTc3MjI2
QUEwMDg1OTE3MCAvKiBDU1NWYWx1ZUtleXdvcmRzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODE0ODA5RDEzMDQzMDAw
RTYxRDcgLyogQ1NTVmFsdWVLZXl3b3Jkcy5oICovOyB9OwogCQk3RTEyRTkwRjE1RkE1RDNBMDA1
RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UxMkU5MEQxNUZBNUQzQTAwNUU0MTI2IC8qIEN1
c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaCAqLzsgfTsKIAkJN0UxMkU5MTAxNUZBNUQzQTAwNUU0
MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UxMkU5MEUxNUZBNUQzQTAwNUU0MTI2IC8qIEN1
c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwICovOyB9OwpAQCAtNTI0Myw2ICs1MjQwLDggQEAK
IAkJQzNDRjE3QTUxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0ExMTVCMDA2M0Yw
MDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDM0NGMTdBMjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZl
clJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJQzNDRjE3QTcxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFy
Z2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzNDRjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJS
ZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUM0Q0Q2MjlBMTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNENENjI5ODE4Mzgz
NzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuY3BwICovOyB9OworCQlDNENENjI5QjE4
MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBG
cmFtZVNuYXBzaG90dGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUM1MEI1NjE2MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE0
MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLzsgfTsKIAkJQzUwQjU2MTcx
MjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91
cFNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQzUwRDBFODIwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwRDBFODAwRkY0
MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovOyB9OwpAQCAtODc0MSw3ICs4
NzQwLDYgQEAKIAkJNjVBNjQwRjAwNTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhjZXB0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9j
a0V4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCTY1QkYwMjI5MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFtZU1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNv
bmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB1c2VzVGFi
cyA9IDA7IH07CiAJCTY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lVmlldy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1Q0JGRUY4MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFt
ZVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lVmlldy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODk3Myw4ICs4OTcxLDYgQEAKIAkJN0M2MTM2
RjgxNzEwQzM1MjAwRkY0QTU3IC8qIEluRmlsZXNQYXJzZXIucG0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0g
SW5GaWxlc1BhcnNlci5wbTsgcGF0aCA9IHNjcmlwdHMvSW5GaWxlc1BhcnNlci5wbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M2MTM2RjkxNzEwQzM1MjAwRkY0QTU3IC8qIFN0YXRp
Y1N0cmluZy5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBTdGF0aWNTdHJpbmcucG07IHBhdGggPSBzY3Jp
cHRzL1N0YXRpY1N0cmluZy5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NDN0Uz
RDYxNzIwOEMwRjAwM0M1Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gSUROU2NyaXB0V2hpdGVMaXN0LnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJN0NFMzBEQTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRnJhbWVTbmFwc2hv
dHRpbmdNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDRTMwREE4MTcxQjYz
RDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBGcmFtZVNuYXBzaG90dGluZ01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3RTEyRTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdl
bmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0ZXJN
ZXNoR2VuZXJhdG9yLmg7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0UxMkU5MEUxNUZBNUQzQTAwNUU0MTI2
IC8qIEN1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHA7IHBhdGggPSBmaWx0
ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZVByaW9yaXR5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMjI3Niw2ICsxMjI3Miw4IEBACiAJCUMzQ0YxN0ExMTVCMDA2
M0YwMDI3NkQzOSAvKiBJZFRhcmdldE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzNDRjE3QTIxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZFRhcmdldE9ic2VydmVy
UmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDM0NGMTdBMzE1QjAw
NjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDNENENjI5ODE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFw
c2hvdHRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVT
bmFwc2hvdHRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNENENjI5OTE4
MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRnJhbWVTbmFwc2hvdHRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzUwQjU2MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBH
cm91cFNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyb3VwU2V0
dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAwRkY0MjcyOTAw
QUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3RvcmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTYxNCw2ICsxNTYxMiw4IEBACiAJCQkJNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2
IC8qIEZyYW1lLmggKi8sCiAJCQkJOTc0QTg2MjAxNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlci5jcHAgKi8sCiAJCQkJOTc0QTg2MjExNEI3QURCQjAwM0ZEQzc2IC8q
IEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oICovLAorCQkJCUM0Q0Q2Mjk4MTgzODM3NjYwMDdF
QkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgKi8sCisJCQkJQzRDRDYyOTkxODM4Mzc2NjAw
N0VCQUYxIC8qIEZyYW1lU25hcHNob3R0aW5nLmggKi8sCiAJCQkJNjVBMjE0ODIwOTdBM0Y1MzAw
QjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgKi8sCiAJCQkJNjVBMjE0ODMwOTdBM0Y1MzAwQjkwNTBB
IC8qIEZyYW1lVHJlZS5oICovLAogCQkJCTY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFt
ZVZpZXcuY3BwICovLApAQCAtMTY1MjgsOSArMTY1MjgsNiBAQAogCQkJCUFCQUYyMjA3MEMwM0Ix
QzcwMEIwQkNGMCAvKiBDaHJvbWVNYWMubW0gKi8sCiAJCQkJQTcxODc4OEYwQjJEMDRBQzAwQTE2
RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tICovLAogCQkJCTkzQzA5QTdFMEIwNjRFRUYwMDVB
QkQ0RCAvKiBFdmVudEhhbmRsZXJNYWMubW0gKi8sCi0JCQkJNjVCRjAyM0MwOTc0ODE5MDAwQzQz
MTk2IC8qIEZyYW1lTWFjLm1tICovLAotCQkJCTdDRTMwREE4MTcxQjYzRDIwMEVDMzNFMSAvKiBG
cmFtZVNuYXBzaG90dGluZ01hYy5oICovLAotCQkJCTdDRTMwREE3MTcxQjYzRDIwMEVDMzNFMSAv
KiBGcmFtZVNuYXBzaG90dGluZ01hYy5tbSAqLywKIAkJCQkxQzI2NDk3QjBEN0UyNEVDMDBCRDEw
RjIgLyogUGFnZU1hYy5jcHAgKi8sCiAJCQkJRTFDMkYyNDgxNTMzQTIxMjAwODNGOTc0IC8qIFNl
dHRpbmdzTWFjLm1tICovLAogCQkJCUY1ODc4NTRDMDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3Jl
RnJhbWVWaWV3LmggKi8sCkBAIC0yMjEzNiw2ICsyMjEzMyw3IEBACiAJCQkJMUE1NjlDRjgwRDdF
MkI4MjAwN0MzOTgzIC8qIGNfY2xhc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZBMEQ3
RTJCODIwMDdDMzk4MyAvKiBjX2luc3RhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUNG
QzBEN0UyQjgyMDA3QzM5ODMgLyogY19ydW50aW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNENE
NjI5QjE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBNTY5Q0ZFMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDQjE2QzFBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0QjRDQzBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVk
Rm9udC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjk5Myw3ICsyMjk5MSw2IEBACiAJCQkJNjI4RDIx
NEUxMjEzMUVGNDAwNTVEQ0ZDIC8qIEZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxNzJBRjcwMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMEUwOTlFNjQ5MjAwNTZFNTgxIC8qIEZyYW1lU2VsZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQk3Q0UzMERBQTE3MUI2M0QyMDBFQzMzRTEgLyogRnJh
bWVTbmFwc2hvdHRpbmdNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QTIxNDg1MDk3QTNGNTMw
MEI5MDUwQSAvKiBGcmFtZVRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1Q0JGRUZBMDk3NEY2
MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjA1QUIwMTIz
OTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjI3NSwxMCArMjYyNzIsOCBAQAogCQkJCTkzMkUxNjA5MEFGNTc4MzQwMDI1RjQwOCAvKiBG
cmFtZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMDAwRUJBMjExQkRBRkQ0MDBDNDc3
MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZC
QTc2NkUxNjY0MjdBODAwNUJFNUQxIC8qIEZyYW1lTG9hZFJlcXVlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTMzMDlFMEQwOTlFNjQ5MjAwNTZFNTgxIC8qIEZyYW1lU2VsZWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTRBOEM5NkVCMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNl
bGVjdGlvbk1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTdDRTMwREE5MTcxQjYzRDIwMEVDMzNF
MSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3OTY5REFE
MTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNjVBMjE0ODQwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFNEM5MUExMDE4MDIzNDM5MDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzc4NCw2ICsyNzc3OSw3IEBACiAJCQkJNTFFMEJCMzkw
REE1QUNCNjAwQTlFNDE3IC8qIFN0b3JhZ2VNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcy
NzdFNTIxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFjay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDNTBEMEU4MjBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDNENENjI5QTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVT
bmFwc2hvdHRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU1RTM4QzAxMDA0MEQ1RDAwQTU2
QkRCIC8qIFN0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjA5
REI0MTZBRjVGNkMwMDg1MzhFNyAvKiBTdG9yYWdlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzUxMDJEOTUwRkQ5QUEyRDAwRkFGRjA0IC8qIFN0b3JhZ2VTeW5jTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggY2MwMzY1
NTI2ZTMxNmUwNWQ1YjE1YmI3NDQ0YzNiYjJiY2ZhOTA1MC4uMTI4NjRiOTBlNjY4NDVlYzNkOGY3
MGFiZDllYmViZjU3NWRlMmFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAg
LTM2LDkgKzM2LDkgQEAKICNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9N
UHJpdmF0ZS5oIgogI2ltcG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgorI2ltcG9ydCAiRHJhZ0lt
YWdlLmgiCiAjaW1wb3J0ICJGb250LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiRnJh
bWVTbmFwc2hvdHRpbmdNYWMuaCIKICNpbXBvcnQgIkhUTUxFbGVtZW50LmgiCiAjaW1wb3J0ICJI
VE1MTmFtZXMuaCIKICNpbXBvcnQgIkhUTUxQYXJzZXJJZGlvbXMuaCIKQEAgLTI4OSw3ICsyODks
NyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCogZXZlbnRU
YXJnZXQpCiAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFt
ZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGZy
YW1lLT5ub2RlSW1hZ2Uobm9kZSkuZ2V0KCk7CisgICAgcmV0dXJuIFtjcmVhdGVEcmFnSW1hZ2VG
b3JOb2RlKCpmcmFtZSwgKm5vZGUpLmxlYWtSZWYoKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5T
QXJyYXkgKil0ZXh0UmVjdHMKQEAgLTMzNSw3ICszMzUsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+
IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCogZXZlbnRUYXJnZXQpCiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIHJldHVybiBXZWJDb3JlOjpyYW5nZUltYWdlKGZy
YW1lLCByYW5nZSwgZm9yY2VCbGFja1RleHQpOworICAgIHJldHVybiBbY3JlYXRlRHJhZ0ltYWdl
Rm9yUmFuZ2UoKmZyYW1lLCAqcmFuZ2UsIGZvcmNlQmxhY2tUZXh0KS5sZWFrUmVmKCkgYXV0b3Jl
bGVhc2VdOwogfQogCiAtIChOU0FycmF5ICopdGV4dFJlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2xpcGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQu
Y3BwCmluZGV4IDlkMmUyNzUyZmRmMmI3YzY2NDJhMjQyNGY4ODA2M2VjOGE3MWM3YzguLjMwN2Zj
YzE1ZjdkMDgwOGZjZGVkNjQ5YTI3MmViYzBjYjY4MDM1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9h
cmQuY3BwCkBAIC0yNzcsMTAgKzI3NywxMSBAQCBEcmFnSW1hZ2VSZWYgQ2xpcGJvYXJkOjpjcmVh
dGVEcmFnSW1hZ2UoSW50UG9pbnQmIGxvY2F0aW9uKSBjb25zdAogCiAgICAgaWYgKG1fZHJhZ0lt
YWdlRWxlbWVudCkgewogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9kcmFnSW1hZ2VFbGVt
ZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPm5vZGVJ
bWFnZShtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZURyYWdJbWFnZUZvck5vZGUoKmZyYW1lLCAqbV9kcmFnSW1hZ2VFbGVtZW50KTsKICAgICB9CiAK
LSAgICByZXR1cm4gMDsgLy8gV2UgZG8gbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGNy
ZWF0ZSBhIGRyYWcgaW1hZ2UsIHVzZSB0aGUgZGVmYXVsdCBpY29uLgorICAgIC8vIFdlIGRvIG5v
dCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBjcmVhdGUgYSBkcmFnIGltYWdlLCB1c2UgdGhl
IGRlZmF1bHQgaWNvbi4KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NsaXBib2FyZE1hYy5tbQppbmRleCA3NmNhNmZjYTNlNDI0MDdiNWY4ZTdiMzVlNjU4NzM3
YzIxMTNlOGZiLi5hMDliMzBhNGE2NjgzYmExZmQ3ZmI0NWZhODliMmRiZWMwMGMzMjRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DbGlwYm9hcmRNYWMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCAi
Q2FjaGVkSW1hZ2UuaCIKICNpbXBvcnQgIkVsZW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lU25hcHNo
b3R0aW5nTWFjLmgiCisjaW1wb3J0ICJEcmFnSW1hZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zNywxNiArMzcsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQ2xpcGJvYXJk
OjpkcmFnSW1hZ2UgaW4gQ2xpcGJvYXJkLmNwcCBkb2VzIG5vdCBoYW5kbGUgY29ycmVjdGx5LCBz
byBtdXN0IHJlc29sdmUgdGhhdCBhcyB3ZWxsLgogRHJhZ0ltYWdlUmVmIENsaXBib2FyZDo6Y3Jl
YXRlRHJhZ0ltYWdlKEludFBvaW50JiBsb2NhdGlvbikgY29uc3QKIHsKLSAgICBOU0ltYWdlICpy
ZXN1bHQgPSBuaWw7CisgICAgRHJhZ0ltYWdlUmVmIHJlc3VsdCA9IG5pbDsKICAgICBpZiAobV9k
cmFnSW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RyYWdJbWFn
ZUVsZW1lbnQtPmRvY3VtZW50KCkuZnJhbWUoKSkgewotICAgICAgICAgICAgTlNSZWN0IGltYWdl
UmVjdDsKLSAgICAgICAgICAgIE5TUmVjdCBlbGVtZW50UmVjdDsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHNuYXBzaG90RHJhZ0ltYWdlKGZyYW1lLCBtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCksICZp
bWFnZVJlY3QsICZlbGVtZW50UmVjdCk7CisgICAgICAgICAgICBJbnRSZWN0IGltYWdlUmVjdDsK
KyAgICAgICAgICAgIEludFJlY3QgZWxlbWVudFJlY3Q7CisgICAgICAgICAgICByZXN1bHQgPSBj
cmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSgqZnJhbWUsICptX2RyYWdJbWFnZUVsZW1lbnQsIGltYWdl
UmVjdCwgZWxlbWVudFJlY3QpOwogICAgICAgICAgICAgLy8gQ2xpZW50IHNwZWNpZmllcyBwb2lu
dCByZWxhdGl2ZSB0byBlbGVtZW50LCBub3QgdGhlIHdob2xlIGltYWdlLCB3aGljaCBtYXkgaW5j
bHVkZSBjaGlsZAogICAgICAgICAgICAgLy8gbGF5ZXJzIHNwcmVhZCBvdXQgYWxsIG92ZXIgdGhl
IHBsYWNlLgotICAgICAgICAgICAgbG9jYXRpb24uc2V0WChlbGVtZW50UmVjdC5vcmlnaW4ueCAt
IGltYWdlUmVjdC5vcmlnaW4ueCArIG1fZHJhZ0xvY2F0aW9uLngoKSk7Ci0gICAgICAgICAgICBs
b2NhdGlvbi5zZXRZKGltYWdlUmVjdC5zaXplLmhlaWdodCAtIChlbGVtZW50UmVjdC5vcmlnaW4u
eSAtIGltYWdlUmVjdC5vcmlnaW4ueSArIG1fZHJhZ0xvY2F0aW9uLnkoKSkpOworICAgICAgICAg
ICAgbG9jYXRpb24uc2V0WChlbGVtZW50UmVjdC54KCkgLSBpbWFnZVJlY3QueCgpICsgbV9kcmFn
TG9jYXRpb24ueCgpKTsKKyAgICAgICAgICAgIGxvY2F0aW9uLnNldFkoaW1hZ2VSZWN0LmhlaWdo
dCgpIC0gKGVsZW1lbnRSZWN0LnkoKSAtIGltYWdlUmVjdC55KCkgKyBtX2RyYWdMb2NhdGlvbi55
KCkpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9kcmFnSW1hZ2UpIHsKICAgICAgICAg
cmVzdWx0ID0gbV9kcmFnSW1hZ2UtPmltYWdlKCktPmdldE5TSW1hZ2UoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNGMyODk1NzllNzEwM2IwNTI2YzljZTFlY2Nk
OWJiZTEzZWFhNTBiMi4uMGVkODdhYWVlZWRjYjBjODAyZjMxYTQxODAwNjMwMTQ1MDIyMWVmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnQuaCIKICNpbmNs
dWRlICJEcmFnRGF0YS5oIgorI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkRyYWdT
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiRHJhZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCkBA
IC03NzksNyArNzgwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBz
cmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICAgICAgfQogICAg
ICAgICBtX2NsaWVudC53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlv
blNlbGVjdGlvbiwgZHJhZ09yaWdpbiwgY2xpcGJvYXJkKTsKICAgICAgICAgaWYgKCFkcmFnSW1h
Z2UpIHsKLSAgICAgICAgICAgIGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlv
bihzcmMuZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCksIERyYWdJbWFnZUFscGhhKTsKKyAgICAgICAg
ICAgIGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihjcmVhdGVEcmFnSW1h
Z2VGb3JTZWxlY3Rpb24oc3JjKSwgRHJhZ0ltYWdlQWxwaGEpOwogICAgICAgICAgICAgZHJhZ0xv
YyA9IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKHNyYyk7CiAgICAgICAgICAgICBtX2RyYWdPZmZz
ZXQgPSBJbnRQb2ludChkcmFnT3JpZ2luLngoKSAtIGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnko
KSAtIGRyYWdMb2MueSgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA1ZjNm
NzhhZGE4NTg5OTc0MDAzNmI5MzJhMTU1MDkzM2ZkODU3NTQyLi5jMGRlMDZiMTQ5NTdhNzczOTli
N2JiMzJmYzc1MDk4ZjYxYjkxYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTY2LDEwOCAr
OTY2LDQgQEAgYm9vbCBGcmFtZTo6aXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdJ
TikKLXN0cnVjdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgewotICAgIFNjb3BlZEZyYW1lUGFp
bnRpbmdTdGF0ZShGcmFtZSogZnJhbWUsIE5vZGUqIG5vZGUpCi0gICAgICAgIDogZnJhbWUoZnJh
bWUpCi0gICAgICAgICwgbm9kZShub2RlKQotICAgICAgICAsIHBhaW50QmVoYXZpb3IoZnJhbWUt
PnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpKQotICAgICAgICAsIGJhY2tncm91bmRDb2xvcihmcmFt
ZS0+dmlldygpLT5iYXNlQmFja2dyb3VuZENvbG9yKCkpCi0gICAgewotICAgICAgICBBU1NFUlQo
IW5vZGUgfHwgbm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmIChub2RlKQotICAgICAgICAg
ICAgbm9kZS0+cmVuZGVyZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOwotICAgIH0KLQotICAg
IH5TY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoKQotICAgIHsKLSAgICAgICAgaWYgKG5vZGUgJiYg
bm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURy
YWdTdGF0ZShmYWxzZSk7Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3Io
cGFpbnRCZWhhdmlvcik7Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5k
Q29sb3IoYmFja2dyb3VuZENvbG9yKTsKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRv
RHJhdygwKTsKLSAgICB9Ci0KLSAgICBGcmFtZSogZnJhbWU7Ci0gICAgTm9kZSogbm9kZTsKLSAg
ICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7Ci0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9y
OwotfTsKLQotRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAg
ICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
Y29uc3QgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKHRoaXMsIG5vZGUpOwotCi0gICAg
bV92aWV3LT5zZXRQYWludEJlaGF2aW9yKHN0YXRlLnBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2
aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLQotICAgIC8vIFdoZW4gZ2VuZXJhdGluZyB0
aGUgZHJhZyBpbWFnZSBmb3IgYW4gZWxlbWVudCwgaWdub3JlIHRoZSBkb2N1bWVudCBiYWNrZ3Jv
dW5kLgotICAgIG1fdmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJl
bnQpOwotICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKLSAgICBtX3ZpZXctPnNldE5vZGVUb0Ry
YXcobm9kZSk7IC8vIEVuYWJsZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZS4KLQotICAg
IC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2lu
YWwgcmVuZGVyZXIuCi0gICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAg
aWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBMYXlvdXRSZWN0
IHRvcExldmVsUmVjdDsKLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDE7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgZGV2
aWNlU2NhbGVGYWN0b3IgPSBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgcGFpbnRp
bmdSZWN0LnNldFdpZHRoKHBhaW50aW5nUmVjdC53aWR0aCgpICogZGV2aWNlU2NhbGVGYWN0b3Ip
OwotICAgIHBhaW50aW5nUmVjdC5zZXRIZWlnaHQocGFpbnRpbmdSZWN0LmhlaWdodCgpICogZGV2
aWNlU2NhbGVGYWN0b3IpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZm
ZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZh
Y3RvciwgQ29sb3JTcGFjZURldmljZVJHQikpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGlu
Z1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNs
aXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5tYXhYKCksIHBhaW50aW5nUmVjdC5tYXhZ
KCkpKTsKLQotICAgIG1fdmlldy0+cGFpbnRDb250ZW50cyhidWZmZXItPmNvbnRleHQoKSwgcGFp
bnRpbmdSZWN0KTsKLQotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFn
ZSgpOwotCi0gICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3Jp
cHRpb24ocmVuZGVyZXItPnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwotI2lmIEVO
QUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCi0gICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5z
ZXRJbWFnZU9yaWVudGF0aW9uRW51bShyZW5kZXJlci0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9u
KCkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZS5n
ZXQoKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci19Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6
ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoIXNlbGVjdGlvbigpLmlzUmFuZ2Uo
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25zdCBTY29wZWRGcmFtZVBhaW50aW5nU3Rh
dGUgc3RhdGUodGhpcywgMCk7Ci0gICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVo
YXZpb3JTZWxlY3Rpb25Pbmx5KTsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7Ci0KLSAgICBJ
bnRSZWN0IHBhaW50aW5nUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uKCkuYm91bmRz
KCkpOwotCi0gICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOwotICAgIGlmIChtX3BhZ2Up
Ci0gICAgICAgIGRldmljZVNjYWxlRmFjdG9yID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rvcigp
OwotICAgIHBhaW50aW5nUmVjdC5zZXRXaWR0aChwYWludGluZ1JlY3Qud2lkdGgoKSAqIGRldmlj
ZVNjYWxlRmFjdG9yKTsKLSAgICBwYWludGluZ1JlY3Quc2V0SGVpZ2h0KHBhaW50aW5nUmVjdC5o
ZWlnaHQoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gYnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwg
ZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKLSAgICBpZiAoIWJ1ZmZl
cikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgt
cGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOwotICAgIGJ1ZmZlci0+Y29udGV4
dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QubWF4WCgpLCBwYWludGluZ1Jl
Y3QubWF4WSgpKSk7Ci0KLSAgICBtX3ZpZXctPnBhaW50Q29udGVudHMoYnVmZmVyLT5jb250ZXh0
KCksIHBhaW50aW5nUmVjdCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5j
b3B5SW1hZ2UoKTsKLSAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdl
dCgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7Ci19Ci0KLSNlbmRpZgotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggODQwN2U5ZTJiY2YzZWVmZWRk
YmYwNTMxYmU2Y2U5Mjc5NDU3Mjc3Yy4uNWYxODY2ZmUyMDJmY2ZlYTY0NDJjMGJiZWY4MjBmNTZl
ZDIzZTc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMjksNyArMjksNiBAQAogI2RlZmluZSBGcmFt
ZV9oCiAKICNpbmNsdWRlICJBZGp1c3RWaWV3U2l6ZU9yTm90LmgiCi0jaW5jbHVkZSAiRHJhZ0lt
YWdlLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC01OCwxMSArNTcsMTMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIEVkaXRvcjsKICAgICBjbGFzcyBFbGVtZW50OwogICAgIGNsYXNzIEV2
ZW50SGFuZGxlcjsKKyAgICBjbGFzcyBGbG9hdFNpemU7CiAgICAgY2xhc3MgRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyOwogICAgIGNsYXNzIEZyYW1lU2VsZWN0aW9uOwogICAgIGNsYXNzIEZyYW1l
VmlldzsKICAgICBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTFRh
YmxlQ2VsbEVsZW1lbnQ7CisgICAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAgICAgY2xhc3MgSW50UmVj
dDsKICAgICBjbGFzcyBNYWluRnJhbWU7CiAgICAgY2xhc3MgTm9kZTsKQEAgLTE3Nyw5ICsxNzgs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgU3RyaW5nIGRpc3BsYXlTdHJpbmdN
b2RpZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKLSAgICAgICAgRHJhZ0lt
YWdlUmVmIG5vZGVJbWFnZShOb2RlKik7Ci0gICAgICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2VG
b3JTZWxlY3Rpb24oKTsKLQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9u
Rm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwogICAgICAgICBEb2N1bWVudCog
ZG9jdW1lbnRBdFBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCk7CiAgICAgICAgIFBh
c3NSZWZQdHI8UmFuZ2U+IHJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ZTA1Y2U2NWYxZDNhM2JmZGU4ZDM3Zjc1MTRlYjgzNzI3Yjg5NGRlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTAsMCArMSwx
MzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisg
KiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRnJhbWVT
bmFwc2hvdHRpbmcuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUu
aCIKKyNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgor
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTY29wZWRGcmFt
ZVBhaW50aW5nU3RhdGUgeworICAgIFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZShGcmFtZSYgZnJh
bWUsIE5vZGUqIG5vZGUpCisgICAgICAgIDogZnJhbWUoZnJhbWUpCisgICAgICAgICwgbm9kZShu
b2RlKQorICAgICAgICAsIHBhaW50QmVoYXZpb3IoZnJhbWUudmlldygpLT5wYWludEJlaGF2aW9y
KCkpCisgICAgICAgICwgYmFja2dyb3VuZENvbG9yKGZyYW1lLnZpZXcoKS0+YmFzZUJhY2tncm91
bmRDb2xvcigpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPnJlbmRlcmVy
KCkpOworICAgIH0KKworICAgIH5TY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoKQorICAgIHsKKyAg
ICAgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOworICAg
ICAgICBmcmFtZS52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9y
KTsKKyAgICAgICAgZnJhbWUudmlldygpLT5zZXROb2RlVG9EcmF3KG51bGxwdHIpOworICAgIH0K
KworICAgIEZyYW1lJiBmcmFtZTsKKyAgICBOb2RlKiBub2RlOworICAgIFBhaW50QmVoYXZpb3Ig
cGFpbnRCZWhhdmlvcjsKKyAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Cit9OworCitzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1lJiBmcmFtZSwgY29u
c3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykKK3sKKyAgICBG
cmFtZVZpZXc6OlNlbGVjdGlvbkluU25hcHNob3Qgc2hvdWxkSW5jbHVkZVNlbGVjdGlvbiA9IEZy
YW1lVmlldzo6SW5jbHVkZVNlbGVjdGlvbjsKKyAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0
aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdobGlnaHRpbmcpCisgICAgICAgIHNob3VsZEluY2x1ZGVT
ZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rpb247CisKKyAgICBGcmFtZVZpZXc6
OkNvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IGNvb3JkaW5hdGVTcGFjZSA9IEZyYW1lVmlldzo6
RG9jdW1lbnRDb29yZGluYXRlczsKKyAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0lu
Vmlld0Nvb3JkaW5hdGVzKQorICAgICAgICBjb29yZGluYXRlU3BhY2UgPSBGcmFtZVZpZXc6OlZp
ZXdDb29yZGluYXRlczsKKworICAgIGNvbnN0IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBzdGF0
ZShmcmFtZSwgbnVsbHB0cik7CisKKyAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IgPSBz
dGF0ZS5wYWludEJlaGF2aW9yOworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRm9y
Y2VCbGFja1RleHQpCisgICAgICAgIHBhaW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvckZvcmNl
QmxhY2tUZXh0OworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rp
b25Pbmx5KQorICAgICAgICBwYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9u
bHk7CisKKyAgICAvLyBPdGhlciBwYWludCBiZWhhdmlvcnMgYXJlIHNldCBieSBwYWludENvbnRl
bnRzRm9yU25hcHNob3QuCisgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKHBhaW50
QmVoYXZpb3IpOworICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworCisgICAg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBmcmFtZS5wYWdlKCkgPyBmcmFtZS5wYWdlKCktPmRl
dmljZVNjYWxlRmFjdG9yKCkgOiAxOworICAgIEludFJlY3QgdXNlZFJlY3QoaW1hZ2VSZWN0KTsK
KyAgICB1c2VkUmVjdC5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodXNlZFJlY3Qu
c2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgaWYg
KCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJ1ZmZlci0+Y29udGV4dCgp
LT50cmFuc2xhdGUoLXVzZWRSZWN0LngoKSwgLXVzZWRSZWN0LnkoKSk7CisgICAgYnVmZmVyLT5j
b250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHVzZWRSZWN0Lm1heFgoKSwgdXNlZFJlY3Qu
bWF4WSgpKSk7CisKKyAgICBmcmFtZS52aWV3KCktPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChi
dWZmZXItPmNvbnRleHQoKSwgdXNlZFJlY3QsIHNob3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3Jk
aW5hdGVTcGFjZSk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBzbmFwc2hvdFNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIFNuYXBzaG90T3B0aW9u
cyBvcHRpb25zKQoreworICAgIGlmICghZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIEZvcmNlIHBhaW50aW5nIG9mIG9ubHkgdGhl
IHNlbGVjdGlvbiBhcmVhLgorICAgIG9wdGlvbnMgfD0gU25hcHNob3RPcHRpb25zUGFpbnRTZWxl
Y3Rpb25Pbmx5OworICAgIEludFJlY3Qgc2VsZWN0aW9uUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
ZnJhbWUuc2VsZWN0aW9uKCkuYm91bmRzKCkpOworICAgIHJldHVybiBzbmFwc2hvdEZyYW1lUmVj
dChmcmFtZSwgc2VsZWN0aW9uUmVjdCwgb3B0aW9ucyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiBmcmFtZSwgTm9kZSYgbm9kZSkKK3sKKyAg
ICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBpZiAoIW5vZGUucmVuZGVy
ZXIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBjb25zdCBTY29wZWRGcmFtZVBh
aW50aW5nU3RhdGUgc3RhdGUoZnJhbWUsICZub2RlKTsKKworICAgIGZyYW1lLnZpZXcoKS0+c2V0
QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgIGZyYW1lLnZpZXco
KS0+c2V0Tm9kZVRvRHJhdygmbm9kZSk7CisKKyAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsK
KyAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3Qobm9kZS5yZW5k
ZXJlcigpLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworICAgIHJldHVybiBzbmFw
c2hvdEZyYW1lUmVjdChmcmFtZSwgcGFpbnRpbmdSZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmEyNDg5N2Q1NzA0NWNhNGFkMmQ0ZGQwMDNmMmE3Nzk5N2I1NDBlNTYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmgKQEAgLTAsMCArMSw1
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQorICogQ29weXJpZ2h0IChDKSAy
MDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29w
eXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworICogSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAq
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZyYW1lU25hcHNob3R0aW5nX2gKKyNkZWZpbmUgRnJh
bWVTbmFwc2hvdHRpbmdfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOwor
Y2xhc3MgSW50UmVjdDsKK2NsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgTm9kZTsKKworZW51bSB7
CisgICAgU25hcHNob3RPcHRpb25zTm9uZSA9IDAsCisgICAgU25hcHNob3RPcHRpb25zRXhjbHVk
ZVNlbGVjdGlvbkhpZ2hsaWdodGluZyA9IDEgPDwgMCwKKyAgICBTbmFwc2hvdE9wdGlvbnNQYWlu
dFNlbGVjdGlvbk9ubHkgPSAxIDw8IDEsCisgICAgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRp
bmF0ZXMgPSAxIDw8IDIsCisgICAgU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgPSAxIDw8
IDMsCit9OwordHlwZWRlZiB1bnNpZ25lZCBTbmFwc2hvdE9wdGlvbnM7CisKK3N0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0
JiwgU25hcHNob3RPcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZSk7CitzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYsIE5vZGUmKTsKK3N0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmLCBTbmFwc2hvdE9wdGlv
bnMgPSBTbmFwc2hvdE9wdGlvbnNOb25lKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRnJhbWVTbmFwc2hvdHRpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRnJhbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmYjFmOTFiY2JkNmYwNjI3YTYxZDFl
OTRkZTliNzE0YThiNTQzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDY0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGcmFtZS5oIgotCi0jaW1wb3J0
ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbXBvcnQgIkZy
YW1lU2VsZWN0aW9uLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgotI2ltcG9y
dCAiRnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1EcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewot
ICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsgLy8gZm9yY2VzIHN0eWxlIHJlY2FsYwotCi0gICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5k
ZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsK
LSAgICBOU1JlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+
cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKLQotICAgIG1fdmlldy0+c2V0Tm9kZVRv
RHJhdyhub2RlKTsgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0gICAg
TlNJbWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdCh0aGlzLCBwYWludGluZ1JlY3QpOwotICAg
IG1fdmlldy0+c2V0Tm9kZVRvRHJhdygwKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLURy
YWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoIXNl
bGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gc2Vs
ZWN0aW9uSW1hZ2UodGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiZmFiNjdlNzY1ODE0YWU2Y2JjOTAxYmFkNDRhZmQxNTNmODYyYTIy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGcmFtZVNuYXBzaG90dGluZ01hY19oCi0j
ZGVmaW5lIEZyYW1lU25hcHNob3R0aW5nTWFjX2gKLQotT0JKQ19DTEFTUyBOU0ltYWdlOwotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZyYW1lOwotY2xhc3MgUmFuZ2U7Ci1jbGFzcyBO
b2RlOwotCi1OU0ltYWdlKiBzZWxlY3Rpb25JbWFnZShGcmFtZSosIGJvb2wgZm9yY2VCbGFja1Rl
eHQgPSBmYWxzZSk7Ci1OU0ltYWdlKiByYW5nZUltYWdlKEZyYW1lKiwgUmFuZ2UqLCBib29sIGZv
cmNlQmxhY2tUZXh0ID0gZmFsc2UpOwotTlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoRnJhbWUq
LCBOb2RlKiwgTlNSZWN0KiBpbWFnZVJlY3QsIE5TUmVjdCogZWxlbWVudFJlY3QpOwotTlNJbWFn
ZSogaW1hZ2VGcm9tUmVjdChGcmFtZSosIE5TUmVjdCk7Ci0KLX0KLQotI2VuZGlmIC8vIEZyYW1l
U25hcHNob3R0aW5nTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Zy
YW1lU25hcHNob3R0aW5nTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFw
c2hvdHRpbmdNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MmMyZjIzY2Ix
N2JkMDNkNGU4YTVlZTE5NTE0YWM0MzkxZDE5ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hv
dHRpbmdNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5
YWtvdiAoYXBAbnlwb3AuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCi0KLSNpbXBvcnQgIkJsb2NrRXhj
ZXB0aW9ucy5oIgotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCi0jaW1w
b3J0ICJGcmFtZVNlbGVjdGlvbi5oIgotI2ltcG9ydCAiRnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJH
cmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIlJhbmdlLmgiCi0jaW1wb3J0ICJSZW5kZXJWaWV3
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotTlNJbWFnZSogaW1hZ2VGcm9tUmVjdChGcmFt
ZSogZnJhbWUsIE5TUmVjdCByZWN0KQotewotICAgIFBhaW50QmVoYXZpb3Igb2xkQmVoYXZpb3Ig
PSBmcmFtZS0+dmlldygpLT5wYWludEJlaGF2aW9yKCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0
UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRp
bmdMYXllcnMpOwotICAgIAotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICAK
LSAgICBOU0ltYWdlKiByZXN1bHRJbWFnZSA9IFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoU2l6
ZTpyZWN0LnNpemVdIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBpZiAocmVjdC5zaXplLndpZHRo
ICE9IDAgJiYgcmVjdC5zaXplLmhlaWdodCAhPSAwKSB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1k
ZWNsYXJhdGlvbnMiCi0gICAgICAgIFtyZXN1bHRJbWFnZSBzZXRGbGlwcGVkOllFU107Ci0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgICAgIFtyZXN1bHRJbWFnZSBsb2NrRm9jdXNd
OwotCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoKENHQ29udGV4dFJl
ZilbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdKTsgICAg
ICAgIAotICAgICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotICAgICAgICBncmFwaGljc0Nv
bnRleHQudHJhbnNsYXRlKC1yZWN0Lm9yaWdpbi54LCAtcmVjdC5vcmlnaW4ueSk7Ci0gICAgICAg
IGZyYW1lLT52aWV3KCktPnBhaW50Q29udGVudHMoJmdyYXBoaWNzQ29udGV4dCwgSW50UmVjdChy
ZWN0KSk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICAgICAgW3Jl
c3VsdEltYWdlIHVubG9ja0ZvY3VzXTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0j
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9u
cyIKLSAgICAgICAgW3Jlc3VsdEltYWdlIHNldEZsaXBwZWQ6Tk9dOwotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAotICAgIH0KLSAgICAKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJl
aGF2aW9yKG9sZEJlaGF2aW9yKTsKLSAgICByZXR1cm4gcmVzdWx0SW1hZ2U7Ci0gICAgCi0gICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICAKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQ
YWludEJlaGF2aW9yKG9sZEJlaGF2aW9yKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi1OU0ltYWdl
KiBzZWxlY3Rpb25JbWFnZShGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCi17Ci0g
ICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9u
T25seSB8IChmb3JjZUJsYWNrVGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDAp
KTsKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgTlNJbWFnZSog
cmVzdWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgZnJhbWUtPnNlbGVjdGlvbigpLmJvdW5kcygp
KTsKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JOb3Jt
YWwpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLU5TSW1hZ2UgKnJhbmdlSW1hZ2UoRnJhbWUq
IGZyYW1lLCBSYW5nZSogcmFuZ2UsIGJvb2wgZm9yY2VCbGFja1RleHQpCi17Ci0gICAgZnJhbWUt
PnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IChm
b3JjZUJsYWNrVGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsKLSAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgUmVuZGVyVmlldyogdmlldyA9
IGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlLT5zdGFydFBvc2l0aW9uKCk7Ci0g
ICAgUG9zaXRpb24gY2FuZGlkYXRlID0gc3RhcnQuZG93bnN0cmVhbSgpOwotICAgIGlmIChjYW5k
aWRhdGUuZGVwcmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKS0+cmVu
ZGVyZXIoKSkKLSAgICAgICAgc3RhcnQgPSBjYW5kaWRhdGU7Ci0KLSAgICBQb3NpdGlvbiBlbmQg
PSByYW5nZS0+ZW5kUG9zaXRpb24oKTsKLSAgICBjYW5kaWRhdGUgPSBlbmQudXBzdHJlYW0oKTsK
LSAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0
ZWROb2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgIGVuZCA9IGNhbmRpZGF0ZTsKLQotICAgIGlm
IChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkgfHwgc3RhcnQgPT0gZW5kKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgUmVuZGVyT2JqZWN0KiBzYXZlZFN0YXJ0UmVuZGVyZXI7Ci0g
ICAgaW50IHNhdmVkU3RhcnRPZmZzZXQ7Ci0gICAgUmVuZGVyT2JqZWN0KiBzYXZlZEVuZFJlbmRl
cmVyOwotICAgIGludCBzYXZlZEVuZE9mZnNldDsKLSAgICB2aWV3LT5nZXRTZWxlY3Rpb24oc2F2
ZWRTdGFydFJlbmRlcmVyLCBzYXZlZFN0YXJ0T2Zmc2V0LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZl
ZEVuZE9mZnNldCk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydC5k
ZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOwotICAgIGlmICghc3RhcnRSZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmQu
ZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIWVuZFJlbmRlcmVyKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgdmlldy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIs
IHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJlbmRlcmVyLCBlbmQuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOwotICAgIE5T
SW1hZ2UqIHJlc3VsdCA9IGltYWdlRnJvbVJlY3QoZnJhbWUsIHZpZXctPnNlbGVjdGlvbkJvdW5k
cygpKTsKLSAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc2F2ZWRTdGFydFJlbmRlcmVyLCBzYXZlZFN0
YXJ0T2Zmc2V0LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZlZEVuZE9mZnNldCwgUmVuZGVyVmlldzo6
UmVwYWludE5vdGhpbmcpOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQ
YWludEJlaGF2aW9yTm9ybWFsKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLU5TSW1hZ2Uq
IHNuYXBzaG90RHJhZ0ltYWdlKEZyYW1lKiBmcmFtZSwgTm9kZSogbm9kZSwgTlNSZWN0KiBpbWFn
ZVJlY3QsIE5TUmVjdCogZWxlbWVudFJlY3QpCi17Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAKLSAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOyAgICAvLyBt
YXJrIGRyYWdnZWQgbm9kZXMgKHNvIHRoZXkgcGljayB1cCB0aGUgcmlnaHQgQ1NTKQotICAgIGZy
YW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsgIC8vIGZvcmNlcyBzdHlsZSByZWNhbGMg
LSBuZWVkZWQgc2luY2UgY2hhbmdpbmcgdGhlIGRyYWcgc3RhdGUgbWlnaHQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbXBseSBuZXcgc3R5bGVzLCBwbHVzIEpT
IGNvdWxkIGhhdmUgY2hhbmdlZCBvdGhlciB0aGluZ3MKLQotCi0gICAgLy8gRG9jdW1lbnQ6OnVw
ZGF0ZUxheW91dCBtYXkgaGF2ZSBibG93biBhd2F5IHRoZSBvcmlnaW5hbCBSZW5kZXJFbGVtZW50
LgotICAgIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQot
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAg
TlNSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50
aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBpZiAoTlNJc0VtcHR5UmVjdChwYWlu
dGluZ1JlY3QpKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0
Tm9kZVRvRHJhdyhub2RlKTsgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2Rl
Ci0gICAgTlNJbWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgcGFpbnRpbmdSZWN0
KTsKLSAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsKLSAgICBmcmFtZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJh
dygwKTsKLQotICAgIGlmIChlbGVtZW50UmVjdCkKLSAgICAgICAgKmVsZW1lbnRSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdCh0b3BMZXZlbFJlY3QpOwotICAgIGlmIChpbWFnZVJlY3QpCi0gICAg
ICAgICppbWFnZVJlY3QgPSBwYWludGluZ1JlY3Q7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93
aW4vRnJhbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCmlu
ZGV4IDVhYWYzYTY3OGM5ZTU0M2FmNjgzYjM3YWQ1YjA2Y2NlMDY0NDNiOWYuLjk2NzRmMTc2OGY1
ZGQ4NDI1YjYwYzdhZjE2ZjBmMWY3ZDZmNzYzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvd2luL0ZyYW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFt
ZVdpbi5jcHAKQEAgLTU3LDMwICs1Nyw0IEBAIEdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21T
ZWxlY3Rpb24oRnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQogICAgIHJldHVybiBp
bWFnZTsKIH0KIAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQot
ewotICAgIGlmIChzZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiBpbWFnZUZy
b21TZWxlY3Rpb24odGhpcywgZmFsc2UpLmxlYWsoKTsKLQotICAgIHJldHVybiAwOwotfQotCi1E
cmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewotICAgIGRvY3VtZW50
KCktPnVwZGF0ZUxheW91dCgpOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUt
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBp
eGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0
KSk7Ci0KLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFs
IHN1Yi10cmVlIGRyYXdpbmcgbW9kZQotICAgIEdESU9iamVjdDxIQklUTUFQPiByZXN1bHQgPSBp
bWFnZUZyb21SZWN0KHRoaXMsIHBhaW50aW5nUmVjdCk7Ci0gICAgbV92aWV3LT5zZXROb2RlVG9E
cmF3KDApOwotCi0gICAgcmV0dXJuIHJlc3VsdC5sZWFrKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCmluZGV4IDNhMjcyM2U2M2Q2ZDdl
N2VjMDQ0Y2IxMmYyZWE3YmQwNmNmZTY1OWYuLjI2OTcyNWMxZjliOWI4MGQ1NzgxNDg0ZjkzMWFi
MjVkZDNhZTMzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2lu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uaApAQCAtMzUsNyArMzUs
NyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNzIEludFJlY3Q7CiAKIEdESU9iamVjdDxIQklUTUFQPiBp
bWFnZUZyb21SZWN0KGNvbnN0IEZyYW1lKiwgSW50UmVjdCYpOwotR0RJT2JqZWN0PEhCSVRNQVA+
IGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSosIGJvb2wgZm9yY2VXaGl0ZVRleHQpOworR0RJT2Jq
ZWN0PEhCSVRNQVA+IGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSosIGJvb2wgZm9yY2VCbGFja1Rl
eHQpOwogdm9pZCBjb21wdXRlUGFnZVJlY3RzRm9yRnJhbWUoRnJhbWUqLCBjb25zdCBJbnRSZWN0
JiBwcmludFJlY3QsIGZsb2F0IGhlYWRlckhlaWdodCwgZmxvYXQgZm9vdGVySGVpZ2h0LCBmbG9h
dCB1c2VyU2NhbGVGYWN0b3IsIFZlY3RvcjxJbnRSZWN0PiYgb3V0UGFnZXMsIGludCYgb3V0UGFn
ZUhlaWdodCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnSW1hZ2UuY3BwCmluZGV4IGI4MWFmZDU3OWU4MjkzZWVmYTJiYTkzYjliYjU1YzFmNTA3NmNm
NDcuLmU2NTczOTliMzIzODk1NmVmNDFjMTlmMWQxOTZmNzUzODQyMmMyYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0yOCwyOSArMjgsMzcgQEAKIAogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZy
YW1lU25hcHNob3R0aW5nLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5o
IgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAor
CiBEcmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiBpbWFnZSwg
Y29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBmbG9h
dCBoZWlnaHRSZXNpemVSYXRpbyA9IDAuMGY7CiAgICAgZmxvYXQgd2lkdGhSZXNpemVSYXRpbyA9
IDAuMGY7CiAgICAgZmxvYXQgcmVzaXplUmF0aW8gPSAtMS4wZjsKICAgICBJbnRTaXplIG9yaWdp
bmFsU2l6ZSA9IGRyYWdJbWFnZVNpemUoaW1hZ2UpOwotICAgIAorCiAgICAgaWYgKHNyY1NpemUu
d2lkdGgoKSA+IHNpemUud2lkdGgoKSkgewogICAgICAgICB3aWR0aFJlc2l6ZVJhdGlvID0gc2l6
ZS53aWR0aCgpIC8gKGZsb2F0KXNyY1NpemUud2lkdGgoKTsKICAgICAgICAgcmVzaXplUmF0aW8g
PSB3aWR0aFJlc2l6ZVJhdGlvOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzcmNTaXplLmhlaWdo
dCgpID4gc2l6ZS5oZWlnaHQoKSkgewogICAgICAgICBoZWlnaHRSZXNpemVSYXRpbyA9IHNpemUu
aGVpZ2h0KCkgLyAoZmxvYXQpc3JjU2l6ZS5oZWlnaHQoKTsKICAgICAgICAgaWYgKChyZXNpemVS
YXRpbyA8IDAuMGYpIHx8IChyZXNpemVSYXRpbyA+IGhlaWdodFJlc2l6ZVJhdGlvKSkKICAgICAg
ICAgICAgIHJlc2l6ZVJhdGlvID0gaGVpZ2h0UmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAg
ICAgaWYgKHNyY1NpemUgPT0gb3JpZ2luYWxTaXplKQogICAgICAgICByZXR1cm4gcmVzaXplUmF0
aW8gPiAwLjBmID8gc2NhbGVEcmFnSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZShyZXNpemVSYXRpbywg
cmVzaXplUmF0aW8pKSA6IGltYWdlOwotICAgIAorCiAgICAgLy8gVGhlIGltYWdlIHdhcyBzY2Fs
ZWQgaW4gdGhlIHdlYnBhZ2Ugc28gYXQgbWluaW11bSB3ZSBtdXN0IGFjY291bnQgZm9yIHRoYXQg
c2NhbGluZwogICAgIGZsb2F0IHNjYWxleCA9IHNyY1NpemUud2lkdGgoKSAvIChmbG9hdClvcmln
aW5hbFNpemUud2lkdGgoKTsKICAgICBmbG9hdCBzY2FsZXkgPSBzcmNTaXplLmhlaWdodCgpIC8g
KGZsb2F0KW9yaWdpbmFsU2l6ZS5oZWlnaHQoKTsKQEAgLTU4LDE0ICs2NiwxNTQgQEAgRHJhZ0lt
YWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIGMKICAgICAgICAgc2NhbGV4ICo9IHJlc2l6ZVJhdGlvOwogICAgICAg
ICBzY2FsZXkgKj0gcmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHNjYWxl
RHJhZ0ltYWdlKGltYWdlLCBGbG9hdFNpemUoc2NhbGV4LCBzY2FsZXkpKTsKIH0KIAorc3RydWN0
IFNjb3BlZE5vZGVEcmFnU3RhdGUgeworICAgIFNjb3BlZE5vZGVEcmFnU3RhdGUoRnJhbWUmIGZy
YW1lLCBOb2RlJiBub2RlKQorICAgICAgICA6IGZyYW1lKGZyYW1lKQorICAgICAgICAsIG5vZGUo
bm9kZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChub2RlLnJlbmRlcmVyKCkpOworICAgICAgICBu
b2RlLnJlbmRlcmVyKCktPnVwZGF0ZURyYWdTdGF0ZSh0cnVlKTsKKyAgICAgICAgZnJhbWUuZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgfQorCisgICAgflNjb3BlZE5vZGVEcmFnU3Rh
dGUoKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUucmVuZGVyZXIoKSkgeworICAgICAgICAgICAg
bm9kZS5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUoZmFsc2UpOworICAgICAgICAgICAgZnJh
bWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBG
cmFtZSYgZnJhbWU7CisgICAgTm9kZSYgbm9kZTsKK307CisKK3N0YXRpYyBEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
c25hcHNob3QsIE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFzbmFwc2hvdCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRp
b247CisjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAgICBpZiAobm9kZSkgewor
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAg
ICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IG9yaWVudGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHJlbmRlcmVyLT5zaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgb3JpZW50YXRpb24uc2V0SW1hZ2VP
cmllbnRhdGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAg
ICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyNlbmRpZgorICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBzbmFwc2hvdC0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29weUlt
YWdlTW9kZSgpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBvcmllbnRhdGlv
bik7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKEZyYW1lJiBmcmFt
ZSwgTm9kZSYgbm9kZSkKK3sKKyAgICBTY29wZWROb2RlRHJhZ1N0YXRlIGVuYWJsZURyYWcoZnJh
bWUsIG5vZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBz
bmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpOworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9t
U25hcHNob3Qoc3RkOjptb3ZlKHNuYXBzaG90KSwgJm5vZGUpOworfQorCitEcmFnSW1hZ2VSZWYg
Y3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNr
VGV4dCkKK3sKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucyA9IGZvcmNlQmxhY2tUZXh0ID8g
U25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgOiBTbmFwc2hvdE9wdGlvbnNOb25lOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdFNlbGVjdGlv
bihmcmFtZSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dChzdGQ6Om1vdmUoc25hcHNob3QpLCBudWxscHRyKTsKK30KKworc3RydWN0IFNjb3BlZEZyYW1l
U2VsZWN0aW9uU3RhdGUgeworICAgIFNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUoRnJhbWUmIGZy
YW1lKQorICAgICAgICA6IGZyYW1lKGZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKFJlbmRlclZp
ZXcqIHJvb3QgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJvb3QtPmdl
dFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydE9mZnNldCwgZW5kUmVuZGVyZXIsIGVuZE9m
ZnNldCk7CisgICAgfQorCisgICAgflNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUoKQorICAgIHsK
KyAgICAgICAgaWYgKFJlbmRlclZpZXcqIHJvb3QgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKSkK
KyAgICAgICAgICAgIHJvb3QtPnNldFNlbGVjdGlvbihzdGFydFJlbmRlcmVyLCBzdGFydE9mZnNl
dCwgZW5kUmVuZGVyZXIsIGVuZE9mZnNldCwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOwor
ICAgIH0KKworICAgIEZyYW1lJiBmcmFtZTsKKyAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVy
ZXI7CisgICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlcjsKKyAgICBpbnQgc3RhcnRPZmZzZXQ7
CisgICAgaW50IGVuZE9mZnNldDsKK307CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VG
b3JSYW5nZShGcmFtZSYgZnJhbWUsIFJhbmdlJiByYW5nZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkK
K3sKKyAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBSZW5kZXJWaWV3
KiB2aWV3ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCk7CisgICAgaWYgKCF2aWV3KQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFRvIHNuYXBzaG90IHRoZSByYW5nZSwgdGVtcG9y
YXJpbHkgc2VsZWN0IGl0IGFuZCB0YWtlIHNlbGVjdGlvbiBzbmFwc2hvdC4KKyAgICBQb3NpdGlv
biBzdGFydCA9IHJhbmdlLnN0YXJ0UG9zaXRpb24oKTsKKyAgICBQb3NpdGlvbiBjYW5kaWRhdGUg
PSBzdGFydC5kb3duc3RyZWFtKCk7CisgICAgaWYgKGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgp
ICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICBzdGFy
dCA9IGNhbmRpZGF0ZTsKKworICAgIFBvc2l0aW9uIGVuZCA9IHJhbmdlLmVuZFBvc2l0aW9uKCk7
CisgICAgY2FuZGlkYXRlID0gZW5kLnVwc3RyZWFtKCk7CisgICAgaWYgKGNhbmRpZGF0ZS5kZXBy
ZWNhdGVkTm9kZSgpICYmIGNhbmRpZGF0ZS5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQor
ICAgICAgICBlbmQgPSBjYW5kaWRhdGU7CisKKyAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5k
LmlzTnVsbCgpIHx8IHN0YXJ0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBjb25zdCBTY29wZWRGcmFtZVNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKGZyYW1lKTsK
KworICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciA9IHN0YXJ0LmRlcHJlY2F0ZWROb2Rl
KCktPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyT2JqZWN0KiBlbmRSZW5kZXJlciA9IGVuZC5kZXBy
ZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgIGlmICghc3RhcnRSZW5kZXJlciB8fCAhZW5k
UmVuZGVyZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgU25hcHNob3RPcHRpb25z
IG9wdGlvbnMgPSBmb3JjZUJsYWNrVGV4dCA/IFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0
IDogU25hcHNob3RPcHRpb25zTm9uZTsKKyAgICBvcHRpb25zIHw9IFNuYXBzaG90T3B0aW9uc1Bh
aW50U2VsZWN0aW9uT25seTsKKyAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc3RhcnRSZW5kZXJlciwg
c3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kUmVuZGVyZXIsIGVuZC5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpLCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisgICAgLy8g
V2UgY2FwdHVyZSB1c2luZyBzbmFwc2hvdEZyYW1lUmVjdCgpIGJlY2F1c2Ugd2UgZmFrZSB1cCB0
aGUgc2VsZWN0aW9uIHVzaW5nCisgICAgLy8gRnJhbWVWaWV3IGJ1dCBzbmFwc2hvdFNlbGVjdGlv
bigpIHVzZXMgdGhlIHNlbGVjdGlvbiBmcm9tIHRoZSBGcmFtZSBpdHNlbGYuCisgICAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdCA9IHNuYXBzaG90RnJhbWVSZWN0KGZyYW1l
LCB2aWV3LT5zZWxlY3Rpb25Cb3VuZHMoKSwgb3B0aW9ucyk7CisgICAgcmV0dXJuIGNyZWF0ZURy
YWdJbWFnZUZyb21TbmFwc2hvdChzdGQ6Om1vdmUoc25hcHNob3QpLCBudWxscHRyKTsKK30KKwor
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckltYWdlKEZyYW1lJiBmcmFtZSwgTm9kZSYg
bm9kZSwgSW50UmVjdCYgaW1hZ2VSZWN0LCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKK3sKKyAgICBT
Y29wZWROb2RlRHJhZ1N0YXRlIGVuYWJsZURyYWcoZnJhbWUsIG5vZGUpOworCisgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG5vZGUucmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIENhbGN1bGF0ZSBpbWFnZSBhbmQgZWxl
bWVudCBtZXRyaWNzIGZvciB0aGUgY2xpZW50LCB0aGVuIGNyZWF0ZSBkcmFnIGltYWdlLgorICAg
IExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gcGl4
ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3Qp
KTsKKworICAgIGlmIChwYWludGluZ1JlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIGVsZW1lbnRSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdCh0b3BMZXZlbFJl
Y3QpOworICAgIGltYWdlUmVjdCA9IHBhaW50aW5nUmVjdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3QgPSBzbmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpOworICAg
IHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc3RkOjptb3ZlKHNuYXBzaG90KSwg
Jm5vZGUpOworfQorCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgKCFQTEFURk9STShXSU4pIHx8IE9T
KFdJTkNFKSkKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYsIGNvbnN0
IFN0cmluZyYsIEZvbnRSZW5kZXJpbmdNb2RlKQogewotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKaW5k
ZXggZDhmNTJiY2ZhZDQ0MjQzZjhhY2NiODY3MGEwOTRhZjExM2M0YjI0ZC4uZDgzNjk2ZTMzMTFj
Y2U1NDE3MzUyYjZkMDQ2OTlhMTAzMzQ0MGYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmgKQEAgLTI2LDEwICsyNiwxMSBAQAogI2lmbmRlZiBEcmFnSW1hZ2VfaAogI2RlZmluZSBE
cmFnSW1hZ2VfaAogCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiRm9udFJlbmRl
cmluZ01vZGUuaCIKKyNpbmNsdWRlICJGcmFtZVNuYXBzaG90dGluZy5oIgogI2luY2x1ZGUgIklt
YWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiRmxvYXRT
aXplLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAg
LTQxLDM4ICs0Miw0NiBAQCB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18qIEhCSVRNQVA7CiB0eXBl
ZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7CiAjZW5kaWYKIAotLy9X
ZSBuZWVkIHRvICNkZWZpbmUgWU9mZnNldCBhcyBpdCBuZWVkcyB0byBiZSBzaGFyZWQgd2l0aCBX
ZWJLaXQKKy8vIFdlIG5lZWQgdG8gI2RlZmluZSBZT2Zmc2V0IGFzIGl0IG5lZWRzIHRvIGJlIHNo
YXJlZCB3aXRoIFdlYktpdAogI2RlZmluZSBEcmFnTGFiZWxCb3JkZXJZT2Zmc2V0IDIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgSW1hZ2U7Ci0gICAgY2xhc3MgVVJMOworY2xh
c3MgRnJhbWU7CitjbGFzcyBJbWFnZTsKK2NsYXNzIEludFJlY3Q7CitjbGFzcyBOb2RlOworY2xh
c3MgUmFuZ2U7CitjbGFzcyBVUkw7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdHlwZWRlZiBS
ZXRhaW5QdHI8TlNJbWFnZT4gRHJhZ0ltYWdlUmVmOwordHlwZWRlZiBSZXRhaW5QdHI8TlNJbWFn
ZT4gRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oV0lOKQotICAgIHR5cGVkZWYgSEJJVE1B
UCBEcmFnSW1hZ2VSZWY7Cit0eXBlZGVmIEhCSVRNQVAgRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShOSVgpCi0gICAgdHlwZWRlZiBjYWlyb19zdXJmYWNlX3Qq
IERyYWdJbWFnZVJlZjsKK3R5cGVkZWYgY2Fpcm9fc3VyZmFjZV90KiBEcmFnSW1hZ2VSZWY7CiAj
ZWxpZiBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpCi0gICAgdHlwZWRlZiB2
b2lkKiBEcmFnSW1hZ2VSZWY7Cit0eXBlZGVmIHZvaWQqIERyYWdJbWFnZVJlZjsKICNlbmRpZgot
ICAgIAotICAgIEludFNpemUgZHJhZ0ltYWdlU2l6ZShEcmFnSW1hZ2VSZWYpOwotICAgIAotICAg
IC8vVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBtZW1vcnkgbmV1dHJhbCwgZWcuIGlmIHRoZXkg
cmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGltYWdlLCAKLSAgICAvL3RoZXkgc2hvdWxkIHJlbGVh
c2UgdGhlIGlucHV0IGltYWdlLiAgQXMgYSBjb3JvbGxhcnkgdGhlc2UgbWV0aG9kcyBkb24ndCBn
dWFyYW50ZWUKLSAgICAvL3RoZSBpbnB1dCBpbWFnZSByZWYgd2lsbCBzdGlsbCBiZSB2YWxpZCBh
ZnRlciB0aGV5IGhhdmUgYmVlbiBjYWxsZWQKLSAgICBEcmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdl
VG9NYXhTaXplKERyYWdJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSk7Ci0gICAgRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJ
bWFnZVJlZiwgRmxvYXRTaXplIHNjYWxlKTsKLSAgICBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFn
SW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwgZmxvYXQgZGVsdGEpOwotICAgIAot
ICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pOwotICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJ
Y29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICBEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGb250
UmVuZGVyaW5nTW9kZSk7Ci0gICAgdm9pZCBkZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmKTsK
LX0KIAorSW50U2l6ZSBkcmFnSW1hZ2VTaXplKERyYWdJbWFnZVJlZik7CisKKy8vIFRoZXNlIGZ1
bmN0aW9ucyBzaG91bGQgYmUgbWVtb3J5IG5ldXRyYWwsIGVnLiBpZiB0aGV5IHJldHVybiBhIG5l
d2x5IGFsbG9jYXRlZCBpbWFnZSwKKy8vIHRoZXkgc2hvdWxkIHJlbGVhc2UgdGhlIGlucHV0IGlt
YWdlLiBBcyBhIGNvcm9sbGFyeSB0aGVzZSBtZXRob2RzIGRvbid0IGd1YXJhbnRlZQorLy8gdGhl
IGlucHV0IGltYWdlIHJlZiB3aWxsIHN0aWxsIGJlIHZhbGlkIGFmdGVyIHRoZXkgaGF2ZSBiZWVu
IGNhbGxlZC4KK0RyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJhZ0ltYWdlUmVm
LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbnRTaXplJiBkc3RTaXplKTsKK0RyYWdJ
bWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSk7CitE
cmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiwgZmxv
YXQgZGVsdGEpOworCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdl
KiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKKworRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoRnJhbWUmLCBOb2RlJik7CitEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKEZyYW1lJiwgYm9vbCBmb3JjZUJsYWNrVGV4
dCA9IGZhbHNlKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZShGcmFtZSYs
IFJhbmdlJiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKTsKK0RyYWdJbWFnZVJlZiBjcmVh
dGVEcmFnSW1hZ2VGb3JJbWFnZShGcmFtZSYsIE5vZGUmLCBJbnRSZWN0JiBpbWFnZVJlY3QsIElu
dFJlY3QmIGVsZW1lbnRSZWN0KTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5r
KFVSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlKTsKK3ZvaWQgZGVs
ZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7Cit9CiAKLSNlbmRpZiAvLyFEcmFnSW1hZ2VfaAor
I2VuZGlmIC8vIERyYWdJbWFnZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lSU9TLm1tCmluZGV4IDVkZmY2ZjBmZTljMWQ5ZjJkZTRhMWUxMTkzYTVlZmI0
NDYyZDA3OTEuLmQ1NjJhMTYxOTI2NWZhNjFlMGI0YzE4OTZhMDhmZjVmZWIxM2I1ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCkBAIC0z
Myw3ICszMyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNlbGVjdGlvbi5oPgotI2ltcG9y
dCA8V2ViQ29yZS9GcmFtZVNuYXBzaG90dGluZ01hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFt
ZVNuYXBzaG90dGluZy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9odG1sZWRpdGluZy5o
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggYjVjMDNiYjNk
ZWZkNTQ5M2QxZGFkNjU3YTlkYTBhMTZlN2ViZWFmOC4uMTNmODMzNjhlNjgxYTVjYzdiYzQxNWYz
N2E3MmIzNGZlZjU2NzIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCkBAIC04NSw2ICs4NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0RyYWdJbWFnZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdG9yRGVs
ZXRlQWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VsZW1lbnQuaD4KQEAgLTk1LDcgKzk2LDYg
QEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2Fk
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTZWxlY3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNv
cmUvRnJhbWVTbmFwc2hvdHRpbmdNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRN
TE5hbWVzLmg+CkBAIC0xODIwLDcgKzE4MjAsMTIgQEAgc3RhdGljIGJvb2wgbW91c2VFdmVudElz
UGFydE9mQ2xpY2tPckRyYWcoTlNFdmVudCAqZXZlbnQpCiB7CiAgICAgaWYgKCFbc2VsZiBfaGFz
U2VsZWN0aW9uXSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBOU0ltYWdlICpkcmFnSW1hZ2Ug
PSBzZWxlY3Rpb25JbWFnZShjb3JlKFtzZWxmIF9mcmFtZV0pKTsKKworICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgTlNJbWFnZSAqZHJhZ0ltYWdlID0gW2NyZWF0ZURyYWdJbWFn
ZUZvclNlbGVjdGlvbigqY29yZUZyYW1lKS5sZWFrUmVmKCkgYXV0b3JlbGVhc2VdOwogICAgIFtk
cmFnSW1hZ2UgX3dlYl9kaXNzb2x2ZVRvRnJhY3Rpb246V2ViRHJhZ0ltYWdlQWxwaGFdOwogICAg
IHJldHVybiBkcmFnSW1hZ2U7CiB9CkBAIC01OTY1LDcgKzU5NzAsMTEgQEAgc3RhdGljIHZvaWQg
ZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21w
b3NpdGlvblVuZGUKIHsKICAgICBpZiAoIVtzZWxmIF9oYXNTZWxlY3Rpb25dKQogICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIHJldHVybiBzZWxlY3Rpb25JbWFnZShjb3JlKFtzZWxmIF9mcmFtZV0p
LCBmb3JjZUJsYWNrVGV4dCk7CisKKyAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBy
ZXR1cm4gW2NyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbigqY29yZUZyYW1lLCBmb3JjZUJsYWNr
VGV4dCkubGVha1JlZigpIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNSZWN0KXNlbGVjdGlvbklt
YWdlUmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwCmluZGV4IGNjYmQ3MTkwMWU0
NTU3OTAzMWI5MDJiYTU2YTg5NGU2YThkNzljYjMuLmI4MWQ0YTdkNzM0NzdhZGY4YmRiNzgzYjI1
MWRlMWRjOWZmZDkzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFz
c2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTM2
LDEwICszNiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9ET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZv
cm1FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJFbGVtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
aW1wbGVGb250RGF0YS5oPgogCiAjaW5jbHVkZSA8aW5pdGd1aWQuaD4KIC8vIHszQjBDMEVGRi00
NzhCLTRiMGItODI5MC1EMjMyMUUwOEUyM0V9CkBAIC0xMjc5LDcgKzEyODAsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnJlbmRlcmVkSW1hZ2UoSEJJVE1BUCogaW1h
Z2UpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgICppbWFn
ZSA9IGZyYW1lLT5ub2RlSW1hZ2UobV9lbGVtZW50KTsKKyAgICAqaW1hZ2UgPSBjcmVhdGVEcmFn
SW1hZ2VGb3JOb2RlKCpmcmFtZSwgKm1fZWxlbWVudCk7CiAgICAgaWYgKCEqaW1hZ2UpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218467</attachid>
            <date>2013-12-04 15:41:55 -0800</date>
            <delta_ts>2013-12-04 19:05:51 -0800</delta_ts>
            <desc>v5</desc>
            <filename>bug-124325-20131204154155.patch</filename>
            <type>text/plain</type>
            <size>67476</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwMTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRiNmExOTE2NzIxYWQ0
ZGE1Mzc3ZDJiY2RmNTZlYmE3ODZhMGU3ZS4uMzUyODdjZWMzNGMwZWJiM2I2MTI2MWU3Y2YwZDY0
MGNiOWY0YzBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTEyLTA0ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBDb25zb2xpZGF0
ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFZhcmlvdXMgc25hcHNob3QgY3JlYXRpb24gbWV0
aG9kcyBoYWQgZHVwbGljYXRlZCBjb2RlIGFuZCB3ZXJlIHNwbGl0CisgICAgICAgIGJldHdlZW4g
RnJhbWUsIERyYWdJbWFnZSwgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uc3Mu
CisgICAgICAgIFRoaXMgcGF0Y2ggcHV0cyBXZWJDb3JlIHNuYXBzaG90IG1ldGhvZHMgaW50byBG
cmFtZVNuYXBzaG90dGluZworICAgICAgICBhbmQgcmVtb3ZlcyBwbGF0Zm9ybSBpbXBsZW1lbnRh
dGlvbnMgd2hlcmUgcG9zc2libGUuCisKKyAgICAgICAgRHJhZ0ltYWdlIG1ldGhvZHMgcmV1c2Ug
c25hcHNob3QgbWV0aG9kcyB3aGVyZSBwb3NzaWJsZS4gSW5zcGVjdG9yCisgICAgICAgIHdpbGwg
YmUgYWJsZSB0byB0YWtlIHNuYXBzaG90cyB3aXRob3V0IHVzaW5nIGRyYWcgaW1hZ2VzLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
YmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTU5vZGUgcmVuZGVyZWRJbWFnZV0p
OgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpdKToK
KyAgICAgICAgKiBkb20vQ2xpcGJvYXJkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZDo6Y3JlYXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKiBkb20vQ2xpcGJvYXJkTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIHBh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6
OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgICogcGFnZS9G
cmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6U2NvcGVkRnJhbWVQYWlu
dGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZTo6
flNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZy
YW1lUmVjdCk6IE1vdmUgbW9zdCBidWZmZXIgbG9naWMgdG8gaGVyZS4KKyAgICAgICAgKFdlYkNv
cmU6OnNuYXBzaG90U2VsZWN0aW9uKTogTW92ZWQgZnJvbSBGcmFtZS4KKyAgICAgICAgKFdlYkNv
cmU6OnNuYXBzaG90Tm9kZSk6IE1vdmVkIGZyb20gRnJhbWUuCisgICAgICAgICogcGFnZS9GcmFt
ZVNuYXBzaG90dGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZU1hYy5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOiBSZW1vdmVk
LgorICAgICAgICAqIHBhZ2Uvd2luL0ZyYW1lV2luLmNwcDogcmVtb3ZlIGR1cGxpY2F0ZSBpbXBs
ZW1lbnRhdGlvbi4KKyAgICAgICAgKiBwYWdlL3dpbi9GcmFtZVdpbi5oOiBGaXggYW4gaW5jb3Jy
ZWN0IHBhcmFtZXRlciBuYW1lLgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY29wZWROb2RlRHJhZ1N0YXRlOjpTY29wZWROb2RlRHJhZ1N0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZE5vZGVEcmFnU3RhdGU6On5TY29wZWROb2RlRHJh
Z1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hvdCk6
IEJvaWxlcnBsYXRlIGJ1ZmZlciBjb252ZXJzaW9uLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RHJhZ0ltYWdlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JT
ZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZTo6
U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRGcmFt
ZVNlbGVjdGlvblN0YXRlOjp+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JSYW5nZSk6IE1vdmVkIGZyb20gRnJhbWUuCisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZSk6IE1vdmVkIGZyb20gRnJhbWVT
bmFwc2hvdHRpbmdNYWMuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5r
KTogdXNlIG51bGxwdHIuCisKIDIwMTMtMTItMDQgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgQXBwbGUgV2luZG93cyBidWlsZCBhZnRlciA8aHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTYwMTEzPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4
IDYxMmFmMTg1YzNjM2QzZDA3OTAyNjUzM2U2Zjk0MDQ1ZWExMjhjNjEuLmQ1OWZhNWIzZDcxZGY1
NWE4YWJlNjFmNDViYzZlYjUzOGFkZDZjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9z
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxMy0xMi0wNCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+
CisKKyAgICAgICAgQ29uc29saWRhdGUgdmFyaW91cyBmcmFtZSBzbmFwc2hvdCBjYXBhYmlsaXRp
ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQz
MjUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tOiB1c2UgbmV3IGhlYWRlciBmaWxlLgorCiAyMDEzLTEy
LTA0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBVcHN0
cmVhbSBidWlsZCBmaXhlcyBpbiBTb3VyY2UvV2ViS2l0L2lvcy8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCBjYWJhYmQzNTdiYTJlZmQxNWQ4YmRmMDljZTc5YWViOTA0YmVmOGMwLi5hNWUyMjcwYTY5N2I1
MjUwYWE2NDZlZTg1NWIxZjYyYTAyNzUxMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTMtMTItMDQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1
PgorCisgICAgICAgIENvbnNvbGlkYXRlIHZhcmlvdXMgZnJhbWUgc25hcHNob3QgY2FwYWJpbGl0
aWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0
MzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXNlIG5l
dyBwbGF0Zm9ybS1pbmRlcGVuZGVudCBtZXRob2RzIGluc3RlYWQgb2YgTWFjIG1ldGhvZHMuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBfc2VsZWN0aW9uRHJhZ2dpbmdJbWFnZV0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZWxl
Y3Rpb25JbWFnZUZvcmNpbmdCbGFja1RleHQ6XSk6CisKIDIwMTMtMTItMDQgIEFuZHkgRXN0ZXMg
IDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEJ1aWxkIHByb2plY3RzIHdpdGgg
JChBUkNIU19TVEFOREFSRF8zMl82NF9CSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNjI2MDJlMzc3
NTE3YzYyZjA0MGQ3MDEzYjYzNGQ1ZmE0MzdmNDAwMC4uMjQ3M2YxOWIzNGM4MDFmNGExYTZkMGE1
NjVhZDUwMWE2YTUzYjM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEz
LTEyLTA0ICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAg
ICBDb25zb2xpZGF0ZSB2YXJpb3VzIGZyYW1lIHNuYXBzaG90IGNhcGFiaWxpdGllcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDMyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogRE9NQ29yZUNsYXNzZXMu
Y3BwOgorICAgICAgICAoRE9NRWxlbWVudDo6cmVuZGVyZWRJbWFnZSk6IHVzZSBjcmVhdGVEcmFn
SW1hZ2VGb3JOb2RlLgorCiAyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBSZW1vdGUgSW5zcGVjdG9y
IGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZhU2NyaXB0Q29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBiMDI5OWQ4NTdmNDNjOTM5YTZlOTVjNGU3ZTFmNDBjNmZmMmE0
NDdkLi43NDU2MzY5OWRjMzJjMWQ4NGMwNmExMzI3ZDhlOWFlZjliYzkzNmQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMTczMiw2ICsxNzMyLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAg
IHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvRnJhbWUuY3BwCiAgICAgcGFnZS9G
cmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIuY3BwCisgICAgcGFnZS9GcmFtZVNuYXBzaG90dGluZy5j
cHAKICAgICBwYWdlL0ZyYW1lVHJlZS5jcHAKICAgICBwYWdlL0ZyYW1lVmlldy5jcHAKICAgICBw
YWdlL0dlc3R1cmVUYXBIaWdobGlnaHRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CmluZGV4IDMwMWNlYmVkZDMyOTcxZGE4ZDY1NDZlMzExOTc2ZTUwM2M1NGExYjcuLmNhNDUwMDFj
M2NhMzBmZmI1N2U4NzQ5NDNkYTM0OGVkYWY1YzZmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtNDEzMSw2ICs0MTMxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVEZXN0
cnVjdGlvbk9ic2VydmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZURlc3RydWN0
aW9uT2JzZXJ2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
VHJlZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCBhYTM2OWZiYmY2MmMyMWI4M2YyZmZiZjVjMzY1MTNmYjA3YTI4YWM0Li5l
N2ZjNWU2ZjM5ZGY1NGIwY2ZmZjU2MzU4YmVkODBlMTZjZTczNTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtNDI4LDcgKzQyOCw2IEBAIF9fWk43V2ViQ29yZTE0Y29va2llc0VuYWJsZWRFUktO
U18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUzVfCiBfX1pON1dlYkNvcmUxNGRl
Y29kZUhvc3ROYW1lRVA4TlNTdHJpbmcKIF9fWk43V2ViQ29yZTE0ZW5jb2RlSG9zdE5hbWVFUDhO
U1N0cmluZwogX19aTjdXZWJDb3JlMTRlbmRPZlBhcmFncmFwaEVSS05TXzE1VmlzaWJsZVBvc2l0
aW9uRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlRQotX19aTjdXZWJDb3JlMTRzZWxl
Y3Rpb25JbWFnZUVQTlNfNUZyYW1lRWIKIF9fWk43V2ViQ29yZTE0c2V0TWV0YWRhdGFVUkxFUk4z
V1RGNlN0cmluZ0VSS1MxX1M0XwogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm01ZmxpcFlF
dgogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm01c2NhbGVFZApAQCAtODkwLDYgKzg4OSw3
IEBAIF9fWk43V2ViQ29yZTI3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlQzJFdgogX19aTjdX
ZWJDb3JlMjdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25DMUVOM1dURjEwUGFzc1JlZlB0cklO
U180Tm9kZUVFRWJSS05TMV82U3RyaW5nRQogX19aTjdXZWJDb3JlMjdEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2sxNHNldE9yaWVudGF0aW9uRU4zV1RGMTBQYXNzUmVmUHRySU5TXzIxRGV2aWNl
T3JpZW50YXRpb25EYXRhRUVFCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9ja0MxRXYKK19fWk43V2ViQ29yZTI3Y3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uRVJOU181
RnJhbWVFYgogX19aTjdXZWJDb3JlMjdwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWxFUktOU18z
VVJMRVMyXwogX19aTjdXZWJDb3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFUEZ2dkUK
IF9fWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjEyYWRkVXNlclNoZWV0
RU4zV1RGN1Bhc3NSZWZJTlNfMThTdHlsZVNoZWV0Q29udGVudHNFRUUKQEAgLTIwMzUsNyArMjAz
NSw2IEBAIF9fWk43V2ViQ29yZTM4Y29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1l
bnVFdgogX19aTjdXZWJDb3JlNDJjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3Bl
bGxpbmdFdgogX19aTjdXZWJDb3JlNDJjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hp
bGVUeXBpbmdFdgogX19aTjdXZWJDb3JlNDZjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxp
bmdBdXRvbWF0aWNhbGx5RXYKLV9fWk43V2ViQ29yZTVGcmFtZTlub2RlSW1hZ2VFUE5TXzROb2Rl
RQogX19aTjdXZWJDb3JlNkN1cnNvcjhmcm9tVHlwZUVOUzBfNFR5cGVFCiBfX1pON1dlYkNvcmU2
Q3Vyc29yQzFFUE5TXzVJbWFnZUVSS05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29yZTZDdXJzb3JD
MUVSS1MwXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKaW5kZXggNDE2NTU2YzI2ZGM1NjM3MzlhYmQyN2E4YjI1YjQ5Zjk0NTUwMTdlZS4uNTg3YWM0
NzY1YWJmMzFjNTM4MDM5ZjIzYjE0OWM3YmNiNWI0ZWQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC02OTk4LDYgKzY5OTgsNyBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGb2N1c0NvbnRyb2xsZXIuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZS5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNob3R0aW5nLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVUcmVlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVWaWV3LmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBhZ2VcR3JvdXBTZXR0aW5ncy5jcHAiIC8+CkBAIC0xODg1Myw2ICsx
ODg1NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZvY3VzRGlyZWN0aW9u
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oIiAv
PgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVNuYXBzaG90dGluZy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVWaWV3LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwYWdlXEdyb3VwU2V0dGluZ3MuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCA5
N2I4ODQ3ZjQ4MGI1MTJlNTYzMzhiMjZlMDhmN2ZmMGM0N2EzN2I2Li5mMGIwMjY2MDI0NDJkZGRk
MDFmYTAxMjgwZTE2NjZjZGU0N2U2MTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03MjAsNiArNzIwLDkg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhZ2U8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVTbmFwc2hvdHRpbmcuY3BwIj4K
KyAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGFnZVxGcmFtZVRyZWUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGFn
ZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzY0MSw2ICs3NjQ0LDkgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2VcRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyLmgiPgog
ICAgICAgPEZpbHRlcj5wYWdlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwYWdlXEZyYW1lU25hcHNob3R0aW5nLmgiPgorICAgICAgPEZpbHRl
cj5wYWdlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwYWdlXEZyYW1lVHJlZS5oIj4KICAgICAgIDxGaWx0ZXI+cGFnZTwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGNkYzc3Yjg2MWI1Y2IxYzI1MjIyN2U4MjlkYTYzNzU0MzlhOGNi
NWEuLmFmODIyZmY0MTI0MTU5ZjNhMjM4NzUxMTE5NmE0ZmI5NzUwY2ExZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwMTMs
NyArMjAxMyw2IEBACiAJCTY1QTIxNDg1MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTIxNDgzMDk3
QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUJGMDIyRTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVCRjAy
MjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLzsgfTsKIAkJNjVCRjAyMkYwOTc0ODE2
MzAwQzQzMTk2IC8qIEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2NUJGMDI0NTA5NzQ4MTkw
MDBDNDMxOTYgLyogRnJhbWVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NUJGMDIzQzA5NzQ4MTkwMDBDNDMxOTYgLyogRnJhbWVNYWMubW0gKi87
IH07CiAJCTY1Qzk3QUYzMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3
MyAvKiBjb25maWcuaCAqLzsgfTsKIAkJNjVDQkZFRjkwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1l
Vmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAqLzsgfTsKIAkJNjVDQkZF
RkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1l
Vmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0yMjE4LDggKzIyMTcsNiBAQAogCQk3QzUzNDNGQzE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDNTM0M0ZBMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwICovOyB9OwogCQk3QzUzNDNGRDE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzUzNDNGQjE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmggKi87IH07CiAJCTdDQzdFM0Q3MTcyMDhDMEYwMDNDNTI3NyAvKiBJRE5TY3JpcHRX
aGl0ZUxpc3QudHh0IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3Q0M3RTNENjE3MjA4QzBGMDAzQzUyNzcgLyogSUROU2NyaXB0V2hpdGVMaXN0LnR4dCAq
LzsgfTsKLQkJN0NFMzBEQTkxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NFMzBE
QTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLm1tICovOyB9OwotCQk3
Q0UzMERBQTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdNYWMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTMwREE4MTcxQjYzRDIw
MEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGluZ01hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdENzQxQkRBMTc3MjI2QUEwMDg1OTE3MCAvKiBD
U1NWYWx1ZUtleXdvcmRzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODE0ODA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTVmFs
dWVLZXl3b3Jkcy5oICovOyB9OwogCQk3RTEyRTkwRjE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9t
RmlsdGVyTWVzaEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0UxMkU5MEQxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hH
ZW5lcmF0b3IuaCAqLzsgfTsKIAkJN0UxMkU5MTAxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZp
bHRlck1lc2hHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0UxMkU5MEUxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRlck1lc2hH
ZW5lcmF0b3IuY3BwICovOyB9OwpAQCAtNTI1NSw2ICs1MjUyLDggQEAKIAkJQzNDRjE3QTUxNUIw
MDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzQ0YxN0ExMTVCMDA2M0YwMDI3NkQzOSAvKiBJZFRh
cmdldE9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQzNDRjE3QTYxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
M0NGMTdBMjE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmNwcCAq
LzsgfTsKIAkJQzNDRjE3QTcxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzND
RjE3QTMxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUM0Q0Q2MjlBMTgz
ODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNENENjI5ODE4MzgzNzY2MDA3RUJBRjEgLyog
RnJhbWVTbmFwc2hvdHRpbmcuY3BwICovOyB9OworCQlDNENENjI5QjE4MzgzNzY2MDA3RUJBRjEg
LyogRnJhbWVTbmFwc2hvdHRpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM0Q0Q2Mjk5MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNuYXBzaG90dGlu
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUM1
MEI1NjE2MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1MEI1NjE0MTIxMTlEMjMwMDhCNDZF
MCAvKiBHcm91cFNldHRpbmdzLmNwcCAqLzsgfTsKIAkJQzUwQjU2MTcxMjExOUQyMzAwOEI0NkUw
IC8qIEdyb3VwU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzUwRDBFODIw
RkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3JhZ2VOYW1lc3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzUwRDBFODAwRkY0MjcyOTAwQUMyNjQ0IC8q
IFN0b3JhZ2VOYW1lc3BhY2UuY3BwICovOyB9OwpAQCAtODc3OSw3ICs4Nzc4LDYgQEAKIAkJNjVB
NjQwRjAwNTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0V4Y2VwdGlvbnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJ
CTY1QkYwMjI5MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NUJGMDIyQTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTY1QkYwMjNDMDk3NDgxOTAwMEM0MzE5NiAvKiBGcmFtZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGcmFtZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1
Q0JGRUY3MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTY1Q0JGRUY4MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lVmlldy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtOTAxMSw4ICs5MDA5LDYgQEAKIAkJN0M2MTM2RjgxNzEwQzM1MjAwRkY0
QTU3IC8qIEluRmlsZXNQYXJzZXIucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gSW5GaWxlc1BhcnNlci5w
bTsgcGF0aCA9IHNjcmlwdHMvSW5GaWxlc1BhcnNlci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M2MTM2RjkxNzEwQzM1MjAwRkY0QTU3IC8qIFN0YXRpY1N0cmluZy5wbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0
LnBlcmw7IG5hbWUgPSBTdGF0aWNTdHJpbmcucG07IHBhdGggPSBzY3JpcHRzL1N0YXRpY1N0cmlu
Zy5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NDN0UzRDYxNzIwOEMwRjAwM0M1
Mjc3IC8qIElETlNjcmlwdFdoaXRlTGlzdC50eHQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSURO
U2NyaXB0V2hpdGVMaXN0LnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NFMzBE
QTcxNzFCNjNEMjAwRUMzM0UxIC8qIEZyYW1lU25hcHNob3R0aW5nTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRnJhbWVTbmFwc2hvdHRpbmdNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDRTMwREE4MTcxQjYzRDIwMEVDMzNFMSAvKiBG
cmFtZVNuYXBzaG90dGluZ01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
cmFtZVNuYXBzaG90dGluZ01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTEy
RTkwRDE1RkE1RDNBMDA1RTQxMjYgLyogQ3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDdXN0b21GaWx0ZXJNZXNoR2VuZXJhdG9yLmg7
IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRlck1lc2hHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0UxMkU5MEUxNUZBNUQzQTAwNUU0MTI2IC8qIEN1c3RvbUZpbHRl
ck1lc2hHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
Q3VzdG9tRmlsdGVyTWVzaEdlbmVyYXRvci5jcHA7IHBhdGggPSBmaWx0ZXJzL0N1c3RvbUZpbHRl
ck1lc2hHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTMzQ0Qw
MDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQdXJnZVByaW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMjMxOSw2ICsxMjMxNSw4IEBACiAJCUMzQ0YxN0ExMTVCMDA2M0YwMDI3NkQzOSAvKiBJ
ZFRhcmdldE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElkVGFy
Z2V0T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzNDRjE3QTIxNUIw
MDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDM0NGMTdBMzE1QjAwNjNGMDAyNzZEMzkgLyog
SWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IElkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDNENENjI5ODE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVTbmFwc2hvdHRpbmcuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNENENjI5OTE4MzgzNzY2MDA3RUJBRjEg
LyogRnJhbWVTbmFwc2hvdHRpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RnJhbWVTbmFwc2hvdHRpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwQjU2
MTQxMjExOUQyMzAwOEI0NkUwIC8qIEdyb3VwU2V0dGluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR3JvdXBTZXR0aW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUM1MEI1NjE1MTIxMTlEMjMwMDhCNDZFMCAvKiBHcm91cFNldHRpbmdzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyb3VwU2V0dGluZ3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzUwRDBFODAwRkY0MjcyOTAwQUMyNjQ0IC8qIFN0b3Jh
Z2VOYW1lc3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Rv
cmFnZU5hbWVzcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTY5MSw2
ICsxNTY4OSw4IEBACiAJCQkJNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmggKi8s
CiAJCQkJOTc0QTg2MjAxNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZl
ci5jcHAgKi8sCiAJCQkJOTc0QTg2MjExNEI3QURCQjAwM0ZEQzc2IC8qIEZyYW1lRGVzdHJ1Y3Rp
b25PYnNlcnZlci5oICovLAorCQkJCUM0Q0Q2Mjk4MTgzODM3NjYwMDdFQkFGMSAvKiBGcmFtZVNu
YXBzaG90dGluZy5jcHAgKi8sCisJCQkJQzRDRDYyOTkxODM4Mzc2NjAwN0VCQUYxIC8qIEZyYW1l
U25hcHNob3R0aW5nLmggKi8sCiAJCQkJNjVBMjE0ODIwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1l
VHJlZS5jcHAgKi8sCiAJCQkJNjVBMjE0ODMwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5o
ICovLAogCQkJCTY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovLApA
QCAtMTY2MDcsOSArMTY2MDcsNiBAQAogCQkJCUFCQUYyMjA3MEMwM0IxQzcwMEIwQkNGMCAvKiBD
aHJvbWVNYWMubW0gKi8sCiAJCQkJQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERyYWdDb250
cm9sbGVyTWFjLm1tICovLAogCQkJCTkzQzA5QTdFMEIwNjRFRUYwMDVBQkQ0RCAvKiBFdmVudEhh
bmRsZXJNYWMubW0gKi8sCi0JCQkJNjVCRjAyM0MwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFj
Lm1tICovLAotCQkJCTdDRTMwREE4MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90dGlu
Z01hYy5oICovLAotCQkJCTdDRTMwREE3MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBzaG90
dGluZ01hYy5tbSAqLywKIAkJCQkxQzI2NDk3QjBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5j
cHAgKi8sCiAJCQkJRTFDMkYyNDgxNTMzQTIxMjAwODNGOTc0IC8qIFNldHRpbmdzTWFjLm1tICov
LAogCQkJCUY1ODc4NTRDMDJERTM3NTkwMUVBNDEyMiAvKiBXZWJDb3JlRnJhbWVWaWV3LmggKi8s
CkBAIC0yMjIyNyw2ICsyMjIyNCw3IEBACiAJCQkJMUE1NjlDRjgwRDdFMkI4MjAwN0MzOTgzIC8q
IGNfY2xhc3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZBMEQ3RTJCODIwMDdDMzk4MyAv
KiBjX2luc3RhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTU2OUNGQzBEN0UyQjgyMDA3QzM5
ODMgLyogY19ydW50aW1lLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNENENjI5QjE4MzgzNzY2MDA3
RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNTY5Q0ZF
MEQ3RTJCODIwMDdDMzk4MyAvKiBjX3V0aWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjE2
QzFBMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRDU1NTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzY0QjRDQzBDQjQyOTVEMDA1RjJCNjIgLyogQ2FjaGVkRm9udC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yMzA4OSw3ICsyMzA4Nyw2IEBACiAJCQkJNjI4RDIxNEUxMjEzMUVGNDAwNTVE
Q0ZDIC8qIEZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzJB
RjcwMTgwRjI4OTUwMEZCQURCOSAvKiBDcnlwdG9LZXlVc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTMzMDlFMEUwOTlFNjQ5MjAwNTZFNTgxIC8qIEZyYW1lU2VsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk3Q0UzMERBQTE3MUI2M0QyMDBFQzMzRTEgLyogRnJhbWVTbmFwc2hvdHRpbmdN
YWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QTIxNDg1MDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFt
ZVRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1Q0JGRUZBMDk3NEY2MDcwMDFEQUMyNSAvKiBG
cmFtZVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MjA1QUIwMTIzOTI4Q0EwMEIxNzM4MCAv
KiBGVFBEaXJlY3RvcnlEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjM3OCwxMCArMjYz
NzUsOCBAQAogCQkJCTkzMkUxNjA5MEFGNTc4MzQwMDI1RjQwOCAvKiBGcmFtZUxvYWRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlEMDAwRUJBMjExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2Fk
ZXJTdGF0ZU1hY2hpbmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZCQTc2NkUxNjY0MjdBODAw
NUJFNUQxIC8qIEZyYW1lTG9hZFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNjVCRjAy
NDUwOTc0ODE5MDAwQzQzMTk2IC8qIEZyYW1lTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMz
MDlFMEQwOTlFNjQ5MjAwNTZFNTgxIC8qIEZyYW1lU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTRBOEM5NkVCMEJFNjkwMzIwMDRFRUZGMCAvKiBGcmFtZVNlbGVjdGlvbk1hYy5tbSBp
biBTb3VyY2VzICovLAotCQkJCTdDRTMwREE5MTcxQjYzRDIwMEVDMzNFMSAvKiBGcmFtZVNuYXBz
aG90dGluZ01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3OTY5REFEMTdEMTQxNTEwMDdGRjg0
MiAvKiBKU1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVBMjE0
ODQwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
NEM5MUExMDE4MDIzNDM5MDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0yNzg5Miw2ICsyNzg4Nyw3IEBACiAJCQkJNTFFMEJCMzkwREE1QUNCNjAwQTlFNDE3
IC8qIFN0b3JhZ2VNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcyNzdFNTIxN0QwMThDQzAw
MTU1MzREIC8qIEpTTWVkaWFTdHJlYW1UcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTBE
MEU4MjBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlDNENENjI5QTE4MzgzNzY2MDA3RUJBRjEgLyogRnJhbWVTbmFwc2hvdHRpbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzU1RTM4QzAxMDA0MEQ1RDAwQTU2QkRCIC8qIFN0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQjA5REI0MTZBRjVGNkMwMDg1
MzhFNyAvKiBTdG9yYWdlU3RyYXRlZ3kuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzUxMDJEOTUw
RkQ5QUEyRDAwRkFGRjA0IC8qIFN0b3JhZ2VTeW5jTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggY2MwMzY1NTI2ZTMxNmUwNWQ1YjE1
YmI3NDQ0YzNiYjJiY2ZhOTA1MC4uMTI4NjRiOTBlNjY4NDVlYzNkOGY3MGFiZDllYmViZjU3NWRl
MmFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAgLTM2LDkgKzM2LDkgQEAK
ICNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NUHJpdmF0ZS5oIgogI2lt
cG9ydCAiRE9NUmFuZ2VJbnRlcm5hbC5oIgorI2ltcG9ydCAiRHJhZ0ltYWdlLmgiCiAjaW1wb3J0
ICJGb250LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgotI2ltcG9ydCAiRnJhbWVTbmFwc2hvdHRpbmdN
YWMuaCIKICNpbXBvcnQgIkhUTUxFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNp
bXBvcnQgIkhUTUxQYXJzZXJJZGlvbXMuaCIKQEAgLTI4OSw3ICsyODksNyBAQCBpZCA8RE9NRXZl
bnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCogZXZlbnRUYXJnZXQpCiAgICAgV2Vi
Q29yZTo6RnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGZyYW1lLT5ub2RlSW1hZ2Uo
bm9kZSkuZ2V0KCk7CisgICAgcmV0dXJuIFtjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwg
Km5vZGUpLmxlYWtSZWYoKSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TQXJyYXkgKil0ZXh0UmVj
dHMKQEAgLTMzNSw3ICszMzUsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpF
dmVudFRhcmdldCogZXZlbnRUYXJnZXQpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIHJldHVybiBXZWJDb3JlOjpyYW5nZUltYWdlKGZyYW1lLCByYW5nZSwgZm9y
Y2VCbGFja1RleHQpOworICAgIHJldHVybiBbY3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2UoKmZyYW1l
LCAqcmFuZ2UsIGZvcmNlQmxhY2tUZXh0KS5sZWFrUmVmKCkgYXV0b3JlbGVhc2VdOwogfQogCiAt
IChOU0FycmF5ICopdGV4dFJlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xp
cGJvYXJkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCmluZGV4IDlkMmUy
NzUyZmRmMmI3YzY2NDJhMjQyNGY4ODA2M2VjOGE3MWM3YzguLjMwN2ZjYzE1ZjdkMDgwOGZjZGVk
NjQ5YTI3MmViYzBjYjY4MDM1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlw
Ym9hcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmQuY3BwCkBAIC0yNzcs
MTAgKzI3NywxMSBAQCBEcmFnSW1hZ2VSZWYgQ2xpcGJvYXJkOjpjcmVhdGVEcmFnSW1hZ2UoSW50
UG9pbnQmIGxvY2F0aW9uKSBjb25zdAogCiAgICAgaWYgKG1fZHJhZ0ltYWdlRWxlbWVudCkgewog
ICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9kcmFnSW1hZ2VFbGVtZW50LT5kb2N1bWVudCgp
LmZyYW1lKCkpCi0gICAgICAgICAgICByZXR1cm4gZnJhbWUtPm5vZGVJbWFnZShtX2RyYWdJbWFn
ZUVsZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZvck5v
ZGUoKmZyYW1lLCAqbV9kcmFnSW1hZ2VFbGVtZW50KTsKICAgICB9CiAKLSAgICByZXR1cm4gMDsg
Ly8gV2UgZG8gbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGNyZWF0ZSBhIGRyYWcgaW1h
Z2UsIHVzZSB0aGUgZGVmYXVsdCBpY29uLgorICAgIC8vIFdlIGRvIG5vdCBoYXZlIGVub3VnaCBp
bmZvcm1hdGlvbiB0byBjcmVhdGUgYSBkcmFnIGltYWdlLCB1c2UgdGhlIGRlZmF1bHQgaWNvbi4K
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZG9tL0NsaXBib2FyZE1h
Yy5tbQppbmRleCA3NmNhNmZjYTNlNDI0MDdiNWY4ZTdiMzVlNjU4NzM3YzIxMTNlOGZiLi5hMDli
MzBhNGE2NjgzYmExZmQ3ZmI0NWZhODliMmRiZWMwMGMzMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlw
Ym9hcmRNYWMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2ltcG9ydCAiQ2FjaGVkSW1hZ2UuaCIK
ICNpbXBvcnQgIkVsZW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCisj
aW1wb3J0ICJEcmFnSW1hZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNywxNiAr
MzcsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQ2xpcGJvYXJkOjpkcmFnSW1hZ2UgaW4g
Q2xpcGJvYXJkLmNwcCBkb2VzIG5vdCBoYW5kbGUgY29ycmVjdGx5LCBzbyBtdXN0IHJlc29sdmUg
dGhhdCBhcyB3ZWxsLgogRHJhZ0ltYWdlUmVmIENsaXBib2FyZDo6Y3JlYXRlRHJhZ0ltYWdlKElu
dFBvaW50JiBsb2NhdGlvbikgY29uc3QKIHsKLSAgICBOU0ltYWdlICpyZXN1bHQgPSBuaWw7Cisg
ICAgRHJhZ0ltYWdlUmVmIHJlc3VsdCA9IG5pbDsKICAgICBpZiAobV9kcmFnSW1hZ2VFbGVtZW50
KSB7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2RyYWdJbWFnZUVsZW1lbnQtPmRvY3Vt
ZW50KCkuZnJhbWUoKSkgewotICAgICAgICAgICAgTlNSZWN0IGltYWdlUmVjdDsKLSAgICAgICAg
ICAgIE5TUmVjdCBlbGVtZW50UmVjdDsKLSAgICAgICAgICAgIHJlc3VsdCA9IHNuYXBzaG90RHJh
Z0ltYWdlKGZyYW1lLCBtX2RyYWdJbWFnZUVsZW1lbnQuZ2V0KCksICZpbWFnZVJlY3QsICZlbGVt
ZW50UmVjdCk7CisgICAgICAgICAgICBJbnRSZWN0IGltYWdlUmVjdDsKKyAgICAgICAgICAgIElu
dFJlY3QgZWxlbWVudFJlY3Q7CisgICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVEcmFnSW1hZ2VG
b3JJbWFnZSgqZnJhbWUsICptX2RyYWdJbWFnZUVsZW1lbnQsIGltYWdlUmVjdCwgZWxlbWVudFJl
Y3QpOwogICAgICAgICAgICAgLy8gQ2xpZW50IHNwZWNpZmllcyBwb2ludCByZWxhdGl2ZSB0byBl
bGVtZW50LCBub3QgdGhlIHdob2xlIGltYWdlLCB3aGljaCBtYXkgaW5jbHVkZSBjaGlsZAogICAg
ICAgICAgICAgLy8gbGF5ZXJzIHNwcmVhZCBvdXQgYWxsIG92ZXIgdGhlIHBsYWNlLgotICAgICAg
ICAgICAgbG9jYXRpb24uc2V0WChlbGVtZW50UmVjdC5vcmlnaW4ueCAtIGltYWdlUmVjdC5vcmln
aW4ueCArIG1fZHJhZ0xvY2F0aW9uLngoKSk7Ci0gICAgICAgICAgICBsb2NhdGlvbi5zZXRZKGlt
YWdlUmVjdC5zaXplLmhlaWdodCAtIChlbGVtZW50UmVjdC5vcmlnaW4ueSAtIGltYWdlUmVjdC5v
cmlnaW4ueSArIG1fZHJhZ0xvY2F0aW9uLnkoKSkpOworICAgICAgICAgICAgbG9jYXRpb24uc2V0
WChlbGVtZW50UmVjdC54KCkgLSBpbWFnZVJlY3QueCgpICsgbV9kcmFnTG9jYXRpb24ueCgpKTsK
KyAgICAgICAgICAgIGxvY2F0aW9uLnNldFkoaW1hZ2VSZWN0LmhlaWdodCgpIC0gKGVsZW1lbnRS
ZWN0LnkoKSAtIGltYWdlUmVjdC55KCkgKyBtX2RyYWdMb2NhdGlvbi55KCkpKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAobV9kcmFnSW1hZ2UpIHsKICAgICAgICAgcmVzdWx0ID0gbV9kcmFn
SW1hZ2UtPmltYWdlKCktPmdldE5TSW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKaW5kZXggNDFmM2JmZTgyNmM4MDYzNzQxYzc0ZTNiZGEwMjU0OTA2YTkzZDc4MC4u
ZDAzMmJmZjRjZmY5Y2E4ZTRmYzAzMjBkNTMzNjQ2NTU0NWE1YWEyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJEcmFn
QWN0aW9ucy5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnQuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5o
IgorI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkRyYWdTZXNzaW9uLmgiCiAjaW5j
bHVkZSAiRHJhZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCkBAIC03NzksNyArNzgwLDcg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdT
dGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICAgICAgfQogICAgICAgICBtX2NsaWVudC53
aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiwgZHJh
Z09yaWdpbiwgY2xpcGJvYXJkKTsKICAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKLSAgICAgICAg
ICAgIGRyYWdJbWFnZSA9IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihzcmMuZHJhZ0ltYWdl
Rm9yU2VsZWN0aW9uKCksIERyYWdJbWFnZUFscGhhKTsKKyAgICAgICAgICAgIGRyYWdJbWFnZSA9
IGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24o
c3JjKSwgRHJhZ0ltYWdlQWxwaGEpOwogICAgICAgICAgICAgZHJhZ0xvYyA9IGRyYWdMb2NGb3JT
ZWxlY3Rpb25EcmFnKHNyYyk7CiAgICAgICAgICAgICBtX2RyYWdPZmZzZXQgPSBJbnRQb2ludChk
cmFnT3JpZ2luLngoKSAtIGRyYWdMb2MueCgpLCBkcmFnT3JpZ2luLnkoKSAtIGRyYWdMb2MueSgp
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAzZDg2MTY0ODgyNmVjMDczMzEw
MTgxODJhYjVmMDgzN2EzYjZlMjY2Li40OWUxODdiNzE0OWEyNGQyMjk1OGRmMGJhZmM4YzM5ZTk1
NTc0ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtOTY2LDEwOCArOTY2LDQgQEAgYm9vbCBG
cmFtZTo6aXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdJTikKLXN0cnVjdCBTY29w
ZWRGcmFtZVBhaW50aW5nU3RhdGUgewotICAgIFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZShGcmFt
ZSogZnJhbWUsIE5vZGUqIG5vZGUpCi0gICAgICAgIDogZnJhbWUoZnJhbWUpCi0gICAgICAgICwg
bm9kZShub2RlKQotICAgICAgICAsIHBhaW50QmVoYXZpb3IoZnJhbWUtPnZpZXcoKS0+cGFpbnRC
ZWhhdmlvcigpKQotICAgICAgICAsIGJhY2tncm91bmRDb2xvcihmcmFtZS0+dmlldygpLT5iYXNl
QmFja2dyb3VuZENvbG9yKCkpCi0gICAgewotICAgICAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+
cmVuZGVyZXIoKSk7Ci0gICAgICAgIGlmIChub2RlKQotICAgICAgICAgICAgbm9kZS0+cmVuZGVy
ZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOwotICAgIH0KLQotICAgIH5TY29wZWRGcmFtZVBh
aW50aW5nU3RhdGUoKQotICAgIHsKLSAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS0+cmVuZGVyZXIo
KSkKLSAgICAgICAgICAgIG5vZGUtPnJlbmRlcmVyKCktPnVwZGF0ZURyYWdTdGF0ZShmYWxzZSk7
Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7
Ci0gICAgICAgIGZyYW1lLT52aWV3KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3Vu
ZENvbG9yKTsKLSAgICAgICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJhdygwKTsKLSAgICB9
Ci0KLSAgICBGcmFtZSogZnJhbWU7Ci0gICAgTm9kZSogbm9kZTsKLSAgICBQYWludEJlaGF2aW9y
IHBhaW50QmVoYXZpb3I7Ci0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9yOwotfTsKLQotRHJhZ0lt
YWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUtPnJl
bmRlcmVyKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgY29uc3QgU2NvcGVkRnJh
bWVQYWludGluZ1N0YXRlIHN0YXRlKHRoaXMsIG5vZGUpOwotCi0gICAgbV92aWV3LT5zZXRQYWlu
dEJlaGF2aW9yKHN0YXRlLnBhaW50QmVoYXZpb3IgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBv
c2l0aW5nTGF5ZXJzKTsKLQotICAgIC8vIFdoZW4gZ2VuZXJhdGluZyB0aGUgZHJhZyBpbWFnZSBm
b3IgYW4gZWxlbWVudCwgaWdub3JlIHRoZSBkb2N1bWVudCBiYWNrZ3JvdW5kLgotICAgIG1fdmll
dy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwotICAgIG1fZG9j
LT51cGRhdGVMYXlvdXQoKTsKLSAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIEVu
YWJsZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZS4KLQotICAgIC8vIERvY3VtZW50Ojp1
cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2luYWwgcmVuZGVyZXIuCi0g
ICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsK
LSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXIt
PnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciA9IDE7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3Ig
PSBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgcGFpbnRpbmdSZWN0LnNldFdpZHRo
KHBhaW50aW5nUmVjdC53aWR0aCgpICogZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50aW5n
UmVjdC5zZXRIZWlnaHQocGFpbnRpbmdSZWN0LmhlaWdodCgpICogZGV2aWNlU2NhbGVGYWN0b3Ip
OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6
OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFj
ZURldmljZVJHQikpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFp
bnRpbmdSZWN0LnkoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAs
IDAsIHBhaW50aW5nUmVjdC5tYXhYKCksIHBhaW50aW5nUmVjdC5tYXhZKCkpKTsKLQotICAgIG1f
dmlldy0+cGFpbnRDb250ZW50cyhidWZmZXItPmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0KTsKLQot
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZSgpOwotCi0gICAgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24ocmVuZGVyZXIt
PnNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkpOwotI2lmIEVOQUJMRShDU1NfSU1BR0Vf
T1JJRU5UQVRJT04pCi0gICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0
aW9uRW51bShyZW5kZXJlci0+c3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwotI2VuZGlmCi0g
ICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZS5nZXQoKSwgb3JpZW50YXRp
b25EZXNjcmlwdGlvbik7Ci19Ci0KLURyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2Vs
ZWN0aW9uKCkKLXsKLSAgICBpZiAoIXNlbGVjdGlvbigpLmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBjb25zdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgc3RhdGUodGhpcywg
MCk7Ci0gICAgbV92aWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25P
bmx5KTsKLSAgICBtX2RvYy0+dXBkYXRlTGF5b3V0KCk7Ci0KLSAgICBJbnRSZWN0IHBhaW50aW5n
UmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uKCkuYm91bmRzKCkpOwotCi0gICAgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOwotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIGRldmlj
ZVNjYWxlRmFjdG9yID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIHBhaW50aW5n
UmVjdC5zZXRXaWR0aChwYWludGluZ1JlY3Qud2lkdGgoKSAqIGRldmljZVNjYWxlRmFjdG9yKTsK
LSAgICBwYWludGluZ1JlY3Quc2V0SGVpZ2h0KHBhaW50aW5nUmVjdC5oZWlnaHQoKSAqIGRldmlj
ZVNjYWxlRmFjdG9yKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVy
KEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0
b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpKTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtcGFpbnRpbmdSZWN0Lngo
KSwgLXBhaW50aW5nUmVjdC55KCkpOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5jbGlwKEZsb2F0
UmVjdCgwLCAwLCBwYWludGluZ1JlY3QubWF4WCgpLCBwYWludGluZ1JlY3QubWF4WSgpKSk7Ci0K
LSAgICBtX3ZpZXctPnBhaW50Q29udGVudHMoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVj
dCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoKTsKLSAg
ICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBJbWFnZU9yaWVu
dGF0aW9uRGVzY3JpcHRpb24oKSk7Ci19Ci0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggODQwN2U5ZTJiY2YzZWVmZWRkYmYwNTMxYmU2Y2U5Mjc5
NDU3Mjc3Yy4uNWYxODY2ZmUyMDJmY2ZlYTY0NDJjMGJiZWY4MjBmNTZlZDIzZTc0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuaApAQCAtMjksNyArMjksNiBAQAogI2RlZmluZSBGcmFtZV9oCiAKICNpbmNsdWRl
ICJBZGp1c3RWaWV3U2l6ZU9yTm90LmgiCi0jaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCkBAIC01OCwxMSArNTcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEVkaXRvcjsKICAgICBjbGFzcyBFbGVtZW50OwogICAgIGNsYXNzIEV2ZW50SGFuZGxlcjsKKyAg
ICBjbGFzcyBGbG9hdFNpemU7CiAgICAgY2xhc3MgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyOwog
ICAgIGNsYXNzIEZyYW1lU2VsZWN0aW9uOwogICAgIGNsYXNzIEZyYW1lVmlldzsKICAgICBjbGFz
cyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ7
CisgICAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBN
YWluRnJhbWU7CiAgICAgY2xhc3MgTm9kZTsKQEAgLTE3Nyw5ICsxNzgsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgU3RyaW5nIGRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rp
bmcoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKLSAgICAgICAgRHJhZ0ltYWdlUmVmIG5vZGVJbWFn
ZShOb2RlKik7Ci0gICAgICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsK
LQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
SW50UG9pbnQmIGZyYW1lUG9pbnQpOwogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnRBdFBvaW50
KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCk7CiAgICAgICAgIFBhc3NSZWZQdHI8UmFuZ2U+
IHJhbmdlRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjQ1YTNjZDM2NmI5Nzcz
M2FmODY4YzQwMWRlODQ3MTdkZGFjMmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9z
a3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRnJhbWVTbmFwc2hvdHRpbmcuaCIK
KworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJG
cmFtZVNlbGVjdGlvbi5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkltYWdl
QnVmZmVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUg
eworICAgIFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZShGcmFtZSYgZnJhbWUsIE5vZGUqIG5vZGUp
CisgICAgICAgIDogZnJhbWUoZnJhbWUpCisgICAgICAgICwgbm9kZShub2RlKQorICAgICAgICAs
IHBhaW50QmVoYXZpb3IoZnJhbWUudmlldygpLT5wYWludEJlaGF2aW9yKCkpCisgICAgICAgICwg
YmFja2dyb3VuZENvbG9yKGZyYW1lLnZpZXcoKS0+YmFzZUJhY2tncm91bmRDb2xvcigpKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPnJlbmRlcmVyKCkpOworICAgIH0KKwor
ICAgIH5TY29wZWRGcmFtZVBhaW50aW5nU3RhdGUoKQorICAgIHsKKyAgICAgICAgZnJhbWUudmll
dygpLT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOworICAgICAgICBmcmFtZS52aWV3
KCktPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgZnJh
bWUudmlldygpLT5zZXROb2RlVG9EcmF3KG51bGxwdHIpOworICAgIH0KKworICAgIGNvbnN0IEZy
YW1lJiBmcmFtZTsKKyAgICBjb25zdCBOb2RlKiBub2RlOworICAgIGNvbnN0IFBhaW50QmVoYXZp
b3IgcGFpbnRCZWhhdmlvcjsKKyAgICBjb25zdCBDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Cit9Owor
CitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1lJiBm
cmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTbmFwc2hvdE9wdGlvbnMgb3B0aW9ucykK
K3sKKyAgICBpZiAoIWZyYW1lLnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBmcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKworICAgIEZyYW1lVmlldzo6U2Vs
ZWN0aW9uSW5TbmFwc2hvdCBzaG91bGRJbmNsdWRlU2VsZWN0aW9uID0gRnJhbWVWaWV3OjpJbmNs
dWRlU2VsZWN0aW9uOworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZVNl
bGVjdGlvbkhpZ2hsaWdodGluZykKKyAgICAgICAgc2hvdWxkSW5jbHVkZVNlbGVjdGlvbiA9IEZy
YW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbjsKKworICAgIEZyYW1lVmlldzo6Q29vcmRpbmF0ZVNw
YWNlRm9yU25hcHNob3QgY29vcmRpbmF0ZVNwYWNlID0gRnJhbWVWaWV3OjpEb2N1bWVudENvb3Jk
aW5hdGVzOworICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0
ZXMpCisgICAgICAgIGNvb3JkaW5hdGVTcGFjZSA9IEZyYW1lVmlldzo6Vmlld0Nvb3JkaW5hdGVz
OworCisgICAgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHN0YXRlKGZyYW1lLCBudWxscHRyKTsK
KworICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciA9IHN0YXRlLnBhaW50QmVoYXZpb3I7
CisgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCkKKyAgICAg
ICAgcGFpbnRCZWhhdmlvciB8PSBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQ7CisgICAgaWYg
KG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvbk9ubHkpCisgICAgICAgIHBh
aW50QmVoYXZpb3IgfD0gUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHk7CisKKyAgICAvLyBPdGhl
ciBwYWludCBiZWhhdmlvcnMgYXJlIHNldCBieSBwYWludENvbnRlbnRzRm9yU25hcHNob3QuCisg
ICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOworCisgICAg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBmcmFtZS5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9y
KCk7CisgICAgSW50UmVjdCB1c2VkUmVjdChpbWFnZVJlY3QpOworICAgIHVzZWRSZWN0LnNjYWxl
KGRldmljZVNjYWxlRmFjdG9yKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
YnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh1c2VkUmVjdC5zaXplKCksIGRldmljZVNjYWxl
RmFjdG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtdXNlZFJl
Y3QueCgpLCAtdXNlZFJlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS0+Y2xpcChGbG9h
dFJlY3QoMCwgMCwgdXNlZFJlY3QubWF4WCgpLCB1c2VkUmVjdC5tYXhZKCkpKTsKKworICAgIGZy
YW1lLnZpZXcoKS0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGJ1ZmZlci0+Y29udGV4dCgpLCB1
c2VkUmVjdCwgc2hvdWxkSW5jbHVkZVNlbGVjdGlvbiwgY29vcmRpbmF0ZVNwYWNlKTsKKyAgICBy
ZXR1cm4gYnVmZmVyOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90
U2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCit7CisgICAg
aWYgKCFmcmFtZS5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgb3B0aW9ucyB8PSBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvbk9ubHk7Cisg
ICAgcmV0dXJuIHNuYXBzaG90RnJhbWVSZWN0KGZyYW1lLCBlbmNsb3NpbmdJbnRSZWN0KGZyYW1l
LnNlbGVjdGlvbigpLmJvdW5kcygpKSwgb3B0aW9ucyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gc25hcHNob3ROb2RlKEZyYW1lJiBmcmFtZSwgTm9kZSYgbm9kZSkKK3sKKyAg
ICBpZiAoIW5vZGUucmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBT
Y29wZWRGcmFtZVBhaW50aW5nU3RhdGUgc3RhdGUoZnJhbWUsICZub2RlKTsKKworICAgIGZyYW1l
LnZpZXcoKS0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOworICAg
IGZyYW1lLnZpZXcoKS0+c2V0Tm9kZVRvRHJhdygmbm9kZSk7CisKKyAgICBMYXlvdXRSZWN0IHRv
cExldmVsUmVjdDsKKyAgICByZXR1cm4gc25hcHNob3RGcmFtZVJlY3QoZnJhbWUsIHBpeGVsU25h
cHBlZEludFJlY3Qobm9kZS5yZW5kZXJlcigpLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVj
dCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVNuYXBzaG90dGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NDc2N2IyOGViN2ZmZjg3MWYwYWY0YWM1YTQ5
ODFjMDgwMmM0NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
U25hcHNob3R0aW5nLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlw
b3AuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNpdHkgb2Yg
V2FzaGluZ3Rvbi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUworICog
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVECisgKiBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZyYW1l
U25hcHNob3R0aW5nX2gKKyNkZWZpbmUgRnJhbWVTbmFwc2hvdHRpbmdfaAorCisjaW5jbHVkZSA8
bWVtb3J5PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgSW50
UmVjdDsKK2NsYXNzIEltYWdlQnVmZmVyOworY2xhc3MgTm9kZTsKKworZW51bSB7CisgICAgU25h
cHNob3RPcHRpb25zTm9uZSA9IDAsCisgICAgU25hcHNob3RPcHRpb25zRXhjbHVkZVNlbGVjdGlv
bkhpZ2hsaWdodGluZyA9IDEgPDwgMCwKKyAgICBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlv
bk9ubHkgPSAxIDw8IDEsCisgICAgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMgPSAx
IDw8IDIsCisgICAgU25hcHNob3RPcHRpb25zRm9yY2VCbGFja1RleHQgPSAxIDw8IDMsCit9Owor
dHlwZWRlZiB1bnNpZ25lZCBTbmFwc2hvdE9wdGlvbnM7CisKK3N0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3QoRnJhbWUmLCBjb25zdCBJbnRSZWN0JiwgU25hcHNo
b3RPcHRpb25zID0gU25hcHNob3RPcHRpb25zTm9uZSk7CitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IHNuYXBzaG90Tm9kZShGcmFtZSYsIE5vZGUmKTsKK3N0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gc25hcHNob3RTZWxlY3Rpb24oRnJhbWUmLCBTbmFwc2hvdE9wdGlvbnMgPSBTbmFw
c2hvdE9wdGlvbnNOb25lKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RnJhbWVTbmFwc2hvdHRpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMv
RnJhbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmYjFmOTFiY2JkNmYwNjI3YTYxZDFlOTRkZTliNzE0
YThiNTQzNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZU1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDY0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2
IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAw
OCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJGcmFtZS5oIgotCi0jaW1wb3J0ICJEb2N1bWVu
dC5oIgotI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbXBvcnQgIkZyYW1lU2VsZWN0
aW9uLmgiCi0jaW1wb3J0ICJGcmFtZVNuYXBzaG90dGluZ01hYy5oIgotI2ltcG9ydCAiRnJhbWVW
aWV3LmgiCi0jaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1EcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewotICAgIG1fZG9j
LT51cGRhdGVMYXlvdXQoKTsgLy8gZm9yY2VzIHN0eWxlIHJlY2FsYwotCi0gICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKLSAgICBOU1Jl
Y3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdS
b290UmVjdCh0b3BMZXZlbFJlY3QpKTsKLQotICAgIG1fdmlldy0+c2V0Tm9kZVRvRHJhdyhub2Rl
KTsgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0gICAgTlNJbWFnZSog
cmVzdWx0ID0gaW1hZ2VGcm9tUmVjdCh0aGlzLCBwYWludGluZ1JlY3QpOwotICAgIG1fdmlldy0+
c2V0Tm9kZVRvRHJhdygwKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLURyYWdJbWFnZVJl
ZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKLXsKLSAgICBpZiAoIXNlbGVjdGlvbigp
LmlzUmFuZ2UoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gc2VsZWN0aW9uSW1h
Z2UodGhpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiZmFiNjdlNzY1ODE0YWU2Y2JjOTAxYmFkNDRhZmQxNTNmODYyYTIyLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBGcmFtZVNuYXBzaG90dGluZ01hY19oCi0jZGVmaW5lIEZy
YW1lU25hcHNob3R0aW5nTWFjX2gKLQotT0JKQ19DTEFTUyBOU0ltYWdlOwotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIEZyYW1lOwotY2xhc3MgUmFuZ2U7Ci1jbGFzcyBOb2RlOwotCi1O
U0ltYWdlKiBzZWxlY3Rpb25JbWFnZShGcmFtZSosIGJvb2wgZm9yY2VCbGFja1RleHQgPSBmYWxz
ZSk7Ci1OU0ltYWdlKiByYW5nZUltYWdlKEZyYW1lKiwgUmFuZ2UqLCBib29sIGZvcmNlQmxhY2tU
ZXh0ID0gZmFsc2UpOwotTlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoRnJhbWUqLCBOb2RlKiwg
TlNSZWN0KiBpbWFnZVJlY3QsIE5TUmVjdCogZWxlbWVudFJlY3QpOwotTlNJbWFnZSogaW1hZ2VG
cm9tUmVjdChGcmFtZSosIE5TUmVjdCk7Ci0KLX0KLQotI2VuZGlmIC8vIEZyYW1lU25hcHNob3R0
aW5nTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNo
b3R0aW5nTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdN
YWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MmMyZjIzY2IxN2JkMDNkNGU4
YTVlZTE5NTE0YWM0MzkxZDE5ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSwxNjggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBA
bnlwb3AuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIkZyYW1lU25hcHNob3R0aW5nTWFjLmgiCi0KLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5o
IgotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJGcmFt
ZVNlbGVjdGlvbi5oIgotI2ltcG9ydCAiRnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHQuaCIKLSNpbXBvcnQgIlJhbmdlLmgiCi0jaW1wb3J0ICJSZW5kZXJWaWV3LmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotTlNJbWFnZSogaW1hZ2VGcm9tUmVjdChGcmFtZSogZnJhbWUs
IE5TUmVjdCByZWN0KQotewotICAgIFBhaW50QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBmcmFtZS0+
dmlldygpLT5wYWludEJlaGF2aW9yKCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhh
dmlvcihvbGRCZWhhdmlvciB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMp
OwotICAgIAotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICAKLSAgICBOU0lt
YWdlKiByZXN1bHRJbWFnZSA9IFtbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoU2l6ZTpyZWN0LnNp
emVdIGF1dG9yZWxlYXNlXTsKLSAgICAKLSAgICBpZiAocmVjdC5zaXplLndpZHRoICE9IDAgJiYg
cmVjdC5zaXplLmhlaWdodCAhPSAwKSB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlv
bnMiCi0gICAgICAgIFtyZXN1bHRJbWFnZSBzZXRGbGlwcGVkOllFU107Ci0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCi0gICAgICAgIFtyZXN1bHRJbWFnZSBsb2NrRm9jdXNdOwotCi0gICAg
ICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoKENHQ29udGV4dFJlZilbW05TR3Jh
cGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBncmFwaGljc1BvcnRdKTsgICAgICAgIAotICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwotICAgICAgICBncmFwaGljc0NvbnRleHQudHJh
bnNsYXRlKC1yZWN0Lm9yaWdpbi54LCAtcmVjdC5vcmlnaW4ueSk7Ci0gICAgICAgIGZyYW1lLT52
aWV3KCktPnBhaW50Q29udGVudHMoJmdyYXBoaWNzQ29udGV4dCwgSW50UmVjdChyZWN0KSk7Ci0g
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7Ci0KLSAgICAgICAgW3Jlc3VsdEltYWdl
IHVubG9ja0ZvY3VzXTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICAg
ICAgW3Jlc3VsdEltYWdlIHNldEZsaXBwZWQ6Tk9dOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAotICAgIH0KLSAgICAKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9s
ZEJlaGF2aW9yKTsKLSAgICByZXR1cm4gcmVzdWx0SW1hZ2U7Ci0gICAgCi0gICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKLSAgICAKLSAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2
aW9yKG9sZEJlaGF2aW9yKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi1OU0ltYWdlKiBzZWxlY3Rp
b25JbWFnZShGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCi17Ci0gICAgZnJhbWUt
PnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IChm
b3JjZUJsYWNrVGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsKLSAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgTlNJbWFnZSogcmVzdWx0ID0g
aW1hZ2VGcm9tUmVjdChmcmFtZSwgZnJhbWUtPnNlbGVjdGlvbigpLmJvdW5kcygpKTsKLSAgICBm
cmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JOb3JtYWwpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLU5TSW1hZ2UgKnJhbmdlSW1hZ2UoRnJhbWUqIGZyYW1lLCBS
YW5nZSogcmFuZ2UsIGJvb2wgZm9yY2VCbGFja1RleHQpCi17Ci0gICAgZnJhbWUtPnZpZXcoKS0+
c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IChmb3JjZUJsYWNr
VGV4dCA/IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsKLSAgICBmcmFtZS0+ZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Ci0gICAgUmVuZGVyVmlldyogdmlldyA9IGZyYW1lLT5j
b250ZW50UmVuZGVyZXIoKTsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICBQb3NpdGlvbiBzdGFydCA9IHJhbmdlLT5zdGFydFBvc2l0aW9uKCk7Ci0gICAgUG9zaXRp
b24gY2FuZGlkYXRlID0gc3RhcnQuZG93bnN0cmVhbSgpOwotICAgIGlmIChjYW5kaWRhdGUuZGVw
cmVjYXRlZE5vZGUoKSAmJiBjYW5kaWRhdGUuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSkK
LSAgICAgICAgc3RhcnQgPSBjYW5kaWRhdGU7Ci0KLSAgICBQb3NpdGlvbiBlbmQgPSByYW5nZS0+
ZW5kUG9zaXRpb24oKTsKLSAgICBjYW5kaWRhdGUgPSBlbmQudXBzdHJlYW0oKTsKLSAgICBpZiAo
Y2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkt
PnJlbmRlcmVyKCkpCi0gICAgICAgIGVuZCA9IGNhbmRpZGF0ZTsKLQotICAgIGlmIChzdGFydC5p
c051bGwoKSB8fCBlbmQuaXNOdWxsKCkgfHwgc3RhcnQgPT0gZW5kKQotICAgICAgICByZXR1cm4g
bmlsOwotCi0gICAgUmVuZGVyT2JqZWN0KiBzYXZlZFN0YXJ0UmVuZGVyZXI7Ci0gICAgaW50IHNh
dmVkU3RhcnRPZmZzZXQ7Ci0gICAgUmVuZGVyT2JqZWN0KiBzYXZlZEVuZFJlbmRlcmVyOwotICAg
IGludCBzYXZlZEVuZE9mZnNldDsKLSAgICB2aWV3LT5nZXRTZWxlY3Rpb24oc2F2ZWRTdGFydFJl
bmRlcmVyLCBzYXZlZFN0YXJ0T2Zmc2V0LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZlZEVuZE9mZnNl
dCk7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIgPSBzdGFydC5kZXByZWNhdGVk
Tm9kZSgpLT5yZW5kZXJlcigpOwotICAgIGlmICghc3RhcnRSZW5kZXJlcikKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIgPSBlbmQuZGVwcmVjYXRl
ZE5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIWVuZFJlbmRlcmVyKQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgdmlldy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0LmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJlbmRlcmVyLCBlbmQuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOwotICAgIE5TSW1hZ2UqIHJl
c3VsdCA9IGltYWdlRnJvbVJlY3QoZnJhbWUsIHZpZXctPnNlbGVjdGlvbkJvdW5kcygpKTsKLSAg
ICB2aWV3LT5zZXRTZWxlY3Rpb24oc2F2ZWRTdGFydFJlbmRlcmVyLCBzYXZlZFN0YXJ0T2Zmc2V0
LCBzYXZlZEVuZFJlbmRlcmVyLCBzYXZlZEVuZE9mZnNldCwgUmVuZGVyVmlldzo6UmVwYWludE5v
dGhpbmcpOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2
aW9yTm9ybWFsKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLU5TSW1hZ2UqIHNuYXBzaG90
RHJhZ0ltYWdlKEZyYW1lKiBmcmFtZSwgTm9kZSogbm9kZSwgTlNSZWN0KiBpbWFnZVJlY3QsIE5T
UmVjdCogZWxlbWVudFJlY3QpCi17Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUt
PnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICAKLSAgICByZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKHRydWUpOyAgICAvLyBtYXJrIGRyYWdn
ZWQgbm9kZXMgKHNvIHRoZXkgcGljayB1cCB0aGUgcmlnaHQgQ1NTKQotICAgIGZyYW1lLT5kb2N1
bWVudCgpLT51cGRhdGVMYXlvdXQoKTsgIC8vIGZvcmNlcyBzdHlsZSByZWNhbGMgLSBuZWVkZWQg
c2luY2UgY2hhbmdpbmcgdGhlIGRyYWcgc3RhdGUgbWlnaHQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpbXBseSBuZXcgc3R5bGVzLCBwbHVzIEpTIGNvdWxkIGhh
dmUgY2hhbmdlZCBvdGhlciB0aGluZ3MKLQotCi0gICAgLy8gRG9jdW1lbnQ6OnVwZGF0ZUxheW91
dCBtYXkgaGF2ZSBibG93biBhd2F5IHRoZSBvcmlnaW5hbCBSZW5kZXJFbGVtZW50LgotICAgIHJl
bmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgTGF5b3V0UmVjdCB0b3BMZXZlbFJlY3Q7Ci0gICAgTlNSZWN0IHBh
aW50aW5nUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJl
Y3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAgICBpZiAoTlNJc0VtcHR5UmVjdChwYWludGluZ1JlY3Qp
KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJh
dyhub2RlKTsgLy8gaW52b2tlIHNwZWNpYWwgc3ViLXRyZWUgZHJhd2luZyBtb2RlCi0gICAgTlNJ
bWFnZSogcmVzdWx0ID0gaW1hZ2VGcm9tUmVjdChmcmFtZSwgcGFpbnRpbmdSZWN0KTsKLSAgICBy
ZW5kZXJlci0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0KCk7Ci0gICAgZnJhbWUtPnZpZXcoKS0+c2V0Tm9kZVRvRHJhdygwKTsKLQot
ICAgIGlmIChlbGVtZW50UmVjdCkKLSAgICAgICAgKmVsZW1lbnRSZWN0ID0gcGl4ZWxTbmFwcGVk
SW50UmVjdCh0b3BMZXZlbFJlY3QpOwotICAgIGlmIChpbWFnZVJlY3QpCi0gICAgICAgICppbWFn
ZVJlY3QgPSBwYWludGluZ1JlY3Q7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCmluZGV4IDVhYWYz
YTY3OGM5ZTU0M2FmNjgzYjM3YWQ1YjA2Y2NlMDY0NDNiOWYuLjk2NzRmMTc2OGY1ZGQ4NDI1YjYw
YzdhZjE2ZjBmMWY3ZDZmNzYzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2lu
L0ZyYW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAK
QEAgLTU3LDMwICs1Nyw0IEBAIEdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21TZWxlY3Rpb24o
RnJhbWUqIGZyYW1lLCBib29sIGZvcmNlQmxhY2tUZXh0KQogICAgIHJldHVybiBpbWFnZTsKIH0K
IAotRHJhZ0ltYWdlUmVmIEZyYW1lOjpkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKQotewotICAgIGlm
IChzZWxlY3Rpb24oKS5pc1JhbmdlKCkpCi0gICAgICAgIHJldHVybiBpbWFnZUZyb21TZWxlY3Rp
b24odGhpcywgZmFsc2UpLmxlYWsoKTsKLQotICAgIHJldHVybiAwOwotfQotCi1EcmFnSW1hZ2VS
ZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQotewotICAgIGRvY3VtZW50KCktPnVwZGF0
ZUxheW91dCgpOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVy
KCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBMYXlvdXRS
ZWN0IHRvcExldmVsUmVjdDsKLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHBpeGVsU25hcHBl
ZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxSZWN0KSk7Ci0KLSAg
ICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9kZSk7IC8vIGludm9rZSBzcGVjaWFsIHN1Yi10cmVl
IGRyYXdpbmcgbW9kZQotICAgIEdESU9iamVjdDxIQklUTUFQPiByZXN1bHQgPSBpbWFnZUZyb21S
ZWN0KHRoaXMsIHBhaW50aW5nUmVjdCk7Ci0gICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KDApOwot
Ci0gICAgcmV0dXJuIHJlc3VsdC5sZWFrKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5oCmluZGV4IDNhMjcyM2U2M2Q2ZDdlN2VjMDQ0Y2Ix
MmYyZWE3YmQwNmNmZTY1OWYuLjI2OTcyNWMxZjliOWI4MGQ1NzgxNDg0ZjkzMWFiMjVkZDNhZTMz
MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uaApAQCAtMzUsNyArMzUsNyBAQCBjbGFz
cyBGcmFtZTsKIGNsYXNzIEludFJlY3Q7CiAKIEdESU9iamVjdDxIQklUTUFQPiBpbWFnZUZyb21S
ZWN0KGNvbnN0IEZyYW1lKiwgSW50UmVjdCYpOwotR0RJT2JqZWN0PEhCSVRNQVA+IGltYWdlRnJv
bVNlbGVjdGlvbihGcmFtZSosIGJvb2wgZm9yY2VXaGl0ZVRleHQpOworR0RJT2JqZWN0PEhCSVRN
QVA+IGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSosIGJvb2wgZm9yY2VCbGFja1RleHQpOwogdm9p
ZCBjb21wdXRlUGFnZVJlY3RzRm9yRnJhbWUoRnJhbWUqLCBjb25zdCBJbnRSZWN0JiBwcmludFJl
Y3QsIGZsb2F0IGhlYWRlckhlaWdodCwgZmxvYXQgZm9vdGVySGVpZ2h0LCBmbG9hdCB1c2VyU2Nh
bGVGYWN0b3IsIFZlY3RvcjxJbnRSZWN0PiYgb3V0UGFnZXMsIGludCYgb3V0UGFnZUhlaWdodCk7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
Y3BwCmluZGV4IGI4MWFmZDU3OWU4MjkzZWVmYTJiYTkzYjliYjU1YzFmNTA3NmNmNDcuLjA2NTJl
OWYzMjFhMTZiNTYyYzExNzUzNWZiYzhlNTliOTFhZGQwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0ltYWdlLmNwcApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0yOCwyOSArMjgsMzcgQEAKIAogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiAKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lU25hcHNo
b3R0aW5nLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiBEcmFnSW1h
Z2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50
U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBmbG9hdCBoZWlnaHRS
ZXNpemVSYXRpbyA9IDAuMGY7CiAgICAgZmxvYXQgd2lkdGhSZXNpemVSYXRpbyA9IDAuMGY7CiAg
ICAgZmxvYXQgcmVzaXplUmF0aW8gPSAtMS4wZjsKICAgICBJbnRTaXplIG9yaWdpbmFsU2l6ZSA9
IGRyYWdJbWFnZVNpemUoaW1hZ2UpOwotICAgIAorCiAgICAgaWYgKHNyY1NpemUud2lkdGgoKSA+
IHNpemUud2lkdGgoKSkgewogICAgICAgICB3aWR0aFJlc2l6ZVJhdGlvID0gc2l6ZS53aWR0aCgp
IC8gKGZsb2F0KXNyY1NpemUud2lkdGgoKTsKICAgICAgICAgcmVzaXplUmF0aW8gPSB3aWR0aFJl
c2l6ZVJhdGlvOwogICAgIH0KLSAgICAKKwogICAgIGlmIChzcmNTaXplLmhlaWdodCgpID4gc2l6
ZS5oZWlnaHQoKSkgewogICAgICAgICBoZWlnaHRSZXNpemVSYXRpbyA9IHNpemUuaGVpZ2h0KCkg
LyAoZmxvYXQpc3JjU2l6ZS5oZWlnaHQoKTsKICAgICAgICAgaWYgKChyZXNpemVSYXRpbyA8IDAu
MGYpIHx8IChyZXNpemVSYXRpbyA+IGhlaWdodFJlc2l6ZVJhdGlvKSkKICAgICAgICAgICAgIHJl
c2l6ZVJhdGlvID0gaGVpZ2h0UmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAgICAgaWYgKHNy
Y1NpemUgPT0gb3JpZ2luYWxTaXplKQogICAgICAgICByZXR1cm4gcmVzaXplUmF0aW8gPiAwLjBm
ID8gc2NhbGVEcmFnSW1hZ2UoaW1hZ2UsIEZsb2F0U2l6ZShyZXNpemVSYXRpbywgcmVzaXplUmF0
aW8pKSA6IGltYWdlOwotICAgIAorCiAgICAgLy8gVGhlIGltYWdlIHdhcyBzY2FsZWQgaW4gdGhl
IHdlYnBhZ2Ugc28gYXQgbWluaW11bSB3ZSBtdXN0IGFjY291bnQgZm9yIHRoYXQgc2NhbGluZwog
ICAgIGZsb2F0IHNjYWxleCA9IHNyY1NpemUud2lkdGgoKSAvIChmbG9hdClvcmlnaW5hbFNpemUu
d2lkdGgoKTsKICAgICBmbG9hdCBzY2FsZXkgPSBzcmNTaXplLmhlaWdodCgpIC8gKGZsb2F0KW9y
aWdpbmFsU2l6ZS5oZWlnaHQoKTsKQEAgLTU4LDE0ICs2NiwxNDcgQEAgRHJhZ0ltYWdlUmVmIGZp
dERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNy
Y1NpemUsIGMKICAgICAgICAgc2NhbGV4ICo9IHJlc2l6ZVJhdGlvOwogICAgICAgICBzY2FsZXkg
Kj0gcmVzaXplUmF0aW87CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHNjYWxlRHJhZ0ltYWdl
KGltYWdlLCBGbG9hdFNpemUoc2NhbGV4LCBzY2FsZXkpKTsKIH0KIAorc3RydWN0IFNjb3BlZE5v
ZGVEcmFnRW5hYmxlciB7CisgICAgU2NvcGVkTm9kZURyYWdFbmFibGVyKEZyYW1lJiBmcmFtZSwg
Tm9kZSYgbm9kZSkKKyAgICAgICAgOiBmcmFtZShmcmFtZSkKKyAgICAgICAgLCBub2RlKG5vZGUp
CisgICAgeworICAgICAgICBpZiAobm9kZS5yZW5kZXJlcigpKQorICAgICAgICAgICAgbm9kZS5y
ZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7CisgICAgICAgIGZyYW1lLmRvY3VtZW50
KCktPnVwZGF0ZUxheW91dCgpOworICAgIH0KKworICAgIH5TY29wZWROb2RlRHJhZ0VuYWJsZXIo
KQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUucmVuZGVyZXIoKSkKKyAgICAgICAgICAgIG5vZGUu
cmVuZGVyZXIoKS0+dXBkYXRlRHJhZ1N0YXRlKGZhbHNlKTsKKyAgICB9CisKKyAgICBjb25zdCBG
cmFtZSYgZnJhbWU7CisgICAgY29uc3QgTm9kZSYgbm9kZTsKK307CisKK3N0YXRpYyBEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbVNuYXBzaG90KHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3QsIE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFzbmFwc2hvdCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3Jp
ZW50YXRpb247CisjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKKyAgICBpZiAobm9k
ZSkgeworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsK
KyAgICAgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgICAgIG9yaWVudGF0aW9uLnNldFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHJlbmRlcmVyLT5z
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgb3JpZW50YXRpb24uc2V0
SW1hZ2VPcmllbnRhdGlvbkVudW0ocmVuZGVyZXItPnN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigp
KTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub2RlKTsKKyNlbmRpZgorICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UgPSBzbmFwc2hvdC0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0
Q29weUltYWdlTW9kZSgpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpLCBvcmll
bnRhdGlvbik7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKEZyYW1l
JiBmcmFtZSwgTm9kZSYgbm9kZSkKK3sKKyAgICBTY29wZWROb2RlRHJhZ0VuYWJsZXIgZW5hYmxl
RHJhZyhmcmFtZSwgbm9kZSk7CisgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hv
dChzbmFwc2hvdE5vZGUoZnJhbWUsIG5vZGUpLCAmbm9kZSk7Cit9CisKK0RyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBib29sIGZvcmNlQmxhY2tU
ZXh0KQoreworICAgIFNuYXBzaG90T3B0aW9ucyBvcHRpb25zID0gZm9yY2VCbGFja1RleHQgPyBT
bmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA6IFNuYXBzaG90T3B0aW9uc05vbmU7CisgICAg
cmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hvdChzbmFwc2hvdFNlbGVjdGlvbihmcmFt
ZSwgb3B0aW9ucyksIG51bGxwdHIpOworfQorCitzdHJ1Y3QgU2NvcGVkRnJhbWVTZWxlY3Rpb25T
dGF0ZSB7CisgICAgU2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZShGcmFtZSYgZnJhbWUpCisgICAg
ICAgIDogZnJhbWUoZnJhbWUpCisgICAgeworICAgICAgICBpZiAoUmVuZGVyVmlldyogcm9vdCA9
IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICAgICAgcm9vdC0+Z2V0U2VsZWN0aW9u
KHN0YXJ0UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRSZW5kZXJlciwgZW5kT2Zmc2V0KTsKKyAg
ICB9CisKKyAgICB+U2NvcGVkRnJhbWVTZWxlY3Rpb25TdGF0ZSgpCisgICAgeworICAgICAgICBp
ZiAoUmVuZGVyVmlldyogcm9vdCA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpKQorICAgICAgICAg
ICAgcm9vdC0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0T2Zmc2V0LCBlbmRSZW5k
ZXJlciwgZW5kT2Zmc2V0LCBSZW5kZXJWaWV3OjpSZXBhaW50Tm90aGluZyk7CisgICAgfQorCisg
ICAgY29uc3QgRnJhbWUmIGZyYW1lOworICAgIFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlcjsK
KyAgICBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyOworICAgIGludCBzdGFydE9mZnNldDsKKyAg
ICBpbnQgZW5kT2Zmc2V0OworfTsKKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvclJh
bmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhbmdlLCBib29sIGZvcmNlQmxhY2tUZXh0KQorewor
ICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIFJlbmRlclZpZXcqIHZp
ZXcgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgLy8gVG8gc25hcHNob3QgdGhlIHJhbmdlLCB0ZW1wb3Jhcmls
eSBzZWxlY3QgaXQgYW5kIHRha2Ugc2VsZWN0aW9uIHNuYXBzaG90LgorICAgIFBvc2l0aW9uIHN0
YXJ0ID0gcmFuZ2Uuc3RhcnRQb3NpdGlvbigpOworICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHN0
YXJ0LmRvd25zdHJlYW0oKTsKKyAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCkgJiYg
Y2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCisgICAgICAgIHN0YXJ0ID0g
Y2FuZGlkYXRlOworCisgICAgUG9zaXRpb24gZW5kID0gcmFuZ2UuZW5kUG9zaXRpb24oKTsKKyAg
ICBjYW5kaWRhdGUgPSBlbmQudXBzdHJlYW0oKTsKKyAgICBpZiAoY2FuZGlkYXRlLmRlcHJlY2F0
ZWROb2RlKCkgJiYgY2FuZGlkYXRlLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpCisgICAg
ICAgIGVuZCA9IGNhbmRpZGF0ZTsKKworICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNO
dWxsKCkgfHwgc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNv
bnN0IFNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoZnJhbWUpOworCisg
ICAgUmVuZGVyT2JqZWN0KiBzdGFydFJlbmRlcmVyID0gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+
cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyID0gZW5kLmRlcHJlY2F0
ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFzdGFydFJlbmRlcmVyIHx8ICFlbmRSZW5k
ZXJlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBTbmFwc2hvdE9wdGlvbnMgb3B0
aW9ucyA9IFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uT25seSB8IChmb3JjZUJsYWNrVGV4
dCA/IFNuYXBzaG90T3B0aW9uc0ZvcmNlQmxhY2tUZXh0IDogU25hcHNob3RPcHRpb25zTm9uZSk7
CisgICAgdmlldy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0LmRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0KCksIGVuZFJlbmRlcmVyLCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSwgUmVuZGVyVmlldzo6UmVwYWludE5vdGhpbmcpOworICAgIC8vIFdlIGNhcHR1cmUgdXNpbmcg
c25hcHNob3RGcmFtZVJlY3QoKSBiZWNhdXNlIHdlIGZha2UgdXAgdGhlIHNlbGVjdGlvbiB1c2lu
ZworICAgIC8vIEZyYW1lVmlldyBidXQgc25hcHNob3RTZWxlY3Rpb24oKSB1c2VzIHRoZSBzZWxl
Y3Rpb24gZnJvbSB0aGUgRnJhbWUgaXRzZWxmLgorICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VG
cm9tU25hcHNob3Qoc25hcHNob3RGcmFtZVJlY3QoZnJhbWUsIHZpZXctPnNlbGVjdGlvbkJvdW5k
cygpLCBvcHRpb25zKSwgbnVsbHB0cik7Cit9CisKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGb3JJbWFnZShGcmFtZSYgZnJhbWUsIE5vZGUmIG5vZGUsIEludFJlY3QmIGltYWdlUmVjdCwg
SW50UmVjdCYgZWxlbWVudFJlY3QpCit7CisgICAgU2NvcGVkTm9kZURyYWdFbmFibGVyIGVuYWJs
ZURyYWcoZnJhbWUsIG5vZGUpOworCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUu
cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIC8vIENhbGN1bGF0ZSBpbWFnZSBhbmQgZWxlbWVudCBtZXRyaWNzIGZvciB0aGUgY2xp
ZW50LCB0aGVuIGNyZWF0ZSBkcmFnIGltYWdlLgorICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0
OworICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJl
ci0+cGFpbnRpbmdSb290UmVjdCh0b3BMZXZlbFJlY3QpKTsKKworICAgIGlmIChwYWludGluZ1Jl
Y3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGVsZW1lbnRSZWN0
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdCh0b3BMZXZlbFJlY3QpOworICAgIGltYWdlUmVjdCA9IHBh
aW50aW5nUmVjdDsKKworICAgIHJldHVybiBjcmVhdGVEcmFnSW1hZ2VGcm9tU25hcHNob3Qoc25h
cHNob3ROb2RlKGZyYW1lLCBub2RlKSwgJm5vZGUpOworfQorCiAjaWYgIVBMQVRGT1JNKE1BQykg
JiYgKCFQTEFURk9STShXSU4pIHx8IE9TKFdJTkNFKSkKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGb3JMaW5rKFVSTCYsIGNvbnN0IFN0cmluZyYsIEZvbnRSZW5kZXJpbmdNb2RlKQogewot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0ltYWdlLmgKaW5kZXggZDhmNTJiY2ZhZDQ0MjQzZjhhY2NiODY3MGEwOTRh
ZjExM2M0YjI0ZC4uZDgzNjk2ZTMzMTFjY2U1NDE3MzUyYjZkMDQ2OTlhMTAzMzQ0MGYwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKQEAgLTI2LDEwICsyNiwxMSBAQAogI2lmbmRl
ZiBEcmFnSW1hZ2VfaAogI2RlZmluZSBEcmFnSW1hZ2VfaAogCisjaW5jbHVkZSAiRmxvYXRTaXpl
LmgiCiAjaW5jbHVkZSAiRm9udFJlbmRlcmluZ01vZGUuaCIKKyNpbmNsdWRlICJGcmFtZVNuYXBz
aG90dGluZy5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQxLDM4ICs0Miw0NiBAQCB0eXBlZGVmIHN0cnVjdCBI
QklUTUFQX18qIEhCSVRNQVA7CiB0eXBlZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19z
dXJmYWNlX3Q7CiAjZW5kaWYKIAotLy9XZSBuZWVkIHRvICNkZWZpbmUgWU9mZnNldCBhcyBpdCBu
ZWVkcyB0byBiZSBzaGFyZWQgd2l0aCBXZWJLaXQKKy8vIFdlIG5lZWQgdG8gI2RlZmluZSBZT2Zm
c2V0IGFzIGl0IG5lZWRzIHRvIGJlIHNoYXJlZCB3aXRoIFdlYktpdAogI2RlZmluZSBEcmFnTGFi
ZWxCb3JkZXJZT2Zmc2V0IDIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgSW1h
Z2U7Ci0gICAgY2xhc3MgVVJMOworY2xhc3MgRnJhbWU7CitjbGFzcyBJbWFnZTsKK2NsYXNzIElu
dFJlY3Q7CitjbGFzcyBOb2RlOworY2xhc3MgUmFuZ2U7CitjbGFzcyBVUkw7CiAKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgdHlwZWRlZiBSZXRhaW5QdHI8TlNJbWFnZT4gRHJhZ0ltYWdlUmVmOwor
dHlwZWRlZiBSZXRhaW5QdHI8TlNJbWFnZT4gRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0o
V0lOKQotICAgIHR5cGVkZWYgSEJJVE1BUCBEcmFnSW1hZ2VSZWY7Cit0eXBlZGVmIEhCSVRNQVAg
RHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShOSVgpCi0gICAg
dHlwZWRlZiBjYWlyb19zdXJmYWNlX3QqIERyYWdJbWFnZVJlZjsKK3R5cGVkZWYgY2Fpcm9fc3Vy
ZmFjZV90KiBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEJM
QUNLQkVSUlkpCi0gICAgdHlwZWRlZiB2b2lkKiBEcmFnSW1hZ2VSZWY7Cit0eXBlZGVmIHZvaWQq
IERyYWdJbWFnZVJlZjsKICNlbmRpZgotICAgIAotICAgIEludFNpemUgZHJhZ0ltYWdlU2l6ZShE
cmFnSW1hZ2VSZWYpOwotICAgIAotICAgIC8vVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBtZW1v
cnkgbmV1dHJhbCwgZWcuIGlmIHRoZXkgcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGltYWdlLCAK
LSAgICAvL3RoZXkgc2hvdWxkIHJlbGVhc2UgdGhlIGlucHV0IGltYWdlLiAgQXMgYSBjb3JvbGxh
cnkgdGhlc2UgbWV0aG9kcyBkb24ndCBndWFyYW50ZWUKLSAgICAvL3RoZSBpbnB1dCBpbWFnZSBy
ZWYgd2lsbCBzdGlsbCBiZSB2YWxpZCBhZnRlciB0aGV5IGhhdmUgYmVlbiBjYWxsZWQKLSAgICBE
cmFnSW1hZ2VSZWYgZml0RHJhZ0ltYWdlVG9NYXhTaXplKERyYWdJbWFnZVJlZiBpbWFnZSwgY29u
c3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSk7Ci0gICAgRHJhZ0ltYWdl
UmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiwgRmxvYXRTaXplIHNjYWxlKTsKLSAgICBE
cmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFn
ZSwgZmxvYXQgZGVsdGEpOwotICAgIAotICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwotICAgIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBT
dHJpbmcmKTsKLSAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBGb250UmVuZGVyaW5nTW9kZSk7Ci0gICAgdm9pZCBkZWxldGVE
cmFnSW1hZ2UoRHJhZ0ltYWdlUmVmKTsKLX0KIAorSW50U2l6ZSBkcmFnSW1hZ2VTaXplKERyYWdJ
bWFnZVJlZik7CisKKy8vIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgbWVtb3J5IG5ldXRyYWws
IGVnLiBpZiB0aGV5IHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBpbWFnZSwKKy8vIHRoZXkgc2hv
dWxkIHJlbGVhc2UgdGhlIGlucHV0IGltYWdlLiBBcyBhIGNvcm9sbGFyeSB0aGVzZSBtZXRob2Rz
IGRvbid0IGd1YXJhbnRlZQorLy8gdGhlIGlucHV0IGltYWdlIHJlZiB3aWxsIHN0aWxsIGJlIHZh
bGlkIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGNhbGxlZC4KK0RyYWdJbWFnZVJlZiBmaXREcmFnSW1h
Z2VUb01heFNpemUoRHJhZ0ltYWdlUmVmLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJ
bnRTaXplJiBkc3RTaXplKTsKK0RyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VS
ZWYsIEZsb2F0U2l6ZSBzY2FsZSk7CitEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0Zy
YWN0aW9uKERyYWdJbWFnZVJlZiwgZmxvYXQgZGVsdGEpOworCitEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsK
K0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShj
b25zdCBTdHJpbmcmKTsKKworRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvck5vZGUoRnJh
bWUmLCBOb2RlJik7CitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKEZy
YW1lJiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGb3JSYW5nZShGcmFtZSYsIFJhbmdlJiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZh
bHNlKTsKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JJbWFnZShGcmFtZSYsIE5vZGUm
LCBJbnRSZWN0JiBpbWFnZVJlY3QsIEludFJlY3QmIGVsZW1lbnRSZWN0KTsKK0RyYWdJbWFnZVJl
ZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZvbnRS
ZW5kZXJpbmdNb2RlKTsKK3ZvaWQgZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7Cit9CiAK
LSNlbmRpZiAvLyFEcmFnSW1hZ2VfaAorI2VuZGlmIC8vIERyYWdJbWFnZV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCmluZGV4IDI0ZDE2MDNh
OGNmNmRjMjkyMzA0Y2Q2NjE2YThiZjE3YWZhNTkwODAuLjZjOTZiZTcxOTk3MDJjNmZiZTM0ZTgy
YmNhOTk4M2RlNjUwY2M5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lSU9TLm1tCkBAIC0zMyw3ICszMyw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Zs
b2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
cmFtZVNlbGVjdGlvbi5oPgotI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNuYXBzaG90dGluZ01hYy5o
PgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVNuYXBzaG90dGluZy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9odG1sZWRpdGluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KaW5kZXggYmVkMmQ4YTI0YWIyZjdlNGU1ZjYzOTRkMWZhY2MzNDNiMWUyNTc5Ny4u
MzVkMDE5NGQyMDI1OWJmYThmMzNlMzZkODgwZmUwNDA5ZmI5ZjJlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC04NSw2ICs4NSw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0RvY3VtZW50RnJhZ21lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0RyYWdJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0b3IuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRWRpdG9yRGVsZXRlQWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Vs
ZW1lbnQuaD4KQEAgLTk1LDcgKzk2LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTZWxl
Y3Rpb24uaD4KLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWVTbmFwc2hvdHRpbmdNYWMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CkBAIC0xODIwLDcgKzE4MjAsMTIgQEAg
c3RhdGljIGJvb2wgbW91c2VFdmVudElzUGFydE9mQ2xpY2tPckRyYWcoTlNFdmVudCAqZXZlbnQp
CiB7CiAgICAgaWYgKCFbc2VsZiBfaGFzU2VsZWN0aW9uXSkKICAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICBOU0ltYWdlICpkcmFnSW1hZ2UgPSBzZWxlY3Rpb25JbWFnZShjb3JlKFtzZWxmIF9mcmFt
ZV0pKTsKKworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOworICAg
IGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgTlNJbWFnZSAqZHJh
Z0ltYWdlID0gW2NyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbigqY29yZUZyYW1lKS5sZWFrUmVm
KCkgYXV0b3JlbGVhc2VdOwogICAgIFtkcmFnSW1hZ2UgX3dlYl9kaXNzb2x2ZVRvRnJhY3Rpb246
V2ViRHJhZ0ltYWdlQWxwaGFdOwogICAgIHJldHVybiBkcmFnSW1hZ2U7CiB9CkBAIC01OTY1LDcg
KzU5NzAsMTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3Ry
aW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKIHsKICAgICBpZiAoIVtzZWxmIF9o
YXNTZWxlY3Rpb25dKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBzZWxlY3Rpb25J
bWFnZShjb3JlKFtzZWxmIF9mcmFtZV0pLCBmb3JjZUJsYWNrVGV4dCk7CisKKyAgICBGcmFtZSog
Y29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW2NyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlv
bigqY29yZUZyYW1lLCBmb3JjZUJsYWNrVGV4dCkubGVha1JlZigpIGF1dG9yZWxlYXNlXTsKIH0K
IAogLSAoTlNSZWN0KXNlbGVjdGlvbkltYWdlUmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vRE9NQ29yZUNsYXNzZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vRE9NQ29yZUNsYXNz
ZXMuY3BwCmluZGV4IGNjYmQ3MTkwMWU0NTU3OTAzMWI5MDJiYTU2YTg5NGU2YThkNzljYjMuLmI4
MWQ0YTdkNzM0NzdhZGY4YmRiNzgzYjI1MWRlMWRjOWZmZDkzMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL0RPTUNvcmVDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9E
T01Db3JlQ2xhc3Nlcy5jcHAKQEAgLTM2LDEwICszNiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
Q09NUHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EcmFnSW1hZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9I
VE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KQEAgLTQ5
LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vZGVMaXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZW5kZXJFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJUcmVlQXNUZXh0
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogCiAjaW5jbHVkZSA8aW5p
dGd1aWQuaD4KIC8vIHszQjBDMEVGRi00NzhCLTRiMGItODI5MC1EMjMyMUUwOEUyM0V9CkBAIC0x
Mjc5LDcgKzEyODAsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERPTUVsZW1lbnQ6OnJl
bmRlcmVkSW1hZ2UoSEJJVE1BUCogaW1hZ2UpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIAotICAgICppbWFnZSA9IGZyYW1lLT5ub2RlSW1hZ2UobV9lbGVtZW50KTsK
KyAgICAqaW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGb3JOb2RlKCpmcmFtZSwgKm1fZWxlbWVudCk7
CiAgICAgaWYgKCEqaW1hZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>