<?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>44361</bug_id>
          
          <creation_ts>2010-08-20 14:44:32 -0700</creation_ts>
          <short_desc>Add Chromium implementation for FileWriter</short_desc>
          <delta_ts>2010-09-22 17:08:02 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>44358</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric U.">ericu</reporter>
          <assigned_to name="Eric U.">ericu</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dumi</cc>
    
    <cc>fishd</cc>
    
    <cc>jianli</cc>
    
    <cc>kinuko</cc>
    
    <cc>michaeln</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>267426</commentid>
    <comment_count>0</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-20 14:44:32 -0700</bug_when>
    <thetext>Add the implementation in WebKit/chromium/src that links WebCore&apos;s FileWriter to Chromium&apos;s WebKit API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279632</commentid>
    <comment_count>1</comment_count>
      <attachid>67692</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-15 11:29:35 -0700</bug_when>
    <thetext>Created attachment 67692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279689</commentid>
    <comment_count>2</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-15 13:55:13 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=67692&amp;action=prettypatch

&gt; WebCore/fileapi/DOMFileSystem.cpp:209
&gt; +    if (!DOMFilePath::isValidPath(file-&gt;fullPath())) {
In this context the path is from a valid Entry... do we need to check the path?
We may have entries that have restricted names/chars if they&apos;re copied from outside the system and obtained by DirectoryReader... do you mean we want to reject creating FileWriter for those files?

&gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:37
&gt;  #include &quot;FileSystem.h&quot;
(It&apos;s from my code but I don&apos;t think we need this... would you mind deleting this line?)

&gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:38
&gt; +#include &quot;WebFileError.h&quot;
nits: this is included in WebFileSystemCallbacks.h

&gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:41
&gt; +#include &quot;WebFileSystemCallbacks.h&quot;
nits: this is included in WebFileSystemCallbacksImpl.h

&gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:145
&gt; +    OwnPtr&lt;WebKit::WebFileWriter&gt; webFileWriter = adoptPtr(m_webFileSystem-&gt;createFileWriter(path, asyncFileWriterChromium.get()));
I&apos;m kinda curious why you chose to create FileWriters in the calling path but not in the callback path.
We &apos;initialize&apos; the writers later in the callback path - is there a reason you did that?

&gt; WebKit/chromium/src/AsyncFileWriterChromium.h:54
&gt; +    void setWebFileWriter(PassOwnPtr&lt;WebKit::WebFileWriter&gt; writer);
Will we call this other than in creation time?  Can&apos;t it be a constructor argument?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279693</commentid>
    <comment_count>3</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-15 13:59:45 -0700</bug_when>
    <thetext>(I think dumi&apos;s also going to extend WebFileInfo... +dumi)

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

&gt; WebKit/chromium/public/WebFileInfo.h:45
&gt; +    bool isFile;
Do we need both isFile and isDirectory here?  (Is there any chance we need to return non-regular files in the API?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279854</commentid>
    <comment_count>4</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-15 17:48:59 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67692&amp;action=prettypatch
&gt; 
&gt; &gt; WebCore/fileapi/DOMFileSystem.cpp:209
&gt; &gt; +    if (!DOMFilePath::isValidPath(file-&gt;fullPath())) {
&gt; In this context the path is from a valid Entry... do we need to check the path?
&gt; We may have entries that have restricted names/chars if they&apos;re copied from outside the system and obtained by DirectoryReader... do you mean we want to reject creating FileWriter for those files?

No, that&apos;s a bug--thanks.  Fixed.

&gt; &gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:37
&gt; &gt;  #include &quot;FileSystem.h&quot;
&gt; (It&apos;s from my code but I don&apos;t think we need this... would you mind deleting this line?)

Done.

&gt; &gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:38
&gt; &gt; +#include &quot;WebFileError.h&quot;
&gt; nits: this is included in WebFileSystemCallbacks.h

Removed.

&gt; &gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:41
&gt; &gt; +#include &quot;WebFileSystemCallbacks.h&quot;
&gt; nits: this is included in WebFileSystemCallbacksImpl.h

Removed.

&gt; &gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:145
&gt; &gt; +    OwnPtr&lt;WebKit::WebFileWriter&gt; webFileWriter = adoptPtr(m_webFileSystem-&gt;createFileWriter(path, asyncFileWriterChromium.get()));
&gt; I&apos;m kinda curious why you chose to create FileWriters in the calling path but not in the callback path.
&gt; We &apos;initialize&apos; the writers later in the callback path - is there a reason you did that?

I was on the fence about where to do what.  The choice was between passing more arguments to the callbacks object and doing more work earlier, before a potential failure.  Since you brought it up too, I reworked it to go the other way, so now it&apos;s maximally lazy.

&gt; &gt; WebKit/chromium/src/AsyncFileWriterChromium.h:54
&gt; &gt; +    void setWebFileWriter(PassOwnPtr&lt;WebKit::WebFileWriter&gt; writer);
&gt; Will we call this other than in creation time?  Can&apos;t it be a constructor argument?

It can&apos;t; the WebFileWriter and the AsyncFileWriterChromium each want to point at the other.  One has to get created first, and in this case it&apos;s the AsyncFileWriterChromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279856</commentid>
    <comment_count>5</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-15 17:50:27 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (I think dumi&apos;s also going to extend WebFileInfo... +dumi)
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67692&amp;action=prettypatch
&gt; 
&gt; &gt; WebKit/chromium/public/WebFileInfo.h:45
&gt; &gt; +    bool isFile;
&gt; Do we need both isFile and isDirectory here?  (Is there any chance we need to return non-regular files in the API?)

Dumi and I just discussed this offline.

I&apos;d like to keep it open just in case we ever have to deal with symlinks, pipes, or other special filesystem types.  We should at least be able to report that something isn&apos;t a file or directory.  However, we&apos;ve decided that it might be better to use an enum than a list of booleans, so I&apos;ll change to that and then post a new patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279871</commentid>
    <comment_count>6</comment_count>
      <attachid>67751</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-15 18:11:06 -0700</bug_when>
    <thetext>Created attachment 67751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279875</commentid>
    <comment_count>7</comment_count>
      <attachid>67692</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-09-15 18:13:59 -0700</bug_when>
    <thetext>Comment on attachment 67692
Patch

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

&gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:113
&gt; +    virtual void didSucceed() { ASSERT(0); delete this; }
I think there&apos;s an ASSERT_NOT_REACHED() macro in webcore, would that fit better?

&gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:128
&gt; +    virtual void didCreateFileWriter(WebKit::WebFileWriter* writer) { ASSERT(0); delete this; }
Under what circumstance is this particular WebFileSystemCallbacks method used? Do we need it in the interface? I would have expected it to be used to perform this function, but apparently its not is why i ask.

&gt; WebKit/chromium/src/AsyncFileWriterChromium.h:45
&gt; +namespace WebCore {
thnx for switching namespaces here!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279886</commentid>
    <comment_count>8</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-15 18:34:22 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 67692 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67692&amp;action=prettypatch
&gt; 
&gt; &gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:113
&gt; &gt; +    virtual void didSucceed() { ASSERT(0); delete this; }
&gt; I think there&apos;s an ASSERT_NOT_REACHED() macro in webcore, would that fit better?

Ah, yes.  Fixed.

&gt; &gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:128
&gt; &gt; +    virtual void didCreateFileWriter(WebKit::WebFileWriter* writer) { ASSERT(0); delete this; }
&gt; Under what circumstance is this particular WebFileSystemCallbacks method used? Do we need it in the interface? I would have expected it to be used to perform this function, but apparently its not is why i ask.

Ha--I removed it from the interface when it turned out not to be needed, but forgot to take out the dummy implementation.

&gt; &gt; WebKit/chromium/src/AsyncFileWriterChromium.h:45
&gt; &gt; +namespace WebCore {
&gt; thnx for switching namespaces here!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279887</commentid>
    <comment_count>9</comment_count>
      <attachid>67755</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-15 18:38:55 -0700</bug_when>
    <thetext>Created attachment 67755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279910</commentid>
    <comment_count>10</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-15 19:34:14 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; &gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:145
&gt; &gt; &gt; +    OwnPtr&lt;WebKit::WebFileWriter&gt; webFileWriter = adoptPtr(m_webFileSystem-&gt;createFileWriter(path, asyncFileWriterChromium.get()));
&gt; &gt; I&apos;m kinda curious why you chose to create FileWriters in the calling path but not in the callback path.
&gt; &gt; We &apos;initialize&apos; the writers later in the callback path - is there a reason you did that?
&gt; 
&gt; I was on the fence about where to do what.  The choice was between passing more arguments to the callbacks object and doing more work earlier, before a potential failure.  Since you brought it up too, I reworked it to go the other way, so now it&apos;s maximally lazy.

Oh thanks for changing.

Btw as for m_webFileSystem in the helper callback technically you can always get it by calling WebKit::WebKitClient()-&gt;fileSystem() in WebKit/chromium.

Also if we do so it might be good to delay creating the FileWriter too.

- FileWriterCallbacks holds scriptExecutionContext
- FileWriterHelperCallbacks holds path and FileWriterCallbacks
- in FileWriterHelperCallbacks&apos; callback, instantiate AsyncFileWriter (without client) and WebFileWriter
- in FileWriterCallbacks&apos; callback, instantiate FileWriter with scriptExecutionContext, AsyncFileWriter and length (and set the AsyncFileWriter&apos;s client in FileWriter&apos;s constructor).

Not sure worth doing this... I&apos;ll leave it to you.

&gt; &gt; &gt; WebKit/chromium/src/AsyncFileWriterChromium.h:54
&gt; &gt; &gt; +    void setWebFileWriter(PassOwnPtr&lt;WebKit::WebFileWriter&gt; writer);
&gt; &gt; Will we call this other than in creation time?  Can&apos;t it be a constructor argument?
&gt; 
&gt; It can&apos;t; the WebFileWriter and the AsyncFileWriterChromium each want to point at the other.  One has to get created first, and in this case it&apos;s the AsyncFileWriterChromium.

Oh I see.  AsyncFileWriter is WebFileWriter&apos;s client and AsyncFileWriter needs to ask WebFileWriter for operations.

By the way &apos;FileWriterClient&apos; actually means AsyncFileWriter&apos;s client right?  If I&apos;m correct can we rename it to AsyncFileWriterClient?  (FileWriter is also FileWriterClient.. it confused me a bit.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279920</commentid>
    <comment_count>11</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-15 19:54:05 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; &gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:145
&gt; &gt; &gt; &gt; +    OwnPtr&lt;WebKit::WebFileWriter&gt; webFileWriter = adoptPtr(m_webFileSystem-&gt;createFileWriter(path, asyncFileWriterChromium.get()));
&gt; &gt; &gt; I&apos;m kinda curious why you chose to create FileWriters in the calling path but not in the callback path.
&gt; &gt; &gt; We &apos;initialize&apos; the writers later in the callback path - is there a reason you did that?
&gt; &gt; 
&gt; &gt; I was on the fence about where to do what.  The choice was between passing more arguments to the callbacks object and doing more work earlier, before a potential failure.  Since you brought it up too, I reworked it to go the other way, so now it&apos;s maximally lazy.
&gt; 
&gt; Oh thanks for changing.
&gt; 
&gt; Btw as for m_webFileSystem in the helper callback technically you can always get it by calling WebKit::WebKitClient()-&gt;fileSystem() in WebKit/chromium.

Is it better to do it that way?  I was following the lead of AsyncFileSystemChromium; does it just hold a pointer for performance?

&gt; Also if we do so it might be good to delay creating the FileWriter too.
&gt; 
&gt; - FileWriterCallbacks holds scriptExecutionContext
&gt; - FileWriterHelperCallbacks holds path and FileWriterCallbacks
&gt; - in FileWriterHelperCallbacks&apos; callback, instantiate AsyncFileWriter (without client) and WebFileWriter
&gt; - in FileWriterCallbacks&apos; callback, instantiate FileWriter with scriptExecutionContext, AsyncFileWriter and length (and set the AsyncFileWriter&apos;s client in FileWriter&apos;s constructor).
&gt; 
&gt; Not sure worth doing this... I&apos;ll leave it to you.

I could certainly do it that way if anyone has a preference.
If I do, does the FileWriterCallbacks need a RefPtr to the ScriptExecutionContext?

&gt; &gt; &gt; &gt; WebKit/chromium/src/AsyncFileWriterChromium.h:54
&gt; &gt; &gt; &gt; +    void setWebFileWriter(PassOwnPtr&lt;WebKit::WebFileWriter&gt; writer);
&gt; &gt; &gt; Will we call this other than in creation time?  Can&apos;t it be a constructor argument?
&gt; &gt; 
&gt; &gt; It can&apos;t; the WebFileWriter and the AsyncFileWriterChromium each want to point at the other.  One has to get created first, and in this case it&apos;s the AsyncFileWriterChromium.
&gt; 
&gt; Oh I see.  AsyncFileWriter is WebFileWriter&apos;s client and AsyncFileWriter needs to ask WebFileWriter for operations.
&gt; 
&gt; By the way &apos;FileWriterClient&apos; actually means AsyncFileWriter&apos;s client right?  If I&apos;m correct can we rename it to AsyncFileWriterClient?  (FileWriter is also FileWriterClient.. it confused me a bit.)

Where are you looking?  You want to rename the interface FileWriterClient?  Hmm...let me think about it, but I think I see what you&apos;re saying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279941</commentid>
    <comment_count>12</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-09-15 22:38:53 -0700</bug_when>
    <thetext>Eric, can you please also add the accessedTime and createdTime fields (or something similar) to WebFileInfo? We need those fields for pepper, and they could probably be useful for the FileSystem API in the future too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279945</commentid>
    <comment_count>13</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-15 22:49:22 -0700</bug_when>
    <thetext>&gt; &gt; Btw as for m_webFileSystem in the helper callback technically you can always get it by calling WebKit::WebKitClient()-&gt;fileSystem() in WebKit/chromium.
&gt; Is it better to do it that way?  I was following the lead of AsyncFileSystemChromium; does it just hold a pointer for performance?

Never mind, it&apos;ll be better to keep the pointer.  (I was looking for the point where we could reduce the number of passing parameters)
 
&gt; &gt; Also if we do so it might be good to delay creating the FileWriter too.
&gt; &gt; 
&gt; I could certainly do it that way if anyone has a preference.
&gt; If I do, does the FileWriterCallbacks need a RefPtr to the ScriptExecutionContext?

It needs to do so if we do, I think.  (Well we may not like keeping scriptExecutionContext)

&gt; &gt; By the way &apos;FileWriterClient&apos; actually means AsyncFileWriter&apos;s client right?  If I&apos;m correct can we rename it to AsyncFileWriterClient?  (FileWriter is also FileWriterClient.. it confused me a bit.)
&gt; 
&gt; Where are you looking?  You want to rename the interface FileWriterClient?  Hmm...let me think about it, but I think I see what you&apos;re saying.

Yes that&apos;s what I was trying to say.  It&apos;s a bit off-topic from this patch and this patch itself lgtm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279946</commentid>
    <comment_count>14</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-15 22:51:20 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Eric, can you please also add the accessedTime and createdTime fields (or something similar) to WebFileInfo? We need those fields for pepper, and they could probably be useful for the FileSystem API in the future too.

I&apos;m happy to add them if Pepper&apos;s going to need them and is going to use this struct [I haven&apos;t looked at where that hooks in].  But ctime and atime are unlikely to go into the FileSystem API any time soon, as they&apos;re not consistent or dependable from platform to platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279948</commentid>
    <comment_count>15</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-09-15 22:59:57 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #12)
&gt; &gt; Eric, can you please also add the accessedTime and createdTime fields (or something similar) to WebFileInfo? We need those fields for pepper, and they could probably be useful for the FileSystem API in the future too.
&gt; 
&gt; I&apos;m happy to add them if Pepper&apos;s going to need them and is going to use this struct [I haven&apos;t looked at where that hooks in].  But ctime and atime are unlikely to go into the FileSystem API any time soon, as they&apos;re not consistent or dependable from platform to platform.

pepper has a file system component, that is quite similar to the Web FileSystem API, so the idea is to reuse as much of the code in chromium/webkit API as possible, including this structure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279951</commentid>
    <comment_count>16</comment_count>
      <attachid>67755</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-09-15 23:08:27 -0700</bug_when>
    <thetext>Comment on attachment 67755
Patch

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

a few style comments.

&gt; WebCore/fileapi/FileSystemCallbacks.cpp:97
&gt; +void FileSystemCallbacksBase::didCreateFileWriter(PassOwnPtr&lt;AsyncFileWriter&gt;, long long)

i think we should have a name for the &apos;long long&apos; argument, since it&apos;s not obvious from the type what its purpose is.

&gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:110
&gt; +        , m_callbacks(callbacks) {}

not 100% sure, but i think &apos;{&apos; and &apos;}&apos; should each go on a new line, even for an empty constructor.

&gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:128
&gt; +    virtual void didOpenFileSystem(const WebKit::WebString&amp; name, const WebKit::WebString&amp; rootPath) { ASSERT_NOT_REACHED(); delete this; }

again, not 100% sure what coding style we use in chromium&apos;s webkit API, but i don&apos;t think it&apos;s ok to put 2 instructions on the same line (i&apos;m looking at WebDatabase.cpp).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280328</commentid>
    <comment_count>17</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-16 13:45:05 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 67755 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67755&amp;action=prettypatch
&gt; 
&gt; a few style comments.
&gt; 
&gt; &gt; WebCore/fileapi/FileSystemCallbacks.cpp:97
&gt; &gt; +void FileSystemCallbacksBase::didCreateFileWriter(PassOwnPtr&lt;AsyncFileWriter&gt;, long long)
&gt; 
&gt; i think we should have a name for the &apos;long long&apos; argument, since it&apos;s not obvious from the type what its purpose is.

The name appears in the header file and in the implementation.  It&apos;s omitted in this dummy function to avoid unused variable warnings.

&gt; &gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:110
&gt; &gt; +        , m_callbacks(callbacks) {}
&gt; 
&gt; not 100% sure, but i think &apos;{&apos; and &apos;}&apos; should each go on a new line, even for an empty constructor.

Fixed.

&gt; &gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:128
&gt; &gt; +    virtual void didOpenFileSystem(const WebKit::WebString&amp; name, const WebKit::WebString&amp; rootPath) { ASSERT_NOT_REACHED(); delete this; }
&gt; 
&gt; again, not 100% sure what coding style we use in chromium&apos;s webkit API, but i don&apos;t think it&apos;s ok to put 2 instructions on the same line (i&apos;m looking at WebDatabase.cpp).

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280330</commentid>
    <comment_count>18</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-16 13:45:34 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; Eric, can you please also add the accessedTime and createdTime fields (or something similar) to WebFileInfo? We need those fields for pepper, and they could probably be useful for the FileSystem API in the future too.
&gt; &gt; 
&gt; &gt; I&apos;m happy to add them if Pepper&apos;s going to need them and is going to use this struct [I haven&apos;t looked at where that hooks in].  But ctime and atime are unlikely to go into the FileSystem API any time soon, as they&apos;re not consistent or dependable from platform to platform.
&gt; 
&gt; pepper has a file system component, that is quite similar to the Web FileSystem API, so the idea is to reuse as much of the code in chromium/webkit API as possible, including this structure.

As per offline discussion, we&apos;ll leave those fields out until we&apos;re sure what we need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280355</commentid>
    <comment_count>19</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-16 14:17:46 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; &gt; Btw as for m_webFileSystem in the helper callback technically you can always get it by calling WebKit::WebKitClient()-&gt;fileSystem() in WebKit/chromium.
&gt; &gt; Is it better to do it that way?  I was following the lead of AsyncFileSystemChromium; does it just hold a pointer for performance?
&gt; 
&gt; Never mind, it&apos;ll be better to keep the pointer.  (I was looking for the point where we could reduce the number of passing parameters)
&gt; 
&gt; &gt; &gt; Also if we do so it might be good to delay creating the FileWriter too.
&gt; &gt; &gt; 
&gt; &gt; I could certainly do it that way if anyone has a preference.
&gt; &gt; If I do, does the FileWriterCallbacks need a RefPtr to the ScriptExecutionContext?
&gt; 
&gt; It needs to do so if we do, I think.  (Well we may not like keeping scriptExecutionContext)

I&apos;ve just looked at that a bit, and it doesn&apos;t seem to have a big clear win.  It just complicates things slightly differently and inverts the construction order a little.  If there are no objections, I&apos;m going to leave it as-is for now.

&gt; &gt; &gt; By the way &apos;FileWriterClient&apos; actually means AsyncFileWriter&apos;s client right?  If I&apos;m correct can we rename it to AsyncFileWriterClient?  (FileWriter is also FileWriterClient.. it confused me a bit.)
&gt; &gt; 
&gt; &gt; Where are you looking?  You want to rename the interface FileWriterClient?  Hmm...let me think about it, but I think I see what you&apos;re saying.
&gt; 
&gt; Yes that&apos;s what I was trying to say.  It&apos;s a bit off-topic from this patch and this patch itself lgtm.

I think you&apos;re right--it makes more sense as AsyncFileWriterClient.  But I&apos;d like to do it in a separate patch.  I&apos;ll post my style fixes shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280386</commentid>
    <comment_count>20</comment_count>
      <attachid>67844</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-16 15:14:07 -0700</bug_when>
    <thetext>Created attachment 67844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280821</commentid>
    <comment_count>21</comment_count>
      <attachid>67844</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-09-17 13:13:03 -0700</bug_when>
    <thetext>Comment on attachment 67844
Patch

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

&gt; WebKit/chromium/src/AsyncFileSystemChromium.cpp:122
&gt; +            didFail(WebKit::WebFileErrorInvalidState);

Can we put a comment something like &quot;didFail() deletes &apos;this&apos;&quot;, or put &apos;ASSERT(m_callbacks)&apos; and &apos;delete this&apos; outside the if/else and replace this line with m_callbacks-&gt;didFail(error)?

Other parts I commented lgtm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281062</commentid>
    <comment_count>22</comment_count>
      <attachid>67991</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-17 18:55:25 -0700</bug_when>
    <thetext>Created attachment 67991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282552</commentid>
    <comment_count>23</comment_count>
      <attachid>67991</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-09-21 14:10:21 -0700</bug_when>
    <thetext>Comment on attachment 67991
Patch

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

&gt; WebKit/chromium/public/WebFileInfo.h:45
&gt; +    enum EntryType {

nit: EntryType -&gt; Type since this is already scoped by WebFileInfo.  Or, change the enum values to be prefixed with EntryType*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>282580</commentid>
    <comment_count>24</comment_count>
      <attachid>67991</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-09-21 15:06:11 -0700</bug_when>
    <thetext>Comment on attachment 67991
Patch

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

r=me, based on kinuko&apos;s review. please address all pending comments before submitting.

&gt; WebKit/chromium/ChangeLog:10
&gt; +        This makes a chain of contruction-and-linking-up for various sorts of

s/contruction/construction/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283043</commentid>
    <comment_count>25</comment_count>
      <attachid>68393</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-22 10:39:42 -0700</bug_when>
    <thetext>Created attachment 68393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283045</commentid>
    <comment_count>26</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-22 10:40:23 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 67991 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67991&amp;action=review
&gt; 
&gt; r=me, based on kinuko&apos;s review. please address all pending comments before submitting.
&gt; 
&gt; &gt; WebKit/chromium/ChangeLog:10
&gt; &gt; +        This makes a chain of contruction-and-linking-up for various sorts of
&gt; 
&gt; s/contruction/construction/.

I&apos;ve changed EntryType to Type and fixed the typo in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283064</commentid>
    <comment_count>27</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-22 11:10:00 -0700</bug_when>
    <thetext>Hold on--there may have been a merge conflict.  Investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283095</commentid>
    <comment_count>28</comment_count>
      <attachid>68404</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-22 11:34:00 -0700</bug_when>
    <thetext>Created attachment 68404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283096</commentid>
    <comment_count>29</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-09-22 11:35:42 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; Hold on--there may have been a merge conflict.  Investigating.

It wasn&apos;t a merge conflict, just a trivial bug [didn&apos;t fill in the proper error in a call in AsyncFileSystemChromium.cpp]; not sure how I let it get in there.  Anyway, it&apos;s fixed now.

Dumi, would you CQ+?  I don&apos;t have commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283176</commentid>
    <comment_count>30</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-09-22 12:51:20 -0700</bug_when>
    <thetext>Will r+/cq+ as soon as the chromium EWS bot is done with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283377</commentid>
    <comment_count>31</comment_count>
      <attachid>68404</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-22 17:07:55 -0700</bug_when>
    <thetext>Comment on attachment 68404
Patch

Clearing flags on attachment: 68404

Committed r68101: &lt;http://trac.webkit.org/changeset/68101&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283378</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-22 17:08:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67692</attachid>
            <date>2010-09-15 11:29:35 -0700</date>
            <delta_ts>2010-09-15 18:13:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44361-20100915112933.patch</filename>
            <type>text/plain</type>
            <size>20235</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzUyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDktMTUgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQ2hyb21pdW0gaW1wbGVtZW50YXRpb24gZm9yIEZpbGVXcml0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzYxCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzOyB0aGUgaW1wbGVtZW50YXRpb24ncyBub3QgeWV0IGZhciBlbm91Z2ggYWxvbmcgZm9y
IHRoYXQuCisKKyAgICAgICAgVGhpcyBtYWtlcyBhIGNoYWluIG9mIGNvbnRydWN0aW9uLWFuZC1s
aW5raW5nLXVwIGZvciB2YXJpb3VzIHNvcnRzIG9mCisgICAgICAgIEZpbGVXcml0ZXIgaW50ZXJm
YWNlcyB0byBjYWxsIHRocm91Z2ggdG8gQ2hyb21pdW0sIGFuZCBmb3IgdmFyaW91cworICAgICAg
ICBzb3J0cyBvZiBGaWxlV3JpdGVyQ2xpZW50cyB0byBjYWxsIGJhY2ssIHdpdGggb2JqZWN0IG93
bmVyc2hpcCBhbHdheXMKKyAgICAgICAgcG9pbnRpbmcgdG93YXJkcyB0aGUgQ2hyb21pdW0gQVBJ
LiAgVGhhdCBpcywgdGhlIERPTSBvYmplY3Qgb3ducyBhbgorICAgICAgICBBc3luY0ZpbGVXcml0
ZXIsIHdoaWNoIG93bnMgaXRzIGltcGxlbWVudGF0aW9uIG9iamVjdCwgYW5kIHRoZSByZXZlcnNl
CisgICAgICAgIChjbGllbnQpIGRpcmVjdGlvbiBpcyByYXcgcG9pbnRlcnMuCisKKyAgICAgICAg
RmlsZSBtZXRhZGF0YSBpcyBsb29rZWQgdXAgYmVmb3JlIHRoZSBGaWxlV3JpdGVyIGlzIHJldHVy
bmVkLCBzbyB0aGF0CisgICAgICAgIHdlIGtub3cgdGhlIGZpbGUgZXhpc3RzIGFuZCBjYW4gY2Fj
aGUgaXRzIGxlbmd0aC4KKworICAgICAgICBUaGUgV2ViQ29yZSBwYXJ0IG9mIHRoaXMgaXMgc2lt
cGxlIGFuZCBnZW5lcmljIGVub3VnaCB0byBoYW5kbGUKKyAgICAgICAgQ2hyb21pdW0sIHNvIGl0
IHNob3VsZCBiZSBlYXN5IGZvciBtZSB0byBwdXQgaW4gYSBXZWJDb3JlLW9ubHkKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gbmV4dC4KKyAgICAgICAgCisgICAgICAgICogZmlsZWFwaS9Bc3luY0Zp
bGVXcml0ZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKToKKyAgICAgICAgKiBmaWxl
YXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFj
a3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZENy
ZWF0ZUZpbGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckNhbGxiYWNrczo6
RmlsZVdyaXRlckNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVyQ2FsbGJh
Y2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaDoKKwogMjAxMC0wOS0xNCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlV3JpdGVyLmgJKHJldmlz
aW9uIDY3NDkxKQorKysgV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVdyaXRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIGNsYXNzIEFzeW5jRmlsZVdyaXRlciB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlV3JpdGVyKCkge30KIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRGaWxlV3JpdGVyQ2xpZW50KEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkgPSAwOwotCiAgICAg
dmlydHVhbCB2b2lkIHdyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogZGF0YSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGFib3J0KCkgPSAwOwpJbmRleDogV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAko
cmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDExIEBACiAjaW5jbHVkZSAiRW50cnkuaCIKICNpbmNs
dWRlICJFbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1
ZGUgIkZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJGaWxlV3JpdGVyLmgiCisjaW5jbHVkZSAiRmls
ZVdyaXRlckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIK
QEAgLTE5OSw2ICsyMDIsMjIgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXREaXJlY3RvcnkoY29u
c3QgRQogICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3Jt
UGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZSwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQoreworICAgIEFTU0VSVChmaWxlKTsKKworICAgIGlmICghRE9NRmlsZVBhdGg6Omlz
VmFsaWRQYXRoKGZpbGUtPmZ1bGxQYXRoKCkpKSB7CisgICAgICAgIHNjaGVkdWxlQ2FsbGJhY2so
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNyZWF0
ZShOT1RfRk9VTkRfRVJSKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTdHJpbmcg
cGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChm
aWxlLT5mdWxsUGF0aCgpKTsKKworICAgIFJlZlB0cjxGaWxlV3JpdGVyPiBmaWxlV3JpdGVyID0g
RmlsZVdyaXRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgT3duUHRy
PEZpbGVXcml0ZXJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IGFkb3B0UHRyKG5ldyBGaWxlV3JpdGVy
Q2FsbGJhY2tzKGZpbGVXcml0ZXIsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwor
ICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVXcml0ZXIoZmlsZVdyaXRlci5nZXQoKSwgcGxh
dGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKK30KKwogdm9pZCBET01GaWxlU3lzdGVt
OjpyZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQogewogICAgIEFTU0VSVChET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSk7Cklu
ZGV4OiBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmgJKHJldmlzaW9uIDY3NDkxKQorKysgV2ViQ29yZS9m
aWxlYXBpL0RPTUZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBj
bGFzcyBFbnRyeTsKIGNsYXNzIEVudHJ5Q2FsbGJhY2s7CiBjbGFzcyBFbnRyaWVzQ2FsbGJhY2s7
CiBjbGFzcyBFcnJvckNhbGxiYWNrOworY2xhc3MgRmlsZUVudHJ5OworY2xhc3MgRmlsZVdyaXRl
ckNhbGxiYWNrOwogY2xhc3MgTWV0YWRhdGFDYWxsYmFjazsKIGNsYXNzIFZvaWRDYWxsYmFjazsK
IApAQCAtNzcsNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRGaWxlKGNvbnN0IEVudHJ5
KiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQYXNzUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKICAgICB2b2lkIGdl
dERpcmVjdG9yeShjb25zdCBFbnRyeSogYmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVm
UHRyPEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPik7CiAgICAgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFz
c1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAg
ICB2b2lkIGNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnkqIGZpbGUsIFBhc3NSZWZQdHI8Rmls
ZVdyaXRlckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAKICAgICAvLyBT
Y2hlZHVsZSBhIGNhbGxiYWNrLiBUaGlzIHNob3VsZCBub3QgY3Jvc3MgdGhyZWFkcyAoc2hvdWxk
IGJlIGNhbGxlZCBvbiB0aGUgc2FtZSBjb250ZXh0IHRocmVhZCkuCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIENCLCB0eXBlbmFtZSBDQkFyZz4KSW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9GaWxlU3lz
dGVtQ2FsbGJhY2tzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3Rl
bUNhbGxiYWNrcy5jcHAJKHJldmlzaW9uIDY3NDkxKQorKysgV2ViQ29yZS9maWxlYXBpL0ZpbGVT
eXN0ZW1DYWxsYmFja3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCisjaW5j
bHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKICNpbmNs
dWRlICJET01GaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKQEAgLTQ1
LDYgKzQ2LDggQEAKICNpbmNsdWRlICJGaWxlRW50cnkuaCIKICNpbmNsdWRlICJGaWxlRXJyb3Iu
aCIKICNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJGaWxlV3JpdGVy
LmgiCisjaW5jbHVkZSAiRmlsZVdyaXRlckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGEu
aCIKICNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgpAQCAtOTEsNiArOTQsMTIgQEAgdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tz
QmFzZTo6ZGlkUmVhZERpcgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCit2b2lkIEZp
bGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5
bmNGaWxlV3JpdGVyPiwgbG9uZyBsb25nKQoreworICAgIC8vIEVhY2ggc3ViY2xhc3MgbXVzdCBp
bXBsZW1lbnQgYW4gYXBwcm9wcmlhdGUgb25lLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCiB2b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRGYWlsKGludCBjb2RlKQogewog
ICAgIGlmIChtX2Vycm9yQ2FsbGJhY2spIHsKQEAgLTE4Nyw2ICsxOTYsMjMgQEAgdm9pZCBNZXRh
ZGF0YUNhbGxiYWNrczo6ZGlkUmVhZE1ldGFkYXRhKAogICAgIG1fc3VjY2Vzc0NhbGxiYWNrLmNs
ZWFyKCk7CiB9CiAKKy8vIEZpbGVXcml0ZXJDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGaWxlV3JpdGVyQ2FsbGJh
Y2tzOjpGaWxlV3JpdGVyQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVdyaXRlcj4gZmlsZVdyaXRl
ciwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgIDogRmlsZVN5c3RlbUNhbGxi
YWNrc0Jhc2UoZXJyb3JDYWxsYmFjaykKKyAgICAsIG1fZmlsZVdyaXRlcihmaWxlV3JpdGVyKQor
ICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQoreworfQorCit2b2lkIEZp
bGVXcml0ZXJDYWxsYmFja3M6OmRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0Zp
bGVXcml0ZXI+IGFzeW5jRmlsZVdyaXRlciwgbG9uZyBsb25nIGxlbmd0aCkKK3sKKyAgICBtX2Zp
bGVXcml0ZXItPmluaXRpYWxpemUoYXN5bmNGaWxlV3JpdGVyLCBsZW5ndGgpOworICAgIGlmICht
X3N1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50
KG1fZmlsZVdyaXRlci5yZWxlYXNlKCkuZ2V0KCkpOworICAgIG1fc3VjY2Vzc0NhbGxiYWNrLmNs
ZWFyKCk7Cit9CisKIC8vIFZvaWRDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVm9pZENhbGxiYWNrczo6Vm9p
ZENhbGxiYWNrcyhQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCkluZGV4OiBXZWJDb3JlL2ZpbGVh
cGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZmlsZWFwaS9G
aWxlU3lzdGVtQ2FsbGJhY2tzLmgJKHJldmlzaW9uIDY3NDkxKQorKysgV2ViQ29yZS9maWxlYXBp
L0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTIgKzQwLDE1IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQXN5bmNGaWxlV3JpdGVyOwogY2xhc3Mg
RE9NRmlsZVN5c3RlbTsKIGNsYXNzIEVycm9yQ2FsbGJhY2s7CiBjbGFzcyBFbnRyaWVzQ2FsbGJh
Y2s7CiBjbGFzcyBFbnRyeUFycmF5OwogY2xhc3MgRW50cnlDYWxsYmFjazsKIGNsYXNzIEZpbGVT
eXN0ZW1DYWxsYmFjazsKK2NsYXNzIEZpbGVXcml0ZXI7CitjbGFzcyBGaWxlV3JpdGVyQ2FsbGJh
Y2s7CiBjbGFzcyBNZXRhZGF0YUNhbGxiYWNrOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIGNsYXNzIFZvaWRDYWxsYmFjazsKQEAgLTY3LDYgKzcwLDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBib29s
IGlzRGlyZWN0b3J5KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMo
Ym9vbCBoYXNNb3JlKTsKIAorICAgIC8vIEZvciBjcmVhdGVGaWxlV3JpdGVyLgorICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiwg
bG9uZyBsb25nIGxlbmd0aCk7CisKICAgICAvLyBGb3IgRXJyb3JDYWxsYmFjay4KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChpbnQgY29kZSk7CiAKQEAgLTEyMSw2ICsxMjcsMTYgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7CiB9Owog
CitjbGFzcyBGaWxlV3JpdGVyQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NC
YXNlIHsKK3B1YmxpYzoKKyAgICBGaWxlV3JpdGVyQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVdy
aXRlcj4sIFBhc3NSZWZQdHI8RmlsZVdyaXRlckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPik7CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0
cjxBc3luY0ZpbGVXcml0ZXI+LCBsb25nIGxvbmcgbGVuZ3RoKTsKKworcHJpdmF0ZToKKyAgICBS
ZWZQdHI8RmlsZVdyaXRlcj4gbV9maWxlV3JpdGVyOworICAgIFJlZlB0cjxGaWxlV3JpdGVyQ2Fs
bGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOworfTsKKwogY2xhc3MgVm9pZENhbGxiYWNrcyA6IHB1
YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CiBwdWJsaWM6CiAgICAgVm9pZENhbGxiYWNr
cyhQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCShyZXZpc2lvbiA2NzQ5MSkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYg
KzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBc3luY0ZpbGVTeXN0ZW07CiBj
bGFzcyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M7CitjbGFzcyBGaWxlV3JpdGVyQ2xpZW50Owog
CiAvLyBUaGlzIGNsYXNzIHByb3ZpZGVzIGFzeW5jIGludGVyZmFjZSBmb3IgcGxhdGZvcm0tc3Bl
Y2lmaWMgZmlsZSBzeXN0ZW0gaW1wbGVtZW50YXRpb24uICBOb3RlIHRoYXQgYWxsIHRoZSBtZXRo
b2RzIHRha2UgcGxhdGZvcm0gcGF0aHMuCiBjbGFzcyBBc3luY0ZpbGVTeXN0ZW0gOiBwdWJsaWMg
Tm9uY29weWFibGUgewpAQCAtMTA3LDYgKzEwOCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgd2hlbiB0aGVyZSBpcyBhbiBlcnJvci4K
ICAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwogCisgICAgLy8gQ3JlYXRlcyBh
biBBc3luY0ZpbGVXcml0ZXIgZm9yIGEgZ2l2ZW4gZmlsZSBwYXRoLgorICAgIC8vIEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkQ3JlYXRlRmlsZVdyaXRlcigpIGlzIGNhbGxlZCB3aGVuIGFu
IEFzeW5jRmlsZVdyaXRlciBpcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4KKyAgICAvLyBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgorICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBT
dHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwor
CiAgICAgLy8gQ29udmVydHMgYSBnaXZlbiBhYnNvbHV0ZSB2aXJ0dWFsIHBhdGggdG8gYSBwbGF0
Zm9ybSBwYXRoIHRoYXQgc3RhcnRzIHdpdGggdGhlIHBsYXRmb3JtIHJvb3QgcGF0aCBvZiB0aGlz
IGZpbGUgc3lzdGVtLgogICAgIHZpcnR1YWwgU3RyaW5nIHZpcnR1YWxUb1BsYXRmb3JtUGF0aChj
b25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0FzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgJKHJldmlzaW9uIDY3NDkxKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiAr
MzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBc3luY0ZpbGVTeXN0ZW07Citj
bGFzcyBBc3luY0ZpbGVXcml0ZXI7CiAKIGNsYXNzIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CkBAIC01Niw2ICs1Nyw5IEBAIHB1YmxpYzoK
ICAgICAvLyBDYWxsZWQgYWZ0ZXIgYSBjaHVuayBvZiBkaXJlY3RvcnkgZW50cmllcyBoYXZlIGJl
ZW4gcmVhZCAoaS5lLiBpbmRpY2F0ZXMgaXQncyBnb29kIHRpbWUgdG8gY2FsbCBiYWNrIHRvIHRo
ZSBhcHBsaWNhdGlvbikuICBJZiBoYXNNb3JlIGlzIHRydWUgdGhlcmUgY2FuIGJlIG1vcmUgY2h1
bmtzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01v
cmUpID0gMDsKIAorICAgIC8vIENhbGxlZCB3aGVuIGFuIEFzeW5jRmlsZVdydGVyIGhhcyBiZWVu
IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGaWxlV3Jp
dGVyKFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiB3cml0ZXIsIGxvbmcgbG9uZyBsZW5ndGgp
ID0gMDsKKwogICAgIC8vIENhbGxlZCB3aGVuIHRoZXJlIHdhcyBhbiBlcnJvci4KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChpbnQgY29kZSkgPSAwOwogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDY3NTI5KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDQ0IEBACisyMDEwLTA5LTE0ICBFcmljIFVocmhhbmUgIDxlcmljdUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIENocm9taXVtIGltcGxlbWVudGF0aW9uIGZvciBGaWxlV3JpdGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDM2MQorCisgICAgICAgIE5vIG5l
dyB0ZXN0czsgdGhlIGltcGxlbWVudGF0aW9uJ3Mgbm90IHlldCBmYXIgZW5vdWdoIGFsb25nIGZv
ciB0aGF0LgorCisgICAgICAgIFRoaXMgbWFrZXMgYSBjaGFpbiBvZiBjb250cnVjdGlvbi1hbmQt
bGlua2luZy11cCBmb3IgdmFyaW91cyBzb3J0cyBvZgorICAgICAgICBGaWxlV3JpdGVyIGludGVy
ZmFjZXMgdG8gY2FsbCB0aHJvdWdoIHRvIENocm9taXVtLCBhbmQgZm9yIHZhcmlvdXMKKyAgICAg
ICAgc29ydHMgb2YgRmlsZVdyaXRlckNsaWVudHMgdG8gY2FsbCBiYWNrLCB3aXRoIG9iamVjdCBv
d25lcnNoaXAgYWx3YXlzCisgICAgICAgIHBvaW50aW5nIHRvd2FyZHMgdGhlIENocm9taXVtIEFQ
SS4gIFRoYXQgaXMsIHRoZSBET00gb2JqZWN0IG93bnMgYW4KKyAgICAgICAgQXN5bmNGaWxlV3Jp
dGVyLCB3aGljaCBvd25zIGl0cyBpbXBsZW1lbnRhdGlvbiBvYmplY3QsIGFuZCB0aGUgcmV2ZXJz
ZQorICAgICAgICAoY2xpZW50KSBkaXJlY3Rpb24gaXMgcmF3IHBvaW50ZXJzLgorCisgICAgICAg
IEZpbGUgbWV0YWRhdGEgaXMgbG9va2VkIHVwIGJlZm9yZSB0aGUgRmlsZVdyaXRlciBpcyByZXR1
cm5lZCwgc28gdGhhdAorICAgICAgICB3ZSBrbm93IHRoZSBmaWxlIGV4aXN0cyBhbmQgY2FuIGNh
Y2hlIGl0cyBsZW5ndGguCisKKyAgICAgICAgVGhlIFdlYktpdC9jaHJvbWl1bSBpbnRlcmZhY2Ug
aGVyZSBpcyBtb2RlbGVkIGFmdGVyIHRoYXQgb2YgdGhlCisgICAgICAgIEZpbGVTeXN0ZW0uCisg
ICAgICAgIAorICAgICAgICAqIHB1YmxpYy9XZWJGaWxlSW5mby5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJGaWxlSW5mbzo6V2ViRmlsZUluZm8pOgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVySGVscGVyQ2FsbGJh
Y2tzOjpGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVX
cml0ZXJIZWxwZXJDYWxsYmFja3M6OmRpZFN1Y2NlZWQpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZVdyaXRlckhlbHBlckNhbGxiYWNrczo6ZGlkUmVhZE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OmRpZFJlYWREaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVdyaXRlckhlbHBlckNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0p
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckhlbHBlckNhbGxiYWNrczo6ZGlkQ3JlYXRl
RmlsZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tz
OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpj
cmVhdGVXcml0ZXIpOgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oOgor
ICAgICAgICAqIHNyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6c2V0V2ViRmlsZVdyaXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6d3JpdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OmRpZEZhaWwpOgorICAgICAgICAqIHNyYy9B
c3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHNyYy9XZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzSW1wbC5oOgorCiAyMDEwLTA5LTE0ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlSW5mby5oCShyZXZpc2lvbiA2NzQ5MSkKKysrIFdlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyAr
MzgsMTQgQEAgc3RydWN0IFdlYkZpbGVJbmZvIHsKICAgICAvLyBUaGUgdmFsdWUgMC4wIG1lYW5z
IHRoYXQgdGhlIHRpbWUgaXMgbm90IHNldC4KICAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsK
IAotICAgIFdlYkZpbGVJbmZvKCkgOiBtb2RpZmljYXRpb25UaW1lKDAuMCkgeyB9CisgICAgLy8g
VGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBpbiBieXRlcy4KKyAgICAvLyBUaGUgdmFsdWUgLTEgbWVh
bnMgdGhhdCB0aGUgbGVuZ3RoIGlzIG5vdCBzZXQuCisgICAgbG9uZyBsb25nIGxlbmd0aDsKKwor
ICAgIGJvb2wgaXNGaWxlOworICAgIGJvb2wgaXNEaXJlY3Rvcnk7CisKKyAgICBXZWJGaWxlSW5m
bygpIDogbW9kaWZpY2F0aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCBpc0ZpbGUoZmFsc2UpLCBp
c0RpcmVjdG9yeShmYWxzZSkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCShy
ZXZpc2lvbiA2NzQ5MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMywxNCBAQAogI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgorI2lu
Y2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgorI2luY2x1ZGUgIldlYkZpbGVFcnJvci5oIgorI2luY2x1ZGUgIldlYkZpbGVJbmZvLmgiCiAj
aW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MuaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5oIgorI2luY2x1ZGUg
IldlYkZpbGVXcml0ZXIuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJLaXRD
bGllbnQuaCIKIApAQCAtOTksNiArMTA0LDQ5IEBAIHZvaWQgQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW06OnJlYWREaXJlY3QKICAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkocGF0aCwg
bmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAK
K2NsYXNzIEZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3MgOiBwdWJsaWMgV2ViS2l0OjpXZWJGaWxl
U3lzdGVtQ2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAgICBGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tz
KFBhc3NPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Ms
IFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiBhc3luY0ZpbGVXcml0ZXIpCisgICAgICAgIDog
bV9jYWxsYmFja3MoY2FsbGJhY2tzKQorICAgICAgICAsIG1fYXN5bmNGaWxlV3JpdGVyKGFzeW5j
RmlsZVdyaXRlcikge30KKworICAgIHZpcnR1YWwgdm9pZCBkaWRTdWNjZWVkKCkgeyBBU1NFUlQo
MCk7IGRlbGV0ZSB0aGlzOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWRNZXRhZGF0YShjb25z
dCBXZWJLaXQ6OldlYkZpbGVJbmZvJiBpbmZvKQorICAgIHsKKyAgICAgICAgaWYgKCFpbmZvLmlz
RmlsZSB8fCBpbmZvLmxlbmd0aCA8IDApCisgICAgICAgICAgICBkaWRGYWlsKFdlYktpdDo6V2Vi
RmlsZUVycm9ySW52YWxpZFN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NF
UlQobV9jYWxsYmFja3MpOworICAgICAgICAgICAgbV9jYWxsYmFja3MtPmRpZENyZWF0ZUZpbGVX
cml0ZXIobV9hc3luY0ZpbGVXcml0ZXIucmVsZWFzZSgpLCBpbmZvLmxlbmd0aCk7CisgICAgICAg
ICAgICBkZWxldGUgdGhpczsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWFkRGlyZWN0b3J5KGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViRmlsZVN5
c3RlbUVudHJ5PiYgZW50cmllcywgYm9vbCBoYXNNb3JlKSB7IEFTU0VSVCgwKTsgZGVsZXRlIHRo
aXM7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViS2l0OjpX
ZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiByb290UGF0aCkgeyBBU1NF
UlQoMCk7IGRlbGV0ZSB0aGlzOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdy
aXRlcihXZWJLaXQ6OldlYkZpbGVXcml0ZXIqIHdyaXRlcikgeyBBU1NFUlQoMCk7IGRlbGV0ZSB0
aGlzOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OldlYkZpbGVFcnJvciBl
cnJvcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2NhbGxiYWNrcyk7CisgICAgICAgIG1fY2Fs
bGJhY2tzLT5kaWRGYWlsKGVycm9yKTsKKyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgfQorCitw
cml2YXRlOgorICAgIE93blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IG1f
Y2FsbGJhY2tzOworICAgIE93blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVXcml0ZXI+IG1fYXN5bmNG
aWxlV3JpdGVyOworfTsKKwordm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlV3Jp
dGVyKEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQoreworICAgIE93blB0cjxB
c3luY0ZpbGVXcml0ZXJDaHJvbWl1bT4gYXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gPSBhZG9wdFB0
cihuZXcgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oY2xpZW50KSk7CisgICAgT3duUHRyPFdlYktp
dDo6V2ViRmlsZVdyaXRlcj4gd2ViRmlsZVdyaXRlciA9IGFkb3B0UHRyKG1fd2ViRmlsZVN5c3Rl
bS0+Y3JlYXRlRmlsZVdyaXRlcihwYXRoLCBhc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5nZXQoKSkp
OworICAgIGFzeW5jRmlsZVdyaXRlckNocm9taXVtLT5zZXRXZWJGaWxlV3JpdGVyKHdlYkZpbGVX
cml0ZXIucmVsZWFzZSgpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwYXRo
LCBuZXcgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhjYWxsYmFja3MsIGFzeW5jRmlsZVdyaXRl
ckNocm9taXVtLnJlbGVhc2UoKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW0uaAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5
c3RlbUNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5
RXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2
b2lkIGNyZWF0ZVdyaXRlcihGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKIAogcHJpdmF0ZToK
ICAgICBXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIG1fd2ViRmlsZVN5c3RlbTsKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwCShyZXZpc2lv
biA2NzQ5MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNiArMzgsMTQgQEAKICNpbmNsdWRlICJXZWJGaWxl
V3JpdGVyLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW06OkFzeW5jRmlsZVdyaXRlckNocm9taXVtKEZpbGVXcml0ZXJDbGllbnQq
IGNsaWVudCkKICAgICA6IG1fY2xpZW50KGNsaWVudCkKIHsKIH0KIAotdm9pZCBBc3luY0ZpbGVX
cml0ZXJDaHJvbWl1bTo6c2V0V2ViRmlsZVdyaXRlcihXZWJGaWxlV3JpdGVyKiB3cml0ZXIpCit2
b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjpzZXRXZWJGaWxlV3JpdGVyKFBhc3NPd25QdHI8
V2ViS2l0OjpXZWJGaWxlV3JpdGVyPiB3cml0ZXIpCiB7CiAgICAgQVNTRVJUKCFtX3dyaXRlcik7
CiAgICAgbV93cml0ZXIgPSB3cml0ZXI7CkBAIC01Niw3ICs1NCw3IEBAIHZvaWQgQXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW06OnNldFdlYkZpbGUKIHZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06
OndyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogZGF0YSkKIHsKICAgICBBU1NFUlQobV93
cml0ZXIpOwotICAgIG1fd3JpdGVyLT53cml0ZShwb3NpdGlvbiwgV2ViVVJMKGRhdGEtPnVybCgp
KSk7CisgICAgbV93cml0ZXItPndyaXRlKHBvc2l0aW9uLCBXZWJLaXQ6OldlYlVSTChkYXRhLT51
cmwoKSkpOwogfQogCiB2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjp0cnVuY2F0ZShsb25n
IGxvbmcgbGVuZ3RoKQpAQCAtODIsNyArODAsNyBAQCB2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9t
aXVtOjpkaWRUcnVuY2F0CiAgICAgbV9jbGllbnQtPmRpZFRydW5jYXRlKGxlbmd0aCk7CiB9CiAK
LXZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OmRpZEZhaWwoV2ViRmlsZUVycm9yIGVycm9y
KQordm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6ZGlkRmFpbChXZWJLaXQ6OldlYkZpbGVF
cnJvciBlcnJvcikKIHsKICAgICBtX2NsaWVudC0+ZGlkRmFpbChlcnJvcik7CiB9CkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oCShyZXZpc2lv
biA2NzQ5MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0u
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsMzYgKzM2LDM2IEBACiAjaW5jbHVkZSAiQXN5bmNGaWxl
V3JpdGVyLmgiCiAjaW5jbHVkZSAiV2ViRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVdy
aXRlckNsaWVudC5oIgorI2luY2x1ZGUgPFdURi9QYXNzT3duUHRyLmg+CiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIEJsb2I7Ci1jbGFzcyBGaWxlV3JpdGVyQ2xpZW50OworbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJGaWxlV3JpdGVyOwogfQogCi1uYW1lc3BhY2UgV2ViS2l0IHsK
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViRmlsZVdyaXRlcjsKK2NsYXNzIEJsb2I7
CitjbGFzcyBGaWxlV3JpdGVyQ2xpZW50OwogCi1jbGFzcyBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1
bSA6IHB1YmxpYyBXZWJDb3JlOjpBc3luY0ZpbGVXcml0ZXIsIHB1YmxpYyBXZWJGaWxlV3JpdGVy
Q2xpZW50IHsKK2NsYXNzIEFzeW5jRmlsZVdyaXRlckNocm9taXVtIDogcHVibGljIEFzeW5jRmls
ZVdyaXRlciwgcHVibGljIFdlYktpdDo6V2ViRmlsZVdyaXRlckNsaWVudCB7CiBwdWJsaWM6Ci0g
ICAgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oV2ViQ29yZTo6RmlsZVdyaXRlckNsaWVudCogY2xp
ZW50KTsKLSAgICB+QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oKTsKKyAgICBBc3luY0ZpbGVXcml0
ZXJDaHJvbWl1bShGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpOwogCi0gICAgdm9pZCBzZXRXZWJG
aWxlV3JpdGVyKFdlYkZpbGVXcml0ZXIqIHdyaXRlcik7CisgICAgdm9pZCBzZXRXZWJGaWxlV3Jp
dGVyKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJGaWxlV3JpdGVyPiB3cml0ZXIpOwogCiAgICAgLy8g
RmlsZVdyaXRlcgotICAgIHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIFdl
YkNvcmU6OkJsb2IqIGRhdGEpOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxvbmcgcG9z
aXRpb24sIEJsb2IqIGRhdGEpOwogICAgIHZpcnR1YWwgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcg
bGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKTsKIAogICAgIC8vIFdlYkZpbGVXcml0
ZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29s
IGNvbXBsZXRlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkVHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0
aCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViRmlsZUVycm9yKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChXZWJLaXQ6OldlYkZpbGVFcnJvcik7CiAKIHByaXZhdGU6Ci0gICAgT3du
UHRyPFdlYkZpbGVXcml0ZXI+IG1fd3JpdGVyOwotICAgIFdlYkNvcmU6OkZpbGVXcml0ZXJDbGll
bnQqIG1fY2xpZW50OworICAgIE93blB0cjxXZWJLaXQ6OldlYkZpbGVXcml0ZXI+IG1fd3JpdGVy
OworICAgIEZpbGVXcml0ZXJDbGllbnQqIG1fY2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67751</attachid>
            <date>2010-09-15 18:11:06 -0700</date>
            <delta_ts>2010-09-15 18:38:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44361-20100915181104.patch</filename>
            <type>text/plain</type>
            <size>20189</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzUyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDktMTUgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQ2hyb21pdW0gaW1wbGVtZW50YXRpb24gZm9yIEZpbGVXcml0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzYxCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzOyB0aGUgaW1wbGVtZW50YXRpb24ncyBub3QgeWV0IGZhciBlbm91Z2ggYWxvbmcgZm9y
IHRoYXQuCisKKyAgICAgICAgVGhpcyBtYWtlcyBhIGNoYWluIG9mIGNvbnRydWN0aW9uLWFuZC1s
aW5raW5nLXVwIGZvciB2YXJpb3VzIHNvcnRzIG9mCisgICAgICAgIEZpbGVXcml0ZXIgaW50ZXJm
YWNlcyB0byBjYWxsIHRocm91Z2ggdG8gQ2hyb21pdW0sIGFuZCBmb3IgdmFyaW91cworICAgICAg
ICBzb3J0cyBvZiBGaWxlV3JpdGVyQ2xpZW50cyB0byBjYWxsIGJhY2ssIHdpdGggb2JqZWN0IG93
bmVyc2hpcCBhbHdheXMKKyAgICAgICAgcG9pbnRpbmcgdG93YXJkcyB0aGUgQ2hyb21pdW0gQVBJ
LiAgVGhhdCBpcywgdGhlIERPTSBvYmplY3Qgb3ducyBhbgorICAgICAgICBBc3luY0ZpbGVXcml0
ZXIsIHdoaWNoIG93bnMgaXRzIGltcGxlbWVudGF0aW9uIG9iamVjdCwgYW5kIHRoZSByZXZlcnNl
CisgICAgICAgIChjbGllbnQpIGRpcmVjdGlvbiBpcyByYXcgcG9pbnRlcnMuCisKKyAgICAgICAg
RmlsZSBtZXRhZGF0YSBpcyBsb29rZWQgdXAgYmVmb3JlIHRoZSBGaWxlV3JpdGVyIGlzIHJldHVy
bmVkLCBzbyB0aGF0CisgICAgICAgIHdlIGtub3cgdGhlIGZpbGUgZXhpc3RzIGFuZCBjYW4gY2Fj
aGUgaXRzIGxlbmd0aC4KKworICAgICAgICBUaGUgV2ViQ29yZSBwYXJ0IG9mIHRoaXMgaXMgc2lt
cGxlIGFuZCBnZW5lcmljIGVub3VnaCB0byBoYW5kbGUKKyAgICAgICAgQ2hyb21pdW0sIHNvIGl0
IHNob3VsZCBiZSBlYXN5IGZvciBtZSB0byBwdXQgaW4gYSBXZWJDb3JlLW9ubHkKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gbmV4dC4KKyAgICAgICAgCisgICAgICAgICogZmlsZWFwaS9Bc3luY0Zp
bGVXcml0ZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKToKKyAgICAgICAgKiBmaWxl
YXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFj
a3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZENy
ZWF0ZUZpbGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckNhbGxiYWNrczo6
RmlsZVdyaXRlckNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVyQ2FsbGJh
Y2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaDoKKwogMjAxMC0wOS0xNCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlV3JpdGVyLmgJKHJldmlz
aW9uIDY3NDkxKQorKysgV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVdyaXRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIGNsYXNzIEFzeW5jRmlsZVdyaXRlciB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlV3JpdGVyKCkge30KIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRGaWxlV3JpdGVyQ2xpZW50KEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkgPSAwOwotCiAgICAg
dmlydHVhbCB2b2lkIHdyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogZGF0YSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGFib3J0KCkgPSAwOwpJbmRleDogV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAko
cmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDExIEBACiAjaW5jbHVkZSAiRW50cnkuaCIKICNpbmNs
dWRlICJFbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1
ZGUgIkZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJGaWxlV3JpdGVyLmgiCisjaW5jbHVkZSAiRmls
ZVdyaXRlckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIK
QEAgLTE5OSw2ICsyMDIsMTcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXREaXJlY3RvcnkoY29u
c3QgRQogICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3Jt
UGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZSwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQoreworICAgIEFTU0VSVChmaWxlKTsKKworICAgIFN0cmluZyBwbGF0Zm9ybVBhdGgg
PSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGZpbGUtPmZ1bGxQYXRo
KCkpOworCisgICAgUmVmUHRyPEZpbGVXcml0ZXI+IGZpbGVXcml0ZXIgPSBGaWxlV3JpdGVyOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBPd25QdHI8RmlsZVdyaXRlckNh
bGxiYWNrcz4gY2FsbGJhY2tzID0gYWRvcHRQdHIobmV3IEZpbGVXcml0ZXJDYWxsYmFja3MoZmls
ZVdyaXRlciwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPmNyZWF0ZVdyaXRlcihmaWxlV3JpdGVyLmdldCgpLCBwbGF0Zm9ybVBhdGgsIGNh
bGxiYWNrcy5yZWxlYXNlKCkpOworfQorCiB2b2lkIERPTUZpbGVTeXN0ZW06OnJlYWREaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKTsKSW5kZXg6IFdlYkNvcmUv
ZmlsZWFwaS9ET01GaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxlYXBpL0RP
TUZpbGVTeXN0ZW0uaAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRE9NRmls
ZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIGNsYXNzIEVudHJ5Owog
Y2xhc3MgRW50cnlDYWxsYmFjazsKIGNsYXNzIEVudHJpZXNDYWxsYmFjazsKIGNsYXNzIEVycm9y
Q2FsbGJhY2s7CitjbGFzcyBGaWxlRW50cnk7CitjbGFzcyBGaWxlV3JpdGVyQ2FsbGJhY2s7CiBj
bGFzcyBNZXRhZGF0YUNhbGxiYWNrOwogY2xhc3MgVm9pZENhbGxiYWNrOwogCkBAIC03Nyw2ICs3
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEZpbGUoY29uc3QgRW50cnkqIGJhc2UsIGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFj
az4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwogICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNv
bnN0IEVudHJ5KiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKICAg
ICB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEVudHJp
ZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIHZvaWQgY3JlYXRl
V3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZSwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKIAogICAgIC8vIFNjaGVkdWxlIGEgY2Fs
bGJhY2suIFRoaXMgc2hvdWxkIG5vdCBjcm9zcyB0aHJlYWRzIChzaG91bGQgYmUgY2FsbGVkIG9u
IHRoZSBzYW1lIGNvbnRleHQgdGhyZWFkKS4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0IsIHR5
cGVuYW1lIENCQXJnPgpJbmRleDogV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNw
cAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNr
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCiAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJBc3luY0Zp
bGVXcml0ZXIuaCIKICNpbmNsdWRlICJET01GaWxlUGF0aC5oIgogI2luY2x1ZGUgIkRPTUZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgpAQCAtNDUsNiArNDYsOCBAQAog
I2luY2x1ZGUgIkZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUg
IkZpbGVTeXN0ZW1DYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVXcml0ZXIuaCIKKyNpbmNsdWRl
ICJGaWxlV3JpdGVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNZXRhZGF0YS5oIgogI2luY2x1ZGUg
Ik1ldGFkYXRhQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CkBAIC05MSw2ICs5NCwxMiBAQCB2b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRSZWFk
RGlyCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgRmlsZVN5c3RlbUNhbGxi
YWNrc0Jhc2U6OmRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+
LCBsb25nIGxvbmcpCit7CisgICAgLy8gRWFjaCBzdWJjbGFzcyBtdXN0IGltcGxlbWVudCBhbiBh
cHByb3ByaWF0ZSBvbmUuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgRmls
ZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZEZhaWwoaW50IGNvZGUpCiB7CiAgICAgaWYgKG1fZXJy
b3JDYWxsYmFjaykgewpAQCAtMTg3LDYgKzE5NiwyMyBAQCB2b2lkIE1ldGFkYXRhQ2FsbGJhY2tz
OjpkaWRSZWFkTWV0YWRhdGEoCiAgICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKIH0KIAor
Ly8gRmlsZVdyaXRlckNhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpbGVXcml0ZXJDYWxsYmFja3M6OkZpbGVXcml0
ZXJDYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBmaWxlV3JpdGVyLCBQYXNzUmVmUHRy
PEZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJv
ckNhbGxiYWNrKQorICAgICwgbV9maWxlV3JpdGVyKGZpbGVXcml0ZXIpCisgICAgLCBtX3N1Y2Nl
c3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCit7Cit9CisKK3ZvaWQgRmlsZVdyaXRlckNhbGxi
YWNrczo6ZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4gYXN5
bmNGaWxlV3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKQoreworICAgIG1fZmlsZVdyaXRlci0+aW5p
dGlhbGl6ZShhc3luY0ZpbGVXcml0ZXIsIGxlbmd0aCk7CisgICAgaWYgKG1fc3VjY2Vzc0NhbGxi
YWNrKQorICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQobV9maWxlV3JpdGVy
LnJlbGVhc2UoKS5nZXQoKSk7CisgICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKK30KKwog
Ly8gVm9pZENhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBWb2lkQ2FsbGJhY2tzOjpWb2lkQ2FsbGJhY2tzKFBh
c3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKSW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVt
Q2FsbGJhY2tzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxs
YmFja3MuaAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNh
bGxiYWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMiArNDAsMTUgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBBc3luY0ZpbGVXcml0ZXI7CiBjbGFzcyBET01GaWxlU3lzdGVt
OwogY2xhc3MgRXJyb3JDYWxsYmFjazsKIGNsYXNzIEVudHJpZXNDYWxsYmFjazsKIGNsYXNzIEVu
dHJ5QXJyYXk7CiBjbGFzcyBFbnRyeUNhbGxiYWNrOwogY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNr
OworY2xhc3MgRmlsZVdyaXRlcjsKK2NsYXNzIEZpbGVXcml0ZXJDYWxsYmFjazsKIGNsYXNzIE1l
dGFkYXRhQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVm9p
ZENhbGxiYWNrOwpAQCAtNjcsNiArNzAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3Rvcnkp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUp
OwogCisgICAgLy8gRm9yIGNyZWF0ZUZpbGVXcml0ZXIuCisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+LCBsb25nIGxvbmcgbGVu
Z3RoKTsKKwogICAgIC8vIEZvciBFcnJvckNhbGxiYWNrLgogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGludCBjb2RlKTsKIApAQCAtMTIxLDYgKzEyNywxNiBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxNZXRhZGF0YUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKIH07CiAKK2NsYXNzIEZpbGVX
cml0ZXJDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgeworcHVibGlj
OgorICAgIEZpbGVXcml0ZXJDYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiwgUGFzc1Jl
ZlB0cjxGaWxlV3JpdGVyQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdy
aXRlcj4sIGxvbmcgbG9uZyBsZW5ndGgpOworCitwcml2YXRlOgorICAgIFJlZlB0cjxGaWxlV3Jp
dGVyPiBtX2ZpbGVXcml0ZXI7CisgICAgUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4gbV9zdWNj
ZXNzQ2FsbGJhY2s7Cit9OworCiBjbGFzcyBWb2lkQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0
ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKICAgICBWb2lkQ2FsbGJhY2tzKFBhc3NSZWZQdHI8
Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vQXN5bmNGaWxlU3lzdGVtLmgJKHJldmlzaW9uIDY3NDkxKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9Bc3luY0ZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFzeW5jRmlsZVN5c3RlbTsKIGNsYXNzIEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrczsKK2NsYXNzIEZpbGVXcml0ZXJDbGllbnQ7CiAKIC8vIFRoaXMgY2xh
c3MgcHJvdmlkZXMgYXN5bmMgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBmaWxlIHN5
c3RlbSBpbXBsZW1lbnRhdGlvbi4gIE5vdGUgdGhhdCBhbGwgdGhlIG1ldGhvZHMgdGFrZSBwbGF0
Zm9ybSBwYXRocy4KIGNsYXNzIEFzeW5jRmlsZVN5c3RlbSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CkBAIC0xMDcsNiArMTA4LDExIEBAIHB1YmxpYzoKICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M6OmRpZEZhaWwoKSBpcyB3aGVuIHRoZXJlIGlzIGFuIGVycm9yLgogICAgIHZpcnR1YWwg
dm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKKyAgICAvLyBDcmVhdGVzIGFuIEFzeW5jRmlsZVdy
aXRlciBmb3IgYSBnaXZlbiBmaWxlIHBhdGguCisgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKCkgaXMgY2FsbGVkIHdoZW4gYW4gQXN5bmNGaWxlV3Jp
dGVyIGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVdyaXRlcihGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisKICAgICAvLyBDb252
ZXJ0cyBhIGdpdmVuIGFic29sdXRlIHZpcnR1YWwgcGF0aCB0byBhIHBsYXRmb3JtIHBhdGggdGhh
dCBzdGFydHMgd2l0aCB0aGUgcGxhdGZvcm0gcm9vdCBwYXRoIG9mIHRoaXMgZmlsZSBzeXN0ZW0u
CiAgICAgdmlydHVhbCBTdHJpbmcgdmlydHVhbFRvUGxhdGZvcm1QYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCkgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFzeW5jRmlsZVN5c3RlbTsKK2NsYXNzIEFzeW5jRmls
ZVdyaXRlcjsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKIHB1YmxpYzoKQEAgLTU2LDYgKzU3LDkgQEAgcHVibGljOgogICAgIC8vIENhbGxl
ZCBhZnRlciBhIGNodW5rIG9mIGRpcmVjdG9yeSBlbnRyaWVzIGhhdmUgYmVlbiByZWFkIChpLmUu
IGluZGljYXRlcyBpdCdzIGdvb2QgdGltZSB0byBjYWxsIGJhY2sgdG8gdGhlIGFwcGxpY2F0aW9u
KS4gIElmIGhhc01vcmUgaXMgdHJ1ZSB0aGVyZSBjYW4gYmUgbW9yZSBjaHVua3MuCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSkgPSAwOwogCisg
ICAgLy8gQ2FsbGVkIHdoZW4gYW4gQXN5bmNGaWxlV3J0ZXIgaGFzIGJlZW4gY3JlYXRlZCBzdWNj
ZXNzZnVsbHkuCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0
cjxBc3luY0ZpbGVXcml0ZXI+IHdyaXRlciwgbG9uZyBsb25nIGxlbmd0aCkgPSAwOworCiAgICAg
Ly8gQ2FsbGVkIHdoZW4gdGhlcmUgd2FzIGFuIGVycm9yLgogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGludCBjb2RlKSA9IDA7CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjc1MjkpCisr
KyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTAtMDktMTQgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2hyb21pdW0g
aW1wbGVtZW50YXRpb24gZm9yIEZpbGVXcml0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzYxCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyB0aGUg
aW1wbGVtZW50YXRpb24ncyBub3QgeWV0IGZhciBlbm91Z2ggYWxvbmcgZm9yIHRoYXQuCisKKyAg
ICAgICAgVGhpcyBtYWtlcyBhIGNoYWluIG9mIGNvbnRydWN0aW9uLWFuZC1saW5raW5nLXVwIGZv
ciB2YXJpb3VzIHNvcnRzIG9mCisgICAgICAgIEZpbGVXcml0ZXIgaW50ZXJmYWNlcyB0byBjYWxs
IHRocm91Z2ggdG8gQ2hyb21pdW0sIGFuZCBmb3IgdmFyaW91cworICAgICAgICBzb3J0cyBvZiBG
aWxlV3JpdGVyQ2xpZW50cyB0byBjYWxsIGJhY2ssIHdpdGggb2JqZWN0IG93bmVyc2hpcCBhbHdh
eXMKKyAgICAgICAgcG9pbnRpbmcgdG93YXJkcyB0aGUgQ2hyb21pdW0gQVBJLiAgVGhhdCBpcywg
dGhlIERPTSBvYmplY3Qgb3ducyBhbgorICAgICAgICBBc3luY0ZpbGVXcml0ZXIsIHdoaWNoIG93
bnMgaXRzIGltcGxlbWVudGF0aW9uIG9iamVjdCwgYW5kIHRoZSByZXZlcnNlCisgICAgICAgIChj
bGllbnQpIGRpcmVjdGlvbiBpcyByYXcgcG9pbnRlcnMuCisKKyAgICAgICAgRmlsZSBtZXRhZGF0
YSBpcyBsb29rZWQgdXAgYmVmb3JlIHRoZSBGaWxlV3JpdGVyIGlzIHJldHVybmVkLCBzbyB0aGF0
CisgICAgICAgIHdlIGtub3cgdGhlIGZpbGUgZXhpc3RzIGFuZCBjYW4gY2FjaGUgaXRzIGxlbmd0
aC4KKworICAgICAgICBUaGUgV2ViS2l0L2Nocm9taXVtIGludGVyZmFjZSBoZXJlIGlzIG1vZGVs
ZWQgYWZ0ZXIgdGhhdCBvZiB0aGUKKyAgICAgICAgRmlsZVN5c3RlbS4KKyAgICAgICAgCisgICAg
ICAgICogcHVibGljL1dlYkZpbGVJbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVJbmZv
OjpXZWJGaWxlSW5mbyk6CisgICAgICAgICogc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OkZpbGVXcml0
ZXJIZWxwZXJDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckhlbHBlckNh
bGxiYWNrczo6ZGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVySGVscGVy
Q2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRl
ckhlbHBlckNhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OmRpZEZhaWwpOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdyaXRlcik6
CisgICAgICAgICogc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmg6CisgICAgICAgICogc3Jj
L0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmls
ZVdyaXRlckNocm9taXVtOjpzZXRXZWJGaWxlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFz
eW5jRmlsZVdyaXRlckNocm9taXVtOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bTo6ZGlkRmFpbCk6CisgICAgICAgICogc3JjL0FzeW5jRmlsZVdyaXRl
ckNocm9taXVtLmg6CisgICAgICAgICogc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmg6
CisKIDIwMTAtMDktMTQgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRmlsZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVJbmZvLmgJKHJldmlzaW9uIDY3NDkxKQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGaWxlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCwxOSBAQCBzdHJ1
Y3QgV2ViRmlsZUluZm8gewogICAgIC8vIFRoZSB2YWx1ZSAwLjAgbWVhbnMgdGhhdCB0aGUgdGlt
ZSBpcyBub3Qgc2V0LgogICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOwogCi0gICAgV2ViRmls
ZUluZm8oKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSB7IH0KKyAgICAvLyBUaGUgbGVuZ3RoIG9m
IHRoZSBmaWxlIGluIGJ5dGVzLgorICAgIC8vIFRoZSB2YWx1ZSAtMSBtZWFucyB0aGF0IHRoZSBs
ZW5ndGggaXMgbm90IHNldC4KKyAgICBsb25nIGxvbmcgbGVuZ3RoOworCisgICAgZW51bSBFbnRy
eVR5cGUgeworICAgICAgICBUeXBlVW5rbm93biA9IDAsCisgICAgICAgIFR5cGVGaWxlLAorICAg
ICAgICBUeXBlRGlyZWN0b3J5CisgICAgfTsKKworICAgIEVudHJ5VHlwZSB0eXBlOworCisgICAg
V2ViRmlsZUluZm8oKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSwgbGVuZ3RoKC0xKSwgdHlwZShU
eXBlVW5rbm93bikgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCShyZXZpc2lv
biA2NzQ5MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMywxMSBAQAogI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oIgorI2lu
Y2x1ZGUgIldlYkZpbGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRl
ci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgogCkBA
IC05OSw2ICsxMDEsNTIgQEAgdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVhZERpcmVj
dAogICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShwYXRoLCBuZXcgV2ViS2l0OjpX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAorY2xhc3MgRmlsZVdy
aXRlckhlbHBlckNhbGxiYWNrcyA6IHB1YmxpYyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MgeworcHVibGljOgorICAgIEZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3MoRmlsZVdyaXRlckNs
aWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6V2ViRmlsZVN5c3RlbSog
d2ViRmlsZVN5c3RlbSwgUGFzc093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgICAgICwgbV9w
YXRoKHBhdGgpCisgICAgICAgICwgbV93ZWJGaWxlU3lzdGVtKHdlYkZpbGVTeXN0ZW0pCisgICAg
ICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKSB7fQorCisgICAgdmlydHVhbCB2b2lkIGRpZFN1
Y2NlZWQoKSB7IEFTU0VSVCgwKTsgZGVsZXRlIHRoaXM7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVhZE1ldGFkYXRhKGNvbnN0IFdlYktpdDo6V2ViRmlsZUluZm8mIGluZm8pCisgICAgeworICAg
ICAgICBpZiAoaW5mby50eXBlICE9IFdlYktpdDo6V2ViRmlsZUluZm86OlR5cGVGaWxlIHx8IGlu
Zm8ubGVuZ3RoIDwgMCkKKyAgICAgICAgICAgIGRpZEZhaWwoV2ViS2l0OjpXZWJGaWxlRXJyb3JJ
bnZhbGlkU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIE93blB0cjxBc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bT4gYXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gPSBhZG9wdFB0cihuZXcg
QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0obV9jbGllbnQpKTsKKyAgICAgICAgICAgIE93blB0cjxX
ZWJLaXQ6OldlYkZpbGVXcml0ZXI+IHdlYkZpbGVXcml0ZXIgPSBhZG9wdFB0cihtX3dlYkZpbGVT
eXN0ZW0tPmNyZWF0ZUZpbGVXcml0ZXIobV9wYXRoLCBhc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5n
ZXQoKSkpOworICAgICAgICAgICAgYXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0tPnNldFdlYkZpbGVX
cml0ZXIod2ViRmlsZVdyaXRlci5yZWxlYXNlKCkpOworICAgICAgICAgICAgQVNTRVJUKG1fY2Fs
bGJhY2tzKTsKKyAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5kaWRDcmVhdGVGaWxlV3JpdGVyKGFz
eW5jRmlsZVdyaXRlckNocm9taXVtLnJlbGVhc2UoKSwgaW5mby5sZW5ndGgpOworICAgICAgICAg
ICAgZGVsZXRlIHRoaXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVhZERpcmVjdG9yeShjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYkZpbGVTeXN0
ZW1FbnRyeT4mIGVudHJpZXMsIGJvb2wgaGFzTW9yZSkgeyBBU1NFUlQoMCk7IGRlbGV0ZSB0aGlz
OyB9CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFdlYktpdDo6V2Vi
U3RyaW5nJiBuYW1lLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgcm9vdFBhdGgpIHsgQVNTRVJU
KDApOyBkZWxldGUgdGhpczsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGaWxlV3JpdGVy
KFdlYktpdDo6V2ViRmlsZVdyaXRlciogd3JpdGVyKSB7IEFTU0VSVCgwKTsgZGVsZXRlIHRoaXM7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViRmlsZUVycm9yIGVycm9y
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY2FsbGJhY2tzKTsKKyAgICAgICAgbV9jYWxsYmFj
a3MtPmRpZEZhaWwoZXJyb3IpOworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgRmlsZVdyaXRlckNsaWVudCogbV9jbGllbnQ7CisgICAgU3RyaW5nIG1fcGF0aDsK
KyAgICBXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIG1fd2ViRmlsZVN5c3RlbTsKKyAgICBPd25QdHI8
V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKK307CisKK3Zv
aWQgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdyaXRlcihGaWxlV3JpdGVyQ2xpZW50
KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKK3sKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0
YShwYXRoLCBuZXcgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhjbGllbnQsIHBhdGgsIG1fd2Vi
RmlsZVN5c3RlbSwgY2FsbGJhY2tzKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bS5oCShyZXZpc2lvbiA2NzQ5MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgdm9pZCBkaXJlY3Rv
cnlFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pOwogICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlV3JpdGVyKEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5n
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogCiBwcml2YXRl
OgogICAgIFdlYktpdDo6V2ViRmlsZVN5c3RlbSogbV93ZWJGaWxlU3lzdGVtOwpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAJKHJldmlz
aW9uIDY3NDkxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDI1ICszOCwyMiBAQAogI2luY2x1ZGUgIldlYkZp
bGVXcml0ZXIuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBBc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bTo6QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oRmlsZVdyaXRlckNsaWVu
dCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogewogfQogCi12b2lkIEFzeW5jRmls
ZVdyaXRlckNocm9taXVtOjpzZXRXZWJGaWxlV3JpdGVyKFdlYkZpbGVXcml0ZXIqIHdyaXRlcikK
K3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnNldFdlYkZpbGVXcml0ZXIoUGFzc093blB0
cjxXZWJLaXQ6OldlYkZpbGVXcml0ZXI+IHdyaXRlcikKIHsKLSAgICBBU1NFUlQoIW1fd3JpdGVy
KTsKICAgICBtX3dyaXRlciA9IHdyaXRlcjsKIH0KIAogdm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bTo6d3JpdGUobG9uZyBsb25nIHBvc2l0aW9uLCBCbG9iKiBkYXRhKQogewogICAgIEFTU0VS
VChtX3dyaXRlcik7Ci0gICAgbV93cml0ZXItPndyaXRlKHBvc2l0aW9uLCBXZWJVUkwoZGF0YS0+
dXJsKCkpKTsKKyAgICBtX3dyaXRlci0+d3JpdGUocG9zaXRpb24sIFdlYktpdDo6V2ViVVJMKGRh
dGEtPnVybCgpKSk7CiB9CiAKIHZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnRydW5jYXRl
KGxvbmcgbG9uZyBsZW5ndGgpCkBAIC04Miw3ICs3OSw3IEBAIHZvaWQgQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW06OmRpZFRydW5jYXQKICAgICBtX2NsaWVudC0+ZGlkVHJ1bmNhdGUobGVuZ3RoKTsK
IH0KIAotdm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6ZGlkRmFpbChXZWJGaWxlRXJyb3Ig
ZXJyb3IpCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjpkaWRGYWlsKFdlYktpdDo6V2Vi
RmlsZUVycm9yIGVycm9yKQogewogICAgIG1fY2xpZW50LT5kaWRGYWlsKGVycm9yKTsKIH0KSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgJKHJl
dmlzaW9uIDY3NDkxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwzNiArMzYsMzYgQEAKICNpbmNsdWRlICJBc3lu
Y0ZpbGVXcml0ZXIuaCIKICNpbmNsdWRlICJXZWJGaWxlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJG
aWxlV3JpdGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8V1RGL1Bhc3NPd25QdHIuaD4KIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgQmxvYjsKLWNsYXNzIEZpbGVXcml0ZXJDbGllbnQ7CituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkZpbGVXcml0ZXI7CiB9CiAKLW5hbWVzcGFjZSBXZWJL
aXQgeworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJGaWxlV3JpdGVyOworY2xhc3Mg
QmxvYjsKK2NsYXNzIEZpbGVXcml0ZXJDbGllbnQ7CiAKLWNsYXNzIEFzeW5jRmlsZVdyaXRlckNo
cm9taXVtIDogcHVibGljIFdlYkNvcmU6OkFzeW5jRmlsZVdyaXRlciwgcHVibGljIFdlYkZpbGVX
cml0ZXJDbGllbnQgeworY2xhc3MgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gOiBwdWJsaWMgQXN5
bmNGaWxlV3JpdGVyLCBwdWJsaWMgV2ViS2l0OjpXZWJGaWxlV3JpdGVyQ2xpZW50IHsKIHB1Ymxp
YzoKLSAgICBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bShXZWJDb3JlOjpGaWxlV3JpdGVyQ2xpZW50
KiBjbGllbnQpOwotICAgIH5Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bSgpOwotCi0gICAgdm9pZCBz
ZXRXZWJGaWxlV3JpdGVyKFdlYkZpbGVXcml0ZXIqIHdyaXRlcik7CisgICAgQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW0oRmlsZVdyaXRlckNsaWVudCogY2xpZW50KTsKKyAgICAKKyAgICB2b2lkIHNl
dFdlYkZpbGVXcml0ZXIoUGFzc093blB0cjxXZWJLaXQ6OldlYkZpbGVXcml0ZXI+IHdyaXRlcik7
CiAKICAgICAvLyBGaWxlV3JpdGVyCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlKGxvbmcgbG9uZyBw
b3NpdGlvbiwgV2ViQ29yZTo6QmxvYiogZGF0YSk7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlKGxv
bmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogZGF0YSk7CiAgICAgdmlydHVhbCB2b2lkIHRydW5jYXRl
KGxvbmcgbG9uZyBsZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpOwogCiAgICAgLy8g
V2ViRmlsZVdyaXRlckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZShsb25nIGxvbmcg
Ynl0ZXMsIGJvb2wgY29tcGxldGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRUcnVuY2F0ZShsb25n
IGxvbmcgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJGaWxlRXJyb3IpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViRmlsZUVycm9yKTsKIAogcHJpdmF0
ZToKLSAgICBPd25QdHI8V2ViRmlsZVdyaXRlcj4gbV93cml0ZXI7Ci0gICAgV2ViQ29yZTo6Rmls
ZVdyaXRlckNsaWVudCogbV9jbGllbnQ7CisgICAgT3duUHRyPFdlYktpdDo6V2ViRmlsZVdyaXRl
cj4gbV93cml0ZXI7CisgICAgRmlsZVdyaXRlckNsaWVudCogbV9jbGllbnQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67755</attachid>
            <date>2010-09-15 18:38:55 -0700</date>
            <delta_ts>2010-09-16 15:14:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44361-20100915183853.patch</filename>
            <type>text/plain</type>
            <size>20125</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzUyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDktMTUgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQ2hyb21pdW0gaW1wbGVtZW50YXRpb24gZm9yIEZpbGVXcml0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzYxCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzOyB0aGUgaW1wbGVtZW50YXRpb24ncyBub3QgeWV0IGZhciBlbm91Z2ggYWxvbmcgZm9y
IHRoYXQuCisKKyAgICAgICAgVGhpcyBtYWtlcyBhIGNoYWluIG9mIGNvbnRydWN0aW9uLWFuZC1s
aW5raW5nLXVwIGZvciB2YXJpb3VzIHNvcnRzIG9mCisgICAgICAgIEZpbGVXcml0ZXIgaW50ZXJm
YWNlcyB0byBjYWxsIHRocm91Z2ggdG8gQ2hyb21pdW0sIGFuZCBmb3IgdmFyaW91cworICAgICAg
ICBzb3J0cyBvZiBGaWxlV3JpdGVyQ2xpZW50cyB0byBjYWxsIGJhY2ssIHdpdGggb2JqZWN0IG93
bmVyc2hpcCBhbHdheXMKKyAgICAgICAgcG9pbnRpbmcgdG93YXJkcyB0aGUgQ2hyb21pdW0gQVBJ
LiAgVGhhdCBpcywgdGhlIERPTSBvYmplY3Qgb3ducyBhbgorICAgICAgICBBc3luY0ZpbGVXcml0
ZXIsIHdoaWNoIG93bnMgaXRzIGltcGxlbWVudGF0aW9uIG9iamVjdCwgYW5kIHRoZSByZXZlcnNl
CisgICAgICAgIChjbGllbnQpIGRpcmVjdGlvbiBpcyByYXcgcG9pbnRlcnMuCisKKyAgICAgICAg
RmlsZSBtZXRhZGF0YSBpcyBsb29rZWQgdXAgYmVmb3JlIHRoZSBGaWxlV3JpdGVyIGlzIHJldHVy
bmVkLCBzbyB0aGF0CisgICAgICAgIHdlIGtub3cgdGhlIGZpbGUgZXhpc3RzIGFuZCBjYW4gY2Fj
aGUgaXRzIGxlbmd0aC4KKworICAgICAgICBUaGUgV2ViQ29yZSBwYXJ0IG9mIHRoaXMgaXMgc2lt
cGxlIGFuZCBnZW5lcmljIGVub3VnaCB0byBoYW5kbGUKKyAgICAgICAgQ2hyb21pdW0sIHNvIGl0
IHNob3VsZCBiZSBlYXN5IGZvciBtZSB0byBwdXQgaW4gYSBXZWJDb3JlLW9ubHkKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gbmV4dC4KKyAgICAgICAgCisgICAgICAgICogZmlsZWFwaS9Bc3luY0Zp
bGVXcml0ZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKToKKyAgICAgICAgKiBmaWxl
YXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFj
a3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZENy
ZWF0ZUZpbGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckNhbGxiYWNrczo6
RmlsZVdyaXRlckNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVyQ2FsbGJh
Y2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaDoKKwogMjAxMC0wOS0xNCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlV3JpdGVyLmgJKHJldmlz
aW9uIDY3NDkxKQorKysgV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVdyaXRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIGNsYXNzIEFzeW5jRmlsZVdyaXRlciB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlV3JpdGVyKCkge30KIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRGaWxlV3JpdGVyQ2xpZW50KEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkgPSAwOwotCiAgICAg
dmlydHVhbCB2b2lkIHdyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogZGF0YSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGFib3J0KCkgPSAwOwpJbmRleDogV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAko
cmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDExIEBACiAjaW5jbHVkZSAiRW50cnkuaCIKICNpbmNs
dWRlICJFbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1
ZGUgIkZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJGaWxlV3JpdGVyLmgiCisjaW5jbHVkZSAiRmls
ZVdyaXRlckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIK
QEAgLTE5OSw2ICsyMDIsMTcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXREaXJlY3RvcnkoY29u
c3QgRQogICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3Jt
UGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZSwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQoreworICAgIEFTU0VSVChmaWxlKTsKKworICAgIFN0cmluZyBwbGF0Zm9ybVBhdGgg
PSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGZpbGUtPmZ1bGxQYXRo
KCkpOworCisgICAgUmVmUHRyPEZpbGVXcml0ZXI+IGZpbGVXcml0ZXIgPSBGaWxlV3JpdGVyOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBPd25QdHI8RmlsZVdyaXRlckNh
bGxiYWNrcz4gY2FsbGJhY2tzID0gYWRvcHRQdHIobmV3IEZpbGVXcml0ZXJDYWxsYmFja3MoZmls
ZVdyaXRlciwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPmNyZWF0ZVdyaXRlcihmaWxlV3JpdGVyLmdldCgpLCBwbGF0Zm9ybVBhdGgsIGNh
bGxiYWNrcy5yZWxlYXNlKCkpOworfQorCiB2b2lkIERPTUZpbGVTeXN0ZW06OnJlYWREaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKTsKSW5kZXg6IFdlYkNvcmUv
ZmlsZWFwaS9ET01GaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxlYXBpL0RP
TUZpbGVTeXN0ZW0uaAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRE9NRmls
ZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIGNsYXNzIEVudHJ5Owog
Y2xhc3MgRW50cnlDYWxsYmFjazsKIGNsYXNzIEVudHJpZXNDYWxsYmFjazsKIGNsYXNzIEVycm9y
Q2FsbGJhY2s7CitjbGFzcyBGaWxlRW50cnk7CitjbGFzcyBGaWxlV3JpdGVyQ2FsbGJhY2s7CiBj
bGFzcyBNZXRhZGF0YUNhbGxiYWNrOwogY2xhc3MgVm9pZENhbGxiYWNrOwogCkBAIC03Nyw2ICs3
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEZpbGUoY29uc3QgRW50cnkqIGJhc2UsIGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFj
az4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwogICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNv
bnN0IEVudHJ5KiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKICAg
ICB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEVudHJp
ZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIHZvaWQgY3JlYXRl
V3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZSwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKIAogICAgIC8vIFNjaGVkdWxlIGEgY2Fs
bGJhY2suIFRoaXMgc2hvdWxkIG5vdCBjcm9zcyB0aHJlYWRzIChzaG91bGQgYmUgY2FsbGVkIG9u
IHRoZSBzYW1lIGNvbnRleHQgdGhyZWFkKS4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0IsIHR5
cGVuYW1lIENCQXJnPgpJbmRleDogV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNw
cAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNr
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCiAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJBc3luY0Zp
bGVXcml0ZXIuaCIKICNpbmNsdWRlICJET01GaWxlUGF0aC5oIgogI2luY2x1ZGUgIkRPTUZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgpAQCAtNDUsNiArNDYsOCBAQAog
I2luY2x1ZGUgIkZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUg
IkZpbGVTeXN0ZW1DYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVXcml0ZXIuaCIKKyNpbmNsdWRl
ICJGaWxlV3JpdGVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNZXRhZGF0YS5oIgogI2luY2x1ZGUg
Ik1ldGFkYXRhQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CkBAIC05MSw2ICs5NCwxMiBAQCB2b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRSZWFk
RGlyCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgRmlsZVN5c3RlbUNhbGxi
YWNrc0Jhc2U6OmRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+
LCBsb25nIGxvbmcpCit7CisgICAgLy8gRWFjaCBzdWJjbGFzcyBtdXN0IGltcGxlbWVudCBhbiBh
cHByb3ByaWF0ZSBvbmUuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgRmls
ZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZEZhaWwoaW50IGNvZGUpCiB7CiAgICAgaWYgKG1fZXJy
b3JDYWxsYmFjaykgewpAQCAtMTg3LDYgKzE5NiwyMyBAQCB2b2lkIE1ldGFkYXRhQ2FsbGJhY2tz
OjpkaWRSZWFkTWV0YWRhdGEoCiAgICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKIH0KIAor
Ly8gRmlsZVdyaXRlckNhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpbGVXcml0ZXJDYWxsYmFja3M6OkZpbGVXcml0
ZXJDYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBmaWxlV3JpdGVyLCBQYXNzUmVmUHRy
PEZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJv
ckNhbGxiYWNrKQorICAgICwgbV9maWxlV3JpdGVyKGZpbGVXcml0ZXIpCisgICAgLCBtX3N1Y2Nl
c3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCit7Cit9CisKK3ZvaWQgRmlsZVdyaXRlckNhbGxi
YWNrczo6ZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4gYXN5
bmNGaWxlV3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKQoreworICAgIG1fZmlsZVdyaXRlci0+aW5p
dGlhbGl6ZShhc3luY0ZpbGVXcml0ZXIsIGxlbmd0aCk7CisgICAgaWYgKG1fc3VjY2Vzc0NhbGxi
YWNrKQorICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQobV9maWxlV3JpdGVy
LnJlbGVhc2UoKS5nZXQoKSk7CisgICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKK30KKwog
Ly8gVm9pZENhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBWb2lkQ2FsbGJhY2tzOjpWb2lkQ2FsbGJhY2tzKFBh
c3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKSW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVt
Q2FsbGJhY2tzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxs
YmFja3MuaAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNh
bGxiYWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMiArNDAsMTUgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBBc3luY0ZpbGVXcml0ZXI7CiBjbGFzcyBET01GaWxlU3lzdGVt
OwogY2xhc3MgRXJyb3JDYWxsYmFjazsKIGNsYXNzIEVudHJpZXNDYWxsYmFjazsKIGNsYXNzIEVu
dHJ5QXJyYXk7CiBjbGFzcyBFbnRyeUNhbGxiYWNrOwogY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNr
OworY2xhc3MgRmlsZVdyaXRlcjsKK2NsYXNzIEZpbGVXcml0ZXJDYWxsYmFjazsKIGNsYXNzIE1l
dGFkYXRhQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVm9p
ZENhbGxiYWNrOwpAQCAtNjcsNiArNzAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3Rvcnkp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUp
OwogCisgICAgLy8gRm9yIGNyZWF0ZUZpbGVXcml0ZXIuCisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+LCBsb25nIGxvbmcgbGVu
Z3RoKTsKKwogICAgIC8vIEZvciBFcnJvckNhbGxiYWNrLgogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGludCBjb2RlKTsKIApAQCAtMTIxLDYgKzEyNywxNiBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxNZXRhZGF0YUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKIH07CiAKK2NsYXNzIEZpbGVX
cml0ZXJDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgeworcHVibGlj
OgorICAgIEZpbGVXcml0ZXJDYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiwgUGFzc1Jl
ZlB0cjxGaWxlV3JpdGVyQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdy
aXRlcj4sIGxvbmcgbG9uZyBsZW5ndGgpOworCitwcml2YXRlOgorICAgIFJlZlB0cjxGaWxlV3Jp
dGVyPiBtX2ZpbGVXcml0ZXI7CisgICAgUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4gbV9zdWNj
ZXNzQ2FsbGJhY2s7Cit9OworCiBjbGFzcyBWb2lkQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0
ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKICAgICBWb2lkQ2FsbGJhY2tzKFBhc3NSZWZQdHI8
Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vQXN5bmNGaWxlU3lzdGVtLmgJKHJldmlzaW9uIDY3NDkxKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9Bc3luY0ZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFzeW5jRmlsZVN5c3RlbTsKIGNsYXNzIEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrczsKK2NsYXNzIEZpbGVXcml0ZXJDbGllbnQ7CiAKIC8vIFRoaXMgY2xh
c3MgcHJvdmlkZXMgYXN5bmMgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBmaWxlIHN5
c3RlbSBpbXBsZW1lbnRhdGlvbi4gIE5vdGUgdGhhdCBhbGwgdGhlIG1ldGhvZHMgdGFrZSBwbGF0
Zm9ybSBwYXRocy4KIGNsYXNzIEFzeW5jRmlsZVN5c3RlbSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CkBAIC0xMDcsNiArMTA4LDExIEBAIHB1YmxpYzoKICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M6OmRpZEZhaWwoKSBpcyB3aGVuIHRoZXJlIGlzIGFuIGVycm9yLgogICAgIHZpcnR1YWwg
dm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKKyAgICAvLyBDcmVhdGVzIGFuIEFzeW5jRmlsZVdy
aXRlciBmb3IgYSBnaXZlbiBmaWxlIHBhdGguCisgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKCkgaXMgY2FsbGVkIHdoZW4gYW4gQXN5bmNGaWxlV3Jp
dGVyIGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVdyaXRlcihGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisKICAgICAvLyBDb252
ZXJ0cyBhIGdpdmVuIGFic29sdXRlIHZpcnR1YWwgcGF0aCB0byBhIHBsYXRmb3JtIHBhdGggdGhh
dCBzdGFydHMgd2l0aCB0aGUgcGxhdGZvcm0gcm9vdCBwYXRoIG9mIHRoaXMgZmlsZSBzeXN0ZW0u
CiAgICAgdmlydHVhbCBTdHJpbmcgdmlydHVhbFRvUGxhdGZvcm1QYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCkgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFzeW5jRmlsZVN5c3RlbTsKK2NsYXNzIEFzeW5jRmls
ZVdyaXRlcjsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKIHB1YmxpYzoKQEAgLTU2LDYgKzU3LDkgQEAgcHVibGljOgogICAgIC8vIENhbGxl
ZCBhZnRlciBhIGNodW5rIG9mIGRpcmVjdG9yeSBlbnRyaWVzIGhhdmUgYmVlbiByZWFkIChpLmUu
IGluZGljYXRlcyBpdCdzIGdvb2QgdGltZSB0byBjYWxsIGJhY2sgdG8gdGhlIGFwcGxpY2F0aW9u
KS4gIElmIGhhc01vcmUgaXMgdHJ1ZSB0aGVyZSBjYW4gYmUgbW9yZSBjaHVua3MuCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSkgPSAwOwogCisg
ICAgLy8gQ2FsbGVkIHdoZW4gYW4gQXN5bmNGaWxlV3J0ZXIgaGFzIGJlZW4gY3JlYXRlZCBzdWNj
ZXNzZnVsbHkuCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0
cjxBc3luY0ZpbGVXcml0ZXI+IHdyaXRlciwgbG9uZyBsb25nIGxlbmd0aCkgPSAwOworCiAgICAg
Ly8gQ2FsbGVkIHdoZW4gdGhlcmUgd2FzIGFuIGVycm9yLgogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGludCBjb2RlKSA9IDA7CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjc1MjkpCisr
KyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTAtMDktMTQgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2hyb21pdW0g
aW1wbGVtZW50YXRpb24gZm9yIEZpbGVXcml0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzYxCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyB0aGUg
aW1wbGVtZW50YXRpb24ncyBub3QgeWV0IGZhciBlbm91Z2ggYWxvbmcgZm9yIHRoYXQuCisKKyAg
ICAgICAgVGhpcyBtYWtlcyBhIGNoYWluIG9mIGNvbnRydWN0aW9uLWFuZC1saW5raW5nLXVwIGZv
ciB2YXJpb3VzIHNvcnRzIG9mCisgICAgICAgIEZpbGVXcml0ZXIgaW50ZXJmYWNlcyB0byBjYWxs
IHRocm91Z2ggdG8gQ2hyb21pdW0sIGFuZCBmb3IgdmFyaW91cworICAgICAgICBzb3J0cyBvZiBG
aWxlV3JpdGVyQ2xpZW50cyB0byBjYWxsIGJhY2ssIHdpdGggb2JqZWN0IG93bmVyc2hpcCBhbHdh
eXMKKyAgICAgICAgcG9pbnRpbmcgdG93YXJkcyB0aGUgQ2hyb21pdW0gQVBJLiAgVGhhdCBpcywg
dGhlIERPTSBvYmplY3Qgb3ducyBhbgorICAgICAgICBBc3luY0ZpbGVXcml0ZXIsIHdoaWNoIG93
bnMgaXRzIGltcGxlbWVudGF0aW9uIG9iamVjdCwgYW5kIHRoZSByZXZlcnNlCisgICAgICAgIChj
bGllbnQpIGRpcmVjdGlvbiBpcyByYXcgcG9pbnRlcnMuCisKKyAgICAgICAgRmlsZSBtZXRhZGF0
YSBpcyBsb29rZWQgdXAgYmVmb3JlIHRoZSBGaWxlV3JpdGVyIGlzIHJldHVybmVkLCBzbyB0aGF0
CisgICAgICAgIHdlIGtub3cgdGhlIGZpbGUgZXhpc3RzIGFuZCBjYW4gY2FjaGUgaXRzIGxlbmd0
aC4KKworICAgICAgICBUaGUgV2ViS2l0L2Nocm9taXVtIGludGVyZmFjZSBoZXJlIGlzIG1vZGVs
ZWQgYWZ0ZXIgdGhhdCBvZiB0aGUKKyAgICAgICAgRmlsZVN5c3RlbS4KKyAgICAgICAgCisgICAg
ICAgICogcHVibGljL1dlYkZpbGVJbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVJbmZv
OjpXZWJGaWxlSW5mbyk6CisgICAgICAgICogc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OkZpbGVXcml0
ZXJIZWxwZXJDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckhlbHBlckNh
bGxiYWNrczo6ZGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVySGVscGVy
Q2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRl
ckhlbHBlckNhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OmRpZEZhaWwpOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdyaXRlcik6
CisgICAgICAgICogc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmg6CisgICAgICAgICogc3Jj
L0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmls
ZVdyaXRlckNocm9taXVtOjpzZXRXZWJGaWxlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFz
eW5jRmlsZVdyaXRlckNocm9taXVtOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bTo6ZGlkRmFpbCk6CisgICAgICAgICogc3JjL0FzeW5jRmlsZVdyaXRl
ckNocm9taXVtLmg6CisgICAgICAgICogc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmg6
CisKIDIwMTAtMDktMTQgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRmlsZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVJbmZvLmgJKHJldmlzaW9uIDY3NDkxKQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGaWxlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCwxOSBAQCBzdHJ1
Y3QgV2ViRmlsZUluZm8gewogICAgIC8vIFRoZSB2YWx1ZSAwLjAgbWVhbnMgdGhhdCB0aGUgdGlt
ZSBpcyBub3Qgc2V0LgogICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOwogCi0gICAgV2ViRmls
ZUluZm8oKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSB7IH0KKyAgICAvLyBUaGUgbGVuZ3RoIG9m
IHRoZSBmaWxlIGluIGJ5dGVzLgorICAgIC8vIFRoZSB2YWx1ZSAtMSBtZWFucyB0aGF0IHRoZSBs
ZW5ndGggaXMgbm90IHNldC4KKyAgICBsb25nIGxvbmcgbGVuZ3RoOworCisgICAgZW51bSBFbnRy
eVR5cGUgeworICAgICAgICBUeXBlVW5rbm93biA9IDAsCisgICAgICAgIFR5cGVGaWxlLAorICAg
ICAgICBUeXBlRGlyZWN0b3J5CisgICAgfTsKKworICAgIEVudHJ5VHlwZSB0eXBlOworCisgICAg
V2ViRmlsZUluZm8oKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSwgbGVuZ3RoKC0xKSwgdHlwZShU
eXBlVW5rbm93bikgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCShyZXZpc2lv
biA2NzQ5MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMywxMSBAQAogI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oIgorI2lu
Y2x1ZGUgIldlYkZpbGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRl
ci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgogCkBA
IC05OSw2ICsxMDEsNTEgQEAgdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVhZERpcmVj
dAogICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShwYXRoLCBuZXcgV2ViS2l0OjpX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAorY2xhc3MgRmlsZVdy
aXRlckhlbHBlckNhbGxiYWNrcyA6IHB1YmxpYyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MgeworcHVibGljOgorICAgIEZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3MoRmlsZVdyaXRlckNs
aWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6V2ViRmlsZVN5c3RlbSog
d2ViRmlsZVN5c3RlbSwgUGFzc093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgICAgICwgbV9w
YXRoKHBhdGgpCisgICAgICAgICwgbV93ZWJGaWxlU3lzdGVtKHdlYkZpbGVTeXN0ZW0pCisgICAg
ICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKSB7fQorCisgICAgdmlydHVhbCB2b2lkIGRpZFN1
Y2NlZWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBkZWxldGUgdGhpczsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgV2ViS2l0OjpXZWJGaWxlSW5mbyYgaW5mbykK
KyAgICB7CisgICAgICAgIGlmIChpbmZvLnR5cGUgIT0gV2ViS2l0OjpXZWJGaWxlSW5mbzo6VHlw
ZUZpbGUgfHwgaW5mby5sZW5ndGggPCAwKQorICAgICAgICAgICAgZGlkRmFpbChXZWJLaXQ6Oldl
YkZpbGVFcnJvckludmFsaWRTdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgT3du
UHRyPEFzeW5jRmlsZVdyaXRlckNocm9taXVtPiBhc3luY0ZpbGVXcml0ZXJDaHJvbWl1bSA9IGFk
b3B0UHRyKG5ldyBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bShtX2NsaWVudCkpOworICAgICAgICAg
ICAgT3duUHRyPFdlYktpdDo6V2ViRmlsZVdyaXRlcj4gd2ViRmlsZVdyaXRlciA9IGFkb3B0UHRy
KG1fd2ViRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZVdyaXRlcihtX3BhdGgsIGFzeW5jRmlsZVdyaXRl
ckNocm9taXVtLmdldCgpKSk7CisgICAgICAgICAgICBhc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS0+
c2V0V2ViRmlsZVdyaXRlcih3ZWJGaWxlV3JpdGVyLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBB
U1NFUlQobV9jYWxsYmFja3MpOworICAgICAgICAgICAgbV9jYWxsYmFja3MtPmRpZENyZWF0ZUZp
bGVXcml0ZXIoYXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0ucmVsZWFzZSgpLCBpbmZvLmxlbmd0aCk7
CisgICAgICAgICAgICBkZWxldGUgdGhpczsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5KGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6
V2ViRmlsZVN5c3RlbUVudHJ5PiYgZW50cmllcywgYm9vbCBoYXNNb3JlKSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyBkZWxldGUgdGhpczsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5
c3RlbShjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJp
bmcmIHJvb3RQYXRoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBkZWxldGUgdGhpczsgfQorCisg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJGaWxlRXJyb3IgZXJyb3IpCisgICAg
eworICAgICAgICBBU1NFUlQobV9jYWxsYmFja3MpOworICAgICAgICBtX2NhbGxiYWNrcy0+ZGlk
RmFpbChlcnJvcik7CisgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBGaWxlV3JpdGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBTdHJpbmcgbV9wYXRoOworICAgIFdl
YktpdDo6V2ViRmlsZVN5c3RlbSogbV93ZWJGaWxlU3lzdGVtOworICAgIE93blB0cjxXZWJDb3Jl
OjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKwordm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlV3JpdGVyKEZpbGVXcml0ZXJDbGllbnQqIGNsaWVu
dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4gY2FsbGJhY2tzKQoreworICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKHBhdGgs
IG5ldyBGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKGNsaWVudCwgcGF0aCwgbV93ZWJGaWxlU3lz
dGVtLCBjYWxsYmFja3MpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgJ
KHJldmlzaW9uIDY3NDkxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0
cyhjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Pik7CiAgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVXcml0ZXIoRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAKIHByaXZhdGU6CiAgICAg
V2ViS2l0OjpXZWJGaWxlU3lzdGVtKiBtX3dlYkZpbGVTeXN0ZW07CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcAkocmV2aXNpb24gNjc0
OTEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMjUgKzM4LDIyIEBACiAjaW5jbHVkZSAiV2ViRmlsZVdyaXRl
ci5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQot
bmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFzeW5jRmlsZVdyaXRl
ckNocm9taXVtOjpBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bShGaWxlV3JpdGVyQ2xpZW50KiBjbGll
bnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiB7CiB9CiAKLXZvaWQgQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW06OnNldFdlYkZpbGVXcml0ZXIoV2ViRmlsZVdyaXRlciogd3JpdGVyKQordm9pZCBB
c3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6c2V0V2ViRmlsZVdyaXRlcihQYXNzT3duUHRyPFdlYktp
dDo6V2ViRmlsZVdyaXRlcj4gd3JpdGVyKQogewotICAgIEFTU0VSVCghbV93cml0ZXIpOwogICAg
IG1fd3JpdGVyID0gd3JpdGVyOwogfQogCiB2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjp3
cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIEJsb2IqIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fd3Jp
dGVyKTsKLSAgICBtX3dyaXRlci0+d3JpdGUocG9zaXRpb24sIFdlYlVSTChkYXRhLT51cmwoKSkp
OworICAgIG1fd3JpdGVyLT53cml0ZShwb3NpdGlvbiwgV2ViS2l0OjpXZWJVUkwoZGF0YS0+dXJs
KCkpKTsKIH0KIAogdm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6dHJ1bmNhdGUobG9uZyBs
b25nIGxlbmd0aCkKQEAgLTgyLDcgKzc5LDcgQEAgdm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1
bTo6ZGlkVHJ1bmNhdAogICAgIG1fY2xpZW50LT5kaWRUcnVuY2F0ZShsZW5ndGgpOwogfQogCi12
b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjpkaWRGYWlsKFdlYkZpbGVFcnJvciBlcnJvcikK
K3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OmRpZEZhaWwoV2ViS2l0OjpXZWJGaWxlRXJy
b3IgZXJyb3IpCiB7CiAgICAgbV9jbGllbnQtPmRpZEZhaWwoZXJyb3IpOwogfQpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaAkocmV2aXNpb24g
Njc0OTEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDM2ICszNiwzNiBAQAogI2luY2x1ZGUgIkFzeW5jRmlsZVdy
aXRlci5oIgogI2luY2x1ZGUgIldlYkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIldlYkZpbGVXcml0
ZXJDbGllbnQuaCIKKyNpbmNsdWRlIDxXVEYvUGFzc093blB0ci5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBCbG9iOwotY2xhc3MgRmlsZVdyaXRlckNsaWVudDsKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViRmlsZVdyaXRlcjsKIH0KIAotbmFtZXNwYWNlIFdlYktpdCB7Citu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdlYkZpbGVXcml0ZXI7CitjbGFzcyBCbG9iOwor
Y2xhc3MgRmlsZVdyaXRlckNsaWVudDsKIAotY2xhc3MgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0g
OiBwdWJsaWMgV2ViQ29yZTo6QXN5bmNGaWxlV3JpdGVyLCBwdWJsaWMgV2ViRmlsZVdyaXRlckNs
aWVudCB7CitjbGFzcyBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bSA6IHB1YmxpYyBBc3luY0ZpbGVX
cml0ZXIsIHB1YmxpYyBXZWJLaXQ6OldlYkZpbGVXcml0ZXJDbGllbnQgewogcHVibGljOgotICAg
IEFzeW5jRmlsZVdyaXRlckNocm9taXVtKFdlYkNvcmU6OkZpbGVXcml0ZXJDbGllbnQqIGNsaWVu
dCk7Ci0gICAgfkFzeW5jRmlsZVdyaXRlckNocm9taXVtKCk7Ci0KLSAgICB2b2lkIHNldFdlYkZp
bGVXcml0ZXIoV2ViRmlsZVdyaXRlciogd3JpdGVyKTsKKyAgICBBc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bShGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpOworICAgIAorICAgIHZvaWQgc2V0V2ViRmls
ZVdyaXRlcihQYXNzT3duUHRyPFdlYktpdDo6V2ViRmlsZVdyaXRlcj4gd3JpdGVyKTsKIAogICAg
IC8vIEZpbGVXcml0ZXIKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGUobG9uZyBsb25nIHBvc2l0aW9u
LCBXZWJDb3JlOjpCbG9iKiBkYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQgd3JpdGUobG9uZyBsb25n
IHBvc2l0aW9uLCBCbG9iKiBkYXRhKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJ1bmNhdGUobG9uZyBs
b25nIGxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCk7CiAKICAgICAvLyBXZWJGaWxl
V3JpdGVyQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlKGxvbmcgbG9uZyBieXRlcywg
Ym9vbCBjb21wbGV0ZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFRydW5jYXRlKGxvbmcgbG9uZyBs
ZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYkZpbGVFcnJvcik7CisgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJGaWxlRXJyb3IpOwogCiBwcml2YXRlOgotICAg
IE93blB0cjxXZWJGaWxlV3JpdGVyPiBtX3dyaXRlcjsKLSAgICBXZWJDb3JlOjpGaWxlV3JpdGVy
Q2xpZW50KiBtX2NsaWVudDsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJGaWxlV3JpdGVyPiBtX3dy
aXRlcjsKKyAgICBGaWxlV3JpdGVyQ2xpZW50KiBtX2NsaWVudDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67844</attachid>
            <date>2010-09-16 15:14:07 -0700</date>
            <delta_ts>2010-09-17 18:55:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44361-20100916151405.patch</filename>
            <type>text/plain</type>
            <size>20220</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzUyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDktMTUgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQ2hyb21pdW0gaW1wbGVtZW50YXRpb24gZm9yIEZpbGVXcml0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzYxCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzOyB0aGUgaW1wbGVtZW50YXRpb24ncyBub3QgeWV0IGZhciBlbm91Z2ggYWxvbmcgZm9y
IHRoYXQuCisKKyAgICAgICAgVGhpcyBtYWtlcyBhIGNoYWluIG9mIGNvbnRydWN0aW9uLWFuZC1s
aW5raW5nLXVwIGZvciB2YXJpb3VzIHNvcnRzIG9mCisgICAgICAgIEZpbGVXcml0ZXIgaW50ZXJm
YWNlcyB0byBjYWxsIHRocm91Z2ggdG8gQ2hyb21pdW0sIGFuZCBmb3IgdmFyaW91cworICAgICAg
ICBzb3J0cyBvZiBGaWxlV3JpdGVyQ2xpZW50cyB0byBjYWxsIGJhY2ssIHdpdGggb2JqZWN0IG93
bmVyc2hpcCBhbHdheXMKKyAgICAgICAgcG9pbnRpbmcgdG93YXJkcyB0aGUgQ2hyb21pdW0gQVBJ
LiAgVGhhdCBpcywgdGhlIERPTSBvYmplY3Qgb3ducyBhbgorICAgICAgICBBc3luY0ZpbGVXcml0
ZXIsIHdoaWNoIG93bnMgaXRzIGltcGxlbWVudGF0aW9uIG9iamVjdCwgYW5kIHRoZSByZXZlcnNl
CisgICAgICAgIChjbGllbnQpIGRpcmVjdGlvbiBpcyByYXcgcG9pbnRlcnMuCisKKyAgICAgICAg
RmlsZSBtZXRhZGF0YSBpcyBsb29rZWQgdXAgYmVmb3JlIHRoZSBGaWxlV3JpdGVyIGlzIHJldHVy
bmVkLCBzbyB0aGF0CisgICAgICAgIHdlIGtub3cgdGhlIGZpbGUgZXhpc3RzIGFuZCBjYW4gY2Fj
aGUgaXRzIGxlbmd0aC4KKworICAgICAgICBUaGUgV2ViQ29yZSBwYXJ0IG9mIHRoaXMgaXMgc2lt
cGxlIGFuZCBnZW5lcmljIGVub3VnaCB0byBoYW5kbGUKKyAgICAgICAgQ2hyb21pdW0sIHNvIGl0
IHNob3VsZCBiZSBlYXN5IGZvciBtZSB0byBwdXQgaW4gYSBXZWJDb3JlLW9ubHkKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gbmV4dC4KKyAgICAgICAgCisgICAgICAgICogZmlsZWFwaS9Bc3luY0Zp
bGVXcml0ZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKToKKyAgICAgICAgKiBmaWxl
YXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFj
a3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZENy
ZWF0ZUZpbGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckNhbGxiYWNrczo6
RmlsZVdyaXRlckNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVyQ2FsbGJh
Y2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaDoKKwogMjAxMC0wOS0xNCAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlV3JpdGVyLmgJKHJldmlz
aW9uIDY3NDkxKQorKysgV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVdyaXRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIGNsYXNzIEFzeW5jRmlsZVdyaXRlciB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlV3JpdGVyKCkge30KIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRGaWxlV3JpdGVyQ2xpZW50KEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkgPSAwOwotCiAgICAg
dmlydHVhbCB2b2lkIHdyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogZGF0YSkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGFib3J0KCkgPSAwOwpJbmRleDogV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAko
cmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDExIEBACiAjaW5jbHVkZSAiRW50cnkuaCIKICNpbmNs
dWRlICJFbnRyeUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiRXJyb3JDYWxsYmFjay5oIgorI2luY2x1
ZGUgIkZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1DYWxsYmFja3MuaCIKKyNpbmNsdWRlICJGaWxlV3JpdGVyLmgiCisjaW5jbHVkZSAiRmls
ZVdyaXRlckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJWb2lkQ2FsbGJhY2suaCIK
QEAgLTE5OSw2ICsyMDIsMTcgQEAgdm9pZCBET01GaWxlU3lzdGVtOjpnZXREaXJlY3RvcnkoY29u
c3QgRQogICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3Jt
UGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKK3ZvaWQgRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlV3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZSwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQoreworICAgIEFTU0VSVChmaWxlKTsKKworICAgIFN0cmluZyBwbGF0Zm9ybVBhdGgg
PSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGZpbGUtPmZ1bGxQYXRo
KCkpOworCisgICAgUmVmUHRyPEZpbGVXcml0ZXI+IGZpbGVXcml0ZXIgPSBGaWxlV3JpdGVyOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBPd25QdHI8RmlsZVdyaXRlckNh
bGxiYWNrcz4gY2FsbGJhY2tzID0gYWRvcHRQdHIobmV3IEZpbGVXcml0ZXJDYWxsYmFja3MoZmls
ZVdyaXRlciwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPmNyZWF0ZVdyaXRlcihmaWxlV3JpdGVyLmdldCgpLCBwbGF0Zm9ybVBhdGgsIGNh
bGxiYWNrcy5yZWxlYXNlKCkpOworfQorCiB2b2lkIERPTUZpbGVTeXN0ZW06OnJlYWREaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKTsKSW5kZXg6IFdlYkNvcmUv
ZmlsZWFwaS9ET01GaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxlYXBpL0RP
TUZpbGVTeXN0ZW0uaAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRE9NRmls
ZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIGNsYXNzIEVudHJ5Owog
Y2xhc3MgRW50cnlDYWxsYmFjazsKIGNsYXNzIEVudHJpZXNDYWxsYmFjazsKIGNsYXNzIEVycm9y
Q2FsbGJhY2s7CitjbGFzcyBGaWxlRW50cnk7CitjbGFzcyBGaWxlV3JpdGVyQ2FsbGJhY2s7CiBj
bGFzcyBNZXRhZGF0YUNhbGxiYWNrOwogY2xhc3MgVm9pZENhbGxiYWNrOwogCkBAIC03Nyw2ICs3
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEZpbGUoY29uc3QgRW50cnkqIGJhc2UsIGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFj
az4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwogICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNv
bnN0IEVudHJ5KiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+LCBQ
YXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKICAg
ICB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEVudHJp
ZXNDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAgIHZvaWQgY3JlYXRl
V3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZSwgUGFzc1JlZlB0cjxGaWxlV3JpdGVyQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKIAogICAgIC8vIFNjaGVkdWxlIGEgY2Fs
bGJhY2suIFRoaXMgc2hvdWxkIG5vdCBjcm9zcyB0aHJlYWRzIChzaG91bGQgYmUgY2FsbGVkIG9u
IHRoZSBzYW1lIGNvbnRleHQgdGhyZWFkKS4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0IsIHR5
cGVuYW1lIENCQXJnPgpJbmRleDogV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNw
cAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNr
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCiAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJBc3luY0Zp
bGVXcml0ZXIuaCIKICNpbmNsdWRlICJET01GaWxlUGF0aC5oIgogI2luY2x1ZGUgIkRPTUZpbGVT
eXN0ZW0uaCIKICNpbmNsdWRlICJEaXJlY3RvcnlFbnRyeS5oIgpAQCAtNDUsNiArNDYsOCBAQAog
I2luY2x1ZGUgIkZpbGVFbnRyeS5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUg
IkZpbGVTeXN0ZW1DYWxsYmFjay5oIgorI2luY2x1ZGUgIkZpbGVXcml0ZXIuaCIKKyNpbmNsdWRl
ICJGaWxlV3JpdGVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNZXRhZGF0YS5oIgogI2luY2x1ZGUg
Ik1ldGFkYXRhQ2FsbGJhY2suaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CkBAIC05MSw2ICs5NCwxMiBAQCB2b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlOjpkaWRSZWFk
RGlyCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK3ZvaWQgRmlsZVN5c3RlbUNhbGxi
YWNrc0Jhc2U6OmRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+
LCBsb25nIGxvbmcpCit7CisgICAgLy8gRWFjaCBzdWJjbGFzcyBtdXN0IGltcGxlbWVudCBhbiBh
cHByb3ByaWF0ZSBvbmUuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgRmls
ZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZEZhaWwoaW50IGNvZGUpCiB7CiAgICAgaWYgKG1fZXJy
b3JDYWxsYmFjaykgewpAQCAtMTg3LDYgKzE5NiwyMyBAQCB2b2lkIE1ldGFkYXRhQ2FsbGJhY2tz
OjpkaWRSZWFkTWV0YWRhdGEoCiAgICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKIH0KIAor
Ly8gRmlsZVdyaXRlckNhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpbGVXcml0ZXJDYWxsYmFja3M6OkZpbGVXcml0
ZXJDYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBmaWxlV3JpdGVyLCBQYXNzUmVmUHRy
PEZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJv
ckNhbGxiYWNrKQorICAgICwgbV9maWxlV3JpdGVyKGZpbGVXcml0ZXIpCisgICAgLCBtX3N1Y2Nl
c3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCit7Cit9CisKK3ZvaWQgRmlsZVdyaXRlckNhbGxi
YWNrczo6ZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4gYXN5
bmNGaWxlV3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKQoreworICAgIG1fZmlsZVdyaXRlci0+aW5p
dGlhbGl6ZShhc3luY0ZpbGVXcml0ZXIsIGxlbmd0aCk7CisgICAgaWYgKG1fc3VjY2Vzc0NhbGxi
YWNrKQorICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQobV9maWxlV3JpdGVy
LnJlbGVhc2UoKS5nZXQoKSk7CisgICAgbV9zdWNjZXNzQ2FsbGJhY2suY2xlYXIoKTsKK30KKwog
Ly8gVm9pZENhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBWb2lkQ2FsbGJhY2tzOjpWb2lkQ2FsbGJhY2tzKFBh
c3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKSW5kZXg6IFdlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVt
Q2FsbGJhY2tzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxs
YmFja3MuaAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNh
bGxiYWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMiArNDAsMTUgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBBc3luY0ZpbGVXcml0ZXI7CiBjbGFzcyBET01GaWxlU3lzdGVt
OwogY2xhc3MgRXJyb3JDYWxsYmFjazsKIGNsYXNzIEVudHJpZXNDYWxsYmFjazsKIGNsYXNzIEVu
dHJ5QXJyYXk7CiBjbGFzcyBFbnRyeUNhbGxiYWNrOwogY2xhc3MgRmlsZVN5c3RlbUNhbGxiYWNr
OworY2xhc3MgRmlsZVdyaXRlcjsKK2NsYXNzIEZpbGVXcml0ZXJDYWxsYmFjazsKIGNsYXNzIE1l
dGFkYXRhQ2FsbGJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVm9p
ZENhbGxiYWNrOwpAQCAtNjcsNiArNzAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWREaXJlY3RvcnlFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgaXNEaXJlY3Rvcnkp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5RW50cmllcyhib29sIGhhc01vcmUp
OwogCisgICAgLy8gRm9yIGNyZWF0ZUZpbGVXcml0ZXIuCisgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0cjxBc3luY0ZpbGVXcml0ZXI+LCBsb25nIGxvbmcgbGVu
Z3RoKTsKKwogICAgIC8vIEZvciBFcnJvckNhbGxiYWNrLgogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGludCBjb2RlKTsKIApAQCAtMTIxLDYgKzEyNywxNiBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxNZXRhZGF0YUNhbGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKIH07CiAKK2NsYXNzIEZpbGVX
cml0ZXJDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgeworcHVibGlj
OgorICAgIEZpbGVXcml0ZXJDYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiwgUGFzc1Jl
ZlB0cjxGaWxlV3JpdGVyQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdy
aXRlcj4sIGxvbmcgbG9uZyBsZW5ndGgpOworCitwcml2YXRlOgorICAgIFJlZlB0cjxGaWxlV3Jp
dGVyPiBtX2ZpbGVXcml0ZXI7CisgICAgUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4gbV9zdWNj
ZXNzQ2FsbGJhY2s7Cit9OworCiBjbGFzcyBWb2lkQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0
ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKICAgICBWb2lkQ2FsbGJhY2tzKFBhc3NSZWZQdHI8
Vm9pZENhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vQXN5bmNGaWxlU3lzdGVtLmgJKHJldmlzaW9uIDY3NDkxKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9Bc3luY0ZpbGVTeXN0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFzeW5jRmlsZVN5c3RlbTsKIGNsYXNzIEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrczsKK2NsYXNzIEZpbGVXcml0ZXJDbGllbnQ7CiAKIC8vIFRoaXMgY2xh
c3MgcHJvdmlkZXMgYXN5bmMgaW50ZXJmYWNlIGZvciBwbGF0Zm9ybS1zcGVjaWZpYyBmaWxlIHN5
c3RlbSBpbXBsZW1lbnRhdGlvbi4gIE5vdGUgdGhhdCBhbGwgdGhlIG1ldGhvZHMgdGFrZSBwbGF0
Zm9ybSBwYXRocy4KIGNsYXNzIEFzeW5jRmlsZVN5c3RlbSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CkBAIC0xMDcsNiArMTA4LDExIEBAIHB1YmxpYzoKICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M6OmRpZEZhaWwoKSBpcyB3aGVuIHRoZXJlIGlzIGFuIGVycm9yLgogICAgIHZpcnR1YWwg
dm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKKyAgICAvLyBDcmVhdGVzIGFuIEFzeW5jRmlsZVdy
aXRlciBmb3IgYSBnaXZlbiBmaWxlIHBhdGguCisgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKCkgaXMgY2FsbGVkIHdoZW4gYW4gQXN5bmNGaWxlV3Jp
dGVyIGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVdyaXRlcihGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisKICAgICAvLyBDb252
ZXJ0cyBhIGdpdmVuIGFic29sdXRlIHZpcnR1YWwgcGF0aCB0byBhIHBsYXRmb3JtIHBhdGggdGhh
dCBzdGFydHMgd2l0aCB0aGUgcGxhdGZvcm0gcm9vdCBwYXRoIG9mIHRoaXMgZmlsZSBzeXN0ZW0u
CiAgICAgdmlydHVhbCBTdHJpbmcgdmlydHVhbFRvUGxhdGZvcm1QYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCkgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaAkocmV2aXNpb24gNjc0OTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFzeW5jRmlsZVN5c3RlbTsKK2NsYXNzIEFzeW5jRmls
ZVdyaXRlcjsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKIHB1YmxpYzoKQEAgLTU2LDYgKzU3LDkgQEAgcHVibGljOgogICAgIC8vIENhbGxl
ZCBhZnRlciBhIGNodW5rIG9mIGRpcmVjdG9yeSBlbnRyaWVzIGhhdmUgYmVlbiByZWFkIChpLmUu
IGluZGljYXRlcyBpdCdzIGdvb2QgdGltZSB0byBjYWxsIGJhY2sgdG8gdGhlIGFwcGxpY2F0aW9u
KS4gIElmIGhhc01vcmUgaXMgdHJ1ZSB0aGVyZSBjYW4gYmUgbW9yZSBjaHVua3MuCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSkgPSAwOwogCisg
ICAgLy8gQ2FsbGVkIHdoZW4gYW4gQXN5bmNGaWxlV3J0ZXIgaGFzIGJlZW4gY3JlYXRlZCBzdWNj
ZXNzZnVsbHkuCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZpbGVXcml0ZXIoUGFzc093blB0
cjxBc3luY0ZpbGVXcml0ZXI+IHdyaXRlciwgbG9uZyBsb25nIGxlbmd0aCkgPSAwOworCiAgICAg
Ly8gQ2FsbGVkIHdoZW4gdGhlcmUgd2FzIGFuIGVycm9yLgogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKGludCBjb2RlKSA9IDA7CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjc1MjkpCisr
KyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQg
QEAKKzIwMTAtMDktMTQgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQ2hyb21pdW0g
aW1wbGVtZW50YXRpb24gZm9yIEZpbGVXcml0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzYxCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyB0aGUg
aW1wbGVtZW50YXRpb24ncyBub3QgeWV0IGZhciBlbm91Z2ggYWxvbmcgZm9yIHRoYXQuCisKKyAg
ICAgICAgVGhpcyBtYWtlcyBhIGNoYWluIG9mIGNvbnRydWN0aW9uLWFuZC1saW5raW5nLXVwIGZv
ciB2YXJpb3VzIHNvcnRzIG9mCisgICAgICAgIEZpbGVXcml0ZXIgaW50ZXJmYWNlcyB0byBjYWxs
IHRocm91Z2ggdG8gQ2hyb21pdW0sIGFuZCBmb3IgdmFyaW91cworICAgICAgICBzb3J0cyBvZiBG
aWxlV3JpdGVyQ2xpZW50cyB0byBjYWxsIGJhY2ssIHdpdGggb2JqZWN0IG93bmVyc2hpcCBhbHdh
eXMKKyAgICAgICAgcG9pbnRpbmcgdG93YXJkcyB0aGUgQ2hyb21pdW0gQVBJLiAgVGhhdCBpcywg
dGhlIERPTSBvYmplY3Qgb3ducyBhbgorICAgICAgICBBc3luY0ZpbGVXcml0ZXIsIHdoaWNoIG93
bnMgaXRzIGltcGxlbWVudGF0aW9uIG9iamVjdCwgYW5kIHRoZSByZXZlcnNlCisgICAgICAgIChj
bGllbnQpIGRpcmVjdGlvbiBpcyByYXcgcG9pbnRlcnMuCisKKyAgICAgICAgRmlsZSBtZXRhZGF0
YSBpcyBsb29rZWQgdXAgYmVmb3JlIHRoZSBGaWxlV3JpdGVyIGlzIHJldHVybmVkLCBzbyB0aGF0
CisgICAgICAgIHdlIGtub3cgdGhlIGZpbGUgZXhpc3RzIGFuZCBjYW4gY2FjaGUgaXRzIGxlbmd0
aC4KKworICAgICAgICBUaGUgV2ViS2l0L2Nocm9taXVtIGludGVyZmFjZSBoZXJlIGlzIG1vZGVs
ZWQgYWZ0ZXIgdGhhdCBvZiB0aGUKKyAgICAgICAgRmlsZVN5c3RlbS4KKyAgICAgICAgCisgICAg
ICAgICogcHVibGljL1dlYkZpbGVJbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVJbmZv
OjpXZWJGaWxlSW5mbyk6CisgICAgICAgICogc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OkZpbGVXcml0
ZXJIZWxwZXJDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckhlbHBlckNh
bGxiYWNrczo6ZGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVySGVscGVy
Q2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRl
ckhlbHBlckNhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OmRpZEZhaWwpOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdyaXRlcik6
CisgICAgICAgICogc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmg6CisgICAgICAgICogc3Jj
L0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmls
ZVdyaXRlckNocm9taXVtOjpzZXRXZWJGaWxlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFz
eW5jRmlsZVdyaXRlckNocm9taXVtOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bTo6ZGlkRmFpbCk6CisgICAgICAgICogc3JjL0FzeW5jRmlsZVdyaXRl
ckNocm9taXVtLmg6CisgICAgICAgICogc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmg6
CisKIDIwMTAtMDktMTQgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRmlsZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVJbmZvLmgJKHJldmlzaW9uIDY3NDkxKQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGaWxlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCwxOSBAQCBzdHJ1
Y3QgV2ViRmlsZUluZm8gewogICAgIC8vIFRoZSB2YWx1ZSAwLjAgbWVhbnMgdGhhdCB0aGUgdGlt
ZSBpcyBub3Qgc2V0LgogICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOwogCi0gICAgV2ViRmls
ZUluZm8oKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSB7IH0KKyAgICAvLyBUaGUgbGVuZ3RoIG9m
IHRoZSBmaWxlIGluIGJ5dGVzLgorICAgIC8vIFRoZSB2YWx1ZSAtMSBtZWFucyB0aGF0IHRoZSBs
ZW5ndGggaXMgbm90IHNldC4KKyAgICBsb25nIGxvbmcgbGVuZ3RoOworCisgICAgZW51bSBFbnRy
eVR5cGUgeworICAgICAgICBUeXBlVW5rbm93biA9IDAsCisgICAgICAgIFR5cGVGaWxlLAorICAg
ICAgICBUeXBlRGlyZWN0b3J5CisgICAgfTsKKworICAgIEVudHJ5VHlwZSB0eXBlOworCisgICAg
V2ViRmlsZUluZm8oKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSwgbGVuZ3RoKC0xKSwgdHlwZShU
eXBlVW5rbm93bikgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCShyZXZpc2lv
biA2NzQ5MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMywxMSBAQAogI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oIgorI2lu
Y2x1ZGUgIldlYkZpbGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRl
ci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgogCkBA
IC05OSw2ICsxMDEsNjUgQEAgdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVhZERpcmVj
dAogICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShwYXRoLCBuZXcgV2ViS2l0OjpX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAorY2xhc3MgRmlsZVdy
aXRlckhlbHBlckNhbGxiYWNrcyA6IHB1YmxpYyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MgeworcHVibGljOgorICAgIEZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3MoRmlsZVdyaXRlckNs
aWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6V2ViRmlsZVN5c3RlbSog
d2ViRmlsZVN5c3RlbSwgUGFzc093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgICAgICwgbV9w
YXRoKHBhdGgpCisgICAgICAgICwgbV93ZWJGaWxlU3lzdGVtKHdlYkZpbGVTeXN0ZW0pCisgICAg
ICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkU3VjY2VlZCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0
YWRhdGEoY29uc3QgV2ViS2l0OjpXZWJGaWxlSW5mbyYgaW5mbykKKyAgICB7CisgICAgICAgIGlm
IChpbmZvLnR5cGUgIT0gV2ViS2l0OjpXZWJGaWxlSW5mbzo6VHlwZUZpbGUgfHwgaW5mby5sZW5n
dGggPCAwKQorICAgICAgICAgICAgZGlkRmFpbChXZWJLaXQ6OldlYkZpbGVFcnJvckludmFsaWRT
dGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgT3duUHRyPEFzeW5jRmlsZVdyaXRl
ckNocm9taXVtPiBhc3luY0ZpbGVXcml0ZXJDaHJvbWl1bSA9IGFkb3B0UHRyKG5ldyBBc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bShtX2NsaWVudCkpOworICAgICAgICAgICAgT3duUHRyPFdlYktpdDo6
V2ViRmlsZVdyaXRlcj4gd2ViRmlsZVdyaXRlciA9IGFkb3B0UHRyKG1fd2ViRmlsZVN5c3RlbS0+
Y3JlYXRlRmlsZVdyaXRlcihtX3BhdGgsIGFzeW5jRmlsZVdyaXRlckNocm9taXVtLmdldCgpKSk7
CisgICAgICAgICAgICBhc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS0+c2V0V2ViRmlsZVdyaXRlcih3
ZWJGaWxlV3JpdGVyLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBBU1NFUlQobV9jYWxsYmFja3Mp
OworICAgICAgICAgICAgbV9jYWxsYmFja3MtPmRpZENyZWF0ZUZpbGVXcml0ZXIoYXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW0ucmVsZWFzZSgpLCBpbmZvLmxlbmd0aCk7CisgICAgICAgICAgICBkZWxl
dGUgdGhpczsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGly
ZWN0b3J5KGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2ViRmlsZVN5c3RlbUVudHJ5
PiYgZW50cmllcywgYm9vbCBoYXNNb3JlKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
T3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiByb290UGF0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbChXZWJLaXQ6OldlYkZpbGVFcnJvciBlcnJvcikKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X2NhbGxiYWNrcyk7CisgICAgICAgIG1fY2FsbGJhY2tzLT5kaWRGYWlsKGVycm9yKTsKKyAgICAg
ICAgZGVsZXRlIHRoaXM7CisgICAgfQorCitwcml2YXRlOgorICAgIEZpbGVXcml0ZXJDbGllbnQq
IG1fY2xpZW50OworICAgIFN0cmluZyBtX3BhdGg7CisgICAgV2ViS2l0OjpXZWJGaWxlU3lzdGVt
KiBtX3dlYkZpbGVTeXN0ZW07CisgICAgT3duUHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gbV9jYWxsYmFja3M7Cit9OworCit2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVt
OjpjcmVhdGVXcml0ZXIoRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7Cisg
ICAgbV93ZWJGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGF0aCwgbmV3IEZpbGVXcml0ZXJIZWxw
ZXJDYWxsYmFja3MoY2xpZW50LCBwYXRoLCBtX3dlYkZpbGVTeXN0ZW0sIGNhbGxiYWNrcykpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaAkocmV2aXNpb24gNjc0OTEpCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhp
c3RzKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihGaWxlV3Jp
dGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKIAogcHJpdmF0ZToKICAgICBXZWJLaXQ6OldlYkZpbGVTeXN0
ZW0qIG1fd2ViRmlsZVN5c3RlbTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5
bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA2NzQ5MSkKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCwyNSArMzgsMjIgQEAKICNpbmNsdWRlICJXZWJGaWxlV3JpdGVyLmgiCiAjaW5jbHVkZSAiV2Vi
VVJMLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OkFzeW5jRmls
ZVdyaXRlckNocm9taXVtKEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkKICAgICA6IG1fY2xpZW50
KGNsaWVudCkKIHsKIH0KIAotdm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6c2V0V2ViRmls
ZVdyaXRlcihXZWJGaWxlV3JpdGVyKiB3cml0ZXIpCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9t
aXVtOjpzZXRXZWJGaWxlV3JpdGVyKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJGaWxlV3JpdGVyPiB3
cml0ZXIpCiB7Ci0gICAgQVNTRVJUKCFtX3dyaXRlcik7CiAgICAgbV93cml0ZXIgPSB3cml0ZXI7
CiB9CiAKIHZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OndyaXRlKGxvbmcgbG9uZyBwb3Np
dGlvbiwgQmxvYiogZGF0YSkKIHsKICAgICBBU1NFUlQobV93cml0ZXIpOwotICAgIG1fd3JpdGVy
LT53cml0ZShwb3NpdGlvbiwgV2ViVVJMKGRhdGEtPnVybCgpKSk7CisgICAgbV93cml0ZXItPndy
aXRlKHBvc2l0aW9uLCBXZWJLaXQ6OldlYlVSTChkYXRhLT51cmwoKSkpOwogfQogCiB2b2lkIEFz
eW5jRmlsZVdyaXRlckNocm9taXVtOjp0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKQpAQCAtODIs
NyArNzksNyBAQCB2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjpkaWRUcnVuY2F0CiAgICAg
bV9jbGllbnQtPmRpZFRydW5jYXRlKGxlbmd0aCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW06OmRpZEZhaWwoV2ViRmlsZUVycm9yIGVycm9yKQordm9pZCBBc3luY0ZpbGVXcml0
ZXJDaHJvbWl1bTo6ZGlkRmFpbChXZWJLaXQ6OldlYkZpbGVFcnJvciBlcnJvcikKIHsKICAgICBt
X2NsaWVudC0+ZGlkRmFpbChlcnJvcik7CiB9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Fz
eW5jRmlsZVdyaXRlckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oCShyZXZpc2lvbiA2NzQ5MSkKKysrIFdlYktpdC9j
aHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsMzYgKzM2LDM2IEBACiAjaW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCiAjaW5jbHVkZSAi
V2ViRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVdyaXRlckNsaWVudC5oIgorI2luY2x1
ZGUgPFdURi9QYXNzT3duUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEJsb2I7
Ci1jbGFzcyBGaWxlV3JpdGVyQ2xpZW50OworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJG
aWxlV3JpdGVyOwogfQogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgV2ViRmlsZVdyaXRlcjsKK2NsYXNzIEJsb2I7CitjbGFzcyBGaWxlV3JpdGVyQ2xp
ZW50OwogCi1jbGFzcyBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bSA6IHB1YmxpYyBXZWJDb3JlOjpB
c3luY0ZpbGVXcml0ZXIsIHB1YmxpYyBXZWJGaWxlV3JpdGVyQ2xpZW50IHsKK2NsYXNzIEFzeW5j
RmlsZVdyaXRlckNocm9taXVtIDogcHVibGljIEFzeW5jRmlsZVdyaXRlciwgcHVibGljIFdlYktp
dDo6V2ViRmlsZVdyaXRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgQXN5bmNGaWxlV3JpdGVyQ2hy
b21pdW0oV2ViQ29yZTo6RmlsZVdyaXRlckNsaWVudCogY2xpZW50KTsKLSAgICB+QXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW0oKTsKLQotICAgIHZvaWQgc2V0V2ViRmlsZVdyaXRlcihXZWJGaWxlV3Jp
dGVyKiB3cml0ZXIpOworICAgIEFzeW5jRmlsZVdyaXRlckNocm9taXVtKEZpbGVXcml0ZXJDbGll
bnQqIGNsaWVudCk7CisgICAgCisgICAgdm9pZCBzZXRXZWJGaWxlV3JpdGVyKFBhc3NPd25QdHI8
V2ViS2l0OjpXZWJGaWxlV3JpdGVyPiB3cml0ZXIpOwogCiAgICAgLy8gRmlsZVdyaXRlcgotICAg
IHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIFdlYkNvcmU6OkJsb2IqIGRh
dGEpOworICAgIHZpcnR1YWwgdm9pZCB3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIEJsb2IqIGRh
dGEpOwogICAgIHZpcnR1YWwgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKTsKICAgICB2
aXJ0dWFsIHZvaWQgYWJvcnQoKTsKIAogICAgIC8vIFdlYkZpbGVXcml0ZXJDbGllbnQKICAgICB2
aXJ0dWFsIHZvaWQgZGlkV3JpdGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkVHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoV2ViRmlsZUVycm9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChX
ZWJLaXQ6OldlYkZpbGVFcnJvcik7CiAKIHByaXZhdGU6Ci0gICAgT3duUHRyPFdlYkZpbGVXcml0
ZXI+IG1fd3JpdGVyOwotICAgIFdlYkNvcmU6OkZpbGVXcml0ZXJDbGllbnQqIG1fY2xpZW50Owor
ICAgIE93blB0cjxXZWJLaXQ6OldlYkZpbGVXcml0ZXI+IG1fd3JpdGVyOworICAgIEZpbGVXcml0
ZXJDbGllbnQqIG1fY2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67991</attachid>
            <date>2010-09-17 18:55:25 -0700</date>
            <delta_ts>2010-09-22 10:39:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44361-20100917185524.patch</filename>
            <type>text/plain</type>
            <size>20259</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Nzc2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDktMTcgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQ2hyb21pdW0gaW1wbGVtZW50YXRpb24gZm9yIEZpbGVXcml0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzYxCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzOyB0aGUgaW1wbGVtZW50YXRpb24ncyBub3QgeWV0IGZhciBlbm91Z2ggYWxvbmcgZm9y
IHRoYXQuCisKKyAgICAgICAgVGhpcyBtYWtlcyBhIGNoYWluIG9mIGNvbnRydWN0aW9uLWFuZC1s
aW5raW5nLXVwIGZvciB2YXJpb3VzIHNvcnRzIG9mCisgICAgICAgIEZpbGVXcml0ZXIgaW50ZXJm
YWNlcyB0byBjYWxsIHRocm91Z2ggdG8gQ2hyb21pdW0sIGFuZCBmb3IgdmFyaW91cworICAgICAg
ICBzb3J0cyBvZiBGaWxlV3JpdGVyQ2xpZW50cyB0byBjYWxsIGJhY2ssIHdpdGggb2JqZWN0IG93
bmVyc2hpcCBhbHdheXMKKyAgICAgICAgcG9pbnRpbmcgdG93YXJkcyB0aGUgQ2hyb21pdW0gQVBJ
LiAgVGhhdCBpcywgdGhlIERPTSBvYmplY3Qgb3ducyBhbgorICAgICAgICBBc3luY0ZpbGVXcml0
ZXIsIHdoaWNoIG93bnMgaXRzIGltcGxlbWVudGF0aW9uIG9iamVjdCwgYW5kIHRoZSByZXZlcnNl
CisgICAgICAgIChjbGllbnQpIGRpcmVjdGlvbiBpcyByYXcgcG9pbnRlcnMuCisKKyAgICAgICAg
RmlsZSBtZXRhZGF0YSBpcyBsb29rZWQgdXAgYmVmb3JlIHRoZSBGaWxlV3JpdGVyIGlzIHJldHVy
bmVkLCBzbyB0aGF0CisgICAgICAgIHdlIGtub3cgdGhlIGZpbGUgZXhpc3RzIGFuZCBjYW4gY2Fj
aGUgaXRzIGxlbmd0aC4KKworICAgICAgICBUaGUgV2ViQ29yZSBwYXJ0IG9mIHRoaXMgaXMgc2lt
cGxlIGFuZCBnZW5lcmljIGVub3VnaCB0byBoYW5kbGUKKyAgICAgICAgQ2hyb21pdW0sIHNvIGl0
IHNob3VsZCBiZSBlYXN5IGZvciBtZSB0byBwdXQgaW4gYSBXZWJDb3JlLW9ubHkKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gbmV4dC4KKyAgICAgICAgCisgICAgICAgICogZmlsZWFwaS9Bc3luY0Zp
bGVXcml0ZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKToKKyAgICAgICAgKiBmaWxl
YXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFj
a3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZENy
ZWF0ZUZpbGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckNhbGxiYWNrczo6
RmlsZVdyaXRlckNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVyQ2FsbGJh
Y2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaDoKKwogMjAxMC0wOS0xNyAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGZvciBw
bGF0Zm9ybXMgdGhhdCBjb21waWxlIFRvdWNoLgpJbmRleDogV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVdyaXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVXcml0
ZXIuaAkocmV2aXNpb24gNjc3NjkpCisrKyBXZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlV3JpdGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDYgQEAgY2xhc3MgQXN5bmNGaWxlV3JpdGVy
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Bc3luY0ZpbGVXcml0ZXIoKSB7fQogCi0gICAgdmly
dHVhbCB2b2lkIHNldEZpbGVXcml0ZXJDbGllbnQoRmlsZVdyaXRlckNsaWVudCogY2xpZW50KSA9
IDA7Ci0KICAgICB2aXJ0dWFsIHZvaWQgd3JpdGUobG9uZyBsb25nIHBvc2l0aW9uLCBCbG9iKiBk
YXRhKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CkluZGV4OiBXZWJDb3JlL2ZpbGVhcGkv
RE9NRmlsZVN5c3RlbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVT
eXN0ZW0uY3BwCShyZXZpc2lvbiA2Nzc2OSkKKysrIFdlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lz
dGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsMTEgQEAKICNpbmNsdWRlICJFbnRy
eS5oIgogI2luY2x1ZGUgIkVudHJ5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiRmlsZUVudHJ5LmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIkZpbGVXcml0ZXIuaCIKKyNp
bmNsdWRlICJGaWxlV3JpdGVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlZvaWRD
YWxsYmFjay5oIgpAQCAtMTk5LDYgKzIwMiwxNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06OmdldERp
cmVjdG9yeShjb25zdCBFCiAgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlz
dHMocGxhdGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKIH0KIAordm9pZCBET01GaWxl
U3lzdGVtOjpjcmVhdGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5KiBmaWxlLCBQYXNzUmVmUHRyPEZp
bGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2spCit7CisgICAgQVNTRVJUKGZpbGUpOworCisgICAgU3RyaW5nIHBs
YXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmls
ZS0+ZnVsbFBhdGgoKSk7CisKKyAgICBSZWZQdHI8RmlsZVdyaXRlcj4gZmlsZVdyaXRlciA9IEZp
bGVXcml0ZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIE93blB0cjxG
aWxlV3JpdGVyQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBhZG9wdFB0cihuZXcgRmlsZVdyaXRlckNh
bGxiYWNrcyhmaWxlV3JpdGVyLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAg
ICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCksIHBsYXRm
b3JtUGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7Cit9CisKIHZvaWQgRE9NRmlsZVN5c3RlbTo6
cmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaykKIHsKICAgICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpOwpJbmRl
eDogV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5oCShyZXZpc2lvbiA2Nzc2OSkKKysrIFdlYkNvcmUvZmls
ZWFwaS9ET01GaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgY2xh
c3MgRW50cnk7CiBjbGFzcyBFbnRyeUNhbGxiYWNrOwogY2xhc3MgRW50cmllc0NhbGxiYWNrOwog
Y2xhc3MgRXJyb3JDYWxsYmFjazsKK2NsYXNzIEZpbGVFbnRyeTsKK2NsYXNzIEZpbGVXcml0ZXJD
YWxsYmFjazsKIGNsYXNzIE1ldGFkYXRhQ2FsbGJhY2s7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAK
QEAgLTc3LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RmlsZShjb25zdCBFbnRyeSog
YmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiwgUGFzc1JlZlB0cjxF
bnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAgICAgdm9pZCBnZXRE
aXJlY3RvcnkoY29uc3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0
cjxGbGFncz4sIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4pOwogICAgIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NS
ZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAg
dm9pZCBjcmVhdGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5KiBmaWxlLCBQYXNzUmVmUHRyPEZpbGVX
cml0ZXJDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwogCiAgICAgLy8gU2No
ZWR1bGUgYSBjYWxsYmFjay4gVGhpcyBzaG91bGQgbm90IGNyb3NzIHRocmVhZHMgKHNob3VsZCBi
ZSBjYWxsZWQgb24gdGhlIHNhbWUgY29udGV4dCB0aHJlYWQpLgogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDQiwgdHlwZW5hbWUgQ0JBcmc+CkluZGV4OiBXZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3Rl
bUNhbGxiYWNrcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuY3BwCShyZXZpc2lvbiA2Nzc2OSkKKysrIFdlYkNvcmUvZmlsZWFwaS9GaWxlU3lz
dGVtQ2FsbGJhY2tzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1
ZGUgIkFzeW5jRmlsZVdyaXRlci5oIgogI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVk
ZSAiRE9NRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCkBAIC00NSw2
ICs0Niw4IEBACiAjaW5jbHVkZSAiRmlsZUVudHJ5LmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgi
CiAjaW5jbHVkZSAiRmlsZVN5c3RlbUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZVdyaXRlci5o
IgorI2luY2x1ZGUgIkZpbGVXcml0ZXJDYWxsYmFjay5oIgogI2luY2x1ZGUgIk1ldGFkYXRhLmgi
CiAjaW5jbHVkZSAiTWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKQEAgLTkxLDYgKzk0LDEyIEBAIHZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jh
c2U6OmRpZFJlYWREaXIKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAordm9pZCBGaWxl
U3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5j
RmlsZVdyaXRlcj4sIGxvbmcgbG9uZykKK3sKKyAgICAvLyBFYWNoIHN1YmNsYXNzIG11c3QgaW1w
bGVtZW50IGFuIGFwcHJvcHJpYXRlIG9uZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwogdm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkRmFpbChpbnQgY29kZSkKIHsKICAg
ICBpZiAobV9lcnJvckNhbGxiYWNrKSB7CkBAIC0xODcsNiArMTk2LDIzIEBAIHZvaWQgTWV0YWRh
dGFDYWxsYmFja3M6OmRpZFJlYWRNZXRhZGF0YSgKICAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVh
cigpOwogfQogCisvLyBGaWxlV3JpdGVyQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlsZVdyaXRlckNhbGxiYWNr
czo6RmlsZVdyaXRlckNhbGxiYWNrcyhQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGZpbGVXcml0ZXIs
IFBhc3NSZWZQdHI8RmlsZVdyaXRlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKKyAgICA6IEZpbGVTeXN0ZW1DYWxsYmFj
a3NCYXNlKGVycm9yQ2FsbGJhY2spCisgICAgLCBtX2ZpbGVXcml0ZXIoZmlsZVdyaXRlcikKKyAg
ICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKK3sKK30KKwordm9pZCBGaWxl
V3JpdGVyQ2FsbGJhY2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5bmNGaWxl
V3JpdGVyPiBhc3luY0ZpbGVXcml0ZXIsIGxvbmcgbG9uZyBsZW5ndGgpCit7CisgICAgbV9maWxl
V3JpdGVyLT5pbml0aWFsaXplKGFzeW5jRmlsZVdyaXRlciwgbGVuZ3RoKTsKKyAgICBpZiAobV9z
dWNjZXNzQ2FsbGJhY2spCisgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudCht
X2ZpbGVXcml0ZXIucmVsZWFzZSgpLmdldCgpKTsKKyAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVh
cigpOworfQorCiAvLyBWb2lkQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFZvaWRDYWxsYmFja3M6OlZvaWRD
YWxsYmFja3MoUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQpJbmRleDogV2ViQ29yZS9maWxlYXBp
L0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvRmls
ZVN5c3RlbUNhbGxiYWNrcy5oCShyZXZpc2lvbiA2Nzc2OSkKKysrIFdlYkNvcmUvZmlsZWFwaS9G
aWxlU3lzdGVtQ2FsbGJhY2tzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEyICs0MCwxNSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFzeW5jRmlsZVdyaXRlcjsKIGNsYXNzIERP
TUZpbGVTeXN0ZW07CiBjbGFzcyBFcnJvckNhbGxiYWNrOwogY2xhc3MgRW50cmllc0NhbGxiYWNr
OwogY2xhc3MgRW50cnlBcnJheTsKIGNsYXNzIEVudHJ5Q2FsbGJhY2s7CiBjbGFzcyBGaWxlU3lz
dGVtQ2FsbGJhY2s7CitjbGFzcyBGaWxlV3JpdGVyOworY2xhc3MgRmlsZVdyaXRlckNhbGxiYWNr
OwogY2xhc3MgTWV0YWRhdGFDYWxsYmFjazsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CkBAIC02Nyw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBp
c0RpcmVjdG9yeSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJv
b2wgaGFzTW9yZSk7CiAKKyAgICAvLyBGb3IgY3JlYXRlRmlsZVdyaXRlci4KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4sIGxv
bmcgbG9uZyBsZW5ndGgpOworCiAgICAgLy8gRm9yIEVycm9yQ2FsbGJhY2suCiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoaW50IGNvZGUpOwogCkBAIC0xMjEsNiArMTI3LDE2IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPE1ldGFkYXRhQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwogfTsKIAor
Y2xhc3MgRmlsZVdyaXRlckNhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFz
ZSB7CitwdWJsaWM6CisgICAgRmlsZVdyaXRlckNhbGxiYWNrcyhQYXNzUmVmUHRyPEZpbGVXcml0
ZXI+LCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4pOworICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8
QXN5bmNGaWxlV3JpdGVyPiwgbG9uZyBsb25nIGxlbmd0aCk7CisKK3ByaXZhdGU6CisgICAgUmVm
UHRyPEZpbGVXcml0ZXI+IG1fZmlsZVdyaXRlcjsKKyAgICBSZWZQdHI8RmlsZVdyaXRlckNhbGxi
YWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKK307CisKIGNsYXNzIFZvaWRDYWxsYmFja3MgOiBwdWJs
aWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewogcHVibGljOgogICAgIFZvaWRDYWxsYmFja3Mo
UGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAkocmV2aXNpb24gNjc3NjkpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtOwogY2xh
c3MgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOworY2xhc3MgRmlsZVdyaXRlckNsaWVudDsKIAog
Ly8gVGhpcyBjbGFzcyBwcm92aWRlcyBhc3luYyBpbnRlcmZhY2UgZm9yIHBsYXRmb3JtLXNwZWNp
ZmljIGZpbGUgc3lzdGVtIGltcGxlbWVudGF0aW9uLiAgTm90ZSB0aGF0IGFsbCB0aGUgbWV0aG9k
cyB0YWtlIHBsYXRmb3JtIHBhdGhzLgogY2xhc3MgQXN5bmNGaWxlU3lzdGVtIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKQEAgLTEwNyw2ICsxMDgsMTEgQEAgcHVibGljOgogICAgIC8vIEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCiAg
ICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAorICAgIC8vIENyZWF0ZXMgYW4g
QXN5bmNGaWxlV3JpdGVyIGZvciBhIGdpdmVuIGZpbGUgcGF0aC4KKyAgICAvLyBBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M6OmRpZENyZWF0ZUZpbGVXcml0ZXIoKSBpcyBjYWxsZWQgd2hlbiBhbiBB
c3luY0ZpbGVXcml0ZXIgaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKKwog
ICAgIC8vIENvbnZlcnRzIGEgZ2l2ZW4gYWJzb2x1dGUgdmlydHVhbCBwYXRoIHRvIGEgcGxhdGZv
cm0gcGF0aCB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBwbGF0Zm9ybSByb290IHBhdGggb2YgdGhpcyBm
aWxlIHN5c3RlbS4KICAgICB2aXJ0dWFsIFN0cmluZyB2aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoY29u
c3QgU3RyaW5nJiBwYXRoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0FzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcy5oCShyZXZpc2lvbiA2Nzc2OSkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtOworY2xh
c3MgQXN5bmNGaWxlV3JpdGVyOwogCiBjbGFzcyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MgOiBw
dWJsaWMgTm9uY29weWFibGUgewogcHVibGljOgpAQCAtNTYsNiArNTcsOSBAQCBwdWJsaWM6CiAg
ICAgLy8gQ2FsbGVkIGFmdGVyIGEgY2h1bmsgb2YgZGlyZWN0b3J5IGVudHJpZXMgaGF2ZSBiZWVu
IHJlYWQgKGkuZS4gaW5kaWNhdGVzIGl0J3MgZ29vZCB0aW1lIHRvIGNhbGwgYmFjayB0byB0aGUg
YXBwbGljYXRpb24pLiAgSWYgaGFzTW9yZSBpcyB0cnVlIHRoZXJlIGNhbiBiZSBtb3JlIGNodW5r
cy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoYm9vbCBoYXNNb3Jl
KSA9IDA7CiAKKyAgICAvLyBDYWxsZWQgd2hlbiBhbiBBc3luY0ZpbGVXcnRlciBoYXMgYmVlbiBj
cmVhdGVkIHN1Y2Nlc3NmdWxseS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRl
cihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4gd3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKSA9
IDA7CisKICAgICAvLyBDYWxsZWQgd2hlbiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoaW50IGNvZGUpID0gMDsKIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lv
biA2Nzc2OSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw0NCBAQAorMjAxMC0wOS0xNyAgRXJpYyBVaHJoYW5lICA8ZXJpY3VAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBDaHJvbWl1bSBpbXBsZW1lbnRhdGlvbiBmb3IgRmlsZVdyaXRlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQzNjEKKworICAgICAgICBObyBuZXcg
dGVzdHM7IHRoZSBpbXBsZW1lbnRhdGlvbidzIG5vdCB5ZXQgZmFyIGVub3VnaCBhbG9uZyBmb3Ig
dGhhdC4KKworICAgICAgICBUaGlzIG1ha2VzIGEgY2hhaW4gb2YgY29udHJ1Y3Rpb24tYW5kLWxp
bmtpbmctdXAgZm9yIHZhcmlvdXMgc29ydHMgb2YKKyAgICAgICAgRmlsZVdyaXRlciBpbnRlcmZh
Y2VzIHRvIGNhbGwgdGhyb3VnaCB0byBDaHJvbWl1bSwgYW5kIGZvciB2YXJpb3VzCisgICAgICAg
IHNvcnRzIG9mIEZpbGVXcml0ZXJDbGllbnRzIHRvIGNhbGwgYmFjaywgd2l0aCBvYmplY3Qgb3du
ZXJzaGlwIGFsd2F5cworICAgICAgICBwb2ludGluZyB0b3dhcmRzIHRoZSBDaHJvbWl1bSBBUEku
ICBUaGF0IGlzLCB0aGUgRE9NIG9iamVjdCBvd25zIGFuCisgICAgICAgIEFzeW5jRmlsZVdyaXRl
ciwgd2hpY2ggb3ducyBpdHMgaW1wbGVtZW50YXRpb24gb2JqZWN0LCBhbmQgdGhlIHJldmVyc2UK
KyAgICAgICAgKGNsaWVudCkgZGlyZWN0aW9uIGlzIHJhdyBwb2ludGVycy4KKworICAgICAgICBG
aWxlIG1ldGFkYXRhIGlzIGxvb2tlZCB1cCBiZWZvcmUgdGhlIEZpbGVXcml0ZXIgaXMgcmV0dXJu
ZWQsIHNvIHRoYXQKKyAgICAgICAgd2Uga25vdyB0aGUgZmlsZSBleGlzdHMgYW5kIGNhbiBjYWNo
ZSBpdHMgbGVuZ3RoLgorCisgICAgICAgIFRoZSBXZWJLaXQvY2hyb21pdW0gaW50ZXJmYWNlIGhl
cmUgaXMgbW9kZWxlZCBhZnRlciB0aGF0IG9mIHRoZQorICAgICAgICBGaWxlU3lzdGVtLgorICAg
ICAgICAKKyAgICAgICAgKiBwdWJsaWMvV2ViRmlsZUluZm8uaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRmlsZUluZm86OldlYkZpbGVJbmZvKToKKyAgICAgICAgKiBzcmMvQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckhlbHBlckNhbGxiYWNr
czo6RmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3Jp
dGVySGVscGVyQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVX
cml0ZXJIZWxwZXJDYWxsYmFja3M6OmRpZFJlYWRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzOjpkaWRSZWFkRGlyZWN0b3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OmRpZENyZWF0ZUZp
bGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckhlbHBlckNhbGxiYWNrczo6
ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3Jl
YXRlV3JpdGVyKToKKyAgICAgICAgKiBzcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaDoKKyAg
ICAgICAgKiBzcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnNldFdlYkZpbGVXcml0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OndyaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFzeW5jRmlsZVdyaXRlckNocm9taXVtOjpkaWRGYWlsKToKKyAgICAgICAgKiBzcmMvQXN5
bmNGaWxlV3JpdGVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBzcmMvV2ViRmlsZVN5c3RlbUNhbGxi
YWNrc0ltcGwuaDoKKwogMjAxMC0wOS0xNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRmlsZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkZpbGVJbmZvLmgJKHJldmlzaW9uIDY3NzY5KQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJGaWxlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCwxOSBAQCBzdHJ1
Y3QgV2ViRmlsZUluZm8gewogICAgIC8vIFRoZSB2YWx1ZSAwLjAgbWVhbnMgdGhhdCB0aGUgdGlt
ZSBpcyBub3Qgc2V0LgogICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOwogCi0gICAgV2ViRmls
ZUluZm8oKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSB7IH0KKyAgICAvLyBUaGUgbGVuZ3RoIG9m
IHRoZSBmaWxlIGluIGJ5dGVzLgorICAgIC8vIFRoZSB2YWx1ZSAtMSBtZWFucyB0aGF0IHRoZSBs
ZW5ndGggaXMgbm90IHNldC4KKyAgICBsb25nIGxvbmcgbGVuZ3RoOworCisgICAgZW51bSBFbnRy
eVR5cGUgeworICAgICAgICBUeXBlVW5rbm93biA9IDAsCisgICAgICAgIFR5cGVGaWxlLAorICAg
ICAgICBUeXBlRGlyZWN0b3J5CisgICAgfTsKKworICAgIEVudHJ5VHlwZSB0eXBlOworCisgICAg
V2ViRmlsZUluZm8oKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSwgbGVuZ3RoKC0xKSwgdHlwZShU
eXBlVW5rbm93bikgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCShyZXZpc2lv
biA2Nzc2OSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMywxMSBAQAogI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oIgorI2lu
Y2x1ZGUgIldlYkZpbGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmgiCisjaW5jbHVkZSAiV2ViRmlsZVdyaXRl
ci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgogCkBA
IC05OSw2ICsxMDEsNjUgQEAgdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVhZERpcmVj
dAogICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShwYXRoLCBuZXcgV2ViS2l0OjpX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAorY2xhc3MgRmlsZVdy
aXRlckhlbHBlckNhbGxiYWNrcyA6IHB1YmxpYyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MgeworcHVibGljOgorICAgIEZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3MoRmlsZVdyaXRlckNs
aWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6V2ViRmlsZVN5c3RlbSog
d2ViRmlsZVN5c3RlbSwgUGFzc093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgICAgICwgbV9w
YXRoKHBhdGgpCisgICAgICAgICwgbV93ZWJGaWxlU3lzdGVtKHdlYkZpbGVTeXN0ZW0pCisgICAg
ICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkU3VjY2VlZCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0
YWRhdGEoY29uc3QgV2ViS2l0OjpXZWJGaWxlSW5mbyYgaW5mbykKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX2NhbGxiYWNrcyk7CisgICAgICAgIGlmIChpbmZvLnR5cGUgIT0gV2ViS2l0OjpXZWJG
aWxlSW5mbzo6VHlwZUZpbGUgfHwgaW5mby5sZW5ndGggPCAwKQorICAgICAgICAgICAgbV9jYWxs
YmFja3MtPmRpZEZhaWwoZXJyb3IpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIE93blB0
cjxBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bT4gYXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gPSBhZG9w
dFB0cihuZXcgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0obV9jbGllbnQpKTsKKyAgICAgICAgICAg
IE93blB0cjxXZWJLaXQ6OldlYkZpbGVXcml0ZXI+IHdlYkZpbGVXcml0ZXIgPSBhZG9wdFB0ciht
X3dlYkZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGVXcml0ZXIobV9wYXRoLCBhc3luY0ZpbGVXcml0ZXJD
aHJvbWl1bS5nZXQoKSkpOworICAgICAgICAgICAgYXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0tPnNl
dFdlYkZpbGVXcml0ZXIod2ViRmlsZVdyaXRlci5yZWxlYXNlKCkpOworICAgICAgICAgICAgbV9j
YWxsYmFja3MtPmRpZENyZWF0ZUZpbGVXcml0ZXIoYXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0ucmVs
ZWFzZSgpLCBpbmZvLmxlbmd0aCk7CisgICAgICAgIH0KKyAgICAgICAgZGVsZXRlIHRoaXM7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnkoY29uc3QgV2ViS2l0OjpX
ZWJWZWN0b3I8V2ViS2l0OjpXZWJGaWxlU3lzdGVtRW50cnk+JiBlbnRyaWVzLCBib29sIGhhc01v
cmUpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgZGVsZXRl
IHRoaXM7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHJvb3RQYXRo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGRlbGV0ZSB0
aGlzOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViRmlsZUVy
cm9yIGVycm9yKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY2FsbGJhY2tzKTsKKyAgICAgICAg
bV9jYWxsYmFja3MtPmRpZEZhaWwoZXJyb3IpOworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgRmlsZVdyaXRlckNsaWVudCogbV9jbGllbnQ7CisgICAgU3RyaW5n
IG1fcGF0aDsKKyAgICBXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIG1fd2ViRmlsZVN5c3RlbTsKKyAg
ICBPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsK
K307CisKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdyaXRlcihGaWxlV3Jp
dGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3sKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJl
YWRNZXRhZGF0YShwYXRoLCBuZXcgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhjbGllbnQsIHBh
dGgsIG1fd2ViRmlsZVN5c3RlbSwgY2FsbGJhY2tzKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3Rl
bUNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bS5oCShyZXZpc2lvbiA2Nzc2OSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwog
CiBwcml2YXRlOgogICAgIFdlYktpdDo6V2ViRmlsZVN5c3RlbSogbV93ZWJGaWxlU3lzdGVtOwpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5j
cHAJKHJldmlzaW9uIDY3NzY5KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0
ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDI1ICszOCwyNiBAQAogI2luY2x1
ZGUgIldlYkZpbGVXcml0ZXIuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKIAotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oRmlsZVdy
aXRlckNsaWVudCogY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogewogfQogCi12b2lk
IEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjpzZXRXZWJGaWxlV3JpdGVyKFdlYkZpbGVXcml0ZXIq
IHdyaXRlcikKK0FzeW5jRmlsZVdyaXRlckNocm9taXVtOjp+QXN5bmNGaWxlV3JpdGVyQ2hyb21p
dW0oKQoreworfQorCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjpzZXRXZWJGaWxlV3Jp
dGVyKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJGaWxlV3JpdGVyPiB3cml0ZXIpCiB7Ci0gICAgQVNT
RVJUKCFtX3dyaXRlcik7CiAgICAgbV93cml0ZXIgPSB3cml0ZXI7CiB9CiAKIHZvaWQgQXN5bmNG
aWxlV3JpdGVyQ2hyb21pdW06OndyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogZGF0YSkK
IHsKICAgICBBU1NFUlQobV93cml0ZXIpOwotICAgIG1fd3JpdGVyLT53cml0ZShwb3NpdGlvbiwg
V2ViVVJMKGRhdGEtPnVybCgpKSk7CisgICAgbV93cml0ZXItPndyaXRlKHBvc2l0aW9uLCBXZWJL
aXQ6OldlYlVSTChkYXRhLT51cmwoKSkpOwogfQogCiB2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9t
aXVtOjp0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKQpAQCAtODIsNyArODMsNyBAQCB2b2lkIEFz
eW5jRmlsZVdyaXRlckNocm9taXVtOjpkaWRUcnVuY2F0CiAgICAgbV9jbGllbnQtPmRpZFRydW5j
YXRlKGxlbmd0aCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OmRpZEZhaWwo
V2ViRmlsZUVycm9yIGVycm9yKQordm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6ZGlkRmFp
bChXZWJLaXQ6OldlYkZpbGVFcnJvciBlcnJvcikKIHsKICAgICBtX2NsaWVudC0+ZGlkRmFpbChl
cnJvcik7CiB9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9t
aXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJD
aHJvbWl1bS5oCShyZXZpc2lvbiA2Nzc2OSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNG
aWxlV3JpdGVyQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMzUgKzM2LDM3IEBACiAj
aW5jbHVkZSAiQXN5bmNGaWxlV3JpdGVyLmgiCiAjaW5jbHVkZSAiV2ViRmlsZUVycm9yLmgiCiAj
aW5jbHVkZSAiV2ViRmlsZVdyaXRlckNsaWVudC5oIgorI2luY2x1ZGUgPFdURi9QYXNzT3duUHRy
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEJsb2I7Ci1jbGFzcyBGaWxlV3JpdGVy
Q2xpZW50OworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJGaWxlV3JpdGVyOwogfQogCi1u
YW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViRmlsZVdy
aXRlcjsKK2NsYXNzIEJsb2I7CitjbGFzcyBGaWxlV3JpdGVyQ2xpZW50OwogCi1jbGFzcyBBc3lu
Y0ZpbGVXcml0ZXJDaHJvbWl1bSA6IHB1YmxpYyBXZWJDb3JlOjpBc3luY0ZpbGVXcml0ZXIsIHB1
YmxpYyBXZWJGaWxlV3JpdGVyQ2xpZW50IHsKK2NsYXNzIEFzeW5jRmlsZVdyaXRlckNocm9taXVt
IDogcHVibGljIEFzeW5jRmlsZVdyaXRlciwgcHVibGljIFdlYktpdDo6V2ViRmlsZVdyaXRlckNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oV2ViQ29yZTo6Rmls
ZVdyaXRlckNsaWVudCogY2xpZW50KTsKLQotICAgIHZvaWQgc2V0V2ViRmlsZVdyaXRlcihXZWJG
aWxlV3JpdGVyKiB3cml0ZXIpOworICAgIEFzeW5jRmlsZVdyaXRlckNocm9taXVtKEZpbGVXcml0
ZXJDbGllbnQqIGNsaWVudCk7CisgICAgfkFzeW5jRmlsZVdyaXRlckNocm9taXVtKCk7CisgICAg
CisgICAgdm9pZCBzZXRXZWJGaWxlV3JpdGVyKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJGaWxlV3Jp
dGVyPiB3cml0ZXIpOwogCiAgICAgLy8gRmlsZVdyaXRlcgotICAgIHZpcnR1YWwgdm9pZCB3cml0
ZShsb25nIGxvbmcgcG9zaXRpb24sIFdlYkNvcmU6OkJsb2IqIGRhdGEpOworICAgIHZpcnR1YWwg
dm9pZCB3cml0ZShsb25nIGxvbmcgcG9zaXRpb24sIEJsb2IqIGRhdGEpOwogICAgIHZpcnR1YWwg
dm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQo
KTsKIAogICAgIC8vIFdlYkZpbGVXcml0ZXJDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3Jp
dGUobG9uZyBsb25nIGJ5dGVzLCBib29sIGNvbXBsZXRlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
VHJ1bmNhdGUobG9uZyBsb25nIGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2Vi
RmlsZUVycm9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OldlYkZpbGVFcnJv
cik7CiAKIHByaXZhdGU6Ci0gICAgT3duUHRyPFdlYkZpbGVXcml0ZXI+IG1fd3JpdGVyOwotICAg
IFdlYkNvcmU6OkZpbGVXcml0ZXJDbGllbnQqIG1fY2xpZW50OworICAgIE93blB0cjxXZWJLaXQ6
OldlYkZpbGVXcml0ZXI+IG1fd3JpdGVyOworICAgIEZpbGVXcml0ZXJDbGllbnQqIG1fY2xpZW50
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68393</attachid>
            <date>2010-09-22 10:39:42 -0700</date>
            <delta_ts>2010-09-22 11:33:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44361-20100922103941.patch</filename>
            <type>text/plain</type>
            <size>20252</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODA1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDktMjIgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQ2hyb21pdW0gaW1wbGVtZW50YXRpb24gZm9yIEZpbGVXcml0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzYxCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzOyB0aGUgaW1wbGVtZW50YXRpb24ncyBub3QgeWV0IGZhciBlbm91Z2ggYWxvbmcgZm9y
IHRoYXQuCisKKyAgICAgICAgVGhpcyBtYWtlcyBhIGNoYWluIG9mIGNvbnRydWN0aW9uLWFuZC1s
aW5raW5nLXVwIGZvciB2YXJpb3VzIHNvcnRzIG9mCisgICAgICAgIEZpbGVXcml0ZXIgaW50ZXJm
YWNlcyB0byBjYWxsIHRocm91Z2ggdG8gQ2hyb21pdW0sIGFuZCBmb3IgdmFyaW91cworICAgICAg
ICBzb3J0cyBvZiBGaWxlV3JpdGVyQ2xpZW50cyB0byBjYWxsIGJhY2ssIHdpdGggb2JqZWN0IG93
bmVyc2hpcCBhbHdheXMKKyAgICAgICAgcG9pbnRpbmcgdG93YXJkcyB0aGUgQ2hyb21pdW0gQVBJ
LiAgVGhhdCBpcywgdGhlIERPTSBvYmplY3Qgb3ducyBhbgorICAgICAgICBBc3luY0ZpbGVXcml0
ZXIsIHdoaWNoIG93bnMgaXRzIGltcGxlbWVudGF0aW9uIG9iamVjdCwgYW5kIHRoZSByZXZlcnNl
CisgICAgICAgIChjbGllbnQpIGRpcmVjdGlvbiBpcyByYXcgcG9pbnRlcnMuCisKKyAgICAgICAg
RmlsZSBtZXRhZGF0YSBpcyBsb29rZWQgdXAgYmVmb3JlIHRoZSBGaWxlV3JpdGVyIGlzIHJldHVy
bmVkLCBzbyB0aGF0CisgICAgICAgIHdlIGtub3cgdGhlIGZpbGUgZXhpc3RzIGFuZCBjYW4gY2Fj
aGUgaXRzIGxlbmd0aC4KKworICAgICAgICBUaGUgV2ViQ29yZSBwYXJ0IG9mIHRoaXMgaXMgc2lt
cGxlIGFuZCBnZW5lcmljIGVub3VnaCB0byBoYW5kbGUKKyAgICAgICAgQ2hyb21pdW0sIHNvIGl0
IHNob3VsZCBiZSBlYXN5IGZvciBtZSB0byBwdXQgaW4gYSBXZWJDb3JlLW9ubHkKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gbmV4dC4KKyAgICAgICAgCisgICAgICAgICogZmlsZWFwaS9Bc3luY0Zp
bGVXcml0ZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKToKKyAgICAgICAgKiBmaWxl
YXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFj
a3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZENy
ZWF0ZUZpbGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckNhbGxiYWNrczo6
RmlsZVdyaXRlckNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVyQ2FsbGJh
Y2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaDoKKwogMjAxMC0wOS0yMiAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVdyaXRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXIuaAkocmV2aXNp
b24gNjgwNTApCisrKyBXZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlV3JpdGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDggKzQ1LDYgQEAgY2xhc3MgQXN5bmNGaWxlV3JpdGVyIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Bc3luY0ZpbGVXcml0ZXIoKSB7fQogCi0gICAgdmlydHVhbCB2b2lkIHNl
dEZpbGVXcml0ZXJDbGllbnQoRmlsZVdyaXRlckNsaWVudCogY2xpZW50KSA9IDA7Ci0KICAgICB2
aXJ0dWFsIHZvaWQgd3JpdGUobG9uZyBsb25nIHBvc2l0aW9uLCBCbG9iKiBkYXRhKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYWJvcnQoKSA9IDA7CkluZGV4OiBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3Rl
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCShy
ZXZpc2lvbiA2ODA1MCkKKysrIFdlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsOCArNDAsMTEgQEAKICNpbmNsdWRlICJFbnRyeS5oIgogI2luY2x1
ZGUgIkVudHJ5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiRmlsZUVudHJ5LmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIkZpbGVXcml0ZXIuaCIKKyNpbmNsdWRlICJGaWxl
V3JpdGVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgpA
QCAtMTk5LDYgKzIwMiwxNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06OmdldERpcmVjdG9yeShjb25z
dCBFCiAgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMocGxhdGZvcm1Q
YXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKIH0KIAordm9pZCBET01GaWxlU3lzdGVtOjpjcmVh
dGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5KiBmaWxlLCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCit7CisgICAgQVNTRVJUKGZpbGUpOworCisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9
IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZS0+ZnVsbFBhdGgo
KSk7CisKKyAgICBSZWZQdHI8RmlsZVdyaXRlcj4gZmlsZVdyaXRlciA9IEZpbGVXcml0ZXI6OmNy
ZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIE93blB0cjxGaWxlV3JpdGVyQ2Fs
bGJhY2tzPiBjYWxsYmFja3MgPSBhZG9wdFB0cihuZXcgRmlsZVdyaXRlckNhbGxiYWNrcyhmaWxl
V3JpdGVyLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICBtX2FzeW5jRmls
ZVN5c3RlbS0+Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCksIHBsYXRmb3JtUGF0aCwgY2Fs
bGJhY2tzLnJlbGVhc2UoKSk7Cit9CisKIHZvaWQgRE9NRmlsZVN5c3RlbTo6cmVhZERpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKICAg
ICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpOwpJbmRleDogV2ViQ29yZS9m
aWxlYXBpL0RPTUZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvRE9N
RmlsZVN5c3RlbS5oCShyZXZpc2lvbiA2ODA1MCkKKysrIFdlYkNvcmUvZmlsZWFwaS9ET01GaWxl
U3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgY2xhc3MgRW50cnk7CiBj
bGFzcyBFbnRyeUNhbGxiYWNrOwogY2xhc3MgRW50cmllc0NhbGxiYWNrOwogY2xhc3MgRXJyb3JD
YWxsYmFjazsKK2NsYXNzIEZpbGVFbnRyeTsKK2NsYXNzIEZpbGVXcml0ZXJDYWxsYmFjazsKIGNs
YXNzIE1ldGFkYXRhQ2FsbGJhY2s7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKQEAgLTc3LDYgKzc5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RmlsZShjb25zdCBFbnRyeSogYmFzZSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAgICAgdm9pZCBnZXREaXJlY3RvcnkoY29u
c3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4sIFBh
c3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwogICAg
IHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmll
c0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgdm9pZCBjcmVhdGVX
cml0ZXIoY29uc3QgRmlsZUVudHJ5KiBmaWxlLCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFj
az4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwogCiAgICAgLy8gU2NoZWR1bGUgYSBjYWxs
YmFjay4gVGhpcyBzaG91bGQgbm90IGNyb3NzIHRocmVhZHMgKHNob3VsZCBiZSBjYWxsZWQgb24g
dGhlIHNhbWUgY29udGV4dCB0aHJlYWQpLgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDQiwgdHlw
ZW5hbWUgQ0JBcmc+CkluZGV4OiBXZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3Bw
CShyZXZpc2lvbiA2ODA1MCkKKysrIFdlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkFzeW5jRmls
ZVdyaXRlci5oIgogI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCkBAIC00NSw2ICs0Niw4IEBACiAj
aW5jbHVkZSAiRmlsZUVudHJ5LmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZVdyaXRlci5oIgorI2luY2x1ZGUg
IkZpbGVXcml0ZXJDYWxsYmFjay5oIgogI2luY2x1ZGUgIk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAi
TWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
QEAgLTkxLDYgKzk0LDEyIEBAIHZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZFJlYWRE
aXIKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAordm9pZCBGaWxlU3lzdGVtQ2FsbGJh
Y2tzQmFzZTo6ZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4s
IGxvbmcgbG9uZykKK3sKKyAgICAvLyBFYWNoIHN1YmNsYXNzIG11c3QgaW1wbGVtZW50IGFuIGFw
cHJvcHJpYXRlIG9uZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBGaWxl
U3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkRmFpbChpbnQgY29kZSkKIHsKICAgICBpZiAobV9lcnJv
ckNhbGxiYWNrKSB7CkBAIC0xODcsNiArMTk2LDIzIEBAIHZvaWQgTWV0YWRhdGFDYWxsYmFja3M6
OmRpZFJlYWRNZXRhZGF0YSgKICAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVhcigpOwogfQogCisv
LyBGaWxlV3JpdGVyQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlsZVdyaXRlckNhbGxiYWNrczo6RmlsZVdyaXRl
ckNhbGxiYWNrcyhQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGZpbGVXcml0ZXIsIFBhc3NSZWZQdHI8
RmlsZVdyaXRlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjaykKKyAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9y
Q2FsbGJhY2spCisgICAgLCBtX2ZpbGVXcml0ZXIoZmlsZVdyaXRlcikKKyAgICAsIG1fc3VjY2Vz
c0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKK3sKK30KKwordm9pZCBGaWxlV3JpdGVyQ2FsbGJh
Y2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiBhc3lu
Y0ZpbGVXcml0ZXIsIGxvbmcgbG9uZyBsZW5ndGgpCit7CisgICAgbV9maWxlV3JpdGVyLT5pbml0
aWFsaXplKGFzeW5jRmlsZVdyaXRlciwgbGVuZ3RoKTsKKyAgICBpZiAobV9zdWNjZXNzQ2FsbGJh
Y2spCisgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChtX2ZpbGVXcml0ZXIu
cmVsZWFzZSgpLmdldCgpKTsKKyAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVhcigpOworfQorCiAv
LyBWb2lkQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFZvaWRDYWxsYmFja3M6OlZvaWRDYWxsYmFja3MoUGFz
c1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQpJbmRleDogV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxi
YWNrcy5oCShyZXZpc2lvbiA2ODA1MCkKKysrIFdlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2Fs
bGJhY2tzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEyICs0MCwxNSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEFzeW5jRmlsZVdyaXRlcjsKIGNsYXNzIERPTUZpbGVTeXN0ZW07
CiBjbGFzcyBFcnJvckNhbGxiYWNrOwogY2xhc3MgRW50cmllc0NhbGxiYWNrOwogY2xhc3MgRW50
cnlBcnJheTsKIGNsYXNzIEVudHJ5Q2FsbGJhY2s7CiBjbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2s7
CitjbGFzcyBGaWxlV3JpdGVyOworY2xhc3MgRmlsZVdyaXRlckNhbGxiYWNrOwogY2xhc3MgTWV0
YWRhdGFDYWxsYmFjazsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBWb2lk
Q2FsbGJhY2s7CkBAIC02Nyw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpc0RpcmVjdG9yeSk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSk7
CiAKKyAgICAvLyBGb3IgY3JlYXRlRmlsZVdyaXRlci4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4sIGxvbmcgbG9uZyBsZW5n
dGgpOworCiAgICAgLy8gRm9yIEVycm9yQ2FsbGJhY2suCiAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoaW50IGNvZGUpOwogCkBAIC0xMjEsNiArMTI3LDE2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PE1ldGFkYXRhQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwogfTsKIAorY2xhc3MgRmlsZVdy
aXRlckNhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CitwdWJsaWM6
CisgICAgRmlsZVdyaXRlckNhbGxiYWNrcyhQYXNzUmVmUHRyPEZpbGVXcml0ZXI+LCBQYXNzUmVm
UHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5bmNGaWxlV3Jp
dGVyPiwgbG9uZyBsb25nIGxlbmd0aCk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPEZpbGVXcml0
ZXI+IG1fZmlsZVdyaXRlcjsKKyAgICBSZWZQdHI8RmlsZVdyaXRlckNhbGxiYWNrPiBtX3N1Y2Nl
c3NDYWxsYmFjazsKK307CisKIGNsYXNzIFZvaWRDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3Rl
bUNhbGxiYWNrc0Jhc2UgewogcHVibGljOgogICAgIFZvaWRDYWxsYmFja3MoUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9Bc3luY0ZpbGVTeXN0ZW0uaAkocmV2aXNpb24gNjgwNTApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L0FzeW5jRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtOwogY2xhc3MgQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzOworY2xhc3MgRmlsZVdyaXRlckNsaWVudDsKIAogLy8gVGhpcyBjbGFz
cyBwcm92aWRlcyBhc3luYyBpbnRlcmZhY2UgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGZpbGUgc3lz
dGVtIGltcGxlbWVudGF0aW9uLiAgTm90ZSB0aGF0IGFsbCB0aGUgbWV0aG9kcyB0YWtlIHBsYXRm
b3JtIHBhdGhzLgogY2xhc3MgQXN5bmNGaWxlU3lzdGVtIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
QEAgLTEwNyw2ICsxMDgsMTEgQEAgcHVibGljOgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrczo6ZGlkRmFpbCgpIGlzIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCiAgICAgdmlydHVhbCB2
b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAorICAgIC8vIENyZWF0ZXMgYW4gQXN5bmNGaWxlV3Jp
dGVyIGZvciBhIGdpdmVuIGZpbGUgcGF0aC4KKyAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M6OmRpZENyZWF0ZUZpbGVXcml0ZXIoKSBpcyBjYWxsZWQgd2hlbiBhbiBBc3luY0ZpbGVXcml0
ZXIgaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlV3JpdGVyKEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKKwogICAgIC8vIENvbnZl
cnRzIGEgZ2l2ZW4gYWJzb2x1dGUgdmlydHVhbCBwYXRoIHRvIGEgcGxhdGZvcm0gcGF0aCB0aGF0
IHN0YXJ0cyB3aXRoIHRoZSBwbGF0Zm9ybSByb290IHBhdGggb2YgdGhpcyBmaWxlIHN5c3RlbS4K
ICAgICB2aXJ0dWFsIFN0cmluZyB2aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoY29uc3QgU3RyaW5nJiBw
YXRoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcy5oCShyZXZpc2lvbiA2ODA1MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtOworY2xhc3MgQXN5bmNGaWxl
V3JpdGVyOwogCiBjbGFzcyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MgOiBwdWJsaWMgTm9uY29w
eWFibGUgewogcHVibGljOgpAQCAtNTYsNiArNTcsOSBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVk
IGFmdGVyIGEgY2h1bmsgb2YgZGlyZWN0b3J5IGVudHJpZXMgaGF2ZSBiZWVuIHJlYWQgKGkuZS4g
aW5kaWNhdGVzIGl0J3MgZ29vZCB0aW1lIHRvIGNhbGwgYmFjayB0byB0aGUgYXBwbGljYXRpb24p
LiAgSWYgaGFzTW9yZSBpcyB0cnVlIHRoZXJlIGNhbiBiZSBtb3JlIGNodW5rcy4KICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoYm9vbCBoYXNNb3JlKSA9IDA7CiAKKyAg
ICAvLyBDYWxsZWQgd2hlbiBhbiBBc3luY0ZpbGVXcnRlciBoYXMgYmVlbiBjcmVhdGVkIHN1Y2Nl
c3NmdWxseS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRy
PEFzeW5jRmlsZVdyaXRlcj4gd3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CisKICAgICAv
LyBDYWxsZWQgd2hlbiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoaW50IGNvZGUpID0gMDsKIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2ODA1MCkKKysr
IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBA
QAorMjAxMC0wOS0yMiAgRXJpYyBVaHJoYW5lICA8ZXJpY3VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDaHJvbWl1bSBp
bXBsZW1lbnRhdGlvbiBmb3IgRmlsZVdyaXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQzNjEKKworICAgICAgICBObyBuZXcgdGVzdHM7IHRoZSBp
bXBsZW1lbnRhdGlvbidzIG5vdCB5ZXQgZmFyIGVub3VnaCBhbG9uZyBmb3IgdGhhdC4KKworICAg
ICAgICBUaGlzIG1ha2VzIGEgY2hhaW4gb2YgY29uc3RydWN0aW9uLWFuZC1saW5raW5nLXVwIGZv
ciB2YXJpb3VzIHNvcnRzIG9mCisgICAgICAgIEZpbGVXcml0ZXIgaW50ZXJmYWNlcyB0byBjYWxs
IHRocm91Z2ggdG8gQ2hyb21pdW0sIGFuZCBmb3IgdmFyaW91cworICAgICAgICBzb3J0cyBvZiBG
aWxlV3JpdGVyQ2xpZW50cyB0byBjYWxsIGJhY2ssIHdpdGggb2JqZWN0IG93bmVyc2hpcCBhbHdh
eXMKKyAgICAgICAgcG9pbnRpbmcgdG93YXJkcyB0aGUgQ2hyb21pdW0gQVBJLiAgVGhhdCBpcywg
dGhlIERPTSBvYmplY3Qgb3ducyBhbgorICAgICAgICBBc3luY0ZpbGVXcml0ZXIsIHdoaWNoIG93
bnMgaXRzIGltcGxlbWVudGF0aW9uIG9iamVjdCwgYW5kIHRoZSByZXZlcnNlCisgICAgICAgIChj
bGllbnQpIGRpcmVjdGlvbiBpcyByYXcgcG9pbnRlcnMuCisKKyAgICAgICAgRmlsZSBtZXRhZGF0
YSBpcyBsb29rZWQgdXAgYmVmb3JlIHRoZSBGaWxlV3JpdGVyIGlzIHJldHVybmVkLCBzbyB0aGF0
CisgICAgICAgIHdlIGtub3cgdGhlIGZpbGUgZXhpc3RzIGFuZCBjYW4gY2FjaGUgaXRzIGxlbmd0
aC4KKworICAgICAgICBUaGUgV2ViS2l0L2Nocm9taXVtIGludGVyZmFjZSBoZXJlIGlzIG1vZGVs
ZWQgYWZ0ZXIgdGhhdCBvZiB0aGUKKyAgICAgICAgRmlsZVN5c3RlbS4KKyAgICAgICAgCisgICAg
ICAgICogcHVibGljL1dlYkZpbGVJbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVJbmZv
OjpXZWJGaWxlSW5mbyk6CisgICAgICAgICogc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OkZpbGVXcml0
ZXJIZWxwZXJDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckhlbHBlckNh
bGxiYWNrczo6ZGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVySGVscGVy
Q2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRl
ckhlbHBlckNhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OmRpZEZhaWwpOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdyaXRlcik6
CisgICAgICAgICogc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmg6CisgICAgICAgICogc3Jj
L0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmls
ZVdyaXRlckNocm9taXVtOjpzZXRXZWJGaWxlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFz
eW5jRmlsZVdyaXRlckNocm9taXVtOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bTo6ZGlkRmFpbCk6CisgICAgICAgICogc3JjL0FzeW5jRmlsZVdyaXRl
ckNocm9taXVtLmg6CisgICAgICAgICogc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmg6
CisKIDIwMTAtMDktMjIgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZpbGVJbmZvLmgJKHJldmlzaW9uIDY4MDUwKQorKysgV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGaWxlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCwxOSBAQCBz
dHJ1Y3QgV2ViRmlsZUluZm8gewogICAgIC8vIFRoZSB2YWx1ZSAwLjAgbWVhbnMgdGhhdCB0aGUg
dGltZSBpcyBub3Qgc2V0LgogICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOwogCi0gICAgV2Vi
RmlsZUluZm8oKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSB7IH0KKyAgICAvLyBUaGUgbGVuZ3Ro
IG9mIHRoZSBmaWxlIGluIGJ5dGVzLgorICAgIC8vIFRoZSB2YWx1ZSAtMSBtZWFucyB0aGF0IHRo
ZSBsZW5ndGggaXMgbm90IHNldC4KKyAgICBsb25nIGxvbmcgbGVuZ3RoOworCisgICAgZW51bSBU
eXBlIHsKKyAgICAgICAgVHlwZVVua25vd24gPSAwLAorICAgICAgICBUeXBlRmlsZSwKKyAgICAg
ICAgVHlwZURpcmVjdG9yeQorICAgIH07CisKKyAgICBUeXBlIHR5cGU7CisKKyAgICBXZWJGaWxl
SW5mbygpIDogbW9kaWZpY2F0aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtu
b3duKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAJKHJldmlzaW9uIDY4MDUw
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDExIEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQog
CiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgorI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNocm9taXVtLmgiCisjaW5jbHVkZSAi
V2ViRmlsZUluZm8uaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuaCIKKyNpbmNsdWRlICJXZWJGaWxlV3JpdGVyLmgiCiAj
aW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCiAKQEAgLTk5LDYg
KzEwMSw2NSBAQCB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpyZWFkRGlyZWN0CiAgICAg
bV93ZWJGaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KHBhdGgsIG5ldyBXZWJLaXQ6OldlYkZpbGVT
eXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCitjbGFzcyBGaWxlV3JpdGVySGVs
cGVyQ2FsbGJhY2tzIDogcHVibGljIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB7Citw
dWJsaWM6CisgICAgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhGaWxlV3JpdGVyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiB3ZWJGaWxl
U3lzdGVtLCBQYXNzT3duUHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQorICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAgICAgLCBtX3BhdGgocGF0
aCkKKyAgICAgICAgLCBtX3dlYkZpbGVTeXN0ZW0od2ViRmlsZVN5c3RlbSkKKyAgICAgICAgLCBt
X2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBk
aWRTdWNjZWVkKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBkZWxldGUgdGhpczsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWRNZXRhZGF0YShj
b25zdCBXZWJLaXQ6OldlYkZpbGVJbmZvJiBpbmZvKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
Y2FsbGJhY2tzKTsKKyAgICAgICAgaWYgKGluZm8udHlwZSAhPSBXZWJLaXQ6OldlYkZpbGVJbmZv
OjpUeXBlRmlsZSB8fCBpbmZvLmxlbmd0aCA8IDApCisgICAgICAgICAgICBtX2NhbGxiYWNrcy0+
ZGlkRmFpbChlcnJvcik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgT3duUHRyPEFzeW5j
RmlsZVdyaXRlckNocm9taXVtPiBhc3luY0ZpbGVXcml0ZXJDaHJvbWl1bSA9IGFkb3B0UHRyKG5l
dyBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bShtX2NsaWVudCkpOworICAgICAgICAgICAgT3duUHRy
PFdlYktpdDo6V2ViRmlsZVdyaXRlcj4gd2ViRmlsZVdyaXRlciA9IGFkb3B0UHRyKG1fd2ViRmls
ZVN5c3RlbS0+Y3JlYXRlRmlsZVdyaXRlcihtX3BhdGgsIGFzeW5jRmlsZVdyaXRlckNocm9taXVt
LmdldCgpKSk7CisgICAgICAgICAgICBhc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS0+c2V0V2ViRmls
ZVdyaXRlcih3ZWJGaWxlV3JpdGVyLnJlbGVhc2UoKSk7CisgICAgICAgICAgICBtX2NhbGxiYWNr
cy0+ZGlkQ3JlYXRlRmlsZVdyaXRlcihhc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5yZWxlYXNlKCks
IGluZm8ubGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeShjb25zdCBXZWJLaXQ6OldlYlZlY3Rv
cjxXZWJLaXQ6OldlYkZpbGVTeXN0ZW1FbnRyeT4mIGVudHJpZXMsIGJvb2wgaGFzTW9yZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBkZWxldGUgdGhpczsK
KyAgICB9CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgcm9vdFBhdGgpCisgICAg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgZGVsZXRlIHRoaXM7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpXZWJGaWxlRXJyb3IgZXJy
b3IpCisgICAgeworICAgICAgICBBU1NFUlQobV9jYWxsYmFja3MpOworICAgICAgICBtX2NhbGxi
YWNrcy0+ZGlkRmFpbChlcnJvcik7CisgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBGaWxlV3JpdGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBTdHJpbmcgbV9wYXRo
OworICAgIFdlYktpdDo6V2ViRmlsZVN5c3RlbSogbV93ZWJGaWxlU3lzdGVtOworICAgIE93blB0
cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IG1fY2FsbGJhY2tzOworfTsKKwor
dm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlV3JpdGVyKEZpbGVXcml0ZXJDbGll
bnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4gY2FsbGJhY2tzKQoreworICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZE1ldGFk
YXRhKHBhdGgsIG5ldyBGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKGNsaWVudCwgcGF0aCwgbV93
ZWJGaWxlU3lzdGVtLCBjYWxsYmFja3MpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNo
cm9taXVtLmgJKHJldmlzaW9uIDY4MDUwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB2b2lkIGRpcmVj
dG9yeUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVXcml0ZXIoRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJp
bmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAKIHByaXZh
dGU6CiAgICAgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiBtX3dlYkZpbGVTeXN0ZW07CkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcAkocmV2
aXNpb24gNjgwNTApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9t
aXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMjUgKzM4LDI2IEBACiAjaW5jbHVkZSAiV2Vi
RmlsZVdyaXRlci5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFzeW5j
RmlsZVdyaXRlckNocm9taXVtOjpBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bShGaWxlV3JpdGVyQ2xp
ZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGllbnQpCiB7CiB9CiAKLXZvaWQgQXN5bmNG
aWxlV3JpdGVyQ2hyb21pdW06OnNldFdlYkZpbGVXcml0ZXIoV2ViRmlsZVdyaXRlciogd3JpdGVy
KQorQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06On5Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bSgpCit7
Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnNldFdlYkZpbGVXcml0ZXIoUGFz
c093blB0cjxXZWJLaXQ6OldlYkZpbGVXcml0ZXI+IHdyaXRlcikKIHsKLSAgICBBU1NFUlQoIW1f
d3JpdGVyKTsKICAgICBtX3dyaXRlciA9IHdyaXRlcjsKIH0KIAogdm9pZCBBc3luY0ZpbGVXcml0
ZXJDaHJvbWl1bTo6d3JpdGUobG9uZyBsb25nIHBvc2l0aW9uLCBCbG9iKiBkYXRhKQogewogICAg
IEFTU0VSVChtX3dyaXRlcik7Ci0gICAgbV93cml0ZXItPndyaXRlKHBvc2l0aW9uLCBXZWJVUkwo
ZGF0YS0+dXJsKCkpKTsKKyAgICBtX3dyaXRlci0+d3JpdGUocG9zaXRpb24sIFdlYktpdDo6V2Vi
VVJMKGRhdGEtPnVybCgpKSk7CiB9CiAKIHZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnRy
dW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpCkBAIC04Miw3ICs4Myw3IEBAIHZvaWQgQXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW06OmRpZFRydW5jYXQKICAgICBtX2NsaWVudC0+ZGlkVHJ1bmNhdGUobGVu
Z3RoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6ZGlkRmFpbChXZWJGaWxl
RXJyb3IgZXJyb3IpCit2b2lkIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjpkaWRGYWlsKFdlYktp
dDo6V2ViRmlsZUVycm9yIGVycm9yKQogewogICAgIG1fY2xpZW50LT5kaWRGYWlsKGVycm9yKTsK
IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVt
LmgJKHJldmlzaW9uIDY4MDUwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0
ZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwzNSArMzYsMzcgQEAKICNpbmNsdWRl
ICJBc3luY0ZpbGVXcml0ZXIuaCIKICNpbmNsdWRlICJXZWJGaWxlRXJyb3IuaCIKICNpbmNsdWRl
ICJXZWJGaWxlV3JpdGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8V1RGL1Bhc3NPd25QdHIuaD4KIAot
bmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQmxvYjsKLWNsYXNzIEZpbGVXcml0ZXJDbGllbnQ7
CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkZpbGVXcml0ZXI7CiB9CiAKLW5hbWVzcGFj
ZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJGaWxlV3JpdGVyOwor
Y2xhc3MgQmxvYjsKK2NsYXNzIEZpbGVXcml0ZXJDbGllbnQ7CiAKLWNsYXNzIEFzeW5jRmlsZVdy
aXRlckNocm9taXVtIDogcHVibGljIFdlYkNvcmU6OkFzeW5jRmlsZVdyaXRlciwgcHVibGljIFdl
YkZpbGVXcml0ZXJDbGllbnQgeworY2xhc3MgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0gOiBwdWJs
aWMgQXN5bmNGaWxlV3JpdGVyLCBwdWJsaWMgV2ViS2l0OjpXZWJGaWxlV3JpdGVyQ2xpZW50IHsK
IHB1YmxpYzoKLSAgICBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bShXZWJDb3JlOjpGaWxlV3JpdGVy
Q2xpZW50KiBjbGllbnQpOwotCi0gICAgdm9pZCBzZXRXZWJGaWxlV3JpdGVyKFdlYkZpbGVXcml0
ZXIqIHdyaXRlcik7CisgICAgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oRmlsZVdyaXRlckNsaWVu
dCogY2xpZW50KTsKKyAgICB+QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oKTsKKyAgICAKKyAgICB2
b2lkIHNldFdlYkZpbGVXcml0ZXIoUGFzc093blB0cjxXZWJLaXQ6OldlYkZpbGVXcml0ZXI+IHdy
aXRlcik7CiAKICAgICAvLyBGaWxlV3JpdGVyCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlKGxvbmcg
bG9uZyBwb3NpdGlvbiwgV2ViQ29yZTo6QmxvYiogZGF0YSk7CisgICAgdmlydHVhbCB2b2lkIHdy
aXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxvYiogZGF0YSk7CiAgICAgdmlydHVhbCB2b2lkIHRy
dW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpOwogCiAg
ICAgLy8gV2ViRmlsZVdyaXRlckNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZShsb25n
IGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRUcnVuY2F0
ZShsb25nIGxvbmcgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJGaWxlRXJy
b3IpOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViRmlsZUVycm9yKTsKIAog
cHJpdmF0ZToKLSAgICBPd25QdHI8V2ViRmlsZVdyaXRlcj4gbV93cml0ZXI7Ci0gICAgV2ViQ29y
ZTo6RmlsZVdyaXRlckNsaWVudCogbV9jbGllbnQ7CisgICAgT3duUHRyPFdlYktpdDo6V2ViRmls
ZVdyaXRlcj4gbV93cml0ZXI7CisgICAgRmlsZVdyaXRlckNsaWVudCogbV9jbGllbnQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68404</attachid>
            <date>2010-09-22 11:34:00 -0700</date>
            <delta_ts>2010-09-22 17:07:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44361-20100922113359.patch</filename>
            <type>text/plain</type>
            <size>20279</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODA1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTAtMDktMjIgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQ2hyb21pdW0gaW1wbGVtZW50YXRpb24gZm9yIEZpbGVXcml0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0MzYxCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzOyB0aGUgaW1wbGVtZW50YXRpb24ncyBub3QgeWV0IGZhciBlbm91Z2ggYWxvbmcgZm9y
IHRoYXQuCisKKyAgICAgICAgVGhpcyBtYWtlcyBhIGNoYWluIG9mIGNvbnRydWN0aW9uLWFuZC1s
aW5raW5nLXVwIGZvciB2YXJpb3VzIHNvcnRzIG9mCisgICAgICAgIEZpbGVXcml0ZXIgaW50ZXJm
YWNlcyB0byBjYWxsIHRocm91Z2ggdG8gQ2hyb21pdW0sIGFuZCBmb3IgdmFyaW91cworICAgICAg
ICBzb3J0cyBvZiBGaWxlV3JpdGVyQ2xpZW50cyB0byBjYWxsIGJhY2ssIHdpdGggb2JqZWN0IG93
bmVyc2hpcCBhbHdheXMKKyAgICAgICAgcG9pbnRpbmcgdG93YXJkcyB0aGUgQ2hyb21pdW0gQVBJ
LiAgVGhhdCBpcywgdGhlIERPTSBvYmplY3Qgb3ducyBhbgorICAgICAgICBBc3luY0ZpbGVXcml0
ZXIsIHdoaWNoIG93bnMgaXRzIGltcGxlbWVudGF0aW9uIG9iamVjdCwgYW5kIHRoZSByZXZlcnNl
CisgICAgICAgIChjbGllbnQpIGRpcmVjdGlvbiBpcyByYXcgcG9pbnRlcnMuCisKKyAgICAgICAg
RmlsZSBtZXRhZGF0YSBpcyBsb29rZWQgdXAgYmVmb3JlIHRoZSBGaWxlV3JpdGVyIGlzIHJldHVy
bmVkLCBzbyB0aGF0CisgICAgICAgIHdlIGtub3cgdGhlIGZpbGUgZXhpc3RzIGFuZCBjYW4gY2Fj
aGUgaXRzIGxlbmd0aC4KKworICAgICAgICBUaGUgV2ViQ29yZSBwYXJ0IG9mIHRoaXMgaXMgc2lt
cGxlIGFuZCBnZW5lcmljIGVub3VnaCB0byBoYW5kbGUKKyAgICAgICAgQ2hyb21pdW0sIHNvIGl0
IHNob3VsZCBiZSBlYXN5IGZvciBtZSB0byBwdXQgaW4gYSBXZWJDb3JlLW9ubHkKKyAgICAgICAg
aW1wbGVtZW50YXRpb24gbmV4dC4KKyAgICAgICAgCisgICAgICAgICogZmlsZWFwaS9Bc3luY0Zp
bGVXcml0ZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlV3JpdGVyKToKKyAgICAgICAgKiBmaWxl
YXBpL0RPTUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFj
a3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZENy
ZWF0ZUZpbGVXcml0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckNhbGxiYWNrczo6
RmlsZVdyaXRlckNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVyQ2FsbGJh
Y2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaDoKKwogMjAxMC0wOS0yMiAg
TWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVdyaXRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXIuaAkocmV2aXNp
b24gNjgwNTApCisrKyBXZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlV3JpdGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDggKzQ1LDYgQEAgY2xhc3MgQXN5bmNGaWxlV3JpdGVyIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Bc3luY0ZpbGVXcml0ZXIoKSB7fQogCi0gICAgdmlydHVhbCB2b2lkIHNl
dEZpbGVXcml0ZXJDbGllbnQoRmlsZVdyaXRlckNsaWVudCogY2xpZW50KSA9IDA7Ci0KICAgICB2
aXJ0dWFsIHZvaWQgd3JpdGUobG9uZyBsb25nIHBvc2l0aW9uLCBCbG9iKiBkYXRhKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYWJvcnQoKSA9IDA7CkluZGV4OiBXZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3Rl
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCShy
ZXZpc2lvbiA2ODA1MCkKKysrIFdlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsOCArNDAsMTEgQEAKICNpbmNsdWRlICJFbnRyeS5oIgogI2luY2x1
ZGUgIkVudHJ5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJFcnJvckNhbGxiYWNrLmgiCisjaW5jbHVk
ZSAiRmlsZUVudHJ5LmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiRmlsZVN5
c3RlbUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIkZpbGVXcml0ZXIuaCIKKyNpbmNsdWRlICJGaWxl
V3JpdGVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJNZXRhZGF0YUNhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlZvaWRDYWxsYmFjay5oIgpA
QCAtMTk5LDYgKzIwMiwxNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06OmdldERpcmVjdG9yeShjb25z
dCBFCiAgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMocGxhdGZvcm1Q
YXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKIH0KIAordm9pZCBET01GaWxlU3lzdGVtOjpjcmVh
dGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5KiBmaWxlLCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxs
YmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2spCit7CisgICAgQVNTRVJUKGZpbGUpOworCisgICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9
IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZS0+ZnVsbFBhdGgo
KSk7CisKKyAgICBSZWZQdHI8RmlsZVdyaXRlcj4gZmlsZVdyaXRlciA9IEZpbGVXcml0ZXI6OmNy
ZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIE93blB0cjxGaWxlV3JpdGVyQ2Fs
bGJhY2tzPiBjYWxsYmFja3MgPSBhZG9wdFB0cihuZXcgRmlsZVdyaXRlckNhbGxiYWNrcyhmaWxl
V3JpdGVyLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICBtX2FzeW5jRmls
ZVN5c3RlbS0+Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCksIHBsYXRmb3JtUGF0aCwgY2Fs
bGJhY2tzLnJlbGVhc2UoKSk7Cit9CisKIHZvaWQgRE9NRmlsZVN5c3RlbTo6cmVhZERpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKICAg
ICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpOwpJbmRleDogV2ViQ29yZS9m
aWxlYXBpL0RPTUZpbGVTeXN0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvRE9N
RmlsZVN5c3RlbS5oCShyZXZpc2lvbiA2ODA1MCkKKysrIFdlYkNvcmUvZmlsZWFwaS9ET01GaWxl
U3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgY2xhc3MgRW50cnk7CiBj
bGFzcyBFbnRyeUNhbGxiYWNrOwogY2xhc3MgRW50cmllc0NhbGxiYWNrOwogY2xhc3MgRXJyb3JD
YWxsYmFjazsKK2NsYXNzIEZpbGVFbnRyeTsKK2NsYXNzIEZpbGVXcml0ZXJDYWxsYmFjazsKIGNs
YXNzIE1ldGFkYXRhQ2FsbGJhY2s7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKQEAgLTc3LDYgKzc5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0RmlsZShjb25zdCBFbnRyeSogYmFzZSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNr
PiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAgICAgdm9pZCBnZXREaXJlY3RvcnkoY29u
c3QgRW50cnkqIGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGbGFncz4sIFBh
c3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwogICAg
IHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmll
c0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CisgICAgdm9pZCBjcmVhdGVX
cml0ZXIoY29uc3QgRmlsZUVudHJ5KiBmaWxlLCBQYXNzUmVmUHRyPEZpbGVXcml0ZXJDYWxsYmFj
az4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOwogCiAgICAgLy8gU2NoZWR1bGUgYSBjYWxs
YmFjay4gVGhpcyBzaG91bGQgbm90IGNyb3NzIHRocmVhZHMgKHNob3VsZCBiZSBjYWxsZWQgb24g
dGhlIHNhbWUgY29udGV4dCB0aHJlYWQpLgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDQiwgdHlw
ZW5hbWUgQ0JBcmc+CkluZGV4OiBXZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxiYWNrcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3Bw
CShyZXZpc2lvbiA2ODA1MCkKKysrIFdlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2FsbGJhY2tz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkFzeW5jRmls
ZVdyaXRlci5oIgogI2luY2x1ZGUgIkRPTUZpbGVQYXRoLmgiCiAjaW5jbHVkZSAiRE9NRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkRpcmVjdG9yeUVudHJ5LmgiCkBAIC00NSw2ICs0Niw4IEBACiAj
aW5jbHVkZSAiRmlsZUVudHJ5LmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbUNhbGxiYWNrLmgiCisjaW5jbHVkZSAiRmlsZVdyaXRlci5oIgorI2luY2x1ZGUg
IkZpbGVXcml0ZXJDYWxsYmFjay5oIgogI2luY2x1ZGUgIk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAi
TWV0YWRhdGFDYWxsYmFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
QEAgLTkxLDYgKzk0LDEyIEBAIHZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2U6OmRpZFJlYWRE
aXIKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAordm9pZCBGaWxlU3lzdGVtQ2FsbGJh
Y2tzQmFzZTo6ZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4s
IGxvbmcgbG9uZykKK3sKKyAgICAvLyBFYWNoIHN1YmNsYXNzIG11c3QgaW1wbGVtZW50IGFuIGFw
cHJvcHJpYXRlIG9uZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBGaWxl
U3lzdGVtQ2FsbGJhY2tzQmFzZTo6ZGlkRmFpbChpbnQgY29kZSkKIHsKICAgICBpZiAobV9lcnJv
ckNhbGxiYWNrKSB7CkBAIC0xODcsNiArMTk2LDIzIEBAIHZvaWQgTWV0YWRhdGFDYWxsYmFja3M6
OmRpZFJlYWRNZXRhZGF0YSgKICAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVhcigpOwogfQogCisv
LyBGaWxlV3JpdGVyQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlsZVdyaXRlckNhbGxiYWNrczo6RmlsZVdyaXRl
ckNhbGxiYWNrcyhQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGZpbGVXcml0ZXIsIFBhc3NSZWZQdHI8
RmlsZVdyaXRlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjaykKKyAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9y
Q2FsbGJhY2spCisgICAgLCBtX2ZpbGVXcml0ZXIoZmlsZVdyaXRlcikKKyAgICAsIG1fc3VjY2Vz
c0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKK3sKK30KKwordm9pZCBGaWxlV3JpdGVyQ2FsbGJh
Y2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5bmNGaWxlV3JpdGVyPiBhc3lu
Y0ZpbGVXcml0ZXIsIGxvbmcgbG9uZyBsZW5ndGgpCit7CisgICAgbV9maWxlV3JpdGVyLT5pbml0
aWFsaXplKGFzeW5jRmlsZVdyaXRlciwgbGVuZ3RoKTsKKyAgICBpZiAobV9zdWNjZXNzQ2FsbGJh
Y2spCisgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChtX2ZpbGVXcml0ZXIu
cmVsZWFzZSgpLmdldCgpKTsKKyAgICBtX3N1Y2Nlc3NDYWxsYmFjay5jbGVhcigpOworfQorCiAv
LyBWb2lkQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFZvaWRDYWxsYmFja3M6OlZvaWRDYWxsYmFja3MoUGFz
c1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQpJbmRleDogV2ViQ29yZS9maWxlYXBpL0ZpbGVTeXN0ZW1D
YWxsYmFja3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2ZpbGVhcGkvRmlsZVN5c3RlbUNhbGxi
YWNrcy5oCShyZXZpc2lvbiA2ODA1MCkKKysrIFdlYkNvcmUvZmlsZWFwaS9GaWxlU3lzdGVtQ2Fs
bGJhY2tzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEyICs0MCwxNSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEFzeW5jRmlsZVdyaXRlcjsKIGNsYXNzIERPTUZpbGVTeXN0ZW07
CiBjbGFzcyBFcnJvckNhbGxiYWNrOwogY2xhc3MgRW50cmllc0NhbGxiYWNrOwogY2xhc3MgRW50
cnlBcnJheTsKIGNsYXNzIEVudHJ5Q2FsbGJhY2s7CiBjbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2s7
CitjbGFzcyBGaWxlV3JpdGVyOworY2xhc3MgRmlsZVdyaXRlckNhbGxiYWNrOwogY2xhc3MgTWV0
YWRhdGFDYWxsYmFjazsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBWb2lk
Q2FsbGJhY2s7CkBAIC02Nyw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVhZERpcmVjdG9yeUVudHJ5KGNvbnN0IFN0cmluZyYgbmFtZSwgYm9vbCBpc0RpcmVjdG9yeSk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKGJvb2wgaGFzTW9yZSk7
CiAKKyAgICAvLyBGb3IgY3JlYXRlRmlsZVdyaXRlci4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3Jl
YXRlRmlsZVdyaXRlcihQYXNzT3duUHRyPEFzeW5jRmlsZVdyaXRlcj4sIGxvbmcgbG9uZyBsZW5n
dGgpOworCiAgICAgLy8gRm9yIEVycm9yQ2FsbGJhY2suCiAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoaW50IGNvZGUpOwogCkBAIC0xMjEsNiArMTI3LDE2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PE1ldGFkYXRhQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOwogfTsKIAorY2xhc3MgRmlsZVdy
aXRlckNhbGxiYWNrcyA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CitwdWJsaWM6
CisgICAgRmlsZVdyaXRlckNhbGxiYWNrcyhQYXNzUmVmUHRyPEZpbGVXcml0ZXI+LCBQYXNzUmVm
UHRyPEZpbGVXcml0ZXJDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4pOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGaWxlV3JpdGVyKFBhc3NPd25QdHI8QXN5bmNGaWxlV3Jp
dGVyPiwgbG9uZyBsb25nIGxlbmd0aCk7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPEZpbGVXcml0
ZXI+IG1fZmlsZVdyaXRlcjsKKyAgICBSZWZQdHI8RmlsZVdyaXRlckNhbGxiYWNrPiBtX3N1Y2Nl
c3NDYWxsYmFjazsKK307CisKIGNsYXNzIFZvaWRDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3Rl
bUNhbGxiYWNrc0Jhc2UgewogcHVibGljOgogICAgIFZvaWRDYWxsYmFja3MoUGFzc1JlZlB0cjxW
b2lkQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9Bc3luY0ZpbGVTeXN0ZW0uaAkocmV2aXNpb24gNjgwNTApCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L0FzeW5jRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtOwogY2xhc3MgQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzOworY2xhc3MgRmlsZVdyaXRlckNsaWVudDsKIAogLy8gVGhpcyBjbGFz
cyBwcm92aWRlcyBhc3luYyBpbnRlcmZhY2UgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGZpbGUgc3lz
dGVtIGltcGxlbWVudGF0aW9uLiAgTm90ZSB0aGF0IGFsbCB0aGUgbWV0aG9kcyB0YWtlIHBsYXRm
b3JtIHBhdGhzLgogY2xhc3MgQXN5bmNGaWxlU3lzdGVtIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
QEAgLTEwNyw2ICsxMDgsMTEgQEAgcHVibGljOgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrczo6ZGlkRmFpbCgpIGlzIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCiAgICAgdmlydHVhbCB2
b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAorICAgIC8vIENyZWF0ZXMgYW4gQXN5bmNGaWxlV3Jp
dGVyIGZvciBhIGdpdmVuIGZpbGUgcGF0aC4KKyAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M6OmRpZENyZWF0ZUZpbGVXcml0ZXIoKSBpcyBjYWxsZWQgd2hlbiBhbiBBc3luY0ZpbGVXcml0
ZXIgaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkuCisgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KKyAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlV3JpdGVyKEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKKwogICAgIC8vIENvbnZl
cnRzIGEgZ2l2ZW4gYWJzb2x1dGUgdmlydHVhbCBwYXRoIHRvIGEgcGxhdGZvcm0gcGF0aCB0aGF0
IHN0YXJ0cyB3aXRoIHRoZSBwbGF0Zm9ybSByb290IHBhdGggb2YgdGhpcyBmaWxlIHN5c3RlbS4K
ICAgICB2aXJ0dWFsIFN0cmluZyB2aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoY29uc3QgU3RyaW5nJiBw
YXRoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcy5oCShyZXZpc2lvbiA2ODA1MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtOworY2xhc3MgQXN5bmNGaWxl
V3JpdGVyOwogCiBjbGFzcyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MgOiBwdWJsaWMgTm9uY29w
eWFibGUgewogcHVibGljOgpAQCAtNTYsNiArNTcsOSBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVk
IGFmdGVyIGEgY2h1bmsgb2YgZGlyZWN0b3J5IGVudHJpZXMgaGF2ZSBiZWVuIHJlYWQgKGkuZS4g
aW5kaWNhdGVzIGl0J3MgZ29vZCB0aW1lIHRvIGNhbGwgYmFjayB0byB0aGUgYXBwbGljYXRpb24p
LiAgSWYgaGFzTW9yZSBpcyB0cnVlIHRoZXJlIGNhbiBiZSBtb3JlIGNodW5rcy4KICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeUVudHJpZXMoYm9vbCBoYXNNb3JlKSA9IDA7CiAKKyAg
ICAvLyBDYWxsZWQgd2hlbiBhbiBBc3luY0ZpbGVXcnRlciBoYXMgYmVlbiBjcmVhdGVkIHN1Y2Nl
c3NmdWxseS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRmlsZVdyaXRlcihQYXNzT3duUHRy
PEFzeW5jRmlsZVdyaXRlcj4gd3JpdGVyLCBsb25nIGxvbmcgbGVuZ3RoKSA9IDA7CisKICAgICAv
LyBDYWxsZWQgd2hlbiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoaW50IGNvZGUpID0gMDsKIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2ODA1MCkKKysr
IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBA
QAorMjAxMC0wOS0yMiAgRXJpYyBVaHJoYW5lICA8ZXJpY3VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBDaHJvbWl1bSBp
bXBsZW1lbnRhdGlvbiBmb3IgRmlsZVdyaXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQzNjEKKworICAgICAgICBObyBuZXcgdGVzdHM7IHRoZSBp
bXBsZW1lbnRhdGlvbidzIG5vdCB5ZXQgZmFyIGVub3VnaCBhbG9uZyBmb3IgdGhhdC4KKworICAg
ICAgICBUaGlzIG1ha2VzIGEgY2hhaW4gb2YgY29uc3RydWN0aW9uLWFuZC1saW5raW5nLXVwIGZv
ciB2YXJpb3VzIHNvcnRzIG9mCisgICAgICAgIEZpbGVXcml0ZXIgaW50ZXJmYWNlcyB0byBjYWxs
IHRocm91Z2ggdG8gQ2hyb21pdW0sIGFuZCBmb3IgdmFyaW91cworICAgICAgICBzb3J0cyBvZiBG
aWxlV3JpdGVyQ2xpZW50cyB0byBjYWxsIGJhY2ssIHdpdGggb2JqZWN0IG93bmVyc2hpcCBhbHdh
eXMKKyAgICAgICAgcG9pbnRpbmcgdG93YXJkcyB0aGUgQ2hyb21pdW0gQVBJLiAgVGhhdCBpcywg
dGhlIERPTSBvYmplY3Qgb3ducyBhbgorICAgICAgICBBc3luY0ZpbGVXcml0ZXIsIHdoaWNoIG93
bnMgaXRzIGltcGxlbWVudGF0aW9uIG9iamVjdCwgYW5kIHRoZSByZXZlcnNlCisgICAgICAgIChj
bGllbnQpIGRpcmVjdGlvbiBpcyByYXcgcG9pbnRlcnMuCisKKyAgICAgICAgRmlsZSBtZXRhZGF0
YSBpcyBsb29rZWQgdXAgYmVmb3JlIHRoZSBGaWxlV3JpdGVyIGlzIHJldHVybmVkLCBzbyB0aGF0
CisgICAgICAgIHdlIGtub3cgdGhlIGZpbGUgZXhpc3RzIGFuZCBjYW4gY2FjaGUgaXRzIGxlbmd0
aC4KKworICAgICAgICBUaGUgV2ViS2l0L2Nocm9taXVtIGludGVyZmFjZSBoZXJlIGlzIG1vZGVs
ZWQgYWZ0ZXIgdGhhdCBvZiB0aGUKKyAgICAgICAgRmlsZVN5c3RlbS4KKyAgICAgICAgCisgICAg
ICAgICogcHVibGljL1dlYkZpbGVJbmZvLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZpbGVJbmZv
OjpXZWJGaWxlSW5mbyk6CisgICAgICAgICogc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OkZpbGVXcml0
ZXJIZWxwZXJDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlckhlbHBlckNh
bGxiYWNrczo6ZGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVySGVscGVy
Q2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRl
ckhlbHBlckNhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzOjpkaWRDcmVhdGVGaWxlV3JpdGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M6OmRpZEZhaWwpOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdyaXRlcik6
CisgICAgICAgICogc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmg6CisgICAgICAgICogc3Jj
L0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmls
ZVdyaXRlckNocm9taXVtOjpzZXRXZWJGaWxlV3JpdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFz
eW5jRmlsZVdyaXRlckNocm9taXVtOjp3cml0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bTo6ZGlkRmFpbCk6CisgICAgICAgICogc3JjL0FzeW5jRmlsZVdyaXRl
ckNocm9taXVtLmg6CisgICAgICAgICogc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmg6
CisKIDIwMTAtMDktMjIgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRmlsZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZpbGVJbmZvLmgJKHJldmlzaW9uIDY4MDUwKQorKysgV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGaWxlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCwxOSBAQCBz
dHJ1Y3QgV2ViRmlsZUluZm8gewogICAgIC8vIFRoZSB2YWx1ZSAwLjAgbWVhbnMgdGhhdCB0aGUg
dGltZSBpcyBub3Qgc2V0LgogICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOwogCi0gICAgV2Vi
RmlsZUluZm8oKSA6IG1vZGlmaWNhdGlvblRpbWUoMC4wKSB7IH0KKyAgICAvLyBUaGUgbGVuZ3Ro
IG9mIHRoZSBmaWxlIGluIGJ5dGVzLgorICAgIC8vIFRoZSB2YWx1ZSAtMSBtZWFucyB0aGF0IHRo
ZSBsZW5ndGggaXMgbm90IHNldC4KKyAgICBsb25nIGxvbmcgbGVuZ3RoOworCisgICAgZW51bSBU
eXBlIHsKKyAgICAgICAgVHlwZVVua25vd24gPSAwLAorICAgICAgICBUeXBlRmlsZSwKKyAgICAg
ICAgVHlwZURpcmVjdG9yeQorICAgIH07CisKKyAgICBUeXBlIHR5cGU7CisKKyAgICBXZWJGaWxl
SW5mbygpIDogbW9kaWZpY2F0aW9uVGltZSgwLjApLCBsZW5ndGgoLTEpLCB0eXBlKFR5cGVVbmtu
b3duKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAJKHJldmlzaW9uIDY4MDUw
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDExIEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQog
CiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgorI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNocm9taXVtLmgiCisjaW5jbHVkZSAi
V2ViRmlsZUluZm8uaCIKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuaCIKKyNpbmNsdWRlICJXZWJGaWxlV3JpdGVyLmgiCiAj
aW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCiAKQEAgLTk5LDYg
KzEwMSw2NSBAQCB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpyZWFkRGlyZWN0CiAgICAg
bV93ZWJGaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KHBhdGgsIG5ldyBXZWJLaXQ6OldlYkZpbGVT
eXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCitjbGFzcyBGaWxlV3JpdGVySGVs
cGVyQ2FsbGJhY2tzIDogcHVibGljIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB7Citw
dWJsaWM6CisgICAgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhGaWxlV3JpdGVyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiB3ZWJGaWxl
U3lzdGVtLCBQYXNzT3duUHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQorICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICAgICAgLCBtX3BhdGgocGF0
aCkKKyAgICAgICAgLCBtX3dlYkZpbGVTeXN0ZW0od2ViRmlsZVN5c3RlbSkKKyAgICAgICAgLCBt
X2NhbGxiYWNrcyhjYWxsYmFja3MpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBk
aWRTdWNjZWVkKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBkZWxldGUgdGhpczsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWRNZXRhZGF0YShj
b25zdCBXZWJLaXQ6OldlYkZpbGVJbmZvJiBpbmZvKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
Y2FsbGJhY2tzKTsKKyAgICAgICAgaWYgKGluZm8udHlwZSAhPSBXZWJLaXQ6OldlYkZpbGVJbmZv
OjpUeXBlRmlsZSB8fCBpbmZvLmxlbmd0aCA8IDApCisgICAgICAgICAgICBtX2NhbGxiYWNrcy0+
ZGlkRmFpbChXZWJLaXQ6OldlYkZpbGVFcnJvckludmFsaWRTdGF0ZSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgT3duUHRyPEFzeW5jRmlsZVdyaXRlckNocm9taXVtPiBhc3luY0ZpbGVX
cml0ZXJDaHJvbWl1bSA9IGFkb3B0UHRyKG5ldyBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bShtX2Ns
aWVudCkpOworICAgICAgICAgICAgT3duUHRyPFdlYktpdDo6V2ViRmlsZVdyaXRlcj4gd2ViRmls
ZVdyaXRlciA9IGFkb3B0UHRyKG1fd2ViRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZVdyaXRlcihtX3Bh
dGgsIGFzeW5jRmlsZVdyaXRlckNocm9taXVtLmdldCgpKSk7CisgICAgICAgICAgICBhc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bS0+c2V0V2ViRmlsZVdyaXRlcih3ZWJGaWxlV3JpdGVyLnJlbGVhc2Uo
KSk7CisgICAgICAgICAgICBtX2NhbGxiYWNrcy0+ZGlkQ3JlYXRlRmlsZVdyaXRlcihhc3luY0Zp
bGVXcml0ZXJDaHJvbWl1bS5yZWxlYXNlKCksIGluZm8ubGVuZ3RoKTsKKyAgICAgICAgfQorICAg
ICAgICBkZWxldGUgdGhpczsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVj
dG9yeShjb25zdCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYkZpbGVTeXN0ZW1FbnRyeT4m
IGVudHJpZXMsIGJvb2wgaGFzTW9yZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIGRpZE9w
ZW5GaWxlU3lzdGVtKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYgcm9vdFBhdGgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoV2ViS2l0OjpXZWJGaWxlRXJyb3IgZXJyb3IpCisgICAgeworICAgICAgICBBU1NFUlQobV9j
YWxsYmFja3MpOworICAgICAgICBtX2NhbGxiYWNrcy0+ZGlkRmFpbChlcnJvcik7CisgICAgICAg
IGRlbGV0ZSB0aGlzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBGaWxlV3JpdGVyQ2xpZW50KiBt
X2NsaWVudDsKKyAgICBTdHJpbmcgbV9wYXRoOworICAgIFdlYktpdDo6V2ViRmlsZVN5c3RlbSog
bV93ZWJGaWxlU3lzdGVtOworICAgIE93blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IG1fY2FsbGJhY2tzOworfTsKKwordm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6
Y3JlYXRlV3JpdGVyKEZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQoreworICAg
IG1fd2ViRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKHBhdGgsIG5ldyBGaWxlV3JpdGVySGVscGVy
Q2FsbGJhY2tzKGNsaWVudCwgcGF0aCwgbV93ZWJGaWxlU3lzdGVtLCBjYWxsYmFja3MpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgJKHJldmlzaW9uIDY4MDUwKQorKysg
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0
cyhjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Pik7CiAgICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB2b2lk
IHJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoRmlsZVdyaXRl
ckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPik7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJGaWxlU3lzdGVt
KiBtX3dlYkZpbGVTeXN0ZW07CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVdy
aXRlckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5j
RmlsZVdyaXRlckNocm9taXVtLmNwcAkocmV2aXNpb24gNjgwNTApCisrKyBXZWJLaXQvY2hyb21p
dW0vc3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
MjUgKzM4LDI2IEBACiAjaW5jbHVkZSAiV2ViRmlsZVdyaXRlci5oIgogI2luY2x1ZGUgIldlYlVS
TC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Citu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFzeW5jRmlsZVdyaXRlckNocm9taXVtOjpBc3luY0ZpbGVX
cml0ZXJDaHJvbWl1bShGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChj
bGllbnQpCiB7CiB9CiAKLXZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnNldFdlYkZpbGVX
cml0ZXIoV2ViRmlsZVdyaXRlciogd3JpdGVyKQorQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06On5B
c3luY0ZpbGVXcml0ZXJDaHJvbWl1bSgpCit7Cit9CisKK3ZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hy
b21pdW06OnNldFdlYkZpbGVXcml0ZXIoUGFzc093blB0cjxXZWJLaXQ6OldlYkZpbGVXcml0ZXI+
IHdyaXRlcikKIHsKLSAgICBBU1NFUlQoIW1fd3JpdGVyKTsKICAgICBtX3dyaXRlciA9IHdyaXRl
cjsKIH0KIAogdm9pZCBBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6d3JpdGUobG9uZyBsb25nIHBv
c2l0aW9uLCBCbG9iKiBkYXRhKQogewogICAgIEFTU0VSVChtX3dyaXRlcik7Ci0gICAgbV93cml0
ZXItPndyaXRlKHBvc2l0aW9uLCBXZWJVUkwoZGF0YS0+dXJsKCkpKTsKKyAgICBtX3dyaXRlci0+
d3JpdGUocG9zaXRpb24sIFdlYktpdDo6V2ViVVJMKGRhdGEtPnVybCgpKSk7CiB9CiAKIHZvaWQg
QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OnRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpCkBAIC04
Miw3ICs4Myw3IEBAIHZvaWQgQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06OmRpZFRydW5jYXQKICAg
ICBtX2NsaWVudC0+ZGlkVHJ1bmNhdGUobGVuZ3RoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVXcml0
ZXJDaHJvbWl1bTo6ZGlkRmFpbChXZWJGaWxlRXJyb3IgZXJyb3IpCit2b2lkIEFzeW5jRmlsZVdy
aXRlckNocm9taXVtOjpkaWRGYWlsKFdlYktpdDo6V2ViRmlsZUVycm9yIGVycm9yKQogewogICAg
IG1fY2xpZW50LT5kaWRGYWlsKGVycm9yKTsKIH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMv
QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL0FzeW5jRmlsZVdyaXRlckNocm9taXVtLmgJKHJldmlzaW9uIDY4MDUwKQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiwzNSArMzYsMzcgQEAKICNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXIuaCIKICNpbmNsdWRl
ICJXZWJGaWxlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJGaWxlV3JpdGVyQ2xpZW50LmgiCisjaW5j
bHVkZSA8V1RGL1Bhc3NPd25QdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQmxv
YjsKLWNsYXNzIEZpbGVXcml0ZXJDbGllbnQ7CituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdl
YkZpbGVXcml0ZXI7CiB9CiAKLW5hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBXZWJGaWxlV3JpdGVyOworY2xhc3MgQmxvYjsKK2NsYXNzIEZpbGVXcml0ZXJD
bGllbnQ7CiAKLWNsYXNzIEFzeW5jRmlsZVdyaXRlckNocm9taXVtIDogcHVibGljIFdlYkNvcmU6
OkFzeW5jRmlsZVdyaXRlciwgcHVibGljIFdlYkZpbGVXcml0ZXJDbGllbnQgeworY2xhc3MgQXN5
bmNGaWxlV3JpdGVyQ2hyb21pdW0gOiBwdWJsaWMgQXN5bmNGaWxlV3JpdGVyLCBwdWJsaWMgV2Vi
S2l0OjpXZWJGaWxlV3JpdGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBBc3luY0ZpbGVXcml0ZXJD
aHJvbWl1bShXZWJDb3JlOjpGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpOwotCi0gICAgdm9pZCBz
ZXRXZWJGaWxlV3JpdGVyKFdlYkZpbGVXcml0ZXIqIHdyaXRlcik7CisgICAgQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW0oRmlsZVdyaXRlckNsaWVudCogY2xpZW50KTsKKyAgICB+QXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW0oKTsKKyAgICAKKyAgICB2b2lkIHNldFdlYkZpbGVXcml0ZXIoUGFzc093blB0
cjxXZWJLaXQ6OldlYkZpbGVXcml0ZXI+IHdyaXRlcik7CiAKICAgICAvLyBGaWxlV3JpdGVyCi0g
ICAgdmlydHVhbCB2b2lkIHdyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgV2ViQ29yZTo6QmxvYiog
ZGF0YSk7CisgICAgdmlydHVhbCB2b2lkIHdyaXRlKGxvbmcgbG9uZyBwb3NpdGlvbiwgQmxvYiog
ZGF0YSk7CiAgICAgdmlydHVhbCB2b2lkIHRydW5jYXRlKGxvbmcgbG9uZyBsZW5ndGgpOwogICAg
IHZpcnR1YWwgdm9pZCBhYm9ydCgpOwogCiAgICAgLy8gV2ViRmlsZVdyaXRlckNsaWVudAogICAg
IHZpcnR1YWwgdm9pZCBkaWRXcml0ZShsb25nIGxvbmcgYnl0ZXMsIGJvb2wgY29tcGxldGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRUcnVuY2F0ZShsb25nIGxvbmcgbGVuZ3RoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChXZWJGaWxlRXJyb3IpOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KFdlYktpdDo6V2ViRmlsZUVycm9yKTsKIAogcHJpdmF0ZToKLSAgICBPd25QdHI8V2ViRmlsZVdy
aXRlcj4gbV93cml0ZXI7Ci0gICAgV2ViQ29yZTo6RmlsZVdyaXRlckNsaWVudCogbV9jbGllbnQ7
CisgICAgT3duUHRyPFdlYktpdDo6V2ViRmlsZVdyaXRlcj4gbV93cml0ZXI7CisgICAgRmlsZVdy
aXRlckNsaWVudCogbV9jbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>