<?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>30623</bug_id>
          
          <creation_ts>2009-10-21 05:31:02 -0700</creation_ts>
          <short_desc>[GTK] Enable DOM clipboard and drag-and-drop access</short_desc>
          <delta_ts>2010-08-06 09:06:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>21599</dependson>
    
    <dependson>39240</dependson>
    
    <dependson>39322</dependson>
    
    <dependson>39459</dependson>
    
    <dependson>39465</dependson>
    
    <dependson>39843</dependson>
    
    <dependson>39844</dependson>
    
    <dependson>40307</dependson>
    
    <dependson>40333</dependson>
    
    <dependson>40788</dependson>
          <blocked>30576</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>pclouds</cc>
    
    <cc>reinouts</cc>
    
    <cc>slomo</cc>
    
    <cc>tevaum</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>156456</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2009-10-21 05:31:02 -0700</bug_when>
    <thetext>DOM DataTransfer objects should be able to get and set clipboard, drag source and drag destination data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>156458</commentid>
    <comment_count>1</comment_count>
      <attachid>41562</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2009-10-21 05:35:27 -0700</bug_when>
    <thetext>Created attachment 41562
Draft patch for centralizing clipboard code

I&apos;m attaching a draft patch for the first part of this effort. The patch centralizes the clipboard code (it was split up into one section for GDK_SELECTION_CLIPBOARD and one for GDK_SELECTION_PRIMARY before). It also creates a DataObjectGtk store for clipboard data, which will be used for drag-and-drop data in future patches. I&apos;d love to get feedback on this patch before preparing it for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157321</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2009-10-23 14:43:43 -0700</bug_when>
    <thetext>Xan asked me to write a high-level description of this patch to make it a little easier to review:

The DOM DataTransfer object (for the GTK port this is WebCore/platform/gtk/ClipboardGtk.cpp) needs to be able to read and modify both clipboard contents and drag and drop data. Unlike OS X where both of these operations are exposed via an NSPasteboard, GTK+/GLib uses two different slices of API for drag-and-drop and clipboard access.

This patch introduces platform/gtk/DataObjectGtk.cpp, comparable to platform/chromium/ChromiumDataObject.cpp, which is a layer of indirection between ClipboardGtk and the actual GTK+/GLib APIs. When clipboard reads happen, all data is read from the clipboard and stored in the DataObject. Eventually drag data can be read into the same DataObject.

This first patch does yet not touch ClipboardGtk, but replaces the old logic for reading and writing clipboard data to use DataObjectGtk. This old logic was in two places:
1. PasteboardGtk -- used for all non-DataTransfer clipboard access.
2. EditorClientGtk -- code to handle GDK_SELECTION_PRIMARY clipboard access (activated when some text is selected).

Information about what drag/clipboard data targets has also been moved from WebKit/gtk/webkit/webkitwebview.cpp to WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160005</commentid>
    <comment_count>3</comment_count>
      <attachid>42364</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2009-11-03 00:20:45 -0800</bug_when>
    <thetext>Created attachment 42364
Move target list handling to PasteboardHelperGtk

This is the first patch in this series. It moves knowledge of the target list to PasteboardHelperGtk, which will eventually be responsible for managing all clipboard/pasteboard data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160023</commentid>
    <comment_count>4</comment_count>
      <attachid>42364</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-11-03 03:08:40 -0800</bug_when>
    <thetext>Comment on attachment 42364
Move target list handling to PasteboardHelperGtk

This looks good to me, seems to fit nicely as a first step on the overall plan and is a good improvement by itself (IMHO) since it allows the views to share the same targelist.

I just have a couple of nitpick style comments:

targetlist in here:

+private:
+    GtkTargetList* targetList;

should be m_targetList, per style guide.

Also, I&apos;m in doubt about the name for &apos;fullTargetList&apos;. I see that in future patches you&apos;ll add new methods to get the targetlist for DataObject and GdkDragContext, but I wonder if you really need to add &apos;full&apos; to the parameter-less method to avoid confusions.

Other than that, looks good to me. Marking r- at least for the style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160126</commentid>
    <comment_count>5</comment_count>
      <attachid>42397</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2009-11-03 10:45:05 -0800</bug_when>
    <thetext>Created attachment 42397
Move target list handling to PasteboardHelperGtk (rev2)

Thanks for the review. I&apos;ve attached a patch incorporating your suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160389</commentid>
    <comment_count>6</comment_count>
      <attachid>42397</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-11-04 02:04:41 -0800</bug_when>
    <thetext>Comment on attachment 42397
Move target list handling to PasteboardHelperGtk (rev2)

Thanks for the update. Since Xan already looked, I&apos;ll say r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160391</commentid>
    <comment_count>7</comment_count>
      <attachid>42397</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-04 02:19:49 -0800</bug_when>
    <thetext>Comment on attachment 42397
Move target list handling to PasteboardHelperGtk (rev2)

Clearing flags on attachment: 42397

Committed r50507: &lt;http://trac.webkit.org/changeset/50507&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160392</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-04 02:19:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160754</commentid>
    <comment_count>9</comment_count>
      <attachid>42550</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2009-11-05 00:50:06 -0800</bug_when>
    <thetext>Created attachment 42550
Add DataObjectGtk and use it for GDK_SELECTION_PRIMARY

This patch adds DataObjectGtk, a container used for holding pasteboard/clipboard and drag-and-drop data. Code in PasteboardHelperGtk can set the clipboard appropriately given a DataObjectGtk. It will eventually be useful for exposing this data in the DOM DataTransfer object (WebCore/platform/gtk/ClipboardGtk.cpp). The next patch in the series will handle setting data on the main pasteboard (GDK_SELECTION_CLIPBOARD) in this way as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160976</commentid>
    <comment_count>10</comment_count>
      <attachid>42550</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-05 15:19:06 -0800</bug_when>
    <thetext>Comment on attachment 42550
Add DataObjectGtk and use it for GDK_SELECTION_PRIMARY

I&apos;m confused by this patch being up for review on a closed bug?  Should this bug be re-opened? or can the r=? flag on this patch be cleared?

If it should be re-opened please do so, and mark it r=? again.  For now I&apos;m assuming the r=? should be cleared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160980</commentid>
    <comment_count>11</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2009-11-05 15:20:55 -0800</bug_when>
    <thetext>Sorry. The commit-queue closed this bug when committing the previous patch. I&apos;m reopening it and setting the patch flag back to r=?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160997</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-05 15:36:21 -0800</bug_when>
    <thetext>Actually, you closed it after the commit-queue did. :)
https://bugs.webkit.org/show_activity.cgi?id=30623

Our tools are really only designed to work with one-change-per-bug.  bug 28230 is about not closing bugs with r=?, which I&apos;ll eventually get to fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161000</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2009-11-05 15:40:39 -0800</bug_when>
    <thetext>It&apos;s true. I had confusedly thought that VERIFIED / LATER meant &quot;the bug has been verified, we&apos;ll fix it later&quot; and would prevent the commit queue from closing it in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161333</commentid>
    <comment_count>14</comment_count>
      <attachid>42550</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-11-07 01:09:47 -0800</bug_when>
    <thetext>Comment on attachment 42550
Add DataObjectGtk and use it for GDK_SELECTION_PRIMARY


&gt; +        gchar* path = g_filename_from_uri(uri.utf8().data(), NULL, NULL);
&gt; +        if (!path)
&gt; +            continue;

^^^leaks scheme...

Use GOwnPtr here...


&gt; +
&gt; +        files.append(path);
&gt; +        g_free(path);

^^^ Are you sure you want to create the String from ASCII?


&gt; +    GdkPixbuf* m_image;
&gt; +    GdkDragContext* m_dragContext;


Use a GOwnPtr here... this gets rid of all the if () unref if () ref things..



.. I stopped here for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161372</commentid>
    <comment_count>15</comment_count>
      <attachid>42703</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2009-11-07 13:43:01 -0800</bug_when>
    <thetext>Created attachment 42703
Add DataObjectGtk and use it for GDK_SELECTION_PRIMARY (rev2)

Thank you for the review. I&apos;ve attached a patch addressing some of your issues you mentioned. In some places the need to call g_free(...) has been removed by making the uriList a vector of KURLs. In one other, I have switched to using GOwnPtr.

IMO, m_image and m_dragContext should be GRefPtr&apos;s instead of GOwnPtr&apos;s. If you feel like this patch needs that, I can shift my focus to finally getting that into WebKit ( https://bugs.webkit.org/show_bug.cgi?id=21599 ).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161404</commentid>
    <comment_count>16</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-11-08 01:11:52 -0800</bug_when>
    <thetext>
&gt; IMO, m_image and m_dragContext should be GRefPtr&apos;s instead of GOwnPtr&apos;s. If you
&gt; feel like this patch needs that, I can shift my focus to finally getting that
&gt; into WebKit ( https://bugs.webkit.org/show_bug.cgi?id=21599 ).

Yeah, GRefPtr sounds better. I will hopefully have a review cycle tomorrow. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167329</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-30 12:23:04 -0800</bug_when>
    <thetext>Attachment 42703 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Done processing WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp
WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h:50:  Missing spaces around =  [whitespace/operators] [4]
Done processing WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h
WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp:98:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp:107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Done processing WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp
WebCore/platform/gtk/DataObjectGtk.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
Done processing WebCore/platform/gtk/DataObjectGtk.h
WebCore/platform/gtk/DataObjectGtk.cpp:72:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Done processing WebCore/platform/gtk/DataObjectGtk.cpp
Total errors found: 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171526</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-14 13:09:16 -0800</bug_when>
    <thetext>Tomorrow never came, it seems. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171610</commentid>
    <comment_count>19</comment_count>
      <attachid>42703</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-14 15:49:34 -0800</bug_when>
    <thetext>Comment on attachment 42703
Add DataObjectGtk and use it for GDK_SELECTION_PRIMARY (rev2)

This patch has been up for review for a while with style issues.  If you&apos;re still interested in this patch, please address the style nits and repost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171640</commentid>
    <comment_count>20</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2009-12-14 17:35:56 -0800</bug_when>
    <thetext>I think I took some of Holger&apos;s comments to heart on this one and plan to upload a new version of this patch when 21599 has landed. It would be better to make members GRefPtrs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172288</commentid>
    <comment_count>21</comment_count>
      <attachid>44975</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2009-12-16 07:15:54 -0800</bug_when>
    <thetext>Created attachment 44975
Add DataObjectGtk and use it for GDK_SELECTION_PRIMARY (rev3)

I&apos;ve attached an updated patch which corrects the above style issues and uses GRefPtr (yet to land) for reference counted members. I&apos;ll add r? when GRefPtr lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172708</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-17 03:36:56 -0800</bug_when>
    <thetext>Attachment 44975 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/gtk/DataObjectGtk.h:25:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/gtk/DataObjectGtk.cpp:24:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175640</commentid>
    <comment_count>23</comment_count>
      <attachid>44975</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-12-29 11:01:10 -0800</bug_when>
    <thetext>Comment on attachment 44975
Add DataObjectGtk and use it for GDK_SELECTION_PRIMARY (rev3)

 10         No new tests. (OOPS!)

Aren&apos;t there pasteboard tests we could enable? It looks like in this case we are not really changing the current behavior at all, right?

 28 DataObjectGtk::DataObjectGtk()
 29 {
 30 
 31 }

Empty line.

 94 /*static*/
 95 DataObjectGtk* DataObjectGtk::forClipboard(GtkClipboard* clipboard)

Why the commented out static here?

 85     if (info == WEBKIT_WEB_VIEW_TARGET_INFO_TEXT)
 86         gtk_selection_data_set_text(selectionData, dataObject-&gt;text().utf8().data(), -1);
 87 
 88     else if (info == WEBKIT_WEB_VIEW_TARGET_INFO_HTML) {

This empty line makes the if/else if blocks relationship confusing =).

 152 
 153     } else

Unnecessary empty line.

There are also a couple complaints by the style bot. The overall change in code looks pretty good to me, though. I&apos;ll r- just so you can fix these nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>176958</commentid>
    <comment_count>24</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-01-04 17:21:22 -0800</bug_when>
    <thetext>Looks like the patch makes editing/execCommand/empty-span-removal.html and platform/gtk/editing/pasteboard/middle-button-paste.html fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180117</commentid>
    <comment_count>25</comment_count>
      <attachid>46433</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-01-13 00:59:24 -0800</bug_when>
    <thetext>Created attachment 46433
Updated patch (fixes style issues and passes tests)

I&apos;ve attached a patch fixing the style issues and the previously failing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180118</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-13 01:04:50 -0800</bug_when>
    <thetext>Attachment 46433 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/gtk/DataObjectGtk.h:26:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/gtk/DataObjectGtk.cpp:23:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/platform/gtk/DataObjectGtk.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180120</commentid>
    <comment_count>27</comment_count>
      <attachid>46435</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-01-13 01:18:30 -0800</bug_when>
    <thetext>Created attachment 46435
Updated patch (fix new style issues)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180692</commentid>
    <comment_count>28</comment_count>
      <attachid>46435</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-01-14 05:47:08 -0800</bug_when>
    <thetext>Comment on attachment 46435
Updated patch (fix new style issues)

Joint r+ from kov and me on this :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180697</commentid>
    <comment_count>29</comment_count>
      <attachid>46435</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-14 06:22:00 -0800</bug_when>
    <thetext>Comment on attachment 46435
Updated patch (fix new style issues)

Clearing flags on attachment: 46435

Committed r53264: &lt;http://trac.webkit.org/changeset/53264&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180698</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-14 06:22:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214491</commentid>
    <comment_count>31</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-04-19 23:06:44 -0700</bug_when>
    <thetext>Re-opening this as it&apos;s still a work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214495</commentid>
    <comment_count>32</comment_count>
      <attachid>53774</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-04-19 23:19:55 -0700</bug_when>
    <thetext>Created attachment 53774
Slight reorganization of my earlier work

I&apos;ve attached a reorganization of my earlier work. This new patch moves most of the logic that was in PasteboardHelperGtk into the abstract base class, PastboardHelper. This leads to a much more natural separation of concerns between WebCore and WebKit and puts things into a better place for WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214632</commentid>
    <comment_count>33</comment_count>
      <attachid>53774</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-04-20 07:05:31 -0700</bug_when>
    <thetext>Comment on attachment 53774
Slight reorganization of my earlier work

77 GtkClipboard* PasteboardHelper::getPrimarySelectionClipboard(Frame* frame) const
 78 {
 79         return gtk_widget_get_clipboard(widgetFromFrame(frame), GDK_SELECTION_PRIMARY);
 80 }

Indentation is off here.

I love this patch. The move to WebCore makes lots of sense, the refactoring rocks, and the usage of GClosure is very smart! We should do it elsewhere as well (like in the GeoLocation stuff). Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214815</commentid>
    <comment_count>34</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-04-20 11:53:07 -0700</bug_when>
    <thetext>Committed r57901: &lt;http://trac.webkit.org/changeset/57901&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214817</commentid>
    <comment_count>35</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-04-20 11:54:40 -0700</bug_when>
    <thetext>Forgot to pass --no-close to webkit-patch, reopening. Sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215614</commentid>
    <comment_count>36</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-21 18:16:48 -0700</bug_when>
    <thetext>Attachment 53774 was posted by a committer and has review+, assigning to Martin Robinson for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215857</commentid>
    <comment_count>37</comment_count>
      <attachid>53774</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-04-22 06:42:54 -0700</bug_when>
    <thetext>Comment on attachment 53774
Slight reorganization of my earlier work

Clearing flag, since it got committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216406</commentid>
    <comment_count>38</comment_count>
      <attachid>54159</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-04-23 07:59:28 -0700</bug_when>
    <thetext>Created attachment 54159
Make the DataObject have &apos;live&apos; access to the clipboard

I&apos;ve added a patch that makes the DataObject access the clipboard when necessary. This is required so that web pages can modify and read the clipboard in real-time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216541</commentid>
    <comment_count>39</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-04-23 13:36:45 -0700</bug_when>
    <thetext>*** Bug 26712 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217028</commentid>
    <comment_count>40</comment_count>
      <attachid>54159</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-04-26 05:32:27 -0700</bug_when>
    <thetext>Comment on attachment 54159
Make the DataObject have &apos;live&apos; access to the clipboard

 8         Make ClipboardGtk a &quot;live&quot; DataTransfer object, able to modify
 9         modify the clipboard when setData(...) is called.

one modify too many =)

WebCore/platform/gtk/ClipboardGtk.cpp:50
 +  }
I think you should avoid breaking lines before you have the first argument in, in WebKit. It&apos;s fairly common having longer lines, so it&apos;s not an issue.

WebCore/platform/gtk/DataObjectGtk.cpp:52
 +      replaceNonBreakingSpaceWithSpace(m_text);

I believe this is a good idea, but is this behaviour specified somewhere? I have been biten at least once by non-breaking-spaces after copying/pasting from ephy =/

WebCore/platform/gtk/PasteboardHelper.cpp:101
 +      }

I am looking at these whiles and thinking they would look better as fors, given they&apos;re structured exactly as fors, but your take.

WebCore/platform/gtk/PasteboardGtk.cpp:64
 +                                 strlen(clipboardData-&gt;markup()));

This seems to be an independant bug fix, that should go in a separate commit. Please do that (r=me on it).

Hrm... I think the contextual review thing should probably add more lines for context. One line is not very useful =). Thanks for the patch, it looks right to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218791</commentid>
    <comment_count>41</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-04-28 21:18:02 -0700</bug_when>
    <thetext>(In reply to comment #40)
 
&gt; WebCore/platform/gtk/DataObjectGtk.cpp:52
&gt;  +      replaceNonBreakingSpaceWithSpace(m_text);
&gt; 
&gt; I believe this is a good idea, but is this behaviour specified somewhere? I
&gt; have been biten at least once by non-breaking-spaces after copying/pasting from
&gt; ephy =/

In this case after seeing non-breaking spaces in pastes and drag-and-drop
data, I copied this logic from the Windows port. :)

As you suggested: 
Committed r58468: &lt;http://trac.webkit.org/changeset/58468&gt;
Committed r58470: &lt;http://trac.webkit.org/changeset/58470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220610</commentid>
    <comment_count>42</comment_count>
      <attachid>55020</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-04 08:38:19 -0700</bug_when>
    <thetext>Created attachment 55020
Convert current drag-and-drop implementation to use the new infrastructure

I&apos;ve attached a patch which converts the current drag-and-drop implementation to one which uses the new DataObjectGtk infrastructure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220611</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-04 08:40:33 -0700</bug_when>
    <thetext>Attachment 55020 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/platform/gtk/DragDataGtk.cpp:27:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 14 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>220617</commentid>
    <comment_count>44</comment_count>
      <attachid>55021</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-04 08:44:45 -0700</bug_when>
    <thetext>Created attachment 55021
Convert current drag-and-drop implementation to use the new infrastructure (style violation fixed)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220863</commentid>
    <comment_count>45</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-04 16:29:50 -0700</bug_when>
    <thetext>*** Bug 20588 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221103</commentid>
    <comment_count>46</comment_count>
      <attachid>55021</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-05-05 07:58:01 -0700</bug_when>
    <thetext>Comment on attachment 55021
Convert current drag-and-drop implementation to use the new infrastructure (style violation fixed)

55  // FIXME: this should probably be something gdk-specific
56  typedef void* DragDataRef;
 55 #include &quot;DataObjectGtk.h&quot;
 56 typedef RefPtr&lt;WebCore::DataObjectGtk&gt; DragDataRef;

Hmm. This RefPtr makes me nervous. Are you positive this won&apos;t mess up with any of the uses of DragDataRef? All other platforms seem to use a normal pointer, and this type is used in constructor/method where a PassRefPtr would be normaly used.

30         * platform/gtk/PasteboardHelper.cpp:
 31         (WebCore::PasteboardHelper::fillSelectionData): Add support for images here.
 32         (WebCore::PasteboardHelper::targetListForDataObject): Add support for images here.

These make sense as a separate change; as far as I can see there&apos;s no dependency on the new code, so please land it first, r=me on this one. I believe the rest of the patch looks good, too, but I would first like to discuss this RefPtr pointer a bit before giving it r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221124</commentid>
    <comment_count>47</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-05 08:30:31 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; Hmm. This RefPtr makes me nervous. Are you positive this won&apos;t mess up with any
&gt; of the uses of DragDataRef? All other platforms seem to use a normal pointer,
&gt; and this type is used in constructor/method where a PassRefPtr would be normaly
&gt; used.

If I understand correctly it shouldn&apos;t be a problem here (just a little bit less performant
than using a PassRefPtr). I guess we might be okay since the WebView will control both
the lifetime of the DragData and the DataObject itself.

On looking at it further, this part really belongs in the next patch, not this one, so I&apos;ll
split this one up into three separate patches here. I should have a new patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221143</commentid>
    <comment_count>48</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-05 09:31:15 -0700</bug_when>
    <thetext>Committed r58822: &lt;http://trac.webkit.org/changeset/58822&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221147</commentid>
    <comment_count>49</comment_count>
      <attachid>55131</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-05 09:43:36 -0700</bug_when>
    <thetext>Created attachment 55131
Slimmed down version of my previous patch

This version does not include the changes to DragData.h and DragDataGtk.cpp these changes are not needed until the next patch (support for dropping).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221620</commentid>
    <comment_count>50</comment_count>
      <attachid>55131</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-05-06 05:27:58 -0700</bug_when>
    <thetext>Comment on attachment 55131
Slimmed down version of my previous patch

WebKit/gtk/webkit/webkitprivate.h:155
 +          HashMap&lt;GdkDragContext*, RefPtr&lt;WebCore::DataObjectGtk&gt; &gt; draggingDataObjects;
That space between the two &gt;&apos;s looks unintended? =D

WebKit/gtk/WebCoreSupport/DragClientGtk.cpp:87
 +      WEBKIT_WEB_VIEW_GET_PRIVATE(webView)-&gt;draggingDataObjects.set(context, dataObject);
I would prefer having webView-&gt;priv be used here, or a private function in WebKitWebView to do this instead of using GET_PRIVATE, because it&apos;s infamous for not being very efficient heh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221726</commentid>
    <comment_count>51</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-06 09:29:02 -0700</bug_when>
    <thetext>Thanks for the review!

&gt; (From update of attachment 55131 [details])
&gt; WebKit/gtk/webkit/webkitprivate.h:155
&gt;  +          HashMap&lt;GdkDragContext*, RefPtr&lt;WebCore::DataObjectGtk&gt; &gt;
&gt; draggingDataObjects;
&gt; That space between the two &gt;&apos;s looks unintended? =D

It&apos;s actually required by some compilers to differentiate between template declarations and the &apos;&gt;&gt;&apos; operator.

&gt; WebKit/gtk/WebCoreSupport/DragClientGtk.cpp:87
&gt;  +      WEBKIT_WEB_VIEW_GET_PRIVATE(webView)-&gt;draggingDataObjects.set(context,
&gt; dataObject);
&gt; I would prefer having webView-&gt;priv be used here, or a private function in
&gt; WebKitWebView to do this instead of using GET_PRIVATE, because it&apos;s infamous
&gt; for not being very efficient heh.

Fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221732</commentid>
    <comment_count>52</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-05-06 09:33:06 -0700</bug_when>
    <thetext>Committed r58885: &lt;http://trac.webkit.org/changeset/58885&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239475</commentid>
    <comment_count>53</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-06-17 10:56:23 -0700</bug_when>
    <thetext>*** Bug 30576 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>41562</attachid>
            <date>2009-10-21 05:35:27 -0700</date>
            <delta_ts>2009-11-03 00:20:45 -0800</delta_ts>
            <desc>Draft patch for centralizing clipboard code</desc>
            <filename>0001-Centralize-clipboard-code.patch</filename>
            <type>text/plain</type>
            <size>47069</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA1NjZhNDhkNWQ5YWI2ZTE0OWZjZTNiZjdmNTliZGU0Y2Q2NzMxOTg4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1hcnRpbi5qYW1lcy5yb2JpbnNv
bkBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjEgT2N0IDIwMDkgMDU6MjM6MTEgLTA3MDAKU3ViamVj
dDogW1BBVENIXSBDZW50cmFsaXplIGNsaXBib2FyZCBjb2RlLgoKLS0tCiBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAgICAgICAgICAgICB8ICAxNDQgKysrKysr
KysrKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oICAgICAgICAgICAg
ICB8ICAgODggKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3Bw
ICAgICAgICAgICAgfCAgMTc5ICsrKysrKystLS0tLS0tLS0tCiBXZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCAgICAgICAgIHwgICA4MSArKysrKysrKwogV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oICAgICAgICAgICB8ICAgMzYgKysrLQogV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwICAgICB8ICAgNTkgKyst
LS0tCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3BwIHwg
IDIyNyArKysrKysrKysrKysrKysrKysrLS0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFz
dGVib2FyZEhlbHBlckd0ay5oICAgfCAgIDI4ICsrLQogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
cHJpdmF0ZS5jcHAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHByaXZhdGUuaCAgICAgICAgICAgICAgICAgfCAgICA0IC0KIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwICAgICAgICAgICAgICAgfCAgIDU3ICsrLS0tLQogMTMgZmlsZXMg
Y2hhbmdlZCwgNjc4IGluc2VydGlvbnMoKyksIDIzMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCgpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcCBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggZmJkNmM2Zi4uMTg1NjFk
MiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC0yNTQsNyAr
MjU0LDcgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lJiBnZHQsIEwKIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExv
Y2FsZURhdGUoRXhlY1N0YXRlKiBleGVjLCBEYXRlSW5zdGFuY2UqIGRhdGVPYmplY3QsIGRvdWJs
ZSwgTG9jYWxlRGF0ZVRpbWVGb3JtYXQgZm9ybWF0LCBjb25zdCBBcmdMaXN0JikKIHsKICAgICBH
cmVnb3JpYW5EYXRlVGltZSBncmVnb3JpYW5EYXRlVGltZTsKLSAgICBjb25zdCBib29sIG5vdFVU
QyA9IGZhbHNlOworICAgIGNvbnN0IGJvb2wgb3V0cHV0SXNVVEMgPSBmYWxzZTsKICAgICBpZiAo
IWRhdGVPYmplY3QtPmdldEdyZWdvcmlhbkRhdGVUaW1lKG91dHB1dElzVVRDLCBncmVnb3JpYW5E
YXRlVGltZSkpCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgIkludmFs
aWQgRGF0ZSIpOwogICAgIHJldHVybiBmb3JtYXRMb2NhbGVEYXRlKGV4ZWMsIGdyZWdvcmlhbkRh
dGVUaW1lLCBmb3JtYXQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYWUyZjE2Yi4uMDZmYjIyMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0x
NDAxLDYgKzE0MDEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0v
Q3Jvc3NUaHJlYWRDb3BpZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vQ3Vyc29yLmggXAorCVdlYkNvcmUvcGxhdGZvcm0v
Z3RrL0RhdGFPYmplY3RHdGsuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0
R3RrLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFB0ckxpc3QuaCBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9EZXByZWNhdGVkUHRyTGlzdEltcGwuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3Jt
L0RlcHJlY2F0ZWRQdHJMaXN0SW1wbC5oIFwKQEAgLTE5NjAsNiArMTk2Miw3IEBAIHdlYmNvcmVn
dGtfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTUlNRVR5cGVSZWdpc3RyeUd0
ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL01vdXNlRXZlbnRHdGsuY3BwIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEhlbHBlci5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRIZWxwZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3Bw
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9Qb3B1cE1lbnVHdGsuY3BwIFwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNWFmZjdmNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFP
YmplY3RHdGsuY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
LCBNYXJ0aW4gUm9iaW5zb24KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCisKKyNpbmNsdWRlIDxn
dGsvZ3RrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworCitEYXRhT2JqZWN0R3RrOjpEYXRh
T2JqZWN0R3RrKCkKKyAgICA6IG1faW1hZ2UoMCkKKyAgICAsIG1fZHJhZ0NvbnRleHQoMCkKK3sK
KworfQorCitEYXRhT2JqZWN0R3RrOjp+RGF0YU9iamVjdEd0aygpCit7CisgICAgaWYgKG1faW1h
Z2UpCisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1faW1hZ2UpOworICAgIGlmIChtX2RyYWdDb250
ZXh0KQorICAgICAgICBnX29iamVjdF91bnJlZihtX2RyYWdDb250ZXh0KTsKK30KKworVmVjdG9y
PFN0cmluZz4gRGF0YU9iamVjdEd0azo6ZmlsZXMoKQoreworICAgIFZlY3RvcjxLVVJMPiB1cmlz
KHVyaUxpc3QoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gZmlsZXM7CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHVyaXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKHVyaXNbMF0uaXNM
b2NhbEZpbGUoKSkKKyAgICAgICAgICAgIGZpbGVzLmFwcGVuZCh1cmlzWzBdLnN0cmluZygpKTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmlsZXM7Cit9CisKK1N0cmluZyBEYXRhT2JqZWN0R3RrOjp1
cmwoKQoreworICAgIFZlY3RvcjxLVVJMPiB1cmlzKHVyaUxpc3QoKSk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB1cmlzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmICh1cmlzWzBdLmlz
VmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiB1cmlzWzBdLnN0cmluZygpOworICAgIH0KKwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIERhdGFPYmplY3RHdGs6OnVybExhYmVs
KCkKK3sKKyAgICBpZiAoaGFzVGV4dCgpKQorICAgICAgICByZXR1cm4gdGV4dCgpOworICAgIGVs
c2UgaWYgKGhhc1VSTCgpKQorICAgICAgICByZXR1cm4gdXJsKCk7CisgICAgZWxzZQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jvb2wgRGF0YU9iamVjdEd0azo6aGFzVVJMKCkKK3sK
KyAgICByZXR1cm4gIXVybCgpLmlzRW1wdHkoKTsKK30KKwordm9pZCBEYXRhT2JqZWN0R3RrOjpz
ZXRUZXh0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKK3sKKyAgICAvLyBGb3IgcGxhaW4tdGV4dCBk
YXRhIHdlIHdhbnQgdG8gcmVwbGFjZSB0aGUgbm9uLWJyZWFraW5nIHNwYWNlCisgICAgLy8gd2l0
aCBhIHJlZ3VsYXIgc3BhY2UsIG90aGVyd2lzZSBhIGxvdCBvZiB0ZXh0IGZyb20gd2ViIHBhZ2Vz
CisgICAgLy8gd2lsbCBjb21lIHRocm91Z2ggd2l0aCBzdHJhbmdlIGNoYXJhY3RlcnMuCisgICAg
c3RhdGljIGNvbnN0IFVDaGFyIG5vbkJyZWFraW5nU3BhY2VDaGFyYWN0ZXIgPSAweEEwOworICAg
IHN0YXRpYyBjb25zdCBVQ2hhciBzcGFjZUNoYXJhY3RlciA9ICcgJzsKKyAgICBtX3RleHQgPSBu
ZXdUZXh0OworICAgIG1fdGV4dC5yZXBsYWNlKG5vbkJyZWFraW5nU3BhY2VDaGFyYWN0ZXIsIHNw
YWNlQ2hhcmFjdGVyKTsKK30KKwordm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRJbWFnZShHZGtQaXhi
dWYqIG5ld0ltYWdlKQoreworICAgIGlmIChtX2ltYWdlKQorICAgICAgICBnX29iamVjdF91bnJl
ZihtX2ltYWdlKTsKKworICAgIGlmIChuZXdJbWFnZSkKKyAgICAgICAgZ19vYmplY3RfcmVmKG5l
d0ltYWdlKTsKKworICAgIG1faW1hZ2UgPSBuZXdJbWFnZTsKK30KK3ZvaWQgRGF0YU9iamVjdEd0
azo6c2V0RHJhZ0NvbnRleHQoR2RrRHJhZ0NvbnRleHQqIG5ld0RyYWdDb250ZXh0KQoreworICAg
IGlmIChtX2RyYWdDb250ZXh0KQorICAgICAgICBnX29iamVjdF91bnJlZihtX2RyYWdDb250ZXh0
KTsKKworICAgIGlmIChuZXdEcmFnQ29udGV4dCkKKyAgICAgICAgZ19vYmplY3RfcmVmKG5ld0Ry
YWdDb250ZXh0KTsKKworICAgIG1fZHJhZ0NvbnRleHQgPSBuZXdEcmFnQ29udGV4dDsKK30KKwor
dm9pZCBEYXRhT2JqZWN0R3RrOjpjbGVhckltYWdlKCkKK3sKKyAgICBpZiAobV9pbWFnZSkKKyAg
ICAgICAgZ19vYmplY3RfdW5yZWYobV9pbWFnZSk7CisKKyAgICBtX2ltYWdlID0gMDsKK30KKwor
dm9pZCBEYXRhT2JqZWN0R3RrOjpjbGVhcigpCit7CisgICAgY2xlYXJUZXh0KCk7CisgICAgY2xl
YXJNYXJrdXAoKTsKKyAgICBjbGVhclVSSUxpc3QoKTsKKyAgICBjbGVhckltYWdlKCk7Cit9CisK
Ky8qc3RhdGljKi8KK0RhdGFPYmplY3RHdGsqIERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChH
dGtDbGlwYm9hcmQqIGNsaXBib2FyZCkKK3sKKyAgICBzdGF0aWMgSGFzaE1hcDxHdGtDbGlwYm9h
cmQqLCBSZWZQdHI8RGF0YU9iamVjdEd0az4gPiBvYmplY3RNYXA7CisKKyAgICBpZiAoIW9iamVj
dE1hcC5jb250YWlucyhjbGlwYm9hcmQpKSB7CisgICAgICAgIFJlZlB0cjxEYXRhT2JqZWN0R3Rr
PiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Y3JlYXRlKCk7CisgICAgICAgIG9iamVjdE1h
cC5zZXQoY2xpcGJvYXJkLCBkYXRhT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIGRhdGFPYmplY3Qu
Z2V0KCk7CisgICAgfQorCisgICAgSGFzaE1hcDxHdGtDbGlwYm9hcmQqLCBSZWZQdHI8RGF0YU9i
amVjdEd0az4gPjo6aXRlcmF0b3IgaXQgPSBvYmplY3RNYXAuZmluZChjbGlwYm9hcmQpOworICAg
IHJldHVybiBpdC0+c2Vjb25kLmdldCgpOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmggYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2Jq
ZWN0R3RrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM1ZGVhMwotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaApAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCBNYXJ0aW4gUm9iaW5zb24K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIERhdGFPYmplY3RHdGtfaAorI2RlZmluZSBEYXRhT2JqZWN0R3RrX2gK
KworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5jbHVk
ZSAiRmlsZUxpc3QuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBEYXRhT2JqZWN0R3RrIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YU9iamVjdEd0az4gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFPYmplY3RHdGs+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFPYmplY3RHdGsoKSk7CisgICAg
fQorCisgICAgfkRhdGFPYmplY3RHdGsoKTsKKworICAgIFN0cmluZyB0ZXh0KCkgeyByZXR1cm4g
bV90ZXh0OyB9CisgICAgU3RyaW5nIG1hcmt1cCgpIHsgcmV0dXJuIG1fbWFya3VwOyB9CisgICAg
VmVjdG9yPEtVUkw+IHVyaUxpc3QoKSB7IHJldHVybiBtX3VyaUxpc3Q7IH0KKyAgICBHZGtQaXhi
dWYqIGltYWdlKCkgeyByZXR1cm4gbV9pbWFnZTsgfQorICAgIHZvaWQgc2V0VGV4dChjb25zdCBT
dHJpbmcmIG5ld1RleHQpOworICAgIHZvaWQgc2V0TWFya3VwKGNvbnN0IFN0cmluZyYgbmV3TWFy
a3VwKSB7IG1fbWFya3VwID0gbmV3TWFya3VwOyB9CisgICAgdm9pZCBzZXRVUklMaXN0KGNvbnN0
IFZlY3RvcjxLVVJMPiYgbmV3VVJJTGlzdCkgeyAgbV91cmlMaXN0ID0gbmV3VVJJTGlzdDsgfQor
ICAgIGJvb2wgaGFzVGV4dCgpIHsgcmV0dXJuICFtX3RleHQuaXNFbXB0eSgpOyB9CisgICAgYm9v
bCBoYXNNYXJrdXAoKSB7IHJldHVybiAhbV9tYXJrdXAuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBo
YXNVUklMaXN0KCkgeyByZXR1cm4gIW1fdXJpTGlzdC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhh
c0ltYWdlKCkgeyByZXR1cm4gbV9pbWFnZTsgfQorICAgIHZvaWQgY2xlYXJUZXh0KCkgeyBtX3Rl
eHQgPSAiIjsgfQorICAgIHZvaWQgY2xlYXJNYXJrdXAoKSB7IG1fbWFya3VwID0gIiI7IH0KKyAg
ICB2b2lkIGNsZWFyVVJJTGlzdCgpIHsgbV91cmlMaXN0LmNsZWFyKCk7IH0KKyAgICBHZGtEcmFn
Q29udGV4dCogZHJhZ0NvbnRleHQoKSB7IHJldHVybiBtX2RyYWdDb250ZXh0OyB9CisKKyAgICB2
b2lkIHNldEltYWdlKEdka1BpeGJ1ZiopOworICAgIHZvaWQgc2V0RHJhZ0NvbnRleHQoR2RrRHJh
Z0NvbnRleHQqKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBmaWxlcygpOworICAgIGJvb2wgaGFzVVJM
KCk7CisgICAgU3RyaW5nIHVybCgpOworICAgIFN0cmluZyB1cmxMYWJlbCgpOworCisgICAgdm9p
ZCBjbGVhckltYWdlKCk7CisgICAgdm9pZCBjbGVhcigpOworCisgICAgc3RhdGljIERhdGFPYmpl
Y3RHdGsqIGZvckNsaXBib2FyZChHdGtDbGlwYm9hcmQqKTsKKworcHJpdmF0ZToKKyAgICBEYXRh
T2JqZWN0R3RrKCk7CisKKyAgICBTdHJpbmcgbV90ZXh0OworICAgIFN0cmluZyBtX21hcmt1cDsK
KyAgICBWZWN0b3I8S1VSTD4gbV91cmlMaXN0OworICAgIEdka1BpeGJ1ZiogbV9pbWFnZTsKKyAg
ICBHZGtEcmFnQ29udGV4dCogbV9kcmFnQ29udGV4dDsKK307CisKK30KKworI2VuZGlmIC8vIERh
dGFPYmplY3RHdGtfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCAw
ZmYyNmY3Li4yYzYwMDM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApA
QCAtMSw2ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBl
dGVyIEZyZXl0aGVyCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tl
ci5jb20+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IE1hcnRpbiBSb2JpbnNvbgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtMzAsNDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIK
ICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVkZSAiRGF0YU9i
amVjdEd0ay5oIgogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFBhc3RlYm9hcmRTZWxlY3Rpb25EYXRhIHsKLXB1YmxpYzoKLSAgICBQYXN0ZWJv
YXJkU2VsZWN0aW9uRGF0YShnY2hhciogdGV4dCwgZ2NoYXIqIG1hcmt1cCkKLSAgICAgICAgOiBt
X3RleHQodGV4dCkKLSAgICAgICAgLCBtX21hcmt1cChtYXJrdXApIHsgfQotCi0gICAgflBhc3Rl
Ym9hcmRTZWxlY3Rpb25EYXRhKCkgewotICAgICAgICBnX2ZyZWUobV90ZXh0KTsKLSAgICAgICAg
Z19mcmVlKG1fbWFya3VwKTsKLSAgICB9Ci0KLSAgICBjb25zdCBnY2hhciogdGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dDsgfQotICAgIGNvbnN0IGdjaGFyKiBtYXJrdXAoKSBjb25zdCB7IHJl
dHVybiBtX21hcmt1cDsgfQotCi1wcml2YXRlOgotICAgIGdjaGFyKiBtX3RleHQ7Ci0gICAgZ2No
YXIqIG1fbWFya3VwOwotfTsKLQotc3RhdGljIHZvaWQgY2xpcGJvYXJkX2dldF9jb250ZW50c19j
YihHdGtDbGlwYm9hcmQgKmNsaXBib2FyZCwgR3RrU2VsZWN0aW9uRGF0YSAqc2VsZWN0aW9uX2Rh
dGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGluZm8sIGdw
b2ludGVyIGRhdGEpIHsKLSAgICBQYXN0ZWJvYXJkU2VsZWN0aW9uRGF0YSogY2xpcGJvYXJkRGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UGFzdGVib2FyZFNlbGVjdGlvbkRhdGEqPihkYXRhKTsKLSAg
ICBBU1NFUlQoY2xpcGJvYXJkRGF0YSk7Ci0gICAgaWYgKChnaW50KWluZm8gPT0gUGFzdGVib2Fy
ZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+bV9oZWxwZXItPmdldFdlYlZpZXdUYXJnZXRJbmZvSHRt
bCgpKQotICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbl9kYXRhLCBzZWxl
Y3Rpb25fZGF0YS0+dGFyZ2V0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oY2xpcGJvYXJkRGF0YS0+bWFya3VwKCkpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfdXRmOF9zdHJsZW4oY2xpcGJvYXJkRGF0
YS0+bWFya3VwKCksIC0xKSk7Ci0gICAgZWxzZQotICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFf
c2V0X3RleHQoc2VsZWN0aW9uX2RhdGEsIGNsaXBib2FyZERhdGEtPnRleHQoKSwgLTEpOwotfQot
Ci1zdGF0aWMgdm9pZCBjbGlwYm9hcmRfY2xlYXJfY29udGVudHNfY2IoR3RrQ2xpcGJvYXJkICpj
bGlwYm9hcmQsIGdwb2ludGVyIGRhdGEpIHsKLSAgICBQYXN0ZWJvYXJkU2VsZWN0aW9uRGF0YSog
Y2xpcGJvYXJkRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UGFzdGVib2FyZFNlbGVjdGlvbkRhdGEq
PihkYXRhKTsKLSAgICBBU1NFUlQoY2xpcGJvYXJkRGF0YSk7Ci0gICAgZGVsZXRlIGNsaXBib2Fy
ZERhdGE7Ci19Ci0KLQogUGFzdGVib2FyZCogUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQo
KQogewogICAgIHN0YXRpYyBQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkID0gbmV3IFBhc3RlYm9hcmQo
KTsKQEAgLTgxLDU2ICs0NSw2MCBAQCBQYXN0ZWJvYXJkKiBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFz
dGVib2FyZCgpCiAKIFBhc3RlYm9hcmQ6OlBhc3RlYm9hcmQoKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKIFBhc3RlYm9hcmQ6On5QYXN0ZWJvYXJkKCkKIHsKLSAgICBkZWxldGUgbV9o
ZWxwZXI7Ci19Ci0KLXZvaWQgUGFzdGVib2FyZDo6c2V0SGVscGVyKFBhc3RlYm9hcmRIZWxwZXIq
IGhlbHBlcikKLXsKLSAgICBtX2hlbHBlciA9IGhlbHBlcjsKIH0KIAogdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZVNlbGVjdGlvbihSYW5nZSogc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydENvcHlP
ckRlbGV0ZSwgRnJhbWUqIGZyYW1lKQogewotICAgIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkID0g
bV9oZWxwZXItPmdldENsaXBib2FyZChmcmFtZSk7Ci0gICAgZ2NoYXIqIHRleHQgPSBnX3N0cmR1
cChmcmFtZS0+c2VsZWN0ZWRUZXh0KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgZ2NoYXIqIG1hcmt1
cCA9IGdfc3RyZHVwKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvcklu
dGVyY2hhbmdlKS51dGY4KCkuZGF0YSgpKTsKLSAgICBQYXN0ZWJvYXJkU2VsZWN0aW9uRGF0YSog
ZGF0YSA9IG5ldyBQYXN0ZWJvYXJkU2VsZWN0aW9uRGF0YSh0ZXh0LCBtYXJrdXApOwotCi0gICAg
Z2ludCBuX3RhcmdldHM7Ci0gICAgR3RrVGFyZ2V0RW50cnkqIHRhcmdldHMgPSBndGtfdGFyZ2V0
X3RhYmxlX25ld19mcm9tX2xpc3QobV9oZWxwZXItPmdldENvcHlUYXJnZXRMaXN0KGZyYW1lKSwg
Jm5fdGFyZ2V0cyk7Ci0gICAgZ3RrX2NsaXBib2FyZF9zZXRfd2l0aF9kYXRhKGNsaXBib2FyZCwg
dGFyZ2V0cywgbl90YXJnZXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlw
Ym9hcmRfZ2V0X2NvbnRlbnRzX2NiLCBjbGlwYm9hcmRfY2xlYXJfY29udGVudHNfY2IsIGRhdGEp
OwotICAgIGd0a190YXJnZXRfdGFibGVfZnJlZSh0YXJnZXRzLCBuX3RhcmdldHMpOworICAgIEd0
a0NsaXBib2FyZCogY2xpcGJvYXJkID0gUGFzdGVib2FyZEhlbHBlcjo6Y2xpcGJvYXJkRm9yRnJh
bWUoZnJhbWUpOworICAgIEFTU0VSVChjbGlwYm9hcmQpOworICAgIERhdGFPYmplY3RHdGsqIGRh
dGFPYmplY3QgPSBEYXRhT2JqZWN0R3RrOjpmb3JDbGlwYm9hcmQoY2xpcGJvYXJkKTsKKyAgICBB
U1NFUlQoZGF0YU9iamVjdCk7CisKKyAgICBkYXRhT2JqZWN0LT5zZXRUZXh0KGZyYW1lLT5zZWxl
Y3RlZFRleHQoKSk7CisgICAgZGF0YU9iamVjdC0+c2V0TWFya3VwKGNyZWF0ZU1hcmt1cChzZWxl
Y3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKSk7CisgICAgUGFzdGVib2FyZEhl
bHBlcjo6aGVscGVyKCktPndyaXRlQ2xpcGJvYXJkQ29udGVudHMoY2xpcGJvYXJkKTsKIH0KIAog
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0g
ICAgQ1N0cmluZyB1dGY4ID0gdGV4dC51dGY4KCk7Ci0gICAgR3RrQ2xpcGJvYXJkKiBjbGlwYm9h
cmQgPSBndGtfY2xpcGJvYXJkX2dldF9mb3JfZGlzcGxheShnZGtfZGlzcGxheV9nZXRfZGVmYXVs
dCgpLCBHREtfU0VMRUNUSU9OX0NMSVBCT0FSRCk7Ci0gICAgZ3RrX2NsaXBib2FyZF9zZXRfdGV4
dChjbGlwYm9hcmQsIHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICAvLyBUT0RPOiBJ
cyB0aGVyZSBhIHdheSB0byBnZXQgdGhlIHdpZGdldCdzIGNsaXBib2FyZCBoZXJlPworICAgIEd0
a0NsaXBib2FyZCogY2xpcGJvYXJkID0gUGFzdGVib2FyZEhlbHBlcjo6Y2xpcGJvYXJkKCk7Cisg
ICAgQVNTRVJUKGNsaXBib2FyZCk7CisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IERh
dGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAgIEFTU0VSVChkYXRhT2Jq
ZWN0KTsKKworICAgIGRhdGFPYmplY3QtPnNldFRleHQodGV4dCk7CisgICAgUGFzdGVib2FyZEhl
bHBlcjo6aGVscGVyKCktPndyaXRlQ2xpcGJvYXJkQ29udGVudHMoY2xpcGJvYXJkKTsKIH0KIAot
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYs
IEZyYW1lKiBmcmFtZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkwoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKHVybC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkID0g
bV9oZWxwZXItPmdldENsaXBib2FyZChmcmFtZSk7Ci0gICAgR3RrQ2xpcGJvYXJkKiBwcmltYXJ5
ID0gbV9oZWxwZXItPmdldFByaW1hcnkoZnJhbWUpOwotICAgIENTdHJpbmcgdXRmOCA9IHVybC5z
dHJpbmcoKS51dGY4KCk7Ci0gICAgZ3RrX2NsaXBib2FyZF9zZXRfdGV4dChjbGlwYm9hcmQsIHV0
ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKLSAgICBndGtfY2xpcGJvYXJkX3NldF90ZXh0KHBy
aW1hcnksIHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBHdGtDbGlwYm9hcmQqIGNs
aXBib2FyZCA9IFBhc3RlYm9hcmRIZWxwZXI6OmNsaXBib2FyZEZvckZyYW1lKGZyYW1lKTsKKyAg
ICBBU1NFUlQoY2xpcGJvYXJkKTsKKyAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0
YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7CisgICAgQVNTRVJUKGRhdGFPYmpl
Y3QpOworCisgICAgU3RyaW5nIGFjdHVhbExhYmVsKGxhYmVsKTsKKyAgICBpZiAoYWN0dWFsTGFi
ZWwuaXNFbXB0eSgpKQorICAgICAgICBhY3R1YWxMYWJlbCA9IHVybDsKKworICAgIFZlY3RvcjxL
VVJMPiB1cmlMaXN0OworICAgIHVyaUxpc3QuYXBwZW5kKHVybCk7CisgICAgZGF0YU9iamVjdC0+
c2V0VVJJTGlzdCh1cmlMaXN0KTsKKyAgICBkYXRhT2JqZWN0LT5zZXRUZXh0KGFjdHVhbExhYmVs
KTsKKworICAgIFBhc3RlYm9hcmRIZWxwZXI6OmhlbHBlcigpLT53cml0ZUNsaXBib2FyZENvbnRl
bnRzKGNsaXBib2FyZCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBu
b2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBHdGtDbGlwYm9hcmQqIGNs
aXBib2FyZCA9IGd0a19jbGlwYm9hcmRfZ2V0X2Zvcl9kaXNwbGF5KGdka19kaXNwbGF5X2dldF9k
ZWZhdWx0KCksIEdES19TRUxFQ1RJT05fQ0xJUEJPQVJEKTsKLQogICAgIEFTU0VSVChub2RlICYm
IG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKTsKICAgICBS
ZW5kZXJJbWFnZSogcmVuZGVyZXIgPSB0b1JlbmRlckltYWdlKG5vZGUtPnJlbmRlcmVyKCkpOwog
ICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHJlbmRlcmVyLT5jYWNoZWRJbWFnZSgpOwpA
QCAtMTM4LDE2ICsxMDYsMjkgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5v
ZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogICAgIEltYWdlKiBpbWFnZSA9IGNhY2hl
ZEltYWdlLT5pbWFnZSgpOwogICAgIEFTU0VSVChpbWFnZSk7CiAKKyAgICBBU1NFUlQobm9kZS0+
ZG9jdW1lbnQoKSk7CisgICAgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBQYXN0ZWJvYXJkSGVs
cGVyOjpjbGlwYm9hcmRGb3JGcmFtZShub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpKTsKKyAgICBB
U1NFUlQoY2xpcGJvYXJkKTsKKworICAgIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSBEYXRh
T2JqZWN0R3RrOjpmb3JDbGlwYm9hcmQoY2xpcGJvYXJkKTsKKyAgICBBU1NFUlQoZGF0YU9iamVj
dCk7CisKICAgICBHZGtQaXhidWYqIHBpeGJ1ZiA9IGltYWdlLT5nZXRHZGtQaXhidWYoKTsKLSAg
ICBndGtfY2xpcGJvYXJkX3NldF9pbWFnZShjbGlwYm9hcmQsIHBpeGJ1Zik7CisgICAgZGF0YU9i
amVjdC0+c2V0SW1hZ2UocGl4YnVmKTsKICAgICBnX29iamVjdF91bnJlZihwaXhidWYpOworCisg
ICAgUGFzdGVib2FyZEhlbHBlcjo6aGVscGVyKCktPndyaXRlQ2xpcGJvYXJkQ29udGVudHMoY2xp
cGJvYXJkKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiB7Ci0gICAgR3RrQ2xpcGJv
YXJkKiBjbGlwYm9hcmQgPSBndGtfY2xpcGJvYXJkX2dldF9mb3JfZGlzcGxheShnZGtfZGlzcGxh
eV9nZXRfZGVmYXVsdCgpLCBHREtfU0VMRUNUSU9OX0NMSVBCT0FSRCk7CisgICAgLy8gVE9ETzog
SXMgdGhlcmUgYSB3YXkgdG8gZ2V0IHRoZSB3aWRnZXQncyBjbGlwYm9hcmQgaGVyZT8KKyAgICBH
dGtDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFBhc3RlYm9hcmRIZWxwZXI6OmNsaXBib2FyZCgpOwor
ICAgIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSBEYXRhT2JqZWN0R3RrOjpmb3JDbGlwYm9h
cmQoY2xpcGJvYXJkKTsKKyAgICBBU1NFUlQoZGF0YU9iamVjdCk7CiAKLSAgICBndGtfY2xpcGJv
YXJkX2NsZWFyKGNsaXBib2FyZCk7CisgICAgZGF0YU9iamVjdC0+Y2xlYXIoKTsKKyAgICBQYXN0
ZWJvYXJkSGVscGVyOjpoZWxwZXIoKS0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhjbGlwYm9hcmQp
OwogfQogCiBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCkBAIC0xNTYsNTYgKzEz
Nyw0NiBAQCBib29sIFBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSgpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3Vt
ZW50RnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPFJhbmdlPiBjb250ZXh0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQorUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBQYXN0ZWJvYXJkOjpkb2N1bWVudEZyYWdtZW50KEZyYW1lKiBmcmFtZSwg
UGFzc1JlZlB0cjxSYW5nZT4gY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hv
c2VQbGFpblRleHQpCiB7Ci0gICAgR2RrQXRvbSB0ZXh0SHRtbCA9IGdka19hdG9tX2ludGVybl9z
dGF0aWNfc3RyaW5nKCJ0ZXh0L2h0bWwiKTsKLSAgICBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCA9
IG1faGVscGVyLT5nZXRDdXJyZW50VGFyZ2V0KGZyYW1lKTsKLSAgICBjaG9zZVBsYWluVGV4dCA9
IGZhbHNlOwotCi0gICAgaWYgKEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEgPSBndGtfY2xpcGJvYXJk
X3dhaXRfZm9yX2NvbnRlbnRzKGNsaXBib2FyZCwgdGV4dEh0bWwpKSB7Ci0gICAgICAgIEFTU0VS
VChkYXRhLT5kYXRhKTsKLSAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29k
ZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAiVVRGLTgiLCB0
cnVlKTsKLSAgICAgICAgU3RyaW5nIGh0bWwgPSBkZWNvZGVyLT5kZWNvZGUocmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oZGF0YS0+ZGF0YSksIGRhdGEtPmxlbmd0aCk7Ci0gICAgICAgIGh0bWwgKz0g
ZGVjb2Rlci0+Zmx1c2goKTsKLSAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX2ZyZWUoZGF0YSk7
Ci0KLSAgICAgICAgaWYgKCFodG1sLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGZyYW1l
LT5kb2N1bWVudCgpLCBodG1sLCAiIik7CisgICAgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBQ
YXN0ZWJvYXJkSGVscGVyOjpjbGlwYm9hcmRGb3JGcmFtZShmcmFtZSk7CisgICAgQVNTRVJUKGNs
aXBib2FyZCk7CisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IERhdGFPYmplY3RHdGs6
OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAgIEFTU0VSVChkYXRhT2JqZWN0KTsKKyAgICBQ
YXN0ZWJvYXJkSGVscGVyOjpoZWxwZXIoKS0+Z2V0Q2xpcGJvYXJkQ29udGVudHMoY2xpcGJvYXJk
KTsKKworICAgIGlmIChkYXRhT2JqZWN0LT5oYXNNYXJrdXAoKSkgeworICAgICAgICBjaG9zZVBs
YWluVGV4dCA9IGZhbHNlOworICAgICAgICBTdHJpbmcgbWFya3VwKGRhdGFPYmplY3QtPm1hcmt1
cCgpKTsKKworICAgICAgICBpZiAoIW1hcmt1cC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1
cChmcmFtZS0+ZG9jdW1lbnQoKSwgbWFya3VwLCAiIik7CiAgICAgICAgICAgICBpZiAoZnJhZ21l
bnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKICAgICAgICAg
fQogICAgIH0KIAotICAgIGlmICghYWxsb3dQbGFpblRleHQpCisgICAgaWYgKCFhbGxvd1BsYWlu
VGV4dCB8fCAhZGF0YU9iamVjdC0+aGFzVGV4dCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IGlmIChnY2hhciogdXRmOCA9IGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dChjbGlwYm9hcmQp
KSB7Ci0gICAgICAgIFN0cmluZyB0ZXh0ID0gU3RyaW5nOjpmcm9tVVRGOCh1dGY4KTsKLSAgICAg
ICAgZ19mcmVlKHV0ZjgpOwotCi0gICAgICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsKLSAgICAg
ICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9t
VGV4dChjb250ZXh0LmdldCgpLCB0ZXh0KTsKLSAgICAgICAgaWYgKGZyYWdtZW50KQotICAgICAg
ICAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKLSAgICB9CisgICAgY2hvc2VQbGFpblRl
eHQgPSB0cnVlOworICAgIFN0cmluZyB0ZXh0KGRhdGFPYmplY3QtPnRleHQoKSk7CisgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChj
b250ZXh0LmdldCgpLCB0ZXh0KTsKKyAgICBpZiAoZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBm
cmFnbWVudC5yZWxlYXNlKCk7CiAKICAgICByZXR1cm4gMDsKIH0KIAogU3RyaW5nIFBhc3RlYm9h
cmQ6OnBsYWluVGV4dChGcmFtZSogZnJhbWUpCiB7Ci0gICAgR3RrQ2xpcGJvYXJkKiBjbGlwYm9h
cmQgPSBtX2hlbHBlci0+Z2V0Q3VycmVudFRhcmdldChmcmFtZSk7Ci0KLSAgICBnY2hhciogdXRm
OCA9IGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dChjbGlwYm9hcmQpOwotCi0gICAgaWYgKCF1
dGY4KQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBTdHJpbmcgdGV4dCA9IFN0cmlu
Zzo6ZnJvbVVURjgodXRmOCk7Ci0gICAgZ19mcmVlKHV0ZjgpOworICAgIEd0a0NsaXBib2FyZCog
Y2xpcGJvYXJkID0gUGFzdGVib2FyZEhlbHBlcjo6Y2xpcGJvYXJkRm9yRnJhbWUoZnJhbWUpOwor
ICAgIEFTU0VSVChjbGlwYm9hcmQpOworICAgIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSBE
YXRhT2JqZWN0R3RrOjpmb3JDbGlwYm9hcmQoY2xpcGJvYXJkKTsKKyAgICBBU1NFUlQoZGF0YU9i
amVjdCk7CisgICAgUGFzdGVib2FyZEhlbHBlcjo6aGVscGVyKCktPmdldENsaXBib2FyZENvbnRl
bnRzKGNsaXBib2FyZCk7CiAKLSAgICByZXR1cm4gdGV4dDsKKyAgICByZXR1cm4gZGF0YU9iamVj
dC0+dGV4dCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkSGVscGVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0OWU1MjcKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcApAQCAt
MCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IE1hcnRpbiBSb2JpbnNvbgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKKwor
I2luY2x1ZGUgPGd0ay9ndGsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUmVm
UHRyPFBhc3RlYm9hcmRIZWxwZXI+IGhlbHBlckluc3RhbmNlID0gMDsKK3N0YXRpYyBib29sIHNo
b3VsZFVzZVByaW1hcnlTZWxlY3Rpb25DbGlwYm9hcmQgPSBmYWxzZTsKKworLypzdGF0aWMqLwor
dm9pZCBQYXN0ZWJvYXJkSGVscGVyOjpzZXRIZWxwZXIoUGFzc1JlZlB0cjxQYXN0ZWJvYXJkSGVs
cGVyPiBuZXdIZWxwZXIpCit7CisgICAgaGVscGVySW5zdGFuY2UgPSBuZXdIZWxwZXI7Cit9CisK
Ky8qc3RhdGljKi8KK0d0a0NsaXBib2FyZCogUGFzdGVib2FyZEhlbHBlcjo6Y2xpcGJvYXJkKCkK
K3sKKyAgICBBU1NFUlQoaGVscGVySW5zdGFuY2UpOworCisgICAgaWYgKHNob3VsZFVzZVByaW1h
cnlTZWxlY3Rpb25DbGlwYm9hcmQpCisgICAgICAgIHJldHVybiBoZWxwZXJJbnN0YW5jZS0+cHJp
bWFyeVNlbGVjdGlvbkNsaXBib2FyZCgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGhlbHBl
ckluc3RhbmNlLT5kZWZhdWx0Q2xpcGJvYXJkKCk7Cit9CisKKy8qc3RhdGljKi8KK0d0a0NsaXBi
b2FyZCogUGFzdGVib2FyZEhlbHBlcjo6Y2xpcGJvYXJkRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQor
eworICAgIEFTU0VSVChoZWxwZXJJbnN0YW5jZSk7CisKKyAgICBpZiAoIWZyYW1lKQorICAgICAg
ICByZXR1cm4gY2xpcGJvYXJkKCk7CisKKyAgICBlbHNlIGlmIChzaG91bGRVc2VQcmltYXJ5U2Vs
ZWN0aW9uQ2xpcGJvYXJkKQorICAgICAgICByZXR1cm4gaGVscGVySW5zdGFuY2UtPnByaW1hcnlT
ZWxlY3Rpb25DbGlwYm9hcmRGb3JGcmFtZShmcmFtZSk7CisgICAgZWxzZQorICAgICAgICByZXR1
cm4gaGVscGVySW5zdGFuY2UtPmRlZmF1bHRDbGlwYm9hcmRGb3JGcmFtZShmcmFtZSk7Cit9CisK
Ky8qc3RhdGljKi8KK2Jvb2wgUGFzdGVib2FyZEhlbHBlcjo6dXNlUHJpbWFyeVNlbGVjdGlvbkNs
aXBib2FyZCgpCit7CisgICAgcmV0dXJuIHNob3VsZFVzZVByaW1hcnlTZWxlY3Rpb25DbGlwYm9h
cmQ7Cit9CisKKy8qc3RhdGljKi8KK3ZvaWQgUGFzdGVib2FyZEhlbHBlcjo6c2V0VXNlUHJpbWFy
eVNlbGVjdGlvbkNsaXBib2FyZChib29sIG5ld1VzZVByaW1hcnlTZWxlY3Rpb25DbGlwYm9hcmQp
Cit7CisgICAgc2hvdWxkVXNlUHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZCA9IG5ld1VzZVByaW1h
cnlTZWxlY3Rpb25DbGlwYm9hcmQ7Cit9CisKKy8qc3RhdGMqLworUGFzc1JlZlB0cjxQYXN0ZWJv
YXJkSGVscGVyPiBQYXN0ZWJvYXJkSGVscGVyOjpoZWxwZXIoKQoreworICAgIEFTU0VSVChoZWxw
ZXJJbnN0YW5jZSk7CisgICAgcmV0dXJuIGhlbHBlckluc3RhbmNlOworfQorCit9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmggYi9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmgKaW5kZXggOGU2NzEyNy4uZmIyMjllYiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaApAQCAtMSw2ICsxLDcgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgTHVjYSBCcnVubyA8bGV0aGFsbWFuODhAZ21haWwuY29t
PgogICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgTWFydGluIFJvYmluc29uCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKQEAgLTIzLDI3ICsyNCwzOCBAQAogI2lmbmRlZiBQYXN0ZWJvYXJkSGVs
cGVyX2gKICNkZWZpbmUgUGFzdGVib2FyZEhlbHBlcl9oCiAKLS8qCi0gKiBGSVhNRTogdGhpcyBp
cyBmb3IgV2ViQ29yZSBzdXBwb3J0IGFuZCBtdXN0IGJlIHJlbW92ZWQgb25jZQotICogYSBiZXR0
ZXIgc29sdXRpb24gaXMgZm91bmQKLSAqLwotCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJEYXRhT2JqZWN0R3RrLmgiCiAKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPGd0ay9ndGsuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQYXN0ZWJvYXJk
SGVscGVyIHsKKy8vIFRoaXMgc2luZ2xldG9uIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIFdlYktpdCBr
bm93cyBhYm91dCBwZXItd2lkZ2V0IGNsaXBib2FyZHMKKy8vIGFuZCB0aGUgaW5mbyBpZGVudGlm
aWVyIGZvciBjbGlwYm9hcmQgYW5kIGRyYWctYW5kLWRyb3Agc2VsZWN0aW9uIGRhdGEuIFdlYkNv
cmUKKy8vIGRvZXNuJ3QgaGF2ZSB0aGUgaW5mb3JtYXRpb24sIHNvIGl0IG11c3QgYXNrIFdlYktp
dC4gQ2FuIHRoaXMgYmUgaW4gV2ViQ29yZQorLy8gZXZlbnR1YWxseT8KK2NsYXNzIFBhc3RlYm9h
cmRIZWxwZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXN0ZWJvYXJkSGVscGVyPiB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+UGFzdGVib2FyZEhlbHBlcigpIHt9OwogCi0gICAgdmlydHVhbCBHdGtD
bGlwYm9hcmQqIGdldEN1cnJlbnRUYXJnZXQoRnJhbWUqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBHdGtDbGlwYm9hcmQqIGdldENsaXBib2FyZChGcmFtZSopIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIEd0a0NsaXBib2FyZCogZ2V0UHJpbWFyeShGcmFtZSopIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIEd0a1RhcmdldExpc3QqIGdldENvcHlUYXJnZXRMaXN0KEZyYW1lKikgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgR3RrVGFyZ2V0TGlzdCogZ2V0UGFzdGVUYXJnZXRMaXN0KEZyYW1lKikgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgZ2ludCBnZXRXZWJWaWV3VGFyZ2V0SW5mb0h0bWwoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBHdGtDbGlwYm9hcmQqIGRlZmF1bHRDbGlwYm9hcmQoKSA9IDA7
CisgICAgdmlydHVhbCBHdGtDbGlwYm9hcmQqIGRlZmF1bHRDbGlwYm9hcmRGb3JGcmFtZShGcmFt
ZSopID0gMDsKKyAgICB2aXJ0dWFsIEd0a0NsaXBib2FyZCogcHJpbWFyeVNlbGVjdGlvbkNsaXBi
b2FyZCgpID0gMDsKKyAgICB2aXJ0dWFsIEd0a0NsaXBib2FyZCogcHJpbWFyeVNlbGVjdGlvbkNs
aXBib2FyZEZvckZyYW1lKEZyYW1lKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGlwYm9h
cmRDb250ZW50cyhHdGtDbGlwYm9hcmQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlQ2xp
cGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiwgZ3BvaW50ZXIgZGF0YT0wKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGZpbGxTZWxlY3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRhdGEqLCBndWludCwg
RGF0YU9iamVjdEd0ayopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbERhdGFPYmplY3QoR3Rr
U2VsZWN0aW9uRGF0YSosIGd1aW50LCBEYXRhT2JqZWN0R3RrKikgPSAwOworICAgIHZpcnR1YWwg
R3RrVGFyZ2V0TGlzdCogZnVsbFRhcmdldExpc3QoKSA9IDA7CisgICAgdmlydHVhbCBHdGtUYXJn
ZXRMaXN0KiB0YXJnZXRMaXN0Rm9yRGF0YU9iamVjdChEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0
KSA9IDA7CisgICAgc3RhdGljIGJvb2wgdXNlUHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZCgpOwor
ICAgIHN0YXRpYyB2b2lkIHNldFVzZVByaW1hcnlTZWxlY3Rpb25DbGlwYm9hcmQoYm9vbCk7Cisg
ICAgc3RhdGljIHZvaWQgc2V0SGVscGVyKFBhc3NSZWZQdHI8UGFzdGVib2FyZEhlbHBlcj4pOwor
ICAgIHN0YXRpYyBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCgpOworICAgIHN0YXRpYyBHdGtDbGlw
Ym9hcmQqIGNsaXBib2FyZEZvckZyYW1lKEZyYW1lKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UGFzdGVib2FyZEhlbHBlcj4gaGVscGVyKCk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggNmVjNmJhZi4uZDlmNWVjNCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCisr
KyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtMjYs
MTcgKzI2LDIwIEBACiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkVkaXRDb21tYW5k
LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCi0jaW5jbHVkZSA8ZW5jaGFudC5oPgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgotI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlICJLZXlib2FyZENvZGVzLmgiCiAj
aW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2lu
Y2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKKyNpbmNsdWRlICJQ
YXN0ZWJvYXJkSGVscGVyR3RrLmgiCisKKyNpbmNsdWRlIDxlbmNoYW50Lmg+CisjaW5jbHVkZSA8
Z2xpYi5oPgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKIAogLy8gQXJiaXRyYXJ5IGRlcHRo
IGxpbWl0IGZvciB0aGUgdW5kbyBzdGFjaywgdG8ga2VlcCBpdCBmcm9tIHVzaW5nCkBAIC0xODUs
MzUgKzE4OCwxMSBAQCB2b2lkIEVkaXRvckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRz
KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1zdGF0aWMgdm9pZCBjbGlwYm9hcmRfZ2V0
X2NvbnRlbnRzX2NiKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBHdGtTZWxlY3Rpb25EYXRhKiBz
ZWxlY3Rpb25fZGF0YSwgZ3VpbnQgaW5mbywgZ3BvaW50ZXIgZGF0YSkKLXsKLSAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gcmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3Kj4oZGF0YSk7
Ci0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOwotICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHNlbGVjdGVkUmFuZ2Ug
PSBmcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0KLSAgICBpZiAoc3Rh
dGljX2Nhc3Q8Z2ludD4oaW5mbykgPT0gV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUwp
IHsKLSAgICAgICAgU3RyaW5nIG1hcmt1cCA9IGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLmdl
dCgpLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKTsKLSAgICAgICAgZ3RrX3NlbGVjdGlvbl9k
YXRhX3NldChzZWxlY3Rpb25fZGF0YSwgc2VsZWN0aW9uX2RhdGEtPnRhcmdldCwgOCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+
KG1hcmt1cC51dGY4KCkuZGF0YSgpKSwgbWFya3VwLnV0ZjgoKS5sZW5ndGgoKSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgU3RyaW5nIHRleHQgPSBzZWxlY3RlZFJhbmdlLT50ZXh0KCk7Ci0gICAg
ICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXRfdGV4dChzZWxlY3Rpb25fZGF0YSwgdGV4dC51dGY4
KCkuZGF0YSgpLCB0ZXh0LnV0ZjgoKS5sZW5ndGgoKSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9p
ZCBjbGlwYm9hcmRfY2xlYXJfY29udGVudHNfY2IoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGdw
b2ludGVyIGRhdGEpCi17Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViS2l0V2ViVmlldyo+KGRhdGEpOwotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
VmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLQotICAgIC8v
IENvbGxhcHNlIHRoZSBzZWxlY3Rpb24gd2l0aG91dCBjbGVhcmluZyBpdAotICAgIGZyYW1lLT5z
ZWxlY3Rpb24oKS0+c2V0QmFzZShmcmFtZS0+c2VsZWN0aW9uKCktPmV4dGVudCgpLCBmcmFtZS0+
c2VsZWN0aW9uKCktPmFmZmluaXR5KCkpOwotfQotCiB2b2lkIEVkaXRvckNsaWVudDo6cmVzcG9u
ZFRvQ2hhbmdlZFNlbGVjdGlvbigpCiB7CiAgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYg
PSBtX3dlYlZpZXctPnByaXY7Ci0gICAgRnJhbWUqIHRhcmdldEZyYW1lID0gY29yZShtX3dlYlZp
ZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgV2ViQ29y
ZTo6UGFnZSogY29yZVBhZ2UgPSBjb3JlKG1fd2ViVmlldyk7CisgICAgRnJhbWUqIHRhcmdldEZy
YW1lID0gY29yZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
IAogICAgIGlmICghdGFyZ2V0RnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTIyMSwxNiArMjAw
LDIyIEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKCkKICAg
ICBpZiAodGFyZ2V0RnJhbWUtPmVkaXRvcigpLT5pZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNo
YW5nZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCA9
IGd0a193aWRnZXRfZ2V0X2NsaXBib2FyZChHVEtfV0lER0VUKG1fd2ViVmlldyksIEdES19TRUxF
Q1RJT05fUFJJTUFSWSk7CisjaWYgUExBVEZPUk0oWDExKQogICAgIGlmICh0YXJnZXRGcmFtZS0+
c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewotICAgICAgICBHdGtUYXJnZXRMaXN0KiB0YXJnZXRM
aXN0ID0gd2Via2l0X3dlYl92aWV3X2dldF9jb3B5X3RhcmdldF9saXN0KG1fd2ViVmlldyk7Ci0g
ICAgICAgIGdpbnQgdGFyZ2V0Q291bnQ7Ci0gICAgICAgIEd0a1RhcmdldEVudHJ5KiB0YXJnZXRz
ID0gZ3RrX3RhcmdldF90YWJsZV9uZXdfZnJvbV9saXN0KHRhcmdldExpc3QsICZ0YXJnZXRDb3Vu
dCk7Ci0gICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfb3duZXIoY2xpcGJvYXJkLCB0YXJn
ZXRzLCB0YXJnZXRDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGlwYm9hcmRfZ2V0X2NvbnRlbnRzX2NiLCBjbGlwYm9hcmRfY2xlYXJfY29udGVudHNfY2IsIEdf
T0JKRUNUKG1fd2ViVmlldykpOwotICAgICAgICBndGtfdGFyZ2V0X3RhYmxlX2ZyZWUodGFyZ2V0
cywgdGFyZ2V0Q291bnQpOwotICAgIH0gZWxzZSBpZiAoZ3RrX2NsaXBib2FyZF9nZXRfb3duZXIo
Y2xpcGJvYXJkKSA9PSBHX09CSkVDVChtX3dlYlZpZXcpKQotICAgICAgICBndGtfY2xpcGJvYXJk
X2NsZWFyKGNsaXBib2FyZCk7CisKKyAgICAgICAgYm9vbCBwcmltYXJ5ID0gUGFzdGVib2FyZEhl
bHBlcjo6dXNlUHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZCgpOworICAgICAgICBQYXN0ZWJvYXJk
SGVscGVyOjpzZXRVc2VQcmltYXJ5U2VsZWN0aW9uQ2xpcGJvYXJkKHRydWUpOworICAgICAgICBH
dGtDbGlwYm9hcmQqIGNsaXBib2FyZCA9IFBhc3RlYm9hcmRIZWxwZXI6OmNsaXBib2FyZEZvckZy
YW1lKHRhcmdldEZyYW1lKTsKKyAgICAgICAgUGFzdGVib2FyZEhlbHBlcjo6c2V0VXNlUHJpbWFy
eVNlbGVjdGlvbkNsaXBib2FyZChwcmltYXJ5KTsKKworICAgICAgICBEYXRhT2JqZWN0R3RrKiBk
YXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7CisgICAg
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9y
bWFsaXplZFJhbmdlKCk7CisgICAgICAgIGRhdGFPYmplY3QtPnNldFRleHQodGFyZ2V0RnJhbWUt
PnNlbGVjdGVkVGV4dCgpKTsKKyAgICAgICAgZGF0YU9iamVjdC0+c2V0TWFya3VwKGNyZWF0ZU1h
cmt1cChyYW5nZS5nZXQoKSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSkpOworCisgICAgICAg
IFBhc3RlYm9hcmRIZWxwZXI6OmhlbHBlcigpLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBi
b2FyZCwgY29yZVBhZ2UpOworICAgIH0KKyNlbmRpZgogCiAgICAgaWYgKCF0YXJnZXRGcmFtZS0+
ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3BwCmluZGV4IGYyZWEz
MTYuLmEzOTEzYjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVi
b2FyZEhlbHBlckd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJv
YXJkSGVscGVyR3RrLmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAy
MDA3IEx1Y2EgQnJ1bm8gPGxldGhhbG1hbjg4QGdtYWlsLmNvbT4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkg
TWFydGluIFJvYmluc29uCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMSw2ICsyMiw3IEBACiAj
aW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlckd0ay5oIgogCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJmcmFtZS5oIgog
I2luY2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCkBA
IC0zMSw0NSArMzMsMjMyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotR3RrQ2xpcGJvYXJkKiBQYXN0ZWJvYXJkSGVscGVyR3RrOjpnZXRDdXJyZW50
VGFyZ2V0KEZyYW1lKiBmcmFtZSkgY29uc3QKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcoa2l0KGZyYW1lKSk7CitzdGF0aWMgR2Rr
QXRvbSBnZGtNYXJrdXBBdG9tID0gZ2RrX2F0b21faW50ZXJuKCJ0ZXh0L2h0bWwiLCBGQUxTRSk7
CitzdGF0aWMgR2RrQXRvbSBuZXRzY2FwZVVSTEF0b20gPSBnZGtfYXRvbV9pbnRlcm4oIl9ORVRT
Q0FQRV9VUkwiLCBGQUxTRSk7CitzdGF0aWMgR2RrQXRvbSB1cmlMaXN0QXRvbSA9IGdka19hdG9t
X2ludGVybigidGV4dC91cmktbGlzdCIsIEZBTFNFKTsKIAotICAgIGlmICh3ZWJraXRfd2ViX3Zp
ZXdfdXNlX3ByaW1hcnlfZm9yX3Bhc3RlKHdlYlZpZXcpKQotICAgICAgICByZXR1cm4gZ2V0UHJp
bWFyeShmcmFtZSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gZ2V0Q2xpcGJvYXJkKGZyYW1l
KTsKK0d0a0NsaXBib2FyZCogUGFzdGVib2FyZEhlbHBlckd0azo6ZGVmYXVsdENsaXBib2FyZCgp
Cit7CisgICAgcmV0dXJuIGd0a19jbGlwYm9hcmRfZ2V0KEdES19TRUxFQ1RJT05fQ0xJUEJPQVJE
KTsKIH0KIAotR3RrQ2xpcGJvYXJkKiBQYXN0ZWJvYXJkSGVscGVyR3RrOjpnZXRDbGlwYm9hcmQo
RnJhbWUqIGZyYW1lKSBjb25zdAorR3RrQ2xpcGJvYXJkKiBQYXN0ZWJvYXJkSGVscGVyR3RrOjpk
ZWZhdWx0Q2xpcGJvYXJkRm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogewogICAgIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhraXQoZnJhbWUpKTsK
LSAgICByZXR1cm4gZ3RrX3dpZGdldF9nZXRfY2xpcGJvYXJkKEdUS19XSURHRVQgKHdlYlZpZXcp
LAorICAgIHJldHVybiBndGtfd2lkZ2V0X2dldF9jbGlwYm9hcmQoR1RLX1dJREdFVCh3ZWJWaWV3
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdES19TRUxFQ1RJT05fQ0xJ
UEJPQVJEKTsKIH0KIAotR3RrQ2xpcGJvYXJkKiBQYXN0ZWJvYXJkSGVscGVyR3RrOjpnZXRQcmlt
YXJ5KEZyYW1lKiBmcmFtZSkgY29uc3QKK0d0a0NsaXBib2FyZCogUGFzdGVib2FyZEhlbHBlckd0
azo6cHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZCgpCit7CisgICAgcmV0dXJuIGd0a19jbGlwYm9h
cmRfZ2V0KEdES19TRUxFQ1RJT05fUFJJTUFSWSk7Cit9CisKK0d0a0NsaXBib2FyZCogUGFzdGVi
b2FyZEhlbHBlckd0azo6cHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZEZvckZyYW1lKEZyYW1lKiBm
cmFtZSkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFtZV9n
ZXRfd2ViX3ZpZXcoa2l0KGZyYW1lKSk7Ci0gICAgcmV0dXJuIGd0a193aWRnZXRfZ2V0X2NsaXBi
b2FyZChHVEtfV0lER0VUICh3ZWJWaWV3KSwKKyAgICByZXR1cm4gZ3RrX3dpZGdldF9nZXRfY2xp
cGJvYXJkKEdUS19XSURHRVQod2ViVmlldyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHREtfU0VMRUNUSU9OX1BSSU1BUlkpOwogfQogCi1HdGtUYXJnZXRMaXN0KiBQYXN0
ZWJvYXJkSGVscGVyR3RrOjpnZXRDb3B5VGFyZ2V0TGlzdChGcmFtZSogZnJhbWUpIGNvbnN0Citz
dGF0aWMgVmVjdG9yPEtVUkw+IHVyaXNUb0tVUkxWZWN0b3IoZ2NoYXIqKiB1cmlzKQogewotICAg
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhr
aXQoZnJhbWUpKTsKLSAgICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2dldF9jb3B5X3RhcmdldF9s
aXN0KHdlYlZpZXcpOworICAgIEFTU0VSVCh1cmlzKTsKKworICAgIFZlY3RvcjxLVVJMPiB1cmlM
aXN0OworICAgIGdjaGFyKiogY3VycmVudFVSSSA9IHVyaXM7CisgICAgd2hpbGUgKCpjdXJyZW50
VVJJKSB7CisgICAgICAgIHVyaUxpc3QuYXBwZW5kKEtVUkwoS1VSTCgpLCAqY3VycmVudFVSSSkp
OworICAgICAgICBjdXJyZW50VVJJKys7CisgICAgfQorCisgICAgcmV0dXJuIHVyaUxpc3Q7CiB9
CiAKLUd0a1RhcmdldExpc3QqIFBhc3RlYm9hcmRIZWxwZXJHdGs6OmdldFBhc3RlVGFyZ2V0TGlz
dChGcmFtZSogZnJhbWUpIGNvbnN0Cit2b2lkIFBhc3RlYm9hcmRIZWxwZXJHdGs6OmdldENsaXBi
b2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkKQogewotICAgIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhraXQoZnJhbWUpKTsK
LSAgICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2dldF9wYXN0ZV90YXJnZXRfbGlzdCh3ZWJWaWV3
KTsKKyAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xp
cGJvYXJkKGNsaXBib2FyZCk7CisKKyAgICBTdHJpbmcgdGV4dDsKKyAgICBpZiAoZ3RrX2NsaXBi
b2FyZF93YWl0X2lzX3RleHRfYXZhaWxhYmxlKGNsaXBib2FyZCkpIHsKKyAgICAgICAgZ2NoYXIq
IHRleHREYXRhID0gZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KGNsaXBib2FyZCk7CisgICAg
ICAgIGlmICh0ZXh0RGF0YSkgeworICAgICAgICAgICAgdGV4dCA9IHRleHREYXRhOworICAgICAg
ICAgICAgZ19mcmVlKHRleHREYXRhKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkYXRhT2JqZWN0
LT5zZXRUZXh0KHRleHQpOworCisgICAgU3RyaW5nIG1hcmt1cDsKKyAgICBpZiAoZ3RrX2NsaXBi
b2FyZF93YWl0X2lzX3RhcmdldF9hdmFpbGFibGUoY2xpcGJvYXJkLCBnZGtNYXJrdXBBdG9tKSkg
eworCisgICAgICAgIEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEgPSBndGtfY2xpcGJvYXJkX3dhaXRf
Zm9yX2NvbnRlbnRzKGNsaXBib2FyZCwgZ2RrTWFya3VwQXRvbSk7CisgICAgICAgIGlmIChkYXRh
ICYmIGRhdGEtPmxlbmd0aCA+IDAgJiYgZGF0YS0+dHlwZSA9PSBnZGtNYXJrdXBBdG9tKSB7Cisg
ICAgICAgICAgICBnY2hhciAqKmxpc3Q7CisgICAgICAgICAgICBnaW50IGNvdW50ID0gZ2RrX3Rl
eHRfcHJvcGVydHlfdG9fdXRmOF9saXN0X2Zvcl9kaXNwbGF5KAorICAgICAgICAgICAgICAgIGRh
dGEtPmRpc3BsYXksIGRhdGEtPnR5cGUsIGRhdGEtPmZvcm1hdCwgZGF0YS0+ZGF0YSwgZGF0YS0+
bGVuZ3RoLCAmbGlzdCk7CisKKyAgICAgICAgICAgIGlmIChjb3VudCA+IDApCisgICAgICAgICAg
ICAgICAgbWFya3VwID0gbGlzdFswXTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkg
PCBjb3VudDsgaSsrKQorICAgICAgICAgICAgICAgIGdfZnJlZShsaXN0W2ldKTsKKyAgICAgICAg
ICAgIGdfZnJlZShsaXN0KTsKKyAgICAgICB9CisKKyAgICAgICBpZiAoZGF0YSkKKyAgICAgICAg
ICAgZ3RrX3NlbGVjdGlvbl9kYXRhX2ZyZWUoZGF0YSk7CisgICAgfQorICAgIGRhdGFPYmplY3Qt
PnNldE1hcmt1cChtYXJrdXApOworCisgICAgVmVjdG9yPEtVUkw+IHVyaUxpc3Q7CisgICAgaWYg
KGd0a19jbGlwYm9hcmRfd2FpdF9pc190YXJnZXRfYXZhaWxhYmxlKGNsaXBib2FyZCwgdXJpTGlz
dEF0b20pKSB7CisgICAgICAgIEd0a1NlbGVjdGlvbkRhdGEqIGRhdGEgPSBndGtfY2xpcGJvYXJk
X3dhaXRfZm9yX2NvbnRlbnRzKGNsaXBib2FyZCwgdXJpTGlzdEF0b20pOworICAgICAgICBpZiAo
ZGF0YSkgeworICAgICAgICAgICAgZ2NoYXIqKiB1cmlzID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dl
dF91cmlzKGRhdGEpOworICAgICAgICAgICAgaWYgKHVyaXMpIHsKKyAgICAgICAgICAgICAgICB1
cmlMaXN0ID0gdXJpc1RvS1VSTFZlY3Rvcih1cmlzKTsKKyAgICAgICAgICAgICAgICBnX3N0cmZy
ZWV2KHVyaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRh
X2ZyZWUoZGF0YSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZGF0YU9iamVjdC0+c2V0VVJJTGlz
dCh1cmlMaXN0KTsKKworICAgIC8vIFRPRE86IEV2ZW50dWFsbHkgV2ViS2l0IG1heSBuZWVkIHRv
IHN1cHBvcnQgZm9yIHJlYWRpbmcgaW1hZ2UKKyAgICAvLyBkYXRhIGRpcmVjdGx5IGZyb20gdGhl
IGNsaXBib2FyZCwgYnV0IGZvciBub3csIGRvbid0IHJlYWQgaW1hZ2UgZGF0YS4KK30KKworc3Rh
dGljIGJvb2wgc2V0dGluZ0NsaXBib2FyZCA9IGZhbHNlOworc3RhdGljIHZvaWQgZ2V0Q2xpcGJv
YXJkQ29udGVudHNDYWxsYmFjayhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgR3RrU2VsZWN0aW9u
RGF0YSAqc2VsZWN0aW9uRGF0YSwgZ3VpbnQgaW5mbywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBE
YXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNs
aXBib2FyZCk7CisgICAgQVNTRVJUKGRhdGFPYmplY3QpOworICAgIFBhc3RlYm9hcmRIZWxwZXI6
OmhlbHBlcigpLT5maWxsU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCBkYXRhT2Jq
ZWN0KTsKK30KKworc3RhdGljIHZvaWQgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrKEd0
a0NsaXBib2FyZCogY2xpcGJvYXJkLCBncG9pbnRlciBkYXRhKQoreworICAgIC8vIEdUSyB3aWxs
IGNhbGwgdGhlIGNsZWFyIGNsaXBib2FyZCBjYWxsYmFjayBkdXJpbmcKKyAgICAvLyBndGtfY2xp
cGJvYXJkX3NldF93aXRoX2RhdGEuIFdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gY2xlYXIKKyAg
ICAvLyB0aGUgZGF0YSBvYmplY3QgZHVyaW5nIHRoYXQgdGltZS4KKyAgICBpZiAoc2V0dGluZ0Ns
aXBib2FyZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVj
dCA9IERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAgIEFTU0VSVChk
YXRhT2JqZWN0KTsKKworICAgIGRhdGFPYmplY3QtPmNsZWFyKCk7CisgICAgaWYgKGRhdGEpIHsK
KyAgICAgICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2UgPSByZWludGVycHJldF9jYXN0PFdlYkNv
cmU6OlBhZ2UqPihkYXRhKTsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gY29yZVBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKworICAgICAgICBBU1NFUlQoZnJh
bWUpOworCisgICAgICAgIC8vIENvbGxhcHNlIHRoZSBzZWxlY3Rpb24gd2l0aG91dCBjbGVhcmlu
ZyBpdAorICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldEJhc2UoZnJhbWUtPnNlbGVjdGlv
bigpLT5leHRlbnQoKSwgZnJhbWUtPnNlbGVjdGlvbigpLT5hZmZpbml0eSgpKTsKKyAgICB9CiB9
CiAKLWdpbnQgUGFzdGVib2FyZEhlbHBlckd0azo6Z2V0V2ViVmlld1RhcmdldEluZm9IdG1sKCkg
Y29uc3QKK3ZvaWQgUGFzdGVib2FyZEhlbHBlckd0azo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhH
dGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgZ3BvaW50ZXIgZGF0YSkKIHsKLSAgICByZXR1cm4gV0VC
S0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUw7CisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9i
amVjdCA9IERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAgIEd0a1Rh
cmdldExpc3QqIGxpc3QgPSB0YXJnZXRMaXN0Rm9yRGF0YU9iamVjdChkYXRhT2JqZWN0KTsKKwor
ICAgIGludCBudW1iZXJPZlRhcmdldHM7CisgICAgR3RrVGFyZ2V0RW50cnkqIHRhYmxlID0gZ3Rr
X3RhcmdldF90YWJsZV9uZXdfZnJvbV9saXN0KGxpc3QsICZudW1iZXJPZlRhcmdldHMpOworCisg
ICAgaWYgKG51bWJlck9mVGFyZ2V0cyA+IDAgJiYgdGFibGUpIHsKKyAgICAgICAgc2V0dGluZ0Ns
aXBib2FyZCA9IHRydWU7CisgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0YShjbGlw
Ym9hcmQsIHRhYmxlLCBudW1iZXJPZlRhcmdldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZXRDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLCBkYXRh
KTsKKyAgICAgICAgc2V0dGluZ0NsaXBib2FyZCA9IGZhbHNlOworCisgICAgfSBlbHNlCisgICAg
ICAgIGd0a19jbGlwYm9hcmRfY2xlYXIoY2xpcGJvYXJkKTsKKworICAgIGlmICh0YWJsZSkKKyAg
ICAgICAgZ3RrX3RhcmdldF90YWJsZV9mcmVlKHRhYmxlLCBudW1iZXJPZlRhcmdldHMpOworICAg
IGd0a190YXJnZXRfbGlzdF91bnJlZihsaXN0KTsKK30KKworCit2b2lkIFBhc3RlYm9hcmRIZWxw
ZXJHdGs6OmZpbGxTZWxlY3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbkRhdGEs
IGd1aW50IGluZm8sIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QpCit7CisgICAgaWYgKGluZm8g
PT0gV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQpCisgICAgICAgIGd0a19zZWxlY3Rp
b25fZGF0YV9zZXRfdGV4dChzZWxlY3Rpb25EYXRhLCBkYXRhT2JqZWN0LT50ZXh0KCkudXRmOCgp
LmRhdGEoKSwgLTEpOworCisgICAgZWxzZSBpZiAoaW5mbyA9PSBXRUJLSVRfV0VCX1ZJRVdfVEFS
R0VUX0lORk9fSFRNTCkgeworICAgICAgICBnY2hhciogbWFya3VwID0gZ19zdHJkdXAoZGF0YU9i
amVjdC0+bWFya3VwKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0
YV9zZXQoc2VsZWN0aW9uRGF0YSwgc2VsZWN0aW9uRGF0YS0+dGFyZ2V0LCA4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4obWFy
a3VwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4obWFya3VwKSk7Cisg
ICAgICAgIGdfZnJlZShtYXJrdXApOworCisgICAgfSBlbHNlIGlmIChpbmZvID09IFdFQktJVF9X
RUJfVklFV19UQVJHRVRfSU5GT19VUklfTElTVCkgeworICAgICAgICBWZWN0b3I8S1VSTD4gdXJp
TGlzdChkYXRhT2JqZWN0LT51cmlMaXN0KCkpOworICAgICAgICBnY2hhcioqIHVyaXMgPSBnX25l
dzAoZ2NoYXIqLCB1cmlMaXN0LnNpemUoKSArIDEpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHVyaUxpc3Quc2l6ZSgpOyBpKyspCisgICAgICAgICAgICB1cmlzW2ldID0gZ19zdHJk
dXAodXJpTGlzdFtpXS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBndGtfc2Vs
ZWN0aW9uX2RhdGFfc2V0X3VyaXMoc2VsZWN0aW9uRGF0YSwgdXJpcyk7CisgICAgICAgIGdfc3Ry
ZnJlZXYodXJpcyk7CisKKyAgICB9IGVsc2UgaWYgKGluZm8gPT0gV0VCS0lUX1dFQl9WSUVXX1RB
UkdFVF9JTkZPX05FVFNDQVBFX1VSTCAmJiBkYXRhT2JqZWN0LT5oYXNVUkwoKSkgeworICAgICAg
ICBTdHJpbmcgdXJsKGRhdGFPYmplY3QtPnVybCgpKTsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCh1
cmwpOworICAgICAgICByZXN1bHQuYXBwZW5kKCJcbiIpOworCisgICAgICAgIGlmIChkYXRhT2Jq
ZWN0LT5oYXNUZXh0KCkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRhdGFPYmplY3QtPnRl
eHQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodXJsKTsKKwor
ICAgICAgICBnY2hhciogcmVzdWx0RGF0YSA9IGdfc3RyZHVwKHJlc3VsdC51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCBzZWxlY3Rp
b25EYXRhLT50YXJnZXQsIDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBndWNoYXIqPihyZXN1bHREYXRhKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJsZW4ocmVzdWx0RGF0YSkpOworICAgICAgICBnX2ZyZWUocmVzdWx0
RGF0YSk7CisKKyAgICB9IGVsc2UgaWYgKGluZm8gPT0gV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9J
TkZPX0lNQUdFKQorICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0X3BpeGJ1ZihzZWxlY3Rp
b25EYXRhLCBkYXRhT2JqZWN0LT5pbWFnZSgpKTsKK30KKworCitHdGtUYXJnZXRMaXN0KiBQYXN0
ZWJvYXJkSGVscGVyR3RrOjpmdWxsVGFyZ2V0TGlzdCgpCit7CisgICAgc3RhdGljIEd0a1Rhcmdl
dExpc3QqIGxpc3QgPSAwOworICAgIGlmICghbGlzdCkgeworICAgICAgICBsaXN0ID0gZ3RrX3Rh
cmdldF9saXN0X25ldygwLCAwKTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF90ZXh0X3Rh
cmdldHMobGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQpOworICAgICAgICBn
dGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QsIGdka01hcmt1cEF0b20sIDAsIFdFQktJVF9XRUJfVklF
V19UQVJHRVRfSU5GT19IVE1MKTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF91cmlfdGFy
Z2V0cyhsaXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1QpOworICAgICAg
ICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QsIG5ldHNjYXBlVVJMQXRvbSwgMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVf
VVJMKTsKKyAgICB9CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK0d0a1RhcmdldExpc3QqIFBhc3Rl
Ym9hcmRIZWxwZXJHdGs6OnRhcmdldExpc3RGb3JEYXRhT2JqZWN0KERhdGFPYmplY3RHdGsqIGRh
dGFPYmplY3QpCit7CisgICAgR3RrVGFyZ2V0TGlzdCogbGlzdCA9IGd0a190YXJnZXRfbGlzdF9u
ZXcoTlVMTCwgMCk7CisKKyAgICBpZiAoZGF0YU9iamVjdC0+aGFzVGV4dCgpKQorICAgICAgICBn
dGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyhsaXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFS
R0VUX0lORk9fVEVYVCk7CisKKyAgICBpZiAoZGF0YU9iamVjdC0+aGFzTWFya3VwKCkpCisgICAg
ICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdCwgZ2RrTWFya3VwQXRvbSwgMCwgV0VCS0lUX1dF
Ql9WSUVXX1RBUkdFVF9JTkZPX0hUTUwpOworCisgICAgaWYgKGRhdGFPYmplY3QtPmhhc1VSSUxp
c3QoKSkgeworICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRzKGxpc3QsIFdF
QktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19VUklfTElTVCk7CisgICAgICAgIGd0a190YXJnZXRf
bGlzdF9hZGQobGlzdCwgbmV0c2NhcGVVUkxBdG9tLCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VU
X0lORk9fTkVUU0NBUEVfVVJMKTsKKyAgICB9CisKKyAgICBpZiAoZGF0YU9iamVjdC0+aGFzSW1h
Z2UoKSkKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF9pbWFnZV90YXJnZXRzKGxpc3QsIFdF
QktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19JTUFHRSwgVFJVRSk7CisKKyAgICByZXR1cm4gbGlz
dDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJv
YXJkSGVscGVyR3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxw
ZXJHdGsuaAppbmRleCA4NDliNDE3Li5kOTQ2YmU4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuaApAQCAtMjMsMTEgKzIzLDYgQEAKICNpZm5k
ZWYgUGFzdGVib2FyZEhlbHBlckd0a19oCiAjZGVmaW5lIFBhc3RlYm9hcmRIZWxwZXJHdGtfaAog
Ci0vKgotICogRklYTUU6IHRoaXMgaXMgZm9yIFdlYkNvcmUgc3VwcG9ydCBhbmQgbXVzdCBiZSBy
ZW1vdmVkIG9uY2UKLSAqIGEgYmV0dGVyIHNvbHV0aW9uIGlzIGZvdW5kCi0gKi8KLQogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlci5oIgogCkBAIC0zOSwxMyAr
MzQsMjQgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFBhc3RlYm9hcmRIZWxwZXJHdGsg
OiBwdWJsaWMgUGFzdGVib2FyZEhlbHBlciB7CiBwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UGFzdGVib2FyZEhlbHBlckd0az4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgUGFzdGVib2FyZEhlbHBlckd0aygpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IEd0a0NsaXBib2FyZCogZGVmYXVsdENsaXBib2FyZCgpOworICAgIHZpcnR1YWwgR3RrQ2xpcGJv
YXJkKiBkZWZhdWx0Q2xpcGJvYXJkRm9yRnJhbWUoRnJhbWUqKTsKKyAgICB2aXJ0dWFsIEd0a0Ns
aXBib2FyZCogcHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZCgpOworICAgIHZpcnR1YWwgR3RrQ2xp
cGJvYXJkKiBwcmltYXJ5U2VsZWN0aW9uQ2xpcGJvYXJkRm9yRnJhbWUoRnJhbWUqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0Q2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKik7CisgICAgdmly
dHVhbCB2b2lkIHdyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiwgZ3BvaW50ZXIg
ZGF0YT0wKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9u
RGF0YSosIGd1aW50LCBEYXRhT2JqZWN0R3RrKik7CisgICAgdmlydHVhbCBHdGtUYXJnZXRMaXN0
KiBmdWxsVGFyZ2V0TGlzdCgpOworICAgIHZpcnR1YWwgR3RrVGFyZ2V0TGlzdCogdGFyZ2V0TGlz
dEZvckRhdGFPYmplY3QoRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCk7CisgICAgdmlydHVhbCBH
dGtUYXJnZXRMaXN0KiB0YXJnZXRMaXN0Rm9yRHJhZ0NvbnRleHQoR2RrRHJhZ0NvbnRleHQqIGNv
bnRleHQpOworCitwcml2YXRlOgogICAgIFBhc3RlYm9hcmRIZWxwZXJHdGsoKSB7IH0KLSAgICB2
aXJ0dWFsIEd0a0NsaXBib2FyZCogZ2V0Q3VycmVudFRhcmdldChGcmFtZSopIGNvbnN0OwotICAg
IHZpcnR1YWwgR3RrQ2xpcGJvYXJkKiBnZXRDbGlwYm9hcmQoRnJhbWUqKSBjb25zdDsKLSAgICB2
aXJ0dWFsIEd0a0NsaXBib2FyZCogZ2V0UHJpbWFyeShGcmFtZSopIGNvbnN0OwotICAgIHZpcnR1
YWwgR3RrVGFyZ2V0TGlzdCogZ2V0Q29weVRhcmdldExpc3QoRnJhbWUqKSBjb25zdDsKLSAgICB2
aXJ0dWFsIEd0a1RhcmdldExpc3QqIGdldFBhc3RlVGFyZ2V0TGlzdChGcmFtZSopIGNvbnN0Owot
ICAgIHZpcnR1YWwgZ2ludCBnZXRXZWJWaWV3VGFyZ2V0SW5mb0h0bWwoKSBjb25zdDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAKaW5kZXggNDQyNWRjZC4uOGQxMjc1OCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAKKysrIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lk
IHdlYmtpdF9pbml0KCkKIAogICAgIFBhZ2VHcm91cDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlu
a3ModHJ1ZSk7CiAKLSAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRIZWxw
ZXIobmV3IFdlYktpdDo6UGFzdGVib2FyZEhlbHBlckd0aygpKTsKKyAgICBQYXN0ZWJvYXJkSGVs
cGVyOjpzZXRIZWxwZXIoV2ViS2l0OjpQYXN0ZWJvYXJkSGVscGVyR3RrOjpjcmVhdGUoKSk7CiAK
ICAgICBTb3VwU2Vzc2lvbiogc2Vzc2lvbiA9IHdlYmtpdF9nZXRfZGVmYXVsdF9zZXNzaW9uKCk7
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAppbmRleCA0NGRhYzA0Li45NjUxYzU1IDEwMDY0
NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCkBAIC0xNDMsNyArMTQzLDYgQEAgZXh0ZXJuICJDIiB7
CiAgICAgICAgIGNoYXIqIGN1c3RvbUVuY29kaW5nOwogCiAgICAgICAgIGdib29sZWFuIGRpc3Bv
c2luZzsKLSAgICAgICAgZ2Jvb2xlYW4gdXNlUHJpbWFyeUZvclBhc3RlOwogCiAgICAgICAgIC8v
IFRoZXNlIGFyZSBob3N0ZWQgaGVyZSBiZWNhdXNlIHRoZSBEYXRhU291cmNlIG9iamVjdCBpcwog
ICAgICAgICAvLyBjcmVhdGVkIHRvbyBsYXRlIGluIHRoZSBmcmFtZSBsb2FkaW5nIHByb2Nlc3Mu
CkBAIC0zMTUsOSArMzE0LDYgQEAgZXh0ZXJuICJDIiB7CiAgICAgR1NMaXN0KgogICAgIHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X3NwZWxsX2xhbmd1YWdlcyhXZWJLaXRXZWJWaWV3KiB3ZWJfdmll
dyk7CiAKLSAgICBib29sCi0gICAgd2Via2l0X3dlYl92aWV3X3VzZV9wcmltYXJ5X2Zvcl9wYXN0
ZShXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7Ci0KICAgICBHSGFzaFRhYmxlKgogICAgIHdlYmtp
dF9oaXN0b3J5X2l0ZW1zKHZvaWQpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmlu
ZGV4IDlmNjY4ZjQuLjhlZDVmM2UgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBA
IC04LDYgKzgsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgogICogIENv
cHlyaWdodCAoQykgMjAwOCwgMjAwOSBDb2xsYWJvcmEgTHRkLgogICogIENvcHlyaWdodCAoQykg
MjAwOSBJZ2FsaWEgUy5MLgorICogIENvcHlyaWdodCAoQykgMjAwOSBNYXJ0aW4gUm9iaW5zb24K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTUwNCwxNCArNTA1LDE0IEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRfd2ViX3ZpZXdfYnV0dG9uX3ByZXNzX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtFdmVudEJ1CiAjaWYgUExBVEZPUk0oWDExKQogICAgIC8qIENvcHkgc2VsZWN0aW9uIHRvIHRo
ZSBYMTEgc2VsZWN0aW9uIGNsaXBib2FyZCAqLwogICAgIGlmIChldmVudC0+YnV0dG9uID09IDIp
IHsKLSAgICAgICAgYm9vbCBwcmltYXJ5ID0gd2ViVmlldy0+cHJpdi0+dXNlUHJpbWFyeUZvclBh
c3RlOwotICAgICAgICB3ZWJWaWV3LT5wcml2LT51c2VQcmltYXJ5Rm9yUGFzdGUgPSB0cnVlOwor
ICAgICAgICBib29sIHByaW1hcnkgPSBQYXN0ZWJvYXJkSGVscGVyOjp1c2VQcmltYXJ5U2VsZWN0
aW9uQ2xpcGJvYXJkKCk7CisgICAgICAgIFBhc3RlYm9hcmRIZWxwZXI6OnNldFVzZVByaW1hcnlT
ZWxlY3Rpb25DbGlwYm9hcmQodHJ1ZSk7CiAKICAgICAgICAgRWRpdG9yKiBlZGl0b3IgPSB3ZWJW
aWV3LT5wcml2LT5jb3JlUGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5lZGl0b3IoKTsKICAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IGVkaXRvci0+Y2FuUGFz
dGUoKSB8fCBlZGl0b3ItPmNhbkRIVE1MUGFzdGUoKTsKICAgICAgICAgZWRpdG9yLT5wYXN0ZSgp
OwogCi0gICAgICAgIHdlYlZpZXctPnByaXYtPnVzZVByaW1hcnlGb3JQYXN0ZSA9IHByaW1hcnk7
CisgICAgICAgIFBhc3RlYm9hcmRIZWxwZXI6OnNldFVzZVByaW1hcnlTZWxlY3Rpb25DbGlwYm9h
cmQocHJpbWFyeSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTEwMDEsMTIgKzEwMDIsNiBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiAKICAgICAg
ICAgZ19vYmplY3RfdW5yZWYocHJpdi0+aW1Db250ZXh0KTsKICAgICAgICAgcHJpdi0+aW1Db250
ZXh0ID0gTlVMTDsKLQotICAgICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+Y29weV90
YXJnZXRfbGlzdCk7Ci0gICAgICAgIHByaXYtPmNvcHlfdGFyZ2V0X2xpc3QgPSBOVUxMOwotCi0g
ICAgICAgIGd0a190YXJnZXRfbGlzdF91bnJlZihwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCk7Ci0g
ICAgICAgIHByaXYtPnBhc3RlX3RhcmdldF9saXN0ID0gTlVMTDsKICAgICB9CiAKICAgICBpZiAo
cHJpdi0+bWFpblJlc291cmNlKSB7CkBAIC0yNTcyLDE3ICsyNTY3LDYgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIAogICAgIHByaXYt
Pnpvb21GdWxsQ29udGVudCA9IEZBTFNFOwogCi0gICAgR2RrQXRvbSB0ZXh0SHRtbCA9IGdka19h
dG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJ0ZXh0L2h0bWwiKTsKLSAgICAvKiBUYXJnZXRzIGZv
ciBjb3B5ICovCi0gICAgcHJpdi0+Y29weV90YXJnZXRfbGlzdCA9IGd0a190YXJnZXRfbGlzdF9u
ZXcoTlVMTCwgMCk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X2FkZChwcml2LT5jb3B5X3RhcmdldF9s
aXN0LCB0ZXh0SHRtbCwgMCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUwpOwotICAg
IGd0a190YXJnZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKHByaXYtPmNvcHlfdGFyZ2V0X2xpc3Qs
IFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhUKTsKLQotICAgIC8qIFRhcmdldHMgZm9y
IHBhc3RpbmcgKi8KLSAgICBwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCA9IGd0a190YXJnZXRfbGlz
dF9uZXcoTlVMTCwgMCk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X2FkZChwcml2LT5wYXN0ZV90YXJn
ZXRfbGlzdCwgdGV4dEh0bWwsIDAsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MKTsK
LSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyhwcml2LT5wYXN0ZV90YXJnZXRf
bGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQpOwotCiAgICAgcHJpdi0+d2Vi
U2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygpOwogICAgIHdlYmtpdF93ZWJfdmll
d191cGRhdGVfc2V0dGluZ3Mod2ViVmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChwcml2LT53
ZWJTZXR0aW5ncywgIm5vdGlmeSIsIEdfQ0FMTEJBQ0sod2Via2l0X3dlYl92aWV3X3NldHRpbmdz
X25vdGlmeSksIHdlYlZpZXcpOwpAQCAtMjYzMSwxMSArMjYxNSw2IEBAIHZvaWQgd2Via2l0X3dl
Yl92aWV3X3JlcXVlc3RfZG93bmxvYWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TmV0
d29ya1JlcXVlCiAgICAgd2Via2l0X2Rvd25sb2FkX3N0YXJ0KGRvd25sb2FkKTsKIH0KIAotYm9v
bCB3ZWJraXRfd2ViX3ZpZXdfdXNlX3ByaW1hcnlfZm9yX3Bhc3RlKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCi17Ci0gICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPnVzZVByaW1hcnlGb3JQYXN0ZTsK
LX0KLQogdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncykKIHsKICAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CkBAIC0zMzc3LDE5ICszMzU2LDE1
IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZShXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBnYm9vbGVhbiBmbGFnKQogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJWaWV3CiAgKgog
ICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBsaXN0IG9mIHRhcmdldHMgdGhpcyAjV2ViS2l0
V2ViVmlldyBjYW4KLSAqIHByb3ZpZGUgZm9yIGNsaXBib2FyZCBjb3B5aW5nIGFuZCBhcyBETkQg
c291cmNlLiBUaGUgdGFyZ2V0cyBpbiB0aGUgbGlzdCBhcmUKLSAqIGFkZGVkIHdpdGggJWluZm8g
dmFsdWVzIGZyb20gdGhlICNXZWJLaXRXZWJWaWV3VGFyZ2V0SW5mbyBlbnVtLAotICogdXNpbmcg
Z3RrX3RhcmdldF9saXN0X2FkZCgpIGFuZAotICogZ3RrX3RhcmdldF9saXN0X2FkZF90ZXh0X3Rh
cmdldHMoKS4KKyAqIHByb3ZpZGUgZm9yIGNsaXBib2FyZCBwYXN0aW5nIGFuZCBhcyBhIGRyYWcg
YW5kIGRyb3Agc291cmNlLgorICogVGhlIHRhcmdldHMgaW4gdGhlIGxpc3QgYXJlIGFzc29jaWF0
ZWQgd2l0aCAlaW5mbyB2YWx1ZXMgZnJvbSB0aGUKKyAqICNXZWJLaXRXZWJWaWV3VGFyZ2V0SW5m
byBlbnVtIGJhc2VkIG9uIHRoZWlyIHR5cGUuCiAgKgotICogUmV0dXJuIHZhbHVlOiB0aGUgI0d0
a1RhcmdldExpc3QKKyAqIFJldHVybiB2YWx1ZTogdGhlICNHdGtUYXJnZXRMaXN0IG9mIGNvcHkg
dGFyZ2V0cwogICoqLwogR3RrVGFyZ2V0TGlzdCogd2Via2l0X3dlYl92aWV3X2dldF9jb3B5X3Rh
cmdldF9saXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKLQotICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICByZXR1cm4gcHJpdi0+Y29w
eV90YXJnZXRfbGlzdDsKKyAgICByZXR1cm4gUGFzdGVib2FyZEhlbHBlcjo6aGVscGVyKCktPmZ1
bGxUYXJnZXRMaXN0KCk7CiB9CiAKIC8qKgpAQCAtMzM5NywxOSArMzM3MiwxNSBAQCBHdGtUYXJn
ZXRMaXN0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvcHlfdGFyZ2V0X2xpc3QoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKICAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldwogICoKICAqIFRoaXMg
ZnVuY3Rpb24gcmV0dXJucyB0aGUgbGlzdCBvZiB0YXJnZXRzIHRoaXMgI1dlYktpdFdlYlZpZXcg
Y2FuCi0gKiBwcm92aWRlIGZvciBjbGlwYm9hcmQgcGFzdGluZyBhbmQgYXMgRE5EIGRlc3RpbmF0
aW9uLiBUaGUgdGFyZ2V0cyBpbiB0aGUgbGlzdCBhcmUKLSAqIGFkZGVkIHdpdGggJWluZm8gdmFs
dWVzIGZyb20gdGhlICNXZWJLaXRXZWJWaWV3VGFyZ2V0SW5mbyBlbnVtLAotICogdXNpbmcgZ3Rr
X3RhcmdldF9saXN0X2FkZCgpIGFuZAotICogZ3RrX3RhcmdldF9saXN0X2FkZF90ZXh0X3Rhcmdl
dHMoKS4KKyAqIHByb3ZpZGUgZm9yIGNsaXBib2FyZCBwYXN0aW5nIGFuZCBhcyBhIGRyYWcgYW5k
IGRyb3AgZGVzdGluYXRpb24uCisgKiBUaGUgdGFyZ2V0cyBpbiB0aGUgbGlzdCBhcmUgYXNzb2Np
YXRlZCB3aXRoICVpbmZvIHZhbHVlcyBmcm9tIHRoZQorICogI1dlYktpdFdlYlZpZXdUYXJnZXRJ
bmZvIGVudW0gYmFzZWQgb24gdGhlaXIgdHlwZS4KICAqCi0gKiBSZXR1cm4gdmFsdWU6IHRoZSAj
R3RrVGFyZ2V0TGlzdAorICogUmV0dXJuIHZhbHVlOiB0aGUgI0d0a1RhcmdldExpc3Qgb2YgcGFz
dGUgdGFyZ2V0cwogICoqLwogR3RrVGFyZ2V0TGlzdCogd2Via2l0X3dlYl92aWV3X2dldF9wYXN0
ZV90YXJnZXRfbGlzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewotICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVMTCk7Ci0KLSAgICBXZWJL
aXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgcmV0dXJuIHByaXYt
PnBhc3RlX3RhcmdldF9saXN0OworICAgIHJldHVybiBQYXN0ZWJvYXJkSGVscGVyOjpoZWxwZXIo
KS0+ZnVsbFRhcmdldExpc3QoKTsKIH0KIAogLyoqCi0tIAoxLjYuMC40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42364</attachid>
            <date>2009-11-03 00:20:45 -0800</date>
            <delta_ts>2009-11-03 10:45:05 -0800</delta_ts>
            <desc>Move target list handling to PasteboardHelperGtk</desc>
            <filename>0001-Move-handling-of-target-list-to-PasteboardHelperGtk.patch</filename>
            <type>text/plain</type>
            <size>11182</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA2MGY4OTAxOWVjMDJhNzY2MzQ2NTA3N2UxY2Q4ZWQ3MjBiOTZhNzVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1hcnRpbi5qYW1lcy5yb2JpbnNv
bkBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjggT2N0IDIwMDkgMTc6NTA6MTUgLTA3MDAKU3ViamVj
dDogW1BBVENIXSBNb3ZlIGhhbmRsaW5nIG9mIHRhcmdldCBsaXN0IHRvIFBhc3RlYm9hcmRIZWxw
ZXJHdGsuCgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDEzICsrKysrKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0
ay5jcHAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRIZWxwZXIuaCAgICAgICAgICAgfCAgICAzICstCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNCArKysrKysrKysrKysrKysrKwogV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcCB8ICAgMjUgKysrKysr
KysrKystLS0tLS0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0
ay5oICAgfCAgICA5ICsrKystLQogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAg
ICAgICAgICAgICAgICB8ICAgIDggKysrKystCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2
YXRlLmggICAgICAgICAgICAgICAgIHwgICAgNiArKy0tCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCAgICAgICAgICAgICAgIHwgICAyOSArKystLS0tLS0tLS0tLS0tLS0tLS0K
IDkgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYTY4
NWI4Li5mMTdkNTFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDA5LTExLTAzICBNYXJ0aW4gUm9iaW5zb24g
IDxtYXJ0aW4uamFtZXMucm9iaW5zb25AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEVuYWJsZSBET00gY2xpcGJvYXJkIGFu
ZCBkcmFnLWFuZC1kcm9wIGFjY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzA2MjMKKworICAgICAgICBVbmlmeSByZWR1ZGFudCBtZXRob2RzIHdo
aWNoIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgc2FtZSB2YWx1ZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlU2VsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5oOgorCiAyMDA5LTExLTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSdWJiZXJzdGFtcGVkIGJ5IE1hcmsgUm93ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHAKaW5kZXggMGZmMjZmNy4uNmM0OTkwOSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlU2VsZWN0aW9uKFJhbmdlKiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0Q29weU9y
RGVsZXRlLAogICAgIFBhc3RlYm9hcmRTZWxlY3Rpb25EYXRhKiBkYXRhID0gbmV3IFBhc3RlYm9h
cmRTZWxlY3Rpb25EYXRhKHRleHQsIG1hcmt1cCk7CiAKICAgICBnaW50IG5fdGFyZ2V0czsKLSAg
ICBHdGtUYXJnZXRFbnRyeSogdGFyZ2V0cyA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlz
dChtX2hlbHBlci0+Z2V0Q29weVRhcmdldExpc3QoZnJhbWUpLCAmbl90YXJnZXRzKTsKKyAgICBH
dGtUYXJnZXRFbnRyeSogdGFyZ2V0cyA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdCht
X2hlbHBlci0+ZnVsbFRhcmdldExpc3QoKSwgJm5fdGFyZ2V0cyk7CiAgICAgZ3RrX2NsaXBib2Fy
ZF9zZXRfd2l0aF9kYXRhKGNsaXBib2FyZCwgdGFyZ2V0cywgbl90YXJnZXRzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmRfZ2V0X2NvbnRlbnRzX2NiLCBjbGlwYm9h
cmRfY2xlYXJfY29udGVudHNfY2IsIGRhdGEpOwogICAgIGd0a190YXJnZXRfdGFibGVfZnJlZSh0
YXJnZXRzLCBuX3RhcmdldHMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEhlbHBlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5o
CmluZGV4IDhlNjcxMjcuLjc1MzcxNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Bhc3RlYm9hcmRIZWxwZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
SGVscGVyLmgKQEAgLTQxLDggKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3RrQ2xpcGJv
YXJkKiBnZXRDdXJyZW50VGFyZ2V0KEZyYW1lKikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgR3Rr
Q2xpcGJvYXJkKiBnZXRDbGlwYm9hcmQoRnJhbWUqKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBH
dGtDbGlwYm9hcmQqIGdldFByaW1hcnkoRnJhbWUqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBH
dGtUYXJnZXRMaXN0KiBnZXRDb3B5VGFyZ2V0TGlzdChGcmFtZSopIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIEd0a1RhcmdldExpc3QqIGdldFBhc3RlVGFyZ2V0TGlzdChGcmFtZSopIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEd0a1RhcmdldExpc3QqIGZ1bGxUYXJnZXRMaXN0KCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgZ2ludCBnZXRXZWJWaWV3VGFyZ2V0SW5mb0h0bWwoKSBjb25zdCA9IDA7
CiB9OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCmluZGV4IGUxYzU1MGEuLjVjZDgyODkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMDkt
MTEtMDMgIE1hcnRpbiBSb2JpbnNvbiAgPG1hcnRpbi5qYW1lcy5yb2JpbnNvbkBnbWFpbC5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10g
RW5hYmxlIERPTSBjbGlwYm9hcmQgYW5kIGRyYWctYW5kLWRyb3AgYWNjZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDYyMworCisgICAgICAgIE1v
dmUgaGFuZGxpbmcgb2YgdGFyZ2V0IGxpc3QgdG8gUGFzdGVib2FyZEhlbHBlckd0ay4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQYXN0ZWJvYXJkSGVscGVyR3RrOjpQYXN0ZWJvYXJkSGVscGVyR3RrKToKKyAgICAg
ICAgKFdlYktpdDo6UGFzdGVib2FyZEhlbHBlckd0azo6flBhc3RlYm9hcmRIZWxwZXJHdGspOgor
ICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkSGVscGVyR3RrOjpmdWxsVGFyZ2V0TGlzdCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oOgorICAgICAgICAq
IHdlYmtpdC93ZWJraXRwcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGFzdGVib2FyZEhl
bHBlckluc3RhbmNlKToKKyAgICAgICAgKHdlYmtpdF9pbml0KToKKyAgICAgICAgKiB3ZWJraXQv
d2Via2l0cHJpdmF0ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19kaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfY29weV90YXJnZXRfbGlzdCk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Bhc3RlX3RhcmdldF9saXN0KToKKwogMjAw
OS0xMC0zMCAgRXZhbiBTdGFkZSAgPGVzdGFkZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Q
YXN0ZWJvYXJkSGVscGVyR3RrLmNwcAppbmRleCBmMmVhMzE2Li40YjhkZjI1IDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3BwCisrKyBi
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAKQEAgLTMx
LDYgKzMxLDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorc3RhdGljIEdka0F0b20gZ2RrTWFya3VwQXRvbSA9IGdka19hdG9tX2ludGVybigidGV4
dC9odG1sIiwgRkFMU0UpOworCitQYXN0ZWJvYXJkSGVscGVyR3RrOjpQYXN0ZWJvYXJkSGVscGVy
R3RrKCkKKyAgICA6IHRhcmdldExpc3QoZ3RrX3RhcmdldF9saXN0X25ldygwLCAwKSkKK3sKKyAg
ICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRfV0VC
X1ZJRVdfVEFSR0VUX0lORk9fVEVYVCk7CisgICAgZ3RrX3RhcmdldF9saXN0X2FkZCh0YXJnZXRM
aXN0LCBnZGtNYXJrdXBBdG9tLCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCk7
Cit9CisKK1Bhc3RlYm9hcmRIZWxwZXJHdGs6On5QYXN0ZWJvYXJkSGVscGVyR3RrKCkKK3sKKyAg
ICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYodGFyZ2V0TGlzdCk7Cit9CisKIEd0a0NsaXBib2FyZCog
UGFzdGVib2FyZEhlbHBlckd0azo6Z2V0Q3VycmVudFRhcmdldChGcmFtZSogZnJhbWUpIGNvbnN0
CiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dl
Yl92aWV3KGtpdChmcmFtZSkpOwpAQCAtNTUsMTYgKzY5LDkgQEAgR3RrQ2xpcGJvYXJkKiBQYXN0
ZWJvYXJkSGVscGVyR3RrOjpnZXRQcmltYXJ5KEZyYW1lKiBmcmFtZSkgY29uc3QKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdES19TRUxFQ1RJT05fUFJJTUFSWSk7CiB9CiAK
LUd0a1RhcmdldExpc3QqIFBhc3RlYm9hcmRIZWxwZXJHdGs6OmdldENvcHlUYXJnZXRMaXN0KEZy
YW1lKiBmcmFtZSkgY29uc3QKLXsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0
X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcoa2l0KGZyYW1lKSk7Ci0gICAgcmV0dXJuIHdlYmtpdF93
ZWJfdmlld19nZXRfY29weV90YXJnZXRfbGlzdCh3ZWJWaWV3KTsKLX0KLQotR3RrVGFyZ2V0TGlz
dCogUGFzdGVib2FyZEhlbHBlckd0azo6Z2V0UGFzdGVUYXJnZXRMaXN0KEZyYW1lKiBmcmFtZSkg
Y29uc3QKK0d0a1RhcmdldExpc3QqIFBhc3RlYm9hcmRIZWxwZXJHdGs6OmZ1bGxUYXJnZXRMaXN0
KCkgY29uc3QKIHsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFt
ZV9nZXRfd2ViX3ZpZXcoa2l0KGZyYW1lKSk7Ci0gICAgcmV0dXJuIHdlYmtpdF93ZWJfdmlld19n
ZXRfcGFzdGVfdGFyZ2V0X2xpc3Qod2ViVmlldyk7CisgICAgcmV0dXJuIHRhcmdldExpc3Q7CiB9
CiAKIGdpbnQgUGFzdGVib2FyZEhlbHBlckd0azo6Z2V0V2ViVmlld1RhcmdldEluZm9IdG1sKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhl
bHBlckd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3Rr
LmgKaW5kZXggODQ5YjQxNy4uNDNmNzQxMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmgKQEAgLTM5LDEzICszOSwxNiBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogY2xhc3MgUGFzdGVib2FyZEhlbHBlckd0ayA6IHB1YmxpYyBQYXN0ZWJvYXJk
SGVscGVyIHsKIHB1YmxpYzoKLSAgICBQYXN0ZWJvYXJkSGVscGVyR3RrKCkgeyB9CisgICAgUGFz
dGVib2FyZEhlbHBlckd0aygpOworICAgIH5QYXN0ZWJvYXJkSGVscGVyR3RrKCk7CiAgICAgdmly
dHVhbCBHdGtDbGlwYm9hcmQqIGdldEN1cnJlbnRUYXJnZXQoRnJhbWUqKSBjb25zdDsKICAgICB2
aXJ0dWFsIEd0a0NsaXBib2FyZCogZ2V0Q2xpcGJvYXJkKEZyYW1lKikgY29uc3Q7CiAgICAgdmly
dHVhbCBHdGtDbGlwYm9hcmQqIGdldFByaW1hcnkoRnJhbWUqKSBjb25zdDsKLSAgICB2aXJ0dWFs
IEd0a1RhcmdldExpc3QqIGdldENvcHlUYXJnZXRMaXN0KEZyYW1lKikgY29uc3Q7Ci0gICAgdmly
dHVhbCBHdGtUYXJnZXRMaXN0KiBnZXRQYXN0ZVRhcmdldExpc3QoRnJhbWUqKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEd0a1RhcmdldExpc3QqIGZ1bGxUYXJnZXRMaXN0KCkgY29uc3Q7CiAgICAgdmly
dHVhbCBnaW50IGdldFdlYlZpZXdUYXJnZXRJbmZvSHRtbCgpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIEd0a1RhcmdldExpc3QqIHRhcmdldExpc3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuY3BwCmluZGV4IDQ0MjVkY2QuLmYzZDI2M2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHByaXZhdGUuY3BwCkBAIC0xNTMsNiArMTUzLDEyIEBAIFdlYktpdEhpdFRlc3RSZXN1bHQqIGtp
dChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpOwogfQogCitQYXN0ZWJvYXJkSGVscGVy
R3RrKiBwYXN0ZWJvYXJkSGVscGVySW5zdGFuY2UoKQoreworICAgIHN0YXRpYyBQYXN0ZWJvYXJk
SGVscGVyR3RrKiBoZWxwZXIgPSBuZXcgUGFzdGVib2FyZEhlbHBlckd0aygpOworICAgIHJldHVy
biBoZWxwZXI7Cit9CisKIH0gLyoqIGVuZCBuYW1lc3BhY2UgV2ViS2l0ICovCiAKIG5hbWVzcGFj
ZSBXVEYgewpAQCAtMjM3LDcgKzI0Myw3IEBAIHZvaWQgd2Via2l0X2luaXQoKQogCiAgICAgUGFn
ZUdyb3VwOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyh0cnVlKTsKIAotICAgIFBhc3RlYm9h
cmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPnNldEhlbHBlcihuZXcgV2ViS2l0OjpQYXN0ZWJvYXJk
SGVscGVyR3RrKCkpOworICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPnNldEhl
bHBlcihXZWJLaXQ6OnBhc3RlYm9hcmRIZWxwZXJJbnN0YW5jZSgpKTsKIAogICAgIFNvdXBTZXNz
aW9uKiBzZXNzaW9uID0gd2Via2l0X2dldF9kZWZhdWx0X3Nlc3Npb24oKTsKIApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0cHJpdmF0ZS5oCmluZGV4IDA4ODE3NWYuLjNiN2UxNjEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmgKQEAgLTcwLDYgKzcwLDcgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQ7CiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogICAgIGNsYXNzIERvY3VtZW50TG9hZGVyOworICAgIGNsYXNzIFBh
c3RlYm9hcmRIZWxwZXJHdGs7CiAKICAgICBXZWJLaXRXZWJWaWV3KiBnZXRWaWV3RnJvbUZyYW1l
KFdlYktpdFdlYkZyYW1lKik7CiAKQEAgLTk3LDYgKzk4LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIGNvcmUoV2ViS2l0U2VjdXJpdHlPcmlnaW4q
KTsKIAogICAgIFdlYktpdEhpdFRlc3RSZXN1bHQqIGtpdChjb25zdCBXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0Jik7CisKKyAgICBXZWJLaXQ6OlBhc3RlYm9hcmRIZWxwZXJHdGsqIHBhc3RlYm9hcmRI
ZWxwZXJJbnN0YW5jZSgpOwogfQogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0xMjksOSArMTMyLDYg
QEAgZXh0ZXJuICJDIiB7CiAgICAgICAgIGJvb2wgZWRpdGFibGU7CiAgICAgICAgIEd0a0lNQ29u
dGV4dCogaW1Db250ZXh0OwogCi0gICAgICAgIEd0a1RhcmdldExpc3QqIGNvcHlfdGFyZ2V0X2xp
c3Q7Ci0gICAgICAgIEd0a1RhcmdldExpc3QqIHBhc3RlX3RhcmdldF9saXN0OwotCiAgICAgICAg
IGdib29sZWFuIHRyYW5zcGFyZW50OwogCiAgICAgICAgIEd0a0FkanVzdG1lbnQqIGhvcml6b250
YWxBZGp1c3RtZW50OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA5ZjY2OGY0
Li5iNzNlMTVjIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNjMsNyArNjMs
OSBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAj
aW5jbHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgorI2luY2x1ZGUgIlBhc3Rl
Ym9hcmQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyLmgiCisjaW5jbHVkZSAiUGFzdGVi
b2FyZEhlbHBlckd0ay5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5o
IgpAQCAtMTAwMSwxMiArMTAwMyw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kaXNw
b3NlKEdPYmplY3QqIG9iamVjdCkKIAogICAgICAgICBnX29iamVjdF91bnJlZihwcml2LT5pbUNv
bnRleHQpOwogICAgICAgICBwcml2LT5pbUNvbnRleHQgPSBOVUxMOwotCi0gICAgICAgIGd0a190
YXJnZXRfbGlzdF91bnJlZihwcml2LT5jb3B5X3RhcmdldF9saXN0KTsKLSAgICAgICAgcHJpdi0+
Y29weV90YXJnZXRfbGlzdCA9IE5VTEw7Ci0KLSAgICAgICAgZ3RrX3RhcmdldF9saXN0X3VucmVm
KHByaXYtPnBhc3RlX3RhcmdldF9saXN0KTsKLSAgICAgICAgcHJpdi0+cGFzdGVfdGFyZ2V0X2xp
c3QgPSBOVUxMOwogICAgIH0KIAogICAgIGlmIChwcml2LT5tYWluUmVzb3VyY2UpIHsKQEAgLTI1
NzIsMTcgKzI1NjgsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3KQogCiAgICAgcHJpdi0+em9vbUZ1bGxDb250ZW50ID0gRkFMU0U7CiAK
LSAgICBHZGtBdG9tIHRleHRIdG1sID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoInRl
eHQvaHRtbCIpOwotICAgIC8qIFRhcmdldHMgZm9yIGNvcHkgKi8KLSAgICBwcml2LT5jb3B5X3Rh
cmdldF9saXN0ID0gZ3RrX3RhcmdldF9saXN0X25ldyhOVUxMLCAwKTsKLSAgICBndGtfdGFyZ2V0
X2xpc3RfYWRkKHByaXYtPmNvcHlfdGFyZ2V0X2xpc3QsIHRleHRIdG1sLCAwLCBXRUJLSVRfV0VC
X1ZJRVdfVEFSR0VUX0lORk9fSFRNTCk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X2FkZF90ZXh0X3Rh
cmdldHMocHJpdi0+Y29weV90YXJnZXRfbGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZP
X1RFWFQpOwotCi0gICAgLyogVGFyZ2V0cyBmb3IgcGFzdGluZyAqLwotICAgIHByaXYtPnBhc3Rl
X3RhcmdldF9saXN0ID0gZ3RrX3RhcmdldF9saXN0X25ldyhOVUxMLCAwKTsKLSAgICBndGtfdGFy
Z2V0X2xpc3RfYWRkKHByaXYtPnBhc3RlX3RhcmdldF9saXN0LCB0ZXh0SHRtbCwgMCwgV0VCS0lU
X1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUwpOwotICAgIGd0a190YXJnZXRfbGlzdF9hZGRfdGV4
dF90YXJnZXRzKHByaXYtPnBhc3RlX3RhcmdldF9saXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VU
X0lORk9fVEVYVCk7Ci0KICAgICBwcml2LT53ZWJTZXR0aW5ncyA9IHdlYmtpdF93ZWJfc2V0dGlu
Z3NfbmV3KCk7CiAgICAgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyh3ZWJWaWV3KTsK
ICAgICBnX3NpZ25hbF9jb25uZWN0KHByaXYtPndlYlNldHRpbmdzLCAibm90aWZ5IiwgR19DQUxM
QkFDSyh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KSwgd2ViVmlldyk7CkBAIC0zMzg2
LDEwICszMzcxLDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2VkaXRhYmxlKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIGdib29sZWFuIGZsYWcpCiAgKiovCiBHdGtUYXJnZXRMaXN0KiB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2NvcHlfdGFyZ2V0X2xpc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
IHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyks
IE5VTEwpOwotCi0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2
OwotICAgIHJldHVybiBwcml2LT5jb3B5X3RhcmdldF9saXN0OworICAgIHJldHVybiBwYXN0ZWJv
YXJkSGVscGVySW5zdGFuY2UoKS0+ZnVsbFRhcmdldExpc3QoKTsKIH0KIAogLyoqCkBAIC0zNDA2
LDEwICszMzg4LDcgQEAgR3RrVGFyZ2V0TGlzdCogd2Via2l0X3dlYl92aWV3X2dldF9jb3B5X3Rh
cmdldF9saXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgKiovCiBHdGtUYXJnZXRMaXN0KiB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3Bhc3RlX3RhcmdldF9saXN0KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZp
ZXcpLCBOVUxMKTsKLQotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+
cHJpdjsKLSAgICByZXR1cm4gcHJpdi0+cGFzdGVfdGFyZ2V0X2xpc3Q7CisgICAgcmV0dXJuIHBh
c3RlYm9hcmRIZWxwZXJJbnN0YW5jZSgpLT5mdWxsVGFyZ2V0TGlzdCgpOwogfQogCiAvKioKLS0g
CjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="23881"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42397</attachid>
            <date>2009-11-03 10:45:05 -0800</date>
            <delta_ts>2009-11-05 00:50:06 -0800</delta_ts>
            <desc>Move target list handling to PasteboardHelperGtk (rev2)</desc>
            <filename>0001-Move-handling-of-target-list-to-PasteboardHelperGtk.patch</filename>
            <type>text/plain</type>
            <size>11166</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBhOTk1N2Q1MjQ3ZGM4ZWYwYWMzOTdlNjNiYTRhOWYzM2FhN2NmZjVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1hcnRpbi5qYW1lcy5yb2JpbnNv
bkBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjggT2N0IDIwMDkgMTc6NTA6MTUgLTA3MDAKU3ViamVj
dDogW1BBVENIXSBNb3ZlIGhhbmRsaW5nIG9mIHRhcmdldCBsaXN0IHRvIFBhc3RlYm9hcmRIZWxw
ZXJHdGsuCgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDEzICsrKysrKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0
ay5jcHAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9h
cmRIZWxwZXIuaCAgICAgICAgICAgfCAgICAzICstCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNCArKysrKysrKysrKysrKysrKwogV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcCB8ICAgMjUgKysrKysr
KysrKystLS0tLS0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0
ay5oICAgfCAgICA5ICsrKystLQogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAg
ICAgICAgICAgICAgICB8ICAgIDggKysrKystCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2
YXRlLmggICAgICAgICAgICAgICAgIHwgICAgNiArKy0tCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCAgICAgICAgICAgICAgIHwgICAyOSArKystLS0tLS0tLS0tLS0tLS0tLS0K
IDkgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZTU0
YmIwLi41N2U4ODJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDA5LTExLTAzICBNYXJ0aW4gUm9iaW5zb24g
IDxtYXJ0aW4uamFtZXMucm9iaW5zb25AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEVuYWJsZSBET00gY2xpcGJvYXJkIGFu
ZCBkcmFnLWFuZC1kcm9wIGFjY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzA2MjMKKworICAgICAgICBVbmlmeSByZWR1ZGFudCBtZXRob2RzIHdo
aWNoIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgc2FtZSB2YWx1ZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlU2VsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5oOgorCiAyMDA5LTExLTAzICBFdmFuIE1hcnRpbiAgPGV2YW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkR3RrLmNwcAppbmRleCAwZmYyNmY3Li5lZTk1YTM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVTZWxlY3Rpb24oUmFuZ2UqIHNlbGVjdGVkUmFuZ2UsIGJvb2wgY2FuU21hcnRDb3B5T3JEZWxl
dGUsCiAgICAgUGFzdGVib2FyZFNlbGVjdGlvbkRhdGEqIGRhdGEgPSBuZXcgUGFzdGVib2FyZFNl
bGVjdGlvbkRhdGEodGV4dCwgbWFya3VwKTsKIAogICAgIGdpbnQgbl90YXJnZXRzOwotICAgIEd0
a1RhcmdldEVudHJ5KiB0YXJnZXRzID0gZ3RrX3RhcmdldF90YWJsZV9uZXdfZnJvbV9saXN0KG1f
aGVscGVyLT5nZXRDb3B5VGFyZ2V0TGlzdChmcmFtZSksICZuX3RhcmdldHMpOworICAgIEd0a1Rh
cmdldEVudHJ5KiB0YXJnZXRzID0gZ3RrX3RhcmdldF90YWJsZV9uZXdfZnJvbV9saXN0KG1faGVs
cGVyLT50YXJnZXRMaXN0KCksICZuX3RhcmdldHMpOwogICAgIGd0a19jbGlwYm9hcmRfc2V0X3dp
dGhfZGF0YShjbGlwYm9hcmQsIHRhcmdldHMsIG5fdGFyZ2V0cywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpcGJvYXJkX2dldF9jb250ZW50c19jYiwgY2xpcGJvYXJkX2NsZWFy
X2NvbnRlbnRzX2NiLCBkYXRhKTsKICAgICBndGtfdGFyZ2V0X3RhYmxlX2ZyZWUodGFyZ2V0cywg
bl90YXJnZXRzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRI
ZWxwZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAppbmRleCA4
ZTY3MTI3Li5lNTg5ZjI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkSGVscGVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5o
CkBAIC00MSw4ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEd0a0NsaXBib2FyZCogZ2V0
Q3VycmVudFRhcmdldChGcmFtZSopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEd0a0NsaXBib2Fy
ZCogZ2V0Q2xpcGJvYXJkKEZyYW1lKikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgR3RrQ2xpcGJv
YXJkKiBnZXRQcmltYXJ5KEZyYW1lKikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgR3RrVGFyZ2V0
TGlzdCogZ2V0Q29weVRhcmdldExpc3QoRnJhbWUqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBH
dGtUYXJnZXRMaXN0KiBnZXRQYXN0ZVRhcmdldExpc3QoRnJhbWUqKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBHdGtUYXJnZXRMaXN0KiB0YXJnZXRMaXN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgZ2ludCBnZXRXZWJWaWV3VGFyZ2V0SW5mb0h0bWwoKSBjb25zdCA9IDA7CiB9OwogCmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4
IGUxYzU1MGEuLjVjZDgyODkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMDktMTEtMDMgIE1hcnRp
biBSb2JpbnNvbiAgPG1hcnRpbi5qYW1lcy5yb2JpbnNvbkBnbWFpbC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRW5hYmxlIERPTSBj
bGlwYm9hcmQgYW5kIGRyYWctYW5kLWRyb3AgYWNjZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDYyMworCisgICAgICAgIE1vdmUgaGFuZGxpbmcg
b2YgdGFyZ2V0IGxpc3QgdG8gUGFzdGVib2FyZEhlbHBlckd0ay4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYXN0
ZWJvYXJkSGVscGVyR3RrOjpQYXN0ZWJvYXJkSGVscGVyR3RrKToKKyAgICAgICAgKFdlYktpdDo6
UGFzdGVib2FyZEhlbHBlckd0azo6flBhc3RlYm9hcmRIZWxwZXJHdGspOgorICAgICAgICAoV2Vi
S2l0OjpQYXN0ZWJvYXJkSGVscGVyR3RrOjpmdWxsVGFyZ2V0TGlzdCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXRwcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGFzdGVib2FyZEhlbHBlckluc3RhbmNl
KToKKyAgICAgICAgKHdlYmtpdF9pbml0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0
ZS5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19kaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19pbml0KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfY29weV90YXJnZXRfbGlzdCk6CisgICAgICAgICh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3Bhc3RlX3RhcmdldF9saXN0KToKKwogMjAwOS0xMC0zMCAgRXZh
biBTdGFkZSAgPGVzdGFkZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2
aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9h
cmRIZWxwZXJHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVs
cGVyR3RrLmNwcAppbmRleCBmMmVhMzE2Li5jNzFlZjFiIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAKQEAgLTMxLDYgKzMxLDIwIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGlj
IEdka0F0b20gZ2RrTWFya3VwQXRvbSA9IGdka19hdG9tX2ludGVybigidGV4dC9odG1sIiwgRkFM
U0UpOworCitQYXN0ZWJvYXJkSGVscGVyR3RrOjpQYXN0ZWJvYXJkSGVscGVyR3RrKCkKKyAgICA6
IG1fdGFyZ2V0TGlzdChndGtfdGFyZ2V0X2xpc3RfbmV3KDAsIDApKQoreworICAgIGd0a190YXJn
ZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKG1fdGFyZ2V0TGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RB
UkdFVF9JTkZPX1RFWFQpOworICAgIGd0a190YXJnZXRfbGlzdF9hZGQobV90YXJnZXRMaXN0LCBn
ZGtNYXJrdXBBdG9tLCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCk7Cit9CisK
K1Bhc3RlYm9hcmRIZWxwZXJHdGs6On5QYXN0ZWJvYXJkSGVscGVyR3RrKCkKK3sKKyAgICBndGtf
dGFyZ2V0X2xpc3RfdW5yZWYobV90YXJnZXRMaXN0KTsKK30KKwogR3RrQ2xpcGJvYXJkKiBQYXN0
ZWJvYXJkSGVscGVyR3RrOjpnZXRDdXJyZW50VGFyZ2V0KEZyYW1lKiBmcmFtZSkgY29uc3QKIHsK
ICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3Zp
ZXcoa2l0KGZyYW1lKSk7CkBAIC01NSwxNiArNjksOSBAQCBHdGtDbGlwYm9hcmQqIFBhc3RlYm9h
cmRIZWxwZXJHdGs6OmdldFByaW1hcnkoRnJhbWUqIGZyYW1lKSBjb25zdAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0RLX1NFTEVDVElPTl9QUklNQVJZKTsKIH0KIAotR3Rr
VGFyZ2V0TGlzdCogUGFzdGVib2FyZEhlbHBlckd0azo6Z2V0Q29weVRhcmdldExpc3QoRnJhbWUq
IGZyYW1lKSBjb25zdAotewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2Vi
X2ZyYW1lX2dldF93ZWJfdmlldyhraXQoZnJhbWUpKTsKLSAgICByZXR1cm4gd2Via2l0X3dlYl92
aWV3X2dldF9jb3B5X3RhcmdldF9saXN0KHdlYlZpZXcpOwotfQotCi1HdGtUYXJnZXRMaXN0KiBQ
YXN0ZWJvYXJkSGVscGVyR3RrOjpnZXRQYXN0ZVRhcmdldExpc3QoRnJhbWUqIGZyYW1lKSBjb25z
dAorR3RrVGFyZ2V0TGlzdCogUGFzdGVib2FyZEhlbHBlckd0azo6dGFyZ2V0TGlzdCgpIGNvbnN0
CiB7Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dl
Yl92aWV3KGtpdChmcmFtZSkpOwotICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Bhc3Rl
X3RhcmdldF9saXN0KHdlYlZpZXcpOworICAgIHJldHVybiBtX3RhcmdldExpc3Q7CiB9CiAKIGdp
bnQgUGFzdGVib2FyZEhlbHBlckd0azo6Z2V0V2ViVmlld1RhcmdldEluZm9IdG1sKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0
ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmgKaW5k
ZXggODQ5YjQxNy4uMTJiYTIwNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9QYXN0ZWJvYXJkSGVscGVyR3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Q
YXN0ZWJvYXJkSGVscGVyR3RrLmgKQEAgLTM5LDEzICszOSwxNiBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgUGFzdGVib2FyZEhlbHBlckd0ayA6IHB1YmxpYyBQYXN0ZWJvYXJkSGVscGVy
IHsKIHB1YmxpYzoKLSAgICBQYXN0ZWJvYXJkSGVscGVyR3RrKCkgeyB9CisgICAgUGFzdGVib2Fy
ZEhlbHBlckd0aygpOworICAgIH5QYXN0ZWJvYXJkSGVscGVyR3RrKCk7CiAgICAgdmlydHVhbCBH
dGtDbGlwYm9hcmQqIGdldEN1cnJlbnRUYXJnZXQoRnJhbWUqKSBjb25zdDsKICAgICB2aXJ0dWFs
IEd0a0NsaXBib2FyZCogZ2V0Q2xpcGJvYXJkKEZyYW1lKikgY29uc3Q7CiAgICAgdmlydHVhbCBH
dGtDbGlwYm9hcmQqIGdldFByaW1hcnkoRnJhbWUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEd0a1Rh
cmdldExpc3QqIGdldENvcHlUYXJnZXRMaXN0KEZyYW1lKikgY29uc3Q7Ci0gICAgdmlydHVhbCBH
dGtUYXJnZXRMaXN0KiBnZXRQYXN0ZVRhcmdldExpc3QoRnJhbWUqKSBjb25zdDsKKyAgICB2aXJ0
dWFsIEd0a1RhcmdldExpc3QqIHRhcmdldExpc3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIGdpbnQg
Z2V0V2ViVmlld1RhcmdldEluZm9IdG1sKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgR3RrVGFy
Z2V0TGlzdCogbV90YXJnZXRMaXN0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0cHJpdmF0ZS5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmNwcAppbmRleCA0NDI1ZGNkLi5mM2QyNjNhIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmNwcApAQCAtMTUzLDYgKzE1MywxMiBAQCBXZWJLaXRIaXRUZXN0UmVzdWx0KiBraXQoY29uc3Qg
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTEwpKTsKIH0KIAorUGFzdGVib2FyZEhlbHBlckd0ayogcGFz
dGVib2FyZEhlbHBlckluc3RhbmNlKCkKK3sKKyAgICBzdGF0aWMgUGFzdGVib2FyZEhlbHBlckd0
ayogaGVscGVyID0gbmV3IFBhc3RlYm9hcmRIZWxwZXJHdGsoKTsKKyAgICByZXR1cm4gaGVscGVy
OworfQorCiB9IC8qKiBlbmQgbmFtZXNwYWNlIFdlYktpdCAqLwogCiBuYW1lc3BhY2UgV1RGIHsK
QEAgLTIzNyw3ICsyNDMsNyBAQCB2b2lkIHdlYmtpdF9pbml0KCkKIAogICAgIFBhZ2VHcm91cDo6
c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3ModHJ1ZSk7CiAKLSAgICBQYXN0ZWJvYXJkOjpnZW5l
cmFsUGFzdGVib2FyZCgpLT5zZXRIZWxwZXIobmV3IFdlYktpdDo6UGFzdGVib2FyZEhlbHBlckd0
aygpKTsKKyAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5zZXRIZWxwZXIoV2Vi
S2l0OjpwYXN0ZWJvYXJkSGVscGVySW5zdGFuY2UoKSk7CiAKICAgICBTb3VwU2Vzc2lvbiogc2Vz
c2lvbiA9IHdlYmtpdF9nZXRfZGVmYXVsdF9zZXNzaW9uKCk7CiAKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHBy
aXZhdGUuaAppbmRleCAwODgxNzVmLi4zYjdlMTYxIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCkBAIC03MCw2ICs3MCw3IEBAIGNsYXNzIERvd25sb2FkQ2xpZW50OwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKICAgICBjbGFzcyBEb2N1bWVudExvYWRlcjsKKyAgICBjbGFzcyBQYXN0ZWJvYXJk
SGVscGVyR3RrOwogCiAgICAgV2ViS2l0V2ViVmlldyogZ2V0Vmlld0Zyb21GcmFtZShXZWJLaXRX
ZWJGcmFtZSopOwogCkBAIC05Nyw2ICs5OCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBjb3JlKFdlYktpdFNlY3VyaXR5T3JpZ2luKik7CiAKICAg
ICBXZWJLaXRIaXRUZXN0UmVzdWx0KiBraXQoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYp
OworCisgICAgV2ViS2l0OjpQYXN0ZWJvYXJkSGVscGVyR3RrKiBwYXN0ZWJvYXJkSGVscGVySW5z
dGFuY2UoKTsKIH0KIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtMTI5LDkgKzEzMiw2IEBAIGV4dGVy
biAiQyIgewogICAgICAgICBib29sIGVkaXRhYmxlOwogICAgICAgICBHdGtJTUNvbnRleHQqIGlt
Q29udGV4dDsKIAotICAgICAgICBHdGtUYXJnZXRMaXN0KiBjb3B5X3RhcmdldF9saXN0OwotICAg
ICAgICBHdGtUYXJnZXRMaXN0KiBwYXN0ZV90YXJnZXRfbGlzdDsKLQogICAgICAgICBnYm9vbGVh
biB0cmFuc3BhcmVudDsKIAogICAgICAgICBHdGtBZGp1c3RtZW50KiBob3Jpem9udGFsQWRqdXN0
bWVudDsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggOWY2NjhmNC4uYjQzZDg4
MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTYzLDcgKzYzLDkgQEAKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUg
Ik1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIKKyNpbmNsdWRlICJQYXN0ZWJvYXJkLmgi
CiAjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlci5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxw
ZXJHdGsuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKQEAgLTEw
MDEsMTIgKzEwMDMsNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZGlzcG9zZShHT2Jq
ZWN0KiBvYmplY3QpCiAKICAgICAgICAgZ19vYmplY3RfdW5yZWYocHJpdi0+aW1Db250ZXh0KTsK
ICAgICAgICAgcHJpdi0+aW1Db250ZXh0ID0gTlVMTDsKLQotICAgICAgICBndGtfdGFyZ2V0X2xp
c3RfdW5yZWYocHJpdi0+Y29weV90YXJnZXRfbGlzdCk7Ci0gICAgICAgIHByaXYtPmNvcHlfdGFy
Z2V0X2xpc3QgPSBOVUxMOwotCi0gICAgICAgIGd0a190YXJnZXRfbGlzdF91bnJlZihwcml2LT5w
YXN0ZV90YXJnZXRfbGlzdCk7Ci0gICAgICAgIHByaXYtPnBhc3RlX3RhcmdldF9saXN0ID0gTlVM
TDsKICAgICB9CiAKICAgICBpZiAocHJpdi0+bWFpblJlc291cmNlKSB7CkBAIC0yNTcyLDE3ICsy
NTY4LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyog
d2ViVmlldykKIAogICAgIHByaXYtPnpvb21GdWxsQ29udGVudCA9IEZBTFNFOwogCi0gICAgR2Rr
QXRvbSB0ZXh0SHRtbCA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJ0ZXh0L2h0bWwi
KTsKLSAgICAvKiBUYXJnZXRzIGZvciBjb3B5ICovCi0gICAgcHJpdi0+Y29weV90YXJnZXRfbGlz
dCA9IGd0a190YXJnZXRfbGlzdF9uZXcoTlVMTCwgMCk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X2Fk
ZChwcml2LT5jb3B5X3RhcmdldF9saXN0LCB0ZXh0SHRtbCwgMCwgV0VCS0lUX1dFQl9WSUVXX1RB
UkdFVF9JTkZPX0hUTUwpOwotICAgIGd0a190YXJnZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKHBy
aXYtPmNvcHlfdGFyZ2V0X2xpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhUKTsK
LQotICAgIC8qIFRhcmdldHMgZm9yIHBhc3RpbmcgKi8KLSAgICBwcml2LT5wYXN0ZV90YXJnZXRf
bGlzdCA9IGd0a190YXJnZXRfbGlzdF9uZXcoTlVMTCwgMCk7Ci0gICAgZ3RrX3RhcmdldF9saXN0
X2FkZChwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCwgdGV4dEh0bWwsIDAsIFdFQktJVF9XRUJfVklF
V19UQVJHRVRfSU5GT19IVE1MKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0
cyhwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RF
WFQpOwotCiAgICAgcHJpdi0+d2ViU2V0dGluZ3MgPSB3ZWJraXRfd2ViX3NldHRpbmdzX25ldygp
OwogICAgIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3Mod2ViVmlldyk7CiAgICAgZ19z
aWduYWxfY29ubmVjdChwcml2LT53ZWJTZXR0aW5ncywgIm5vdGlmeSIsIEdfQ0FMTEJBQ0sod2Vi
a2l0X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeSksIHdlYlZpZXcpOwpAQCAtMzM4NiwxMCArMzM3
MSw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZShXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBnYm9vbGVhbiBmbGFnKQogICoqLwogR3RrVGFyZ2V0TGlzdCogd2Via2l0X3dlYl92
aWV3X2dldF9jb3B5X3RhcmdldF9saXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsK
LQotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICBy
ZXR1cm4gcHJpdi0+Y29weV90YXJnZXRfbGlzdDsKKyAgICByZXR1cm4gcGFzdGVib2FyZEhlbHBl
ckluc3RhbmNlKCktPnRhcmdldExpc3QoKTsKIH0KIAogLyoqCkBAIC0zNDA2LDEwICszMzg4LDcg
QEAgR3RrVGFyZ2V0TGlzdCogd2Via2l0X3dlYl92aWV3X2dldF9jb3B5X3RhcmdldF9saXN0KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgKiovCiBHdGtUYXJnZXRMaXN0KiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3Bhc3RlX3RhcmdldF9saXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7Ci0gICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsK
LQotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLSAgICBy
ZXR1cm4gcHJpdi0+cGFzdGVfdGFyZ2V0X2xpc3Q7CisgICAgcmV0dXJuIHBhc3RlYm9hcmRIZWxw
ZXJJbnN0YW5jZSgpLT50YXJnZXRMaXN0KCk7CiB9CiAKIC8qKgotLSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42550</attachid>
            <date>2009-11-05 00:50:06 -0800</date>
            <delta_ts>2009-11-07 13:43:01 -0800</delta_ts>
            <desc>Add DataObjectGtk and use it for GDK_SELECTION_PRIMARY</desc>
            <filename>0001-Add-DataObjectGtk-a-container-for-pasteboard-and-dr.patch</filename>
            <type>text/plain</type>
            <size>18810</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA2OWU5ZGY4ZDhkZWQwMzJmOGYxNWU5MjU2NDA3NWY2YjFjYmI2OGJhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1hcnRpbi5qYW1lcy5yb2JpbnNv
bkBnbWFpbC5jb20+CkRhdGU6IFdlZCwgNCBOb3YgMjAwOSAyMzo0MDozMiAtMDgwMApTdWJqZWN0
OiBbUEFUQ0hdIEFkZCBEYXRhT2JqZWN0R3RrLCBhIGNvbnRhaW5lciBmb3IgcGFzdGVib2FyZCBh
bmQgZHJhZy1hbmQtZHJvcCBkYXRhLiBVc2UgRGF0YU9iamVjdEd0ayB3aGVuIHNldHRpbmcgYW5k
IGNsZWFyIHNlbGVjdGlvbiBjbGlwYm9hcmQgZGF0YS4KCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDAgKysrKysrCiBXZWJDb3JlL0dO
VW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJDb3Jl
L3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcCAgICAgICAgICAgIHwgIDE1MCArKysrKysr
KysrKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaCAgICAg
ICAgICAgICAgfCAgIDgwICsrKysrKysrKysrCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAyMCArKysKIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50R3RrLmNwcCAgICAgfCAgIDQ5ICsrLS0tLS0KIFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAgfCAgIDg1ICsrKysrKysrKysrKy0K
IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oICAgfCAgICAy
ICsKIDggZmlsZXMgY2hhbmdlZCwgMzkyIGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3Bw
CiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5o
CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBjMTEyZmUzLi42YmM3NTkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDA5LTExLTA1ICBNYXJ0aW4gUm9i
aW5zb24gIDxtYXJ0aW4uamFtZXMucm9iaW5zb25AZ21haWwuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEVuYWJsZSBET00gY2xpcGJv
YXJkIGFuZCBkcmFnLWFuZC1kcm9wIGFjY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA2MjMKKworICAgICAgICBBZGQgRGF0YU9iamVjdEd0aywg
YSBjb250YWluZXIgZm9yIHBhc3RlYm9hcmQgYW5kIGRyYWctYW5kLWRyb3AgZGF0YS4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EYXRhT2JqZWN0
R3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpEYXRhT2Jq
ZWN0R3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6On5EYXRhT2JqZWN0R3Rr
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmZpbGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFPYmplY3RHdGs6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0
R3RrOjp1cmxMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpoYXNVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0SW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0RHJhZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YU9iamVjdEd0azo6Y2xlYXJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2Jq
ZWN0R3RrOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpmb3JDbGlw
Ym9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFPYmplY3RHdGs6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0
azo6bWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnVyaUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YU9iamVjdEd0azo6c2V0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0
R3RrOjpzZXRNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0VVJJ
TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpoYXNUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6Omhhc01hcmt1cCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhT2JqZWN0R3RrOjpoYXNVUklMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmpl
Y3RHdGs6Omhhc0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmNsZWFy
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpjbGVhck1hcmt1cCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpjbGVhclVSSUxpc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YU9iamVjdEd0azo6ZHJhZ0NvbnRleHQpOgorCiAyMDA5LTExLTA0ICBNYXJr
IE1lbnRvdmFpICA8bWFya0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
ayBSb3dlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KaW5kZXggY2IxYzM3ZS4uZTViNjkwMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xOTUzLDYgKzE5
NTMsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0Nv
bnRleHRNZW51SXRlbUd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5j
cHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5oIFwKKwlXZWJDb3JlL3BsYXRm
b3JtL2d0ay9EYXRhT2JqZWN0R3RrLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmpl
Y3RHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAgXAogCVdl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0v
Z3RrL0V2ZW50TG9vcEd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RGF0YU9iamVjdEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjg1ZDNhCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKQEAgLTAsMCAr
MSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIE1hcnRpbiBSb2JpbnNvbgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRhdGFPYmplY3RHdGsuaCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworCitEYXRhT2JqZWN0
R3RrOjpEYXRhT2JqZWN0R3RrKCkKKyAgICA6IG1faW1hZ2UoMCkKKyAgICAsIG1fZHJhZ0NvbnRl
eHQoMCkKK3sKKworfQorCitEYXRhT2JqZWN0R3RrOjp+RGF0YU9iamVjdEd0aygpCit7CisgICAg
aWYgKG1faW1hZ2UpCisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1faW1hZ2UpOworICAgIGlmICht
X2RyYWdDb250ZXh0KQorICAgICAgICBnX29iamVjdF91bnJlZihtX2RyYWdDb250ZXh0KTsKK30K
KworVmVjdG9yPFN0cmluZz4gRGF0YU9iamVjdEd0azo6ZmlsZXMoKQoreworICAgIFZlY3RvcjxT
dHJpbmc+IHVyaXModXJpTGlzdCgpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBmaWxlczsKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXJpcy5zaXplKCk7IGkrKykgeworICAgICAgICBTdHJp
bmcgdXJpKHVyaXNbMF0uc3RyaXBXaGl0ZVNwYWNlKCkpOworICAgICAgICBpZiAodXJpLnN0YXJ0
c1dpdGgoIiMiKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGdjaGFyKiBzY2hl
bWUgPSBnX3VyaV9wYXJzZV9zY2hlbWUodXJpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAo
Z19zdHJjbXAwKHNjaGVtZSwgImZpbGUiKSkgeworICAgICAgICAgICAgZ19mcmVlKHNjaGVtZSk7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGdjaGFyKiBwYXRo
ID0gZ19maWxlbmFtZV9mcm9tX3VyaSh1cmkudXRmOCgpLmRhdGEoKSwgTlVMTCwgTlVMTCk7Cisg
ICAgICAgIGlmICghcGF0aCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZpbGVz
LmFwcGVuZChwYXRoKTsKKyAgICAgICAgZ19mcmVlKHBhdGgpOworICAgICAgICBnX2ZyZWUoc2No
ZW1lKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmlsZXM7Cit9CisKK1N0cmluZyBEYXRhT2JqZWN0
R3RrOjp1cmwoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVyaXModXJpTGlzdCgpKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHVyaXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgU3RyaW5n
IHVyaSh1cmlzWzBdLnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICAgICAgaWYgKCF1cmkuc3RhcnRz
V2l0aCgiIyIpKQorICAgICAgICAgICAgcmV0dXJuIHVyaTsKKyAgICB9CisKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBEYXRhT2JqZWN0R3RrOjp1cmxMYWJlbCgpCit7CisgICAg
aWYgKGhhc1RleHQoKSkKKyAgICAgICAgcmV0dXJuIHRleHQoKTsKKyAgICBlbHNlIGlmIChoYXNV
UkwoKSkKKyAgICAgICAgcmV0dXJuIHVybCgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworfQorCitib29sIERhdGFPYmplY3RHdGs6Omhhc1VSTCgpCit7CisgICAgcmV0dXJu
ICF1cmwoKS5pc0VtcHR5KCk7Cit9CisKK3ZvaWQgRGF0YU9iamVjdEd0azo6c2V0SW1hZ2UoR2Rr
UGl4YnVmKiBuZXdJbWFnZSkKK3sKKyAgICBpZiAobV9pbWFnZSkKKyAgICAgICAgZ19vYmplY3Rf
dW5yZWYobV9pbWFnZSk7CisKKyAgICBpZiAobmV3SW1hZ2UpCisgICAgICAgIGdfb2JqZWN0X3Jl
ZihuZXdJbWFnZSk7CisKKyAgICBtX2ltYWdlID0gbmV3SW1hZ2U7Cit9Cit2b2lkIERhdGFPYmpl
Y3RHdGs6OnNldERyYWdDb250ZXh0KEdka0RyYWdDb250ZXh0KiBuZXdEcmFnQ29udGV4dCkKK3sK
KyAgICBpZiAobV9kcmFnQ29udGV4dCkKKyAgICAgICAgZ19vYmplY3RfdW5yZWYobV9kcmFnQ29u
dGV4dCk7CisKKyAgICBpZiAobmV3RHJhZ0NvbnRleHQpCisgICAgICAgIGdfb2JqZWN0X3JlZihu
ZXdEcmFnQ29udGV4dCk7CisKKyAgICBtX2RyYWdDb250ZXh0ID0gbmV3RHJhZ0NvbnRleHQ7Cit9
CisKK3ZvaWQgRGF0YU9iamVjdEd0azo6Y2xlYXJJbWFnZSgpCit7CisgICAgaWYgKG1faW1hZ2Up
CisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1faW1hZ2UpOworCisgICAgbV9pbWFnZSA9IDA7Cit9
CisKK3ZvaWQgRGF0YU9iamVjdEd0azo6Y2xlYXIoKQoreworICAgIGNsZWFyVGV4dCgpOworICAg
IGNsZWFyTWFya3VwKCk7CisgICAgY2xlYXJVUklMaXN0KCk7CisgICAgY2xlYXJJbWFnZSgpOwor
fQorCisvKnN0YXRpYyovCitEYXRhT2JqZWN0R3RrKiBEYXRhT2JqZWN0R3RrOjpmb3JDbGlwYm9h
cmQoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCit7CisgICAgc3RhdGljIEhhc2hNYXA8R3RrQ2xp
cGJvYXJkKiwgUmVmUHRyPERhdGFPYmplY3RHdGs+ID4gb2JqZWN0TWFwOworCisgICAgaWYgKCFv
YmplY3RNYXAuY29udGFpbnMoY2xpcGJvYXJkKSkgeworICAgICAgICBSZWZQdHI8RGF0YU9iamVj
dEd0az4gZGF0YU9iamVjdCA9IERhdGFPYmplY3RHdGs6OmNyZWF0ZSgpOworICAgICAgICBvYmpl
Y3RNYXAuc2V0KGNsaXBib2FyZCwgZGF0YU9iamVjdCk7CisgICAgICAgIHJldHVybiBkYXRhT2Jq
ZWN0LmdldCgpOworICAgIH0KKworICAgIEhhc2hNYXA8R3RrQ2xpcGJvYXJkKiwgUmVmUHRyPERh
dGFPYmplY3RHdGs+ID46Oml0ZXJhdG9yIGl0ID0gb2JqZWN0TWFwLmZpbmQoY2xpcGJvYXJkKTsK
KyAgICByZXR1cm4gaXQtPnNlY29uZC5nZXQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0
YU9iamVjdEd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMmE3NjYK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgK
QEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgTWFydGluIFJvYmlu
c29uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIERhdGFPYmplY3RH
dGtfaAorI2RlZmluZSBEYXRhT2JqZWN0R3RrX2gKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNp
bmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5jbHVkZSAiRmlsZUxpc3QuaCIKKworI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIERhdGFPYmplY3RHdGsgOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhT2Jq
ZWN0R3RrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4g
Y3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0YU9iamVjdEd0
aygpKTsKKyAgICB9CisKKyAgICB+RGF0YU9iamVjdEd0aygpOworCisgICAgU3RyaW5nIHRleHQo
KSB7IHJldHVybiBtX3RleHQ7IH0KKyAgICBTdHJpbmcgbWFya3VwKCkgeyByZXR1cm4gbV9tYXJr
dXA7IH0KKyAgICBWZWN0b3I8U3RyaW5nPiB1cmlMaXN0KCkgeyByZXR1cm4gbV91cmlMaXN0OyB9
CisgICAgR2RrUGl4YnVmKiBpbWFnZSgpIHsgcmV0dXJuIG1faW1hZ2U7IH0KKyAgICB2b2lkIHNl
dFRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0KSB7IG1fdGV4dCA9IG5ld1RleHQ7IH0KKyAgICB2
b2lkIHNldE1hcmt1cChjb25zdCBTdHJpbmcmIG5ld01hcmt1cCkgeyBtX21hcmt1cCA9IG5ld01h
cmt1cDsgfQorICAgIHZvaWQgc2V0VVJJTGlzdChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbmV3VVJJ
TGlzdCkgeyAgbV91cmlMaXN0ID0gbmV3VVJJTGlzdDsgfQorICAgIGJvb2wgaGFzVGV4dCgpIHsg
cmV0dXJuICFtX3RleHQuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNNYXJrdXAoKSB7IHJldHVy
biAhbV9tYXJrdXAuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNVUklMaXN0KCkgeyByZXR1cm4g
IW1fdXJpTGlzdC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc0ltYWdlKCkgeyByZXR1cm4gbV9p
bWFnZTsgfQorICAgIHZvaWQgY2xlYXJUZXh0KCkgeyBtX3RleHQgPSAiIjsgfQorICAgIHZvaWQg
Y2xlYXJNYXJrdXAoKSB7IG1fbWFya3VwID0gIiI7IH0KKyAgICB2b2lkIGNsZWFyVVJJTGlzdCgp
IHsgbV91cmlMaXN0LmNsZWFyKCk7IH0KKyAgICBHZGtEcmFnQ29udGV4dCogZHJhZ0NvbnRleHQo
KSB7IHJldHVybiBtX2RyYWdDb250ZXh0OyB9CisKKyAgICB2b2lkIHNldEltYWdlKEdka1BpeGJ1
ZiopOworICAgIHZvaWQgc2V0RHJhZ0NvbnRleHQoR2RrRHJhZ0NvbnRleHQqKTsKKyAgICBWZWN0
b3I8U3RyaW5nPiBmaWxlcygpOworICAgIGJvb2wgaGFzVVJMKCk7CisgICAgU3RyaW5nIHVybCgp
OworICAgIFN0cmluZyB1cmxMYWJlbCgpOworCisgICAgdm9pZCBjbGVhckltYWdlKCk7CisgICAg
dm9pZCBjbGVhcigpOworCisgICAgc3RhdGljIERhdGFPYmplY3RHdGsqIGZvckNsaXBib2FyZChH
dGtDbGlwYm9hcmQqKTsKKworcHJpdmF0ZToKKyAgICBEYXRhT2JqZWN0R3RrKCk7CisKKyAgICBT
dHJpbmcgbV90ZXh0OworICAgIFN0cmluZyBtX21hcmt1cDsKKyAgICBWZWN0b3I8U3RyaW5nPiBt
X3VyaUxpc3Q7CisgICAgR2RrUGl4YnVmKiBtX2ltYWdlOworICAgIEdka0RyYWdDb250ZXh0KiBt
X2RyYWdDb250ZXh0OworfTsKKworfQorCisjZW5kaWYgLy8gRGF0YU9iamVjdEd0a19oCmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4
IDE0ZGNmYzUuLjgzYjljMTIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMTEtMDUgIE1hcnRp
biBSb2JpbnNvbiAgPG1hcnRpbi5qYW1lcy5yb2JpbnNvbkBnbWFpbC5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRW5hYmxlIERPTSBj
bGlwYm9hcmQgYW5kIGRyYWctYW5kLWRyb3AgYWNjZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDYyMworCisgICAgICAgIFVzZSBEYXRhT2JqZWN0
R3RrIHdoZW4gc2V0dGluZyBhbmQgY2xlYXJpbmcgcGFzdGVib2FyZCBkYXRhIG9uIHRoZQorICAg
ICAgICBHREtfU0VMRUNUSU9OX1BSSU1BUlkgY2xpcGJvYXJkLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xp
ZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZmlsbFNlbGVjdGlv
bkRhdGEpOgorICAgICAgICAoV2ViS2l0Ojp0YXJnZXRMaXN0Rm9yRGF0YU9iamVjdCk6CisgICAg
ICAgIChXZWJLaXQ6OmdldENsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
S2l0OjpjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpQ
YXN0ZWJvYXJkSGVscGVyR3RrOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmg6CisKIDIwMDktMTEtMDQgIE1hcnRp
biBSb2JpbnNvbiAgPG1hcnRpbi5qYW1lcy5yb2JpbnNvbkBnbWFpbC5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgSmFuIEFsb256by4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50R3RrLmNwcAppbmRleCA2ZWM2YmFmLi5kZTU4ZDYzIDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAj
aW5jbHVkZSAiRWRpdG9yQ2xpZW50R3RrLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5j
bHVkZSAiRGF0YU9iamVjdEd0ay5oIgogI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiCiAjaW5jbHVk
ZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSA8ZW5jaGFudC5oPgpAQCAtMzUsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyR3RrLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVk
ZSAid2Via2l0cHJpdmF0ZS5oIgpAQCAtMTg1LDM1ICsxODcsMTEgQEAgdm9pZCBFZGl0b3JDbGll
bnQ6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotc3RhdGljIHZvaWQgY2xpcGJvYXJkX2dldF9jb250ZW50c19jYihHdGtDbGlwYm9hcmQqIGNs
aXBib2FyZCwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uX2RhdGEsIGd1aW50IGluZm8sIGdw
b2ludGVyIGRhdGEpCi17Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViS2l0V2ViVmlldyo+KGRhdGEpOwotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
VmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBQYXNz
UmVmUHRyPFJhbmdlPiBzZWxlY3RlZFJhbmdlID0gZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1h
bGl6ZWRSYW5nZSgpOwotCi0gICAgaWYgKHN0YXRpY19jYXN0PGdpbnQ+KGluZm8pID09IFdFQktJ
VF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBj
cmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5nZS5nZXQoKSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5n
ZSk7Ci0gICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uX2RhdGEsIHNlbGVj
dGlvbl9kYXRhLT50YXJnZXQsIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBndWNoYXIqPihtYXJrdXAudXRmOCgpLmRhdGEoKSksIG1hcmt1
cC51dGY4KCkubGVuZ3RoKCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyB0ZXh0ID0g
c2VsZWN0ZWRSYW5nZS0+dGV4dCgpOwotICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0X3Rl
eHQoc2VsZWN0aW9uX2RhdGEsIHRleHQudXRmOCgpLmRhdGEoKSwgdGV4dC51dGY4KCkubGVuZ3Ro
KCkpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgY2xpcGJvYXJkX2NsZWFyX2NvbnRlbnRzX2Ni
KEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBncG9pbnRlciBkYXRhKQotewotICAgIFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcgPSByZWludGVycHJldF9jYXN0PFdlYktpdFdlYlZpZXcqPihkYXRhKTsK
LSAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAgICAvLyBDb2xsYXBzZSB0aGUgc2VsZWN0aW9uIHdpdGhv
dXQgY2xlYXJpbmcgaXQKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldEJhc2UoZnJhbWUtPnNl
bGVjdGlvbigpLT5leHRlbnQoKSwgZnJhbWUtPnNlbGVjdGlvbigpLT5hZmZpbml0eSgpKTsKLX0K
LQogdm9pZCBFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oKQogewogICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gbV93ZWJWaWV3LT5wcml2OwotICAgIEZyYW1l
KiB0YXJnZXRGcmFtZSA9IGNvcmUobV93ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpOworICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlID0gY29yZShtX3dl
YlZpZXcpOworICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IGNvcmVQYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKICAgICBpZiAoIXRhcmdldEZyYW1lKQogICAg
ICAgICByZXR1cm47CkBAIC0yMjEsMTYgKzE5OSwxOSBAQCB2b2lkIEVkaXRvckNsaWVudDo6cmVz
cG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigpCiAgICAgaWYgKHRhcmdldEZyYW1lLT5lZGl0b3IoKS0+
aWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCisj
aWYgUExBVEZPUk0oWDExKQogICAgIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkID0gZ3RrX3dpZGdl
dF9nZXRfY2xpcGJvYXJkKEdUS19XSURHRVQobV93ZWJWaWV3KSwgR0RLX1NFTEVDVElPTl9QUklN
QVJZKTsKKyAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9y
Q2xpcGJvYXJkKGNsaXBib2FyZCk7CisgICAgZGF0YU9iamVjdC0+Y2xlYXIoKTsKKwogICAgIGlm
ICh0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewotICAgICAgICBHdGtUYXJn
ZXRMaXN0KiB0YXJnZXRMaXN0ID0gd2Via2l0X3dlYl92aWV3X2dldF9jb3B5X3RhcmdldF9saXN0
KG1fd2ViVmlldyk7Ci0gICAgICAgIGdpbnQgdGFyZ2V0Q291bnQ7Ci0gICAgICAgIEd0a1Rhcmdl
dEVudHJ5KiB0YXJnZXRzID0gZ3RrX3RhcmdldF90YWJsZV9uZXdfZnJvbV9saXN0KHRhcmdldExp
c3QsICZ0YXJnZXRDb3VudCk7Ci0gICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfb3duZXIo
Y2xpcGJvYXJkLCB0YXJnZXRzLCB0YXJnZXRDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGlwYm9hcmRfZ2V0X2NvbnRlbnRzX2NiLCBjbGlwYm9hcmRfY2xlYXJf
Y29udGVudHNfY2IsIEdfT0JKRUNUKG1fd2ViVmlldykpOwotICAgICAgICBndGtfdGFyZ2V0X3Rh
YmxlX2ZyZWUodGFyZ2V0cywgdGFyZ2V0Q291bnQpOwotICAgIH0gZWxzZSBpZiAoZ3RrX2NsaXBi
b2FyZF9nZXRfb3duZXIoY2xpcGJvYXJkKSA9PSBHX09CSkVDVChtX3dlYlZpZXcpKQotICAgICAg
ICBndGtfY2xpcGJvYXJkX2NsZWFyKGNsaXBib2FyZCk7CisgICAgICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7Cisg
ICAgICAgIGRhdGFPYmplY3QtPnNldFRleHQodGFyZ2V0RnJhbWUtPnNlbGVjdGVkVGV4dCgpKTsK
KyAgICAgICAgZGF0YU9iamVjdC0+c2V0TWFya3VwKGNyZWF0ZU1hcmt1cChyYW5nZS5nZXQoKSwg
MCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSkpOworICAgIH0KKworICAgIHBhc3RlYm9hcmRIZWxw
ZXJJbnN0YW5jZSgpLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKGNsaXBib2FyZCwgY29yZVBhZ2Up
OworI2VuZGlmCiAKICAgICBpZiAoIXRhcmdldEZyYW1lLT5lZGl0b3IoKS0+aGFzQ29tcG9zaXRp
b24oKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
UGFzdGVib2FyZEhlbHBlckd0ay5jcHAKaW5kZXggYzcxZWYxYi4uMTA2YzVkYyAxMDA2NDQKLS0t
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcAorKysg
Yi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3BwCkBAIC0y
MCwxMyArMjAsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJk
SGVscGVyR3RrLmgiCiAKKyNpbmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCisjaW5jbHVkZSAiRm9j
dXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlIDxndGsvZ3RrLmg+
CiAjaW5jbHVkZSAid2Via2l0d2ViZnJhbWUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3Lmgi
CiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03OSw0ICs4
MCw4NCBAQCBnaW50IFBhc3RlYm9hcmRIZWxwZXJHdGs6OmdldFdlYlZpZXdUYXJnZXRJbmZvSHRt
bCgpIGNvbnN0CiAgICAgcmV0dXJuIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MOwog
fQogCitzdGF0aWMgdm9pZCBmaWxsU2VsZWN0aW9uRGF0YShHdGtTZWxlY3Rpb25EYXRhKiBzZWxl
Y3Rpb25EYXRhLCBndWludCBpbmZvLCBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0KQoreworICAg
IGlmIChpbmZvID09IFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhUKQorICAgICAgICBn
dGtfc2VsZWN0aW9uX2RhdGFfc2V0X3RleHQoc2VsZWN0aW9uRGF0YSwgZGF0YU9iamVjdC0+dGV4
dCgpLnV0ZjgoKS5kYXRhKCksIC0xKTsKKworICAgIGVsc2UgaWYgKGluZm8gPT0gV0VCS0lUX1dF
Ql9WSUVXX1RBUkdFVF9JTkZPX0hUTUwpIHsKKyAgICAgICAgZ2NoYXIqIG1hcmt1cCA9IGdfc3Ry
ZHVwKGRhdGFPYmplY3QtPm1hcmt1cCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBndGtfc2Vs
ZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbkRhdGEsIHNlbGVjdGlvbkRhdGEtPnRhcmdldCwgOCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1
Y2hhcio+KG1hcmt1cCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG1h
cmt1cCkpOworICAgICAgICBnX2ZyZWUobWFya3VwKTsKKyAgICB9Cit9CisKK3N0YXRpYyBHdGtU
YXJnZXRMaXN0KiB0YXJnZXRMaXN0Rm9yRGF0YU9iamVjdChEYXRhT2JqZWN0R3RrKiBkYXRhT2Jq
ZWN0KQoreworICAgIEd0a1RhcmdldExpc3QqIGxpc3QgPSBndGtfdGFyZ2V0X2xpc3RfbmV3KE5V
TEwsIDApOworCisgICAgaWYgKGRhdGFPYmplY3QtPmhhc1RleHQoKSkKKyAgICAgICAgZ3RrX3Rh
cmdldF9saXN0X2FkZF90ZXh0X3RhcmdldHMobGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9J
TkZPX1RFWFQpOworCisgICAgaWYgKGRhdGFPYmplY3QtPmhhc01hcmt1cCgpKQorICAgICAgICBn
dGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QsIGdka01hcmt1cEF0b20sIDAsIFdFQktJVF9XRUJfVklF
V19UQVJHRVRfSU5GT19IVE1MKTsKKworICAgIHJldHVybiBsaXN0OworIH0KKworc3RhdGljIGJv
b2wgc2V0dGluZ0NsaXBib2FyZCA9IGZhbHNlOworc3RhdGljIHZvaWQgZ2V0Q2xpcGJvYXJkQ29u
dGVudHNDYWxsYmFjayhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgR3RrU2VsZWN0aW9uRGF0YSAq
c2VsZWN0aW9uRGF0YSwgZ3VpbnQgaW5mbywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBEYXRhT2Jq
ZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2Fy
ZCk7CisgICAgQVNTRVJUKGRhdGFPYmplY3QpOworICAgIGZpbGxTZWxlY3Rpb25EYXRhKHNlbGVj
dGlvbkRhdGEsIGluZm8sIGRhdGFPYmplY3QpOworfQorCitzdGF0aWMgdm9pZCBjbGVhckNsaXBi
b2FyZENvbnRlbnRzQ2FsbGJhY2soR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGdwb2ludGVyIGRh
dGEpCit7CisgICAgLy8gR1RLIHdpbGwgY2FsbCB0aGUgY2xlYXIgY2xpcGJvYXJkIGNhbGxiYWNr
IHdoaWxlIHNldHRpbmcgY2xpcGJvYXJkIGRhdGEuCisgICAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkg
d2FudCB0byBjbGVhciB0aGUgRGF0YU9iamVjdCBkdXJpbmcgdGhhdCB0aW1lLgorICAgIGlmIChz
ZXR0aW5nQ2xpcGJvYXJkKQorICAgICAgICByZXR1cm47CisKKyAgICBEYXRhT2JqZWN0R3RrKiBk
YXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7CisgICAg
QVNTRVJUKGRhdGFPYmplY3QpOworCisgICAgZGF0YU9iamVjdC0+Y2xlYXIoKTsKKyAgICBpZiAo
ZGF0YSkgeworICAgICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6UGFnZSo+KGRhdGEpOworICAgICAgICBGcmFtZSogZnJhbWUgPSBjb3JlUGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworCisgICAgICAgIC8v
IENvbGxhcHNlIHRoZSBzZWxlY3Rpb24gd2l0aG91dCBjbGVhcmluZyBpdAorICAgICAgICBBU1NF
UlQoZnJhbWUpOworICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldEJhc2UoZnJhbWUtPnNl
bGVjdGlvbigpLT5leHRlbnQoKSwgZnJhbWUtPnNlbGVjdGlvbigpLT5hZmZpbml0eSgpKTsKKyAg
ICB9Cit9CisKK3ZvaWQgUGFzdGVib2FyZEhlbHBlckd0azo6d3JpdGVDbGlwYm9hcmRDb250ZW50
cyhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBEYXRhT2Jq
ZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2Fy
ZCk7CisgICAgR3RrVGFyZ2V0TGlzdCogbGlzdCA9IHRhcmdldExpc3RGb3JEYXRhT2JqZWN0KGRh
dGFPYmplY3QpOworCisgICAgaW50IG51bWJlck9mVGFyZ2V0czsKKyAgICBHdGtUYXJnZXRFbnRy
eSogdGFibGUgPSBndGtfdGFyZ2V0X3RhYmxlX25ld19mcm9tX2xpc3QobGlzdCwgJm51bWJlck9m
VGFyZ2V0cyk7CisKKyAgICBpZiAobnVtYmVyT2ZUYXJnZXRzID4gMCAmJiB0YWJsZSkgeworICAg
ICAgICBzZXR0aW5nQ2xpcGJvYXJkID0gdHJ1ZTsKKyAgICAgICAgZ3RrX2NsaXBib2FyZF9zZXRf
d2l0aF9kYXRhKGNsaXBib2FyZCwgdGFibGUsIG51bWJlck9mVGFyZ2V0cywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdldENsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckNsaXBib2FyZENvbnRlbnRz
Q2FsbGJhY2ssIGRhdGEpOworICAgICAgICBzZXR0aW5nQ2xpcGJvYXJkID0gZmFsc2U7CisKKyAg
ICB9IGVsc2UKKyAgICAgICAgZ3RrX2NsaXBib2FyZF9jbGVhcihjbGlwYm9hcmQpOworCisgICAg
aWYgKHRhYmxlKQorICAgICAgICBndGtfdGFyZ2V0X3RhYmxlX2ZyZWUodGFibGUsIG51bWJlck9m
VGFyZ2V0cyk7CisKKyAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYobGlzdCk7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5o
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmgKaW5kZXgg
MTJiYTIwNy4uZmE5ZDFiYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Q
YXN0ZWJvYXJkSGVscGVyR3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0
ZWJvYXJkSGVscGVyR3RrLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
R3RrVGFyZ2V0TGlzdCogdGFyZ2V0TGlzdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgZ2ludCBnZXRX
ZWJWaWV3VGFyZ2V0SW5mb0h0bWwoKSBjb25zdDsKIAorICAgIHZvaWQgd3JpdGVDbGlwYm9hcmRD
b250ZW50cyhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgZ3BvaW50ZXIgZGF0YT0wKTsKKwogcHJp
dmF0ZToKICAgICBHdGtUYXJnZXRMaXN0KiBtX3RhcmdldExpc3Q7CiB9OwotLSAKMS42LjAuNAoK
</data>
<flag name="review"
          id="24159"
          type_id="1"
          status="-"
          setter="zecke"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42703</attachid>
            <date>2009-11-07 13:43:01 -0800</date>
            <delta_ts>2009-12-16 07:15:54 -0800</delta_ts>
            <desc>Add DataObjectGtk and use it for GDK_SELECTION_PRIMARY (rev2)</desc>
            <filename>0001-Add-DataObjectGtk-a-container-for-pasteboard-and-dra.patch</filename>
            <type>text/plain</type>
            <size>18403</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA1YzdjOGU5YmY5MzNkNzg4Y2Q1MzY2YzRlMDY5ZDYwMDhjNzFmMThiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1hcnRpbi5qYW1lcy5yb2JpbnNv
bkBnbWFpbC5jb20+CkRhdGU6IFNhdCwgNyBOb3YgMjAwOSAxMzozNTo1NCAtMDgwMApTdWJqZWN0
OiBbUEFUQ0hdIEFkZCBEYXRhT2JqZWN0R3RrLCBhIGNvbnRhaW5lciBmb3IgcGFzdGVib2FyZCBh
bmQgZHJhZy1hbmQtZHJvcCBkYXRhLiBVc2UgRGF0YU9iamVjdEd0ayB3aGVuIHNldHRpbmcgYW5k
IGNsZWFyIHNlbGVjdGlvbiBjbGlwYm9hcmQgZGF0YS4KCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDAgKysrKysrCiBXZWJDb3JlL0dO
VW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJDb3Jl
L3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcCAgICAgICAgICAgIHwgIDEzNSArKysrKysr
KysrKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaCAgICAg
ICAgICAgICAgfCAgIDgxICsrKysrKysrKysrKwogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKysrCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5jcHAgICAgIHwgICA0OSArKystLS0tLQogV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcCB8ICAgODQgKysrKysrKysrKysr
Ky0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oICAgfCAg
ICAyICsKIDggZmlsZXMgY2hhbmdlZCwgMzc3IGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsu
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0
ay5oCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA3OWJmODhlLi4xNWEzNDZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDA5LTExLTA3ICBNYXJ0aW4g
Um9iaW5zb24gIDxtYXJ0aW4uamFtZXMucm9iaW5zb25AZ21haWwuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEVuYWJsZSBET00gY2xp
cGJvYXJkIGFuZCBkcmFnLWFuZC1kcm9wIGFjY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA2MjMKKworICAgICAgICBBZGQgRGF0YU9iamVjdEd0
aywgYSBjb250YWluZXIgZm9yIHBhc3RlYm9hcmQgYW5kIGRyYWctYW5kLWRyb3AgZGF0YS4KKwor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EYXRhT2Jq
ZWN0R3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpEYXRh
T2JqZWN0R3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6On5EYXRhT2JqZWN0
R3RrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmZpbGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2Jq
ZWN0R3RrOjp1cmxMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpoYXNV
UkwpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0RHJhZ0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YU9iamVjdEd0azo6Y2xlYXJJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
T2JqZWN0R3RrOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpmb3JD
bGlwYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFPYmplY3RHdGs6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVj
dEd0azo6bWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnVyaUxpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6aW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YU9iamVjdEd0azo6c2V0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2Jq
ZWN0R3RrOjpzZXRNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0
VVJJTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpoYXNUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6Omhhc01hcmt1cCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhT2JqZWN0R3RrOjpoYXNVUklMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFP
YmplY3RHdGs6Omhhc0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmNs
ZWFyVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpjbGVhck1hcmt1cCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpjbGVhclVSSUxpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6ZHJhZ0NvbnRleHQpOgorCiAyMDA5LTExLTA3ICBK
b2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0g
Yi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGNiMWMzN2UuLmU1YjY5MDAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpA
QCAtMTk1Myw2ICsxOTUzLDggQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0
ay9DdXJzb3JHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuaCBcCisJ
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oIFwKKwlXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EYXRhT2JqZWN0R3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFH
dGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0
YU9iamVjdEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQwNzVj
ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsu
Y3BwCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCBNYXJ0aW4g
Um9iaW5zb24KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+
CisjaW5jbHVkZSA8d3RmL0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworCitEYXRhT2JqZWN0R3RrOjpEYXRhT2JqZWN0R3Rr
KCkKK3sKKworfQorCitEYXRhT2JqZWN0R3RrOjp+RGF0YU9iamVjdEd0aygpCit7CisgICAgaWYg
KG1faW1hZ2UpCisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1faW1hZ2UpOworICAgIGlmIChtX2Ry
YWdDb250ZXh0KQorICAgICAgICBnX29iamVjdF91bnJlZihtX2RyYWdDb250ZXh0KTsKK30KKwor
VmVjdG9yPFN0cmluZz4gRGF0YU9iamVjdEd0azo6ZmlsZXMoKQoreworICAgIFZlY3RvcjxLVVJM
PiB1cmlzKHVyaUxpc3QoKSk7CisgICAgVmVjdG9yPFN0cmluZz4gZmlsZXM7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHVyaXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgS1VSTCYgdXJp
ID0gdXJpc1swXTsKKyAgICAgICAgaWYgKCF1cmkuaXNWYWxpZCgpIHx8ICF1cmkuaXNMb2NhbEZp
bGUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGZpbGVzLmFwcGVuZCh1cmku
c3RyaW5nKCkpOworICAgIH0KKworICAgIHJldHVybiBmaWxlczsKK30KKworU3RyaW5nIERhdGFP
YmplY3RHdGs6OnVybCgpCit7CisgICAgVmVjdG9yPEtVUkw+IHVyaXModXJpTGlzdCgpKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVyaXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgS1VS
TCYgdXJpID0gdXJpc1swXTsKKyAgICAgICAgaWYgKHVyaS5pc1ZhbGlkKCkpCisgICAgICAgICAg
ICByZXR1cm4gdXJpOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5n
IERhdGFPYmplY3RHdGs6OnVybExhYmVsKCkKK3sKKyAgICBpZiAoaGFzVGV4dCgpKQorICAgICAg
ICByZXR1cm4gdGV4dCgpOworICAgIGVsc2UgaWYgKGhhc1VSTCgpKQorICAgICAgICByZXR1cm4g
dXJsKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jvb2wgRGF0
YU9iamVjdEd0azo6aGFzVVJMKCkKK3sKKyAgICByZXR1cm4gIXVybCgpLmlzRW1wdHkoKTsKK30K
Kwordm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRJbWFnZShHZGtQaXhidWYqIG5ld0ltYWdlKQorewor
ICAgIGlmIChtX2ltYWdlKQorICAgICAgICBnX29iamVjdF91bnJlZihtX2ltYWdlKTsKKworICAg
IGlmIChuZXdJbWFnZSkKKyAgICAgICAgZ19vYmplY3RfcmVmKG5ld0ltYWdlKTsKKworICAgIG1f
aW1hZ2UgPSBuZXdJbWFnZTsKK30KKwordm9pZCBEYXRhT2JqZWN0R3RrOjpzZXREcmFnQ29udGV4
dChHZGtEcmFnQ29udGV4dCogbmV3RHJhZ0NvbnRleHQpCit7CisgICAgaWYgKG1fZHJhZ0NvbnRl
eHQpCisgICAgICAgIGdfb2JqZWN0X3VucmVmKG1fZHJhZ0NvbnRleHQpOworCisgICAgaWYgKG5l
d0RyYWdDb250ZXh0KQorICAgICAgICBnX29iamVjdF9yZWYobmV3RHJhZ0NvbnRleHQpOworCisg
ICAgbV9kcmFnQ29udGV4dCA9IG5ld0RyYWdDb250ZXh0OworfQorCit2b2lkIERhdGFPYmplY3RH
dGs6OmNsZWFySW1hZ2UoKQoreworICAgIHNldEltYWdlKDApOworfQorCit2b2lkIERhdGFPYmpl
Y3RHdGs6OmNsZWFyKCkKK3sKKyAgICBjbGVhclRleHQoKTsKKyAgICBjbGVhck1hcmt1cCgpOwor
ICAgIGNsZWFyVVJJTGlzdCgpOworICAgIGNsZWFySW1hZ2UoKTsKK30KKworLypzdGF0aWMqLwor
RGF0YU9iamVjdEd0ayogRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKEd0a0NsaXBib2FyZCog
Y2xpcGJvYXJkKQoreworICAgIHN0YXRpYyBIYXNoTWFwPEd0a0NsaXBib2FyZCosIFJlZlB0cjxE
YXRhT2JqZWN0R3RrPiA+IG9iamVjdE1hcDsKKworICAgIGlmICghb2JqZWN0TWFwLmNvbnRhaW5z
KGNsaXBib2FyZCkpIHsKKyAgICAgICAgUmVmUHRyPERhdGFPYmplY3RHdGs+IGRhdGFPYmplY3Qg
PSBEYXRhT2JqZWN0R3RrOjpjcmVhdGUoKTsKKyAgICAgICAgb2JqZWN0TWFwLnNldChjbGlwYm9h
cmQsIGRhdGFPYmplY3QpOworICAgICAgICByZXR1cm4gZGF0YU9iamVjdC5nZXQoKTsKKyAgICB9
CisKKyAgICBIYXNoTWFwPEd0a0NsaXBib2FyZCosIFJlZlB0cjxEYXRhT2JqZWN0R3RrPiA+Ojpp
dGVyYXRvciBpdCA9IG9iamVjdE1hcC5maW5kKGNsaXBib2FyZCk7CisgICAgcmV0dXJuIGl0LT5z
ZWNvbmQuZ2V0KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Rh
dGFPYmplY3RHdGsuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTRjNDY5Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oCkBAIC0wLDAgKzEsODEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIE1hcnRpbiBSb2JpbnNvbgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKi8KKworI2lmbmRlZiBEYXRhT2JqZWN0R3RrX2gKKyNkZWZpbmUgRGF0
YU9iamVjdEd0a19oCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRmlsZUxpc3Qu
aCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgorCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRGF0YU9iamVjdEd0ayA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFP
YmplY3RHdGs+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3Rr
PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhT2JqZWN0
R3RrKCkpOworICAgIH0KKworICAgIH5EYXRhT2JqZWN0R3RrKCk7CisKKyAgICBTdHJpbmcgdGV4
dCgpIHsgcmV0dXJuIG1fdGV4dDsgfQorICAgIFN0cmluZyBtYXJrdXAoKSB7IHJldHVybiBtX21h
cmt1cDsgfQorICAgIFZlY3RvcjxLVVJMPiB1cmlMaXN0KCkgeyByZXR1cm4gbV91cmlMaXN0OyB9
CisgICAgR2RrUGl4YnVmKiBpbWFnZSgpIHsgcmV0dXJuIG1faW1hZ2U7IH0KKyAgICB2b2lkIHNl
dFRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0KSB7IG1fdGV4dCA9IG5ld1RleHQ7IH0KKyAgICB2
b2lkIHNldE1hcmt1cChjb25zdCBTdHJpbmcmIG5ld01hcmt1cCkgeyBtX21hcmt1cCA9IG5ld01h
cmt1cDsgfQorICAgIHZvaWQgc2V0VVJJTGlzdChjb25zdCBWZWN0b3I8S1VSTD4mIG5ld1VSSUxp
c3QpIHsgIG1fdXJpTGlzdCA9IG5ld1VSSUxpc3Q7IH0KKyAgICBib29sIGhhc1RleHQoKSB7IHJl
dHVybiAhbV90ZXh0LmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaGFzTWFya3VwKCkgeyByZXR1cm4g
IW1fbWFya3VwLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaGFzVVJJTGlzdCgpIHsgcmV0dXJuICFt
X3VyaUxpc3QuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNJbWFnZSgpIHsgcmV0dXJuIG1faW1h
Z2U7IH0KKyAgICB2b2lkIGNsZWFyVGV4dCgpIHsgbV90ZXh0ID0gIiI7IH0KKyAgICB2b2lkIGNs
ZWFyTWFya3VwKCkgeyBtX21hcmt1cCA9ICIiOyB9CisgICAgdm9pZCBjbGVhclVSSUxpc3QoKSB7
IG1fdXJpTGlzdC5jbGVhcigpOyB9CisgICAgR2RrRHJhZ0NvbnRleHQqIGRyYWdDb250ZXh0KCkg
eyByZXR1cm4gbV9kcmFnQ29udGV4dDsgfQorCisgICAgdm9pZCBzZXRJbWFnZShHZGtQaXhidWYq
KTsKKyAgICB2b2lkIHNldERyYWdDb250ZXh0KEdka0RyYWdDb250ZXh0Kik7CisgICAgVmVjdG9y
PFN0cmluZz4gZmlsZXMoKTsKKyAgICBib29sIGhhc1VSTCgpOworICAgIFN0cmluZyB1cmwoKTsK
KyAgICBTdHJpbmcgdXJsTGFiZWwoKTsKKworICAgIHZvaWQgY2xlYXJJbWFnZSgpOworICAgIHZv
aWQgY2xlYXIoKTsKKworICAgIHN0YXRpYyBEYXRhT2JqZWN0R3RrKiBmb3JDbGlwYm9hcmQoR3Rr
Q2xpcGJvYXJkKik7CisKK3ByaXZhdGU6CisgICAgRGF0YU9iamVjdEd0aygpOworCisgICAgU3Ry
aW5nIG1fdGV4dDsKKyAgICBTdHJpbmcgbV9tYXJrdXA7CisgICAgVmVjdG9yPEtVUkw+IG1fdXJp
TGlzdDsKKyAgICBHZGtQaXhidWYqIG1faW1hZ2U7CisgICAgR2RrRHJhZ0NvbnRleHQqIG1fZHJh
Z0NvbnRleHQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBEYXRhT2JqZWN0R3RrX2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMTRk
Y2ZjNS4uNTRjMmQ5NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAwOS0xMS0wNyAgTWFydGluIFJv
Ymluc29uICA8bWFydGluLmphbWVzLnJvYmluc29uQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFbmFibGUgRE9NIGNsaXBi
b2FyZCBhbmQgZHJhZy1hbmQtZHJvcCBhY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNjIzCisKKyAgICAgICAgIFVzZSBEYXRhT2JqZWN0R3Rr
IHdoZW4gc2V0dGluZyBhbmQgY2xlYXJpbmcgcGFzdGVib2FyZCBkYXRhIG9uCisgICAgICAgICB0
aGUgR0RLX1NFTEVDVElPTl9QUklNQVJZIGNsaXBib2FyZC4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVu
dDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
UGFzdGVib2FyZEhlbHBlckd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZpbGxTZWxlY3Rpb25E
YXRhKToKKyAgICAgICAgKFdlYktpdDo6dGFyZ2V0TGlzdEZvckRhdGFPYmplY3QpOgorICAgICAg
ICAoV2ViS2l0OjpnZXRDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktp
dDo6Y2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6UGFz
dGVib2FyZEhlbHBlckd0azo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oOgorCiAyMDA5LTExLTA0ICBNYXJ0aW4g
Um9iaW5zb24gIDxtYXJ0aW4uamFtZXMucm9iaW5zb25AZ21haWwuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEphbiBBbG9uem8uCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEd0ay5jcHAKaW5kZXggNmVjNmJhZi4uZGU1OGQ2MyAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2lu
Y2x1ZGUgIkVkaXRvckNsaWVudEd0ay5oIgogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1
ZGUgIkRhdGFPYmplY3RHdGsuaCIKICNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIgogI2luY2x1ZGUg
IkVkaXRvci5oIgogI2luY2x1ZGUgPGVuY2hhbnQuaD4KQEAgLTM1LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlckd0ay5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUg
IndlYmtpdHByaXZhdGUuaCIKQEAgLTE4NSwzNSArMTg3LDExIEBAIHZvaWQgRWRpdG9yQ2xpZW50
OjpyZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXN0YXRpYyB2b2lkIGNsaXBib2FyZF9nZXRfY29udGVudHNfY2IoR3RrQ2xpcGJvYXJkKiBjbGlw
Ym9hcmQsIEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbl9kYXRhLCBndWludCBpbmZvLCBncG9p
bnRlciBkYXRhKQotewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSByZWludGVycHJldF9j
YXN0PFdlYktpdFdlYlZpZXcqPihkYXRhKTsKLSAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZp
ZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxp
emVkUmFuZ2UoKTsKLQotICAgIGlmIChzdGF0aWNfY2FzdDxnaW50PihpbmZvKSA9PSBXRUJLSVRf
V0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gY3Jl
YXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UuZ2V0KCksIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2Up
OwotICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbl9kYXRhLCBzZWxlY3Rp
b25fZGF0YS0+dGFyZ2V0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4obWFya3VwLnV0ZjgoKS5kYXRhKCkpLCBtYXJrdXAu
dXRmOCgpLmxlbmd0aCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgdGV4dCA9IHNl
bGVjdGVkUmFuZ2UtPnRleHQoKTsKLSAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldF90ZXh0
KHNlbGVjdGlvbl9kYXRhLCB0ZXh0LnV0ZjgoKS5kYXRhKCksIHRleHQudXRmOCgpLmxlbmd0aCgp
KTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGNsaXBib2FyZF9jbGVhcl9jb250ZW50c19jYihH
dGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgZ3BvaW50ZXIgZGF0YSkKLXsKLSAgICBXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3ID0gcmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3Kj4oZGF0YSk7Ci0g
ICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwotCi0gICAgLy8gQ29sbGFwc2UgdGhlIHNlbGVjdGlvbiB3aXRob3V0
IGNsZWFyaW5nIGl0Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRCYXNlKGZyYW1lLT5zZWxl
Y3Rpb24oKS0+ZXh0ZW50KCksIGZyYW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKSk7Ci19Ci0K
IHZvaWQgRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKCkKIHsKICAgICBX
ZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1fd2ViVmlldy0+cHJpdjsKLSAgICBGcmFtZSog
dGFyZ2V0RnJhbWUgPSBjb3JlKG1fd2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKKyAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSA9IGNvcmUobV93ZWJW
aWV3KTsKKyAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBjb3JlUGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCiAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjIxLDE2ICsxOTksMTkgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OnJlc3Bv
bmRUb0NoYW5nZWRTZWxlY3Rpb24oKQogICAgIGlmICh0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmln
bm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybjsKIAorI2lm
IFBMQVRGT1JNKFgxMSkKICAgICBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCA9IGd0a193aWRnZXRf
Z2V0X2NsaXBib2FyZChHVEtfV0lER0VUKG1fd2ViVmlldyksIEdES19TRUxFQ1RJT05fUFJJTUFS
WSk7CisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IERhdGFPYmplY3RHdGs6OmZvckNs
aXBib2FyZChjbGlwYm9hcmQpOworICAgIGRhdGFPYmplY3QtPmNsZWFyKCk7CisKICAgICBpZiAo
dGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5pc1JhbmdlKCkpIHsKLSAgICAgICAgR3RrVGFyZ2V0
TGlzdCogdGFyZ2V0TGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfY29weV90YXJnZXRfbGlzdCht
X3dlYlZpZXcpOwotICAgICAgICBnaW50IHRhcmdldENvdW50OwotICAgICAgICBHdGtUYXJnZXRF
bnRyeSogdGFyZ2V0cyA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdCh0YXJnZXRMaXN0
LCAmdGFyZ2V0Q291bnQpOwotICAgICAgICBndGtfY2xpcGJvYXJkX3NldF93aXRoX293bmVyKGNs
aXBib2FyZCwgdGFyZ2V0cywgdGFyZ2V0Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xpcGJvYXJkX2dldF9jb250ZW50c19jYiwgY2xpcGJvYXJkX2NsZWFyX2Nv
bnRlbnRzX2NiLCBHX09CSkVDVChtX3dlYlZpZXcpKTsKLSAgICAgICAgZ3RrX3RhcmdldF90YWJs
ZV9mcmVlKHRhcmdldHMsIHRhcmdldENvdW50KTsKLSAgICB9IGVsc2UgaWYgKGd0a19jbGlwYm9h
cmRfZ2V0X293bmVyKGNsaXBib2FyZCkgPT0gR19PQkpFQ1QobV93ZWJWaWV3KSkKLSAgICAgICAg
Z3RrX2NsaXBib2FyZF9jbGVhcihjbGlwYm9hcmQpOworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJh
bmdlID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOworICAg
ICAgICBkYXRhT2JqZWN0LT5zZXRUZXh0KHRhcmdldEZyYW1lLT5zZWxlY3RlZFRleHQoKSk7Cisg
ICAgICAgIGRhdGFPYmplY3QtPnNldE1hcmt1cChjcmVhdGVNYXJrdXAocmFuZ2UuZ2V0KCksIDAs
IEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpKTsKKyAgICB9CisKKyAgICBwYXN0ZWJvYXJkSGVscGVy
SW5zdGFuY2UoKS0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhjbGlwYm9hcmQsIGNvcmVQYWdlKTsK
KyNlbmRpZgogCiAgICAgaWYgKCF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9u
KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bh
c3RlYm9hcmRIZWxwZXJHdGsuY3BwCmluZGV4IGM3MWVmMWIuLmFmODRkOTcgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAKKysrIGIv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcApAQCAtMjAs
MTMgKzIwLDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEhl
bHBlckd0ay5oIgogCisjaW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgorI2luY2x1ZGUgIkZvY3Vz
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgog
I2luY2x1ZGUgIndlYmtpdHdlYmZyYW1lLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgog
I2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKIAotI2luY2x1ZGUgPGd0ay9ndGsuaD4KLQogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzksNCArODAs
ODMgQEAgZ2ludCBQYXN0ZWJvYXJkSGVscGVyR3RrOjpnZXRXZWJWaWV3VGFyZ2V0SW5mb0h0bWwo
KSBjb25zdAogICAgIHJldHVybiBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDsKIH0K
IAorc3RhdGljIHZvaWQgZmlsbFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0
aW9uRGF0YSwgZ3VpbnQgaW5mbywgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCkKK3sKKyAgICBp
ZiAoaW5mbyA9PSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCkKKyAgICAgICAgZ3Rr
X3NlbGVjdGlvbl9kYXRhX3NldF90ZXh0KHNlbGVjdGlvbkRhdGEsIGRhdGFPYmplY3QtPnRleHQo
KS51dGY4KCkuZGF0YSgpLCAtMSk7CisKKyAgICBlbHNlIGlmIChpbmZvID09IFdFQktJVF9XRUJf
VklFV19UQVJHRVRfSU5GT19IVE1MKSB7CisgICAgICAgIEdPd25QdHI8Z2NoYXI+IG1hcmt1cChn
X3N0cmR1cChkYXRhT2JqZWN0LT5tYXJrdXAoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIGd0
a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uRGF0YSwgc2VsZWN0aW9uRGF0YS0+dGFyZ2V0
LCA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4obWFya3VwLmdldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJsZW4obWFya3VwLmdldCgpKSk7CisgICAgfQorfQorCitzdGF0aWMgR3RrVGFyZ2V0TGlz
dCogdGFyZ2V0TGlzdEZvckRhdGFPYmplY3QoRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCkKK3sK
KyAgICBHdGtUYXJnZXRMaXN0KiBsaXN0ID0gZ3RrX3RhcmdldF9saXN0X25ldyhOVUxMLCAwKTsK
KworICAgIGlmIChkYXRhT2JqZWN0LT5oYXNUZXh0KCkpCisgICAgICAgIGd0a190YXJnZXRfbGlz
dF9hZGRfdGV4dF90YXJnZXRzKGxpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhU
KTsKKworICAgIGlmIChkYXRhT2JqZWN0LT5oYXNNYXJrdXAoKSkKKyAgICAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LCBnZGtNYXJrdXBBdG9tLCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VU
X0lORk9fSFRNTCk7CisKKyAgICByZXR1cm4gbGlzdDsKKyB9CisKK3N0YXRpYyBib29sIHNldHRp
bmdDbGlwYm9hcmQgPSBmYWxzZTsKK3N0YXRpYyB2b2lkIGdldENsaXBib2FyZENvbnRlbnRzQ2Fs
bGJhY2soR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEd0a1NlbGVjdGlvbkRhdGEgKnNlbGVjdGlv
bkRhdGEsIGd1aW50IGluZm8sIGdwb2ludGVyIGRhdGEpCit7CisgICAgRGF0YU9iamVjdEd0ayog
ZGF0YU9iamVjdCA9IERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAg
IEFTU0VSVChkYXRhT2JqZWN0KTsKKyAgICBmaWxsU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRh
LCBpbmZvLCBkYXRhT2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgY2xlYXJDbGlwYm9hcmRDb250
ZW50c0NhbGxiYWNrKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBncG9pbnRlciBkYXRhKQorewor
ICAgIC8vIEdUSyB3aWxsIGNhbGwgdGhlIGNsZWFyIGNsaXBib2FyZCBjYWxsYmFjayB3aGlsZSBz
ZXR0aW5nIGNsaXBib2FyZCBkYXRhLgorICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8g
Y2xlYXIgdGhlIERhdGFPYmplY3QgZHVyaW5nIHRoYXQgdGltZS4KKyAgICBpZiAoc2V0dGluZ0Ns
aXBib2FyZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVj
dCA9IERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAgIEFTU0VSVChk
YXRhT2JqZWN0KTsKKworICAgIGRhdGFPYmplY3QtPmNsZWFyKCk7CisgICAgaWYgKGRhdGEpIHsK
KyAgICAgICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2UgPSByZWludGVycHJldF9jYXN0PFdlYkNv
cmU6OlBhZ2UqPihkYXRhKTsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gY29yZVBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKworICAgICAgICAvLyBDb2xsYXBz
ZSB0aGUgc2VsZWN0aW9uIHdpdGhvdXQgY2xlYXJpbmcgaXQKKyAgICAgICAgQVNTRVJUKGZyYW1l
KTsKKyAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRCYXNlKGZyYW1lLT5zZWxlY3Rpb24o
KS0+ZXh0ZW50KCksIGZyYW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKSk7CisgICAgfQorfQor
Cit2b2lkIFBhc3RlYm9hcmRIZWxwZXJHdGs6OndyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xp
cGJvYXJkKiBjbGlwYm9hcmQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRGF0YU9iamVjdEd0ayog
ZGF0YU9iamVjdCA9IERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAg
IEd0a1RhcmdldExpc3QqIGxpc3QgPSB0YXJnZXRMaXN0Rm9yRGF0YU9iamVjdChkYXRhT2JqZWN0
KTsKKworICAgIGludCBudW1iZXJPZlRhcmdldHM7CisgICAgR3RrVGFyZ2V0RW50cnkqIHRhYmxl
ID0gZ3RrX3RhcmdldF90YWJsZV9uZXdfZnJvbV9saXN0KGxpc3QsICZudW1iZXJPZlRhcmdldHMp
OworCisgICAgaWYgKG51bWJlck9mVGFyZ2V0cyA+IDAgJiYgdGFibGUpIHsKKyAgICAgICAgc2V0
dGluZ0NsaXBib2FyZCA9IHRydWU7CisgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0
YShjbGlwYm9hcmQsIHRhYmxlLCBudW1iZXJPZlRhcmdldHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZXRDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNr
LCBkYXRhKTsKKyAgICAgICAgc2V0dGluZ0NsaXBib2FyZCA9IGZhbHNlOworCisgICAgfSBlbHNl
CisgICAgICAgIGd0a19jbGlwYm9hcmRfY2xlYXIoY2xpcGJvYXJkKTsKKworICAgIGlmICh0YWJs
ZSkKKyAgICAgICAgZ3RrX3RhcmdldF90YWJsZV9mcmVlKHRhYmxlLCBudW1iZXJPZlRhcmdldHMp
OworCisgICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKGxpc3QpOworfQorCiB9CmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuaCBiL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oCmluZGV4IDEyYmEyMDcu
LmZhOWQxYmMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2Fy
ZEhlbHBlckd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhl
bHBlckd0ay5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEd0a1Rhcmdl
dExpc3QqIHRhcmdldExpc3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIGdpbnQgZ2V0V2ViVmlld1Rh
cmdldEluZm9IdG1sKCkgY29uc3Q7CiAKKyAgICB2b2lkIHdyaXRlQ2xpcGJvYXJkQ29udGVudHMo
R3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGdwb2ludGVyIGRhdGE9MCk7CisKIHByaXZhdGU6CiAg
ICAgR3RrVGFyZ2V0TGlzdCogbV90YXJnZXRMaXN0OwogfTsKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="24264"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44975</attachid>
            <date>2009-12-16 07:15:54 -0800</date>
            <delta_ts>2010-01-13 00:59:24 -0800</delta_ts>
            <desc>Add DataObjectGtk and use it for GDK_SELECTION_PRIMARY (rev3)</desc>
            <filename>0001-Add-DataObjectGtk-a-container-for-pasteboard-and-dr.patch</filename>
            <type>text/plain</type>
            <size>18179</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSAwN2ZlNmI5MGNiNmE1YzIzNWYwZmFlMzNiYmNjM2MxYzVlY2MxOGYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1hcnRpbi5qYW1lcy5yb2JpbnNv
bkBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTYgRGVjIDIwMDkgMTY6MDk6NTQgKzAxMDAKU3ViamVj
dDogW1BBVENIXSBBZGQgRGF0YU9iamVjdEd0aywgYSBjb250YWluZXIgZm9yIHBhc3RlYm9hcmQg
YW5kIGRyYWctYW5kLWRyb3AgZGF0YS4gVXNlIERhdGFPYmplY3RHdGsgd2hlbiBzZXR0aW5nIGFu
ZCBjbGVhciBzZWxlY3Rpb24gY2xpcGJvYXJkIGRhdGEuCgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQyICsrKysrKysrCiBXZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJD
b3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcCAgICAgICAgICAgIHwgIDEwOSArKysr
KysrKysrKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaCAg
ICAgICAgICAgICAgfCAgIDgxICsrKysrKysrKysrKysrKwogV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKysrKwogV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwICAgICB8ICAgNDkgKysrLS0tLS0tLQogV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcCB8ICAgODQgKysr
KysrKysrKysrKysrKy0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBl
ckd0ay5oICAgfCAgICAyICsKIDggZmlsZXMgY2hhbmdlZCwgMzUzIGluc2VydGlvbnMoKyksIDM2
IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0Rh
dGFPYmplY3RHdGsuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RGF0YU9iamVjdEd0ay5oCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA0NTFlMTRlLi43YWZiODU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDQ4IEBACiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgW0dUS10gRW5hYmxlIERP
TSBjbGlwYm9hcmQgYW5kIGRyYWctYW5kLWRyb3AgYWNjZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDYyMworCisgICAgICAgIEFkZCBEYXRhT2Jq
ZWN0R3RrLCBhIGNvbnRhaW5lciBmb3IgcGFzdGVib2FyZCBhbmQgZHJhZy1hbmQtZHJvcCBkYXRh
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogR05VbWFrZWZp
bGUuYW06CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OkRhdGFPYmplY3RHdGspOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6fkRhdGFPYmplY3RHdGspOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YU9iamVjdEd0azo6ZmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVj
dEd0azo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnVybExhYmVsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6Omhhc1VSTCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhT2JqZWN0R3RrOjpjbGVhckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFP
YmplY3RHdGs6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmZvckNs
aXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YU9iamVjdEd0azo6dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0
R3RrOjptYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6dXJpTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjppbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhT2JqZWN0R3RrOjpzZXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmpl
Y3RHdGs6OnNldE1hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpzZXRV
UklMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnNldEltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnNldERyYWdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6Omhhc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YU9iamVjdEd0azo6aGFzTWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6
Omhhc1VSSUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6aGFzSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6Y2xlYXJUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmNsZWFyTWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFPYmplY3RHdGs6OmNsZWFyVVJJTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2Jq
ZWN0R3RrOjpkcmFnQ29udGV4dCk6CisKKzIwMDktMTItMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1h
cnRpbi5qYW1lcy5yb2JpbnNvbkBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKICAgICAgICAgW0dUS10gV2ViS2l0IEdUSyBuZWVkcyBhIHdyYXBwZXIg
Zm9yIHJlZiBjb3VudGVkIGdsaWIvZ29iamVjdCBzdHJ1Y3RzCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5OQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAyMTMyOWU0Li44
MmJhMjU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KQEAgLTE5NzUsNiArMTk3NSw4IEBAIHdlYmNvcmVndGtfc291cmNlcyAr
PSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
Q3Vyc29yR3RrLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaCBcCisJ
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZv
cm0vZ3RrL0RyYWdEYXRhR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdl
R3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXZlbnRMb29wR3RrLmNwcCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmVlOGVhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EYXRhT2JqZWN0R3RrLmNwcApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSwgTWFydGluIFJvYmluc29uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgorCisjaW5j
bHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9ndGsvR093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEYXRhT2JqZWN0
R3RrOjpEYXRhT2JqZWN0R3RrKCkKK3sKKworfQorCitEYXRhT2JqZWN0R3RrOjp+RGF0YU9iamVj
dEd0aygpCit7Cit9CisKK1ZlY3RvcjxTdHJpbmc+IERhdGFPYmplY3RHdGs6OmZpbGVzKCkKK3sK
KyAgICBWZWN0b3I8S1VSTD4gdXJpcyh1cmlMaXN0KCkpOworICAgIFZlY3RvcjxTdHJpbmc+IGZp
bGVzOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1cmlzLnNpemUoKTsgaSsrKSB7Cisg
ICAgICAgIEtVUkwmIHVyaSA9IHVyaXNbMF07CisgICAgICAgIGlmICghdXJpLmlzVmFsaWQoKSB8
fCAhdXJpLmlzTG9jYWxGaWxlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBm
aWxlcy5hcHBlbmQodXJpLnN0cmluZygpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmlsZXM7Cit9
CisKK1N0cmluZyBEYXRhT2JqZWN0R3RrOjp1cmwoKQoreworICAgIFZlY3RvcjxLVVJMPiB1cmlz
KHVyaUxpc3QoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1cmlzLnNpemUoKTsgaSsr
KSB7CisgICAgICAgIEtVUkwmIHVyaSA9IHVyaXNbMF07CisgICAgICAgIGlmICh1cmkuaXNWYWxp
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIHVyaTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBEYXRhT2JqZWN0R3RrOjp1cmxMYWJlbCgpCit7CisgICAgaWYgKGhh
c1RleHQoKSkKKyAgICAgICAgcmV0dXJuIHRleHQoKTsKKworICAgIGlmIChoYXNVUkwoKSkKKyAg
ICAgICAgcmV0dXJuIHVybCgpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitib29sIERh
dGFPYmplY3RHdGs6Omhhc1VSTCgpCit7CisgICAgcmV0dXJuICF1cmwoKS5pc0VtcHR5KCk7Cit9
CisKK3ZvaWQgRGF0YU9iamVjdEd0azo6Y2xlYXJJbWFnZSgpCit7CisgICAgc2V0SW1hZ2UoMCk7
Cit9CisKK3ZvaWQgRGF0YU9iamVjdEd0azo6Y2xlYXIoKQoreworICAgIGNsZWFyVGV4dCgpOwor
ICAgIGNsZWFyTWFya3VwKCk7CisgICAgY2xlYXJVUklMaXN0KCk7CisgICAgY2xlYXJJbWFnZSgp
OworfQorCisvKnN0YXRpYyovCitEYXRhT2JqZWN0R3RrKiBEYXRhT2JqZWN0R3RrOjpmb3JDbGlw
Ym9hcmQoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCit7CisgICAgc3RhdGljIEhhc2hNYXA8R3Rr
Q2xpcGJvYXJkKiwgUmVmUHRyPERhdGFPYmplY3RHdGs+ID4gb2JqZWN0TWFwOworCisgICAgaWYg
KCFvYmplY3RNYXAuY29udGFpbnMoY2xpcGJvYXJkKSkgeworICAgICAgICBSZWZQdHI8RGF0YU9i
amVjdEd0az4gZGF0YU9iamVjdCA9IERhdGFPYmplY3RHdGs6OmNyZWF0ZSgpOworICAgICAgICBv
YmplY3RNYXAuc2V0KGNsaXBib2FyZCwgZGF0YU9iamVjdCk7CisgICAgICAgIHJldHVybiBkYXRh
T2JqZWN0LmdldCgpOworICAgIH0KKworICAgIEhhc2hNYXA8R3RrQ2xpcGJvYXJkKiwgUmVmUHRy
PERhdGFPYmplY3RHdGs+ID46Oml0ZXJhdG9yIGl0ID0gb2JqZWN0TWFwLmZpbmQoY2xpcGJvYXJk
KTsKKyAgICByZXR1cm4gaXQtPnNlY29uZC5nZXQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RGF0YU9iamVjdEd0ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYzUw
ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3Rr
LmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgTWFydGluIFJv
Ymluc29uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIERhdGFPYmpl
Y3RHdGtfaAorI2RlZmluZSBEYXRhT2JqZWN0R3RrX2gKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIK
KyNpbmNsdWRlICJGaWxlTGlzdC5oIgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL2d0ay9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRGF0YU9iamVjdEd0ayA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFPYmplY3RHdGs+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBjcmVhdGUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhT2JqZWN0R3RrKCkpOwor
ICAgIH0KKworICAgIH5EYXRhT2JqZWN0R3RrKCk7CisKKyAgICBTdHJpbmcgdGV4dCgpIHsgcmV0
dXJuIG1fdGV4dDsgfQorICAgIFN0cmluZyBtYXJrdXAoKSB7IHJldHVybiBtX21hcmt1cDsgfQor
ICAgIFZlY3RvcjxLVVJMPiB1cmlMaXN0KCkgeyByZXR1cm4gbV91cmlMaXN0OyB9CisgICAgR2Rr
UGl4YnVmKiBpbWFnZSgpIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFRl
eHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0KSB7IG1fdGV4dCA9IG5ld1RleHQ7IH0KKyAgICB2b2lk
IHNldE1hcmt1cChjb25zdCBTdHJpbmcmIG5ld01hcmt1cCkgeyBtX21hcmt1cCA9IG5ld01hcmt1
cDsgfQorICAgIHZvaWQgc2V0VVJJTGlzdChjb25zdCBWZWN0b3I8S1VSTD4mIG5ld1VSSUxpc3Qp
IHsgIG1fdXJpTGlzdCA9IG5ld1VSSUxpc3Q7IH0KKyAgICB2b2lkIHNldEltYWdlKEdka1BpeGJ1
ZiogbmV3SW1hZ2UpIHsgbV9pbWFnZSA9IG5ld0ltYWdlOyB9CisgICAgdm9pZCBzZXREcmFnQ29u
dGV4dChHZGtEcmFnQ29udGV4dCogbmV3RHJhZ0NvbnRleHQpIHsgbV9kcmFnQ29udGV4dCA9IG5l
d0RyYWdDb250ZXh0OyB9CisgICAgYm9vbCBoYXNUZXh0KCkgeyByZXR1cm4gIW1fdGV4dC5pc0Vt
cHR5KCk7IH0KKyAgICBib29sIGhhc01hcmt1cCgpIHsgcmV0dXJuICFtX21hcmt1cC5pc0VtcHR5
KCk7IH0KKyAgICBib29sIGhhc1VSSUxpc3QoKSB7IHJldHVybiAhbV91cmlMaXN0LmlzRW1wdHko
KTsgfQorICAgIGJvb2wgaGFzSW1hZ2UoKSB7IHJldHVybiBtX2ltYWdlOyB9CisgICAgdm9pZCBj
bGVhclRleHQoKSB7IG1fdGV4dCA9ICIiOyB9CisgICAgdm9pZCBjbGVhck1hcmt1cCgpIHsgbV9t
YXJrdXAgPSAiIjsgfQorICAgIHZvaWQgY2xlYXJVUklMaXN0KCkgeyBtX3VyaUxpc3QuY2xlYXIo
KTsgfQorICAgIEdka0RyYWdDb250ZXh0KiBkcmFnQ29udGV4dCgpIHsgcmV0dXJuIG1fZHJhZ0Nv
bnRleHQuZ2V0KCk7IH0KKworICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVzKCk7CisgICAgYm9vbCBo
YXNVUkwoKTsKKyAgICBTdHJpbmcgdXJsKCk7CisgICAgU3RyaW5nIHVybExhYmVsKCk7CisKKyAg
ICB2b2lkIGNsZWFySW1hZ2UoKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICBzdGF0aWMgRGF0
YU9iamVjdEd0ayogZm9yQ2xpcGJvYXJkKEd0a0NsaXBib2FyZCopOworCitwcml2YXRlOgorICAg
IERhdGFPYmplY3RHdGsoKTsKKworICAgIFN0cmluZyBtX3RleHQ7CisgICAgU3RyaW5nIG1fbWFy
a3VwOworICAgIFZlY3RvcjxLVVJMPiBtX3VyaUxpc3Q7CisgICAgR1JlZlB0cjxHZGtQaXhidWY+
IG1faW1hZ2U7CisgICAgR1JlZlB0cjxHZGtEcmFnQ29udGV4dD4gbV9kcmFnQ29udGV4dDsKK307
CisKK30KKworI2VuZGlmIC8vIERhdGFPYmplY3RHdGtfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAyOGM4M2Q1Li42M2VhMjc2
IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwpAQCAtMiw2ICsyLDI2IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCiAKKyAgICAgICAgW0dUS10gRW5hYmxlIERPTSBjbGlwYm9hcmQgYW5kIGRyYWctYW5kLWRy
b3AgYWNjZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMDYyMworCisgICAgICAgIFVzZSBEYXRhT2JqZWN0R3RrIHdoZW4gc2V0dGluZyBhbmQgY2xl
YXJpbmcgcGFzdGVib2FyZCBkYXRhIG9uCisgICAgICAgIHRoZSBHREtfU0VMRUNUSU9OX1BSSU1B
UlkgY2xpcGJvYXJkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6ZmlsbFNlbGVjdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0
Ojp0YXJnZXRMaXN0Rm9yRGF0YU9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OmdldENsaXBib2Fy
ZENvbnRlbnRzQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpjbGVhckNsaXBib2FyZENvbnRl
bnRzQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkSGVscGVyR3RrOjp3cml0
ZUNsaXBib2FyZENvbnRlbnRzKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJk
SGVscGVyR3RrLmg6CisKKzIwMDktMTItMTYgIE1hcnRpbiBSb2JpbnNvbiAgPG1hcnRpbi5qYW1l
cy5yb2JpbnNvbkBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKICAgICAgICAgW0dUS10gV2ViS2l0IEdUSyBuZWVkcyBhIHdyYXBwZXIgZm9yIHJlZiBj
b3VudGVkIGdsaWIvZ29iamVjdCBzdHJ1Y3RzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU5OQogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggNmVjNmJhZi4uZGU1OGQ2MyAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcApAQCAtMjQsNiArMjQsNyBA
QAogI2luY2x1ZGUgIkVkaXRvckNsaWVudEd0ay5oIgogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgor
I2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKICNpbmNsdWRlICJFZGl0Q29tbWFuZC5oIgogI2lu
Y2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgPGVuY2hhbnQuaD4KQEAgLTM1LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlckd0ay5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2lu
Y2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKQEAgLTE4NSwzNSArMTg3LDExIEBAIHZvaWQgRWRpdG9y
Q2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXN0YXRpYyB2b2lkIGNsaXBib2FyZF9nZXRfY29udGVudHNfY2IoR3RrQ2xpcGJvYXJk
KiBjbGlwYm9hcmQsIEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbl9kYXRhLCBndWludCBpbmZv
LCBncG9pbnRlciBkYXRhKQotewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSByZWludGVy
cHJldF9jYXN0PFdlYktpdFdlYlZpZXcqPihkYXRhKTsKLSAgICBGcmFtZSogZnJhbWUgPSBjb3Jl
KHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAg
UGFzc1JlZlB0cjxSYW5nZT4gc2VsZWN0ZWRSYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+dG9O
b3JtYWxpemVkUmFuZ2UoKTsKLQotICAgIGlmIChzdGF0aWNfY2FzdDxnaW50PihpbmZvKSA9PSBX
RUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCkgewotICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gY3JlYXRlTWFya3VwKHNlbGVjdGVkUmFuZ2UuZ2V0KCksIDAsIEFubm90YXRlRm9ySW50ZXJj
aGFuZ2UpOwotICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbl9kYXRhLCBz
ZWxlY3Rpb25fZGF0YS0+dGFyZ2V0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4obWFya3VwLnV0ZjgoKS5kYXRhKCkpLCBt
YXJrdXAudXRmOCgpLmxlbmd0aCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgdGV4
dCA9IHNlbGVjdGVkUmFuZ2UtPnRleHQoKTsKLSAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3Nl
dF90ZXh0KHNlbGVjdGlvbl9kYXRhLCB0ZXh0LnV0ZjgoKS5kYXRhKCksIHRleHQudXRmOCgpLmxl
bmd0aCgpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGNsaXBib2FyZF9jbGVhcl9jb250ZW50
c19jYihHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgZ3BvaW50ZXIgZGF0YSkKLXsKLSAgICBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3ID0gcmVpbnRlcnByZXRfY2FzdDxXZWJLaXRXZWJWaWV3Kj4oZGF0
YSk7Ci0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCkt
PmZvY3VzZWRPck1haW5GcmFtZSgpOwotCi0gICAgLy8gQ29sbGFwc2UgdGhlIHNlbGVjdGlvbiB3
aXRob3V0IGNsZWFyaW5nIGl0Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRCYXNlKGZyYW1l
LT5zZWxlY3Rpb24oKS0+ZXh0ZW50KCksIGZyYW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKSk7
Ci19Ci0KIHZvaWQgRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKCkKIHsK
ICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1fd2ViVmlldy0+cHJpdjsKLSAgICBG
cmFtZSogdGFyZ2V0RnJhbWUgPSBjb3JlKG1fd2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSA9IGNvcmUo
bV93ZWJWaWV3KTsKKyAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBjb3JlUGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCiAgICAgaWYgKCF0YXJnZXRGcmFtZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjIxLDE2ICsxOTksMTkgQEAgdm9pZCBFZGl0b3JDbGllbnQ6
OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oKQogICAgIGlmICh0YXJnZXRGcmFtZS0+ZWRpdG9y
KCktPmlnbm9yZUNvbXBvc2l0aW9uU2VsZWN0aW9uQ2hhbmdlKCkpCiAgICAgICAgIHJldHVybjsK
IAorI2lmIFBMQVRGT1JNKFgxMSkKICAgICBHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCA9IGd0a193
aWRnZXRfZ2V0X2NsaXBib2FyZChHVEtfV0lER0VUKG1fd2ViVmlldyksIEdES19TRUxFQ1RJT05f
UFJJTUFSWSk7CisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IERhdGFPYmplY3RHdGs6
OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAgIGRhdGFPYmplY3QtPmNsZWFyKCk7CisKICAg
ICBpZiAodGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT5pc1JhbmdlKCkpIHsKLSAgICAgICAgR3Rr
VGFyZ2V0TGlzdCogdGFyZ2V0TGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfY29weV90YXJnZXRf
bGlzdChtX3dlYlZpZXcpOwotICAgICAgICBnaW50IHRhcmdldENvdW50OwotICAgICAgICBHdGtU
YXJnZXRFbnRyeSogdGFyZ2V0cyA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdCh0YXJn
ZXRMaXN0LCAmdGFyZ2V0Q291bnQpOwotICAgICAgICBndGtfY2xpcGJvYXJkX3NldF93aXRoX293
bmVyKGNsaXBib2FyZCwgdGFyZ2V0cywgdGFyZ2V0Q291bnQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkX2dldF9jb250ZW50c19jYiwgY2xpcGJvYXJkX2Ns
ZWFyX2NvbnRlbnRzX2NiLCBHX09CSkVDVChtX3dlYlZpZXcpKTsKLSAgICAgICAgZ3RrX3Rhcmdl
dF90YWJsZV9mcmVlKHRhcmdldHMsIHRhcmdldENvdW50KTsKLSAgICB9IGVsc2UgaWYgKGd0a19j
bGlwYm9hcmRfZ2V0X293bmVyKGNsaXBib2FyZCkgPT0gR19PQkpFQ1QobV93ZWJWaWV3KSkKLSAg
ICAgICAgZ3RrX2NsaXBib2FyZF9jbGVhcihjbGlwYm9hcmQpOworICAgICAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgp
OworICAgICAgICBkYXRhT2JqZWN0LT5zZXRUZXh0KHRhcmdldEZyYW1lLT5zZWxlY3RlZFRleHQo
KSk7CisgICAgICAgIGRhdGFPYmplY3QtPnNldE1hcmt1cChjcmVhdGVNYXJrdXAocmFuZ2UuZ2V0
KCksIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpKTsKKyAgICB9CisKKyAgICBwYXN0ZWJvYXJk
SGVscGVySW5zdGFuY2UoKS0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhjbGlwYm9hcmQsIGNvcmVQ
YWdlKTsKKyNlbmRpZgogCiAgICAgaWYgKCF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBv
c2l0aW9uKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3BwCmluZGV4IGM3MWVmMWIuLmQwMzYwNGYgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAK
KysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcApA
QCAtMjAsMTMgKzIwLDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFzdGVi
b2FyZEhlbHBlckd0ay5oIgogCisjaW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgorI2luY2x1ZGUg
IkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSA8Z3RrL2d0
ay5oPgogI2luY2x1ZGUgIndlYmtpdHdlYmZyYW1lLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmll
dy5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKIAotI2luY2x1ZGUgPGd0ay9ndGsuaD4K
LQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzks
NCArODAsODMgQEAgZ2ludCBQYXN0ZWJvYXJkSGVscGVyR3RrOjpnZXRXZWJWaWV3VGFyZ2V0SW5m
b0h0bWwoKSBjb25zdAogICAgIHJldHVybiBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRN
TDsKIH0KIAorc3RhdGljIHZvaWQgZmlsbFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSog
c2VsZWN0aW9uRGF0YSwgZ3VpbnQgaW5mbywgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCkKK3sK
KyAgICBpZiAoaW5mbyA9PSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCkKKyAgICAg
ICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldF90ZXh0KHNlbGVjdGlvbkRhdGEsIGRhdGFPYmplY3Qt
PnRleHQoKS51dGY4KCkuZGF0YSgpLCAtMSk7CisKKyAgICBlbHNlIGlmIChpbmZvID09IFdFQktJ
VF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MKSB7CisgICAgICAgIEdPd25QdHI8Z2NoYXI+IG1h
cmt1cChnX3N0cmR1cChkYXRhT2JqZWN0LT5tYXJrdXAoKS51dGY4KCkuZGF0YSgpKSk7CisgICAg
ICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uRGF0YSwgc2VsZWN0aW9uRGF0YS0+
dGFyZ2V0LCA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZ3VjaGFyKj4obWFya3VwLmdldCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJsZW4obWFya3VwLmdldCgpKSk7CisgICAgfQorfQorCitzdGF0aWMgR3RrVGFy
Z2V0TGlzdCogdGFyZ2V0TGlzdEZvckRhdGFPYmplY3QoRGF0YU9iamVjdEd0ayogZGF0YU9iamVj
dCkKK3sKKyAgICBHdGtUYXJnZXRMaXN0KiBsaXN0ID0gZ3RrX3RhcmdldF9saXN0X25ldygwLCAw
KTsKKworICAgIGlmIChkYXRhT2JqZWN0LT5oYXNUZXh0KCkpCisgICAgICAgIGd0a190YXJnZXRf
bGlzdF9hZGRfdGV4dF90YXJnZXRzKGxpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19U
RVhUKTsKKworICAgIGlmIChkYXRhT2JqZWN0LT5oYXNNYXJrdXAoKSkKKyAgICAgICAgZ3RrX3Rh
cmdldF9saXN0X2FkZChsaXN0LCBnZGtNYXJrdXBBdG9tLCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFS
R0VUX0lORk9fSFRNTCk7CisKKyAgICByZXR1cm4gbGlzdDsKK30KKworc3RhdGljIGJvb2wgc2V0
dGluZ0NsaXBib2FyZCA9IGZhbHNlOworc3RhdGljIHZvaWQgZ2V0Q2xpcGJvYXJkQ29udGVudHND
YWxsYmFjayhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgR3RrU2VsZWN0aW9uRGF0YSAqc2VsZWN0
aW9uRGF0YSwgZ3VpbnQgaW5mbywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBEYXRhT2JqZWN0R3Rr
KiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7Cisg
ICAgQVNTRVJUKGRhdGFPYmplY3QpOworICAgIGZpbGxTZWxlY3Rpb25EYXRhKHNlbGVjdGlvbkRh
dGEsIGluZm8sIGRhdGFPYmplY3QpOworfQorCitzdGF0aWMgdm9pZCBjbGVhckNsaXBib2FyZENv
bnRlbnRzQ2FsbGJhY2soR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGdwb2ludGVyIGRhdGEpCit7
CisgICAgLy8gR1RLIHdpbGwgY2FsbCB0aGUgY2xlYXIgY2xpcGJvYXJkIGNhbGxiYWNrIHdoaWxl
IHNldHRpbmcgY2xpcGJvYXJkIGRhdGEuCisgICAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgd2FudCB0
byBjbGVhciB0aGUgRGF0YU9iamVjdCBkdXJpbmcgdGhhdCB0aW1lLgorICAgIGlmIChzZXR0aW5n
Q2xpcGJvYXJkKQorICAgICAgICByZXR1cm47CisKKyAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2Jq
ZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7CisgICAgQVNTRVJU
KGRhdGFPYmplY3QpOworCisgICAgZGF0YU9iamVjdC0+Y2xlYXIoKTsKKyAgICBpZiAoZGF0YSkg
eworICAgICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6UGFnZSo+KGRhdGEpOworICAgICAgICBGcmFtZSogZnJhbWUgPSBjb3JlUGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworCisgICAgICAgIC8vIENvbGxh
cHNlIHRoZSBzZWxlY3Rpb24gd2l0aG91dCBjbGVhcmluZyBpdAorICAgICAgICBBU1NFUlQoZnJh
bWUpOworICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldEJhc2UoZnJhbWUtPnNlbGVjdGlv
bigpLT5leHRlbnQoKSwgZnJhbWUtPnNlbGVjdGlvbigpLT5hZmZpbml0eSgpKTsKKyAgICB9Cit9
CisKK3ZvaWQgUGFzdGVib2FyZEhlbHBlckd0azo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtD
bGlwYm9hcmQqIGNsaXBib2FyZCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBEYXRhT2JqZWN0R3Rr
KiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7Cisg
ICAgR3RrVGFyZ2V0TGlzdCogbGlzdCA9IHRhcmdldExpc3RGb3JEYXRhT2JqZWN0KGRhdGFPYmpl
Y3QpOworCisgICAgaW50IG51bWJlck9mVGFyZ2V0czsKKyAgICBHdGtUYXJnZXRFbnRyeSogdGFi
bGUgPSBndGtfdGFyZ2V0X3RhYmxlX25ld19mcm9tX2xpc3QobGlzdCwgJm51bWJlck9mVGFyZ2V0
cyk7CisKKyAgICBpZiAobnVtYmVyT2ZUYXJnZXRzID4gMCAmJiB0YWJsZSkgeworICAgICAgICBz
ZXR0aW5nQ2xpcGJvYXJkID0gdHJ1ZTsKKyAgICAgICAgZ3RrX2NsaXBib2FyZF9zZXRfd2l0aF9k
YXRhKGNsaXBib2FyZCwgdGFibGUsIG51bWJlck9mVGFyZ2V0cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdldENsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJh
Y2ssIGRhdGEpOworICAgICAgICBzZXR0aW5nQ2xpcGJvYXJkID0gZmFsc2U7CisKKyAgICB9IGVs
c2UKKyAgICAgICAgZ3RrX2NsaXBib2FyZF9jbGVhcihjbGlwYm9hcmQpOworCisgICAgaWYgKHRh
YmxlKQorICAgICAgICBndGtfdGFyZ2V0X3RhYmxlX2ZyZWUodGFibGUsIG51bWJlck9mVGFyZ2V0
cyk7CisKKyAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYobGlzdCk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmgKaW5kZXggMTJiYTIw
Ny4uOTdlZmY5MCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJv
YXJkSGVscGVyR3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJk
SGVscGVyR3RrLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3RrVGFy
Z2V0TGlzdCogdGFyZ2V0TGlzdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgZ2ludCBnZXRXZWJWaWV3
VGFyZ2V0SW5mb0h0bWwoKSBjb25zdDsKIAorICAgIHZvaWQgd3JpdGVDbGlwYm9hcmRDb250ZW50
cyhHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwgZ3BvaW50ZXIgZGF0YSA9IDApOworCiBwcml2YXRl
OgogICAgIEd0a1RhcmdldExpc3QqIG1fdGFyZ2V0TGlzdDsKIH07Ci0tIAoxLjYuMC40Cgo=
</data>
<flag name="review"
          id="27011"
          type_id="1"
          status="-"
          setter="gustavo"
    />
    <flag name="commit-queue"
          id="27012"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46433</attachid>
            <date>2010-01-13 00:59:24 -0800</date>
            <delta_ts>2010-01-13 01:18:30 -0800</delta_ts>
            <desc>Updated patch (fixes style issues and passes tests)</desc>
            <filename>0001-Add-DataObjectGtk-a-container-for-pasteboard-and-dra.patch</filename>
            <type>text/plain</type>
            <size>18790</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA5NDZlMzE1ODUxNmU3OWQ3ZWZiOTMwZDYxODFlNmM1OWI2YzU5MWViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1hcnRpbi5qYW1lcy5yb2JpbnNv
bkBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTMgSmFuIDIwMTAgMDA6MTQ6NDIgLTA4MDAKU3ViamVj
dDogW1BBVENIXSBBZGQgRGF0YU9iamVjdEd0aywgYSBjb250YWluZXIgZm9yIHBhc3RlYm9hcmQg
YW5kIGRyYWctYW5kLWRyb3AgZGF0YS4gVXNlIERhdGFPYmplY3RHdGsgd2hlbiBzZXR0aW5nIGFu
ZCBjbGVhciBzZWxlY3Rpb24gY2xpcGJvYXJkIGRhdGEuCgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM3ICsrKysrKwogV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAgICAgICAgICAgICB8ICAxMjIgKysrKysr
KysrKysrKysrKysrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmggICAg
ICAgICAgICAgIHwgICA3OCArKysrKysrKysrKysrCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMiArKysrCiBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAgICAgIHwgICA0NCArKy0tLS0tLQogV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaCAgICAgICB8ICAgIDUgLQogV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcCB8ICAgODIgKysrKysr
KysrKysrKystCiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsu
aCAgIHwgICAgMiArCiA5IGZpbGVzIGNoYW5nZWQsIDM1NCBpbnNlcnRpb25zKCspLCA0MCBkZWxl
dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2Jq
ZWN0R3RrLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFP
YmplY3RHdGsuaAoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggN2E3ZTI2Zi4uMjQzNThhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wMS0xMyAg
TWFydGluIFJvYmluc29uICA8bWFydGluLmphbWVzLnJvYmluc29uQGdtYWlsLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFbmFibGUg
RE9NIGNsaXBib2FyZCBhbmQgZHJhZy1hbmQtZHJvcCBhY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNjIzCisKKyAgICAgICAgQWRkIERhdGFP
YmplY3RHdGssIGEgY29udGFpbmVyIGZvciBwYXN0ZWJvYXJkIGFuZCBkcmFnLWFuZC1kcm9wIGRh
dGEuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWNhdXNlIGZ1bmN0aW9uYWxpdHkgaGFzIG5v
dCBjaGFuZ2VkLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFP
YmplY3RHdGs6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6bWFya3Vw
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnNldFRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFPYmplY3RHdGs6OmZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnVy
bCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjp1cmxMYWJlbCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpoYXNVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YU9iamVjdEd0azo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6Zm9y
Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjp1cmlMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFP
YmplY3RHdGs6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnNldFJh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnNldFVSSUxpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YU9iamVjdEd0azo6c2V0RHJhZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YU9iamVjdEd0azo6aGFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpo
YXNNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6aGFzVVJJTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpoYXNJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpkcmFnQ29udGV4dCk6CisKIDIwMTAtMDEtMTEgIEplcmVt
eSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KaW5kZXggOTcwZTY0OC4uMDU5MDIxNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xOTgwLDYg
KzE5ODAsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0NvbnRleHRNZW51SXRlbUd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0
ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0N1cnNvckd0ay5oIFwKKwlXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0
YU9iamVjdEd0ay5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAgXAog
CVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZv
cm0vZ3RrL0V2ZW50TG9vcEd0ay5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRGF0YU9iamVjdEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3Rr
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTY3YTM4Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKQEAgLTAs
MCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIE1hcnRpbiBSb2JpbnNvbgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg
KiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9z
dG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRl
ICJtYXJrdXAuaCIKKyNpbmNsdWRlIDx3dGYvZ3RrL0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nIERhdGFPYmpl
Y3RHdGs6OnRleHQoKQoreworICAgIGlmIChtX3JhbmdlKQorICAgICAgICByZXR1cm4gbV9yYW5n
ZS0+dGV4dCgpOworICAgIHJldHVybiBtX3RleHQ7Cit9CisKK1N0cmluZyBEYXRhT2JqZWN0R3Rr
OjptYXJrdXAoKQoreworICAgIGlmIChtX3JhbmdlKQorICAgICAgICBjcmVhdGVNYXJrdXAobV9y
YW5nZS5nZXQoKSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7CisgICAgcmV0dXJuIG1fbWFy
a3VwOworfQorCit2b2lkIERhdGFPYmplY3RHdGs6OnNldFRleHQoY29uc3QgU3RyaW5nJiBuZXdU
ZXh0KQoreworICAgIG1fcmFuZ2UgPSAwOworICAgIG1fdGV4dCA9IG5ld1RleHQ7Cit9CisKK3Zv
aWQgRGF0YU9iamVjdEd0azo6c2V0TWFya3VwKGNvbnN0IFN0cmluZyYgbmV3TWFya3VwKQorewor
ICAgIG1fcmFuZ2UgPSAwOworICAgIG1fbWFya3VwID0gbmV3TWFya3VwOworfQorCitWZWN0b3I8
U3RyaW5nPiBEYXRhT2JqZWN0R3RrOjpmaWxlcygpCit7CisgICAgVmVjdG9yPEtVUkw+IHVyaXMo
dXJpTGlzdCgpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBmaWxlczsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdXJpcy5zaXplKCk7IGkrKykgeworICAgICAgICBLVVJMJiB1cmkgPSB1cmlz
WzBdOworICAgICAgICBpZiAoIXVyaS5pc1ZhbGlkKCkgfHwgIXVyaS5pc0xvY2FsRmlsZSgpKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZmlsZXMuYXBwZW5kKHVyaS5zdHJpbmco
KSk7CisgICAgfQorCisgICAgcmV0dXJuIGZpbGVzOworfQorCitTdHJpbmcgRGF0YU9iamVjdEd0
azo6dXJsKCkKK3sKKyAgICBWZWN0b3I8S1VSTD4gdXJpcyh1cmlMaXN0KCkpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdXJpcy5zaXplKCk7IGkrKykgeworICAgICAgICBLVVJMJiB1cmkg
PSB1cmlzWzBdOworICAgICAgICBpZiAodXJpLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVy
biB1cmk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgRGF0YU9i
amVjdEd0azo6dXJsTGFiZWwoKQoreworICAgIGlmIChoYXNUZXh0KCkpCisgICAgICAgIHJldHVy
biB0ZXh0KCk7CisKKyAgICBpZiAoaGFzVVJMKCkpCisgICAgICAgIHJldHVybiB1cmwoKTsKKwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworYm9vbCBEYXRhT2JqZWN0R3RrOjpoYXNVUkwoKQor
eworICAgIHJldHVybiAhdXJsKCkuaXNFbXB0eSgpOworfQorCit2b2lkIERhdGFPYmplY3RHdGs6
OmNsZWFyKCkKK3sKKyAgICBtX3RleHQgPSAiIjsKKyAgICBtX21hcmt1cCA9ICIiOworICAgIG1f
dXJpTGlzdC5jbGVhcigpOworICAgIG1faW1hZ2UgPSAwOworICAgIG1fcmFuZ2UgPSAwOworfQor
CitEYXRhT2JqZWN0R3RrKiBEYXRhT2JqZWN0R3RrOjpmb3JDbGlwYm9hcmQoR3RrQ2xpcGJvYXJk
KiBjbGlwYm9hcmQpCit7CisgICAgc3RhdGljIEhhc2hNYXA8R3RrQ2xpcGJvYXJkKiwgUmVmUHRy
PERhdGFPYmplY3RHdGs+ID4gb2JqZWN0TWFwOworCisgICAgaWYgKCFvYmplY3RNYXAuY29udGFp
bnMoY2xpcGJvYXJkKSkgeworICAgICAgICBSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVj
dCA9IERhdGFPYmplY3RHdGs6OmNyZWF0ZSgpOworICAgICAgICBvYmplY3RNYXAuc2V0KGNsaXBi
b2FyZCwgZGF0YU9iamVjdCk7CisgICAgICAgIHJldHVybiBkYXRhT2JqZWN0LmdldCgpOworICAg
IH0KKworICAgIEhhc2hNYXA8R3RrQ2xpcGJvYXJkKiwgUmVmUHRyPERhdGFPYmplY3RHdGs+ID46
Oml0ZXJhdG9yIGl0ID0gb2JqZWN0TWFwLmZpbmQoY2xpcGJvYXJkKTsKKyAgICByZXR1cm4gaXQt
PnNlY29uZC5nZXQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RGF0YU9iamVjdEd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhODk4ODIKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgKQEAgLTAsMCArMSw3OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgTWFydGluIFJvYmluc29uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAw
MjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIERhdGFPYmplY3RHdGtfaAorI2RlZmluZSBE
YXRhT2JqZWN0R3RrX2gKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJGaWxlTGlz
dC5oIgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCisjaW5jbHVk
ZSAiUmFuZ2UuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9n
dGsvR1JlZlB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfR2RrUGl4YnVmIEdka1BpeGJ1ZjsKK3R5
cGVkZWYgc3RydWN0IF9HZGtEcmFnQ29udGV4dCBHZGtEcmFnQ29udGV4dDsKK3R5cGVkZWYgc3Ry
dWN0IF9HdGtDbGlwYm9hcmQgR3RrQ2xpcGJvYXJkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIERhdGFPYmplY3RHdGsgOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhT2JqZWN0R3RrPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gY3JlYXRlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0YU9iamVjdEd0aygpKTsKKyAg
ICB9CisKKyAgICBWZWN0b3I8S1VSTD4gdXJpTGlzdCgpIHsgcmV0dXJuIG1fdXJpTGlzdDsgfQor
ICAgIEdka1BpeGJ1ZiogaW1hZ2UoKSB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRSYW5nZShQYXNzUmVmUHRyPFJhbmdlPiBuZXdSYW5nZSkgeyBtX3JhbmdlID0gbmV3UmFu
Z2U7IH0KKyAgICB2b2lkIHNldFVSSUxpc3QoY29uc3QgVmVjdG9yPEtVUkw+JiBuZXdVUklMaXN0
KSB7ICBtX3VyaUxpc3QgPSBuZXdVUklMaXN0OyB9CisgICAgdm9pZCBzZXRJbWFnZShHZGtQaXhi
dWYqIG5ld0ltYWdlKSB7IG1faW1hZ2UgPSBuZXdJbWFnZTsgfQorICAgIHZvaWQgc2V0RHJhZ0Nv
bnRleHQoR2RrRHJhZ0NvbnRleHQqIG5ld0RyYWdDb250ZXh0KSB7IG1fZHJhZ0NvbnRleHQgPSBu
ZXdEcmFnQ29udGV4dDsgfQorICAgIGJvb2wgaGFzVGV4dCgpIHsgcmV0dXJuIG1fcmFuZ2UgfHwg
IW1fdGV4dC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc01hcmt1cCgpIHsgcmV0dXJuIG1fcmFu
Z2UgfHwgIW1fbWFya3VwLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaGFzVVJJTGlzdCgpIHsgcmV0
dXJuICFtX3VyaUxpc3QuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNJbWFnZSgpIHsgcmV0dXJu
IG1faW1hZ2U7IH0KKyAgICBHZGtEcmFnQ29udGV4dCogZHJhZ0NvbnRleHQoKSB7IHJldHVybiBt
X2RyYWdDb250ZXh0LmdldCgpOyB9CisKKyAgICBTdHJpbmcgdGV4dCgpOworICAgIFN0cmluZyBt
YXJrdXAoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBmaWxlcygpOworICAgIHZvaWQgc2V0VGV4dChj
b25zdCBTdHJpbmcmIG5ld1RleHQpOworICAgIHZvaWQgc2V0TWFya3VwKGNvbnN0IFN0cmluZyYg
bmV3TWFya3VwKTsKKyAgICBib29sIGhhc1VSTCgpOworICAgIFN0cmluZyB1cmwoKTsKKyAgICBT
dHJpbmcgdXJsTGFiZWwoKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICBzdGF0aWMgRGF0YU9i
amVjdEd0ayogZm9yQ2xpcGJvYXJkKEd0a0NsaXBib2FyZCopOworCitwcml2YXRlOgorICAgIFN0
cmluZyBtX3RleHQ7CisgICAgU3RyaW5nIG1fbWFya3VwOworICAgIFZlY3RvcjxLVVJMPiBtX3Vy
aUxpc3Q7CisgICAgR1JlZlB0cjxHZGtQaXhidWY+IG1faW1hZ2U7CisgICAgR1JlZlB0cjxHZGtE
cmFnQ29udGV4dD4gbV9kcmFnQ29udGV4dDsKKyAgICBSZWZQdHI8UmFuZ2U+IG1fcmFuZ2U7Cit9
OworCit9CisKKyNlbmRpZiAvLyBEYXRhT2JqZWN0R3RrX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNTM5NGZiMC4uM2U4Mjdm
OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wMS0xMyAgTWFydGluIFJvYmluc29uICA8bWFy
dGluLmphbWVzLnJvYmluc29uQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFbmFibGUgRE9NIGNsaXBib2FyZCBhbmQgZHJh
Zy1hbmQtZHJvcCBhY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMwNjIzCisKKyAgICAgICAgVXNlIERhdGFPYmplY3RHdGsgd2hlbiBzZXR0aW5n
IGFuZCBjbGVhcmluZyBwYXN0ZWJvYXJkIGRhdGEgb24KKyAgICAgICAgdGhlIEdES19TRUxFQ1RJ
T05fUFJJTUFSWSBjbGlwYm9hcmQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0No
YW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OkVkaXRvckNs
aWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmZpbGxTZWxlY3Rpb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6dGFyZ2V0TGlzdEZv
ckRhdGFPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpnZXRDbGlwYm9hcmRDb250ZW50c0NhbGxi
YWNrKToKKyAgICAgICAgKFdlYktpdDo6Y2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrKToK
KyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZEhlbHBlckd0azo6d3JpdGVDbGlwYm9hcmRDb250
ZW50cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oOgor
CiAyMDEwLTAxLTEyICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCBiODU2NmEyLi4yNjY3MjNiIDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0yNCw2ICsyNCw3
IEBACiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50R3RrLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgi
CisjaW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgogI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiCiAj
aW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSA8ZW5jaGFudC5oPgpAQCAtMzUsNiArMzYsNyBA
QAogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyR3RrLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAj
aW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgpAQCAtMTg1LDM0ICsxODcsMTEgQEAgdm9pZCBFZGl0
b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBjbGlwYm9hcmRfZ2V0X2NvbnRlbnRzX2NiKEd0a0NsaXBib2FyZCogY2xp
cGJvYXJkLCBHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb25fZGF0YSwgZ3VpbnQgaW5mbywgZ3Bv
aW50ZXIgZGF0YSkKLXsKLSAgICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PEVk
aXRvckNsaWVudCo+KGRhdGEpOwotCi0gICAgaWYgKCFjbGllbnQtPm1fcmFuZ2UpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChzdGF0aWNfY2FzdDxnaW50PihpbmZvKSA9PSBXRUJLSVRfV0VC
X1ZJRVdfVEFSR0VUX0lORk9fSFRNTCkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gY3JlYXRl
TWFya3VwKGNsaWVudC0+bV9yYW5nZS5nZXQoKSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7
Ci0gICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uX2RhdGEsIHNlbGVjdGlv
bl9kYXRhLT50YXJnZXQsIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBndWNoYXIqPihtYXJrdXAudXRmOCgpLmRhdGEoKSksIG1hcmt1cC51
dGY4KCkubGVuZ3RoKCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyB0ZXh0ID0gY2xp
ZW50LT5tX3JhbmdlLT50ZXh0KCk7Ci0gICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXRfdGV4
dChzZWxlY3Rpb25fZGF0YSwgdGV4dC51dGY4KCkuZGF0YSgpLCB0ZXh0LnV0ZjgoKS5sZW5ndGgo
KSk7Ci0gICAgfQotfQotCi12b2lkIGNsaXBib2FyZF9jbGVhcl9jb250ZW50c19jYihHdGtDbGlw
Ym9hcmQqIGNsaXBib2FyZCwgZ3BvaW50ZXIgZGF0YSkKLXsKLSAgICBFZGl0b3JDbGllbnQqIGNs
aWVudCA9IHN0YXRpY19jYXN0PEVkaXRvckNsaWVudCo+KGRhdGEpOwotCi0gICAgY2xpZW50LT5t
X3JhbmdlID0gMDsKLX0KLQogdm9pZCBFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxl
Y3Rpb24oKQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gbV93ZWJWaWV3LT5w
cml2OwotICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IGNvcmUobV93ZWJWaWV3KS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQ
YWdlID0gY29yZShtX3dlYlZpZXcpOworICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IGNvcmVQYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKICAgICBpZiAoIXRh
cmdldEZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC0yMjAsMTYgKzE5OSwxNiBAQCB2b2lkIEVk
aXRvckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigpCiAgICAgaWYgKHRhcmdldEZy
YW1lLT5lZGl0b3IoKS0+aWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkKICAgICAg
ICAgcmV0dXJuOwogCisjaWYgUExBVEZPUk0oWDExKQogICAgIEd0a0NsaXBib2FyZCogY2xpcGJv
YXJkID0gZ3RrX3dpZGdldF9nZXRfY2xpcGJvYXJkKEdUS19XSURHRVQobV93ZWJWaWV3KSwgR0RL
X1NFTEVDVElPTl9QUklNQVJZKTsKKyAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0
YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7CisKICAgICBpZiAodGFyZ2V0RnJh
bWUtPnNlbGVjdGlvbigpLT5pc1JhbmdlKCkpIHsKLSAgICAgICAgR3RrVGFyZ2V0TGlzdCogdGFy
Z2V0TGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfY29weV90YXJnZXRfbGlzdChtX3dlYlZpZXcp
OwotICAgICAgICBnaW50IHRhcmdldENvdW50OwotICAgICAgICBHdGtUYXJnZXRFbnRyeSogdGFy
Z2V0cyA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdCh0YXJnZXRMaXN0LCAmdGFyZ2V0
Q291bnQpOwotICAgICAgICBndGtfY2xpcGJvYXJkX3NldF93aXRoX2RhdGEoY2xpcGJvYXJkLCB0
YXJnZXRzLCB0YXJnZXRDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsaXBib2FyZF9nZXRfY29udGVudHNfY2IsIGNsaXBib2FyZF9jbGVhcl9jb250ZW50c19jYiwg
dGhpcyk7Ci0gICAgICAgIG1fcmFuZ2UgPSB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9y
bWFsaXplZFJhbmdlKCk7Ci0gICAgICAgIGd0a190YXJnZXRfdGFibGVfZnJlZSh0YXJnZXRzLCB0
YXJnZXRDb3VudCk7CisgICAgICAgIGRhdGFPYmplY3QtPmNsZWFyKCk7CisgICAgICAgIGRhdGFP
YmplY3QtPnNldFJhbmdlKHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFu
Z2UoKSk7CisgICAgICAgIHBhc3RlYm9hcmRIZWxwZXJJbnN0YW5jZSgpLT53cml0ZUNsaXBib2Fy
ZENvbnRlbnRzKGNsaXBib2FyZCwgY29yZVBhZ2UpOwogICAgIH0KKyNlbmRpZgogCiAgICAgaWYg
KCF0YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTU1MCw3ICs1MjksNiBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRo
b2RLZXlkb3duKEtleWJvYXJkRXZlbnQqIGV2ZW50KQogRWRpdG9yQ2xpZW50OjpFZGl0b3JDbGll
bnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICA6IG1faXNJblJlZG8oZmFsc2UpCiAgICAg
LCBtX3dlYlZpZXcod2ViVmlldykKLSAgICAsIG1fcmFuZ2UoMCkKIHsKICAgICBXZWJLaXRXZWJW
aWV3UHJpdmF0ZSogcHJpdiA9IG1fd2ViVmlldy0+cHJpdjsKICAgICBnX3NpZ25hbF9jb25uZWN0
KHByaXYtPmltQ29udGV4dCwgImNvbW1pdCIsIEdfQ0FMTEJBQ0soaW1Db250ZXh0Q29tbWl0dGVk
KSwgdGhpcyk7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaApp
bmRleCAzM2VmYTRkLi45MjkyNjUxIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50R3RrLmgKQEAgLTM0LDcgKzM0LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8Z3RrL2d0ay5oPgogCiB0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3OwogCkBAIC0xMjEsMTAgKzEy
MCw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0
V2ViVmlldyogbV93ZWJWaWV3OwotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IG1fcmFu
Z2U7Ci0KLSAgICAgICAgZnJpZW5kIHZvaWQgY2xpcGJvYXJkX2dldF9jb250ZW50c19jYihHdGtD
bGlwYm9hcmQqIGNsaXBib2FyZCwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uX2RhdGEsIGd1
aW50IGluZm8sIGdwb2ludGVyIGRhdGEpOwotICAgICAgICBmcmllbmQgdm9pZCBjbGlwYm9hcmRf
Y2xlYXJfY29udGVudHNfY2IoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGdwb2ludGVyIGRhdGEp
OwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFz
dGVib2FyZEhlbHBlckd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9h
cmRIZWxwZXJHdGsuY3BwCmluZGV4IGM3MWVmMWIuLjRkYzJiNTAgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcApAQCAtMjAsMTMgKzIw
LDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlckd0
ay5oIgogCisjaW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgorI2luY2x1ZGUgIkZvY3VzQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1
ZGUgIndlYmtpdHdlYmZyYW1lLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1
ZGUgIndlYmtpdHByaXZhdGUuaCIKIAotI2luY2x1ZGUgPGd0ay9ndGsuaD4KLQogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzksNCArODAsODEgQEAg
Z2ludCBQYXN0ZWJvYXJkSGVscGVyR3RrOjpnZXRXZWJWaWV3VGFyZ2V0SW5mb0h0bWwoKSBjb25z
dAogICAgIHJldHVybiBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDsKIH0KIAorc3Rh
dGljIHZvaWQgZmlsbFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0
YSwgZ3VpbnQgaW5mbywgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCkKK3sKKyAgICBpZiAoaW5m
byA9PSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCkKKyAgICAgICAgZ3RrX3NlbGVj
dGlvbl9kYXRhX3NldF90ZXh0KHNlbGVjdGlvbkRhdGEsIGRhdGFPYmplY3QtPnRleHQoKS51dGY4
KCkuZGF0YSgpLCAtMSk7CisgICAgZWxzZSBpZiAoaW5mbyA9PSBXRUJLSVRfV0VCX1ZJRVdfVEFS
R0VUX0lORk9fSFRNTCkgeworICAgICAgICBHT3duUHRyPGdjaGFyPiBtYXJrdXAoZ19zdHJkdXAo
ZGF0YU9iamVjdC0+bWFya3VwKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBndGtfc2VsZWN0
aW9uX2RhdGFfc2V0KHNlbGVjdGlvbkRhdGEsIHNlbGVjdGlvbkRhdGEtPnRhcmdldCwgOCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hh
cio+KG1hcmt1cC5nZXQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVu
KG1hcmt1cC5nZXQoKSkpOworICAgIH0KK30KKworc3RhdGljIEd0a1RhcmdldExpc3QqIHRhcmdl
dExpc3RGb3JEYXRhT2JqZWN0KERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QpCit7CisgICAgR3Rr
VGFyZ2V0TGlzdCogbGlzdCA9IGd0a190YXJnZXRfbGlzdF9uZXcoMCwgMCk7CisKKyAgICBpZiAo
ZGF0YU9iamVjdC0+aGFzVGV4dCgpKQorICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRf
dGFyZ2V0cyhsaXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCk7CisKKyAgICBp
ZiAoZGF0YU9iamVjdC0+aGFzTWFya3VwKCkpCisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQo
bGlzdCwgZ2RrTWFya3VwQXRvbSwgMCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUwp
OworCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBib29sIHNldHRpbmdDbGlwYm9hcmQg
PSBmYWxzZTsKK3N0YXRpYyB2b2lkIGdldENsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2soR3RrQ2xp
cGJvYXJkKiBjbGlwYm9hcmQsIEd0a1NlbGVjdGlvbkRhdGEgKnNlbGVjdGlvbkRhdGEsIGd1aW50
IGluZm8sIGdwb2ludGVyIGRhdGEpCit7CisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9
IERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAgIEFTU0VSVChkYXRh
T2JqZWN0KTsKKyAgICBmaWxsU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCBkYXRh
T2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNr
KEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBncG9pbnRlciBkYXRhKQoreworICAgIC8vIEdUSyB3
aWxsIGNhbGwgdGhlIGNsZWFyIGNsaXBib2FyZCBjYWxsYmFjayB3aGlsZSBzZXR0aW5nIGNsaXBi
b2FyZCBkYXRhLgorICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gY2xlYXIgdGhlIERh
dGFPYmplY3QgZHVyaW5nIHRoYXQgdGltZS4KKyAgICBpZiAoc2V0dGluZ0NsaXBib2FyZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IERhdGFPYmpl
Y3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAgIEFTU0VSVChkYXRhT2JqZWN0KTsK
KworICAgIGRhdGFPYmplY3QtPmNsZWFyKCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgV2Vi
Q29yZTo6UGFnZSogY29yZVBhZ2UgPSByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlBhZ2UqPihk
YXRhKTsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gY29yZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKworICAgICAgICAvLyBDb2xsYXBzZSB0aGUgc2VsZWN0
aW9uIHdpdGhvdXQgY2xlYXJpbmcgaXQKKyAgICAgICAgQVNTRVJUKGZyYW1lKTsKKyAgICAgICAg
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRCYXNlKGZyYW1lLT5zZWxlY3Rpb24oKS0+ZXh0ZW50KCks
IGZyYW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKSk7CisgICAgfQorfQorCit2b2lkIFBhc3Rl
Ym9hcmRIZWxwZXJHdGs6OndyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlw
Ym9hcmQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9
IERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAgIEd0a1RhcmdldExp
c3QqIGxpc3QgPSB0YXJnZXRMaXN0Rm9yRGF0YU9iamVjdChkYXRhT2JqZWN0KTsKKworICAgIGlu
dCBudW1iZXJPZlRhcmdldHM7CisgICAgR3RrVGFyZ2V0RW50cnkqIHRhYmxlID0gZ3RrX3Rhcmdl
dF90YWJsZV9uZXdfZnJvbV9saXN0KGxpc3QsICZudW1iZXJPZlRhcmdldHMpOworCisgICAgaWYg
KG51bWJlck9mVGFyZ2V0cyA+IDAgJiYgdGFibGUpIHsKKyAgICAgICAgc2V0dGluZ0NsaXBib2Fy
ZCA9IHRydWU7CisgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0YShjbGlwYm9hcmQs
IHRhYmxlLCBudW1iZXJPZlRhcmdldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZXRDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLCBkYXRhKTsKKyAg
ICAgICAgc2V0dGluZ0NsaXBib2FyZCA9IGZhbHNlOworICAgIH0gZWxzZQorICAgICAgICBndGtf
Y2xpcGJvYXJkX2NsZWFyKGNsaXBib2FyZCk7CisKKyAgICBpZiAodGFibGUpCisgICAgICAgIGd0
a190YXJnZXRfdGFibGVfZnJlZSh0YWJsZSwgbnVtYmVyT2ZUYXJnZXRzKTsKKworICAgIGd0a190
YXJnZXRfbGlzdF91bnJlZihsaXN0KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuaAppbmRleCAxMmJhMjA3Li45N2VmZjkwIDEwMDY0
NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuaAor
KysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuaApAQCAt
NDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHdGtUYXJnZXRMaXN0KiB0YXJnZXRM
aXN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBnaW50IGdldFdlYlZpZXdUYXJnZXRJbmZvSHRtbCgp
IGNvbnN0OwogCisgICAgdm9pZCB3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCog
Y2xpcGJvYXJkLCBncG9pbnRlciBkYXRhID0gMCk7CisKIHByaXZhdGU6CiAgICAgR3RrVGFyZ2V0
TGlzdCogbV90YXJnZXRMaXN0OwogfTsKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46435</attachid>
            <date>2010-01-13 01:18:30 -0800</date>
            <delta_ts>2010-04-19 23:19:55 -0700</delta_ts>
            <desc>Updated patch (fix new style issues)</desc>
            <filename>0001-Add-DataObjectGtk-a-container-for-pasteboard-and-dra.patch</filename>
            <type>text/plain</type>
            <size>18730</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSA1ZjAyMDIwMjMyNmY3MjlhYzdlZGY4MjdhOGNiOWY2ZDUwMzhkMTU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1hcnRpbi5qYW1lcy5yb2JpbnNv
bkBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTMgSmFuIDIwMTAgMDA6MTQ6NDIgLTA4MDAKU3ViamVj
dDogW1BBVENIXSBBZGQgRGF0YU9iamVjdEd0aywgYSBjb250YWluZXIgZm9yIHBhc3RlYm9hcmQg
YW5kIGRyYWctYW5kLWRyb3AgZGF0YS4gVXNlIERhdGFPYmplY3RHdGsgd2hlbiBzZXR0aW5nIGFu
ZCBjbGVhciBzZWxlY3Rpb24gY2xpcGJvYXJkIGRhdGEuCgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM3ICsrKysrKysKIFdlYkNvcmUv
R05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwICAgICAgICAgICAgfCAgMTIwICsrKysr
KysrKysrKysrKysrKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oICAg
ICAgICAgICAgICB8ICAgNzggKysrKysrKysrKysrKwogV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjIgKysrKwogV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwICAgICB8ICAgNDQgKystLS0tLS0KIFdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmggICAgICAgfCAgICA1IC0KIFdlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAgfCAgIDgyICsrKysr
KysrKysrKysrLQogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3Rr
LmggICB8ICAgIDIgKwogOSBmaWxlcyBjaGFuZ2VkLCAzNTIgaW5zZXJ0aW9ucygrKSwgNDAgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9i
amVjdEd0ay5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRh
T2JqZWN0R3RrLmgKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDdhN2UyNmYuLjI0MzU4YWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTAtMDEtMTMg
IE1hcnRpbiBSb2JpbnNvbiAgPG1hcnRpbi5qYW1lcy5yb2JpbnNvbkBnbWFpbC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRW5hYmxl
IERPTSBjbGlwYm9hcmQgYW5kIGRyYWctYW5kLWRyb3AgYWNjZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDYyMworCisgICAgICAgIEFkZCBEYXRh
T2JqZWN0R3RrLCBhIGNvbnRhaW5lciBmb3IgcGFzdGVib2FyZCBhbmQgZHJhZy1hbmQtZHJvcCBk
YXRhLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSBmdW5jdGlvbmFsaXR5IGhhcyBu
b3QgY2hhbmdlZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRh
T2JqZWN0R3RrOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6Om1hcmt1
cCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpzZXRUZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnNldE1hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhT2JqZWN0R3RrOjpmaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjp1
cmwpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6dXJsTGFiZWwpOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6aGFzVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFPYmplY3RHdGs6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmZv
ckNsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YU9iamVjdEd0azo6dXJpTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
T2JqZWN0R3RrOjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpzZXRS
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpzZXRVUklMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OnNldEltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFPYmplY3RHdGs6OnNldERyYWdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFPYmplY3RHdGs6Omhhc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6
aGFzTWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6Omhhc1VSSUxpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6aGFzSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YU9iamVjdEd0azo6ZHJhZ0NvbnRleHQpOgorCiAyMDEwLTAxLTExICBKZXJl
bXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDk3MGU2NDguLjA1OTAyMTUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTk4MCw2
ICsxOTgwLDggQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0
ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JH
dGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuaCBcCisJV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0Rh
dGFPYmplY3RHdGsuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRm
b3JtL2d0ay9FdmVudExvb3BHdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0RhdGFPYmplY3RHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0
ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAwZmU4ZQotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCkBAIC0w
LDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCBNYXJ0aW4gUm9iaW5zb24K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCisKKyNpbmNsdWRlICJtYXJrdXAuaCIKKyNpbmNsdWRl
IDxndGsvZ3RrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nIERhdGFPYmplY3RH
dGs6OnRleHQoKQoreworICAgIGlmIChtX3JhbmdlKQorICAgICAgICByZXR1cm4gbV9yYW5nZS0+
dGV4dCgpOworICAgIHJldHVybiBtX3RleHQ7Cit9CisKK1N0cmluZyBEYXRhT2JqZWN0R3RrOjpt
YXJrdXAoKQoreworICAgIGlmIChtX3JhbmdlKQorICAgICAgICBjcmVhdGVNYXJrdXAobV9yYW5n
ZS5nZXQoKSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7CisgICAgcmV0dXJuIG1fbWFya3Vw
OworfQorCit2b2lkIERhdGFPYmplY3RHdGs6OnNldFRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0
KQoreworICAgIG1fcmFuZ2UgPSAwOworICAgIG1fdGV4dCA9IG5ld1RleHQ7Cit9CisKK3ZvaWQg
RGF0YU9iamVjdEd0azo6c2V0TWFya3VwKGNvbnN0IFN0cmluZyYgbmV3TWFya3VwKQoreworICAg
IG1fcmFuZ2UgPSAwOworICAgIG1fbWFya3VwID0gbmV3TWFya3VwOworfQorCitWZWN0b3I8U3Ry
aW5nPiBEYXRhT2JqZWN0R3RrOjpmaWxlcygpCit7CisgICAgVmVjdG9yPEtVUkw+IHVyaXModXJp
TGlzdCgpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBmaWxlczsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdXJpcy5zaXplKCk7IGkrKykgeworICAgICAgICBLVVJMJiB1cmkgPSB1cmlzWzBd
OworICAgICAgICBpZiAoIXVyaS5pc1ZhbGlkKCkgfHwgIXVyaS5pc0xvY2FsRmlsZSgpKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZmlsZXMuYXBwZW5kKHVyaS5zdHJpbmcoKSk7
CisgICAgfQorCisgICAgcmV0dXJuIGZpbGVzOworfQorCitTdHJpbmcgRGF0YU9iamVjdEd0azo6
dXJsKCkKK3sKKyAgICBWZWN0b3I8S1VSTD4gdXJpcyh1cmlMaXN0KCkpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdXJpcy5zaXplKCk7IGkrKykgeworICAgICAgICBLVVJMJiB1cmkgPSB1
cmlzWzBdOworICAgICAgICBpZiAodXJpLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiB1
cmk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgRGF0YU9iamVj
dEd0azo6dXJsTGFiZWwoKQoreworICAgIGlmIChoYXNUZXh0KCkpCisgICAgICAgIHJldHVybiB0
ZXh0KCk7CisKKyAgICBpZiAoaGFzVVJMKCkpCisgICAgICAgIHJldHVybiB1cmwoKTsKKworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworYm9vbCBEYXRhT2JqZWN0R3RrOjpoYXNVUkwoKQorewor
ICAgIHJldHVybiAhdXJsKCkuaXNFbXB0eSgpOworfQorCit2b2lkIERhdGFPYmplY3RHdGs6OmNs
ZWFyKCkKK3sKKyAgICBtX3RleHQgPSAiIjsKKyAgICBtX21hcmt1cCA9ICIiOworICAgIG1fdXJp
TGlzdC5jbGVhcigpOworICAgIG1faW1hZ2UgPSAwOworICAgIG1fcmFuZ2UgPSAwOworfQorCitE
YXRhT2JqZWN0R3RrKiBEYXRhT2JqZWN0R3RrOjpmb3JDbGlwYm9hcmQoR3RrQ2xpcGJvYXJkKiBj
bGlwYm9hcmQpCit7CisgICAgc3RhdGljIEhhc2hNYXA8R3RrQ2xpcGJvYXJkKiwgUmVmUHRyPERh
dGFPYmplY3RHdGs+ID4gb2JqZWN0TWFwOworCisgICAgaWYgKCFvYmplY3RNYXAuY29udGFpbnMo
Y2xpcGJvYXJkKSkgeworICAgICAgICBSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCA9
IERhdGFPYmplY3RHdGs6OmNyZWF0ZSgpOworICAgICAgICBvYmplY3RNYXAuc2V0KGNsaXBib2Fy
ZCwgZGF0YU9iamVjdCk7CisgICAgICAgIHJldHVybiBkYXRhT2JqZWN0LmdldCgpOworICAgIH0K
KworICAgIEhhc2hNYXA8R3RrQ2xpcGJvYXJkKiwgUmVmUHRyPERhdGFPYmplY3RHdGs+ID46Oml0
ZXJhdG9yIGl0ID0gb2JqZWN0TWFwLmZpbmQoY2xpcGJvYXJkKTsKKyAgICByZXR1cm4gaXQtPnNl
Y29uZC5nZXQoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0
YU9iamVjdEd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYTI2NDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgKQEAgLTAsMCArMSw3OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgTWFydGluIFJvYmluc29uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIERhdGFPYmplY3RHdGtfaAorI2RlZmluZSBEYXRh
T2JqZWN0R3RrX2gKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJGaWxlTGlzdC5o
IgorI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlN0cmlu
Z0hhc2guaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9ndGsv
R1JlZlB0ci5oPgorCit0eXBlZGVmIHN0cnVjdCBfR2RrUGl4YnVmIEdka1BpeGJ1ZjsKK3R5cGVk
ZWYgc3RydWN0IF9HZGtEcmFnQ29udGV4dCBHZGtEcmFnQ29udGV4dDsKK3R5cGVkZWYgc3RydWN0
IF9HdGtDbGlwYm9hcmQgR3RrQ2xpcGJvYXJkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIERhdGFPYmplY3RHdGsgOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhT2JqZWN0R3RrPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gY3JlYXRlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0YU9iamVjdEd0aygpKTsKKyAgICB9
CisKKyAgICBWZWN0b3I8S1VSTD4gdXJpTGlzdCgpIHsgcmV0dXJuIG1fdXJpTGlzdDsgfQorICAg
IEdka1BpeGJ1ZiogaW1hZ2UoKSB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CisgICAgdm9pZCBz
ZXRSYW5nZShQYXNzUmVmUHRyPFJhbmdlPiBuZXdSYW5nZSkgeyBtX3JhbmdlID0gbmV3UmFuZ2U7
IH0KKyAgICB2b2lkIHNldFVSSUxpc3QoY29uc3QgVmVjdG9yPEtVUkw+JiBuZXdVUklMaXN0KSB7
ICBtX3VyaUxpc3QgPSBuZXdVUklMaXN0OyB9CisgICAgdm9pZCBzZXRJbWFnZShHZGtQaXhidWYq
IG5ld0ltYWdlKSB7IG1faW1hZ2UgPSBuZXdJbWFnZTsgfQorICAgIHZvaWQgc2V0RHJhZ0NvbnRl
eHQoR2RrRHJhZ0NvbnRleHQqIG5ld0RyYWdDb250ZXh0KSB7IG1fZHJhZ0NvbnRleHQgPSBuZXdE
cmFnQ29udGV4dDsgfQorICAgIGJvb2wgaGFzVGV4dCgpIHsgcmV0dXJuIG1fcmFuZ2UgfHwgIW1f
dGV4dC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGhhc01hcmt1cCgpIHsgcmV0dXJuIG1fcmFuZ2Ug
fHwgIW1fbWFya3VwLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaGFzVVJJTGlzdCgpIHsgcmV0dXJu
ICFtX3VyaUxpc3QuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBoYXNJbWFnZSgpIHsgcmV0dXJuIG1f
aW1hZ2U7IH0KKyAgICBHZGtEcmFnQ29udGV4dCogZHJhZ0NvbnRleHQoKSB7IHJldHVybiBtX2Ry
YWdDb250ZXh0LmdldCgpOyB9CisKKyAgICBTdHJpbmcgdGV4dCgpOworICAgIFN0cmluZyBtYXJr
dXAoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBmaWxlcygpOworICAgIHZvaWQgc2V0VGV4dChjb25z
dCBTdHJpbmcmIG5ld1RleHQpOworICAgIHZvaWQgc2V0TWFya3VwKGNvbnN0IFN0cmluZyYgbmV3
TWFya3VwKTsKKyAgICBib29sIGhhc1VSTCgpOworICAgIFN0cmluZyB1cmwoKTsKKyAgICBTdHJp
bmcgdXJsTGFiZWwoKTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICBzdGF0aWMgRGF0YU9iamVj
dEd0ayogZm9yQ2xpcGJvYXJkKEd0a0NsaXBib2FyZCopOworCitwcml2YXRlOgorICAgIFN0cmlu
ZyBtX3RleHQ7CisgICAgU3RyaW5nIG1fbWFya3VwOworICAgIFZlY3RvcjxLVVJMPiBtX3VyaUxp
c3Q7CisgICAgR1JlZlB0cjxHZGtQaXhidWY+IG1faW1hZ2U7CisgICAgR1JlZlB0cjxHZGtEcmFn
Q29udGV4dD4gbV9kcmFnQ29udGV4dDsKKyAgICBSZWZQdHI8UmFuZ2U+IG1fcmFuZ2U7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBEYXRhT2JqZWN0R3RrX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
Q2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNTM5NGZiMC4uM2U4MjdmOCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wMS0xMyAgTWFydGluIFJvYmluc29uICA8bWFydGlu
LmphbWVzLnJvYmluc29uQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFbmFibGUgRE9NIGNsaXBib2FyZCBhbmQgZHJhZy1h
bmQtZHJvcCBhY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMwNjIzCisKKyAgICAgICAgVXNlIERhdGFPYmplY3RHdGsgd2hlbiBzZXR0aW5nIGFu
ZCBjbGVhcmluZyBwYXN0ZWJvYXJkIGRhdGEgb24KKyAgICAgICAgdGhlIEdES19TRUxFQ1RJT05f
UFJJTUFSWSBjbGlwYm9hcmQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5n
ZWRTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OkVkaXRvckNsaWVu
dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmZpbGxTZWxlY3Rpb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6dGFyZ2V0TGlzdEZvckRh
dGFPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpnZXRDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNr
KToKKyAgICAgICAgKFdlYktpdDo6Y2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6UGFzdGVib2FyZEhlbHBlckd0azo6d3JpdGVDbGlwYm9hcmRDb250ZW50
cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oOgorCiAy
MDEwLTAxLTEyICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCBiODU2NmEyLi4yNjY3MjNiIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0yNCw2ICsyNCw3IEBA
CiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50R3RrLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCisj
aW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgogI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiCiAjaW5j
bHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSA8ZW5jaGFudC5oPgpAQCAtMzUsNiArMzYsNyBAQAog
I2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyR3RrLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5j
bHVkZSAid2Via2l0cHJpdmF0ZS5oIgpAQCAtMTg1LDM0ICsxODcsMTEgQEAgdm9pZCBFZGl0b3JD
bGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotdm9pZCBjbGlwYm9hcmRfZ2V0X2NvbnRlbnRzX2NiKEd0a0NsaXBib2FyZCogY2xpcGJv
YXJkLCBHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb25fZGF0YSwgZ3VpbnQgaW5mbywgZ3BvaW50
ZXIgZGF0YSkKLXsKLSAgICBFZGl0b3JDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PEVkaXRv
ckNsaWVudCo+KGRhdGEpOwotCi0gICAgaWYgKCFjbGllbnQtPm1fcmFuZ2UpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChzdGF0aWNfY2FzdDxnaW50PihpbmZvKSA9PSBXRUJLSVRfV0VCX1ZJ
RVdfVEFSR0VUX0lORk9fSFRNTCkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gY3JlYXRlTWFy
a3VwKGNsaWVudC0+bV9yYW5nZS5nZXQoKSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7Ci0g
ICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uX2RhdGEsIHNlbGVjdGlvbl9k
YXRhLT50YXJnZXQsIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBndWNoYXIqPihtYXJrdXAudXRmOCgpLmRhdGEoKSksIG1hcmt1cC51dGY4
KCkubGVuZ3RoKCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyB0ZXh0ID0gY2xpZW50
LT5tX3JhbmdlLT50ZXh0KCk7Ci0gICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXRfdGV4dChz
ZWxlY3Rpb25fZGF0YSwgdGV4dC51dGY4KCkuZGF0YSgpLCB0ZXh0LnV0ZjgoKS5sZW5ndGgoKSk7
Ci0gICAgfQotfQotCi12b2lkIGNsaXBib2FyZF9jbGVhcl9jb250ZW50c19jYihHdGtDbGlwYm9h
cmQqIGNsaXBib2FyZCwgZ3BvaW50ZXIgZGF0YSkKLXsKLSAgICBFZGl0b3JDbGllbnQqIGNsaWVu
dCA9IHN0YXRpY19jYXN0PEVkaXRvckNsaWVudCo+KGRhdGEpOwotCi0gICAgY2xpZW50LT5tX3Jh
bmdlID0gMDsKLX0KLQogdm9pZCBFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24oKQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gbV93ZWJWaWV3LT5wcml2
OwotICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IGNvcmUobV93ZWJWaWV3KS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdl
ID0gY29yZShtX3dlYlZpZXcpOworICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IGNvcmVQYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKICAgICBpZiAoIXRhcmdl
dEZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC0yMjAsMTYgKzE5OSwxNiBAQCB2b2lkIEVkaXRv
ckNsaWVudDo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigpCiAgICAgaWYgKHRhcmdldEZyYW1l
LT5lZGl0b3IoKS0+aWdub3JlQ29tcG9zaXRpb25TZWxlY3Rpb25DaGFuZ2UoKSkKICAgICAgICAg
cmV0dXJuOwogCisjaWYgUExBVEZPUk0oWDExKQogICAgIEd0a0NsaXBib2FyZCogY2xpcGJvYXJk
ID0gZ3RrX3dpZGdldF9nZXRfY2xpcGJvYXJkKEdUS19XSURHRVQobV93ZWJWaWV3KSwgR0RLX1NF
TEVDVElPTl9QUklNQVJZKTsKKyAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9i
amVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7CisKICAgICBpZiAodGFyZ2V0RnJhbWUt
PnNlbGVjdGlvbigpLT5pc1JhbmdlKCkpIHsKLSAgICAgICAgR3RrVGFyZ2V0TGlzdCogdGFyZ2V0
TGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfY29weV90YXJnZXRfbGlzdChtX3dlYlZpZXcpOwot
ICAgICAgICBnaW50IHRhcmdldENvdW50OwotICAgICAgICBHdGtUYXJnZXRFbnRyeSogdGFyZ2V0
cyA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdCh0YXJnZXRMaXN0LCAmdGFyZ2V0Q291
bnQpOwotICAgICAgICBndGtfY2xpcGJvYXJkX3NldF93aXRoX2RhdGEoY2xpcGJvYXJkLCB0YXJn
ZXRzLCB0YXJnZXRDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
aXBib2FyZF9nZXRfY29udGVudHNfY2IsIGNsaXBib2FyZF9jbGVhcl9jb250ZW50c19jYiwgdGhp
cyk7Ci0gICAgICAgIG1fcmFuZ2UgPSB0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFs
aXplZFJhbmdlKCk7Ci0gICAgICAgIGd0a190YXJnZXRfdGFibGVfZnJlZSh0YXJnZXRzLCB0YXJn
ZXRDb3VudCk7CisgICAgICAgIGRhdGFPYmplY3QtPmNsZWFyKCk7CisgICAgICAgIGRhdGFPYmpl
Y3QtPnNldFJhbmdlKHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2Uo
KSk7CisgICAgICAgIHBhc3RlYm9hcmRIZWxwZXJJbnN0YW5jZSgpLT53cml0ZUNsaXBib2FyZENv
bnRlbnRzKGNsaXBib2FyZCwgY29yZVBhZ2UpOwogICAgIH0KKyNlbmRpZgogCiAgICAgaWYgKCF0
YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTU1MCw3ICs1MjksNiBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RL
ZXlkb3duKEtleWJvYXJkRXZlbnQqIGV2ZW50KQogRWRpdG9yQ2xpZW50OjpFZGl0b3JDbGllbnQo
V2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICA6IG1faXNJblJlZG8oZmFsc2UpCiAgICAgLCBt
X3dlYlZpZXcod2ViVmlldykKLSAgICAsIG1fcmFuZ2UoMCkKIHsKICAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdiA9IG1fd2ViVmlldy0+cHJpdjsKICAgICBnX3NpZ25hbF9jb25uZWN0KHBy
aXYtPmltQ29udGV4dCwgImNvbW1pdCIsIEdfQ0FMTEJBQ0soaW1Db250ZXh0Q29tbWl0dGVkKSwg
dGhpcyk7CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaAppbmRl
eCAzM2VmYTRkLi45MjkyNjUxIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50R3RrLmgKQEAgLTM0LDcgKzM0LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8Z3RrL2d0ay5oPgogCiB0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3OwogCkBAIC0xMjEsMTAgKzEyMCw2
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2Vi
VmlldyogbV93ZWJWaWV3OwotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IG1fcmFuZ2U7
Ci0KLSAgICAgICAgZnJpZW5kIHZvaWQgY2xpcGJvYXJkX2dldF9jb250ZW50c19jYihHdGtDbGlw
Ym9hcmQqIGNsaXBib2FyZCwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uX2RhdGEsIGd1aW50
IGluZm8sIGdwb2ludGVyIGRhdGEpOwotICAgICAgICBmcmllbmQgdm9pZCBjbGlwYm9hcmRfY2xl
YXJfY29udGVudHNfY2IoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGdwb2ludGVyIGRhdGEpOwog
ICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVi
b2FyZEhlbHBlckd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRI
ZWxwZXJHdGsuY3BwCmluZGV4IGM3MWVmMWIuLjRkYzJiNTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAKKysrIGIvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcApAQCAtMjAsMTMgKzIwLDE0
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlckd0ay5o
IgogCisjaW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgorI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUg
IndlYmtpdHdlYmZyYW1lLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1ZGUg
IndlYmtpdHByaXZhdGUuaCIKIAotI2luY2x1ZGUgPGd0ay9ndGsuaD4KLQogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzksNCArODAsODEgQEAgZ2lu
dCBQYXN0ZWJvYXJkSGVscGVyR3RrOjpnZXRXZWJWaWV3VGFyZ2V0SW5mb0h0bWwoKSBjb25zdAog
ICAgIHJldHVybiBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDsKIH0KIAorc3RhdGlj
IHZvaWQgZmlsbFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSwg
Z3VpbnQgaW5mbywgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCkKK3sKKyAgICBpZiAoaW5mbyA9
PSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCkKKyAgICAgICAgZ3RrX3NlbGVjdGlv
bl9kYXRhX3NldF90ZXh0KHNlbGVjdGlvbkRhdGEsIGRhdGFPYmplY3QtPnRleHQoKS51dGY4KCku
ZGF0YSgpLCAtMSk7CisgICAgZWxzZSBpZiAoaW5mbyA9PSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VU
X0lORk9fSFRNTCkgeworICAgICAgICBHT3duUHRyPGdjaGFyPiBtYXJrdXAoZ19zdHJkdXAoZGF0
YU9iamVjdC0+bWFya3VwKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBndGtfc2VsZWN0aW9u
X2RhdGFfc2V0KHNlbGVjdGlvbkRhdGEsIHNlbGVjdGlvbkRhdGEtPnRhcmdldCwgOCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+
KG1hcmt1cC5nZXQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG1h
cmt1cC5nZXQoKSkpOworICAgIH0KK30KKworc3RhdGljIEd0a1RhcmdldExpc3QqIHRhcmdldExp
c3RGb3JEYXRhT2JqZWN0KERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QpCit7CisgICAgR3RrVGFy
Z2V0TGlzdCogbGlzdCA9IGd0a190YXJnZXRfbGlzdF9uZXcoMCwgMCk7CisKKyAgICBpZiAoZGF0
YU9iamVjdC0+aGFzVGV4dCgpKQorICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFy
Z2V0cyhsaXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCk7CisKKyAgICBpZiAo
ZGF0YU9iamVjdC0+aGFzTWFya3VwKCkpCisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlz
dCwgZ2RrTWFya3VwQXRvbSwgMCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUwpOwor
CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBib29sIHNldHRpbmdDbGlwYm9hcmQgPSBm
YWxzZTsKK3N0YXRpYyB2b2lkIGdldENsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2soR3RrQ2xpcGJv
YXJkKiBjbGlwYm9hcmQsIEd0a1NlbGVjdGlvbkRhdGEgKnNlbGVjdGlvbkRhdGEsIGd1aW50IGlu
Zm8sIGdwb2ludGVyIGRhdGEpCit7CisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IERh
dGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAgIEFTU0VSVChkYXRhT2Jq
ZWN0KTsKKyAgICBmaWxsU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCBkYXRhT2Jq
ZWN0KTsKK30KKworc3RhdGljIHZvaWQgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrKEd0
a0NsaXBib2FyZCogY2xpcGJvYXJkLCBncG9pbnRlciBkYXRhKQoreworICAgIC8vIEdUSyB3aWxs
IGNhbGwgdGhlIGNsZWFyIGNsaXBib2FyZCBjYWxsYmFjayB3aGlsZSBzZXR0aW5nIGNsaXBib2Fy
ZCBkYXRhLgorICAgIC8vIFdlIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gY2xlYXIgdGhlIERhdGFP
YmplY3QgZHVyaW5nIHRoYXQgdGltZS4KKyAgICBpZiAoc2V0dGluZ0NsaXBib2FyZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IERhdGFPYmplY3RH
dGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAgIEFTU0VSVChkYXRhT2JqZWN0KTsKKwor
ICAgIGRhdGFPYmplY3QtPmNsZWFyKCk7CisgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgV2ViQ29y
ZTo6UGFnZSogY29yZVBhZ2UgPSByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlBhZ2UqPihkYXRh
KTsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gY29yZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKKworICAgICAgICAvLyBDb2xsYXBzZSB0aGUgc2VsZWN0aW9u
IHdpdGhvdXQgY2xlYXJpbmcgaXQKKyAgICAgICAgQVNTRVJUKGZyYW1lKTsKKyAgICAgICAgZnJh
bWUtPnNlbGVjdGlvbigpLT5zZXRCYXNlKGZyYW1lLT5zZWxlY3Rpb24oKS0+ZXh0ZW50KCksIGZy
YW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKSk7CisgICAgfQorfQorCit2b2lkIFBhc3RlYm9h
cmRIZWxwZXJHdGs6OndyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlwYm9h
cmQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IERh
dGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOworICAgIEd0a1RhcmdldExpc3Qq
IGxpc3QgPSB0YXJnZXRMaXN0Rm9yRGF0YU9iamVjdChkYXRhT2JqZWN0KTsKKworICAgIGludCBu
dW1iZXJPZlRhcmdldHM7CisgICAgR3RrVGFyZ2V0RW50cnkqIHRhYmxlID0gZ3RrX3RhcmdldF90
YWJsZV9uZXdfZnJvbV9saXN0KGxpc3QsICZudW1iZXJPZlRhcmdldHMpOworCisgICAgaWYgKG51
bWJlck9mVGFyZ2V0cyA+IDAgJiYgdGFibGUpIHsKKyAgICAgICAgc2V0dGluZ0NsaXBib2FyZCA9
IHRydWU7CisgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X3dpdGhfZGF0YShjbGlwYm9hcmQsIHRh
YmxlLCBudW1iZXJPZlRhcmdldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZXRDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrLCBkYXRhKTsKKyAgICAg
ICAgc2V0dGluZ0NsaXBib2FyZCA9IGZhbHNlOworICAgIH0gZWxzZQorICAgICAgICBndGtfY2xp
cGJvYXJkX2NsZWFyKGNsaXBib2FyZCk7CisKKyAgICBpZiAodGFibGUpCisgICAgICAgIGd0a190
YXJnZXRfdGFibGVfZnJlZSh0YWJsZSwgbnVtYmVyT2ZUYXJnZXRzKTsKKworICAgIGd0a190YXJn
ZXRfbGlzdF91bnJlZihsaXN0KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuaAppbmRleCAxMmJhMjA3Li45N2VmZjkwIDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuaAorKysg
Yi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuaApAQCAtNDcs
NiArNDcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHdGtUYXJnZXRMaXN0KiB0YXJnZXRMaXN0
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBnaW50IGdldFdlYlZpZXdUYXJnZXRJbmZvSHRtbCgpIGNv
bnN0OwogCisgICAgdm9pZCB3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xp
cGJvYXJkLCBncG9pbnRlciBkYXRhID0gMCk7CisKIHByaXZhdGU6CiAgICAgR3RrVGFyZ2V0TGlz
dCogbV90YXJnZXRMaXN0OwogfTsKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53774</attachid>
            <date>2010-04-19 23:19:55 -0700</date>
            <delta_ts>2010-04-23 07:59:28 -0700</delta_ts>
            <desc>Slight reorganization of my earlier work</desc>
            <filename>0001-Move-most-of-the-PasteboardHelper-logic-into-WebCore.patch</filename>
            <type>text/plain</type>
            <size>26159</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSBmNjBjZmI2M2U1M2NkODExMTg4ZjlkMzIzNGEyZmRiYjgyNjMxMGQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBNb24sIDE5IEFwciAyMDEwIDAxOjA0OjQ3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
TW92ZSBtb3N0IG9mIHRoZSBQYXN0ZWJvYXJkSGVscGVyIGxvZ2ljIGludG8gV2ViQ29yZS4KCi0t
LQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MzcgKysrKysKIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAxICsKIFdlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oICAgICAgICAgICAgICAg
ICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCAg
ICAgICAgICAgIHwgICAxMyArLQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5jcHAgICAgICAgICB8ICAxNjggKysrKysrKysrKysrKysrKysrKysrCiBXZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmggICAgICAgICAgIHwgICAzMCArKystCiBXZWJLaXQv
Z3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMSArKysKIFdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCAgICAgfCAgIDI3ICsr
Ky0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5jcHAgfCAg
MTQ5ICsrLS0tLS0tLS0tLS0tLS0tLQogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJv
YXJkSGVscGVyR3RrLmggICB8ICAgMTMgKy0KIDEwIGZpbGVzIGNoYW5nZWQsIDMwOSBpbnNlcnRp
b25zKCspLCAxNTYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA5ZmFkOGMuLjc4ZWU1MGEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDAgQEAKKzIwMTAtMDQtMTkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IEVuYWJsZSBET00gY2xpcGJvYXJkIGFuZCBkcmFnLWFuZC1kcm9wIGFjY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA2MjMKKworICAgICAgICBN
b3ZlIG1vc3Qgb2YgdGhlIFBhc3RlYm9hcmRIZWxwZXIgbG9naWMgaW50byBXZWJDb3JlLiBUaGlz
IGhlbHBzCisgICAgICAgIHByZXBhcmUgZm9yIFdlYktpdDIgYW5kIGxlYWRzIHRvIGEgY2xlYXJl
ciBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zCisgICAgICAgIGJldHdlZW4gdGhlIFdlYktpdCBhbmQg
V2ViQ29yZSBsYXllcnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIGZ1bmN0aW9uYWxpdHkg
aGFzIG5vdCBjaGFuZ2VkLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBQYXN0Ym9h
cmRIZWxwZXIuY3BwIHRvIGxpc3Qgb2Ygc291cmNlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0
ZWJvYXJkLmg6IEFkZGVkIGEgZ2V0dGVyIGZvciB0aGUgUGFzdGVib2FyZEhlbHBlciBhbmQgbWFk
ZSB0aGUgbWVtYmVyIHByaXZhdGUuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRH
dGsuY3BwOiBVcGRhdGUgUGFzdGVib2FyZEhlbHBlciBtZXRob2QgY2FsbHMgdG8gdXNlIG5ldyBu
YW1pbmcuCisgICAgICAgIChXZWJDb3JlOjpjbGlwYm9hcmRfZ2V0X2NvbnRlbnRzX2NiKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpoZWxwZXIpOiBBZGRlZCwgbWVtYmVy
IGlzIG5vdyBwcml2YXRlLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkwp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQp
OiBVcGRhdGUgdG8gcmVmbGVjdCBtZXRob2QgcmVuYW1pbmcuCisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpwbGFpblRleHQpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEhlbHBlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhl
bHBlcjo6UGFzdGVib2FyZEhlbHBlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZEhlbHBlcjo6flBhc3RlYm9hcmRIZWxwZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmRIZWxwZXI6OmluaXRpYWxpemVUYXJnZXRMaXN0KTogQWRkZWQsIG9yaWdpbmFs
bHkgZnJvbSBXZWJLaXQuCisgICAgICAgIChXZWJDb3JlOjp3aWRnZXRGcm9tRnJhbWUpOiBBZGRl
ZCBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVyOjpn
ZXRDdXJyZW50Q2xpcGJvYXJkKTogQWRkZWQsIG9yaWdpbmFsbHkgZnJvbSBXZWJLaXQuCisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVyOjpnZXRDbGlwYm9hcmQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OmdldFByaW1hcnlTZWxlY3Rpb25DbGlw
Ym9hcmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OnRhcmdl
dExpc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OmZpbGxT
ZWxlY3Rpb25EYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVy
Ojp0YXJnZXRMaXN0Rm9yRGF0YU9iamVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Z2V0
Q2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y2xl
YXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKTogRGl0dG8uCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaDogTW92ZWQgbWV0aG9kcyBmcm9tIFdl
YktpdCB0byBXZWJDb3JlLgorCiAyMDEwLTA0LTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5k
ZXggNjRiOTgwMy4uNzVjNmY0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQor
KysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yMDk0LDYgKzIwOTQsNyBAQCB3ZWJjb3Jl
Z3RrX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL01JTUVUeXBlUmVnaXN0cnlH
dGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9Nb3VzZUV2ZW50R3RrLmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkSGVscGVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNw
cCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUG9wdXBNZW51R3RrLmNwcCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCmluZGV4IDgzNGRkYTIuLmMzNDc2YTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC0x
MDgsNyArMTA4LDcgQEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgc2V0
SGVscGVyKFBhc3RlYm9hcmRIZWxwZXIqKTsKLSAgICBQYXN0ZWJvYXJkSGVscGVyKiBtX2hlbHBl
cjsKKyAgICBQYXN0ZWJvYXJkSGVscGVyKiBoZWxwZXIoKTsKICNlbmRpZgogCiBwcml2YXRlOgpA
QCAtMTMxLDYgKzEzMSwxMCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAg
IFBhc3RlYm9hcmRQcml2YXRlIHA7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBQ
YXN0ZWJvYXJkSGVscGVyKiBtX2hlbHBlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBlMDY5NWJl
Li45MDdhNTVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3Rr
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBzdGF0aWMgdm9pZCBjbGlwYm9hcmRfZ2V0X2NvbnRlbnRzX2NiKEd0a0NsaXBi
b2FyZCAqY2xpcGJvYXJkLCBHdGtTZWxlY3Rpb25EYXRhCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGd1aW50IGluZm8sIGdwb2ludGVyIGRhdGEpIHsKICAgICBQYXN0ZWJv
YXJkU2VsZWN0aW9uRGF0YSogY2xpcGJvYXJkRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UGFzdGVi
b2FyZFNlbGVjdGlvbkRhdGEqPihkYXRhKTsKICAgICBBU1NFUlQoY2xpcGJvYXJkRGF0YSk7Ci0g
ICAgaWYgKChnaW50KWluZm8gPT0gUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+bV9o
ZWxwZXItPmdldFdlYlZpZXdUYXJnZXRJbmZvSHRtbCgpKQorICAgIGlmIChpbmZvID09IFBhc3Rl
Ym9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmhlbHBlcigpLT5nZXRJZEZvclRhcmdldFR5cGUo
UGFzdGVib2FyZEhlbHBlcjo6VGFyZ2V0VHlwZU1hcmt1cCkpCiAgICAgICAgIGd0a19zZWxlY3Rp
b25fZGF0YV9zZXQoc2VsZWN0aW9uX2RhdGEsIHNlbGVjdGlvbl9kYXRhLT50YXJnZXQsIDgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBndWNo
YXIqPihjbGlwYm9hcmREYXRhLT5tYXJrdXAoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ191dGY4X3N0cmxlbihjbGlwYm9hcmREYXRhLT5tYXJrdXAoKSwgLTEpKTsKQEAgLTg5
LDYgKzg5LDExIEBAIFBhc3RlYm9hcmQ6On5QYXN0ZWJvYXJkKCkKICAgICBkZWxldGUgbV9oZWxw
ZXI7CiB9CiAKK1Bhc3RlYm9hcmRIZWxwZXIqIFBhc3RlYm9hcmQ6OmhlbHBlcigpCit7CisgICAg
cmV0dXJuIG1faGVscGVyOworfQorCiB2b2lkIFBhc3RlYm9hcmQ6OnNldEhlbHBlcihQYXN0ZWJv
YXJkSGVscGVyKiBoZWxwZXIpCiB7CiAgICAgbV9oZWxwZXIgPSBoZWxwZXI7CkBAIC0xMjEsNyAr
MTI2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYsIEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3RrQ2xpcGJv
YXJkKiBjbGlwYm9hcmQgPSBtX2hlbHBlci0+Z2V0Q2xpcGJvYXJkKGZyYW1lKTsKLSAgICBHdGtD
bGlwYm9hcmQqIHByaW1hcnkgPSBtX2hlbHBlci0+Z2V0UHJpbWFyeShmcmFtZSk7CisgICAgR3Rr
Q2xpcGJvYXJkKiBwcmltYXJ5ID0gbV9oZWxwZXItPmdldFByaW1hcnlTZWxlY3Rpb25DbGlwYm9h
cmQoZnJhbWUpOwogICAgIENTdHJpbmcgdXRmOCA9IHVybC5zdHJpbmcoKS51dGY4KCk7CiAgICAg
Z3RrX2NsaXBib2FyZF9zZXRfdGV4dChjbGlwYm9hcmQsIHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0
aCgpKTsKICAgICBndGtfY2xpcGJvYXJkX3NldF90ZXh0KHByaW1hcnksIHV0ZjguZGF0YSgpLCB1
dGY4Lmxlbmd0aCgpKTsKQEAgLTE2MSw3ICsxNjYsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50RnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBQYXNzUmVm
UAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQogewogICAgIEdk
a0F0b20gdGV4dEh0bWwgPSBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygidGV4dC9odG1s
Iik7Ci0gICAgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBtX2hlbHBlci0+Z2V0Q3VycmVudFRh
cmdldChmcmFtZSk7CisgICAgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBtX2hlbHBlci0+Z2V0
Q3VycmVudENsaXBib2FyZChmcmFtZSk7CiAgICAgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKIAog
ICAgIGlmIChHdGtTZWxlY3Rpb25EYXRhKiBkYXRhID0gZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl9j
b250ZW50cyhjbGlwYm9hcmQsIHRleHRIdG1sKSkgewpAQCAtMTk2LDcgKzIwMSw3IEBAIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gUGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudChGcmFt
ZSogZnJhbWUsIFBhc3NSZWZQCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUq
IGZyYW1lKQogewotICAgIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkID0gbV9oZWxwZXItPmdldEN1
cnJlbnRUYXJnZXQoZnJhbWUpOworICAgIEd0a0NsaXBib2FyZCogY2xpcGJvYXJkID0gbV9oZWxw
ZXItPmdldEN1cnJlbnRDbGlwYm9hcmQoZnJhbWUpOwogCiAgICAgZ2NoYXIqIHV0ZjggPSBndGtf
Y2xpcGJvYXJkX3dhaXRfZm9yX3RleHQoY2xpcGJvYXJkKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkSGVscGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li44ODZkZjE1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHAKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgTWFydGluIFJvYmluc29uIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICoKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxw
ZXIuaCIKKworI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYXN0ZWJv
YXJkLmgiCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgR2RrQXRvbSBnZGtNYXJrdXBB
dG9tID0gZ2RrX2F0b21faW50ZXJuKCJ0ZXh0L2h0bWwiLCBGQUxTRSk7CisKK1Bhc3RlYm9hcmRI
ZWxwZXI6OlBhc3RlYm9hcmRIZWxwZXIoKQorICAgIDogbV90YXJnZXRMaXN0KGd0a190YXJnZXRf
bGlzdF9uZXcoMCwgMCkpCit7Cit9CisKK1Bhc3RlYm9hcmRIZWxwZXI6On5QYXN0ZWJvYXJkSGVs
cGVyKCkKK3sKKyAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYobV90YXJnZXRMaXN0KTsKK30KKwor
Cit2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OmluaXRpYWxpemVUYXJnZXRMaXN0KCkKK3sKKyAgICBn
dGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyhtX3RhcmdldExpc3QsIGdldElkRm9yVGFy
Z2V0VHlwZShUYXJnZXRUeXBlVGV4dCkpOworICAgIGd0a190YXJnZXRfbGlzdF9hZGQobV90YXJn
ZXRMaXN0LCBnZGtNYXJrdXBBdG9tLCAwLCBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZU1h
cmt1cCkpOworfQorCitzdGF0aWMgaW5saW5lIEd0a1dpZGdldCogd2lkZ2V0RnJvbUZyYW1lKEZy
YW1lKiBmcmFtZSkKK3sKKyAgICBBU1NFUlQoZnJhbWUpOworICAgIFBhZ2UqIHBhZ2UgPSBmcmFt
ZS0+cGFnZSgpOworICAgIEFTU0VSVChwYWdlKTsKKyAgICBDaHJvbWUqIGNocm9tZSA9IHBhZ2Ut
PmNocm9tZSgpOworICAgIEFTU0VSVChjaHJvbWUpOworICAgIFBsYXRmb3JtUGFnZUNsaWVudCBj
bGllbnQgPSBjaHJvbWUtPnBsYXRmb3JtUGFnZUNsaWVudCgpOworICAgIEFTU0VSVChjbGllbnQp
OworICAgIHJldHVybiBjbGllbnQ7Cit9CisKK0d0a0NsaXBib2FyZCogUGFzdGVib2FyZEhlbHBl
cjo6Z2V0Q3VycmVudENsaXBib2FyZChGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKHVzZVByaW1h
cnlTZWxlY3Rpb25DbGlwYm9hcmQod2lkZ2V0RnJvbUZyYW1lKGZyYW1lKSkpCisgICAgICAgIHJl
dHVybiBnZXRQcmltYXJ5U2VsZWN0aW9uQ2xpcGJvYXJkKGZyYW1lKTsKKyAgICByZXR1cm4gZ2V0
Q2xpcGJvYXJkKGZyYW1lKTsKK30KKworR3RrQ2xpcGJvYXJkKiBQYXN0ZWJvYXJkSGVscGVyOjpn
ZXRDbGlwYm9hcmQoRnJhbWUqIGZyYW1lKSBjb25zdAoreworICAgIHJldHVybiBndGtfd2lkZ2V0
X2dldF9jbGlwYm9hcmQod2lkZ2V0RnJvbUZyYW1lKGZyYW1lKSwgR0RLX1NFTEVDVElPTl9DTElQ
Qk9BUkQpOworfQorCitHdGtDbGlwYm9hcmQqIFBhc3RlYm9hcmRIZWxwZXI6OmdldFByaW1hcnlT
ZWxlY3Rpb25DbGlwYm9hcmQoRnJhbWUqIGZyYW1lKSBjb25zdAoreworICAgICAgICByZXR1cm4g
Z3RrX3dpZGdldF9nZXRfY2xpcGJvYXJkKHdpZGdldEZyb21GcmFtZShmcmFtZSksIEdES19TRUxF
Q1RJT05fUFJJTUFSWSk7Cit9CisKK0d0a1RhcmdldExpc3QqIFBhc3RlYm9hcmRIZWxwZXI6OnRh
cmdldExpc3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3RhcmdldExpc3Q7Cit9CisKK3ZvaWQg
UGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2Vs
ZWN0aW9uRGF0YSwgZ3VpbnQgaW5mbywgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCkKK3sKKyAg
ICBpZiAoaW5mbyA9PSBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZVRleHQpKQorICAgICAg
ICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0X3RleHQoc2VsZWN0aW9uRGF0YSwgZGF0YU9iamVjdC0+
dGV4dCgpLnV0ZjgoKS5kYXRhKCksIC0xKTsKKyAgICBlbHNlIGlmIChpbmZvID09IGdldElkRm9y
VGFyZ2V0VHlwZShUYXJnZXRUeXBlTWFya3VwKSkgeworICAgICAgICBHT3duUHRyPGdjaGFyPiBt
YXJrdXAoZ19zdHJkdXAoZGF0YU9iamVjdC0+bWFya3VwKCkudXRmOCgpLmRhdGEoKSkpOworICAg
ICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbkRhdGEsIHNlbGVjdGlvbkRhdGEt
PnRhcmdldCwgOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PGNvbnN0IGd1Y2hhcio+KG1hcmt1cC5nZXQoKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RybGVuKG1hcmt1cC5nZXQoKSkpOworICAgIH0KK30KKworR3RrVGFyZ2V0TGlz
dCogUGFzdGVib2FyZEhlbHBlcjo6dGFyZ2V0TGlzdEZvckRhdGFPYmplY3QoRGF0YU9iamVjdEd0
ayogZGF0YU9iamVjdCkKK3sKKyAgICBHdGtUYXJnZXRMaXN0KiBsaXN0ID0gZ3RrX3RhcmdldF9s
aXN0X25ldygwLCAwKTsKKworICAgIGlmIChkYXRhT2JqZWN0LT5oYXNUZXh0KCkpCisgICAgICAg
IGd0a190YXJnZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKGxpc3QsIGdldElkRm9yVGFyZ2V0VHlw
ZShUYXJnZXRUeXBlVGV4dCkpOworCisgICAgaWYgKGRhdGFPYmplY3QtPmhhc01hcmt1cCgpKQor
ICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QsIGdka01hcmt1cEF0b20sIDAsIGdldElk
Rm9yVGFyZ2V0VHlwZShUYXJnZXRUeXBlTWFya3VwKSk7CisKKyAgICByZXR1cm4gbGlzdDsKK30K
Kworc3RhdGljIERhdGFPYmplY3RHdGsqIHNldHRpbmdDbGlwYm9hcmREYXRhT2JqZWN0ID0gMDsK
Kworc3RhdGljIHZvaWQgZ2V0Q2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayhHdGtDbGlwYm9hcmQq
IGNsaXBib2FyZCwgR3RrU2VsZWN0aW9uRGF0YSAqc2VsZWN0aW9uRGF0YSwgZ3VpbnQgaW5mbywg
Z3BvaW50ZXIgZGF0YSkKK3sKKyAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9i
amVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7CisgICAgQVNTRVJUKGRhdGFPYmplY3Qp
OworICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCktPmhlbHBlcigpLT5maWxsU2Vs
ZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCBkYXRhT2JqZWN0KTsKK30KKworc3RhdGlj
IHZvaWQgY2xlYXJDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrKEd0a0NsaXBib2FyZCogY2xpcGJv
YXJkLCBncG9pbnRlciBkYXRhKQoreworICAgIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSBE
YXRhT2JqZWN0R3RrOjpmb3JDbGlwYm9hcmQoY2xpcGJvYXJkKTsKKyAgICBBU1NFUlQoZGF0YU9i
amVjdCk7CisKKyAgICAvLyBPbmx5IGNsZWFyIHRoZSBEYXRhT2JqZWN0IGZvciB0aGlzIGNsaXBi
b2FyZCBpZiB3ZSBhcmUgbm90IGN1cnJlbnRseSBzZXR0aW5nIGl0LgorICAgIGlmIChkYXRhT2Jq
ZWN0ICE9IHNldHRpbmdDbGlwYm9hcmREYXRhT2JqZWN0KQorICAgICAgICBkYXRhT2JqZWN0LT5j
bGVhcigpOworCisgICAgLy8gT25seSBjb2xsYXBzZSB0aGUgc2VsZWN0aW9uIGlmIHRoaXMgaXMg
YW4gWDExIHByaW1hcnkgY2xpcGJvYXJkCisgICAgLy8gYW5kIHdlIGFyZW4ndCBjdXJyZW50bHkg
c2V0dGluZyB0aGUgY2xpcGJvYXJkIGZvciB0aGlzIFdlYlZpZXcuCisgICAgaWYgKCFkYXRhKQor
ICAgICAgICByZXR1cm47CisKKyAgICBHQ2xvc3VyZSogY2FsbGJhY2sgPSBzdGF0aWNfY2FzdDxH
Q2xvc3VyZSo+KGRhdGEpOworICAgIEdWYWx1ZSBmaXJzdEFyZ3VtZW50ID0gezAsIHt7MH19fTsK
KyAgICBnX3ZhbHVlX2luaXQoJmZpcnN0QXJndW1lbnQsIEdfVFlQRV9QT0lOVEVSKTsKKyAgICBn
X3ZhbHVlX3NldF9wb2ludGVyKCZmaXJzdEFyZ3VtZW50LCBjbGlwYm9hcmQpOworICAgIGdfY2xv
c3VyZV9pbnZva2UoY2FsbGJhY2ssIDAsIDEsICZmaXJzdEFyZ3VtZW50LCAwKTsKKyAgICBnX2Ns
b3N1cmVfdW5yZWYoY2FsbGJhY2spOworfQorCit2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OndyaXRl
Q2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEdDbG9zdXJlKiBjYWxs
YmFjaykKK3sKKyAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6
Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7CisgICAgR3RrVGFyZ2V0TGlzdCogbGlzdCA9IHRhcmdl
dExpc3RGb3JEYXRhT2JqZWN0KGRhdGFPYmplY3QpOworCisgICAgaW50IG51bWJlck9mVGFyZ2V0
czsKKyAgICBHdGtUYXJnZXRFbnRyeSogdGFibGUgPSBndGtfdGFyZ2V0X3RhYmxlX25ld19mcm9t
X2xpc3QobGlzdCwgJm51bWJlck9mVGFyZ2V0cyk7CisKKyAgICBpZiAobnVtYmVyT2ZUYXJnZXRz
ID4gMCAmJiB0YWJsZSkgeworICAgICAgICBzZXR0aW5nQ2xpcGJvYXJkRGF0YU9iamVjdCA9IGRh
dGFPYmplY3Q7CisKKyAgICAgICAgZ3RrX2NsaXBib2FyZF9zZXRfd2l0aF9kYXRhKGNsaXBib2Fy
ZCwgdGFibGUsIG51bWJlck9mVGFyZ2V0cywKKyAgICAgICAgICAgIGdldENsaXBib2FyZENvbnRl
bnRzQ2FsbGJhY2ssIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgY2FsbGJhY2spOwor
CisgICAgICAgIHNldHRpbmdDbGlwYm9hcmREYXRhT2JqZWN0ID0gMDsKKworICAgIH0gZWxzZQor
ICAgICAgICBndGtfY2xpcGJvYXJkX2NsZWFyKGNsaXBib2FyZCk7CisKKyAgICBpZiAodGFibGUp
CisgICAgICAgIGd0a190YXJnZXRfdGFibGVfZnJlZSh0YWJsZSwgbnVtYmVyT2ZUYXJnZXRzKTsK
KyAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYobGlzdCk7Cit9CisKK30KKwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGFzdGVib2FyZEhlbHBlci5oCmluZGV4IGZmZjlhOWIuLjZlNWQzNjYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmgKQEAgLTEsNiArMSw3IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA3IEx1Y2EgQnJ1bm8gPGxldGhhbG1hbjg4QGdtYWlsLmNvbT4KICAq
IENvcHlyaWdodCAoQykgMjAwOSBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJp
Z2h0IChDKSAyMDEwIE1hcnRpbiBSb2JpbnNvbiA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTMyLDE4ICszMywzNSBAQAogCiB0
eXBlZGVmIHN0cnVjdCBfR3RrQ2xpcGJvYXJkIEd0a0NsaXBib2FyZDsKIHR5cGVkZWYgc3RydWN0
IF9HdGtUYXJnZXRMaXN0IEd0a1RhcmdldExpc3Q7Cit0eXBlZGVmIHN0cnVjdCBfR3RrV2lkZ2V0
IEd0a1dpZGdldDsKK3R5cGVkZWYgc3RydWN0IF9HdGtTZWxlY3Rpb25EYXRhIEd0a1NlbGVjdGlv
bkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGF0YU9iamVjdEd0azsKKwog
Y2xhc3MgUGFzdGVib2FyZEhlbHBlciB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+UGFzdGVib2Fy
ZEhlbHBlcigpIHt9OworICAgIFBhc3RlYm9hcmRIZWxwZXIoKTsKKyAgICB2aXJ0dWFsIH5QYXN0
ZWJvYXJkSGVscGVyKCk7CisKKyAgICBHdGtDbGlwYm9hcmQqIGdldEN1cnJlbnRDbGlwYm9hcmQo
RnJhbWUqKTsKKyAgICBHdGtDbGlwYm9hcmQqIGdldENsaXBib2FyZChGcmFtZSopIGNvbnN0Owor
ICAgIEd0a0NsaXBib2FyZCogZ2V0UHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZChGcmFtZSopIGNv
bnN0OworICAgIEd0a1RhcmdldExpc3QqIHRhcmdldExpc3QoKSBjb25zdDsKKyAgICB2b2lkIGZp
bGxTZWxlY3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRhdGEqLCBndWludCwgRGF0YU9iamVjdEd0ayop
OworICAgIHZvaWQgd3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBHQ2xvc3Vy
ZSopOworCisgICAgZW51bSBQYXN0ZWJvYXJkVGFyZ2V0VHlwZSB7IFRhcmdldFR5cGVUZXh0LCBU
YXJnZXRUeXBlTWFya3VwLCBUYXJnZXRUeXBlVVJJTGlzdCwgVGFyZ2V0VHlwZU5ldHNjYXBlVVJM
LCBUYXJnZXRUeXBlSW1hZ2UsIFRhcmdldFR5cGVVbmtub3duIH07CisgICAgdmlydHVhbCBndWlu
dCBnZXRJZEZvclRhcmdldFR5cGUoUGFzdGVib2FyZFRhcmdldFR5cGUpID0gMDsKKworcHJvdGVj
dGVkOgorICAgIHZvaWQgaW5pdGlhbGl6ZVRhcmdldExpc3QoKTsKKyAgICB2aXJ0dWFsIGJvb2wg
dXNlUHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZChHdGtXaWRnZXQqKSA9IDA7CiAKLSAgICB2aXJ0
dWFsIEd0a0NsaXBib2FyZCogZ2V0Q3VycmVudFRhcmdldChGcmFtZSopIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIEd0a0NsaXBib2FyZCogZ2V0Q2xpcGJvYXJkKEZyYW1lKikgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgR3RrQ2xpcGJvYXJkKiBnZXRQcmltYXJ5KEZyYW1lKikgY29uc3QgPSAwOwot
ICAgIHZpcnR1YWwgR3RrVGFyZ2V0TGlzdCogdGFyZ2V0TGlzdCgpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIGdpbnQgZ2V0V2ViVmlld1RhcmdldEluZm9IdG1sKCkgY29uc3QgPSAwOworcHJpdmF0
ZToKKyAgICBHdGtUYXJnZXRMaXN0KiBtX3RhcmdldExpc3Q7CisgICAgR3RrVGFyZ2V0TGlzdCog
dGFyZ2V0TGlzdEZvckRhdGFPYmplY3QoRGF0YU9iamVjdEd0ayopOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA4
MWQ2ZWExLi4xNjkyMmE5IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA0LTE5ICBNYXJ0aW4g
Um9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFbmFibGUgRE9NIGNsaXBib2FyZCBhbmQg
ZHJhZy1hbmQtZHJvcCBhY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMwNjIzCisKKyAgICAgICAgTW92ZSBtb3N0IG9mIHRoZSBQYXN0ZWJvYXJk
SGVscGVyIGxvZ2ljIGludG8gV2ViQ29yZS4gVGhpcyBoZWxwcworICAgICAgICBwcmVwYXJlIGZv
ciBXZWJLaXQyIGFuZCBsZWFkcyB0byBhIGNsZWFyZXIgc2VwYXJhdGlvbiBvZiBjb25jZXJucwor
ICAgICAgICBiZXR3ZWVuIHRoZSBXZWJLaXQgYW5kIFdlYkNvcmUgbGF5ZXJzLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Y29sbGFwc2VTZWxlY3Rpb24pOiBDb252ZXJ0ZWQgdGhpcyBsb2dpYyB0byBhIEdDbG9zdXJlIGNh
bGxiYWNrLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OnJlc3BvbmRUb0NoYW5nZWRT
ZWxlY3Rpb24pOiBDb2xsYXBzZSBzZWxlY3Rpb24gdmlhIEdDbG9zdXJlIG5vdy4KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcDogTW92ZWQgbW9zdCBvZiB0
aGUgY29kZSB0byBXZWJDb3JlLgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkSGVscGVyR3Rr
OjpQYXN0ZWJvYXJkSGVscGVyR3RrKTogVGhpcyBjb25zdHJ1Y3RvciBqdXN0IGluaXRpYWxpemVz
IHRoZSB0YXJnZXQgbGlzdC4KKyAgICAgICAgKFdlYktpdDo6UGFzdGVib2FyZEhlbHBlckd0azo6
flBhc3RlYm9hcmRIZWxwZXJHdGspOiBUaGUgZGVzdHJ1Y3RvciBubyBsb25nZXIgbmVlZHMgdG8g
ZnJlZSB0aGUgdGFyZ2V0IGxpc3QuCisgICAgICAgIChXZWJLaXQ6OlBhc3RlYm9hcmRIZWxwZXJH
dGs6OmdldElkRm9yVGFyZ2V0VHlwZSk6IEFkZGVkLCB2aXJ0dWFsIG1ldGhvZCBmb3IgZ2V0dGlu
ZyB0YXJnZXQgaWRzLgorICAgICAgICAoV2ViS2l0OjpQYXN0ZWJvYXJkSGVscGVyR3RrOjp1c2VQ
cmltYXJ5U2VsZWN0aW9uQ2xpcGJvYXJkKTogQWRkZWQsIHZpcnR1YWwgbWV0aG9kIGZvciBxdWVy
eWluZyBjdXJyZW50IGNsaXBib2FyZC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QYXN0ZWJv
YXJkSGVscGVyR3RrLmg6IFVwZGF0ZSBtZXRob2QgbGlzdCB0byByZWZsZWN0IHJlZHVjZWQgZnVu
Y3Rpb25hbGl0eS4KKwogMjAxMC0wNC0xOSAgRGllZ28gRXNjYWxhbnRlIFVycmVsbyAgPGRlc2Nh
bGFudGVAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAgYi9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggNGVlOWQ1
Ni4uNTExNzJiNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
R3RrLmNwcApAQCAtMzMsMTIgKzMzLDEzIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
IDxnbGliLmg+CiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIm1hcmt1cC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBhc3RlYm9hcmRIZWxwZXJHdGsuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZl
bnQuaCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgotI2luY2x1ZGUgIm1hcmt1
cC5oIgorI2luY2x1ZGUgIndlYmtpdG1hcnNoYWwuaCIKICNpbmNsdWRlICJ3ZWJraXRwcml2YXRl
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0xOTYsNiArMTk3LDIzIEBA
IHZvaWQgRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKQogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKK3N0YXRpYyBXZWJLaXRXZWJWaWV3KiB2aWV3U2V0dGluZ0NsaXBi
b2FyZCA9IDA7CitzdGF0aWMgdm9pZCBjb2xsYXBzZVNlbGVjdGlvbihHdGtDbGlwYm9hcmQqIGNs
aXBib2FyZCwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBpZiAodmlld1NldHRpbmdD
bGlwYm9hcmQgJiYgdmlld1NldHRpbmdDbGlwYm9hcmQgPT0gd2ViVmlldykKKyAgICAgICAgcmV0
dXJuOworCisgICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2UgPSBjb3JlKHdlYlZpZXcpOworICAg
IGlmICghY29yZVBhZ2UgfHwgIWNvcmVQYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgRnJhbWUqIGZyYW1lID0gY29yZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKworICAgIC8vIENvbGxhcHNlIHRoZSBzZWxlY3Rpb24g
d2l0aG91dCBjbGVhcmluZyBpdAorICAgIEFTU0VSVChmcmFtZSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5zZXRCYXNlKGZyYW1lLT5zZWxlY3Rpb24oKS0+ZXh0ZW50KCksIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+YWZmaW5pdHkoKSk7Cit9CisKIHZvaWQgRWRpdG9yQ2xpZW50OjpyZXNwb25kVG9D
aGFuZ2VkU2VsZWN0aW9uKCkKIHsKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IG1f
d2ViVmlldy0+cHJpdjsKQEAgLTIxNSw3ICsyMzMsMTIgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OnJl
c3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oKQogICAgIGlmICh0YXJnZXRGcmFtZS0+c2VsZWN0aW9u
KCktPmlzUmFuZ2UoKSkgewogICAgICAgICBkYXRhT2JqZWN0LT5jbGVhcigpOwogICAgICAgICBk
YXRhT2JqZWN0LT5zZXRSYW5nZSh0YXJnZXRGcmFtZS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXpl
ZFJhbmdlKCkpOwotICAgICAgICBwYXN0ZWJvYXJkSGVscGVySW5zdGFuY2UoKS0+d3JpdGVDbGlw
Ym9hcmRDb250ZW50cyhjbGlwYm9hcmQsIG1fd2ViVmlldyk7CisKKyAgICAgICAgdmlld1NldHRp
bmdDbGlwYm9hcmQgPSBtX3dlYlZpZXc7CisgICAgICAgIEdDbG9zdXJlKiBjYWxsYmFjayA9IGdf
Y2Nsb3N1cmVfbmV3X29iamVjdChHX0NBTExCQUNLKGNvbGxhcHNlU2VsZWN0aW9uKSwgR19PQkpF
Q1QobV93ZWJWaWV3KSk7CisgICAgICAgIGdfY2xvc3VyZV9zZXRfbWFyc2hhbChjYWxsYmFjaywg
Z19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQpOworICAgICAgICBwYXN0ZWJvYXJkSGVscGVy
SW5zdGFuY2UoKS0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhjbGlwYm9hcmQsIGNhbGxiYWNrKTsK
KyAgICAgICAgdmlld1NldHRpbmdDbGlwYm9hcmQgPSAwOwogICAgIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3Bw
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QYXN0ZWJvYXJkSGVscGVyR3RrLmNwcAppbmRl
eCBiOGViOTJkLi4wMmRhMWQ0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L1Bhc3RlYm9hcmRIZWxwZXJHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
UGFzdGVib2FyZEhlbHBlckd0ay5jcHAKQEAgLTEsNiArMSw3IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMjAwNyBMdWNhIEJydW5vIDxsZXRoYWxtYW44OEBnbWFpbC5jb20+CiAgKiAgQ29weXJp
Z2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiAgQ29weXJpZ2h0IChD
KSAyMDEwIE1hcnRpbiBSb2JpbnNvbiA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC0zMiwxNTIgKzMzLDMyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIEdka0F0b20gZ2RrTWFya3VwQXRvbSA9IGdk
a19hdG9tX2ludGVybigidGV4dC9odG1sIiwgRkFMU0UpOwotCiBQYXN0ZWJvYXJkSGVscGVyR3Rr
OjpQYXN0ZWJvYXJkSGVscGVyR3RrKCkKLSAgICA6IG1fdGFyZ2V0TGlzdChndGtfdGFyZ2V0X2xp
c3RfbmV3KDAsIDApKQogewotICAgIGd0a190YXJnZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKG1f
dGFyZ2V0TGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQpOwotICAgIGd0a190
YXJnZXRfbGlzdF9hZGQobV90YXJnZXRMaXN0LCBnZGtNYXJrdXBBdG9tLCAwLCBXRUJLSVRfV0VC
X1ZJRVdfVEFSR0VUX0lORk9fSFRNTCk7CisgICAgaW5pdGlhbGl6ZVRhcmdldExpc3QoKTsKIH0K
IAogUGFzdGVib2FyZEhlbHBlckd0azo6flBhc3RlYm9hcmRIZWxwZXJHdGsoKQogewotICAgIGd0
a190YXJnZXRfbGlzdF91bnJlZihtX3RhcmdldExpc3QpOwotfQotCi1HdGtDbGlwYm9hcmQqIFBh
c3RlYm9hcmRIZWxwZXJHdGs6OmdldEN1cnJlbnRUYXJnZXQoRnJhbWUqIGZyYW1lKSBjb25zdAot
ewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJf
dmlldyhraXQoZnJhbWUpKTsKLQotICAgIGlmICh3ZWJraXRfd2ViX3ZpZXdfdXNlX3ByaW1hcnlf
Zm9yX3Bhc3RlKHdlYlZpZXcpKQotICAgICAgICByZXR1cm4gZ2V0UHJpbWFyeShmcmFtZSk7Ci0g
ICAgZWxzZQotICAgICAgICByZXR1cm4gZ2V0Q2xpcGJvYXJkKGZyYW1lKTsKLX0KLQotR3RrQ2xp
cGJvYXJkKiBQYXN0ZWJvYXJkSGVscGVyR3RrOjpnZXRDbGlwYm9hcmQoRnJhbWUqIGZyYW1lKSBj
b25zdAotewotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dl
dF93ZWJfdmlldyhraXQoZnJhbWUpKTsKLSAgICByZXR1cm4gZ3RrX3dpZGdldF9nZXRfY2xpcGJv
YXJkKEdUS19XSURHRVQgKHdlYlZpZXcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0RLX1NFTEVDVElPTl9DTElQQk9BUkQpOwotfQotCi1HdGtDbGlwYm9hcmQqIFBhc3Rl
Ym9hcmRIZWxwZXJHdGs6OmdldFByaW1hcnkoRnJhbWUqIGZyYW1lKSBjb25zdAotewotICAgIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhraXQo
ZnJhbWUpKTsKLSAgICByZXR1cm4gZ3RrX3dpZGdldF9nZXRfY2xpcGJvYXJkKEdUS19XSURHRVQg
KHdlYlZpZXcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RLX1NFTEVD
VElPTl9QUklNQVJZKTsKIH0KIAotR3RrVGFyZ2V0TGlzdCogUGFzdGVib2FyZEhlbHBlckd0azo6
dGFyZ2V0TGlzdCgpIGNvbnN0CitndWludCBQYXN0ZWJvYXJkSGVscGVyR3RrOjpnZXRJZEZvclRh
cmdldFR5cGUoUGFzdGVib2FyZFRhcmdldFR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gbV90YXJn
ZXRMaXN0OworICAgIGlmICh0eXBlID09IFRhcmdldFR5cGVNYXJrdXApCisgICAgICAgIHJldHVy
biBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDsKKyAgICBpZiAodHlwZSA9PSBUYXJn
ZXRUeXBlSW1hZ2UpCisgICAgICAgIHJldHVybiBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9f
SU1BR0U7CisgICAgaWYgKHR5cGUgPT0gVGFyZ2V0VHlwZVVSSUxpc3QpCisgICAgICAgIHJldHVy
biBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1Q7CisgICAgaWYgKHR5cGUgPT0g
VGFyZ2V0VHlwZU5ldHNjYXBlVVJMKQorICAgICAgICByZXR1cm4gV0VCS0lUX1dFQl9WSUVXX1RB
UkdFVF9JTkZPX05FVFNDQVBFX1VSTDsKKworICAgIHJldHVybiBXRUJLSVRfV0VCX1ZJRVdfVEFS
R0VUX0lORk9fVEVYVDsKIH0KIAotZ2ludCBQYXN0ZWJvYXJkSGVscGVyR3RrOjpnZXRXZWJWaWV3
VGFyZ2V0SW5mb0h0bWwoKSBjb25zdAorYm9vbCBQYXN0ZWJvYXJkSGVscGVyR3RrOjp1c2VQcmlt
YXJ5U2VsZWN0aW9uQ2xpcGJvYXJkKEd0a1dpZGdldCogd2lkZ2V0KQogewotICAgIHJldHVybiBX
RUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDsKLX0KLQotc3RhdGljIHZvaWQgZmlsbFNl
bGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSwgZ3VpbnQgaW5mbywg
RGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCkKLXsKLSAgICBpZiAoaW5mbyA9PSBXRUJLSVRfV0VC
X1ZJRVdfVEFSR0VUX0lORk9fVEVYVCkKLSAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldF90
ZXh0KHNlbGVjdGlvbkRhdGEsIGRhdGFPYmplY3QtPnRleHQoKS51dGY4KCkuZGF0YSgpLCAtMSk7
Ci0gICAgZWxzZSBpZiAoaW5mbyA9PSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCkg
ewotICAgICAgICBHT3duUHRyPGdjaGFyPiBtYXJrdXAoZ19zdHJkdXAoZGF0YU9iamVjdC0+bWFy
a3VwKCkudXRmOCgpLmRhdGEoKSkpOwotICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNl
bGVjdGlvbkRhdGEsIHNlbGVjdGlvbkRhdGEtPnRhcmdldCwgOCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KG1hcmt1cC5nZXQo
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG1hcmt1cC5nZXQoKSkp
OwotICAgIH0KLX0KLQotc3RhdGljIEd0a1RhcmdldExpc3QqIHRhcmdldExpc3RGb3JEYXRhT2Jq
ZWN0KERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QpCi17Ci0gICAgR3RrVGFyZ2V0TGlzdCogbGlz
dCA9IGd0a190YXJnZXRfbGlzdF9uZXcoMCwgMCk7Ci0KLSAgICBpZiAoZGF0YU9iamVjdC0+aGFz
VGV4dCgpKQotICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyhsaXN0LCBX
RUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCk7Ci0KLSAgICBpZiAoZGF0YU9iamVjdC0+
aGFzTWFya3VwKCkpCi0gICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdCwgZ2RrTWFya3Vw
QXRvbSwgMCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUwpOwotCi0gICAgcmV0dXJu
IGxpc3Q7Ci19Ci0KLXN0YXRpYyBEYXRhT2JqZWN0R3RrKiBzZXR0aW5nQ2xpcGJvYXJkRGF0YU9i
amVjdCA9IDA7Ci1zdGF0aWMgZ3BvaW50ZXIgc2V0dGluZ0NsaXBib2FyZERhdGEgPSAwOwotc3Rh
dGljIHZvaWQgZ2V0Q2xpcGJvYXJkQ29udGVudHNDYWxsYmFjayhHdGtDbGlwYm9hcmQqIGNsaXBi
b2FyZCwgR3RrU2VsZWN0aW9uRGF0YSAqc2VsZWN0aW9uRGF0YSwgZ3VpbnQgaW5mbywgZ3BvaW50
ZXIgZGF0YSkKLXsKLSAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0
azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7Ci0gICAgQVNTRVJUKGRhdGFPYmplY3QpOwotICAg
IGZpbGxTZWxlY3Rpb25EYXRhKHNlbGVjdGlvbkRhdGEsIGluZm8sIGRhdGFPYmplY3QpOwotfQot
Ci1zdGF0aWMgdm9pZCBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2soR3RrQ2xpcGJvYXJk
KiBjbGlwYm9hcmQsIGdwb2ludGVyIGRhdGEpCi17Ci0gICAgRGF0YU9iamVjdEd0ayogZGF0YU9i
amVjdCA9IERhdGFPYmplY3RHdGs6OmZvckNsaXBib2FyZChjbGlwYm9hcmQpOwotICAgIEFTU0VS
VChkYXRhT2JqZWN0KTsKLQotICAgIC8vIE9ubHkgY2xlYXIgdGhlIERhdGFPYmplY3QgZm9yIHRo
aXMgY2xpcGJvYXJkIGlmIHdlIGFyZSBub3QgY3VycmVudGx5IHNldHRpbmcgaXQuCi0gICAgaWYg
KGRhdGFPYmplY3QgIT0gc2V0dGluZ0NsaXBib2FyZERhdGFPYmplY3QpCi0gICAgICAgIGRhdGFP
YmplY3QtPmNsZWFyKCk7Ci0KLSAgICAvLyBPbmx5IGNvbGxhcHNlIHRoZSBzZWxlY3Rpb24gaWYg
dGhpcyBpcyBhbiBYMTEgcHJpbWFyeSBjbGlwYm9hcmQKLSAgICAvLyBhbmQgd2UgYXJlbid0IGN1
cnJlbnRseSBzZXR0aW5nIHRoZSBjbGlwYm9hcmQgZm9yIHRoaXMgV2ViVmlldy4KLSAgICBpZiAo
IWRhdGEgfHwgZGF0YSA9PSBzZXR0aW5nQ2xpcGJvYXJkRGF0YSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViS2l0V2Vi
Vmlldyo+KGRhdGEpOwotICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlID0gY29yZSh3ZWJWaWV3
KTsKLQotICAgIGlmICghY29yZVBhZ2UgfHwgIWNvcmVQYWdlLT5mb2N1c0NvbnRyb2xsZXIoKSkg
ewotICAgICAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmVQYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAgICAvLyBDb2xsYXBzZSB0aGUgc2VsZWN0aW9uIHdpdGhv
dXQgY2xlYXJpbmcgaXQKLSAgICBBU1NFUlQoZnJhbWUpOwotICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+c2V0QmFzZShmcmFtZS0+c2VsZWN0aW9uKCktPmV4dGVudCgpLCBmcmFtZS0+c2VsZWN0aW9u
KCktPmFmZmluaXR5KCkpOwotCi0gICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci19Ci0KLXZv
aWQgUGFzdGVib2FyZEhlbHBlckd0azo6d3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9h
cmQqIGNsaXBib2FyZCwgZ3BvaW50ZXIgZGF0YSkKLXsKLSAgICBEYXRhT2JqZWN0R3RrKiBkYXRh
T2JqZWN0ID0gRGF0YU9iamVjdEd0azo6Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7Ci0gICAgR3Rr
VGFyZ2V0TGlzdCogbGlzdCA9IHRhcmdldExpc3RGb3JEYXRhT2JqZWN0KGRhdGFPYmplY3QpOwot
Ci0gICAgaW50IG51bWJlck9mVGFyZ2V0czsKLSAgICBHdGtUYXJnZXRFbnRyeSogdGFibGUgPSBn
dGtfdGFyZ2V0X3RhYmxlX25ld19mcm9tX2xpc3QobGlzdCwgJm51bWJlck9mVGFyZ2V0cyk7Ci0K
LSAgICBpZiAobnVtYmVyT2ZUYXJnZXRzID4gMCAmJiB0YWJsZSkgewotICAgICAgICBzZXR0aW5n
Q2xpcGJvYXJkRGF0YU9iamVjdCA9IGRhdGFPYmplY3Q7Ci0gICAgICAgIHNldHRpbmdDbGlwYm9h
cmREYXRhID0gZGF0YTsKLQotICAgICAgICAvLyBQcm90ZWN0IHRoZSB3ZWIgdmlldyBmcm9tIGJl
aW5nIGRlc3Ryb3llZCBiZWZvcmUgb25lIG9mIHRoZSBjbGlwYm9hcmQgY2FsbGJhY2tzCi0gICAg
ICAgIC8vIGlzIGNhbGxlZC4gQmFsYW5jZWQgaW4gYm90aCBnZXRDbGlwYm9hcmRDb250ZW50c0Nh
bGxiYWNrIGFuZAotICAgICAgICAvLyBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2suCi0g
ICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJWaWV3
Kj4oZGF0YSk7Ci0gICAgICAgIGdfb2JqZWN0X3JlZih3ZWJWaWV3KTsKLQotICAgICAgICBnYm9v
bGVhbiBzdWNjZWVkZWQgPSBndGtfY2xpcGJvYXJkX3NldF93aXRoX2RhdGEoY2xpcGJvYXJkLCB0
YWJsZSwgbnVtYmVyT2ZUYXJnZXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs
ZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgZGF0YSk7Ci0gICAgICAgIGlmICghc3VjY2Vl
ZGVkKQotICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Ci0KLSAgICAgICAgc2V0
dGluZ0NsaXBib2FyZERhdGFPYmplY3QgPSAwOwotICAgICAgICBzZXR0aW5nQ2xpcGJvYXJkRGF0
YSA9IDA7Ci0gICAgfSBlbHNlCi0gICAgICAgIGd0a19jbGlwYm9hcmRfY2xlYXIoY2xpcGJvYXJk
KTsKLQotICAgIGlmICh0YWJsZSkKLSAgICAgICAgZ3RrX3RhcmdldF90YWJsZV9mcmVlKHRhYmxl
LCBudW1iZXJPZlRhcmdldHMpOwotCi0gICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKGxpc3QpOwor
ICAgIHJldHVybiB3ZWJraXRfd2ViX3ZpZXdfdXNlX3ByaW1hcnlfZm9yX3Bhc3RlKFdFQktJVF9X
RUJfVklFVygod2lkZ2V0KSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L1Bhc3RlYm9hcmRIZWxwZXJHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvUGFzdGVib2FyZEhlbHBlckd0ay5oCmluZGV4IDk3ZWZmOTAuLjY0ZmNkYmEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oCisrKyBi
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGFzdGVib2FyZEhlbHBlckd0ay5oCkBAIC0xLDYg
KzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBMdWNhIEJydW5vIDxsZXRoYWxtYW44
OEBnbWFpbC5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJl
eXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAxMCBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3
ZWJraXQub3JnPgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC00MSwx
NiArNDIsMTAgQEAgY2xhc3MgUGFzdGVib2FyZEhlbHBlckd0ayA6IHB1YmxpYyBQYXN0ZWJvYXJk
SGVscGVyIHsKIHB1YmxpYzoKICAgICBQYXN0ZWJvYXJkSGVscGVyR3RrKCk7CiAgICAgflBhc3Rl
Ym9hcmRIZWxwZXJHdGsoKTsKLSAgICB2aXJ0dWFsIEd0a0NsaXBib2FyZCogZ2V0Q3VycmVudFRh
cmdldChGcmFtZSopIGNvbnN0OwotICAgIHZpcnR1YWwgR3RrQ2xpcGJvYXJkKiBnZXRDbGlwYm9h
cmQoRnJhbWUqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEd0a0NsaXBib2FyZCogZ2V0UHJpbWFyeShG
cmFtZSopIGNvbnN0OwotICAgIHZpcnR1YWwgR3RrVGFyZ2V0TGlzdCogdGFyZ2V0TGlzdCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgZ2ludCBnZXRXZWJWaWV3VGFyZ2V0SW5mb0h0bWwoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGd1aW50IGdldElkRm9yVGFyZ2V0VHlwZShQYXN0ZWJvYXJkVGFyZ2V0VHlw
ZSk7CiAKLSAgICB2b2lkIHdyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlw
Ym9hcmQsIGdwb2ludGVyIGRhdGEgPSAwKTsKLQotcHJpdmF0ZToKLSAgICBHdGtUYXJnZXRMaXN0
KiBtX3RhcmdldExpc3Q7Citwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBib29sIHVzZVByaW1hcnlT
ZWxlY3Rpb25DbGlwYm9hcmQoR3RrV2lkZ2V0Kik7CiB9OwogCiB9Ci0tIAoxLjYuMy4zCgo=
</data>
<flag name="commit-queue"
          id="37570"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54159</attachid>
            <date>2010-04-23 07:59:28 -0700</date>
            <delta_ts>2010-05-04 08:44:45 -0700</delta_ts>
            <desc>Make the DataObject have &apos;live&apos; access to the clipboard</desc>
            <filename>0001-Implement-ClipboardGtk-for-copy-n-paste.patch</filename>
            <type>text/plain</type>
            <size>26952</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSAwNzA1NTI3Y2YzNzEyNTc3M2U5OGFmNzBkM2Y1ODc1Mjc3NzMxNWQ5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBUaHUsIDIyIEFwciAyMDEwIDIyOjAyOjM4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
SW1wbGVtZW50IENsaXBib2FyZEd0ayBmb3IgY29weS1uLXBhc3RlLgoKLS0tCiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysKIExheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkICAgICAgICAgIHwgICAgNyAtCiBXZWJDb3JlL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDYgKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0NsaXBib2FyZEd0ay5jcHAgICAgIHwgIDI3MSArKysrKysrKysrKysrKysrKysrKysrKystLS0t
LQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmggICAgICAgfCAgIDE4ICsrLQog
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAgICAgfCAgIDIyICsrKy0KIFdl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaCAgICAgIHwgICAgNCArCiBXZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwIHwgICA4NCArKysrKysrKystCiBXZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmggICB8ICAgIDMgKy0KIDEwIGZpbGVzIGNo
YW5nZWQsIDQxNSBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjNmNDM1
Yi4uZjQ0Y2U5YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA0LTIzICBNYXJ0aW4gUm9i
aW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBFbmFibGUgRE9NIGNsaXBib2FyZCBhbmQgZHJh
Zy1hbmQtZHJvcCBhY2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMwNjIzCisKKyAgICAgICAgTWFrZSBDbGlwYm9hcmRHdGsgYSAibGl2ZSIgRGF0
YVRyYW5zZmVyIG9iamVjdCwgYWJsZSB0byBtb2RpZnkKKyAgICAgICAgbW9kaWZ5IHRoZSBjbGlw
Ym9hcmQgd2hlbiBzZXREYXRhKC4uLikgaXMgY2FsbGVkLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1NraXBwZWQ6IFVuY29tbWVudCB0ZXN0cyB0aGF0IGFyZSBub3cgcGFzc2luZy4KKwogMjAx
MC0wNC0yMyAgWWFhciBTY2huaXRtYW4gIDx5YWFyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCA4ZTVl
ZWMyLi4yMDA3YzEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtNzQwLDcgKzc0MCw2
IEBAIGVkaXRpbmcvZGVsZXRpbmcvc2tpcC12aXJhbWEtMDAxLmh0bWwKIGVkaXRpbmcvZGVsZXRp
bmcvc21hcnQtZWRpdGluZy1kaXNhYmxlZC5odG1sCiBlZGl0aW5nL2RlbGV0aW5nL3R5cGUtZGVs
ZXRlLWFmdGVyLXF1b3RlLTIuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC80MTI4MDgwLTIuaHRt
bAotZWRpdGluZy9leGVjQ29tbWFuZC9jb3B5LXdpdGhvdXQtc2VsZWN0aW9uLmh0bWwKIGVkaXRp
bmcvZXhlY0NvbW1hbmQvY3JlYXRlTGluay5odG1sCiBlZGl0aW5nL2V4ZWNDb21tYW5kL2RlbGV0
ZS1pbWFnZS1pbi1hbmNob3IuaHRtbAogZWRpdGluZy9leGVjQ29tbWFuZC9lbmFibGluZy1hbmQt
c2VsZWN0aW9uLTIuaHRtbApAQCAtNzczLDE3ICs3NzIsMTEgQEAgZWRpdGluZy9pbnNlcnRpbmcv
c3BhY2UtYWZ0ZXItcmVtb3ZlZm9ybWF0Lmh0bWwKIGVkaXRpbmcvaW5zZXJ0aW5nL3R5cGluZy10
YWItZGVzaWdubW9kZS5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvNDc0NDAwOC5odG1sCiBlZGl0
aW5nL3Bhc3RlYm9hcmQvNTM2ODgzMy5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQvNTY2NTI5OS5o
dG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvNTc4MDY5Ny0yLmh0bWwKIGVkaXRpbmcvcGFzdGVib2Fy
ZC9jb3B5LWluLXBhc3N3b3JkLWZpZWxkLmh0bWwKLWVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXBh
c3RlLWZsb2F0Lmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWltYWdlLWluLWFib3V0LWJs
YW5rLWZyYW1lLmh0bWwKIGVkaXRpbmcvcGFzdGVib2FyZC9maWxlLWlucHV0LWZpbGVzLWFjY2Vz
cy5odG1sCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZ2V0LWRhdGEtdGV4dC1wbGFpbi1kcm9wLmh0bWwK
LWVkaXRpbmcvcGFzdGVib2FyZC9nZXQtZGF0YS10ZXh0LXBsYWluLXBhc3RlLmh0bWwKLWVkaXRp
bmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC5odG1sCi1lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtYmxvY2txdW90ZS1iZWZvcmUtYmxvY2txdW90ZS5odG1sCi1lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtZG91YmxlLW5lc3RlZC1ibG9ja3F1b3RlLWJlZm9yZS1ibG9ja3F1b3RlLmh0bWwK
IGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbnRvLWFuY2hvci10ZXh0Lmh0bWwKIGVkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS1wbGFpbnRleHQtdXNlci1zZWxlY3Qtbm9uZS5odG1sCiBlZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtdGFibGUtMDAyLmh0bWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRiZDlmYi4uODAzNGZhOCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0OSBAQAorMjAxMC0wNC0yMyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dU
S10gRW5hYmxlIERPTSBjbGlwYm9hcmQgYW5kIGRyYWctYW5kLWRyb3AgYWNjZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDYyMworCisgICAgICAg
IE1ha2UgQ2xpcGJvYXJkR3RrIGEgImxpdmUiIERhdGFUcmFuc2ZlciBvYmplY3QsIGFibGUgdG8g
bW9kaWZ5CisgICAgICAgIG1vZGlmeSB0aGUgY2xpcGJvYXJkIHdoZW4gc2V0RGF0YSguLi4pIGlz
IGNhbGxlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKTogUGFzcyB0aGUgR3Rr
Q2xpcGJvYXJkIGludG8gdGhlIGZhY3RvcnkgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkR3RrOjpDbGlwYm9hcmRHdGspOiBDcmVhdGUgdHdvIHNlcGFyYXRlIGNvbnN0cnVjdG9y
cywgb25lIGZvciBEbkQgZGF0YSBhbmQgb25lIGZvciBjbGlwYm9hcmQgZGF0YS4KKyAgICAgICAg
KFdlYkNvcmU6OmRhdGFPYmplY3RUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmNsZWFyRGF0YSk6IENsZWFyIHRoZSBtZW1i
ZXIgRGF0YU9iamVjdCwgb3B0aW9uYWxseSB3cml0ZSB0aGUgY2xpcGJvYXJkLgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpjbGVhckFsbERhdGEpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OmpvaW5VUklMaXN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRH
dGs6OmdldERhdGEpOiBHZXQgdGhlIGRhdGEgZnJvbSB0aGUgY2xpcGJvYXJkLCBpZiBwb3NzaWJs
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6c2V0RGF0YSk6IFdyaXRlIGRhdGEg
dG8gdGhlIERhdGFPYmplY3QgYW5kIG1heWJlIHRoZSBjbGlwYm9hcmQuCisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRHdGs6OnR5cGVzKTogUmVhZCB0aGUgY2xpcGJvYXJkL0RhdGFPYmplY3Qg
dG8gZmluZCBhcHBsaWNhYmxlIHR5cGVzLgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3Rr
OjpmaWxlcyk6IFJlYWQgdGhlIGNsaXBib2FyZC9EYXRhT2JqZWN0IHRvIGZpbmQgdGhlIGZpbGVz
LgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjp3cml0ZVVSTCk6IFdyaXRlIHRvIHRo
ZSBEYXRhT2JqZWN0IGFuZCBtYXliZSB0aGUgY2xpcGJvYXJkLgorICAgICAgICAoV2ViQ29yZTo6
Q2xpcGJvYXJkR3RrOjp3cml0ZVJhbmdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRHdGs6OndyaXRlUGxhaW5UZXh0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDbGlw
Ym9hcmRHdGs6Omhhc0RhdGEpOiBRdWVyeSB0aGUgY2xpcGJvYXJkL0RhdGFPYmplY3QuCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oOiAKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZEd0azo6Y3JlYXRlKTogQWRkZWQgb25lIGZhY3RvcnkgZm9yIHBhc3RlYm9hcmQtYmFj
a2VkIERhdGFPYmplY3RzIGFuZCBvbmUgZm9yIERuRC1iYWNrZWQgb2JqZWN0cy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBs
YWNlTm9uQnJlYWtpbmdTcGFjZVdpdGhTcGFjZSk6IEFkZGVkIHRoaXMgaGVscGVyIGZ1bmN0aW9u
IHRvIGNsZWFuICZuYnNwOyBmcm9tIHBsYWluIHRleHQuCisgICAgICAgIChXZWJDb3JlOjpEYXRh
T2JqZWN0R3RrOjptYXJrdXApOiBBY3R1YWxseSByZXR1cm4gdGhlIHJhbmdlIGlmIGl0J3Mgc2V0
LgorICAgICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6c2V0VGV4dCk6IENsZWFuICZuYnNw
OyBmcm9tIHBsYWluIHRleHQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhT2JqZWN0R3RrOjpjbGVh
clRleHQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmNsZWFyTWFy
a3VwKTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFPYmplY3RHdGs6OmNsZWFyVVJJTGlzdCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YU9iamVjdEd0azo6Y2xlYXJJbWFnZSk6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNs
aXBib2FyZF9nZXRfY29udGVudHNfY2IpOiBUaGUgbGVuZ3RoIG9mIHRoaXMgZGF0YSBzaG91bGQg
YmUgdGhlIG51bWJlciBvZiBieXRlcywgbm90IHRoZSBudW1iZXIgb2YgdW5pY29kZSBjaGFyYWN0
ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmRIZWxwZXI6OmluaXRpYWxpemVUYXJnZXRMaXN0KTogQWRk
ZWQgdGFyZ2V0IElEJ3MgZm9yIFVSSSBsaXN0IGFuZCBOZXRzY2FwZSBVUkwgdGFyZ2V0cy4KKyAg
ICAgICAgKFdlYkNvcmU6OnVyaXNUb0tVUkxWZWN0b3IpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlBhc3RlYm9hcmRIZWxwZXI6OmdldENsaXBib2FyZENvbnRlbnRzKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVyOjpmaWxsU2VsZWN0aW9uRGF0YSk6IEFkZGVk
IGxvZ2ljIGZvciBVUkkgbGlzdHMgYW5kIE5ldHNjYXBlIFVSTHMuCisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkSGVscGVyOjp0YXJnZXRMaXN0Rm9yRGF0YU9iamVjdCk6IERpdHRvLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmg6IEFkZGVkIGRlZmF1bHQgYXJn
dW1lbnQgdG8gd3JpdGVDbGlwYm9hcmRDb250ZW50cyBhbmQgbmV3IG1ldGhvZC4KKwogMjAxMC0w
NC0yMyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3Rr
LmNwcAppbmRleCA5M2EyMWUyLi5jNmVhYjRlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2Fy
ZEd0ay5jcHAKQEAgLTI0LDYgKzI0LDggQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQYXN0ZWJv
YXJkLmgiCisjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlci5oIgogI2luY2x1ZGUgIlJlbmRlcklt
YWdlLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAt
MzIsMTMgKzM0LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBDbGlwYm9hcmRU
eXBlIHsKKyAgICBDbGlwYm9hcmRUeXBlVGV4dCwKKyAgICBDbGlwYm9hcmRUeXBlTWFya3VwLAor
ICAgIENsaXBib2FyZFR5cGVVUklMaXN0LAorICAgIENsaXBib2FyZFR5cGVVUkwsCisgICAgQ2xp
cGJvYXJkVHlwZUltYWdlLAorICAgIENsaXBib2FyZFR5cGVVbmtub3duCit9OworCiBQYXNzUmVm
UHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vz
c1BvbGljeSBwb2xpY3kpCiB7Ci0gICAgcmV0dXJuIENsaXBib2FyZEd0azo6Y3JlYXRlKHBvbGlj
eSwgZmFsc2UpOworICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShwb2xpY3ksIGd0a19j
bGlwYm9hcmRfZ2V0X2Zvcl9kaXNwbGF5KAorICAgICAgICBnZGtfZGlzcGxheV9nZXRfZGVmYXVs
dCgpLCBHREtfU0VMRUNUSU9OX0NMSVBCT0FSRCksIGZhbHNlKTsKK30KKworQ2xpcGJvYXJkR3Rr
OjpDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgR3RrQ2xpcGJvYXJk
KiBjbGlwYm9hcmQpCisgICAgOiBDbGlwYm9hcmQocG9saWN5LCBmYWxzZSkKKyAgICAsIG1fZGF0
YU9iamVjdChEYXRhT2JqZWN0R3RrOjpmb3JDbGlwYm9hcmQoY2xpcGJvYXJkKSkKKyAgICAsIG1f
Y2xpcGJvYXJkKGNsaXBib2FyZCkKKyAgICAsIG1faGVscGVyKFBhc3RlYm9hcmQ6OmdlbmVyYWxQ
YXN0ZWJvYXJkKCktPmhlbHBlcigpKQorewogfQogCi1DbGlwYm9hcmRHdGs6OkNsaXBib2FyZEd0
ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nKQorQ2xpcGJv
YXJkR3RrOjpDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgUGFzc1Jl
ZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRhT2JqZWN0LCBib29sIGZvckRyYWdnaW5nKQogICAgIDog
Q2xpcGJvYXJkKHBvbGljeSwgZm9yRHJhZ2dpbmcpCisgICAgLCBtX2RhdGFPYmplY3QoZGF0YU9i
amVjdCkKKyAgICAsIG1fY2xpcGJvYXJkKDApCisgICAgLCBtX2hlbHBlcihQYXN0ZWJvYXJkOjpn
ZW5lcmFsUGFzdGVib2FyZCgpLT5oZWxwZXIoKSkKIHsKIH0KIApAQCAtNDYsMzkgKzY5LDE5NyBA
QCBDbGlwYm9hcmRHdGs6On5DbGlwYm9hcmRHdGsoKQogewogfQogCi12b2lkIENsaXBib2FyZEd0
azo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpCitzdGF0aWMgQ2xpcGJvYXJkVHlwZSBkYXRhT2Jq
ZWN0VHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHJhd1R5cGUpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBTdHJpbmcgdHlwZShyYXdUeXBlLnN0cmlwV2hpdGVT
cGFjZSgpKTsKKworICAgIC8vIFR3byBzcGVjaWFsIGNhc2VzIGZvciBJRSBjb21wYXRpYmlsaXR5
CisgICAgaWYgKHR5cGUgPT0gIlRleHQiKQorICAgICAgICByZXR1cm4gQ2xpcGJvYXJkVHlwZVRl
eHQ7CisgICAgaWYgKHR5cGUgPT0gIlVSTCIpCisgICAgICAgIHJldHVybiBDbGlwYm9hcmRUeXBl
VVJMOworCisgICAgLy8gRnJvbSB0aGUgTWFjIHBvcnQ6IElnbm9yZSBhbnkgdHJhaWxpbmcgY2hh
cnNldCAtIEpTIHN0cmluZ3MgYXJlCisgICAgLy8gVW5pY29kZSwgd2hpY2ggZW5jYXBzdWxhdGVz
IHRoZSBjaGFyc2V0IGlzc3VlLgorICAgIGlmICh0eXBlID09ICJ0ZXh0L3BsYWluIiB8fCB0eXBl
LnN0YXJ0c1dpdGgoInRleHQvcGxhaW47IikpCisgICAgICAgIHJldHVybiBDbGlwYm9hcmRUeXBl
VGV4dDsKKyAgICBpZiAodHlwZSA9PSAidGV4dC9odG1sIiB8fCB0eXBlLnN0YXJ0c1dpdGgoInRl
eHQvaHRtbDsiKSkKKyAgICAgICAgcmV0dXJuIENsaXBib2FyZFR5cGVNYXJrdXA7CisgICAgaWYg
KHR5cGUgPT0gIkZpbGVzIiB8fCB0eXBlID09ICJ0ZXh0L3VyaS1saXN0IiB8fCB0eXBlLnN0YXJ0
c1dpdGgoInRleHQvdXJpLWxpc3Q7IikpCisgICAgICAgIHJldHVybiBDbGlwYm9hcmRUeXBlVVJJ
TGlzdDsKKworICAgIC8vIE5vdCBhIGtub3duIHR5cGUsIHNvIGp1c3QgZGVmYXVsdCB0byB1c2lu
ZyB0aGUgdGV4dCBwb3J0aW9uLgorICAgIHJldHVybiBDbGlwYm9hcmRUeXBlVW5rbm93bjsKIH0K
IAordm9pZCBDbGlwYm9hcmRHdGs6OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcp
Cit7CisgICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgICAgICByZXR1
cm47CisKKyAgICBDbGlwYm9hcmRUeXBlIHR5cGUgPSBkYXRhT2JqZWN0VHlwZUZyb21IVE1MQ2xp
cGJvYXJkVHlwZSh0eXBlU3RyaW5nKTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIENs
aXBib2FyZFR5cGVVUklMaXN0OgorICAgIGNhc2UgQ2xpcGJvYXJkVHlwZVVSTDoKKyAgICAgICAg
bV9kYXRhT2JqZWN0LT5jbGVhclVSSUxpc3QoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
bGlwYm9hcmRUeXBlTWFya3VwOgorICAgICAgICBtX2RhdGFPYmplY3QtPmNsZWFyTWFya3VwKCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2xpcGJvYXJkVHlwZVRleHQ6CisgICAgICAgIG1f
ZGF0YU9iamVjdC0+Y2xlYXJUZXh0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2xpcGJv
YXJkVHlwZVVua25vd246CisgICAgZGVmYXVsdDoKKyAgICAgICAgbV9kYXRhT2JqZWN0LT5jbGVh
cigpOworICAgIH0KKworICAgIGlmIChtX2NsaXBib2FyZCkKKyAgICAgICAgbV9oZWxwZXItPndy
aXRlQ2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOworfQorCisKIHZvaWQgQ2xpcGJvYXJk
R3RrOjpjbGVhckFsbERhdGEoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKHBv
bGljeSgpICE9IENsaXBib2FyZFdyaXRhYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Rh
dGFPYmplY3QtPmNsZWFyKCk7CisKKyAgICBpZiAobV9jbGlwYm9hcmQpCisgICAgICAgIG1faGVs
cGVyLT53cml0ZUNsaXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJkKTsKIH0KIAotU3RyaW5nIENs
aXBib2FyZEd0azo6Z2V0RGF0YShjb25zdCBTdHJpbmcmLCBib29sICZzdWNjZXNzKSBjb25zdAor
c3RhdGljIFN0cmluZyBqb2luVVJJTGlzdChWZWN0b3I8S1VSTD4gdXJpTGlzdCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAodXJpTGlzdC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZyBqb2luZWQo
dXJpTGlzdFswXS5zdHJpbmcoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCB1cmlMaXN0
LnNpemUoKTsgaSsrKSB7CisgICAgICAgIGpvaW5lZC5hcHBlbmQoIlxyXG4iKTsKKyAgICAgICAg
am9pbmVkLmFwcGVuZCh1cmlMaXN0W2ldLnN0cmluZygpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
am9pbmVkOworfQorCitTdHJpbmcgQ2xpcGJvYXJkR3RrOjpnZXREYXRhKGNvbnN0IFN0cmluZyYg
dHlwZVN0cmluZywgYm9vbCYgc3VjY2VzcykgY29uc3QKK3sKKyAgICBzdWNjZXNzID0gZmFsc2U7
IC8vIFBlc3NpbWlzbS4KKyAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJkUmVhZGFibGUgfHwg
IW1fZGF0YU9iamVjdCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKG1fY2xp
cGJvYXJkKQorICAgICAgICBtX2hlbHBlci0+Z2V0Q2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9h
cmQpOworCisgICAgQ2xpcGJvYXJkVHlwZSB0eXBlID0gZGF0YU9iamVjdFR5cGVGcm9tSFRNTENs
aXBib2FyZFR5cGUodHlwZVN0cmluZyk7CisgICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkVHlwZVVS
SUxpc3QpIHsKKyAgICAgICAgaWYgKCFtX2RhdGFPYmplY3QtPmhhc1VSSUxpc3QoKSkKKyAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAg
IHJldHVybiBqb2luVVJJTGlzdChtX2RhdGFPYmplY3QtPnVyaUxpc3QoKSk7CisgICAgfQorCisg
ICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkVHlwZVVSTCkgeworICAgICAgICBpZiAoIW1fZGF0YU9i
amVjdC0+aGFzVVJMKCkpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAgIHN1
Y2Nlc3MgPSB0cnVlOworICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0LT51cmwoKTsKKyAgICB9
CisKKyAgICBpZiAodHlwZSA9PSBDbGlwYm9hcmRUeXBlTWFya3VwKSB7CisgICAgICAgIGlmICgh
bV9kYXRhT2JqZWN0LT5oYXNNYXJrdXAoKSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgIHJldHVybiBtX2RhdGFPYmplY3QtPm1h
cmt1cCgpOworICAgIH0KKworICAgIGlmICh0eXBlID09IENsaXBib2FyZFR5cGVUZXh0KSB7Cisg
ICAgICAgIGlmICghbV9kYXRhT2JqZWN0LT5oYXNUZXh0KCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIFN0cmluZygpOworICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1f
ZGF0YU9iamVjdC0+dGV4dCgpOworICAgIH0KKwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
Ym9vbCBDbGlwYm9hcmRHdGs6OnNldERhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikK
K2Jvb2wgQ2xpcGJvYXJkR3RrOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgY29u
c3QgU3RyaW5nJiBkYXRhKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChwb2xpY3koKSAhPSBDbGlwYm9hcmRXcml0YWJsZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisgICAgQ2xpcGJvYXJkVHlw
ZSB0eXBlID0gZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZVN0cmluZyk7
CisgICAgaWYgKHR5cGUgPT0gQ2xpcGJvYXJkVHlwZVVSSUxpc3QgfHwgdHlwZSA9PSBDbGlwYm9h
cmRUeXBlVVJMKSB7CisgICAgICAgIFZlY3RvcjxLVVJMPiB1cmlMaXN0OworICAgICAgICBnY2hh
cioqIHVyaXMgPSBnX3VyaV9saXN0X2V4dHJhY3RfdXJpcyhkYXRhLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBpZiAodXJpcykgeworICAgICAgICAgICAgZ2NoYXIqKiBjdXJyZW50VVJJID0gdXJp
czsKKyAgICAgICAgICAgIHdoaWxlICgqY3VycmVudFVSSSkgeworICAgICAgICAgICAgICAgIHVy
aUxpc3QuYXBwZW5kKEtVUkwoS1VSTCgpLCAqY3VycmVudFVSSSkpOworICAgICAgICAgICAgICAg
IGN1cnJlbnRVUkkrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdfc3RyZnJlZXYodXJp
cyk7CisgICAgICAgICAgICBtX2RhdGFPYmplY3QtPnNldFVSSUxpc3QodXJpTGlzdCk7CisgICAg
ICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodHlwZSA9
PSBDbGlwYm9hcmRUeXBlTWFya3VwKSB7CisgICAgICAgIG1fZGF0YU9iamVjdC0+c2V0TWFya3Vw
KGRhdGEpOworICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0g
Q2xpcGJvYXJkVHlwZVRleHQpIHsKKyAgICAgICAgbV9kYXRhT2JqZWN0LT5zZXRUZXh0KGRhdGEp
OworICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoc3VjY2VzcyAmJiBt
X2NsaXBib2FyZCkKKyAgICAgICAgbV9oZWxwZXItPndyaXRlQ2xpcGJvYXJkQ29udGVudHMobV9j
bGlwYm9hcmQpOworCisgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKIEhhc2hTZXQ8U3RyaW5nPiBD
bGlwYm9hcmRHdGs6OnR5cGVzKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiBIYXNoU2V0PFN0cmluZz4oKTsKKyAgICBpZiAocG9saWN5KCkgIT0gQ2xpcGJvYXJk
UmVhZGFibGUgJiYgcG9saWN5KCkgIT0gQ2xpcGJvYXJkVHlwZXNSZWFkYWJsZSkKKyAgICAgICAg
cmV0dXJuIEhhc2hTZXQ8U3RyaW5nPigpOworCisgICAgaWYgKG1fY2xpcGJvYXJkKQorICAgICAg
ICBtX2hlbHBlci0+Z2V0Q2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOworCisgICAgSGFz
aFNldDxTdHJpbmc+IHR5cGVzOworICAgIGlmIChtX2RhdGFPYmplY3QtPmhhc1RleHQoKSkgewor
ICAgICAgICB0eXBlcy5hZGQoInRleHQvcGxhaW4iKTsKKyAgICAgICAgdHlwZXMuYWRkKCJUZXh0
Iik7CisgICAgfQorCisgICAgaWYgKG1fZGF0YU9iamVjdC0+aGFzTWFya3VwKCkpCisgICAgICAg
IHR5cGVzLmFkZCgidGV4dC9odG1sIik7CisKKyAgICBpZiAobV9kYXRhT2JqZWN0LT5oYXNVUklM
aXN0KCkpIHsKKyAgICAgICAgdHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7CisgICAgICAgIHR5
cGVzLmFkZCgiVVJMIik7CisgICAgICAgIHR5cGVzLmFkZCgiRmlsZXMiKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHlwZXM7CiB9CiAKIFBhc3NSZWZQdHI8RmlsZUxpc3Q+IENsaXBib2FyZEd0azo6
ZmlsZXMoKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlKQorICAgICAgICByZXR1cm4gRmls
ZUxpc3Q6OmNyZWF0ZSgpOworCisgICAgaWYgKG1fY2xpcGJvYXJkKQorICAgICAgICBtX2hlbHBl
ci0+Z2V0Q2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOworCisgICAgUmVmUHRyPEZpbGVM
aXN0PiBmaWxlTGlzdCA9IEZpbGVMaXN0OjpjcmVhdGUoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBm
aWxlVmVjdG9yKG1fZGF0YU9iamVjdC0+ZmlsZXMoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGZpbGVWZWN0b3Iuc2l6ZSgpOyBpKyspCisgICAgICAgIGZpbGVMaXN0LT5hcHBlbmQo
RmlsZTo6Y3JlYXRlKGZpbGVWZWN0b3JbaV0pKTsKKworICAgIHJldHVybiBmaWxlTGlzdC5yZWxl
YXNlKCk7CiB9CiAKIEludFBvaW50IENsaXBib2FyZEd0azo6ZHJhZ0xvY2F0aW9uKCkgY29uc3QK
QEAgLTE1MSw0NCArMzMyLDU0IEBAIHZvaWQgQ2xpcGJvYXJkR3RrOjpkZWNsYXJlQW5kV3JpdGVE
cmFnSW1hZ2UoRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjCiAKIHZvaWQgQ2xp
cGJvYXJkR3RrOjp3cml0ZVVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWws
IEZyYW1lKikKIHsKLSAgICBHdGtDbGlwYm9hcmQqIHRleHRDbGlwYm9hcmQgPSBndGtfY2xpcGJv
YXJkX2dldChnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiV2ViS2l0Q2xpcGJvYXJkVGV4
dCIpKTsKLSAgICBHdGtDbGlwYm9hcmQqIHVybENsaXBib2FyZCA9IGd0a19jbGlwYm9hcmRfZ2V0
KGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJXZWJLaXRDbGlwYm9hcmRVcmwiKSk7Ci0g
ICAgR3RrQ2xpcGJvYXJkKiB1cmxMYWJlbENsaXBib2FyZCA9IGd0a19jbGlwYm9hcmRfZ2V0KGdk
a19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJXZWJLaXRDbGlwYm9hcmRVcmxMYWJlbCIpKTsK
LQotICAgIGd0a19jbGlwYm9hcmRfY2xlYXIodGV4dENsaXBib2FyZCk7Ci0gICAgZ3RrX2NsaXBi
b2FyZF9jbGVhcih1cmxDbGlwYm9hcmQpOwotICAgIGd0a19jbGlwYm9hcmRfY2xlYXIodXJsTGFi
ZWxDbGlwYm9hcmQpOwotCi0gICAgZ3RrX2NsaXBib2FyZF9zZXRfdGV4dCh0ZXh0Q2xpcGJvYXJk
LCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgLTEpOwotICAgIGd0a19jbGlwYm9hcmRfc2V0
X3RleHQodXJsQ2xpcGJvYXJkLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgLTEpOwotICAg
IGd0a19jbGlwYm9hcmRfc2V0X3RleHQodXJsTGFiZWxDbGlwYm9hcmQsIGxhYmVsLnV0ZjgoKS5k
YXRhKCksIC0xKTsKKyAgICBTdHJpbmcgYWN0dWFsTGFiZWwobGFiZWwpOworICAgIGlmIChhY3R1
YWxMYWJlbC5pc0VtcHR5KCkpCisgICAgICAgIGFjdHVhbExhYmVsID0gdXJsOworCisgICAgbV9k
YXRhT2JqZWN0LT5zZXRUZXh0KHVybC5zdHJpbmcoKSk7CisKKyAgICBWZWN0b3I8VUNoYXI+IG1h
cmt1cDsKKyAgICBhcHBlbmQobWFya3VwLCAiPGEgaHJlZj1cIiIpOworICAgIGFwcGVuZChtYXJr
dXAsIHVybC5zdHJpbmcoKSk7CisgICAgYXBwZW5kKG1hcmt1cCwgIlwiPiIpOworICAgIGFwcGVu
ZChtYXJrdXAsIGxhYmVsKTsKKyAgICBhcHBlbmQobWFya3VwLCAiPC9hPiIpOworICAgIG1fZGF0
YU9iamVjdC0+c2V0TWFya3VwKFN0cmluZzo6YWRvcHQobWFya3VwKSk7CisKKyAgICBWZWN0b3I8
S1VSTD4gdXJpTGlzdDsKKyAgICB1cmlMaXN0LmFwcGVuZCh1cmwpOworICAgIG1fZGF0YU9iamVj
dC0+c2V0VVJJTGlzdCh1cmlMaXN0KTsKKworICAgIGlmIChtX2NsaXBib2FyZCkKKyAgICAgICAg
bV9oZWxwZXItPndyaXRlQ2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOwogfQogCiB2b2lk
IENsaXBib2FyZEd0azo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2UsIEZyYW1lKiBmcmFtZSkKIHsK
LSAgICBHdGtDbGlwYm9hcmQqIHRleHRDbGlwYm9hcmQgPSBndGtfY2xpcGJvYXJkX2dldChnZGtf
YXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiV2ViS2l0Q2xpcGJvYXJkVGV4dCIpKTsKLSAgICBH
dGtDbGlwYm9hcmQqIGh0bWxDbGlwYm9hcmQgPSBndGtfY2xpcGJvYXJkX2dldChnZGtfYXRvbV9p
bnRlcm5fc3RhdGljX3N0cmluZygiV2ViS2l0Q2xpcGJvYXJkSHRtbCIpKTsKKyAgICBBU1NFUlQo
cmFuZ2UpOwogCi0gICAgZ3RrX2NsaXBib2FyZF9jbGVhcih0ZXh0Q2xpcGJvYXJkKTsKLSAgICBn
dGtfY2xpcGJvYXJkX2NsZWFyKGh0bWxDbGlwYm9hcmQpOworICAgIG1fZGF0YU9iamVjdC0+c2V0
VGV4dChmcmFtZS0+c2VsZWN0ZWRUZXh0KCkpOworICAgIG1fZGF0YU9iamVjdC0+c2V0TWFya3Vw
KGNyZWF0ZU1hcmt1cChyYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSkpOwogCi0gICAg
Z3RrX2NsaXBib2FyZF9zZXRfdGV4dCh0ZXh0Q2xpcGJvYXJkLCBmcmFtZS0+c2VsZWN0ZWRUZXh0
KCkudXRmOCgpLmRhdGEoKSwgLTEpOwotICAgIGd0a19jbGlwYm9hcmRfc2V0X3RleHQoaHRtbENs
aXBib2FyZCwgY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKS51
dGY4KCkuZGF0YSgpLCAtMSk7CisgICAgaWYgKG1fY2xpcGJvYXJkKQorICAgICAgICBtX2hlbHBl
ci0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhtX2NsaXBib2FyZCk7CiB9CiAKIHZvaWQgQ2xpcGJv
YXJkR3RrOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgR3RrQ2xp
cGJvYXJkKiB0ZXh0Q2xpcGJvYXJkID0gZ3RrX2NsaXBib2FyZF9nZXQoZ2RrX2F0b21faW50ZXJu
X3N0YXRpY19zdHJpbmcoIldlYktpdENsaXBib2FyZFRleHQiKSk7Ci0gICAgCi0gICAgZ3RrX2Ns
aXBib2FyZF9jbGVhcih0ZXh0Q2xpcGJvYXJkKTsKLSAgICAKLSAgICBndGtfY2xpcGJvYXJkX3Nl
dF90ZXh0KHRleHRDbGlwYm9hcmQsIHRleHQudXRmOCgpLmRhdGEoKSwgLTEpOworICAgIG1fZGF0
YU9iamVjdC0+c2V0VGV4dCh0ZXh0KTsKKworICAgIGlmIChtX2NsaXBib2FyZCkKKyAgICAgICAg
bV9oZWxwZXItPndyaXRlQ2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOwogfQotICAgIAor
CiBib29sIENsaXBib2FyZEd0azo6aGFzRGF0YSgpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY2xpcGJvYXJkKQorICAgICAgICBtX2hlbHBl
ci0+Z2V0Q2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQpOworCisgICAgcmV0dXJuIG1fZGF0
YU9iamVjdC0+aGFzVGV4dCgpIHx8IG1fZGF0YU9iamVjdC0+aGFzTWFya3VwKCkKKyAgICAgICAg
fHwgbV9kYXRhT2JqZWN0LT5oYXNVUklMaXN0KCkgfHwgbV9kYXRhT2JqZWN0LT5oYXNJbWFnZSgp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCmluZGV4IDc0ZTM2YjEuLmZk
MzFkMWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oCkBAIC0yOCwxNyArMjgsMjYg
QEAKICNkZWZpbmUgQ2xpcGJvYXJkR3RrX2gKIAogI2luY2x1ZGUgIkNsaXBib2FyZC5oIgorI2lu
Y2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX0d0a0NsaXBib2FyZCBH
dGtDbGlwYm9hcmQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDYWNoZWRJbWFn
ZTsKKyAgICBjbGFzcyBQYXN0ZWJvYXJkSGVscGVyOwogCiAgICAgLy8gU3RhdGUgYXZhaWxhYmxl
IGR1cmluZyBJRSdzIGV2ZW50cyBmb3IgZHJhZyBhbmQgZHJvcCBhbmQgY29weS9wYXN0ZQogICAg
IC8vIENyZWF0ZWQgZnJvbSB0aGUgRXZlbnRIYW5kbGVyR3RrIHRvIGJlIHVzZWQgYnkgdGhlIGRv
bQogICAgIGNsYXNzIENsaXBib2FyZEd0ayA6IHB1YmxpYyBDbGlwYm9hcmQgewogICAgIHB1Ymxp
YzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xpcGJv
YXJkQWNjZXNzUG9saWN5IHBvbGljeSwgR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGJvb2wgaXNG
b3JEcmFnZ2luZykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
bGlwYm9hcmRHdGsocG9saWN5LCBjbGlwYm9hcmQpKTsKKyAgICAgICAgfQorCiAgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENsaXBib2FyZEd0az4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGlj
eSBwb2xpY3ksIGJvb2wgaXNGb3JEcmFnZ2luZykKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRHdGsocG9saWN5LCBpc0ZvckRyYWdnaW5nKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZEd0ayhwb2xpY3ksIERhdGFP
YmplY3RHdGs6OmNyZWF0ZSgpLCBpc0ZvckRyYWdnaW5nKSk7CiAgICAgICAgIH0KICAgICAgICAg
dmlydHVhbCB+Q2xpcGJvYXJkR3RrKCk7CiAKQEAgLTY1LDcgKzc0LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGhhc0RhdGEoKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIENsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIGJvb2wpOworICAg
ICAgICBDbGlwYm9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBHdGtDbGlwYm9hcmQqKTsK
KyAgICAgICAgQ2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgUGFzc1JlZlB0cjxE
YXRhT2JqZWN0R3RrPiwgYm9vbCk7CisKKyAgICAgICAgUmVmUHRyPERhdGFPYmplY3RHdGs+IG1f
ZGF0YU9iamVjdDsKKyAgICAgICAgR3RrQ2xpcGJvYXJkKiBtX2NsaXBib2FyZDsKKyAgICAgICAg
UGFzdGVib2FyZEhlbHBlciogbV9oZWxwZXI7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EYXRhT2JqZWN0R3RrLmNwcAppbmRleCA5MDBmZThlLi41N2Q5MjBjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcApAQCAtMjQsNiArMjQsMTMgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitzdGF0aWMgdm9pZCByZXBsYWNlTm9uQnJlYWtpbmdTcGFjZVdpdGhTcGFj
ZShTdHJpbmcmIHN0cikKK3sKKyAgICBzdGF0aWMgY29uc3QgVUNoYXIgTm9uQnJlYWtpbmdTcGFj
ZUNoYXJhY3RlciA9IDB4QTA7CisgICAgc3RhdGljIGNvbnN0IFVDaGFyIFNwYWNlQ2hhcmFjdGVy
ID0gJyAnOworICAgIHN0ci5yZXBsYWNlKE5vbkJyZWFraW5nU3BhY2VDaGFyYWN0ZXIsIFNwYWNl
Q2hhcmFjdGVyKTsKK30KKwogU3RyaW5nIERhdGFPYmplY3RHdGs6OnRleHQoKQogewogICAgIGlm
IChtX3JhbmdlKQpAQCAtMzQsNyArNDEsNyBAQCBTdHJpbmcgRGF0YU9iamVjdEd0azo6dGV4dCgp
CiBTdHJpbmcgRGF0YU9iamVjdEd0azo6bWFya3VwKCkKIHsKICAgICBpZiAobV9yYW5nZSkKLSAg
ICAgICAgY3JlYXRlTWFya3VwKG1fcmFuZ2UuZ2V0KCksIDAsIEFubm90YXRlRm9ySW50ZXJjaGFu
Z2UpOworICAgICAgICByZXR1cm4gY3JlYXRlTWFya3VwKG1fcmFuZ2UuZ2V0KCksIDAsIEFubm90
YXRlRm9ySW50ZXJjaGFuZ2UpOwogICAgIHJldHVybiBtX21hcmt1cDsKIH0KIApAQCAtNDIsNiAr
NDksNyBAQCB2b2lkIERhdGFPYmplY3RHdGs6OnNldFRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0
KQogewogICAgIG1fcmFuZ2UgPSAwOwogICAgIG1fdGV4dCA9IG5ld1RleHQ7CisgICAgcmVwbGFj
ZU5vbkJyZWFraW5nU3BhY2VXaXRoU3BhY2UobV90ZXh0KTsKIH0KIAogdm9pZCBEYXRhT2JqZWN0
R3RrOjpzZXRNYXJrdXAoY29uc3QgU3RyaW5nJiBuZXdNYXJrdXApCkBAIC01MCw2ICs1OCwxOCBA
QCB2b2lkIERhdGFPYmplY3RHdGs6OnNldE1hcmt1cChjb25zdCBTdHJpbmcmIG5ld01hcmt1cCkK
ICAgICBtX21hcmt1cCA9IG5ld01hcmt1cDsKIH0KIAordm9pZCBEYXRhT2JqZWN0R3RrOjpjbGVh
clRleHQoKQoreworICAgIG1fcmFuZ2UgPSAwOworICAgIG1fdGV4dCA9ICIiOworfQorCit2b2lk
IERhdGFPYmplY3RHdGs6OmNsZWFyTWFya3VwKCkKK3sKKyAgICBtX3JhbmdlID0gMDsKKyAgICBt
X21hcmt1cCA9ICIiOworfQorCiBWZWN0b3I8U3RyaW5nPiBEYXRhT2JqZWN0R3RrOjpmaWxlcygp
CiB7CiAgICAgVmVjdG9yPEtVUkw+IHVyaXModXJpTGlzdCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Rh
dGFPYmplY3RHdGsuaAppbmRleCAyMjE1OGQ0Li40MWY4ZjQ5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RGF0YU9iamVjdEd0ay5oCkBAIC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc01h
cmt1cCgpIHsgcmV0dXJuIG1fcmFuZ2UgfHwgIW1fbWFya3VwLmlzRW1wdHkoKTsgfQogICAgIGJv
b2wgaGFzVVJJTGlzdCgpIHsgcmV0dXJuICFtX3VyaUxpc3QuaXNFbXB0eSgpOyB9CiAgICAgYm9v
bCBoYXNJbWFnZSgpIHsgcmV0dXJuIG1faW1hZ2U7IH0KKyAgICB2b2lkIGNsZWFyVVJJTGlzdCgp
IHsgbV91cmlMaXN0LmNsZWFyKCk7IH0KKyAgICB2b2lkIGNsZWFySW1hZ2UoKSB7IG1faW1hZ2Ug
PSAwOyB9CiAgICAgR2RrRHJhZ0NvbnRleHQqIGRyYWdDb250ZXh0KCkgeyByZXR1cm4gbV9kcmFn
Q29udGV4dC5nZXQoKTsgfQogCiAgICAgU3RyaW5nIHRleHQoKTsKQEAgLTYxLDYgKzYzLDggQEAg
cHVibGljOgogICAgIFN0cmluZyB1cmwoKTsKICAgICBTdHJpbmcgdXJsTGFiZWwoKTsKICAgICB2
b2lkIGNsZWFyKCk7CisgICAgdm9pZCBjbGVhclRleHQoKTsKKyAgICB2b2lkIGNsZWFyTWFya3Vw
KCk7CiAKICAgICBzdGF0aWMgRGF0YU9iamVjdEd0ayogZm9yQ2xpcGJvYXJkKEd0a0NsaXBib2Fy
ZCopOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDkwN2E1NWUu
LjllN2IyM2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyB2b2lkIGNsaXBib2FyZF9nZXRfY29udGVudHNfY2IoR3RrQ2xpcGJv
YXJkICpjbGlwYm9hcmQsIEd0a1NlbGVjdGlvbkRhdGEKICAgICBpZiAoaW5mbyA9PSBQYXN0ZWJv
YXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5oZWxwZXIoKS0+Z2V0SWRGb3JUYXJnZXRUeXBlKFBh
c3RlYm9hcmRIZWxwZXI6OlRhcmdldFR5cGVNYXJrdXApKQogICAgICAgICBndGtfc2VsZWN0aW9u
X2RhdGFfc2V0KHNlbGVjdGlvbl9kYXRhLCBzZWxlY3Rpb25fZGF0YS0+dGFyZ2V0LCA4LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFy
Kj4oY2xpcGJvYXJkRGF0YS0+bWFya3VwKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdfdXRmOF9zdHJsZW4oY2xpcGJvYXJkRGF0YS0+bWFya3VwKCksIC0xKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGNsaXBib2FyZERhdGEtPm1hcmt1cCgpKSk7
CiAgICAgZWxzZQogICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0X3RleHQoc2VsZWN0aW9u
X2RhdGEsIGNsaXBib2FyZERhdGEtPnRleHQoKSwgLTEpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRleCBiZTMyZWE1Li41NTQ4Yzc2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcApAQCAtMjYsMTIgKzI2LDE1IEBACiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2Fy
ZC5oIgorI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDxndGsvZ3Rr
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBHZGtBdG9tIGdka01hcmt1cEF0b20gPSBnZGtfYXRvbV9pbnRlcm4oInRl
eHQvaHRtbCIsIEZBTFNFKTsKK3N0YXRpYyBHZGtBdG9tIG5ldHNjYXBlVVJMQXRvbSA9IGdka19h
dG9tX2ludGVybigiX05FVFNDQVBFX1VSTCIsIEZBTFNFKTsKK3N0YXRpYyBHZGtBdG9tIHVyaUxp
c3RBdG9tID0gZ2RrX2F0b21faW50ZXJuKCJ0ZXh0L3VyaS1saXN0IiwgRkFMU0UpOwogCiBQYXN0
ZWJvYXJkSGVscGVyOjpQYXN0ZWJvYXJkSGVscGVyKCkKICAgICA6IG1fdGFyZ2V0TGlzdChndGtf
dGFyZ2V0X2xpc3RfbmV3KDAsIDApKQpAQCAtNDgsNiArNTEsOCBAQCB2b2lkIFBhc3RlYm9hcmRI
ZWxwZXI6OmluaXRpYWxpemVUYXJnZXRMaXN0KCkKIHsKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRk
X3RleHRfdGFyZ2V0cyhtX3RhcmdldExpc3QsIGdldElkRm9yVGFyZ2V0VHlwZShUYXJnZXRUeXBl
VGV4dCkpOwogICAgIGd0a190YXJnZXRfbGlzdF9hZGQobV90YXJnZXRMaXN0LCBnZGtNYXJrdXBB
dG9tLCAwLCBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZU1hcmt1cCkpOworICAgIGd0a190
YXJnZXRfbGlzdF9hZGRfdXJpX3RhcmdldHMobV90YXJnZXRMaXN0LCBnZXRJZEZvclRhcmdldFR5
cGUoVGFyZ2V0VHlwZVVSSUxpc3QpKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKG1fdGFyZ2V0
TGlzdCwgbmV0c2NhcGVVUkxBdG9tLCAwLCBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZU5l
dHNjYXBlVVJMKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgR3RrV2lkZ2V0KiB3aWRnZXRGcm9tRnJh
bWUoRnJhbWUqIGZyYW1lKQpAQCAtODQsMTUgKzg5LDg1IEBAIEd0a1RhcmdldExpc3QqIFBhc3Rl
Ym9hcmRIZWxwZXI6OnRhcmdldExpc3QoKSBjb25zdAogICAgIHJldHVybiBtX3RhcmdldExpc3Q7
CiB9CiAKK3N0YXRpYyBWZWN0b3I8S1VSTD4gdXJpc1RvS1VSTFZlY3RvcihnY2hhcioqIHVyaXMp
Cit7CisgICAgQVNTRVJUKHVyaXMpOworCisgICAgVmVjdG9yPEtVUkw+IHVyaUxpc3Q7CisgICAg
Z2NoYXIqKiBjdXJyZW50VVJJID0gdXJpczsKKyAgICB3aGlsZSAoKmN1cnJlbnRVUkkpIHsKKyAg
ICAgICAgdXJpTGlzdC5hcHBlbmQoS1VSTChLVVJMKCksICpjdXJyZW50VVJJKSk7CisgICAgICAg
IGN1cnJlbnRVUkkrKzsKKyAgICB9CisKKyAgICByZXR1cm4gdXJpTGlzdDsKK30KKwordm9pZCBQ
YXN0ZWJvYXJkSGVscGVyOjpnZXRDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqIGNsaXBi
b2FyZCkKK3sKKyAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gRGF0YU9iamVjdEd0azo6
Zm9yQ2xpcGJvYXJkKGNsaXBib2FyZCk7CisgICAgQVNTRVJUKGRhdGFPYmplY3QpOworCisgICAg
aWYgKGd0a19jbGlwYm9hcmRfd2FpdF9pc190ZXh0X2F2YWlsYWJsZShjbGlwYm9hcmQpKSB7Cisg
ICAgICAgIEdPd25QdHI8Z2NoYXI+IHRleHREYXRhKGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4
dChjbGlwYm9hcmQpKTsKKyAgICAgICAgaWYgKHRleHREYXRhKQorICAgICAgICAgICAgZGF0YU9i
amVjdC0+c2V0VGV4dChTdHJpbmc6OmZyb21VVEY4KHRleHREYXRhLmdldCgpKSk7CisgICAgfQor
CisgICAgaWYgKGd0a19jbGlwYm9hcmRfd2FpdF9pc190YXJnZXRfYXZhaWxhYmxlKGNsaXBib2Fy
ZCwgZ2RrTWFya3VwQXRvbSkpIHsKKyAgICAgICBpZiAoR3RrU2VsZWN0aW9uRGF0YSogZGF0YSA9
IGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfY29udGVudHMoY2xpcGJvYXJkLCBnZGtNYXJrdXBBdG9t
KSkgeworICAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyKFRleHRS
ZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIsIHRydWUpKTsKKyAg
ICAgICAgICBTdHJpbmcgbWFya3VwKGRlY29kZXItPmRlY29kZShyZWludGVycHJldF9jYXN0PGNo
YXIqPihkYXRhLT5kYXRhKSwgZGF0YS0+bGVuZ3RoKSk7CisgICAgICAgICAgbWFya3VwICs9IGRl
Y29kZXItPmZsdXNoKCk7CisgICAgICAgICAgZGF0YU9iamVjdC0+c2V0TWFya3VwKG1hcmt1cCk7
CisgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX2ZyZWUoZGF0YSk7CisgICAgICAgfQorICAg
IH0KKworICAgIGlmIChndGtfY2xpcGJvYXJkX3dhaXRfaXNfdGFyZ2V0X2F2YWlsYWJsZShjbGlw
Ym9hcmQsIHVyaUxpc3RBdG9tKSkgeworICAgICAgICBpZiAoR3RrU2VsZWN0aW9uRGF0YSogZGF0
YSA9IGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfY29udGVudHMoY2xpcGJvYXJkLCB1cmlMaXN0QXRv
bSkpIHsKKyAgICAgICAgICAgIGdjaGFyKiogdXJpcyA9IGd0a19zZWxlY3Rpb25fZGF0YV9nZXRf
dXJpcyhkYXRhKTsKKyAgICAgICAgICAgIGlmICh1cmlzKSB7CisgICAgICAgICAgICAgICAgZGF0
YU9iamVjdC0+c2V0VVJJTGlzdCh1cmlzVG9LVVJMVmVjdG9yKHVyaXMpKTsKKyAgICAgICAgICAg
ICAgICBnX3N0cmZyZWV2KHVyaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ3RrX3Nl
bGVjdGlvbl9kYXRhX2ZyZWUoZGF0YSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgUGFz
dGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0
aW9uRGF0YSwgZ3VpbnQgaW5mbywgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCkKIHsKICAgICBp
ZiAoaW5mbyA9PSBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZVRleHQpKQogICAgICAgICBn
dGtfc2VsZWN0aW9uX2RhdGFfc2V0X3RleHQoc2VsZWN0aW9uRGF0YSwgZGF0YU9iamVjdC0+dGV4
dCgpLnV0ZjgoKS5kYXRhKCksIC0xKTsKKwogICAgIGVsc2UgaWYgKGluZm8gPT0gZ2V0SWRGb3JU
YXJnZXRUeXBlKFRhcmdldFR5cGVNYXJrdXApKSB7CiAgICAgICAgIEdPd25QdHI8Z2NoYXI+IG1h
cmt1cChnX3N0cmR1cChkYXRhT2JqZWN0LT5tYXJrdXAoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAg
ICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uRGF0YSwgc2VsZWN0aW9uRGF0YS0+
dGFyZ2V0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZ3VjaGFyKj4obWFya3VwLmdldCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJsZW4obWFya3VwLmdldCgpKSk7CisgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PGNvbnN0IGd1Y2hhcio+KG1hcmt1cC5nZXQoKSksIHN0cmxlbihtYXJrdXAuZ2V0KCkpKTsK
KworICAgIH0gZWxzZSBpZiAoaW5mbyA9PSBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZVVS
SUxpc3QpKSB7CisgICAgICAgIFZlY3RvcjxLVVJMPiB1cmlMaXN0KGRhdGFPYmplY3QtPnVyaUxp
c3QoKSk7CisgICAgICAgIGdjaGFyKiogdXJpcyA9IGdfbmV3MChnY2hhciosIHVyaUxpc3Quc2l6
ZSgpICsgMSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXJpTGlzdC5zaXplKCk7
IGkrKykKKyAgICAgICAgICAgIHVyaXNbaV0gPSBnX3N0cmR1cCh1cmlMaXN0W2ldLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXRfdXJpcyhz
ZWxlY3Rpb25EYXRhLCB1cmlzKTsKKyAgICAgICAgZ19zdHJmcmVldih1cmlzKTsKKworICAgIH0g
ZWxzZSBpZiAoaW5mbyA9PSBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZU5ldHNjYXBlVVJM
KSAmJiBkYXRhT2JqZWN0LT5oYXNVUkwoKSkgeworICAgICAgICBTdHJpbmcgdXJsKGRhdGFPYmpl
Y3QtPnVybCgpKTsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCh1cmwpOworICAgICAgICByZXN1bHQu
YXBwZW5kKCJcbiIpOworCisgICAgICAgIGlmIChkYXRhT2JqZWN0LT5oYXNUZXh0KCkpCisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGRhdGFPYmplY3QtPnRleHQoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodXJsKTsKKworICAgICAgICBHT3duUHRyPGdjaGFy
PiByZXN1bHREYXRhKGdfc3RyZHVwKHJlc3VsdC51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIGd0
a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uRGF0YSwgc2VsZWN0aW9uRGF0YS0+dGFyZ2V0
LCA4LAorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBndWNoYXIqPihyZXN1bHRE
YXRhLmdldCgpKSwgc3RybGVuKHJlc3VsdERhdGEuZ2V0KCkpKTsKICAgICB9CiB9CiAKQEAgLTEw
Niw2ICsxODEsMTEgQEAgR3RrVGFyZ2V0TGlzdCogUGFzdGVib2FyZEhlbHBlcjo6dGFyZ2V0TGlz
dEZvckRhdGFPYmplY3QoRGF0YU9iamVjdEd0ayogZGF0YU9iamUKICAgICBpZiAoZGF0YU9iamVj
dC0+aGFzTWFya3VwKCkpCiAgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdCwgZ2RrTWFy
a3VwQXRvbSwgMCwgZ2V0SWRGb3JUYXJnZXRUeXBlKFRhcmdldFR5cGVNYXJrdXApKTsKIAorICAg
IGlmIChkYXRhT2JqZWN0LT5oYXNVUklMaXN0KCkpIHsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0
X2FkZF91cmlfdGFyZ2V0cyhsaXN0LCBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZVVSSUxp
c3QpKTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LCBuZXRzY2FwZVVSTEF0b20s
IDAsIGdldElkRm9yVGFyZ2V0VHlwZShUYXJnZXRUeXBlTmV0c2NhcGVVUkwpKTsKKyAgICB9CisK
ICAgICByZXR1cm4gbGlzdDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UGFzdGVib2FyZEhlbHBlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5oCmluZGV4IDZlNWQzNjYuLjFhZWI5YjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkSGVscGVyLmgKQEAgLTUwLDcgKzUwLDggQEAgcHVibGljOgogICAgIEd0a0NsaXBib2FyZCog
Z2V0UHJpbWFyeVNlbGVjdGlvbkNsaXBib2FyZChGcmFtZSopIGNvbnN0OwogICAgIEd0a1Rhcmdl
dExpc3QqIHRhcmdldExpc3QoKSBjb25zdDsKICAgICB2b2lkIGZpbGxTZWxlY3Rpb25EYXRhKEd0
a1NlbGVjdGlvbkRhdGEqLCBndWludCwgRGF0YU9iamVjdEd0ayopOwotICAgIHZvaWQgd3JpdGVD
bGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBHQ2xvc3VyZSopOworICAgIHZvaWQgd3Jp
dGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBHQ2xvc3VyZSogY2xvc3VyZSA9IDAp
OworICAgIHZvaWQgZ2V0Q2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKik7CiAKICAgICBl
bnVtIFBhc3RlYm9hcmRUYXJnZXRUeXBlIHsgVGFyZ2V0VHlwZVRleHQsIFRhcmdldFR5cGVNYXJr
dXAsIFRhcmdldFR5cGVVUklMaXN0LCBUYXJnZXRUeXBlTmV0c2NhcGVVUkwsIFRhcmdldFR5cGVJ
bWFnZSwgVGFyZ2V0VHlwZVVua25vd24gfTsKICAgICB2aXJ0dWFsIGd1aW50IGdldElkRm9yVGFy
Z2V0VHlwZShQYXN0ZWJvYXJkVGFyZ2V0VHlwZSkgPSAwOwotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55020</attachid>
            <date>2010-05-04 08:38:19 -0700</date>
            <delta_ts>2010-05-04 08:44:45 -0700</delta_ts>
            <desc>Convert current drag-and-drop implementation to use the new infrastructure</desc>
            <filename>0001-JavaScriptCore-GTK-Enable-DOM-clipboard-and-drag-and.patch</filename>
            <type>text/plain</type>
            <size>28138</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSAxYmE2OTFjNzllZTljZTJjZWE5Zjk4ZGY2MmFhNWI4ODBiN2M2NDdkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDQgTWF5IDIwMTAgMDg6MDQ6NTIgLTA3MDAKU3ViamVjdDogW1BBVENIXSBK
YXZhU2NyaXB0Q29yZTogW0dUS10gRW5hYmxlIERPTSBjbGlwYm9hcmQgYW5kIGRyYWctYW5kLWRy
b3AgYWNjZXNzCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA2MjMK
ClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQ29udmVydCBkcmFnZ2luZyBwb3J0aW9uIG9m
IGRyYWctYW5kLWRyb3AgdG8gdXNlIERhdGFPYmplY3RHdGsuCgoqIHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaDogQWRkIGZvcndhcmQgZGVjbGFyYXRpb25zIGZvciBHT2JqZWN0IGZ1bmN0aW9ucy4KCldl
YkNvcmU6IFtHVEtdIEVuYWJsZSBET00gY2xpcGJvYXJkIGFuZCBkcmFnLWFuZC1kcm9wIGFjY2Vz
cwpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA2MjMKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKQ29udmVydCBkcmFnZ2luZyBwb3J0aW9uIG9mIGRyYWctYW5k
LWRyb3AgdG8gdXNlIERhdGFPYmplY3RHdGsuCgpObyBuZXcgdGVzdHMsIGJlY2F1c2UgZnVuY3Rp
b25hbGl0eSBoYXMgbm90IGNoYW5nZWQuCgoqIHBhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHA6
CihXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKTogUGFzcyB0
aGUgRGF0YU9iamVjdEd0ayBhcyBhIHBhcmFtZXRlciBoZXJlLgoqIHBsYXRmb3JtL0RyYWdEYXRh
Lmg6IERlZmluZSBEcmFnRGF0YVJlZiB0byBiZSBhIFJlZlB0ciB0byBhIERhdGFPYmplY3RHdGsu
CiogcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oOgooV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpj
cmVhdGUpOiBUYWtlIHRoZSBEYXRhT2JqZWN0IGFzIGEgcGFyYW1ldGVyIGluc3RlYWQgb2YgY3Jl
YXRpbmcgaXQgaGVyZS4KKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6aGVscGVyKTogQWRkZWQuCihX
ZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmRhdGFPYmplY3QpOiBBZGRlZC4KKiBwbGF0Zm9ybS9ndGsv
RHJhZ0RhdGFHdGsuY3BwOgooV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zRmlsZXMpOiBSZXR1
cm4gdHJ1ZSBpZiB0aGUgRE8gaGFzIGZpbGVzLgooV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5h
bWVzKTogUmV0dXJuIHRoZSBETydzIGZpbGVzLgooV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5z
UGxhaW5UZXh0KTogcmV0dXJuIHRydWUgaWYgdGhlIERPIGhhcyBwbGFpbiB0ZXh0LgooV2ViQ29y
ZTo6RHJhZ0RhdGE6OmFzUGxhaW5UZXh0KTogUmV0dXJuIHRoZSBETydzIHBsYWluIHRleHQuCihX
ZWJDb3JlOjpEcmFnRGF0YTo6YXNDb2xvcik6IEFkZCBhIG5vdEltcGxlbWVudGVkLgooV2ViQ29y
ZTo6RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZCk6IENyZWF0ZSBhIENsaXBib2FyZEd0ayB3aXRo
IHRoZSBjb250YWluaW5nIGRyYWcgZGF0YS4KKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0Nv
bXBhdGlibGVDb250ZW50KTogQ2hlY2sgdGhlIG90aGVyIG1lbWJlciBmdW5jdGlvbnMgZm9yIHRo
ZSBhbnN3ZXIgaGVyZS4KKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6IENoZWNrIGlm
IHRoZSBETyBoYXMgYW4gVVJMLgooV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKTogUmV0dXJuIHRo
ZSBVUkwgZnJvbSB0aGUgRE8uCihXZWJDb3JlOjpEcmFnRGF0YTo6YXNGcmFnbWVudCk6IFJldHVy
biB0aGUgZnJhZ21lbnQgZnJvbSB0aGUgRE8uCiogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxw
ZXIuY3BwOgooV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEpOiBB
ZGQgc3VwcG9ydCBmb3IgaW1hZ2VzIGhlcmUuCihXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVyOjp0
YXJnZXRMaXN0Rm9yRGF0YU9iamVjdCk6IEFkZCBzdXBwb3J0IGZvciBpbWFnZXMgaGVyZS4KKiBw
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oOiBNYWtlIHRhcmdldExpc3RGb3JEYXRhT2Jq
ZWN0IGEgcHVibGljIG1ldGhvZC4KCldlYktpdC9ndGs6IFtHVEtdIEVuYWJsZSBET00gY2xpcGJv
YXJkIGFuZCBkcmFnLWFuZC1kcm9wIGFjY2VzcwpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzA2MjMKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQ29udmVydCBk
cmFnZ2luZyBwb3J0aW9uIG9mIGRyYWctYW5kLWRyb3AgdG8gdXNlIERhdGFPYmplY3RHdGsuCgoq
IFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwOgooV2ViS2l0OjpEcmFnQ2xpZW50Ojp3
aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbik6IFJlbW92ZSB0aGUgbm90SW1wbGVtZW50
ZWQuIEl0CiBpcyBpbXBsZW1lbnRlZCwgaXQncyBqdXN0IGEgbm8tb3AuCihXZWJLaXQ6OkRyYWdD
bGllbnQ6OnN0YXJ0RHJhZyk6IFN0YXJ0IHRoZSBkcmFnIGNvbnRleHQgdmlhIHRoZSBDbGlwYm9h
cmRHdGsgYW5kIFBhc3RlYm9hcmRIZWxwZXIgbm93LgoqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGll
bnRHdGsuaDogU21hbGwgc3R5bGUgZml4LgoqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6IEFkZCBh
IEhhc2hNYXAgb2YgY29udGV4dHMgYW5kIERhdGFPYmplY3RzIGhlcmUgdG8KIHRvIHJlcHJlc2Vu
dCBhbGwgY3VycmVudCBkcmFnIG9wZXJhdGlvbnMuCiogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
Ogood2Via2l0X3dlYl92aWV3X2Rpc3Bvc2UpOiBDbGVhciBhbGwgZGF0YSBvYmplY3RzIGR1cmlu
ZyBkaXNwb3NhbC4KKHdlYmtpdF93ZWJfdmlld19kcmFnX2VuZCk6IFdoZW4gYSBkcmFnIGlzIG92
ZXIsIGp1c3QgcmVtb3ZlIGl0IGZyb20gdGhlIG1hcC4KKHdlYmtpdF93ZWJfdmlld19kcmFnX2Rh
dGFfZ2V0KTogVG8gZ2V0IHRoZSBkcmFnIGRhdGEsIGp1c3QgZ3JhYiBpdCBmcm9tIHRoZSBEYXRh
T2JqZWN0LgotLS0KIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
fCAgIDExICsrKwogSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR1JlZlB0ci5oICAgICAgICB8
ICAgIDMgKwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MzQgKysrKysrKwogV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwICAgICAgICB8
ICAgIDIgKy0KIFdlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCAgICAgICAgICAgICAgICAgfCAg
ICA0ICstCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaCAgICAgICAgIHwgICAg
NyArLQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwICAgICAgICB8ICAgMzkg
KysrKysrLS0tCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCAgIHwg
ICAgOCArKy0KIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaCAgICAgfCAg
ICAzICstCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy
MSArKysrKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcCB8ICAg
NDkgKysrKy0tLS0tLS0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5o
ICAgfCAgICA2ICstCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggICAgICAgICAg
IHwgICAgNCArCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAgIHwg
IDEyNiArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDE0IGZpbGVzIGNoYW5nZWQsIDE1MiBp
bnNlcnRpb25zKCspLCAxNjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQxOWM5ZmYuLjk2
ZjMwMTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNS0wNCAgTWFydGluIFJv
Ymluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRW5hYmxlIERPTSBjbGlwYm9hcmQgYW5kIGRy
YWctYW5kLWRyb3AgYWNjZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMDYyMworCisgICAgICAgIENvbnZlcnQgZHJhZ2dpbmcgcG9ydGlvbiBvZiBk
cmFnLWFuZC1kcm9wIHRvIHVzZSBEYXRhT2JqZWN0R3RrLgorCisgICAgICAgICogd3RmL2dvYmpl
Y3QvR1JlZlB0ci5oOiBBZGQgZm9yd2FyZCBkZWNsYXJhdGlvbnMgZm9yIEdPYmplY3QgZnVuY3Rp
b25zLgorCiAyMDEwLTA1LTA0ICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaCBiL0phdmFTY3JpcHRDb3Jl
L3d0Zi9nb2JqZWN0L0dSZWZQdHIuaAppbmRleCA2NjczOWVmLi4zYTMzNjA1IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9HUmVmUHRyLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvd3RmL2dvYmplY3QvR1JlZlB0ci5oCkBAIC0yNyw2ICsyNyw5IEBACiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgogCiB0eXBlZGVmIHN0cnVjdCBfR0hhc2hUYWJsZSBHSGFzaFRhYmxlOwordHlwZWRl
ZiB2b2lkKiBncG9pbnRlcjsKK2V4dGVybiAiQyIgdm9pZCBnX29iamVjdF91bnJlZihncG9pbnRl
ciBvYmplY3QpOworZXh0ZXJuICJDIiBncG9pbnRlciAgZ19vYmplY3RfcmVmX3NpbmsoZ3BvaW50
ZXIgb2JqZWN0KTsKIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQzYTM3YS4uYmJkNzViYyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNyBAQAorMjAxMC0wNS0wNCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dU
S10gRW5hYmxlIERPTSBjbGlwYm9hcmQgYW5kIGRyYWctYW5kLWRyb3AgYWNjZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDYyMworCisgICAgICAg
IENvbnZlcnQgZHJhZ2dpbmcgcG9ydGlvbiBvZiBkcmFnLWFuZC1kcm9wIHRvIHVzZSBEYXRhT2Jq
ZWN0R3RrLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSBmdW5jdGlvbmFsaXR5IGhh
cyBub3QgY2hhbmdlZC4KKworICAgICAgICAqIHBhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJk
KTogUGFzcyB0aGUgRGF0YU9iamVjdEd0ayBhcyBhIHBhcmFtZXRlciBoZXJlLgorICAgICAgICAq
IHBsYXRmb3JtL0RyYWdEYXRhLmg6IERlZmluZSBEcmFnRGF0YVJlZiB0byBiZSBhIFJlZlB0ciB0
byBhIERhdGFPYmplY3RHdGsuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpjcmVhdGUpOiBUYWtlIHRoZSBEYXRh
T2JqZWN0IGFzIGEgcGFyYW1ldGVyIGluc3RlYWQgb2YgY3JlYXRpbmcgaXQgaGVyZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6aGVscGVyKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRHdGs6OmRhdGFPYmplY3QpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvRHJhZ0RhdGFHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRh
aW5zRmlsZXMpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgRE8gaGFzIGZpbGVzLgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5hbWVzKTogUmV0dXJuIHRoZSBETydzIGZpbGVzLgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zUGxhaW5UZXh0KTogcmV0dXJuIHRydWUg
aWYgdGhlIERPIGhhcyBwbGFpbiB0ZXh0LgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFz
UGxhaW5UZXh0KTogUmV0dXJuIHRoZSBETydzIHBsYWluIHRleHQuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6YXNDb2xvcik6IEFkZCBhIG5vdEltcGxlbWVudGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZCk6IENyZWF0ZSBhIENsaXBib2FyZEd0ayB3
aXRoIHRoZSBjb250YWluaW5nIGRyYWcgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc0NvbXBhdGlibGVDb250ZW50KTogQ2hlY2sgdGhlIG90aGVyIG1lbWJlciBmdW5j
dGlvbnMgZm9yIHRoZSBhbnN3ZXIgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpj
b250YWluc1VSTCk6IENoZWNrIGlmIHRoZSBETyBoYXMgYW4gVVJMLgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0RhdGE6OmFzVVJMKTogUmV0dXJuIHRoZSBVUkwgZnJvbSB0aGUgRE8uCisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6YXNGcmFnbWVudCk6IFJldHVybiB0aGUgZnJhZ21lbnQgZnJv
bSB0aGUgRE8uCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEpOiBB
ZGQgc3VwcG9ydCBmb3IgaW1hZ2VzIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
SGVscGVyOjp0YXJnZXRMaXN0Rm9yRGF0YU9iamVjdCk6IEFkZCBzdXBwb3J0IGZvciBpbWFnZXMg
aGVyZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oOiBNYWtlIHRh
cmdldExpc3RGb3JEYXRhT2JqZWN0IGEgcHVibGljIG1ldGhvZC4KKwogMjAxMC0wNS0wNCAgSm9z
ZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxl
ckd0ay5jcHAgYi9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKaW5kZXggNzA1
MTM5MS4uMGZmNjdkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJH
dGsuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcApAQCAtOTYs
NyArOTYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBXaWRnZXQqIHdpZAogCiBQYXNzUmVmUHRyPENsaXBib2Fy
ZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIENsaXBib2FyZEd0azo6Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCB0cnVlKTsKKyAg
ICByZXR1cm4gQ2xpcGJvYXJkR3RrOjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIERhdGFPYmpl
Y3RHdGs6OmNyZWF0ZSgpLCB0cnVlKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3Vz
ZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwg
RnJhbWUqIHN1YmZyYW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDllZTNjYTIuLjg0YjkxMTEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdEYXRhLmgKQEAgLTUyLDggKzUyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgSURhdGFPYmpl
Y3QqIERyYWdEYXRhUmVmOwogI2VsaWYgUExBVEZPUk0oV1gpCiB0eXBlZGVmIGNsYXNzIHd4RGF0
YU9iamVjdCogRHJhZ0RhdGFSZWY7CiAjZWxpZiBQTEFURk9STShHVEspCi0vLyBGSVhNRTogdGhp
cyBzaG91bGQgcHJvYmFibHkgYmUgc29tZXRoaW5nIGdkay1zcGVjaWZpYwotdHlwZWRlZiB2b2lk
KiBEcmFnRGF0YVJlZjsKKyNpbmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCit0eXBlZGVmIFJlZlB0
cjxXZWJDb3JlOjpEYXRhT2JqZWN0R3RrPiBEcmFnRGF0YVJlZjsKICNlbGlmIFBMQVRGT1JNKENI
Uk9NSVVNKQogI2luY2x1ZGUgIkRyYWdEYXRhUmVmLmgiCiAjZWxpZiBQTEFURk9STShIQUlLVSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKaW5kZXggZmQzMWQxZS4uYzM0MzhjNCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKQEAgLTQ1LDkgKzQ1LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRHdGso
cG9saWN5LCBjbGlwYm9hcmQpKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENsaXBib2FyZEd0az4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJv
b2wgaXNGb3JEcmFnZ2luZykKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3Rr
PiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2Jq
ZWN0R3RrPiBkYXRhT2JqZWN0LCBib29sIGlzRm9yRHJhZ2dpbmcpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkR3RrKHBvbGljeSwgRGF0YU9iamVj
dEd0azo6Y3JlYXRlKCksIGlzRm9yRHJhZ2dpbmcpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ2xpcGJvYXJkR3RrKHBvbGljeSwgZGF0YU9iamVjdCwgaXNGb3JEcmFnZ2luZykp
OwogICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgfkNsaXBib2FyZEd0aygpOwogCkBAIC03Myw2
ICs3Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFz
RGF0YSgpOwogCisgICAgICAgIFBhc3RlYm9hcmRIZWxwZXIqIGhlbHBlcigpIHsgcmV0dXJuIG1f
aGVscGVyOyB9CisgICAgICAgIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCgp
IHsgcmV0dXJuIG1fZGF0YU9iamVjdDsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgQ2xpcGJv
YXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgR3RrQ2xpcGJvYXJkKik7CiAgICAgICAgIENs
aXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0
az4sIGJvb2wpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCmluZGV4IDY5YjMxNjEu
LjE5ZWQxZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKQEAgLTEsNCArMSw2
IEBACiAvKgorICogIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgorICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwogICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgpAQCAtMTgsOCArMjAsMTEgQEAKICNpbmNsdWRlICJEcmFnRGF0YS5o
IgogCiAjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCisjaW5jbHVkZSAiQ2xpcGJvYXJkR3RrLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5j
bHVkZSAibWFya3VwLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zNSw1MiArNDAsNjQgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnND
b2xvcigpIGNvbnN0CiAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zRmlsZXMoKSBjb25zdAogewot
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gIW1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZXMo
KS5pc0VtcHR5KCk7CiB9CiAKIHZvaWQgRHJhZ0RhdGE6OmFzRmlsZW5hbWVzKFZlY3RvcjxTdHJp
bmc+JiByZXN1bHQpIGNvbnN0CiB7CisgICAgVmVjdG9yPFN0cmluZz4gZmlsZXMobV9wbGF0Zm9y
bURyYWdEYXRhLT5maWxlcygpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVzLnNp
emUoKTsgaSsrKQorICAgICAgICByZXN1bHQuYXBwZW5kKGZpbGVzW2ldKTsKIH0KIAogYm9vbCBE
cmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQoKSBjb25zdAogewotICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNUZXh0KCk7CiB9CiAKIFN0cmluZyBE
cmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAg
ICByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhLT50ZXh0KCk7CiB9CiAKIENvbG9yIERyYWdEYXRh
Ojphc0NvbG9yKCkgY29uc3QKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBD
b2xvcigpOwogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBi
b2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpIGNvbnN0CitQYXNzUmVmUHRyPENsaXBib2FyZD4g
RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBj
b25zdAogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShw
b2xpY3ksIG1fcGxhdGZvcm1EcmFnRGF0YSwgdHJ1ZSk7CiB9CiAKIGJvb2wgRHJhZ0RhdGE6OmNv
bnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gY29udGFpbnNQbGFpblRleHQoKSB8fCBjb250YWluc1VSTCgpIHx8IG1fcGxhdGZv
cm1EcmFnRGF0YS0+aGFzTWFya3VwKCkgfHwgY29udGFpbnNDb2xvcigpIHx8IGNvbnRhaW5zRmls
ZXMoKTsKIH0KIAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAogewotICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNVUkwoKTsKIH0K
IAogU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAogewotICAgIHJl
dHVybiBTdHJpbmcoKTsKLX0KKyAgICBTdHJpbmcgdXJsKG1fcGxhdGZvcm1EcmFnRGF0YS0+dXJs
KCkpOworCisgICAgaWYgKHRpdGxlKQorICAgICAgICAqdGl0bGUgPSBtX3BsYXRmb3JtRHJhZ0Rh
dGEtPnVybExhYmVsKCk7CiAKKyAgICByZXR1cm4gdXJsOworfQogCi1QYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IERyYWdEYXRhOjphc0ZyYWdtZW50KERvY3VtZW50KikgY29uc3QKK1Bhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0RhdGE6OmFzRnJhZ21lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50KSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIGlmICghbV9wbGF0Zm9ybURyYWdE
YXRhLT5oYXNNYXJrdXAoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvY3VtZW50LCBt
X3BsYXRmb3JtRHJhZ0RhdGEtPm1hcmt1cCgpLCAiIikpOworICAgIHJldHVybiBmcmFnbWVudC5y
ZWxlYXNlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRIZWxwZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5j
cHAKaW5kZXggNTFmY2MyZS4uM2RjNGNjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEw
IE1hcnRpbiBSb2JpbnNvbiA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMp
IElnYWxpYSBTLkwuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTE2
NSw3ICsxNjYsOSBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OmZpbGxTZWxlY3Rpb25EYXRhKEd0
a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbkRhdGEsIGd1aW50CiAgICAgICAgIEdPd25QdHI8Z2No
YXI+IHJlc3VsdERhdGEoZ19zdHJkdXAocmVzdWx0LnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAg
Z3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCBzZWxlY3Rpb25EYXRhLT50YXJn
ZXQsIDgsCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KHJlc3Vs
dERhdGEuZ2V0KCkpLCBzdHJsZW4ocmVzdWx0RGF0YS5nZXQoKSkpOwotICAgIH0KKworICAgIH0g
ZWxzZSBpZiAoaW5mbyA9PSBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZUltYWdlKSkKKyAg
ICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldF9waXhidWYoc2VsZWN0aW9uRGF0YSwgZGF0YU9i
amVjdC0+aW1hZ2UoKSk7CiB9CiAKIEd0a1RhcmdldExpc3QqIFBhc3RlYm9hcmRIZWxwZXI6OnRh
cmdldExpc3RGb3JEYXRhT2JqZWN0KERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QpCkBAIC0xODMs
NiArMTg2LDkgQEAgR3RrVGFyZ2V0TGlzdCogUGFzdGVib2FyZEhlbHBlcjo6dGFyZ2V0TGlzdEZv
ckRhdGFPYmplY3QoRGF0YU9iamVjdEd0ayogZGF0YU9iamUKICAgICAgICAgZ3RrX3RhcmdldF9s
aXN0X2FkZChsaXN0LCBuZXRzY2FwZVVSTEF0b20sIDAsIGdldElkRm9yVGFyZ2V0VHlwZShUYXJn
ZXRUeXBlTmV0c2NhcGVVUkwpKTsKICAgICB9CiAKKyAgICBpZiAoZGF0YU9iamVjdC0+aGFzSW1h
Z2UoKSkKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF9pbWFnZV90YXJnZXRzKGxpc3QsIGdl
dElkRm9yVGFyZ2V0VHlwZShUYXJnZXRUeXBlSW1hZ2UpLCBUUlVFKTsKKwogICAgIHJldHVybiBs
aXN0OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVs
cGVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmgKaW5kZXggMWFl
YjliNy4uMmQ0NmFkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEhlbHBlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaApA
QCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNyBMdWNhIEJydW5vIDxsZXRoYWxt
YW44OEBnbWFpbC5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNv
bkB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCiAgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTQ5LDYgKzUwLDcgQEAgcHVibGljOgog
ICAgIEd0a0NsaXBib2FyZCogZ2V0Q2xpcGJvYXJkKEZyYW1lKikgY29uc3Q7CiAgICAgR3RrQ2xp
cGJvYXJkKiBnZXRQcmltYXJ5U2VsZWN0aW9uQ2xpcGJvYXJkKEZyYW1lKikgY29uc3Q7CiAgICAg
R3RrVGFyZ2V0TGlzdCogdGFyZ2V0TGlzdCgpIGNvbnN0OworICAgIEd0a1RhcmdldExpc3QqIHRh
cmdldExpc3RGb3JEYXRhT2JqZWN0KERhdGFPYmplY3RHdGsqKTsKICAgICB2b2lkIGZpbGxTZWxl
Y3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRhdGEqLCBndWludCwgRGF0YU9iamVjdEd0ayopOwogICAg
IHZvaWQgd3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBHQ2xvc3VyZSogY2xv
c3VyZSA9IDApOwogICAgIHZvaWQgZ2V0Q2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKik7
CkBAIC02Miw3ICs2NCw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBHdGtUYXJnZXRM
aXN0KiBtX3RhcmdldExpc3Q7Ci0gICAgR3RrVGFyZ2V0TGlzdCogdGFyZ2V0TGlzdEZvckRhdGFP
YmplY3QoRGF0YU9iamVjdEd0ayopOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBhNDE3MGQyLi5jMzg2NWM3IDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA1LTA0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbR1RLXSBFbmFibGUgRE9NIGNsaXBib2FyZCBhbmQgZHJhZy1hbmQtZHJvcCBhY2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNjIz
CisKKyAgICAgICAgQ29udmVydCBkcmFnZ2luZyBwb3J0aW9uIG9mIGRyYWctYW5kLWRyb3AgdG8g
dXNlIERhdGFPYmplY3RHdGsuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVz
dGluYXRpb25BY3Rpb24pOiBSZW1vdmUgdGhlIG5vdEltcGxlbWVudGVkLiBJdAorICAgICAgICAg
aXMgaW1wbGVtZW50ZWQsIGl0J3MganVzdCBhIG5vLW9wLgorICAgICAgICAoV2ViS2l0OjpEcmFn
Q2xpZW50OjpzdGFydERyYWcpOiBTdGFydCB0aGUgZHJhZyBjb250ZXh0IHZpYSB0aGUgQ2xpcGJv
YXJkR3RrIGFuZCBQYXN0ZWJvYXJkSGVscGVyIG5vdy4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EcmFnQ2xpZW50R3RrLmg6IFNtYWxsIHN0eWxlIGZpeC4KKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5oOiBBZGQgYSBIYXNoTWFwIG9mIGNvbnRleHRzIGFuZCBEYXRhT2JqZWN0cyBo
ZXJlIHRvCisgICAgICAgICB0byByZXByZXNlbnQgYWxsIGN1cnJlbnQgZHJhZyBvcGVyYXRpb25z
LgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDogCisgICAgICAgICh3ZWJraXRf
d2ViX3ZpZXdfZGlzcG9zZSk6IENsZWFyIGFsbCBkYXRhIG9iamVjdHMgZHVyaW5nIGRpc3Bvc2Fs
LgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2RyYWdfZW5kKTogV2hlbiBhIGRyYWcgaXMgb3Zl
ciwganVzdCByZW1vdmUgaXQgZnJvbSB0aGUgbWFwLgorICAgICAgICAod2Via2l0X3dlYl92aWV3
X2RyYWdfZGF0YV9nZXQpOiBUbyBnZXQgdGhlIGRyYWcgZGF0YSwganVzdCBncmFiIGl0IGZyb20g
dGhlIERhdGFPYmplY3QuCisKIDIwMTAtMDUtMDMgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggZjRiMGRmMS4uM2I1Zjkz
MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNw
cAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwCkBAIC0x
LDQgKzEsNiBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgSWdhbGlhIFMuTC4KKyAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKICAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKQEAgLTE3LDExICsxOSwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkRyYWdDbGllbnRHdGsuaCIKIAorI2luY2x1ZGUgIkNsaXBib2FyZEd0ay5o
IgorI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkdSZWZQdHJH
dGsuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRI
ZWxwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJ3ZWJraXRwcml2
YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogCiAjaW5jbHVkZSA8Z3RrL2d0ay5o
PgpAQCAtNDEsNyArNDgsNiBAQCBEcmFnQ2xpZW50OjpEcmFnQ2xpZW50KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAKIHZvaWQgRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25B
Y3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBEcmFnRGF0YSopCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAogdm9pZCBEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rp
b24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmIHN0YXJ0UG9zLCBDbGlwYm9hcmQq
KQpAQCAtNjEsNTAgKzY3LDI5IEBAIERyYWdTb3VyY2VBY3Rpb24gRHJhZ0NsaWVudDo6ZHJhZ1Nv
dXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpCiAgICAgcmV0dXJuIERyYWdT
b3VyY2VBY3Rpb25Bbnk7CiB9CiAKLXZvaWQgRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFn
ZVJlZiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgSW50UG9p
bnQmIGV2ZW50UG9zLCBDbGlwYm9hcmQqLCBGcmFtZSogZnJhbWUsIGJvb2wgbGlua0RyYWcpCit2
b2lkIERyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFBv
aW50JiBkcmFnSW1hZ2VPcmlnaW4sIGNvbnN0IEludFBvaW50JiBldmVudFBvcywgQ2xpcGJvYXJk
KiBjbGlwYm9hcmQsIEZyYW1lKiBmcmFtZSwgYm9vbCBsaW5rRHJhZykKIHsKLSAgICBFbGVtZW50
KiB0YXJnZXRFbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmVsZW1lbnRGcm9tUG9pbnQobV9z
dGFydFBvcy54KCksIG1fc3RhcnRQb3MueSgpKTsKLSAgICBib29sIGltYWdlRHJhZyA9IGZhbHNl
OwotCi0gICAgaWYgKHRhcmdldEVsZW1lbnQpCi0gICAgICAgIGltYWdlRHJhZyA9IHRhcmdldEVs
ZW1lbnQtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKTsKLQotICAgIEdka0F0b20gdGV4dEh0bWwgPSBn
ZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygidGV4dC9odG1sIik7Ci0gICAgR2RrQXRvbSBu
ZXRzY2FwZVVybCA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NBUEVfVVJM
Iik7Ci0KLSAgICBHdGtUYXJnZXRMaXN0KiB0YXJnZXRMaXN0ID0gZ3RrX3RhcmdldF9saXN0X25l
dyhOVUxMLCAwKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKHRhcmdldExpc3QsIHRleHRIdG1s
LCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCk7Ci0gICAgZ3RrX3RhcmdldF9s
aXN0X2FkZF90ZXh0X3RhcmdldHModGFyZ2V0TGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9J
TkZPX1RFWFQpOwotCi0gICAgaWYgKGxpbmtEcmFnIHx8IGltYWdlRHJhZykgewotICAgICAgICBn
dGtfdGFyZ2V0X2xpc3RfYWRkKHRhcmdldExpc3QsIG5ldHNjYXBlVXJsLCAwLCBXRUJLSVRfV0VC
X1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMKTsKLSAgICAgICAgZ3RrX3RhcmdldF9saXN0
X2FkZF91cmlfdGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9f
VVJJX0xJU1QpOwotICAgIH0KLQotICAgIGlmIChpbWFnZURyYWcpCi0gICAgICAgIGd0a190YXJn
ZXRfbGlzdF9hZGRfaW1hZ2VfdGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFS
R0VUX0lORk9fSU1BR0UsIGZhbHNlKTsKKyAgICBDbGlwYm9hcmRHdGsqIGNsaXBib2FyZEd0ayA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Q2xpcGJvYXJkR3RrKj4oY2xpcGJvYXJkKTsKIAogICAgIEdka0Ry
YWdBY3Rpb24gZHJhZ0FjdGlvbiA9IEdES19BQ1RJT05fQ09QWTsKLSAgICBpZiAobGlua0RyYWcp
IHsKLSAgICAgICAgZHJhZ0FjdGlvbiA9IEdES19BQ1RJT05fTElOSzsKLSAgICAgICAgaWYgKGlt
YWdlRHJhZykKLSAgICAgICAgICAgIGRyYWdBY3Rpb24gPSAoR2RrRHJhZ0FjdGlvbikoZHJhZ0Fj
dGlvbiB8IEdES19BQ1RJT05fQ09QWSk7Ci0gICAgfQorICAgIGlmIChsaW5rRHJhZykKKyAgICAg
ICAgZHJhZ0FjdGlvbiA9IChHZGtEcmFnQWN0aW9uKSAoZHJhZ0FjdGlvbiB8IEdES19BQ1RJT05f
TElOSyk7CiAKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFtZV9n
ZXRfd2ViX3ZpZXcoa2l0KGZyYW1lKSk7CisgICAgUmVmUHRyPERhdGFPYmplY3RHdGs+IGRhdGFP
YmplY3QgPSBjbGlwYm9hcmRHdGstPmRhdGFPYmplY3QoKTsKKworICAgIEdSZWZQdHI8R3RrVGFy
Z2V0TGlzdD4gdGFyZ2V0TGlzdChjbGlwYm9hcmRHdGstPmhlbHBlcigpLT50YXJnZXRMaXN0Rm9y
RGF0YU9iamVjdChkYXRhT2JqZWN0LmdldCgpKSk7CiAgICAgR2RrRXZlbnQqIGV2ZW50ID0gZ2Rr
X2V2ZW50X25ldyhHREtfQlVUVE9OX1BSRVNTKTsKICAgICByZWludGVycHJldF9jYXN0PEdka0V2
ZW50QnV0dG9uKj4oZXZlbnQpLT53aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3coR1RLX1dJ
REdFVChtX3dlYlZpZXcpKTsKICAgICByZWludGVycHJldF9jYXN0PEdka0V2ZW50QnV0dG9uKj4o
ZXZlbnQpLT50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKIAotICAgIEdka0RyYWdDb250ZXh0KiBj
b250ZXh0ID0gZ3RrX2RyYWdfYmVnaW4oR1RLX1dJREdFVChtX3dlYlZpZXcpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGlzdCwgZHJhZ0FjdGlv
biwgMSwgZXZlbnQpOwotICAgIGdfb2JqZWN0X3JlZihjb250ZXh0KTsKKyAgICBHZGtEcmFnQ29u
dGV4dCogY29udGV4dCA9IGd0a19kcmFnX2JlZ2luKEdUS19XSURHRVQobV93ZWJWaWV3KSwgdGFy
Z2V0TGlzdC5nZXQoKSwgZHJhZ0FjdGlvbiwgMSwgZXZlbnQpOworICAgIFdFQktJVF9XRUJfVklF
V19HRVRfUFJJVkFURSh3ZWJWaWV3KS0+ZHJhZ2dpbmdEYXRhT2JqZWN0cy5zZXQoY29udGV4dCwg
ZGF0YU9iamVjdCk7CiAKICAgICBpZiAoaW1hZ2UpCiAgICAgICAgIGd0a19kcmFnX3NldF9pY29u
X3BpeGJ1Zihjb250ZXh0LCBpbWFnZSwgZXZlbnRQb3MueCgpIC0gZHJhZ0ltYWdlT3JpZ2luLngo
KSwgZXZlbnRQb3MueSgpIC0gZHJhZ0ltYWdlT3JpZ2luLnkoKSk7CiAgICAgZWxzZQogICAgICAg
ICBndGtfZHJhZ19zZXRfaWNvbl9kZWZhdWx0KGNvbnRleHQpOwotCi0gICAgZ3RrX3RhcmdldF9s
aXN0X3VucmVmKHRhcmdldExpc3QpOwogfQogCiBEcmFnSW1hZ2VSZWYgRHJhZ0NsaWVudDo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmggYi9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAppbmRleCA5N2VhNzJhLi42NjA0OTQw
IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAor
KysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaApAQCAtNTEsOSAr
NTEsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0Nv
bnRyb2xsZXJEZXN0cm95ZWQoKTsKIAotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgV2Vi
S2l0V2ViVmlldyogbV93ZWJWaWV3OwotICAgICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9z
dGFydFBvczsKKyAgICBwcml2YXRlOgorICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7
CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3RhcnRQb3M7CiAgICAgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IDI2NDJkNTAuLjAzNGViODggMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmgKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDgsIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAoQykg
MjAwOCBKYW4gTWljaGFlbCBDLiBBbG9uem8KICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJv
cmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTQ2LDYgKzQ3LDcgQEAKIAogI2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZS5oIgog
I2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIK
ICNpbmNsdWRlIDxlbmNoYW50Lmg+CiAjaW5jbHVkZSAiR093blB0ci5oIgogI2luY2x1ZGUgIkdl
b2xvY2F0aW9uLmgiCkBAIC0xNDksNiArMTUxLDggQEAgZXh0ZXJuICJDIiB7CiAgICAgICAgIGNo
YXIqIG1haW5SZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgICAgIEdIYXNoVGFibGUqIHN1YlJlc291
cmNlczsKICAgICAgICAgY2hhciogdG9vbHRpcFRleHQ7CisKKyAgICAgICAgSGFzaE1hcDxHZGtE
cmFnQ29udGV4dCosIFJlZlB0cjxXZWJDb3JlOjpEYXRhT2JqZWN0R3RrPiA+IGRyYWdnaW5nRGF0
YU9iamVjdHM7CiAgICAgfTsKIAogICAgICNkZWZpbmUgV0VCS0lUX1dFQl9GUkFNRV9HRVRfUFJJ
VkFURShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9U
WVBFX1dFQl9GUkFNRSwgV2ViS2l0V2ViRnJhbWVQcml2YXRlKSkKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKaW5kZXggNjUzNjk2MS4uMTBhMDgyYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKQEAgLTExMjQsNiArMTEyNCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19kaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgcHJpdi0+c3ViUmVzb3VyY2Vz
ID0gTlVMTDsKICAgICB9CiAKKyAgICBwcml2LT5kcmFnZ2luZ0RhdGFPYmplY3RzLmNsZWFyKCk7
CisKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZGlz
cG9zZShvYmplY3QpOwogfQogCkBAIC0xMjM0LDEyNiArMTIzNiwyNiBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka1NjcmVl
biogcHJldmlvdQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19lbmQoR3RrV2lk
Z2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0KiBjb250ZXh0KQogewotICAgIGdfb2JqZWN0X3Vu
cmVmKGNvbnRleHQpOwotfQotCi1zdHJ1Y3QgRE5EQ29udGVudHNSZXF1ZXN0Ci17Ci0gICAgZ2lu
dCBpbmZvOwotICAgIEd0a1NlbGVjdGlvbkRhdGEqIGRuZF9zZWxlY3Rpb25fZGF0YTsKLQotICAg
IGdib29sZWFuIGlzX3VybF9sYWJlbF9yZXF1ZXN0OwotICAgIGdjaGFyKiB1cmw7Ci19OwotCi12
b2lkIGNsaXBib2FyZF9jb250ZW50c19yZWNlaXZlZChHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwg
R3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uX2RhdGEsIGdwb2ludGVyIGRhdGEpCi17Ci0gICAg
RE5EQ29udGVudHNSZXF1ZXN0KiBjb250ZW50c19yZXF1ZXN0ID0gcmVpbnRlcnByZXRfY2FzdDxE
TkRDb250ZW50c1JlcXVlc3QqPihkYXRhKTsKLQotICAgIGlmIChjb250ZW50c19yZXF1ZXN0LT5p
c191cmxfbGFiZWxfcmVxdWVzdCkgewotICAgICAgICAvLyBXZSBoYXZlIHJlY2VpdmVkIGNvbnRl
bnRzIG9mIHRoZSBsYWJlbCBjbGlwYm9hcmQuIFVzZSB0aGVtIHRvIGZvcm0KLSAgICAgICAgLy8g
cmVxdWlyZWQgc3RydWN0dXJlcy4gV2hlbiBmb3JtZWQsIGVuaGFuY2UgdGhlIGRuZCdzIHNlbGVj
dGlvbiBkYXRhCi0gICAgICAgIC8vIHdpdGggdGhlbSBhbmQgcmV0dXJuLgotCi0gICAgICAgIC8v
IElmIHRoZSBsYWJlbCBpcyBlbXB0eSwgdXNlIHRoZSB1cmwgaXRzZWxmLgotICAgICAgICBnY2hh
ciogdXJsX2xhYmVsID0gcmVpbnRlcnByZXRfY2FzdDxnY2hhcio+KGd0a19zZWxlY3Rpb25fZGF0
YV9nZXRfdGV4dChzZWxlY3Rpb25fZGF0YSkpOwotICAgICAgICBpZiAoIXVybF9sYWJlbCkKLSAg
ICAgICAgICAgIHVybF9sYWJlbCA9IGdfc3RyZHVwKGNvbnRlbnRzX3JlcXVlc3QtPnVybCk7Ci0K
LSAgICAgICAgZ2NoYXIqIGRhdGEgPSAwOwotICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzX3JlcXVl
c3QtPmluZm8pIHsKLSAgICAgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJ
X0xJU1Q6Ci0gICAgICAgICAgICBkYXRhID0gZ19zdHJkdXBfcHJpbnRmKCIlc1xyXG4lc1xyXG4i
LCBjb250ZW50c19yZXF1ZXN0LT51cmwsIHVybF9sYWJlbCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMOgot
ICAgICAgICAgICAgZGF0YSA9IGdfc3RyZHVwX3ByaW50ZigiJXNcbiVzIiwgY29udGVudHNfcmVx
dWVzdC0+dXJsLCB1cmxfbGFiZWwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoZGF0YSkgewotICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChj
b250ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0aW9uX2RhdGEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRlbnRzX3JlcXVlc3QtPmRuZF9zZWxlY3Rpb25fZGF0YS0+dGFy
Z2V0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PGNvbnN0IGd1Y2hhcio+KGRhdGEpLCBzdHJsZW4oZGF0YSkpOwotICAgICAgICAgICAgZ19m
cmVlKGRhdGEpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ19mcmVlKHVybF9sYWJlbCk7Ci0gICAg
ICAgIGdfZnJlZShjb250ZW50c19yZXF1ZXN0LT51cmwpOwotICAgICAgICBnX2ZyZWUoY29udGVu
dHNfcmVxdWVzdCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VC
X1ZJRVdfR0VUX1BSSVZBVEUoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCkpOwogCisgICAgLy8gVGhp
cyBtaWdodCBoYXBwZW4gaWYgYSBkcmFnIGlzIHN0aWxsIGluIHByb2dyZXNzIGFmdGVyIGEgV2Vi
S2l0V2ViVmlldworICAgIC8vIGlzIGRpcG9zZWQgYW5kIGJlZm9yZSBpdCBpcyBmaW5hbGl6ZWQu
CisgICAgaWYgKCFwcml2LT5kcmFnZ2luZ0RhdGFPYmplY3RzLmNvbnRhaW5zKGNvbnRleHQpKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgc3dpdGNoIChjb250ZW50c19yZXF1ZXN0LT5p
bmZvKSB7Ci0gICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDoKLSAgICBj
YXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhUOgotICAgICAgICB7Ci0gICAgICAg
IGdjaGFyKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxnY2hhcio+KGd0a19zZWxlY3Rpb25fZGF0
YV9nZXRfdGV4dChzZWxlY3Rpb25fZGF0YSkpOwotICAgICAgICBpZiAoZGF0YSkgewotICAgICAg
ICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChjb250ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0
aW9uX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzX3Jl
cXVlc3QtPmRuZF9zZWxlY3Rpb25fZGF0YS0+dGFyZ2V0LCA4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGRhdGEpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oZGF0YSkpOwotICAgICAg
ICAgICAgZ19mcmVlKGRhdGEpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSU1BR0U6Ci0gICAgICAgIHsK
LSAgICAgICAgR2RrUGl4YnVmKiBwaXhidWYgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X3BpeGJ1
ZihzZWxlY3Rpb25fZGF0YSk7Ci0gICAgICAgIGlmIChwaXhidWYpIHsKLSAgICAgICAgICAgIGd0
a19zZWxlY3Rpb25fZGF0YV9zZXRfcGl4YnVmKGNvbnRlbnRzX3JlcXVlc3QtPmRuZF9zZWxlY3Rp
b25fZGF0YSwgcGl4YnVmKTsKLSAgICAgICAgICAgIGdfb2JqZWN0X3VucmVmKHBpeGJ1Zik7Ci0g
ICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICBjYXNlIFdFQktJVF9XRUJf
VklFV19UQVJHRVRfSU5GT19VUklfTElTVDoKLSAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJH
RVRfSU5GT19ORVRTQ0FQRV9VUkw6Ci0gICAgICAgIC8vIFVSTCdzIGxhYmVsIGlzIHN0b3JlZCBp
biBhbm90aGVyIGNsaXBib2FyZCwgc28gd2Ugc3RvcmUgVVJMIGludG8KLSAgICAgICAgLy8gY29u
dGVudHMgcmVxdWVzdCwgbWFyayB0aGUgbGF0dGVyIGFzIGFuIHVybCBsYWJlbCByZXF1ZXN0Ci0g
ICAgICAgIC8vIGFuZCByZXF1ZXN0IGZvciBjb250ZW50cyBvZiB0aGUgbGFiZWwgY2xpcGJvYXJk
LgotICAgICAgICBjb250ZW50c19yZXF1ZXN0LT5pc191cmxfbGFiZWxfcmVxdWVzdCA9IFRSVUU7
Ci0gICAgICAgIGNvbnRlbnRzX3JlcXVlc3QtPnVybCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z2NoYXIq
PihndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X3RleHQoc2VsZWN0aW9uX2RhdGEpKTsKLQotICAgICAg
ICBndGtfY2xpcGJvYXJkX3JlcXVlc3RfY29udGVudHMoZ3RrX2NsaXBib2FyZF9nZXQoZ2RrX2F0
b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIldlYktpdENsaXBib2FyZFVybExhYmVsIikpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uX2RhdGEtPnRhcmdl
dCwgY2xpcGJvYXJkX2NvbnRlbnRzX3JlY2VpdmVkLCBjb250ZW50c19yZXF1ZXN0KTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQorICAgIHByaXYtPmRyYWdnaW5nRGF0YU9iamVjdHMucmVtb3ZlKGNv
bnRleHQpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kYXRhX2dldChH
dGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0a1NlbGVjdGlvbkRh
dGEqIHNlbGVjdGlvbl9kYXRhLCBndWludCBpbmZvLCBndWludCB0aW1lXykKLXsKLSAgICBHZGtB
dG9tIHNlbGVjdGlvbl9hdG9tID0gR0RLX05PTkU7Ci0gICAgR2RrQXRvbSB0YXJnZXRfYXRvbSA9
IHNlbGVjdGlvbl9kYXRhLT50YXJnZXQ7Ci0KLSAgICBzd2l0Y2ggKGluZm8pIHsKLSAgICAgICAg
Y2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDoKLSAgICAgICAgICAgIHNlbGVj
dGlvbl9hdG9tID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIldlYktpdENsaXBib2Fy
ZEh0bWwiKTsKLSAgICAgICAgICAgIC8vIEhUTUwgbWFya3VwIGRhdGEgaXMgc2V0IGFzIHRleHQs
IHRoZXJlZm9yLCB3ZSBuZWVkIGEgdGV4dC1saWtlIHRhcmdldCBhdG9tCi0gICAgICAgICAgICB0
YXJnZXRfYXRvbSA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJVVEY4X1NUUklORyIp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdF
VF9JTkZPX1RFWFQ6Ci0gICAgICAgICAgICBzZWxlY3Rpb25fYXRvbSA9IGdka19hdG9tX2ludGVy
bl9zdGF0aWNfc3RyaW5nKCJXZWJLaXRDbGlwYm9hcmRUZXh0Iik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSU1BR0U6Ci0gICAg
ICAgICAgICBzZWxlY3Rpb25fYXRvbSA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJX
ZWJLaXRDbGlwYm9hcmRJbWFnZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
V0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1VSSV9MSVNUOgotICAgICAgICBjYXNlIFdFQktJ
VF9XRUJfVklFV19UQVJHRVRfSU5GT19ORVRTQ0FQRV9VUkw6Ci0gICAgICAgICAgICBzZWxlY3Rp
b25fYXRvbSA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJXZWJLaXRDbGlwYm9hcmRV
cmwiKTsKLSAgICAgICAgICAgIC8vIFdlIHJlcXVpcmUgVVJMIGFuZCBsYWJlbCwgd2hpY2ggYXJl
IGJvdGggc3RvcmVkIGluIHRleHQgZm9ybWF0Ci0gICAgICAgICAgICAvLyBhbmQgYXJlIG5lZWRl
ZCB0byBiZSByZXRyaWV2ZWQgYXMgc3VjaC4KLSAgICAgICAgICAgIHRhcmdldF9hdG9tID0gZ2Rr
X2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIlVURjhfU1RSSU5HIik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICB9CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kYXRhX2dldChH
dGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0a1NlbGVjdGlvbkRh
dGEqIHNlbGVjdGlvbkRhdGEsIGd1aW50IGluZm8sIGd1aW50KQoreworICAgIFdlYktpdFdlYlZp
ZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKFdFQktJVF9XRUJf
VklFVyh3aWRnZXQpKTsKIAotICAgIERORENvbnRlbnRzUmVxdWVzdCogY29udGVudHNfcmVxdWVz
dCA9IGdfbmV3KERORENvbnRlbnRzUmVxdWVzdCwgMSk7Ci0gICAgY29udGVudHNfcmVxdWVzdC0+
aW5mbyA9IGluZm87Ci0gICAgY29udGVudHNfcmVxdWVzdC0+aXNfdXJsX2xhYmVsX3JlcXVlc3Qg
PSBGQUxTRTsKLSAgICBjb250ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0aW9uX2RhdGEgPSBzZWxl
Y3Rpb25fZGF0YTsKKyAgICAvLyBUaGlzIG1pZ2h0IGhhcHBlbiBpZiBhIGRyYWcgaXMgc3RpbGwg
aW4gcHJvZ3Jlc3MgYWZ0ZXIgYSBXZWJLaXRXZWJWaWV3CisgICAgLy8gaXMgZGlwb3NlZCBhbmQg
YmVmb3JlIGl0IGlzIGZpbmFsaXplZC4KKyAgICBpZiAoIXByaXYtPmRyYWdnaW5nRGF0YU9iamVj
dHMuY29udGFpbnMoY29udGV4dCkpCisgICAgICAgIHJldHVybjsKIAotICAgIGd0a19jbGlwYm9h
cmRfcmVxdWVzdF9jb250ZW50cyhndGtfY2xpcGJvYXJkX2dldChzZWxlY3Rpb25fYXRvbSksIHRh
cmdldF9hdG9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmRf
Y29udGVudHNfcmVjZWl2ZWQsIGNvbnRlbnRzX3JlcXVlc3QpOworICAgIHBhc3RlYm9hcmRIZWxw
ZXJJbnN0YW5jZSgpLT5maWxsU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCBwcml2
LT5kcmFnZ2luZ0RhdGFPYmplY3RzLmdldChjb250ZXh0KS5nZXQoKSk7CiB9CiAKICNpZiBHVEtf
Q0hFQ0tfVkVSU0lPTigyLCAxMiwgMCkKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="commit-queue"
          id="39116"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55021</attachid>
            <date>2010-05-04 08:44:45 -0700</date>
            <delta_ts>2010-05-05 09:43:36 -0700</delta_ts>
            <desc>Convert current drag-and-drop implementation to use the new infrastructure (style violation fixed)</desc>
            <filename>0001-JavaScriptCore-GTK-Enable-DOM-clipboard-and-drag-and.patch</filename>
            <type>text/plain</type>
            <size>28138</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSAxZjMxOTJlYjIzYzgwYjgxNWY2YmRhNTUxMzIxZTdiNDczNTk0ZDZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDQgTWF5IDIwMTAgMDg6MDQ6NTIgLTA3MDAKU3ViamVjdDogW1BBVENIXSBK
YXZhU2NyaXB0Q29yZTogW0dUS10gRW5hYmxlIERPTSBjbGlwYm9hcmQgYW5kIGRyYWctYW5kLWRy
b3AgYWNjZXNzCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA2MjMK
ClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQ29udmVydCBkcmFnZ2luZyBwb3J0aW9uIG9m
IGRyYWctYW5kLWRyb3AgdG8gdXNlIERhdGFPYmplY3RHdGsuCgoqIHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaDogQWRkIGZvcndhcmQgZGVjbGFyYXRpb25zIGZvciBHT2JqZWN0IGZ1bmN0aW9ucy4KCldl
YkNvcmU6IFtHVEtdIEVuYWJsZSBET00gY2xpcGJvYXJkIGFuZCBkcmFnLWFuZC1kcm9wIGFjY2Vz
cwpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA2MjMKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKQ29udmVydCBkcmFnZ2luZyBwb3J0aW9uIG9mIGRyYWctYW5k
LWRyb3AgdG8gdXNlIERhdGFPYmplY3RHdGsuCgpObyBuZXcgdGVzdHMsIGJlY2F1c2UgZnVuY3Rp
b25hbGl0eSBoYXMgbm90IGNoYW5nZWQuCgoqIHBhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHA6
CihXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJkKTogUGFzcyB0
aGUgRGF0YU9iamVjdEd0ayBhcyBhIHBhcmFtZXRlciBoZXJlLgoqIHBsYXRmb3JtL0RyYWdEYXRh
Lmg6IERlZmluZSBEcmFnRGF0YVJlZiB0byBiZSBhIFJlZlB0ciB0byBhIERhdGFPYmplY3RHdGsu
CiogcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oOgooV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpj
cmVhdGUpOiBUYWtlIHRoZSBEYXRhT2JqZWN0IGFzIGEgcGFyYW1ldGVyIGluc3RlYWQgb2YgY3Jl
YXRpbmcgaXQgaGVyZS4KKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6aGVscGVyKTogQWRkZWQuCihX
ZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmRhdGFPYmplY3QpOiBBZGRlZC4KKiBwbGF0Zm9ybS9ndGsv
RHJhZ0RhdGFHdGsuY3BwOgooV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zRmlsZXMpOiBSZXR1
cm4gdHJ1ZSBpZiB0aGUgRE8gaGFzIGZpbGVzLgooV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5h
bWVzKTogUmV0dXJuIHRoZSBETydzIGZpbGVzLgooV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5z
UGxhaW5UZXh0KTogcmV0dXJuIHRydWUgaWYgdGhlIERPIGhhcyBwbGFpbiB0ZXh0LgooV2ViQ29y
ZTo6RHJhZ0RhdGE6OmFzUGxhaW5UZXh0KTogUmV0dXJuIHRoZSBETydzIHBsYWluIHRleHQuCihX
ZWJDb3JlOjpEcmFnRGF0YTo6YXNDb2xvcik6IEFkZCBhIG5vdEltcGxlbWVudGVkLgooV2ViQ29y
ZTo6RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZCk6IENyZWF0ZSBhIENsaXBib2FyZEd0ayB3aXRo
IHRoZSBjb250YWluaW5nIGRyYWcgZGF0YS4KKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0Nv
bXBhdGlibGVDb250ZW50KTogQ2hlY2sgdGhlIG90aGVyIG1lbWJlciBmdW5jdGlvbnMgZm9yIHRo
ZSBhbnN3ZXIgaGVyZS4KKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc1VSTCk6IENoZWNrIGlm
IHRoZSBETyBoYXMgYW4gVVJMLgooV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKTogUmV0dXJuIHRo
ZSBVUkwgZnJvbSB0aGUgRE8uCihXZWJDb3JlOjpEcmFnRGF0YTo6YXNGcmFnbWVudCk6IFJldHVy
biB0aGUgZnJhZ21lbnQgZnJvbSB0aGUgRE8uCiogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxw
ZXIuY3BwOgooV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEpOiBB
ZGQgc3VwcG9ydCBmb3IgaW1hZ2VzIGhlcmUuCihXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVyOjp0
YXJnZXRMaXN0Rm9yRGF0YU9iamVjdCk6IEFkZCBzdXBwb3J0IGZvciBpbWFnZXMgaGVyZS4KKiBw
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oOiBNYWtlIHRhcmdldExpc3RGb3JEYXRhT2Jq
ZWN0IGEgcHVibGljIG1ldGhvZC4KCldlYktpdC9ndGs6IFtHVEtdIEVuYWJsZSBET00gY2xpcGJv
YXJkIGFuZCBkcmFnLWFuZC1kcm9wIGFjY2VzcwpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzA2MjMKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKQ29udmVydCBk
cmFnZ2luZyBwb3J0aW9uIG9mIGRyYWctYW5kLWRyb3AgdG8gdXNlIERhdGFPYmplY3RHdGsuCgoq
IFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwOgooV2ViS2l0OjpEcmFnQ2xpZW50Ojp3
aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbik6IFJlbW92ZSB0aGUgbm90SW1wbGVtZW50
ZWQuIEl0CiBpcyBpbXBsZW1lbnRlZCwgaXQncyBqdXN0IGEgbm8tb3AuCihXZWJLaXQ6OkRyYWdD
bGllbnQ6OnN0YXJ0RHJhZyk6IFN0YXJ0IHRoZSBkcmFnIGNvbnRleHQgdmlhIHRoZSBDbGlwYm9h
cmRHdGsgYW5kIFBhc3RlYm9hcmRIZWxwZXIgbm93LgoqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGll
bnRHdGsuaDogU21hbGwgc3R5bGUgZml4LgoqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6IEFkZCBh
IEhhc2hNYXAgb2YgY29udGV4dHMgYW5kIERhdGFPYmplY3RzIGhlcmUgdG8KIHRvIHJlcHJlc2Vu
dCBhbGwgY3VycmVudCBkcmFnIG9wZXJhdGlvbnMuCiogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
Ogood2Via2l0X3dlYl92aWV3X2Rpc3Bvc2UpOiBDbGVhciBhbGwgZGF0YSBvYmplY3RzIGR1cmlu
ZyBkaXNwb3NhbC4KKHdlYmtpdF93ZWJfdmlld19kcmFnX2VuZCk6IFdoZW4gYSBkcmFnIGlzIG92
ZXIsIGp1c3QgcmVtb3ZlIGl0IGZyb20gdGhlIG1hcC4KKHdlYmtpdF93ZWJfdmlld19kcmFnX2Rh
dGFfZ2V0KTogVG8gZ2V0IHRoZSBkcmFnIGRhdGEsIGp1c3QgZ3JhYiBpdCBmcm9tIHRoZSBEYXRh
T2JqZWN0LgotLS0KIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
fCAgIDExICsrKwogSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3QvR1JlZlB0ci5oICAgICAgICB8
ICAgIDMgKwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MzQgKysrKysrKwogV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwICAgICAgICB8
ICAgIDIgKy0KIFdlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCAgICAgICAgICAgICAgICAgfCAg
ICA0ICstCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaCAgICAgICAgIHwgICAg
NyArLQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwICAgICAgICB8ICAgMzkg
KysrKysrLS0tCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCAgIHwg
ICAgOCArKy0KIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaCAgICAgfCAg
ICAzICstCiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy
MSArKysrKwogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcCB8ICAg
NDkgKysrKy0tLS0tLS0KIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5o
ICAgfCAgICA2ICstCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggICAgICAgICAg
IHwgICAgNCArCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAgIHwg
IDEyNiArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDE0IGZpbGVzIGNoYW5nZWQsIDE1MiBp
bnNlcnRpb25zKCspLCAxNjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQxOWM5ZmYuLjk2
ZjMwMTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNS0wNCAgTWFydGluIFJv
Ymluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gRW5hYmxlIERPTSBjbGlwYm9hcmQgYW5kIGRy
YWctYW5kLWRyb3AgYWNjZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMDYyMworCisgICAgICAgIENvbnZlcnQgZHJhZ2dpbmcgcG9ydGlvbiBvZiBk
cmFnLWFuZC1kcm9wIHRvIHVzZSBEYXRhT2JqZWN0R3RrLgorCisgICAgICAgICogd3RmL2dvYmpl
Y3QvR1JlZlB0ci5oOiBBZGQgZm9yd2FyZCBkZWNsYXJhdGlvbnMgZm9yIEdPYmplY3QgZnVuY3Rp
b25zLgorCiAyMDEwLTA1LTA0ICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaCBiL0phdmFTY3JpcHRDb3Jl
L3d0Zi9nb2JqZWN0L0dSZWZQdHIuaAppbmRleCA2NjczOWVmLi4zYTMzNjA1IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9HUmVmUHRyLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvd3RmL2dvYmplY3QvR1JlZlB0ci5oCkBAIC0yNyw2ICsyNyw5IEBACiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgogCiB0eXBlZGVmIHN0cnVjdCBfR0hhc2hUYWJsZSBHSGFzaFRhYmxlOwordHlwZWRl
ZiB2b2lkKiBncG9pbnRlcjsKK2V4dGVybiAiQyIgdm9pZCBnX29iamVjdF91bnJlZihncG9pbnRl
ciBvYmplY3QpOworZXh0ZXJuICJDIiBncG9pbnRlciAgZ19vYmplY3RfcmVmX3NpbmsoZ3BvaW50
ZXIgb2JqZWN0KTsKIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQzYTM3YS4uYmJkNzViYyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNyBAQAorMjAxMC0wNS0wNCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dU
S10gRW5hYmxlIERPTSBjbGlwYm9hcmQgYW5kIGRyYWctYW5kLWRyb3AgYWNjZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDYyMworCisgICAgICAg
IENvbnZlcnQgZHJhZ2dpbmcgcG9ydGlvbiBvZiBkcmFnLWFuZC1kcm9wIHRvIHVzZSBEYXRhT2Jq
ZWN0R3RrLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSBmdW5jdGlvbmFsaXR5IGhh
cyBub3QgY2hhbmdlZC4KKworICAgICAgICAqIHBhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNyZWF0ZURyYWdnaW5nQ2xpcGJvYXJk
KTogUGFzcyB0aGUgRGF0YU9iamVjdEd0ayBhcyBhIHBhcmFtZXRlciBoZXJlLgorICAgICAgICAq
IHBsYXRmb3JtL0RyYWdEYXRhLmg6IERlZmluZSBEcmFnRGF0YVJlZiB0byBiZSBhIFJlZlB0ciB0
byBhIERhdGFPYmplY3RHdGsuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpjcmVhdGUpOiBUYWtlIHRoZSBEYXRh
T2JqZWN0IGFzIGEgcGFyYW1ldGVyIGluc3RlYWQgb2YgY3JlYXRpbmcgaXQgaGVyZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6aGVscGVyKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpDbGlwYm9hcmRHdGs6OmRhdGFPYmplY3QpOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvRHJhZ0RhdGFHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRh
aW5zRmlsZXMpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgRE8gaGFzIGZpbGVzLgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5hbWVzKTogUmV0dXJuIHRoZSBETydzIGZpbGVzLgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zUGxhaW5UZXh0KTogcmV0dXJuIHRydWUg
aWYgdGhlIERPIGhhcyBwbGFpbiB0ZXh0LgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFz
UGxhaW5UZXh0KTogUmV0dXJuIHRoZSBETydzIHBsYWluIHRleHQuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6YXNDb2xvcik6IEFkZCBhIG5vdEltcGxlbWVudGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZCk6IENyZWF0ZSBhIENsaXBib2FyZEd0ayB3
aXRoIHRoZSBjb250YWluaW5nIGRyYWcgZGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojpjb250YWluc0NvbXBhdGlibGVDb250ZW50KTogQ2hlY2sgdGhlIG90aGVyIG1lbWJlciBmdW5j
dGlvbnMgZm9yIHRoZSBhbnN3ZXIgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpj
b250YWluc1VSTCk6IENoZWNrIGlmIHRoZSBETyBoYXMgYW4gVVJMLgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0RhdGE6OmFzVVJMKTogUmV0dXJuIHRoZSBVUkwgZnJvbSB0aGUgRE8uCisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6YXNGcmFnbWVudCk6IFJldHVybiB0aGUgZnJhZ21lbnQgZnJv
bSB0aGUgRE8uCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVjdGlvbkRhdGEpOiBB
ZGQgc3VwcG9ydCBmb3IgaW1hZ2VzIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
SGVscGVyOjp0YXJnZXRMaXN0Rm9yRGF0YU9iamVjdCk6IEFkZCBzdXBwb3J0IGZvciBpbWFnZXMg
aGVyZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oOiBNYWtlIHRh
cmdldExpc3RGb3JEYXRhT2JqZWN0IGEgcHVibGljIG1ldGhvZC4KKwogMjAxMC0wNS0wNCAgSm9z
ZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxl
ckd0ay5jcHAgYi9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKaW5kZXggNzA1
MTM5MS4uMGZmNjdkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJH
dGsuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcApAQCAtOTYs
NyArOTYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBXaWRnZXQqIHdpZAogCiBQYXNzUmVmUHRyPENsaXBib2Fy
ZD4gRXZlbnRIYW5kbGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIENsaXBib2FyZEd0azo6Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCB0cnVlKTsKKyAg
ICByZXR1cm4gQ2xpcGJvYXJkR3RrOjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIERhdGFPYmpl
Y3RHdGs6OmNyZWF0ZSgpLCB0cnVlKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3Vz
ZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwg
RnJhbWUqIHN1YmZyYW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDllZTNjYTIuLjg0YjkxMTEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdEYXRhLmgKQEAgLTUyLDggKzUyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgSURhdGFPYmpl
Y3QqIERyYWdEYXRhUmVmOwogI2VsaWYgUExBVEZPUk0oV1gpCiB0eXBlZGVmIGNsYXNzIHd4RGF0
YU9iamVjdCogRHJhZ0RhdGFSZWY7CiAjZWxpZiBQTEFURk9STShHVEspCi0vLyBGSVhNRTogdGhp
cyBzaG91bGQgcHJvYmFibHkgYmUgc29tZXRoaW5nIGdkay1zcGVjaWZpYwotdHlwZWRlZiB2b2lk
KiBEcmFnRGF0YVJlZjsKKyNpbmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCit0eXBlZGVmIFJlZlB0
cjxXZWJDb3JlOjpEYXRhT2JqZWN0R3RrPiBEcmFnRGF0YVJlZjsKICNlbGlmIFBMQVRGT1JNKENI
Uk9NSVVNKQogI2luY2x1ZGUgIkRyYWdEYXRhUmVmLmgiCiAjZWxpZiBQTEFURk9STShIQUlLVSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKaW5kZXggZmQzMWQxZS4uYzM0MzhjNCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKQEAgLTQ1LDkgKzQ1LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRHdGso
cG9saWN5LCBjbGlwYm9hcmQpKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENsaXBib2FyZEd0az4gY3JlYXRlKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJv
b2wgaXNGb3JEcmFnZ2luZykKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2xpcGJvYXJkR3Rr
PiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2Jq
ZWN0R3RrPiBkYXRhT2JqZWN0LCBib29sIGlzRm9yRHJhZ2dpbmcpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkR3RrKHBvbGljeSwgRGF0YU9iamVj
dEd0azo6Y3JlYXRlKCksIGlzRm9yRHJhZ2dpbmcpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ2xpcGJvYXJkR3RrKHBvbGljeSwgZGF0YU9iamVjdCwgaXNGb3JEcmFnZ2luZykp
OwogICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgfkNsaXBib2FyZEd0aygpOwogCkBAIC03Myw2
ICs3Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFz
RGF0YSgpOwogCisgICAgICAgIFBhc3RlYm9hcmRIZWxwZXIqIGhlbHBlcigpIHsgcmV0dXJuIG1f
aGVscGVyOyB9CisgICAgICAgIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdCgp
IHsgcmV0dXJuIG1fZGF0YU9iamVjdDsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgQ2xpcGJv
YXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgR3RrQ2xpcGJvYXJkKik7CiAgICAgICAgIENs
aXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIFBhc3NSZWZQdHI8RGF0YU9iamVjdEd0
az4sIGJvb2wpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCmluZGV4IDY5YjMxNjEu
LmI1OWI3ZjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKQEAgLTEsNCArMSw2
IEBACiAvKgorICogIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgorICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwogICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgpAQCAtMTgsOCArMjAsMTEgQEAKICNpbmNsdWRlICJEcmFnRGF0YS5o
IgogCiAjaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCisjaW5jbHVkZSAiQ2xpcGJvYXJkR3RrLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJtYXJrdXAuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zNSw1MiArNDAsNjQgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnND
b2xvcigpIGNvbnN0CiAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zRmlsZXMoKSBjb25zdAogewot
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gIW1fcGxhdGZvcm1EcmFnRGF0YS0+ZmlsZXMo
KS5pc0VtcHR5KCk7CiB9CiAKIHZvaWQgRHJhZ0RhdGE6OmFzRmlsZW5hbWVzKFZlY3RvcjxTdHJp
bmc+JiByZXN1bHQpIGNvbnN0CiB7CisgICAgVmVjdG9yPFN0cmluZz4gZmlsZXMobV9wbGF0Zm9y
bURyYWdEYXRhLT5maWxlcygpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVzLnNp
emUoKTsgaSsrKQorICAgICAgICByZXN1bHQuYXBwZW5kKGZpbGVzW2ldKTsKIH0KIAogYm9vbCBE
cmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQoKSBjb25zdAogewotICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNUZXh0KCk7CiB9CiAKIFN0cmluZyBE
cmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAg
ICByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhLT50ZXh0KCk7CiB9CiAKIENvbG9yIERyYWdEYXRh
Ojphc0NvbG9yKCkgY29uc3QKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBD
b2xvcigpOwogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZD4gRHJhZ0RhdGE6OmNyZWF0ZUNsaXBi
b2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kpIGNvbnN0CitQYXNzUmVmUHRyPENsaXBib2FyZD4g
RHJhZ0RhdGE6OmNyZWF0ZUNsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KSBj
b25zdAogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBDbGlwYm9hcmRHdGs6OmNyZWF0ZShw
b2xpY3ksIG1fcGxhdGZvcm1EcmFnRGF0YSwgdHJ1ZSk7CiB9CiAKIGJvb2wgRHJhZ0RhdGE6OmNv
bnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gY29udGFpbnNQbGFpblRleHQoKSB8fCBjb250YWluc1VSTCgpIHx8IG1fcGxhdGZv
cm1EcmFnRGF0YS0+aGFzTWFya3VwKCkgfHwgY29udGFpbnNDb2xvcigpIHx8IGNvbnRhaW5zRmls
ZXMoKTsKIH0KIAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoKSBjb25zdAogewotICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNVUkwoKTsKIH0K
IAogU3RyaW5nIERyYWdEYXRhOjphc1VSTChTdHJpbmcqIHRpdGxlKSBjb25zdAogewotICAgIHJl
dHVybiBTdHJpbmcoKTsKLX0KKyAgICBTdHJpbmcgdXJsKG1fcGxhdGZvcm1EcmFnRGF0YS0+dXJs
KCkpOworCisgICAgaWYgKHRpdGxlKQorICAgICAgICAqdGl0bGUgPSBtX3BsYXRmb3JtRHJhZ0Rh
dGEtPnVybExhYmVsKCk7CiAKKyAgICByZXR1cm4gdXJsOworfQogCi1QYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IERyYWdEYXRhOjphc0ZyYWdtZW50KERvY3VtZW50KikgY29uc3QKK1Bhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0RhdGE6OmFzRnJhZ21lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50KSBjb25zdAogewotICAgIHJldHVybiAwOworICAgIGlmICghbV9wbGF0Zm9ybURyYWdE
YXRhLT5oYXNNYXJrdXAoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKGRvY3VtZW50LCBt
X3BsYXRmb3JtRHJhZ0RhdGEtPm1hcmt1cCgpLCAiIikpOworICAgIHJldHVybiBmcmFnbWVudC5y
ZWxlYXNlKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRIZWxwZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5j
cHAKaW5kZXggNTFmY2MyZS4uM2RjNGNjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEw
IE1hcnRpbiBSb2JpbnNvbiA8bXJvYmluc29uQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMp
IElnYWxpYSBTLkwuCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTE2
NSw3ICsxNjYsOSBAQCB2b2lkIFBhc3RlYm9hcmRIZWxwZXI6OmZpbGxTZWxlY3Rpb25EYXRhKEd0
a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbkRhdGEsIGd1aW50CiAgICAgICAgIEdPd25QdHI8Z2No
YXI+IHJlc3VsdERhdGEoZ19zdHJkdXAocmVzdWx0LnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAg
Z3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCBzZWxlY3Rpb25EYXRhLT50YXJn
ZXQsIDgsCiAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KHJlc3Vs
dERhdGEuZ2V0KCkpLCBzdHJsZW4ocmVzdWx0RGF0YS5nZXQoKSkpOwotICAgIH0KKworICAgIH0g
ZWxzZSBpZiAoaW5mbyA9PSBnZXRJZEZvclRhcmdldFR5cGUoVGFyZ2V0VHlwZUltYWdlKSkKKyAg
ICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldF9waXhidWYoc2VsZWN0aW9uRGF0YSwgZGF0YU9i
amVjdC0+aW1hZ2UoKSk7CiB9CiAKIEd0a1RhcmdldExpc3QqIFBhc3RlYm9hcmRIZWxwZXI6OnRh
cmdldExpc3RGb3JEYXRhT2JqZWN0KERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QpCkBAIC0xODMs
NiArMTg2LDkgQEAgR3RrVGFyZ2V0TGlzdCogUGFzdGVib2FyZEhlbHBlcjo6dGFyZ2V0TGlzdEZv
ckRhdGFPYmplY3QoRGF0YU9iamVjdEd0ayogZGF0YU9iamUKICAgICAgICAgZ3RrX3RhcmdldF9s
aXN0X2FkZChsaXN0LCBuZXRzY2FwZVVSTEF0b20sIDAsIGdldElkRm9yVGFyZ2V0VHlwZShUYXJn
ZXRUeXBlTmV0c2NhcGVVUkwpKTsKICAgICB9CiAKKyAgICBpZiAoZGF0YU9iamVjdC0+aGFzSW1h
Z2UoKSkKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF9pbWFnZV90YXJnZXRzKGxpc3QsIGdl
dElkRm9yVGFyZ2V0VHlwZShUYXJnZXRUeXBlSW1hZ2UpLCBUUlVFKTsKKwogICAgIHJldHVybiBs
aXN0OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVs
cGVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmgKaW5kZXggMWFl
YjliNy4uMmQ0NmFkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEhlbHBlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaApA
QCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNyBMdWNhIEJydW5vIDxsZXRoYWxt
YW44OEBnbWFpbC5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNv
bkB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCiAgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTQ5LDYgKzUwLDcgQEAgcHVibGljOgog
ICAgIEd0a0NsaXBib2FyZCogZ2V0Q2xpcGJvYXJkKEZyYW1lKikgY29uc3Q7CiAgICAgR3RrQ2xp
cGJvYXJkKiBnZXRQcmltYXJ5U2VsZWN0aW9uQ2xpcGJvYXJkKEZyYW1lKikgY29uc3Q7CiAgICAg
R3RrVGFyZ2V0TGlzdCogdGFyZ2V0TGlzdCgpIGNvbnN0OworICAgIEd0a1RhcmdldExpc3QqIHRh
cmdldExpc3RGb3JEYXRhT2JqZWN0KERhdGFPYmplY3RHdGsqKTsKICAgICB2b2lkIGZpbGxTZWxl
Y3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRhdGEqLCBndWludCwgRGF0YU9iamVjdEd0ayopOwogICAg
IHZvaWQgd3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBHQ2xvc3VyZSogY2xv
c3VyZSA9IDApOwogICAgIHZvaWQgZ2V0Q2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKik7
CkBAIC02Miw3ICs2NCw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBHdGtUYXJnZXRM
aXN0KiBtX3RhcmdldExpc3Q7Ci0gICAgR3RrVGFyZ2V0TGlzdCogdGFyZ2V0TGlzdEZvckRhdGFP
YmplY3QoRGF0YU9iamVjdEd0ayopOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBhNDE3MGQyLi5jMzg2NWM3IDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA1LTA0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbR1RLXSBFbmFibGUgRE9NIGNsaXBib2FyZCBhbmQgZHJhZy1hbmQtZHJvcCBhY2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwNjIz
CisKKyAgICAgICAgQ29udmVydCBkcmFnZ2luZyBwb3J0aW9uIG9mIGRyYWctYW5kLWRyb3AgdG8g
dXNlIERhdGFPYmplY3RHdGsuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVz
dGluYXRpb25BY3Rpb24pOiBSZW1vdmUgdGhlIG5vdEltcGxlbWVudGVkLiBJdAorICAgICAgICAg
aXMgaW1wbGVtZW50ZWQsIGl0J3MganVzdCBhIG5vLW9wLgorICAgICAgICAoV2ViS2l0OjpEcmFn
Q2xpZW50OjpzdGFydERyYWcpOiBTdGFydCB0aGUgZHJhZyBjb250ZXh0IHZpYSB0aGUgQ2xpcGJv
YXJkR3RrIGFuZCBQYXN0ZWJvYXJkSGVscGVyIG5vdy4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EcmFnQ2xpZW50R3RrLmg6IFNtYWxsIHN0eWxlIGZpeC4KKyAgICAgICAgKiB3ZWJraXQvd2Vi
a2l0cHJpdmF0ZS5oOiBBZGQgYSBIYXNoTWFwIG9mIGNvbnRleHRzIGFuZCBEYXRhT2JqZWN0cyBo
ZXJlIHRvCisgICAgICAgICB0byByZXByZXNlbnQgYWxsIGN1cnJlbnQgZHJhZyBvcGVyYXRpb25z
LgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDogCisgICAgICAgICh3ZWJraXRf
d2ViX3ZpZXdfZGlzcG9zZSk6IENsZWFyIGFsbCBkYXRhIG9iamVjdHMgZHVyaW5nIGRpc3Bvc2Fs
LgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2RyYWdfZW5kKTogV2hlbiBhIGRyYWcgaXMgb3Zl
ciwganVzdCByZW1vdmUgaXQgZnJvbSB0aGUgbWFwLgorICAgICAgICAod2Via2l0X3dlYl92aWV3
X2RyYWdfZGF0YV9nZXQpOiBUbyBnZXQgdGhlIGRyYWcgZGF0YSwganVzdCBncmFiIGl0IGZyb20g
dGhlIERhdGFPYmplY3QuCisKIDIwMTAtMDUtMDMgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggZjRiMGRmMS4uM2I1Zjkz
MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNw
cAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwCkBAIC0x
LDQgKzEsNiBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgSWdhbGlhIFMuTC4KKyAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKICAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKQEAgLTE3LDExICsxOSwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkRyYWdDbGllbnRHdGsuaCIKIAorI2luY2x1ZGUgIkNsaXBib2FyZEd0ay5o
IgorI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkdSZWZQdHJH
dGsuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhc3RlYm9hcmRI
ZWxwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJ3ZWJraXRwcml2
YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogCiAjaW5jbHVkZSA8Z3RrL2d0ay5o
PgpAQCAtNDEsNyArNDgsNiBAQCBEcmFnQ2xpZW50OjpEcmFnQ2xpZW50KFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAKIHZvaWQgRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25B
Y3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBEcmFnRGF0YSopCiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAogdm9pZCBEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rp
b24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmIHN0YXJ0UG9zLCBDbGlwYm9hcmQq
KQpAQCAtNjEsNTAgKzY3LDI5IEBAIERyYWdTb3VyY2VBY3Rpb24gRHJhZ0NsaWVudDo6ZHJhZ1Nv
dXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpCiAgICAgcmV0dXJuIERyYWdT
b3VyY2VBY3Rpb25Bbnk7CiB9CiAKLXZvaWQgRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFn
ZVJlZiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgSW50UG9p
bnQmIGV2ZW50UG9zLCBDbGlwYm9hcmQqLCBGcmFtZSogZnJhbWUsIGJvb2wgbGlua0RyYWcpCit2
b2lkIERyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFBv
aW50JiBkcmFnSW1hZ2VPcmlnaW4sIGNvbnN0IEludFBvaW50JiBldmVudFBvcywgQ2xpcGJvYXJk
KiBjbGlwYm9hcmQsIEZyYW1lKiBmcmFtZSwgYm9vbCBsaW5rRHJhZykKIHsKLSAgICBFbGVtZW50
KiB0YXJnZXRFbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmVsZW1lbnRGcm9tUG9pbnQobV9z
dGFydFBvcy54KCksIG1fc3RhcnRQb3MueSgpKTsKLSAgICBib29sIGltYWdlRHJhZyA9IGZhbHNl
OwotCi0gICAgaWYgKHRhcmdldEVsZW1lbnQpCi0gICAgICAgIGltYWdlRHJhZyA9IHRhcmdldEVs
ZW1lbnQtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKTsKLQotICAgIEdka0F0b20gdGV4dEh0bWwgPSBn
ZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygidGV4dC9odG1sIik7Ci0gICAgR2RrQXRvbSBu
ZXRzY2FwZVVybCA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NBUEVfVVJM
Iik7Ci0KLSAgICBHdGtUYXJnZXRMaXN0KiB0YXJnZXRMaXN0ID0gZ3RrX3RhcmdldF9saXN0X25l
dyhOVUxMLCAwKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKHRhcmdldExpc3QsIHRleHRIdG1s
LCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCk7Ci0gICAgZ3RrX3RhcmdldF9s
aXN0X2FkZF90ZXh0X3RhcmdldHModGFyZ2V0TGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9J
TkZPX1RFWFQpOwotCi0gICAgaWYgKGxpbmtEcmFnIHx8IGltYWdlRHJhZykgewotICAgICAgICBn
dGtfdGFyZ2V0X2xpc3RfYWRkKHRhcmdldExpc3QsIG5ldHNjYXBlVXJsLCAwLCBXRUJLSVRfV0VC
X1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMKTsKLSAgICAgICAgZ3RrX3RhcmdldF9saXN0
X2FkZF91cmlfdGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9f
VVJJX0xJU1QpOwotICAgIH0KLQotICAgIGlmIChpbWFnZURyYWcpCi0gICAgICAgIGd0a190YXJn
ZXRfbGlzdF9hZGRfaW1hZ2VfdGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFS
R0VUX0lORk9fSU1BR0UsIGZhbHNlKTsKKyAgICBDbGlwYm9hcmRHdGsqIGNsaXBib2FyZEd0ayA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Q2xpcGJvYXJkR3RrKj4oY2xpcGJvYXJkKTsKIAogICAgIEdka0Ry
YWdBY3Rpb24gZHJhZ0FjdGlvbiA9IEdES19BQ1RJT05fQ09QWTsKLSAgICBpZiAobGlua0RyYWcp
IHsKLSAgICAgICAgZHJhZ0FjdGlvbiA9IEdES19BQ1RJT05fTElOSzsKLSAgICAgICAgaWYgKGlt
YWdlRHJhZykKLSAgICAgICAgICAgIGRyYWdBY3Rpb24gPSAoR2RrRHJhZ0FjdGlvbikoZHJhZ0Fj
dGlvbiB8IEdES19BQ1RJT05fQ09QWSk7Ci0gICAgfQorICAgIGlmIChsaW5rRHJhZykKKyAgICAg
ICAgZHJhZ0FjdGlvbiA9IChHZGtEcmFnQWN0aW9uKSAoZHJhZ0FjdGlvbiB8IEdES19BQ1RJT05f
TElOSyk7CiAKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFtZV9n
ZXRfd2ViX3ZpZXcoa2l0KGZyYW1lKSk7CisgICAgUmVmUHRyPERhdGFPYmplY3RHdGs+IGRhdGFP
YmplY3QgPSBjbGlwYm9hcmRHdGstPmRhdGFPYmplY3QoKTsKKworICAgIEdSZWZQdHI8R3RrVGFy
Z2V0TGlzdD4gdGFyZ2V0TGlzdChjbGlwYm9hcmRHdGstPmhlbHBlcigpLT50YXJnZXRMaXN0Rm9y
RGF0YU9iamVjdChkYXRhT2JqZWN0LmdldCgpKSk7CiAgICAgR2RrRXZlbnQqIGV2ZW50ID0gZ2Rr
X2V2ZW50X25ldyhHREtfQlVUVE9OX1BSRVNTKTsKICAgICByZWludGVycHJldF9jYXN0PEdka0V2
ZW50QnV0dG9uKj4oZXZlbnQpLT53aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3coR1RLX1dJ
REdFVChtX3dlYlZpZXcpKTsKICAgICByZWludGVycHJldF9jYXN0PEdka0V2ZW50QnV0dG9uKj4o
ZXZlbnQpLT50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKIAotICAgIEdka0RyYWdDb250ZXh0KiBj
b250ZXh0ID0gZ3RrX2RyYWdfYmVnaW4oR1RLX1dJREdFVChtX3dlYlZpZXcpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGlzdCwgZHJhZ0FjdGlv
biwgMSwgZXZlbnQpOwotICAgIGdfb2JqZWN0X3JlZihjb250ZXh0KTsKKyAgICBHZGtEcmFnQ29u
dGV4dCogY29udGV4dCA9IGd0a19kcmFnX2JlZ2luKEdUS19XSURHRVQobV93ZWJWaWV3KSwgdGFy
Z2V0TGlzdC5nZXQoKSwgZHJhZ0FjdGlvbiwgMSwgZXZlbnQpOworICAgIFdFQktJVF9XRUJfVklF
V19HRVRfUFJJVkFURSh3ZWJWaWV3KS0+ZHJhZ2dpbmdEYXRhT2JqZWN0cy5zZXQoY29udGV4dCwg
ZGF0YU9iamVjdCk7CiAKICAgICBpZiAoaW1hZ2UpCiAgICAgICAgIGd0a19kcmFnX3NldF9pY29u
X3BpeGJ1Zihjb250ZXh0LCBpbWFnZSwgZXZlbnRQb3MueCgpIC0gZHJhZ0ltYWdlT3JpZ2luLngo
KSwgZXZlbnRQb3MueSgpIC0gZHJhZ0ltYWdlT3JpZ2luLnkoKSk7CiAgICAgZWxzZQogICAgICAg
ICBndGtfZHJhZ19zZXRfaWNvbl9kZWZhdWx0KGNvbnRleHQpOwotCi0gICAgZ3RrX3RhcmdldF9s
aXN0X3VucmVmKHRhcmdldExpc3QpOwogfQogCiBEcmFnSW1hZ2VSZWYgRHJhZ0NsaWVudDo6Y3Jl
YXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmggYi9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAppbmRleCA5N2VhNzJhLi42NjA0OTQw
IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAor
KysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaApAQCAtNTEsOSAr
NTEsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0Nv
bnRyb2xsZXJEZXN0cm95ZWQoKTsKIAotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgV2Vi
S2l0V2ViVmlldyogbV93ZWJWaWV3OwotICAgICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9z
dGFydFBvczsKKyAgICBwcml2YXRlOgorICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7
CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3RhcnRQb3M7CiAgICAgfTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IDI2NDJkNTAuLjAzNGViODggMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRwcml2YXRlLmgKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDgsIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAoQykg
MjAwOCBKYW4gTWljaGFlbCBDLiBBbG9uem8KICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJv
cmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTQ2LDYgKzQ3LDcgQEAKIAogI2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZS5oIgog
I2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIK
ICNpbmNsdWRlIDxlbmNoYW50Lmg+CiAjaW5jbHVkZSAiR093blB0ci5oIgogI2luY2x1ZGUgIkdl
b2xvY2F0aW9uLmgiCkBAIC0xNDksNiArMTUxLDggQEAgZXh0ZXJuICJDIiB7CiAgICAgICAgIGNo
YXIqIG1haW5SZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgICAgIEdIYXNoVGFibGUqIHN1YlJlc291
cmNlczsKICAgICAgICAgY2hhciogdG9vbHRpcFRleHQ7CisKKyAgICAgICAgSGFzaE1hcDxHZGtE
cmFnQ29udGV4dCosIFJlZlB0cjxXZWJDb3JlOjpEYXRhT2JqZWN0R3RrPiA+IGRyYWdnaW5nRGF0
YU9iamVjdHM7CiAgICAgfTsKIAogICAgICNkZWZpbmUgV0VCS0lUX1dFQl9GUkFNRV9HRVRfUFJJ
VkFURShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9U
WVBFX1dFQl9GUkFNRSwgV2ViS2l0V2ViRnJhbWVQcml2YXRlKSkKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKaW5kZXggNjUzNjk2MS4uMTBhMDgyYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKQEAgLTExMjQsNiArMTEyNCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19kaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgcHJpdi0+c3ViUmVzb3VyY2Vz
ID0gTlVMTDsKICAgICB9CiAKKyAgICBwcml2LT5kcmFnZ2luZ0RhdGFPYmplY3RzLmNsZWFyKCk7
CisKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZGlz
cG9zZShvYmplY3QpOwogfQogCkBAIC0xMjM0LDEyNiArMTIzNiwyNiBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka1NjcmVl
biogcHJldmlvdQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19lbmQoR3RrV2lk
Z2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0KiBjb250ZXh0KQogewotICAgIGdfb2JqZWN0X3Vu
cmVmKGNvbnRleHQpOwotfQotCi1zdHJ1Y3QgRE5EQ29udGVudHNSZXF1ZXN0Ci17Ci0gICAgZ2lu
dCBpbmZvOwotICAgIEd0a1NlbGVjdGlvbkRhdGEqIGRuZF9zZWxlY3Rpb25fZGF0YTsKLQotICAg
IGdib29sZWFuIGlzX3VybF9sYWJlbF9yZXF1ZXN0OwotICAgIGdjaGFyKiB1cmw7Ci19OwotCi12
b2lkIGNsaXBib2FyZF9jb250ZW50c19yZWNlaXZlZChHdGtDbGlwYm9hcmQqIGNsaXBib2FyZCwg
R3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uX2RhdGEsIGdwb2ludGVyIGRhdGEpCi17Ci0gICAg
RE5EQ29udGVudHNSZXF1ZXN0KiBjb250ZW50c19yZXF1ZXN0ID0gcmVpbnRlcnByZXRfY2FzdDxE
TkRDb250ZW50c1JlcXVlc3QqPihkYXRhKTsKLQotICAgIGlmIChjb250ZW50c19yZXF1ZXN0LT5p
c191cmxfbGFiZWxfcmVxdWVzdCkgewotICAgICAgICAvLyBXZSBoYXZlIHJlY2VpdmVkIGNvbnRl
bnRzIG9mIHRoZSBsYWJlbCBjbGlwYm9hcmQuIFVzZSB0aGVtIHRvIGZvcm0KLSAgICAgICAgLy8g
cmVxdWlyZWQgc3RydWN0dXJlcy4gV2hlbiBmb3JtZWQsIGVuaGFuY2UgdGhlIGRuZCdzIHNlbGVj
dGlvbiBkYXRhCi0gICAgICAgIC8vIHdpdGggdGhlbSBhbmQgcmV0dXJuLgotCi0gICAgICAgIC8v
IElmIHRoZSBsYWJlbCBpcyBlbXB0eSwgdXNlIHRoZSB1cmwgaXRzZWxmLgotICAgICAgICBnY2hh
ciogdXJsX2xhYmVsID0gcmVpbnRlcnByZXRfY2FzdDxnY2hhcio+KGd0a19zZWxlY3Rpb25fZGF0
YV9nZXRfdGV4dChzZWxlY3Rpb25fZGF0YSkpOwotICAgICAgICBpZiAoIXVybF9sYWJlbCkKLSAg
ICAgICAgICAgIHVybF9sYWJlbCA9IGdfc3RyZHVwKGNvbnRlbnRzX3JlcXVlc3QtPnVybCk7Ci0K
LSAgICAgICAgZ2NoYXIqIGRhdGEgPSAwOwotICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzX3JlcXVl
c3QtPmluZm8pIHsKLSAgICAgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJ
X0xJU1Q6Ci0gICAgICAgICAgICBkYXRhID0gZ19zdHJkdXBfcHJpbnRmKCIlc1xyXG4lc1xyXG4i
LCBjb250ZW50c19yZXF1ZXN0LT51cmwsIHVybF9sYWJlbCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMOgot
ICAgICAgICAgICAgZGF0YSA9IGdfc3RyZHVwX3ByaW50ZigiJXNcbiVzIiwgY29udGVudHNfcmVx
dWVzdC0+dXJsLCB1cmxfbGFiZWwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoZGF0YSkgewotICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChj
b250ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0aW9uX2RhdGEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRlbnRzX3JlcXVlc3QtPmRuZF9zZWxlY3Rpb25fZGF0YS0+dGFy
Z2V0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PGNvbnN0IGd1Y2hhcio+KGRhdGEpLCBzdHJsZW4oZGF0YSkpOwotICAgICAgICAgICAgZ19m
cmVlKGRhdGEpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ19mcmVlKHVybF9sYWJlbCk7Ci0gICAg
ICAgIGdfZnJlZShjb250ZW50c19yZXF1ZXN0LT51cmwpOwotICAgICAgICBnX2ZyZWUoY29udGVu
dHNfcmVxdWVzdCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VC
X1ZJRVdfR0VUX1BSSVZBVEUoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCkpOwogCisgICAgLy8gVGhp
cyBtaWdodCBoYXBwZW4gaWYgYSBkcmFnIGlzIHN0aWxsIGluIHByb2dyZXNzIGFmdGVyIGEgV2Vi
S2l0V2ViVmlldworICAgIC8vIGlzIGRpcG9zZWQgYW5kIGJlZm9yZSBpdCBpcyBmaW5hbGl6ZWQu
CisgICAgaWYgKCFwcml2LT5kcmFnZ2luZ0RhdGFPYmplY3RzLmNvbnRhaW5zKGNvbnRleHQpKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgc3dpdGNoIChjb250ZW50c19yZXF1ZXN0LT5p
bmZvKSB7Ci0gICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDoKLSAgICBj
YXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhUOgotICAgICAgICB7Ci0gICAgICAg
IGdjaGFyKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxnY2hhcio+KGd0a19zZWxlY3Rpb25fZGF0
YV9nZXRfdGV4dChzZWxlY3Rpb25fZGF0YSkpOwotICAgICAgICBpZiAoZGF0YSkgewotICAgICAg
ICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChjb250ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0
aW9uX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzX3Jl
cXVlc3QtPmRuZF9zZWxlY3Rpb25fZGF0YS0+dGFyZ2V0LCA4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGRhdGEpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oZGF0YSkpOwotICAgICAg
ICAgICAgZ19mcmVlKGRhdGEpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSU1BR0U6Ci0gICAgICAgIHsK
LSAgICAgICAgR2RrUGl4YnVmKiBwaXhidWYgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X3BpeGJ1
ZihzZWxlY3Rpb25fZGF0YSk7Ci0gICAgICAgIGlmIChwaXhidWYpIHsKLSAgICAgICAgICAgIGd0
a19zZWxlY3Rpb25fZGF0YV9zZXRfcGl4YnVmKGNvbnRlbnRzX3JlcXVlc3QtPmRuZF9zZWxlY3Rp
b25fZGF0YSwgcGl4YnVmKTsKLSAgICAgICAgICAgIGdfb2JqZWN0X3VucmVmKHBpeGJ1Zik7Ci0g
ICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICBjYXNlIFdFQktJVF9XRUJf
VklFV19UQVJHRVRfSU5GT19VUklfTElTVDoKLSAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJH
RVRfSU5GT19ORVRTQ0FQRV9VUkw6Ci0gICAgICAgIC8vIFVSTCdzIGxhYmVsIGlzIHN0b3JlZCBp
biBhbm90aGVyIGNsaXBib2FyZCwgc28gd2Ugc3RvcmUgVVJMIGludG8KLSAgICAgICAgLy8gY29u
dGVudHMgcmVxdWVzdCwgbWFyayB0aGUgbGF0dGVyIGFzIGFuIHVybCBsYWJlbCByZXF1ZXN0Ci0g
ICAgICAgIC8vIGFuZCByZXF1ZXN0IGZvciBjb250ZW50cyBvZiB0aGUgbGFiZWwgY2xpcGJvYXJk
LgotICAgICAgICBjb250ZW50c19yZXF1ZXN0LT5pc191cmxfbGFiZWxfcmVxdWVzdCA9IFRSVUU7
Ci0gICAgICAgIGNvbnRlbnRzX3JlcXVlc3QtPnVybCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z2NoYXIq
PihndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X3RleHQoc2VsZWN0aW9uX2RhdGEpKTsKLQotICAgICAg
ICBndGtfY2xpcGJvYXJkX3JlcXVlc3RfY29udGVudHMoZ3RrX2NsaXBib2FyZF9nZXQoZ2RrX2F0
b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIldlYktpdENsaXBib2FyZFVybExhYmVsIikpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uX2RhdGEtPnRhcmdl
dCwgY2xpcGJvYXJkX2NvbnRlbnRzX3JlY2VpdmVkLCBjb250ZW50c19yZXF1ZXN0KTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQorICAgIHByaXYtPmRyYWdnaW5nRGF0YU9iamVjdHMucmVtb3ZlKGNv
bnRleHQpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kYXRhX2dldChH
dGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0a1NlbGVjdGlvbkRh
dGEqIHNlbGVjdGlvbl9kYXRhLCBndWludCBpbmZvLCBndWludCB0aW1lXykKLXsKLSAgICBHZGtB
dG9tIHNlbGVjdGlvbl9hdG9tID0gR0RLX05PTkU7Ci0gICAgR2RrQXRvbSB0YXJnZXRfYXRvbSA9
IHNlbGVjdGlvbl9kYXRhLT50YXJnZXQ7Ci0KLSAgICBzd2l0Y2ggKGluZm8pIHsKLSAgICAgICAg
Y2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDoKLSAgICAgICAgICAgIHNlbGVj
dGlvbl9hdG9tID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIldlYktpdENsaXBib2Fy
ZEh0bWwiKTsKLSAgICAgICAgICAgIC8vIEhUTUwgbWFya3VwIGRhdGEgaXMgc2V0IGFzIHRleHQs
IHRoZXJlZm9yLCB3ZSBuZWVkIGEgdGV4dC1saWtlIHRhcmdldCBhdG9tCi0gICAgICAgICAgICB0
YXJnZXRfYXRvbSA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJVVEY4X1NUUklORyIp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdF
VF9JTkZPX1RFWFQ6Ci0gICAgICAgICAgICBzZWxlY3Rpb25fYXRvbSA9IGdka19hdG9tX2ludGVy
bl9zdGF0aWNfc3RyaW5nKCJXZWJLaXRDbGlwYm9hcmRUZXh0Iik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSU1BR0U6Ci0gICAg
ICAgICAgICBzZWxlY3Rpb25fYXRvbSA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJX
ZWJLaXRDbGlwYm9hcmRJbWFnZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
V0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1VSSV9MSVNUOgotICAgICAgICBjYXNlIFdFQktJ
VF9XRUJfVklFV19UQVJHRVRfSU5GT19ORVRTQ0FQRV9VUkw6Ci0gICAgICAgICAgICBzZWxlY3Rp
b25fYXRvbSA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJXZWJLaXRDbGlwYm9hcmRV
cmwiKTsKLSAgICAgICAgICAgIC8vIFdlIHJlcXVpcmUgVVJMIGFuZCBsYWJlbCwgd2hpY2ggYXJl
IGJvdGggc3RvcmVkIGluIHRleHQgZm9ybWF0Ci0gICAgICAgICAgICAvLyBhbmQgYXJlIG5lZWRl
ZCB0byBiZSByZXRyaWV2ZWQgYXMgc3VjaC4KLSAgICAgICAgICAgIHRhcmdldF9hdG9tID0gZ2Rr
X2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIlVURjhfU1RSSU5HIik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICB9CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kYXRhX2dldChH
dGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0a1NlbGVjdGlvbkRh
dGEqIHNlbGVjdGlvbkRhdGEsIGd1aW50IGluZm8sIGd1aW50KQoreworICAgIFdlYktpdFdlYlZp
ZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKFdFQktJVF9XRUJf
VklFVyh3aWRnZXQpKTsKIAotICAgIERORENvbnRlbnRzUmVxdWVzdCogY29udGVudHNfcmVxdWVz
dCA9IGdfbmV3KERORENvbnRlbnRzUmVxdWVzdCwgMSk7Ci0gICAgY29udGVudHNfcmVxdWVzdC0+
aW5mbyA9IGluZm87Ci0gICAgY29udGVudHNfcmVxdWVzdC0+aXNfdXJsX2xhYmVsX3JlcXVlc3Qg
PSBGQUxTRTsKLSAgICBjb250ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0aW9uX2RhdGEgPSBzZWxl
Y3Rpb25fZGF0YTsKKyAgICAvLyBUaGlzIG1pZ2h0IGhhcHBlbiBpZiBhIGRyYWcgaXMgc3RpbGwg
aW4gcHJvZ3Jlc3MgYWZ0ZXIgYSBXZWJLaXRXZWJWaWV3CisgICAgLy8gaXMgZGlwb3NlZCBhbmQg
YmVmb3JlIGl0IGlzIGZpbmFsaXplZC4KKyAgICBpZiAoIXByaXYtPmRyYWdnaW5nRGF0YU9iamVj
dHMuY29udGFpbnMoY29udGV4dCkpCisgICAgICAgIHJldHVybjsKIAotICAgIGd0a19jbGlwYm9h
cmRfcmVxdWVzdF9jb250ZW50cyhndGtfY2xpcGJvYXJkX2dldChzZWxlY3Rpb25fYXRvbSksIHRh
cmdldF9hdG9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmRf
Y29udGVudHNfcmVjZWl2ZWQsIGNvbnRlbnRzX3JlcXVlc3QpOworICAgIHBhc3RlYm9hcmRIZWxw
ZXJJbnN0YW5jZSgpLT5maWxsU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCBwcml2
LT5kcmFnZ2luZ0RhdGFPYmplY3RzLmdldChjb250ZXh0KS5nZXQoKSk7CiB9CiAKICNpZiBHVEtf
Q0hFQ0tfVkVSU0lPTigyLCAxMiwgMCkKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="commit-queue"
          id="39118"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55131</attachid>
            <date>2010-05-05 09:43:36 -0700</date>
            <delta_ts>2010-06-11 15:14:19 -0700</delta_ts>
            <desc>Slimmed down version of my previous patch</desc>
            <filename>0001-GTK-Enable-DOM-clipboard-and-drag-and-drop-access.patch</filename>
            <type>text/plain</type>
            <size>21073</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">RnJvbSAwZWUwNWU2MjI5YWM3M2EzZDYzNzRlMWZlN2E2M2NjNzBmMzYxNmE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDQgTWF5IDIwMTAgMDg6MDQ6NTIgLTA3MDAKU3ViamVjdDogW1BBVENIXSBb
R1RLXSBFbmFibGUgRE9NIGNsaXBib2FyZCBhbmQgZHJhZy1hbmQtZHJvcCBhY2Nlc3MKIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDYyMwoKUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCgpDb252ZXJ0IGRyYWdnaW5nIHBvcnRpb24gb2YgZHJhZy1hbmQtZHJvcCB0
byB1c2UgRGF0YU9iamVjdEd0ay4KCkphdmFTY3JpcHRDb3JlOgoKKiB3dGYvZ29iamVjdC9HUmVm
UHRyLmg6IEFkZCBmb3J3YXJkIGRlY2xhcmF0aW9ucyBmb3IgR09iamVjdCBmdW5jdGlvbnMuCgpX
ZWJDb3JlOgoKTm8gbmV3IHRlc3RzLCBiZWNhdXNlIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdCBjaGFu
Z2VkLgoKKiBwYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwOgooV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6IFBhc3MgdGhlIERhdGFPYmplY3RHdGsgYXMg
YSBwYXJhbWV0ZXIgaGVyZS4KKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmg6CihXZWJDb3Jl
OjpDbGlwYm9hcmRHdGs6OmNyZWF0ZSk6IFRha2UgdGhlIERhdGFPYmplY3QgYXMgYSBwYXJhbWV0
ZXIgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBoZXJlLgooV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpo
ZWxwZXIpOiBBZGRlZC4KKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6ZGF0YU9iamVjdCk6IEFkZGVk
LgoqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmg6IE1ha2UgdGFyZ2V0TGlzdEZvckRh
dGFPYmplY3QgYSBwdWJsaWMgbWV0aG9kLgoKV2ViS2l0L2d0azoKCiogV2ViQ29yZVN1cHBvcnQv
RHJhZ0NsaWVudEd0ay5jcHA6CihXZWJLaXQ6OkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uKTogUmVtb3ZlIHRoZSBub3RJbXBsZW1lbnRlZC4gSXQKIGlzIGltcGxl
bWVudGVkLCBpdCdzIGp1c3QgYSBuby1vcC4KKFdlYktpdDo6RHJhZ0NsaWVudDo6c3RhcnREcmFn
KTogU3RhcnQgdGhlIGRyYWcgY29udGV4dCB2aWEgdGhlIENsaXBib2FyZEd0ayBhbmQgUGFzdGVi
b2FyZEhlbHBlciBub3cuCiogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5oOiBTbWFsbCBz
dHlsZSBmaXguCiogd2Via2l0L3dlYmtpdHByaXZhdGUuaDogQWRkIGEgSGFzaE1hcCBvZiBjb250
ZXh0cyBhbmQgRGF0YU9iamVjdHMgaGVyZSB0bwogdG8gcmVwcmVzZW50IGFsbCBjdXJyZW50IGRy
YWcgb3BlcmF0aW9ucy4KKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6Cih3ZWJraXRfd2ViX3Zp
ZXdfZGlzcG9zZSk6IENsZWFyIGFsbCBkYXRhIG9iamVjdHMgZHVyaW5nIGRpc3Bvc2FsLgood2Vi
a2l0X3dlYl92aWV3X2RyYWdfZW5kKTogV2hlbiBhIGRyYWcgaXMgb3ZlciwganVzdCByZW1vdmUg
aXQgZnJvbSB0aGUgbWFwLgood2Via2l0X3dlYl92aWV3X2RyYWdfZGF0YV9nZXQpOiBUbyBnZXQg
dGhlIGRyYWcgZGF0YSwganVzdCBncmFiIGl0IGZyb20gdGhlIERhdGFPYmplY3QuCi0tLQogSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKysrCiBKYXZh
U2NyaXB0Q29yZS93dGYvZ29iamVjdC9HUmVmUHRyLmggICAgICAgIHwgICAgMyArCiBXZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSArKysrCiBXZWJDb3Jl
L3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmggICAgICAgICB8ICAgIDcgKy0KIFdlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaCAgICAgfCAgICAzICstCiBXZWJLaXQvZ3RrL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMSArKysrKwogV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcCB8ICAgNDkgKysrKy0tLS0tLS0KIFdlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5oICAgfCAgICA2ICstCiBXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmggICAgICAgICAgIHwgICAgNCArCiBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAgIHwgIDEyNiArKystLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIDExIGZpbGVzIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25zKCspLCAxNTEgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGM2MWM4ODMuLmJlMDY0YzggMTAwNjQ0Ci0tLSBhL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMC0wNS0wNCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW0dUS10gRW5hYmxlIERPTSBjbGlwYm9hcmQgYW5kIGRyYWctYW5kLWRyb3AgYWNjZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDYyMworCisg
ICAgICAgIENvbnZlcnQgZHJhZ2dpbmcgcG9ydGlvbiBvZiBkcmFnLWFuZC1kcm9wIHRvIHVzZSBE
YXRhT2JqZWN0R3RrLgorCisgICAgICAgICogd3RmL2dvYmplY3QvR1JlZlB0ci5oOiBBZGQgZm9y
d2FyZCBkZWNsYXJhdGlvbnMgZm9yIEdPYmplY3QgZnVuY3Rpb25zLgorCiAyMDEwLTA1LTA0ICBZ
b25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvZ29iamVj
dC9HUmVmUHRyLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvZ29iamVjdC9HUmVmUHRyLmgKaW5kZXgg
NjY3MzllZi4uM2EzMzYwNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL2dvYmplY3Qv
R1JlZlB0ci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaApAQCAt
MjcsNiArMjcsOSBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAogdHlwZWRlZiBzdHJ1Y3QgX0dI
YXNoVGFibGUgR0hhc2hUYWJsZTsKK3R5cGVkZWYgdm9pZCogZ3BvaW50ZXI7CitleHRlcm4gIkMi
IHZvaWQgZ19vYmplY3RfdW5yZWYoZ3BvaW50ZXIgb2JqZWN0KTsKK2V4dGVybiAiQyIgZ3BvaW50
ZXIgIGdfb2JqZWN0X3JlZl9zaW5rKGdwb2ludGVyIG9iamVjdCk7CiAKIG5hbWVzcGFjZSBXVEYg
ewogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGJlMGQwYzkuLmUwZTIzNGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQgQEAKIDIwMTAtMDUtMDUgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEVuYWJsZSBET00gY2xpcGJvYXJkIGFuZCBk
cmFnLWFuZC1kcm9wIGFjY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzA2MjMKKworICAgICAgICBDb252ZXJ0IGRyYWdnaW5nIHBvcnRpb24gb2Yg
ZHJhZy1hbmQtZHJvcCB0byB1c2UgRGF0YU9iamVjdEd0ay4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIGJlY2F1c2UgZnVuY3Rpb25hbGl0eSBoYXMgbm90IGNoYW5nZWQuCisKKyAgICAgICAgKiBw
YWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCk6IFBhc3MgdGhlIERhdGFPYmplY3RHdGsgYXMg
YSBwYXJhbWV0ZXIgaGVyZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmg6
CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OmNyZWF0ZSk6IFRha2UgdGhlIERhdGFP
YmplY3QgYXMgYSBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBjcmVhdGluZyBpdCBoZXJlLgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpoZWxwZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNsaXBib2FyZEd0azo6ZGF0YU9iamVjdCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkSGVscGVyLmg6IE1ha2UgdGFyZ2V0TGlzdEZvckRhdGFPYmplY3QgYSBw
dWJsaWMgbWV0aG9kLgorCisyMDEwLTA1LTA1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25A
d2Via2l0Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCiAKICAg
ICAgICAgW0dUS10gRW5hYmxlIERPTSBjbGlwYm9hcmQgYW5kIGRyYWctYW5kLWRyb3AgYWNjZXNz
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAgYi9XZWJD
b3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKaW5kZXggNzA1MTM5MS4uMGZmNjdkMiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcApAQCAtOTYsNyArOTYsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldChQbGF0Zm9ybVdoZWVsRXZlbnQm
IGV2ZW50LCBXaWRnZXQqIHdpZAogCiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRXZlbnRIYW5kbGVy
OjpjcmVhdGVEcmFnZ2luZ0NsaXBib2FyZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENsaXBib2Fy
ZEd0azo6Y3JlYXRlKENsaXBib2FyZFdyaXRhYmxlLCB0cnVlKTsKKyAgICByZXR1cm4gQ2xpcGJv
YXJkR3RrOjpjcmVhdGUoQ2xpcGJvYXJkV3JpdGFibGUsIERhdGFPYmplY3RHdGs6OmNyZWF0ZSgp
LCB0cnVlKTsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1
YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1l
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmggYi9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAppbmRleCBmZDMxZDFlLi5jMzQzOGM0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaApAQCAtNDUsOSArNDUsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZEd0
ayhwb2xpY3ksIGNsaXBib2FyZCkpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q2xpcGJvYXJkR3RrPiBjcmVhdGUoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwg
Ym9vbCBpc0ZvckRyYWdnaW5nKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDbGlwYm9hcmRH
dGs+IGNyZWF0ZShDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBQYXNzUmVmUHRyPERhdGFP
YmplY3RHdGs+IGRhdGFPYmplY3QsIGJvb2wgaXNGb3JEcmFnZ2luZykKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRHdGsocG9saWN5LCBEYXRhT2Jq
ZWN0R3RrOjpjcmVhdGUoKSwgaXNGb3JEcmFnZ2luZykpOworICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDbGlwYm9hcmRHdGsocG9saWN5LCBkYXRhT2JqZWN0LCBpc0ZvckRyYWdnaW5n
KSk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+Q2xpcGJvYXJkR3RrKCk7CiAKQEAgLTcz
LDYgKzczLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBo
YXNEYXRhKCk7CiAKKyAgICAgICAgUGFzdGVib2FyZEhlbHBlciogaGVscGVyKCkgeyByZXR1cm4g
bV9oZWxwZXI7IH0KKyAgICAgICAgUGFzc1JlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRhT2JqZWN0
KCkgeyByZXR1cm4gbV9kYXRhT2JqZWN0OyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBDbGlw
Ym9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBHdGtDbGlwYm9hcmQqKTsKICAgICAgICAg
Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgUGFzc1JlZlB0cjxEYXRhT2JqZWN0
R3RrPiwgYm9vbCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
SGVscGVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmgKaW5kZXgg
MWFlYjliNy4uMmQ0NmFkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIu
aApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNyBMdWNhIEJydW5vIDxsZXRo
YWxtYW44OEBnbWFpbC5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0
ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBNYXJ0aW4gUm9iaW5zb24gPG1yb2Jp
bnNvbkB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCiAgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTQ5LDYgKzUwLDcgQEAgcHVibGlj
OgogICAgIEd0a0NsaXBib2FyZCogZ2V0Q2xpcGJvYXJkKEZyYW1lKikgY29uc3Q7CiAgICAgR3Rr
Q2xpcGJvYXJkKiBnZXRQcmltYXJ5U2VsZWN0aW9uQ2xpcGJvYXJkKEZyYW1lKikgY29uc3Q7CiAg
ICAgR3RrVGFyZ2V0TGlzdCogdGFyZ2V0TGlzdCgpIGNvbnN0OworICAgIEd0a1RhcmdldExpc3Qq
IHRhcmdldExpc3RGb3JEYXRhT2JqZWN0KERhdGFPYmplY3RHdGsqKTsKICAgICB2b2lkIGZpbGxT
ZWxlY3Rpb25EYXRhKEd0a1NlbGVjdGlvbkRhdGEqLCBndWludCwgRGF0YU9iamVjdEd0ayopOwog
ICAgIHZvaWQgd3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBHQ2xvc3VyZSog
Y2xvc3VyZSA9IDApOwogICAgIHZvaWQgZ2V0Q2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJk
Kik7CkBAIC02Miw3ICs2NCw2IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBHdGtUYXJn
ZXRMaXN0KiBtX3RhcmdldExpc3Q7Ci0gICAgR3RrVGFyZ2V0TGlzdCogdGFyZ2V0TGlzdEZvckRh
dGFPYmplY3QoRGF0YU9iamVjdEd0ayopOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBhNDE3MGQyLi5jMzg2NWM3
IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA1LTA0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbR1RLXSBFbmFibGUgRE9NIGNsaXBib2FyZCBhbmQgZHJhZy1hbmQtZHJvcCBh
Y2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMw
NjIzCisKKyAgICAgICAgQ29udmVydCBkcmFnZ2luZyBwb3J0aW9uIG9mIGRyYWctYW5kLWRyb3Ag
dG8gdXNlIERhdGFPYmplY3RHdGsuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFn
RGVzdGluYXRpb25BY3Rpb24pOiBSZW1vdmUgdGhlIG5vdEltcGxlbWVudGVkLiBJdAorICAgICAg
ICAgaXMgaW1wbGVtZW50ZWQsIGl0J3MganVzdCBhIG5vLW9wLgorICAgICAgICAoV2ViS2l0OjpE
cmFnQ2xpZW50OjpzdGFydERyYWcpOiBTdGFydCB0aGUgZHJhZyBjb250ZXh0IHZpYSB0aGUgQ2xp
cGJvYXJkR3RrIGFuZCBQYXN0ZWJvYXJkSGVscGVyIG5vdy4KKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EcmFnQ2xpZW50R3RrLmg6IFNtYWxsIHN0eWxlIGZpeC4KKyAgICAgICAgKiB3ZWJraXQv
d2Via2l0cHJpdmF0ZS5oOiBBZGQgYSBIYXNoTWFwIG9mIGNvbnRleHRzIGFuZCBEYXRhT2JqZWN0
cyBoZXJlIHRvCisgICAgICAgICB0byByZXByZXNlbnQgYWxsIGN1cnJlbnQgZHJhZyBvcGVyYXRp
b25zLgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDogCisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfZGlzcG9zZSk6IENsZWFyIGFsbCBkYXRhIG9iamVjdHMgZHVyaW5nIGRpc3Bv
c2FsLgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2RyYWdfZW5kKTogV2hlbiBhIGRyYWcgaXMg
b3ZlciwganVzdCByZW1vdmUgaXQgZnJvbSB0aGUgbWFwLgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2RyYWdfZGF0YV9nZXQpOiBUbyBnZXQgdGhlIGRyYWcgZGF0YSwganVzdCBncmFiIGl0IGZy
b20gdGhlIERhdGFPYmplY3QuCisKIDIwMTAtMDUtMDMgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5v
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcCBiL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggZjRiMGRmMS4uM2I1
ZjkzMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3Rr
LmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwCkBA
IC0xLDQgKzEsNiBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgSWdhbGlhIFMuTC4KKyAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKICAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKQEAgLTE3LDExICsxOSwxNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnRHdGsuaCIKIAorI2luY2x1ZGUgIkNsaXBib2FyZEd0
ay5oIgorI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkdSZWZQ
dHJHdGsuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBhc3RlYm9h
cmRIZWxwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJ3ZWJraXRw
cml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogCiAjaW5jbHVkZSA8Z3RrL2d0
ay5oPgpAQCAtNDEsNyArNDgsNiBAQCBEcmFnQ2xpZW50OjpEcmFnQ2xpZW50KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiAKIHZvaWQgRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRp
b25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBEcmFnRGF0YSopCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAogdm9pZCBEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VB
Y3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmIHN0YXJ0UG9zLCBDbGlwYm9h
cmQqKQpAQCAtNjEsNTAgKzY3LDI5IEBAIERyYWdTb3VyY2VBY3Rpb24gRHJhZ0NsaWVudDo6ZHJh
Z1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpCiAgICAgcmV0dXJuIERy
YWdTb3VyY2VBY3Rpb25Bbnk7CiB9CiAKLXZvaWQgRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJ
bWFnZVJlZiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgSW50
UG9pbnQmIGV2ZW50UG9zLCBDbGlwYm9hcmQqLCBGcmFtZSogZnJhbWUsIGJvb2wgbGlua0RyYWcp
Cit2b2lkIERyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IElu
dFBvaW50JiBkcmFnSW1hZ2VPcmlnaW4sIGNvbnN0IEludFBvaW50JiBldmVudFBvcywgQ2xpcGJv
YXJkKiBjbGlwYm9hcmQsIEZyYW1lKiBmcmFtZSwgYm9vbCBsaW5rRHJhZykKIHsKLSAgICBFbGVt
ZW50KiB0YXJnZXRFbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmVsZW1lbnRGcm9tUG9pbnQo
bV9zdGFydFBvcy54KCksIG1fc3RhcnRQb3MueSgpKTsKLSAgICBib29sIGltYWdlRHJhZyA9IGZh
bHNlOwotCi0gICAgaWYgKHRhcmdldEVsZW1lbnQpCi0gICAgICAgIGltYWdlRHJhZyA9IHRhcmdl
dEVsZW1lbnQtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKTsKLQotICAgIEdka0F0b20gdGV4dEh0bWwg
PSBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygidGV4dC9odG1sIik7Ci0gICAgR2RrQXRv
bSBuZXRzY2FwZVVybCA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NBUEVf
VVJMIik7Ci0KLSAgICBHdGtUYXJnZXRMaXN0KiB0YXJnZXRMaXN0ID0gZ3RrX3RhcmdldF9saXN0
X25ldyhOVUxMLCAwKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKHRhcmdldExpc3QsIHRleHRI
dG1sLCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCk7Ci0gICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZF90ZXh0X3RhcmdldHModGFyZ2V0TGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdF
VF9JTkZPX1RFWFQpOwotCi0gICAgaWYgKGxpbmtEcmFnIHx8IGltYWdlRHJhZykgewotICAgICAg
ICBndGtfdGFyZ2V0X2xpc3RfYWRkKHRhcmdldExpc3QsIG5ldHNjYXBlVXJsLCAwLCBXRUJLSVRf
V0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMKTsKLSAgICAgICAgZ3RrX3RhcmdldF9s
aXN0X2FkZF91cmlfdGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lO
Rk9fVVJJX0xJU1QpOwotICAgIH0KLQotICAgIGlmIChpbWFnZURyYWcpCi0gICAgICAgIGd0a190
YXJnZXRfbGlzdF9hZGRfaW1hZ2VfdGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRfV0VCX1ZJRVdf
VEFSR0VUX0lORk9fSU1BR0UsIGZhbHNlKTsKKyAgICBDbGlwYm9hcmRHdGsqIGNsaXBib2FyZEd0
ayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q2xpcGJvYXJkR3RrKj4oY2xpcGJvYXJkKTsKIAogICAgIEdk
a0RyYWdBY3Rpb24gZHJhZ0FjdGlvbiA9IEdES19BQ1RJT05fQ09QWTsKLSAgICBpZiAobGlua0Ry
YWcpIHsKLSAgICAgICAgZHJhZ0FjdGlvbiA9IEdES19BQ1RJT05fTElOSzsKLSAgICAgICAgaWYg
KGltYWdlRHJhZykKLSAgICAgICAgICAgIGRyYWdBY3Rpb24gPSAoR2RrRHJhZ0FjdGlvbikoZHJh
Z0FjdGlvbiB8IEdES19BQ1RJT05fQ09QWSk7Ci0gICAgfQorICAgIGlmIChsaW5rRHJhZykKKyAg
ICAgICAgZHJhZ0FjdGlvbiA9IChHZGtEcmFnQWN0aW9uKSAoZHJhZ0FjdGlvbiB8IEdES19BQ1RJ
T05fTElOSyk7CiAKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFt
ZV9nZXRfd2ViX3ZpZXcoa2l0KGZyYW1lKSk7CisgICAgUmVmUHRyPERhdGFPYmplY3RHdGs+IGRh
dGFPYmplY3QgPSBjbGlwYm9hcmRHdGstPmRhdGFPYmplY3QoKTsKKworICAgIEdSZWZQdHI8R3Rr
VGFyZ2V0TGlzdD4gdGFyZ2V0TGlzdChjbGlwYm9hcmRHdGstPmhlbHBlcigpLT50YXJnZXRMaXN0
Rm9yRGF0YU9iamVjdChkYXRhT2JqZWN0LmdldCgpKSk7CiAgICAgR2RrRXZlbnQqIGV2ZW50ID0g
Z2RrX2V2ZW50X25ldyhHREtfQlVUVE9OX1BSRVNTKTsKICAgICByZWludGVycHJldF9jYXN0PEdk
a0V2ZW50QnV0dG9uKj4oZXZlbnQpLT53aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3coR1RL
X1dJREdFVChtX3dlYlZpZXcpKTsKICAgICByZWludGVycHJldF9jYXN0PEdka0V2ZW50QnV0dG9u
Kj4oZXZlbnQpLT50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKIAotICAgIEdka0RyYWdDb250ZXh0
KiBjb250ZXh0ID0gZ3RrX2RyYWdfYmVnaW4oR1RLX1dJREdFVChtX3dlYlZpZXcpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGlzdCwgZHJhZ0Fj
dGlvbiwgMSwgZXZlbnQpOwotICAgIGdfb2JqZWN0X3JlZihjb250ZXh0KTsKKyAgICBHZGtEcmFn
Q29udGV4dCogY29udGV4dCA9IGd0a19kcmFnX2JlZ2luKEdUS19XSURHRVQobV93ZWJWaWV3KSwg
dGFyZ2V0TGlzdC5nZXQoKSwgZHJhZ0FjdGlvbiwgMSwgZXZlbnQpOworICAgIFdFQktJVF9XRUJf
VklFV19HRVRfUFJJVkFURSh3ZWJWaWV3KS0+ZHJhZ2dpbmdEYXRhT2JqZWN0cy5zZXQoY29udGV4
dCwgZGF0YU9iamVjdCk7CiAKICAgICBpZiAoaW1hZ2UpCiAgICAgICAgIGd0a19kcmFnX3NldF9p
Y29uX3BpeGJ1Zihjb250ZXh0LCBpbWFnZSwgZXZlbnRQb3MueCgpIC0gZHJhZ0ltYWdlT3JpZ2lu
LngoKSwgZXZlbnRQb3MueSgpIC0gZHJhZ0ltYWdlT3JpZ2luLnkoKSk7CiAgICAgZWxzZQogICAg
ICAgICBndGtfZHJhZ19zZXRfaWNvbl9kZWZhdWx0KGNvbnRleHQpOwotCi0gICAgZ3RrX3Rhcmdl
dF9saXN0X3VucmVmKHRhcmdldExpc3QpOwogfQogCiBEcmFnSW1hZ2VSZWYgRHJhZ0NsaWVudDo6
Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmggYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAppbmRleCA5N2VhNzJhLi42NjA0
OTQwIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsu
aAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaApAQCAtNTEs
OSArNTEsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZHJh
Z0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKIAotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAg
V2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OwotICAgICAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQg
bV9zdGFydFBvczsKKyAgICBwcml2YXRlOgorICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZp
ZXc7CisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3RhcnRQb3M7CiAgICAgfTsKIH0KIApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IDI2NDJkNTAuLjAzNGViODggMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDgsIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAo
QykgMjAwOCBKYW4gTWljaGFlbCBDLiBBbG9uem8KICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xs
YWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTQ2LDYgKzQ3LDcgQEAKIAogI2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZS5o
IgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgorI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsu
aCIKICNpbmNsdWRlIDxlbmNoYW50Lmg+CiAjaW5jbHVkZSAiR093blB0ci5oIgogI2luY2x1ZGUg
Ikdlb2xvY2F0aW9uLmgiCkBAIC0xNDksNiArMTUxLDggQEAgZXh0ZXJuICJDIiB7CiAgICAgICAg
IGNoYXIqIG1haW5SZXNvdXJjZUlkZW50aWZpZXI7CiAgICAgICAgIEdIYXNoVGFibGUqIHN1YlJl
c291cmNlczsKICAgICAgICAgY2hhciogdG9vbHRpcFRleHQ7CisKKyAgICAgICAgSGFzaE1hcDxH
ZGtEcmFnQ29udGV4dCosIFJlZlB0cjxXZWJDb3JlOjpEYXRhT2JqZWN0R3RrPiA+IGRyYWdnaW5n
RGF0YU9iamVjdHM7CiAgICAgfTsKIAogICAgICNkZWZpbmUgV0VCS0lUX1dFQl9GUkFNRV9HRVRf
UFJJVkFURShvYmopICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJ
VF9UWVBFX1dFQl9GUkFNRSwgV2ViS2l0V2ViRnJhbWVQcml2YXRlKSkKZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKaW5kZXggNjUzNjk2MS4uMTBhMDgyYyAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKQEAgLTExMjQsNiArMTEyNCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19kaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgcHJpdi0+c3ViUmVzb3Vy
Y2VzID0gTlVMTDsKICAgICB9CiAKKyAgICBwcml2LT5kcmFnZ2luZ0RhdGFPYmplY3RzLmNsZWFy
KCk7CisKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+
ZGlzcG9zZShvYmplY3QpOwogfQogCkBAIC0xMjM0LDEyNiArMTIzNiwyNiBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka1Nj
cmVlbiogcHJldmlvdQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19lbmQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0KiBjb250ZXh0KQogewotICAgIGdfb2JqZWN0
X3VucmVmKGNvbnRleHQpOwotfQotCi1zdHJ1Y3QgRE5EQ29udGVudHNSZXF1ZXN0Ci17Ci0gICAg
Z2ludCBpbmZvOwotICAgIEd0a1NlbGVjdGlvbkRhdGEqIGRuZF9zZWxlY3Rpb25fZGF0YTsKLQot
ICAgIGdib29sZWFuIGlzX3VybF9sYWJlbF9yZXF1ZXN0OwotICAgIGdjaGFyKiB1cmw7Ci19Owot
Ci12b2lkIGNsaXBib2FyZF9jb250ZW50c19yZWNlaXZlZChHdGtDbGlwYm9hcmQqIGNsaXBib2Fy
ZCwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uX2RhdGEsIGdwb2ludGVyIGRhdGEpCi17Ci0g
ICAgRE5EQ29udGVudHNSZXF1ZXN0KiBjb250ZW50c19yZXF1ZXN0ID0gcmVpbnRlcnByZXRfY2Fz
dDxETkRDb250ZW50c1JlcXVlc3QqPihkYXRhKTsKLQotICAgIGlmIChjb250ZW50c19yZXF1ZXN0
LT5pc191cmxfbGFiZWxfcmVxdWVzdCkgewotICAgICAgICAvLyBXZSBoYXZlIHJlY2VpdmVkIGNv
bnRlbnRzIG9mIHRoZSBsYWJlbCBjbGlwYm9hcmQuIFVzZSB0aGVtIHRvIGZvcm0KLSAgICAgICAg
Ly8gcmVxdWlyZWQgc3RydWN0dXJlcy4gV2hlbiBmb3JtZWQsIGVuaGFuY2UgdGhlIGRuZCdzIHNl
bGVjdGlvbiBkYXRhCi0gICAgICAgIC8vIHdpdGggdGhlbSBhbmQgcmV0dXJuLgotCi0gICAgICAg
IC8vIElmIHRoZSBsYWJlbCBpcyBlbXB0eSwgdXNlIHRoZSB1cmwgaXRzZWxmLgotICAgICAgICBn
Y2hhciogdXJsX2xhYmVsID0gcmVpbnRlcnByZXRfY2FzdDxnY2hhcio+KGd0a19zZWxlY3Rpb25f
ZGF0YV9nZXRfdGV4dChzZWxlY3Rpb25fZGF0YSkpOwotICAgICAgICBpZiAoIXVybF9sYWJlbCkK
LSAgICAgICAgICAgIHVybF9sYWJlbCA9IGdfc3RyZHVwKGNvbnRlbnRzX3JlcXVlc3QtPnVybCk7
Ci0KLSAgICAgICAgZ2NoYXIqIGRhdGEgPSAwOwotICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzX3Jl
cXVlc3QtPmluZm8pIHsKLSAgICAgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9f
VVJJX0xJU1Q6Ci0gICAgICAgICAgICBkYXRhID0gZ19zdHJkdXBfcHJpbnRmKCIlc1xyXG4lc1xy
XG4iLCBjb250ZW50c19yZXF1ZXN0LT51cmwsIHVybF9sYWJlbCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJM
OgotICAgICAgICAgICAgZGF0YSA9IGdfc3RyZHVwX3ByaW50ZigiJXNcbiVzIiwgY29udGVudHNf
cmVxdWVzdC0+dXJsLCB1cmxfbGFiZWwpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoZGF0YSkgewotICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3Nl
dChjb250ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0aW9uX2RhdGEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzX3JlcXVlc3QtPmRuZF9zZWxlY3Rpb25fZGF0YS0+
dGFyZ2V0LCA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PGNvbnN0IGd1Y2hhcio+KGRhdGEpLCBzdHJsZW4oZGF0YSkpOwotICAgICAgICAgICAg
Z19mcmVlKGRhdGEpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ19mcmVlKHVybF9sYWJlbCk7Ci0g
ICAgICAgIGdfZnJlZShjb250ZW50c19yZXF1ZXN0LT51cmwpOwotICAgICAgICBnX2ZyZWUoY29u
dGVudHNfcmVxdWVzdCk7CisgICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSBXRUJLSVRf
V0VCX1ZJRVdfR0VUX1BSSVZBVEUoV0VCS0lUX1dFQl9WSUVXKHdpZGdldCkpOwogCisgICAgLy8g
VGhpcyBtaWdodCBoYXBwZW4gaWYgYSBkcmFnIGlzIHN0aWxsIGluIHByb2dyZXNzIGFmdGVyIGEg
V2ViS2l0V2ViVmlldworICAgIC8vIGlzIGRpcG9zZWQgYW5kIGJlZm9yZSBpdCBpcyBmaW5hbGl6
ZWQuCisgICAgaWYgKCFwcml2LT5kcmFnZ2luZ0RhdGFPYmplY3RzLmNvbnRhaW5zKGNvbnRleHQp
KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgc3dpdGNoIChjb250ZW50c19yZXF1ZXN0
LT5pbmZvKSB7Ci0gICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDoKLSAg
ICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhUOgotICAgICAgICB7Ci0gICAg
ICAgIGdjaGFyKiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxnY2hhcio+KGd0a19zZWxlY3Rpb25f
ZGF0YV9nZXRfdGV4dChzZWxlY3Rpb25fZGF0YSkpOwotICAgICAgICBpZiAoZGF0YSkgewotICAg
ICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChjb250ZW50c19yZXF1ZXN0LT5kbmRfc2Vs
ZWN0aW9uX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRz
X3JlcXVlc3QtPmRuZF9zZWxlY3Rpb25fZGF0YS0+dGFyZ2V0LCA4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGRhdGEp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oZGF0YSkpOwotICAg
ICAgICAgICAgZ19mcmVlKGRhdGEpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSU1BR0U6Ci0gICAgICAg
IHsKLSAgICAgICAgR2RrUGl4YnVmKiBwaXhidWYgPSBndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X3Bp
eGJ1ZihzZWxlY3Rpb25fZGF0YSk7Ci0gICAgICAgIGlmIChwaXhidWYpIHsKLSAgICAgICAgICAg
IGd0a19zZWxlY3Rpb25fZGF0YV9zZXRfcGl4YnVmKGNvbnRlbnRzX3JlcXVlc3QtPmRuZF9zZWxl
Y3Rpb25fZGF0YSwgcGl4YnVmKTsKLSAgICAgICAgICAgIGdfb2JqZWN0X3VucmVmKHBpeGJ1Zik7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICBjYXNlIFdFQktJVF9X
RUJfVklFV19UQVJHRVRfSU5GT19VUklfTElTVDoKLSAgICBjYXNlIFdFQktJVF9XRUJfVklFV19U
QVJHRVRfSU5GT19ORVRTQ0FQRV9VUkw6Ci0gICAgICAgIC8vIFVSTCdzIGxhYmVsIGlzIHN0b3Jl
ZCBpbiBhbm90aGVyIGNsaXBib2FyZCwgc28gd2Ugc3RvcmUgVVJMIGludG8KLSAgICAgICAgLy8g
Y29udGVudHMgcmVxdWVzdCwgbWFyayB0aGUgbGF0dGVyIGFzIGFuIHVybCBsYWJlbCByZXF1ZXN0
Ci0gICAgICAgIC8vIGFuZCByZXF1ZXN0IGZvciBjb250ZW50cyBvZiB0aGUgbGFiZWwgY2xpcGJv
YXJkLgotICAgICAgICBjb250ZW50c19yZXF1ZXN0LT5pc191cmxfbGFiZWxfcmVxdWVzdCA9IFRS
VUU7Ci0gICAgICAgIGNvbnRlbnRzX3JlcXVlc3QtPnVybCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z2No
YXIqPihndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X3RleHQoc2VsZWN0aW9uX2RhdGEpKTsKLQotICAg
ICAgICBndGtfY2xpcGJvYXJkX3JlcXVlc3RfY29udGVudHMoZ3RrX2NsaXBib2FyZF9nZXQoZ2Rr
X2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIldlYktpdENsaXBib2FyZFVybExhYmVsIikpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uX2RhdGEtPnRh
cmdldCwgY2xpcGJvYXJkX2NvbnRlbnRzX3JlY2VpdmVkLCBjb250ZW50c19yZXF1ZXN0KTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQorICAgIHByaXYtPmRyYWdnaW5nRGF0YU9iamVjdHMucmVtb3Zl
KGNvbnRleHQpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kYXRhX2dl
dChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0a1NlbGVjdGlv
bkRhdGEqIHNlbGVjdGlvbl9kYXRhLCBndWludCBpbmZvLCBndWludCB0aW1lXykKLXsKLSAgICBH
ZGtBdG9tIHNlbGVjdGlvbl9hdG9tID0gR0RLX05PTkU7Ci0gICAgR2RrQXRvbSB0YXJnZXRfYXRv
bSA9IHNlbGVjdGlvbl9kYXRhLT50YXJnZXQ7Ci0KLSAgICBzd2l0Y2ggKGluZm8pIHsKLSAgICAg
ICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDoKLSAgICAgICAgICAgIHNl
bGVjdGlvbl9hdG9tID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIldlYktpdENsaXBi
b2FyZEh0bWwiKTsKLSAgICAgICAgICAgIC8vIEhUTUwgbWFya3VwIGRhdGEgaXMgc2V0IGFzIHRl
eHQsIHRoZXJlZm9yLCB3ZSBuZWVkIGEgdGV4dC1saWtlIHRhcmdldCBhdG9tCi0gICAgICAgICAg
ICB0YXJnZXRfYXRvbSA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJVVEY4X1NUUklO
RyIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RB
UkdFVF9JTkZPX1RFWFQ6Ci0gICAgICAgICAgICBzZWxlY3Rpb25fYXRvbSA9IGdka19hdG9tX2lu
dGVybl9zdGF0aWNfc3RyaW5nKCJXZWJLaXRDbGlwYm9hcmRUZXh0Iik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSU1BR0U6Ci0g
ICAgICAgICAgICBzZWxlY3Rpb25fYXRvbSA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5n
KCJXZWJLaXRDbGlwYm9hcmRJbWFnZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1VSSV9MSVNUOgotICAgICAgICBjYXNlIFdF
QktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19ORVRTQ0FQRV9VUkw6Ci0gICAgICAgICAgICBzZWxl
Y3Rpb25fYXRvbSA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJXZWJLaXRDbGlwYm9h
cmRVcmwiKTsKLSAgICAgICAgICAgIC8vIFdlIHJlcXVpcmUgVVJMIGFuZCBsYWJlbCwgd2hpY2gg
YXJlIGJvdGggc3RvcmVkIGluIHRleHQgZm9ybWF0Ci0gICAgICAgICAgICAvLyBhbmQgYXJlIG5l
ZWRlZCB0byBiZSByZXRyaWV2ZWQgYXMgc3VjaC4KLSAgICAgICAgICAgIHRhcmdldF9hdG9tID0g
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIlVURjhfU1RSSU5HIik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICB9CitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kYXRhX2dl
dChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0a1NlbGVjdGlv
bkRhdGEqIHNlbGVjdGlvbkRhdGEsIGd1aW50IGluZm8sIGd1aW50KQoreworICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0dFVF9QUklWQVRFKFdFQktJVF9X
RUJfVklFVyh3aWRnZXQpKTsKIAotICAgIERORENvbnRlbnRzUmVxdWVzdCogY29udGVudHNfcmVx
dWVzdCA9IGdfbmV3KERORENvbnRlbnRzUmVxdWVzdCwgMSk7Ci0gICAgY29udGVudHNfcmVxdWVz
dC0+aW5mbyA9IGluZm87Ci0gICAgY29udGVudHNfcmVxdWVzdC0+aXNfdXJsX2xhYmVsX3JlcXVl
c3QgPSBGQUxTRTsKLSAgICBjb250ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0aW9uX2RhdGEgPSBz
ZWxlY3Rpb25fZGF0YTsKKyAgICAvLyBUaGlzIG1pZ2h0IGhhcHBlbiBpZiBhIGRyYWcgaXMgc3Rp
bGwgaW4gcHJvZ3Jlc3MgYWZ0ZXIgYSBXZWJLaXRXZWJWaWV3CisgICAgLy8gaXMgZGlwb3NlZCBh
bmQgYmVmb3JlIGl0IGlzIGZpbmFsaXplZC4KKyAgICBpZiAoIXByaXYtPmRyYWdnaW5nRGF0YU9i
amVjdHMuY29udGFpbnMoY29udGV4dCkpCisgICAgICAgIHJldHVybjsKIAotICAgIGd0a19jbGlw
Ym9hcmRfcmVxdWVzdF9jb250ZW50cyhndGtfY2xpcGJvYXJkX2dldChzZWxlY3Rpb25fYXRvbSks
IHRhcmdldF9hdG9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9h
cmRfY29udGVudHNfcmVjZWl2ZWQsIGNvbnRlbnRzX3JlcXVlc3QpOworICAgIHBhc3RlYm9hcmRI
ZWxwZXJJbnN0YW5jZSgpLT5maWxsU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCBw
cml2LT5kcmFnZ2luZ0RhdGFPYmplY3RzLmdldChjb250ZXh0KS5nZXQoKSk7CiB9CiAKICNpZiBH
VEtfQ0hFQ0tfVkVSU0lPTigyLCAxMiwgMCkKLS0gCjEuNi4zLjMKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>