<?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>21358</bug_id>
          
          <creation_ts>2008-10-03 22:09:39 -0700</creation_ts>
          <short_desc>DragData should not depend on Clipboard, DocumentFragment, and Document</short_desc>
          <delta_ts>2014-09-16 23:28:19 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>21354</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>94037</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-03 22:09:39 -0700</bug_when>
    <thetext>It is a layering violation for DragData to depend on Clipboard, DocumentFragment, and Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028762</commentid>
    <comment_count>1</comment_count>
      <attachid>236510</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-08-13 03:17:48 -0700</bug_when>
    <thetext>Created attachment 236510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028764</commentid>
    <comment_count>2</comment_count>
      <attachid>236511</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-08-13 03:52:29 -0700</bug_when>
    <thetext>Created attachment 236511
Try to fix EFL and Win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028779</commentid>
    <comment_count>3</comment_count>
      <attachid>236519</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-08-13 05:43:03 -0700</bug_when>
    <thetext>Created attachment 236519
Try to fix EFL and win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028826</commentid>
    <comment_count>4</comment_count>
      <attachid>236519</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-08-13 11:04:56 -0700</bug_when>
    <thetext>Comment on attachment 236519
Try to fix EFL and win build

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

&gt; Source/WebCore/page/gtk/DragControllerGtk.cpp:83
&gt; +    if (!dragData.platformData()-&gt;hasMarkup() || !frame-&gt;document())

Since we are not null-checking the Frame here, can we pass it by reference? Or do we need to null check it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029044</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-08-14 00:10:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 236519 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236519&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/gtk/DragControllerGtk.cpp:83
&gt; &gt; +    if (!dragData.platformData()-&gt;hasMarkup() || !frame-&gt;document())
&gt; 
&gt; Since we are not null-checking the Frame here, can we pass it by reference? Or do we need to null check it?

We can indeed pass it by reference, the caller should ensure a valid a frame is passed, and currently the only caller does it:

    RefPtr&lt;Frame&gt; innerFrame = element-&gt;document().frame();
    ASSERT(innerFrame);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029045</commentid>
    <comment_count>6</comment_count>
      <attachid>236580</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-08-14 00:26:19 -0700</bug_when>
    <thetext>Created attachment 236580
Updated patch

Pass the Frame by reference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031631</commentid>
    <comment_count>7</comment_count>
      <attachid>237217</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-08-27 03:51:28 -0700</bug_when>
    <thetext>Created attachment 237217
Rebased patch

Rebased to make it build on top of current git master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035106</commentid>
    <comment_count>8</comment_count>
      <attachid>237217</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-09-14 12:16:09 -0700</bug_when>
    <thetext>Comment on attachment 237217
Rebased patch

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

We should make sure we are adding the minimum includes here.

&gt; Source/WebCore/page/DragController.h:119
&gt; +        static PassRefPtr&lt;DocumentFragment&gt; documentFragmentFromDragData(DragData&amp;, Frame&amp;, Range&amp;, bool allowPlainText, bool&amp; chosePlainText);
&gt; +        static PassRefPtr&lt;DocumentFragment&gt; createFragmentFromDragData(DragData&amp;, Frame&amp;, Range&amp;, bool allowPlainText, bool&amp; chosePlainText);

The names of these two functions don’t make it at all clear why there are two of them and how they differ.

I think the second one exists only to have a platform-dependent hook to do things differently on every platform. Long term, I want to refactor this code so that it’s shared and not platform-specific. I think it can be done. In the meantime, I suggest a name that is clearer.

I’m also not sure that the first function needs to be a class member. Maybe it can just be a function with internal linkages inside the .cpp file and not in the header at all.

&gt; Source/WebCore/page/win/DragControllerWin.cpp:93
&gt; +     * Order is richest format first. On OSX this is:

You just moved this code, but this is a Windows-specific file. Not sure why a list of OS X formats is relevant. Also, it’s “OS X”, not “OSX”.

I suggest we just drop the comment entirely.

&gt; Source/WebCore/page/win/DragControllerWin.cpp:122
&gt; +    if (DragDataRef platformDragData = dragData.platformData()) {
&gt; +        if (containsFilenames(platformDragData)) {
&gt; +            if (PassRefPtr&lt;DocumentFragment&gt; fragment = fragmentFromFilenames(frame.document(), platformDragData))
&gt; +                return fragment;
&gt; +        }
&gt; +
&gt; +        if (containsHTML(platformDragData)) {
&gt; +            if (PassRefPtr&lt;DocumentFragment&gt; fragment = fragmentFromHTML(frame.document(), platformDragData))
&gt; +                return fragment;
&gt; +        }
&gt; +    } else {
&gt; +        if (containsFilenames(&amp;dragData.dragDataMap())) {
&gt; +            if (PassRefPtr&lt;DocumentFragment&gt; fragment = fragmentFromFilenames(frame.document(), &amp;dragData.dragDataMap()))
&gt; +                return fragment;
&gt; +        }
&gt; +
&gt; +        if (containsHTML(&amp;dragData.dragDataMap())) {
&gt; +            if (PassRefPtr&lt;DocumentFragment&gt; fragment = fragmentFromHTML(frame.document(), &amp;dragData.dragDataMap()))
&gt; +                return fragment;
&gt; +        }
&gt; +    }

You just moved this code, but sure would be nice to factor this so we don’t have to repeat everything twice.

&gt; Source/WebCore/platform/DragData.h:95
&gt; +    bool containsURL(FilenameConversionPolicy filenamePolicy = ConvertFilenames) const;

The argument name filenamePolicy doesn’t add anything and should be removed.

&gt; Source/WebCore/platform/DragData.h:98
&gt; +    String asURL(FilenameConversionPolicy filenamePolicy = ConvertFilenames, String* title = 0) const;

The argument name filenamePolicy doesn’t add anything and should be removed. Should use nullptr rather than 0.

&gt; Source/WebCore/platform/mac/DragDataMac.mm:111
&gt; +    // FIXME: It&apos;s not clear this is 100% correct since we know -[NSURL URLWithString:] does not handle
&gt; +    // all the same cases we handle well in the URL code for creating an NSURL.

Where was this code moved from? It’s easy for us to rewrite this use WebCore::URL to make the NSURL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035182</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-15 01:55:34 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 237217 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=237217&amp;action=review

Thanks for the review.

&gt; We should make sure we are adding the minimum includes here.

I tried it for GTK+ port at least since it&apos;s the only port I can compile.

&gt; &gt; Source/WebCore/page/DragController.h:119
&gt; &gt; +        static PassRefPtr&lt;DocumentFragment&gt; documentFragmentFromDragData(DragData&amp;, Frame&amp;, Range&amp;, bool allowPlainText, bool&amp; chosePlainText);
&gt; &gt; +        static PassRefPtr&lt;DocumentFragment&gt; createFragmentFromDragData(DragData&amp;, Frame&amp;, Range&amp;, bool allowPlainText, bool&amp; chosePlainText);
&gt; 
&gt; The names of these two functions don’t make it at all clear why there are two of them and how they differ.
&gt;
&gt; I think the second one exists only to have a platform-dependent hook to do things differently on every platform. Long term, I want to refactor this code so that it’s shared and not platform-specific. I think it can be done. In the meantime, I suggest a name that is clearer.

We can create a Pasteboard for drag and drop with the given DragData, and use something like Editor::webContentFromPasteboard() implementing that for other platforms (it&apos;s mac specific now). But that will be easier once I land patch in bug #136802, so I&apos;ll leave just a FIXME here and will submit a new patch once this and #136802 are both fixed.
 
&gt; I’m also not sure that the first function needs to be a class member. Maybe it can just be a function with internal linkages inside the .cpp file and not in the header at all.

Yes, I made it a member only because I needed to call the second one, that is implemented in port specific files. I could also make it public and pass the drag controller to the static function, but I thought it was better to keep them private. In any case, I&apos;ll remove the first one and make the second one static function again in a follow up patch, when moving the implementation to the editor.

&gt; &gt; Source/WebCore/page/win/DragControllerWin.cpp:93
&gt; &gt; +     * Order is richest format first. On OSX this is:
&gt; 
&gt; You just moved this code, but this is a Windows-specific file. Not sure why a list of OS X formats is relevant. Also, it’s “OS X”, not “OSX”.
&gt; 
&gt; I suggest we just drop the comment entirely.

Ok.

&gt; &gt; Source/WebCore/page/win/DragControllerWin.cpp:122
&gt; &gt; +    if (DragDataRef platformDragData = dragData.platformData()) {
&gt; &gt; +        if (containsFilenames(platformDragData)) {
&gt; &gt; +            if (PassRefPtr&lt;DocumentFragment&gt; fragment = fragmentFromFilenames(frame.document(), platformDragData))
&gt; &gt; +                return fragment;
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt; +        if (containsHTML(platformDragData)) {
&gt; &gt; +            if (PassRefPtr&lt;DocumentFragment&gt; fragment = fragmentFromHTML(frame.document(), platformDragData))
&gt; &gt; +                return fragment;
&gt; &gt; +        }
&gt; &gt; +    } else {
&gt; &gt; +        if (containsFilenames(&amp;dragData.dragDataMap())) {
&gt; &gt; +            if (PassRefPtr&lt;DocumentFragment&gt; fragment = fragmentFromFilenames(frame.document(), &amp;dragData.dragDataMap()))
&gt; &gt; +                return fragment;
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt; +        if (containsHTML(&amp;dragData.dragDataMap())) {
&gt; &gt; +            if (PassRefPtr&lt;DocumentFragment&gt; fragment = fragmentFromHTML(frame.document(), &amp;dragData.dragDataMap()))
&gt; &gt; +                return fragment;
&gt; &gt; +        }
&gt; &gt; +    }
&gt; 
&gt; You just moved this code, but sure would be nice to factor this so we don’t have to repeat everything twice.

Agree.

&gt; &gt; Source/WebCore/platform/DragData.h:95
&gt; &gt; +    bool containsURL(FilenameConversionPolicy filenamePolicy = ConvertFilenames) const;
&gt; 
&gt; The argument name filenamePolicy doesn’t add anything and should be removed.
&gt; 
&gt; &gt; Source/WebCore/platform/DragData.h:98
&gt; &gt; +    String asURL(FilenameConversionPolicy filenamePolicy = ConvertFilenames, String* title = 0) const;
&gt; 
&gt; The argument name filenamePolicy doesn’t add anything and should be removed. Should use nullptr rather than 0.
&gt; 
&gt; &gt; Source/WebCore/platform/mac/DragDataMac.mm:111
&gt; &gt; +    // FIXME: It&apos;s not clear this is 100% correct since we know -[NSURL URLWithString:] does not handle
&gt; &gt; +    // all the same cases we handle well in the URL code for creating an NSURL.
&gt; 
&gt; Where was this code moved from? It’s easy for us to rewrite this use WebCore::URL to make the NSURL.

From Editor::plainTextFromPasteboard() in EditorMac.mm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035212</commentid>
    <comment_count>10</comment_count>
      <attachid>238114</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-15 04:49:00 -0700</bug_when>
    <thetext>Created attachment 238114
Patch for landing

Addressed review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035220</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-15 05:10:14 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; &gt; Source/WebCore/page/DragController.h:119
&gt; &gt; &gt; +        static PassRefPtr&lt;DocumentFragment&gt; documentFragmentFromDragData(DragData&amp;, Frame&amp;, Range&amp;, bool allowPlainText, bool&amp; chosePlainText);
&gt; &gt; &gt; +        static PassRefPtr&lt;DocumentFragment&gt; createFragmentFromDragData(DragData&amp;, Frame&amp;, Range&amp;, bool allowPlainText, bool&amp; chosePlainText);
&gt; &gt; 
&gt; &gt; The names of these two functions don’t make it at all clear why there are two of them and how they differ.
&gt; &gt;
&gt; &gt; I think the second one exists only to have a platform-dependent hook to do things differently on every platform. Long term, I want to refactor this code so that it’s shared and not platform-specific. I think it can be done. In the meantime, I suggest a name that is clearer.
&gt; 
&gt; We can create a Pasteboard for drag and drop with the given DragData, and use something like Editor::webContentFromPasteboard() implementing that for other platforms (it&apos;s mac specific now). But that will be easier once I land patch in bug #136802, so I&apos;ll leave just a FIXME here and will submit a new patch once this and #136802 are both fixed.

See https://bugs.webkit.org/show_bug.cgi?id=136819</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035409</commentid>
    <comment_count>12</comment_count>
      <attachid>238158</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-16 01:28:56 -0700</bug_when>
    <thetext>Created attachment 238158
Try to fix windows build

Ok, so it seems I can&apos;t use the ternary operator for the windows refactoring so I&apos;ll try my luck again using a template.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035468</commentid>
    <comment_count>13</comment_count>
      <attachid>238181</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-16 08:14:35 -0700</bug_when>
    <thetext>Created attachment 238181
Try to fix windows build again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035679</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-16 23:28:19 -0700</bug_when>
    <thetext>Committed r173686: &lt;http://trac.webkit.org/changeset/173686&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236510</attachid>
            <date>2014-08-13 03:17:48 -0700</date>
            <delta_ts>2014-08-13 03:52:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-drag-data-layering-violations.diff</filename>
            <type>text/plain</type>
            <size>27299</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3OWYyMjM1Li4wZjdmOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTQtMDgtMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIERyYWdEYXRhIHNob3VsZCBub3QgZGVwZW5kIG9uIENsaXBib2FyZCwgRG9j
dW1lbnRGcmFnbWVudCwgYW5kIERvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIERyYWdEYXRhIHRvIG5vdCBkZXBlbmQgb24gRnJh
bWUsIERvY3VtZW50RnJhZ21lbnQsCisgICAgICAgIERvY3VtZW50IGFuZCBSYW5nZS4gRHJhZ0Rh
dGE6OmFzRnJhZ21lbnQoKSBoYXMgYmVlbiBtb3ZlZCB0bworICAgICAgICBEcmFnQ29udHJvbGxl
ciBhbmQgaW1wbGVtZW50ZWQgaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGUuCisgICAgICAg
IERyYWdEYXRhIG1ldGhvZHMgdXNpbmcgRnJhbWUgaGFzIGJlZW4gcmV3b3JrZWQgaW4gTWFjIHRv
IG5vdCB1c2UKKyAgICAgICAgRnJhbWUsIHNpbmNlIGFsbCBvdGhlciBwb3J0cyB3ZXJlIGlnbm9y
ZWluZyB0aGUgZnJhbWUgcGFyYW1ldGVyLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9jdW1lbnRGcmFnbWVu
dEZyb21EcmFnRGF0YSk6IE1ha2UgaXQKKyAgICAgICAgYSBzdGF0aWMgbWVtYmVyIHRvIGJlIGFi
bGUgdG8gdXNlIGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKCkuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24pOiBVcGRhdGUgdG8KKyAgICAg
ICAgRHJhZ0RhdGEgQVBJIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxl
cjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL2VmbC9EcmFnQ29udHJvbGxlckVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRG
cm9tRHJhZ0RhdGEpOiBNb3ZlCisgICAgICAgIERyYWdEYXRhOjphc0ZyYWdtZW50KCkgaW1wbGVt
ZW50YXRpb24gaGVyZS4KKyAgICAgICAgKiBwYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEp
OiBEaXR0by4KKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRv
LgorICAgICAgICAqIHBhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZs
L0RyYWdEYXRhRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1BsYWluVGV4
dCk6IFJlbW92ZSBGcmFtZSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
Y29udGFpbnNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdE
YXRhOjphc0ZyYWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0Rh
dGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBTYW1l
IGltcGxlbWVudGF0aW9uIGFzIHRoZQorICAgICAgICBFZGl0b3IuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKTogVXNlIFVSTEJ5Q2Fub25pY2FsaXppbmdVUkwo
KSBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIHRoZSBFZGl0b3IgY2xpZW50LgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29u
dGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0RhdGE6OmFzVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFp
blRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbXBh
dGlibGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc0ZyYWdtZW50KTog
RGVsZXRlZC4KKwogMjAxNC0wOC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIEVsZW1lbnRzIHdob3NlIGNvbnRlbnRzIHN0YXJ0IHdpdGggYW4g
YXN0cmFsIFVuaWNvZGUgc3ltYm9sIGRpc2FwcGVhciB3aGVuIENTUyBgOjpmaXJzdC1sZXR0ZXJg
IGlzIGFwcGxpZWQgdG8gdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApp
bmRleCAxYjE5ZmU5Li5mNjQ3NDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcApAQCAtMTE0LDI1ICsxMTQsMjUgQEAgRHJhZ0NvbnRyb2xsZXI6On5EcmFnQ29udHJvbGxl
cigpCiAgICAgbV9jbGllbnQuZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKIH0KIAotc3RhdGlj
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0
YShEcmFnRGF0YSYgZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSwgUmFuZ2UmIGNvbnRleHQsIGJvb2wg
YWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQorUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6ZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShE
cmFnRGF0YSYgZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSwgUmFuZ2UmIGNvbnRleHQsIGJvb2wgYWxs
b3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQogewogICAgIGNob3NlUGxhaW5UZXh0
ID0gZmFsc2U7CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBjb250ZXh0Lm93bmVyRG9jdW1l
bnQoKTsKICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpKSB7Ci0g
ICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZHJhZ0Rh
dGEuYXNGcmFnbWVudChmcmFtZSwgY29udGV4dCwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5U
ZXh0KSkKKyAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YShkcmFnRGF0YSwgZnJhbWUsIGNvbnRleHQsIGFs
bG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21l
bnQ7CiAKLSAgICAgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKGZyYW1lLCBEcmFnRGF0YTo6
RG9Ob3RDb252ZXJ0RmlsZW5hbWVzKSkgeworICAgICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNV
UkwoRHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcykpIHsKICAgICAgICAgICAgIFN0cmlu
ZyB0aXRsZTsKLSAgICAgICAgICAgIFN0cmluZyB1cmwgPSBkcmFnRGF0YS5hc1VSTChmcmFtZSwg
RHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcywgJnRpdGxlKTsKKyAgICAgICAgICAgIFN0
cmluZyB1cmwgPSBkcmFnRGF0YS5hc1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVz
LCAmdGl0bGUpOwogICAgICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgUmVmUHRyPEhUTUxBbmNob3JFbGVtZW50PiBhbmNob3IgPSBIVE1MQW5jaG9yRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgICAgICAgICBhbmNob3ItPnNldEhyZWYodXJs
KTsKICAgICAgICAgICAgICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIFRyeSB0aGUgcGxhaW4gdGV4dCBmaXJzdCBiZWNhdXNlIHRoZSB1cmwgbWlnaHQg
YmUgbm9ybWFsaXplZCBvciBlc2NhcGVkLgogICAgICAgICAgICAgICAgICAgICBpZiAoZHJhZ0Rh
dGEuY29udGFpbnNQbGFpblRleHQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0g
ZHJhZ0RhdGEuYXNQbGFpblRleHQoZnJhbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgdGl0
bGUgPSBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAodGl0
bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB1cmw7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdE
CiAgICAgfQogICAgIGlmIChhbGxvd1BsYWluVGV4dCAmJiBkcmFnRGF0YS5jb250YWluc1BsYWlu
VGV4dCgpKSB7CiAgICAgICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4dCwgZHJhZ0RhdGEuYXNQbGFpblRleHQoZnJh
bWUpKS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4
dCwgZHJhZ0RhdGEuYXNQbGFpblRleHQoKSkuZ2V0KCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7
CkBAIC0yMzQsNyArMjM0LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVy
YXRpb24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBt
X2NsaWVudC53aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25B
Y3Rpb25Mb2FkLCBkcmFnRGF0YSk7Ci0gICAgbV9wYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmxv
YWQoRnJhbWVMb2FkUmVxdWVzdCgmbV9wYWdlLm1haW5GcmFtZSgpLCBSZXNvdXJjZVJlcXVlc3Qo
ZHJhZ0RhdGEuYXNVUkwoJm1fcGFnZS5tYWluRnJhbWUoKSkpKSk7CisgICAgbV9wYWdlLm1haW5G
cmFtZSgpLmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgmbV9wYWdlLm1haW5GcmFtZSgp
LCBSZXNvdXJjZVJlcXVlc3QoZHJhZ0RhdGEuYXNVUkwoKSkpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBib29sIHNldFNlbGVjdGlvblRvRHJhZ0Nh
cmV0KEZyYW1lKiBmcmFtZSwgVmlzaWJsZVNlbGVjdGlvbiYgZHJhZ0NhcmV0LCBSCiBib29sIERy
YWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1l
LCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgQVNTRVJUKG1fcGFnZS5kcmFnQ2FyZXRDb250
cm9sbGVyKCkuaGFzQ2FyZXQoKSk7Ci0gICAgU3RyaW5nIHRleHQgPSBtX3BhZ2UuZHJhZ0NhcmV0
Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyBlbXB0eVN0cmluZygpIDog
ZHJhZ0RhdGEuYXNQbGFpblRleHQoaW5uZXJGcmFtZSk7CisgICAgU3RyaW5nIHRleHQgPSBtX3Bh
Z2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyBlbXB0
eVN0cmluZygpIDogZHJhZ0RhdGEuYXNQbGFpblRleHQoKTsKICAgICBOb2RlKiB0YXJnZXQgPSBp
bm5lckZyYW1lLT5lZGl0b3IoKS5maW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS5kcmFnQ2FyZXRD
b250cm9sbGVyKCkuY2FyZXRQb3NpdGlvbigpKTsKICAgICByZXR1cm4gdGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKSwgdGV4dCksIElHTk9SRV9FWENFUFRJT04pOwogfQpAQCAtNTE3LDcgKzUxNyw3
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEmIGRyYWdE
YXRhKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgU3Ry
aW5nIHRleHQgPSBkcmFnRGF0YS5hc1BsYWluVGV4dChpbm5lckZyYW1lLmdldCgpKTsKKyAgICAg
ICAgU3RyaW5nIHRleHQgPSBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgICAgICBpZiAodGV4
dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVkaXRvcigpLnNob3VsZEluc2VydFRleHQodGV4
dCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
aAppbmRleCA0N2UzY2M5Li45NWJiNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIERh
dGFUcmFuc2ZlcjsKICAgICBjbGFzcyBEb2N1bWVudDsKKyAgICBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogICAgIGNsYXNzIERyYWdDbGllbnQ7CiAgICAgY2xhc3MgRHJhZ0RhdGE7CiAgICAgY2xh
c3MgRWxlbWVudDsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIEludFJlY3Q7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZl
bnQ7CisgICAgY2xhc3MgUmFuZ2U7CiAKICAgICBzdHJ1Y3QgRHJhZ1N0YXRlOwogCkBAIC0xMTMs
NiArMTE1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGNsZWFudXBBZnRl
clN5c3RlbURyYWcoKTsKICAgICAgICAgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0
YVRyYW5zZmVyJiwgRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwpOwog
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJh
Z21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmLCBGcmFtZSosIFJhbmdlJiwgYm9vbCBhbGxvd1Bs
YWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YShEcmFnRGF0YSYs
IEZyYW1lKiwgUmFuZ2UmLCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4
dCk7CisKICAgICAgICAgUGFnZSYgbV9wYWdlOwogICAgICAgICBEcmFnQ2xpZW50JiBtX2NsaWVu
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJF
ZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3BwCmlu
ZGV4IDlkYjM4NjguLjhjYTM5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZs
L0RyYWdDb250cm9sbGVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFn
Q29udHJvbGxlckVmbC5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtNzEsNCArNzMsOSBAQCB2
b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0YVRyYW5zZmVy
JiwgRWxlbWVudCYsIGNvbnN0IFVSTAogewogfQogCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IERyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YShEcmFnRGF0YSYs
IEZyYW1lKiwgUmFuZ2UmLCBib29sIC8qYWxsb3dQbGFpblRleHQqLywgYm9vbCYgLypjaG9zZVBs
YWluVGV4dCovKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKaW5kZXggNTRmYzhlNi4uMTNhYTky
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcApA
QCAtMjYsMTMgKzI2LDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0Nv
bnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKICNpbmNsdWRlICJEYXRh
VHJhbnNmZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RnJh
Z21lbnQuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCisjaW5jbHVkZSAibWFya3VwLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTMsNyArNTcsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpp
c0NvcHlLZXlEb3duKERyYWdEYXRhJikKIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRy
YWdPcGVyYXRpb24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGxv
Z2ljIGlzIGluY29tcGxldGUKLSAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNVUkwoMCkpCisgICAg
aWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9u
Q29weTsKIAogICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKQEAgLTc0LDQgKzc4LDEyIEBA
IHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNm
ZXImIGRhdGFUcmFuc2ZlciwgRWxlbWVuCiAgICAgZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS53
cml0ZUltYWdlKGVsZW1lbnQsIHVybCwgbGFiZWwpOwogfQogCitQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IERyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YShEcmFn
RGF0YSYgZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSwgUmFuZ2UmLCBib29sIC8qYWxsb3dQbGFpblRl
eHQqLywgYm9vbCYgLypjaG9zZVBsYWluVGV4dCovKQoreworICAgIGlmICghZHJhZ0RhdGEucGxh
dGZvcm1EYXRhKCktPmhhc01hcmt1cCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpm
cmFtZS0+ZG9jdW1lbnQoKSwgZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCktPm1hcmt1cCgpLCAiIik7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9s
bGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0K
aW5kZXggOTRhZmExYy4uYWE0NTE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJh
Z0NvbnRyb2xsZXJNYWMubW0KQEAgLTI5LDEzICsyOSwxOCBAQAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCiAKICNpbXBvcnQgIkRhdGFUcmFuc2Zlci5oIgorI2ltcG9ydCAiRG9jdW1lbnQuaCIK
KyNpbXBvcnQgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbXBvcnQgIkRyYWdDbGllbnQuaCIKICNp
bXBvcnQgIkRyYWdEYXRhLmgiCisjaW1wb3J0ICJFZGl0b3IuaCIKKyNpbXBvcnQgIkVkaXRvckNs
aWVudC5oIgogI2ltcG9ydCAiRWxlbWVudC5oIgogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1w
b3J0ICJNYWluRnJhbWUuaCIKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmQu
aCIKKyNpbXBvcnQgIlJhbmdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTQsNyAr
NTksNyBAQCBib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKERyYWdEYXRhJiBkcmFn
RGF0YSkKICAgICAKIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24o
RHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIGlmICgoZHJhZ0RhdGEuZmxhZ3MoKSAmIERyYWdB
cHBsaWNhdGlvbklzTW9kYWwpIHx8ICFkcmFnRGF0YS5jb250YWluc1VSTCgmbV9wYWdlLm1haW5G
cmFtZSgpKSkKKyAgICBpZiAoKGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFnQXBwbGljYXRpb25Jc01v
ZGFsKSB8fCAhZHJhZ0RhdGEuY29udGFpbnNVUkwoKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVy
YXRpb25Ob25lOwogCiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSB8fCAoIShkcmFnRGF0
YS5mbGFncygpICYgKERyYWdBcHBsaWNhdGlvbkhhc0F0dGFjaGVkU2hlZXQgfCBEcmFnQXBwbGlj
YXRpb25Jc1NvdXJjZSkpKSkKQEAgLTg3LDYgKzkyLDEyIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6
OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRWxl
bWVuCiAgICAgbV9jbGllbnQuZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGRhdGFUcmFuc2Zlci5w
YXN0ZWJvYXJkKCkubmFtZSgpLCBlbGVtZW50LCB1cmwsIGxhYmVsLCBlbGVtZW50LmRvY3VtZW50
KCkuZnJhbWUoKSk7CiB9CiAKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0NvbnRy
b2xsZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiBkcmFnRGF0YSwgRnJh
bWUqIGZyYW1lLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hv
c2VQbGFpblRleHQpCit7CisgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKGRyYWdEYXRhLnBhc3Rl
Ym9hcmROYW1lKCkpOworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkud2ViQ29udGVudEZyb21Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmQsIGNvbnRleHQsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWlu
VGV4dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShE
UkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29u
dHJvbGxlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldp
bi5jcHAKaW5kZXggZDE5Y2E4OC4uMzIxYTAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
d2luL0RyYWdDb250cm9sbGVyV2luLmNwcApAQCAtMjYsNyArMjYsMTAgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgogCisjaW5jbHVkZSAiQ2xpcGJv
YXJkVXRpbGl0aWVzV2luLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVyLmgiCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRHJh
Z0RhdGEuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24u
aCIKQEAgLTgzLDQgKzg2LDQwIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRWxlbWVuCiAgICAgcGFzdGVi
b2FyZC53cml0ZU1hcmt1cChjcmVhdGVNYXJrdXAoZWxlbWVudCwgSW5jbHVkZU5vZGUsIDAsIFJl
c29sdmVBbGxVUkxzKSk7CiB9CiAKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0Nv
bnRyb2xsZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiBkcmFnRGF0YSwg
RnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wgLyphbGxvd1BsYWluVGV4dCovLCBib29sJiAvKmNo
b3NlUGxhaW5UZXh0Ki8pCit7CisgICAgLyoKKyAgICAgKiBPcmRlciBpcyByaWNoZXN0IGZvcm1h
dCBmaXJzdC4gT24gT1NYIHRoaXMgaXM6CisgICAgICogKiBXZWIgQXJjaGl2ZQorICAgICAqICog
RmlsZW5hbWVzCisgICAgICogKiBIVE1MCisgICAgICogKiBSVEYKKyAgICAgKiAqIFRJRkYKKyAg
ICAgKiAqIFBJQ1QKKyAgICAgKi8KKworICAgIGlmIChEcmFnRGF0YVJlZiBwbGF0Zm9ybURyYWdE
YXRhID0gZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpIHsKKyAgICAgICAgaWYgKGNvbnRhaW5zRmls
ZW5hbWVzKHBsYXRmb3JtRHJhZ0RhdGEpKSB7CisgICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhmcmFtZS0+
ZG9jdW1lbnQoKSwgcGxhdGZvcm1EcmFnRGF0YSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZy
YWdtZW50OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbnRhaW5zSFRNTChwbGF0Zm9ybURy
YWdEYXRhKSkgeworICAgICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBmcmFnbWVudEZyb21IVE1MKGZyYW1lLT5kb2N1bWVudCgpLCBwbGF0Zm9ybURy
YWdEYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgeworICAgICAgICBpZiAoY29udGFpbnNGaWxlbmFtZXMoJmRyYWdEYXRhLmRyYWdE
YXRhTWFwKCkpKSB7CisgICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhmcmFtZS0+ZG9jdW1lbnQoKSwgJmRy
YWdEYXRhLmRyYWdEYXRhTWFwKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChjb250YWluc0hUTUwoJmRyYWdEYXRhLmRyYWdEYXRh
TWFwKCkpKSB7CisgICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IGZyYWdtZW50RnJvbUhUTUwoZnJhbWUtPmRvY3VtZW50KCksICZkcmFnRGF0YS5k
cmFnRGF0YU1hcCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnRGF0YS5oCmluZGV4IGYzYTM1YTcuLjAwYWE5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaApAQCAtNjAsMTAgKzYwLDcgQEAgdHlwZWRlZiB2b2lkKiBEcmFnRGF0YVJlZjsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGcmFtZTsKLWNsYXNzIERvY3VtZW50RnJhZ21l
bnQ7CiBjbGFzcyBVUkw7Ci1jbGFzcyBSYW5nZTsKIAogZW51bSBEcmFnQXBwbGljYXRpb25GbGFn
cyB7CiAgICAgRHJhZ0FwcGxpY2F0aW9uTm9uZSA9IDAsCkBAIC05NSwxNCArOTIsMTMgQEAgcHVi
bGljOgogICAgIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9h
cHBsaWNhdGlvbkZsYWdzOyB9CiAgICAgRHJhZ0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhOyB9CiAgICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzazsgfQotICAgIGJvb2wgY29udGFpbnNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZl
cnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVzKSBjb25zdDsKKyAg
ICBib29sIGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGlj
eSA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNQbGFpblRleHQo
KSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdDsKLSAg
ICBTdHJpbmcgYXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQ
b2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlID0gMCkgY29uc3Q7Ci0gICAg
U3RyaW5nIGFzUGxhaW5UZXh0KEZyYW1lKikgY29uc3Q7CisgICAgU3RyaW5nIGFzVVJMKEZpbGVu
YW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMsIFN0
cmluZyogdGl0bGUgPSAwKSBjb25zdDsKKyAgICBTdHJpbmcgYXNQbGFpblRleHQoKSBjb25zdDsK
ICAgICB2b2lkIGFzRmlsZW5hbWVzKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAgICAgQ29sb3Ig
YXNDb2xvcigpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gYXNGcmFn
bWVudChGcmFtZSosIFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBj
aG9zZVBsYWluVGV4dCkgY29uc3Q7CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdDsK
ICAgICBib29sIGNvbnRhaW5zQ29sb3IoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zRmlsZXMo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0
YUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCmlu
ZGV4IGRjYzhlZmIuLjRiMjg1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9EcmFnRGF0YUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Ry
YWdEYXRhRWZsLmNwcApAQCAtMjEsOSArMjEsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkRyYWdEYXRhLmgiCiAKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRv
Y3VtZW50RnJhZ21lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIERyYWdEYXRh
OjpjYW5TbWFydFJlcGxhY2UoKSBjb25zdApAQCAtNTUsNyArNTIsNyBAQCBib29sIERyYWdEYXRh
Ojpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJp
bmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KEZyYW1lKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6
YXNQbGFpblRleHQoKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KQEAgLTcwLDE5
ICs2NywxNCBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZy
YW1lKiwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5KSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5KSBjb25zdAogewogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSosIEZpbGVuYW1lQ29udmVy
c2lvblBvbGljeSwgU3RyaW5nKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5h
bWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnRGF0YTo6YXNGcmFnbWVu
dChGcmFtZSosIFJhbmdlJiwgYm9vbCwgYm9vbCYpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCmluZGV4
IDJiZjM0ZGYuLjU5OGM0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EcmFnRGF0YUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdE
YXRhR3RrLmNwcApAQCAtMTgsMTAgKzE4LDYgQEAKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogCiAj
aW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVk
ZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAibWFy
a3VwLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNyArNTEsNyBAQCBib29sIERy
YWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1E
cmFnRGF0YS0+aGFzVGV4dCgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KEZy
YW1lKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogewogICAg
IHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGEtPnRleHQoKTsKIH0KQEAgLTY3LDE1ICs2MywxNSBA
QCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRh
aW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewotICAgIHJldHVybiBjb250YWluc1BsYWlu
VGV4dCgpIHx8IGNvbnRhaW5zVVJMKDApIHx8IG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzTWFya3Vw
KCkgfHwgY29udGFpbnNDb2xvcigpIHx8IGNvbnRhaW5zRmlsZXMoKTsKKyAgICByZXR1cm4gY29u
dGFpbnNQbGFpblRleHQoKSB8fCBjb250YWluc1VSTCgpIHx8IG1fcGxhdGZvcm1EcmFnRGF0YS0+
aGFzTWFya3VwKCkgfHwgY29udGFpbnNDb2xvcigpIHx8IGNvbnRhaW5zRmlsZXMoKTsKIH0KIAot
Ym9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNp
b25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VS
TChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuICFhc1VSTChmcmFtZSwgZmlsZW5hbWVQb2xpY3kpLmlzRW1wdHkoKTsKKyAgICByZXR1
cm4gIWFzVVJMKGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CiB9CiAKLVN0cmluZyBEcmFnRGF0
YTo6YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ks
IFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1lQ29u
dmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKICAg
ICBpZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVVJMKCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKQEAgLTkxLDE2ICs4Nyw0IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBG
aWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyoKICAgICByZXR1
cm4gdXJsOwogfQogCi0KLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0RhdGE6OmFz
RnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wsIGJvb2wmKSBjb25zdAotewotICAg
IGlmICghbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNNYXJrdXAoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLT5kb2N1
bWVudCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEtPm1hcmt1cCgpLCAiIik7Ci19Ci0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBkNTJhNGVhLi45Y2Iy
MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0y
NywxOCArMjcsMTEgQEAKICNpbXBvcnQgIkRyYWdEYXRhLmgiCiAKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkRvY3VtZW50RnJhZ21lbnQu
aCIKLSNpbXBvcnQgIkRPTURvY3VtZW50RnJhZ21lbnQuaCIKLSNpbXBvcnQgIkRPTURvY3VtZW50
RnJhZ21lbnRJbnRlcm5hbC5oIgotI2ltcG9ydCAiRWRpdG9yLmgiCi0jaW1wb3J0ICJFZGl0b3JD
bGllbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkU3RyYXRlZ3kuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2ltcG9ydCAiUmFuZ2UuaCIKKyNpbXBv
cnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEw
Nyw5ICsxMDAsMjAgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQoKSBjb25zdAog
ICAgICAgICB8fCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnN0
cmluZ0ZvclR5cGUoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSksIG1fcGFzdGVib2FyZE5hbWUpLmxl
bmd0aCgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KEZyYW1lICpmcmFtZSkg
Y29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogewotICAgIHJldHVy
biBmcmFtZS0+ZWRpdG9yKCkucmVhZFBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJk
OjpjcmVhdGUobV9wYXN0ZWJvYXJkTmFtZSkpOworICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZCht
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICBQYXN0ZWJvYXJkUGxhaW5UZXh0IHRleHQ7CisgICAgcGFz
dGVib2FyZC5yZWFkKHRleHQpOworICAgIFN0cmluZyBzdHJpbmcgPSB0ZXh0LnRleHQ7CisKKyAg
ICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhpcyBpcyAxMDAlIGNvcnJlY3Qgc2luY2Ugd2Ug
a25vdyAtW05TVVJMIFVSTFdpdGhTdHJpbmc6XSBkb2VzIG5vdCBoYW5kbGUKKyAgICAvLyBhbGwg
dGhlIHNhbWUgY2FzZXMgd2UgaGFuZGxlIHdlbGwgaW4gdGhlIFVSTCBjb2RlIGZvciBjcmVhdGlu
ZyBhbiBOU1VSTC4KKyAgICBpZiAodGV4dC5pc1VSTCkKKyAgICAgICAgcmV0dXJuIHVzZXJWaXNp
YmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworCisgICAgLy8gRklYTUU6
IFdURiBzaG91bGQgb2ZmZXIgYSBub24tTWFjLXNwZWNpZmljIHdheSB0byBjb252ZXJ0IHN0cmlu
ZyB0byBwcmVjb21wb3NlZCBmb3JtIHNvIHdlIGNhbiBkbyBpdCBmb3IgYWxsIHBsYXRmb3Jtcy4K
KyAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5v
bmljYWxNYXBwaW5nXTsKIH0KIAogQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdApAQCAt
MTM0LDEyICsxMzgsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVu
dCgpIGNvbnN0CiAgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlUE5HKSk7
CiB9CiAgICAgCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGcmFtZSogZnJhbWUsIEZpbGVu
YW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6
OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29u
c3QKIHsKLSAgICByZXR1cm4gIWFzVVJMKGZyYW1lLCBmaWxlbmFtZVBvbGljeSkuaXNFbXB0eSgp
OworICAgIHJldHVybiAhYXNVUkwoZmlsZW5hbWVQb2xpY3kpLmlzRW1wdHkoKTsKIH0KIAotU3Ry
aW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGlj
eSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVD
b252ZXJzaW9uUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBV
c2UgZmlsZW5hbWVQb2xpY3kuCiAKQEAgLTE1MSwxNyArMTU1LDEzIEBAIFN0cmluZyBEcmFnRGF0
YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ksIFN0cmluZyog
dGl0bGUpIGNvCiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBlcywgbV9wYXN0
ZWJvYXJkTmFtZSk7Ci0gICAgCi0gICAgLy8gRklYTUU6IHVzaW5nIHRoZSBlZGl0b3JDbGllbnQg
dG8gY2FsbCBpbnRvIFdlYktpdCwgZm9yIG5vdywgc2luY2UgCi0gICAgLy8gY2FsbGluZyB3ZWJr
aXRfY2Fub25pY2FsaXplIGZyb20gV2ViQ29yZSBpbnZvbHZlcyBtaWdyYXRpbmcgYSBzaXphYmxl
IGFtb3VudCBvZiAKLSAgICAvLyBoZWxwZXIgY29kZSB0aGF0IHNob3VsZCBlaXRoZXIgYmUgZG9u
ZSBpbiBhIHNlcGFyYXRlIHBhdGNoIG9yIGZpZ3VyZWQgb3V0IGluIGFub3RoZXIgd2F5LgotICAg
IAorCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1VSTFBib2FyZFR5cGUpKSkgewog
ICAgICAgICBOU1VSTCAqVVJMRnJvbVBhc3RlYm9hcmQgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnN0cmluZ0ZvclR5cGUo
U3RyaW5nKE5TVVJMUGJvYXJkVHlwZSksIG1fcGFzdGVib2FyZE5hbWUpXTsKICAgICAgICAgTlNT
dHJpbmcgKnNjaGVtZSA9IFtVUkxGcm9tUGFzdGVib2FyZCBzY2hlbWVdOwogICAgICAgICAvLyBD
YW5ub3QgZHJvcCBvdGhlciBzY2hlbWVzIHVubGVzcyA8cmRhcjovL3Byb2JsZW0vMTA1NjI2NjI+
IGFuZCA8cmRhcjovL3Byb2JsZW0vMTExODczMTU+IGFyZSBmaXhlZC4KICAgICAgICAgaWYgKFtz
Y2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cCJdIHx8IFtzY2hlbWUgaXNFcXVhbFRvU3RyaW5n
OkAiaHR0cHMiXSkKLSAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRvcigpLmNsaWVudCgp
LT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKKyAg
ICAgICAgICAgIHJldHVybiBbVVJMQnlDYW5vbmljYWxpemluZ1VSTChVUkxGcm9tUGFzdGVib2Fy
ZCkgYWJzb2x1dGVTdHJpbmddOwogICAgIH0KICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMo
U3RyaW5nKE5TU3RyaW5nUGJvYXJkVHlwZSkpKSB7CkBAIC0xNzEsNyArMTcxLDcgQEAgU3RyaW5n
IERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSwg
U3RyaW5nKiB0aXRsZSkgY28KICAgICAgICAgLy8gVGhlIHJlc3VsdCBvZiB0aGlzIGZ1bmN0aW9u
IGlzIHVzZWQgdG8gaW5pdGlhdGUgbmF2aWdhdGlvbiwgc28gd2Ugc2hvdWxkbid0IGFsbG93IGFy
Yml0cmFyeSBmaWxlIFVSTHMuCiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWxsb3cgb25s
eSBodHRwIGZhbWlseSBzY2hlbWVzLCBvciBhbnl0aGluZyBub24tbG9jYWw/CiAgICAgICAgIGlm
IChbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSB8fCBbc2NoZW1lIGlzRXF1YWxUb1N0
cmluZzpAImh0dHBzIl0pCi0gICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0b3IoKS5jbGll
bnQoKS0+Y2Fub25pY2FsaXplVVJMKFVSTEZyb21QYXN0ZWJvYXJkKSBhYnNvbHV0ZVN0cmluZ107
CisgICAgICAgICAgICByZXR1cm4gW1VSTEJ5Q2Fub25pY2FsaXppbmdVUkwoVVJMRnJvbVBhc3Rl
Ym9hcmQpIGFic29sdXRlU3RyaW5nXTsKICAgICB9CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRh
aW5zKFN0cmluZyhOU0ZpbGVuYW1lc1Bib2FyZFR5cGUpKSkgewpAQCAtMTgxLDE5ICsxODEsMTMg
QEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lv
blBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY28KICAgICAgICAgICAgIEJPT0wgaXNEaXJlY3Rvcnk7
CiAgICAgICAgICAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOmZpbGVzWzBdIGlzRGlyZWN0b3J5OiZpc0RpcmVjdG9yeV0gJiYgaXNEaXJlY3Rv
cnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICAgICAgcmV0dXJu
IFtmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOmZpbGVzWzBdXSkgYWJzb2x1dGVTdHJpbmddOworICAgICAgICAgICAgcmV0dXJu
IFtVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZXNbMF1d
KSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgcmV0dXJuIFN0
cmluZygpOyAgICAgICAgCiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0Rh
dGE6OmFzRnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYgcmFuZ2UsIGJvb2wgYWxsb3dQbGFp
blRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KSBjb25zdAotewotICAgIFBhc3RlYm9hcmQgcGFz
dGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLndl
YkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCByYW5nZSwgYWxsb3dQbGFpblRleHQs
IGNob3NlUGxhaW5UZXh0KTsKLX0KLSAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdEYXRhV2luLmNwcAppbmRleCA1YTdmNzM2Li43MDA1NzBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKQEAgLTI5LDEwICsyOSw2IEBACiAKICNp
bmNsdWRlICJDT01QdHIuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCIKLSNp
bmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKLSNpbmNsdWRl
ICJNYXJrdXAuaCIKLSNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5o
IgogI2luY2x1ZGUgPG9iamlkbC5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KQEAgLTU2LDcgKzUy
LDcgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiBkYXRhLCBjb25zdCBJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnMKIHsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kp
IGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xp
Y3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0CiB7CiAgICAgaWYgKG1fcGxhdGZvcm1EcmFnRGF0YSkK
ICAgICAgICAgcmV0dXJuIFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5R2V0RGF0
YSh1cmxXRm9ybWF0KCkpKSAKQEAgLTEwMSw3ICs5Nyw3IEBAIHZvaWQgRHJhZ0RhdGE6OmdldERy
YWdGaWxlQ29udGVudERhdGEoaW50IHNpemUsIHZvaWQqIGRhdGFCbG9iKQogICAgICAgICBnZXRG
aWxlQ29udGVudERhdGEobV9wbGF0Zm9ybURyYWdEYXRhLCBzaXplLCBkYXRhQmxvYik7CiB9CiAK
LVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kg
ZmlsZW5hbWVQb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFz
VVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRs
ZSkgY29uc3QKIHsKICAgICByZXR1cm4gKG1fcGxhdGZvcm1EcmFnRGF0YSkgPyBnZXRVUkwobV9w
bGF0Zm9ybURyYWdEYXRhLCBmaWxlbmFtZVBvbGljeSwgdGl0bGUpIDogZ2V0VVJMKCZtX2RyYWdE
YXRhTWFwLCBmaWxlbmFtZVBvbGljeSwgdGl0bGUpOwogfQpAQCAtMTgxLDcgKzE3Nyw3IEBAIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3QKICAgICByZXR1cm4gbV9kcmFn
RGF0YU1hcC5jb250YWlucyhwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0KSB8fCBtX2RyYWdE
YXRhTWFwLmNvbnRhaW5zKHBsYWluVGV4dEZvcm1hdCgpLT5jZkZvcm1hdCk7CiB9CiAKLVN0cmlu
ZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoRnJhbWUqKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjph
c1BsYWluVGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChtX3BsYXRmb3JtRHJhZ0RhdGEpID8g
Z2V0UGxhaW5UZXh0KG1fcGxhdGZvcm1EcmFnRGF0YSkgOiBnZXRQbGFpblRleHQoJm1fZHJhZ0Rh
dGFNYXApOwogfQpAQCAtMjAwLDQ4ICsxOTYsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y2FuU21hcnRS
ZXBsYWNlKCkgY29uc3QKIAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVu
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnRhaW5zUGxhaW5UZXh0KCkgfHwgY29udGFpbnNV
UkwoMCkgCisgICAgcmV0dXJuIGNvbnRhaW5zUGxhaW5UZXh0KCkgfHwgY29udGFpbnNVUkwoKQog
ICAgICAgICB8fCAoKG1fcGxhdGZvcm1EcmFnRGF0YSkgPyAoY29udGFpbnNIVE1MKG1fcGxhdGZv
cm1EcmFnRGF0YSkgfHwgY29udGFpbnNGaWxlbmFtZXMobV9wbGF0Zm9ybURyYWdEYXRhKSkKICAg
ICAgICAgICAgIDogKGNvbnRhaW5zSFRNTCgmbV9kcmFnRGF0YU1hcCkgfHwgY29udGFpbnNGaWxl
bmFtZXMoJm1fZHJhZ0RhdGFNYXApKSkKICAgICAgICAgfHwgY29udGFpbnNDb2xvcigpOwogfQog
Ci1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERyYWdEYXRhOjphc0ZyYWdtZW50KEZyYW1l
KiBmcmFtZSwgUmFuZ2UmLCBib29sLCBib29sJikgY29uc3QKLXsgICAgIAotICAgIC8qCi0gICAg
ICogT3JkZXIgaXMgcmljaGVzdCBmb3JtYXQgZmlyc3QuIE9uIE9TWCB0aGlzIGlzOgotICAgICAq
ICogV2ViIEFyY2hpdmUKLSAgICAgKiAqIEZpbGVuYW1lcwotICAgICAqICogSFRNTAotICAgICAq
ICogUlRGCi0gICAgICogKiBUSUZGCi0gICAgICogKiBQSUNUCi0gICAgICovCi0gICAgIAotICAg
IGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEpIHsKLSAgICAgICAgaWYgKGNvbnRhaW5zRmlsZW5hbWVz
KG1fcGxhdGZvcm1EcmFnRGF0YSkpIHsKLSAgICAgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tRmlsZW5hbWVzKGZyYW1lLT5kb2N1
bWVudCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEpKQotICAgICAgICAgICAgICAgIHJldHVybiBmcmFn
bWVudDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb250YWluc0hUTUwobV9wbGF0Zm9ybURy
YWdEYXRhKSkgewotICAgICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZnJhZ21lbnQgPSBmcmFnbWVudEZyb21IVE1MKGZyYW1lLT5kb2N1bWVudCgpLCBtX3BsYXRmb3Jt
RHJhZ0RhdGEpKQotICAgICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKLSAgICAgICAgfQot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChjb250YWluc0ZpbGVuYW1lcygmbV9kcmFnRGF0YU1h
cCkpIHsKLSAgICAgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50ID0gZnJhZ21lbnRGcm9tRmlsZW5hbWVzKGZyYW1lLT5kb2N1bWVudCgpLCAmbV9kcmFnRGF0
YU1hcCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGNvbnRhaW5zSFRNTCgmbV9kcmFnRGF0YU1hcCkpIHsKLSAgICAgICAgICAgIGlm
IChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tSFRN
TChmcmFtZS0+ZG9jdW1lbnQoKSwgJm1fZHJhZ0RhdGFNYXApKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmcmFnbWVudDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQogQ29s
b3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBDb2xvcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236511</attachid>
            <date>2014-08-13 03:52:29 -0700</date>
            <delta_ts>2014-08-13 05:43:03 -0700</delta_ts>
            <desc>Try to fix EFL and Win build</desc>
            <filename>wcore-drag-data-layering-violations2.diff</filename>
            <type>text/plain</type>
            <size>28169</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3OWYyMjM1Li4wZjdmOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTQtMDgtMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIERyYWdEYXRhIHNob3VsZCBub3QgZGVwZW5kIG9uIENsaXBib2FyZCwgRG9j
dW1lbnRGcmFnbWVudCwgYW5kIERvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIERyYWdEYXRhIHRvIG5vdCBkZXBlbmQgb24gRnJh
bWUsIERvY3VtZW50RnJhZ21lbnQsCisgICAgICAgIERvY3VtZW50IGFuZCBSYW5nZS4gRHJhZ0Rh
dGE6OmFzRnJhZ21lbnQoKSBoYXMgYmVlbiBtb3ZlZCB0bworICAgICAgICBEcmFnQ29udHJvbGxl
ciBhbmQgaW1wbGVtZW50ZWQgaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGUuCisgICAgICAg
IERyYWdEYXRhIG1ldGhvZHMgdXNpbmcgRnJhbWUgaGFzIGJlZW4gcmV3b3JrZWQgaW4gTWFjIHRv
IG5vdCB1c2UKKyAgICAgICAgRnJhbWUsIHNpbmNlIGFsbCBvdGhlciBwb3J0cyB3ZXJlIGlnbm9y
ZWluZyB0aGUgZnJhbWUgcGFyYW1ldGVyLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9jdW1lbnRGcmFnbWVu
dEZyb21EcmFnRGF0YSk6IE1ha2UgaXQKKyAgICAgICAgYSBzdGF0aWMgbWVtYmVyIHRvIGJlIGFi
bGUgdG8gdXNlIGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKCkuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24pOiBVcGRhdGUgdG8KKyAgICAg
ICAgRHJhZ0RhdGEgQVBJIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxl
cjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL2VmbC9EcmFnQ29udHJvbGxlckVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRG
cm9tRHJhZ0RhdGEpOiBNb3ZlCisgICAgICAgIERyYWdEYXRhOjphc0ZyYWdtZW50KCkgaW1wbGVt
ZW50YXRpb24gaGVyZS4KKyAgICAgICAgKiBwYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEp
OiBEaXR0by4KKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRv
LgorICAgICAgICAqIHBhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZs
L0RyYWdEYXRhRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1BsYWluVGV4
dCk6IFJlbW92ZSBGcmFtZSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
Y29udGFpbnNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdE
YXRhOjphc0ZyYWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0Rh
dGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBTYW1l
IGltcGxlbWVudGF0aW9uIGFzIHRoZQorICAgICAgICBFZGl0b3IuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKTogVXNlIFVSTEJ5Q2Fub25pY2FsaXppbmdVUkwo
KSBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIHRoZSBFZGl0b3IgY2xpZW50LgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29u
dGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0RhdGE6OmFzVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFp
blRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbXBh
dGlibGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc0ZyYWdtZW50KTog
RGVsZXRlZC4KKwogMjAxNC0wOC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIEVsZW1lbnRzIHdob3NlIGNvbnRlbnRzIHN0YXJ0IHdpdGggYW4g
YXN0cmFsIFVuaWNvZGUgc3ltYm9sIGRpc2FwcGVhciB3aGVuIENTUyBgOjpmaXJzdC1sZXR0ZXJg
IGlzIGFwcGxpZWQgdG8gdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApp
bmRleCAxYjE5ZmU5Li5mNjQ3NDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcApAQCAtMTE0LDI1ICsxMTQsMjUgQEAgRHJhZ0NvbnRyb2xsZXI6On5EcmFnQ29udHJvbGxl
cigpCiAgICAgbV9jbGllbnQuZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKIH0KIAotc3RhdGlj
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0
YShEcmFnRGF0YSYgZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSwgUmFuZ2UmIGNvbnRleHQsIGJvb2wg
YWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQorUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6ZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShE
cmFnRGF0YSYgZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSwgUmFuZ2UmIGNvbnRleHQsIGJvb2wgYWxs
b3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQogewogICAgIGNob3NlUGxhaW5UZXh0
ID0gZmFsc2U7CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBjb250ZXh0Lm93bmVyRG9jdW1l
bnQoKTsKICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpKSB7Ci0g
ICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZHJhZ0Rh
dGEuYXNGcmFnbWVudChmcmFtZSwgY29udGV4dCwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5U
ZXh0KSkKKyAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YShkcmFnRGF0YSwgZnJhbWUsIGNvbnRleHQsIGFs
bG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21l
bnQ7CiAKLSAgICAgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKGZyYW1lLCBEcmFnRGF0YTo6
RG9Ob3RDb252ZXJ0RmlsZW5hbWVzKSkgeworICAgICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNV
UkwoRHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcykpIHsKICAgICAgICAgICAgIFN0cmlu
ZyB0aXRsZTsKLSAgICAgICAgICAgIFN0cmluZyB1cmwgPSBkcmFnRGF0YS5hc1VSTChmcmFtZSwg
RHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcywgJnRpdGxlKTsKKyAgICAgICAgICAgIFN0
cmluZyB1cmwgPSBkcmFnRGF0YS5hc1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVz
LCAmdGl0bGUpOwogICAgICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgUmVmUHRyPEhUTUxBbmNob3JFbGVtZW50PiBhbmNob3IgPSBIVE1MQW5jaG9yRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgICAgICAgICBhbmNob3ItPnNldEhyZWYodXJs
KTsKICAgICAgICAgICAgICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIFRyeSB0aGUgcGxhaW4gdGV4dCBmaXJzdCBiZWNhdXNlIHRoZSB1cmwgbWlnaHQg
YmUgbm9ybWFsaXplZCBvciBlc2NhcGVkLgogICAgICAgICAgICAgICAgICAgICBpZiAoZHJhZ0Rh
dGEuY29udGFpbnNQbGFpblRleHQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0g
ZHJhZ0RhdGEuYXNQbGFpblRleHQoZnJhbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgdGl0
bGUgPSBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAodGl0
bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB1cmw7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdE
CiAgICAgfQogICAgIGlmIChhbGxvd1BsYWluVGV4dCAmJiBkcmFnRGF0YS5jb250YWluc1BsYWlu
VGV4dCgpKSB7CiAgICAgICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4dCwgZHJhZ0RhdGEuYXNQbGFpblRleHQoZnJh
bWUpKS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4
dCwgZHJhZ0RhdGEuYXNQbGFpblRleHQoKSkuZ2V0KCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7
CkBAIC0yMzQsNyArMjM0LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVy
YXRpb24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBt
X2NsaWVudC53aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25B
Y3Rpb25Mb2FkLCBkcmFnRGF0YSk7Ci0gICAgbV9wYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmxv
YWQoRnJhbWVMb2FkUmVxdWVzdCgmbV9wYWdlLm1haW5GcmFtZSgpLCBSZXNvdXJjZVJlcXVlc3Qo
ZHJhZ0RhdGEuYXNVUkwoJm1fcGFnZS5tYWluRnJhbWUoKSkpKSk7CisgICAgbV9wYWdlLm1haW5G
cmFtZSgpLmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgmbV9wYWdlLm1haW5GcmFtZSgp
LCBSZXNvdXJjZVJlcXVlc3QoZHJhZ0RhdGEuYXNVUkwoKSkpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBib29sIHNldFNlbGVjdGlvblRvRHJhZ0Nh
cmV0KEZyYW1lKiBmcmFtZSwgVmlzaWJsZVNlbGVjdGlvbiYgZHJhZ0NhcmV0LCBSCiBib29sIERy
YWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1l
LCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgQVNTRVJUKG1fcGFnZS5kcmFnQ2FyZXRDb250
cm9sbGVyKCkuaGFzQ2FyZXQoKSk7Ci0gICAgU3RyaW5nIHRleHQgPSBtX3BhZ2UuZHJhZ0NhcmV0
Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyBlbXB0eVN0cmluZygpIDog
ZHJhZ0RhdGEuYXNQbGFpblRleHQoaW5uZXJGcmFtZSk7CisgICAgU3RyaW5nIHRleHQgPSBtX3Bh
Z2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyBlbXB0
eVN0cmluZygpIDogZHJhZ0RhdGEuYXNQbGFpblRleHQoKTsKICAgICBOb2RlKiB0YXJnZXQgPSBp
bm5lckZyYW1lLT5lZGl0b3IoKS5maW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS5kcmFnQ2FyZXRD
b250cm9sbGVyKCkuY2FyZXRQb3NpdGlvbigpKTsKICAgICByZXR1cm4gdGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKSwgdGV4dCksIElHTk9SRV9FWENFUFRJT04pOwogfQpAQCAtNTE3LDcgKzUxNyw3
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEmIGRyYWdE
YXRhKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgU3Ry
aW5nIHRleHQgPSBkcmFnRGF0YS5hc1BsYWluVGV4dChpbm5lckZyYW1lLmdldCgpKTsKKyAgICAg
ICAgU3RyaW5nIHRleHQgPSBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgICAgICBpZiAodGV4
dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVkaXRvcigpLnNob3VsZEluc2VydFRleHQodGV4
dCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
aAppbmRleCA0N2UzY2M5Li45NWJiNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIERh
dGFUcmFuc2ZlcjsKICAgICBjbGFzcyBEb2N1bWVudDsKKyAgICBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogICAgIGNsYXNzIERyYWdDbGllbnQ7CiAgICAgY2xhc3MgRHJhZ0RhdGE7CiAgICAgY2xh
c3MgRWxlbWVudDsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIEludFJlY3Q7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZl
bnQ7CisgICAgY2xhc3MgUmFuZ2U7CiAKICAgICBzdHJ1Y3QgRHJhZ1N0YXRlOwogCkBAIC0xMTMs
NiArMTE1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGNsZWFudXBBZnRl
clN5c3RlbURyYWcoKTsKICAgICAgICAgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0
YVRyYW5zZmVyJiwgRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwpOwog
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJh
Z21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmLCBGcmFtZSosIFJhbmdlJiwgYm9vbCBhbGxvd1Bs
YWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YShEcmFnRGF0YSYs
IEZyYW1lKiwgUmFuZ2UmLCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4
dCk7CisKICAgICAgICAgUGFnZSYgbV9wYWdlOwogICAgICAgICBEcmFnQ2xpZW50JiBtX2NsaWVu
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJF
ZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3BwCmlu
ZGV4IDlkYjM4NjguLjliYWRkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZs
L0RyYWdDb250cm9sbGVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFn
Q29udHJvbGxlckVmbC5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtNTAsNyArNTIsNyBAQCBi
b29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKERyYWdEYXRhJikKIAogRHJhZ09wZXJh
dGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7
Ci0gICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKDApKQorICAgIGlmIChkcmFnRGF0YS5jb250
YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAKICAgICByZXR1
cm4gRHJhZ09wZXJhdGlvbk5vbmU7CkBAIC03MSw0ICs3Myw5IEBAIHZvaWQgRHJhZ0NvbnRyb2xs
ZXI6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImLCBFbGVtZW50JiwgY29u
c3QgVVJMCiB7CiB9CiAKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0NvbnRyb2xs
ZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiwgRnJhbWUqLCBSYW5nZSYs
IGJvb2wgLyphbGxvd1BsYWluVGV4dCovLCBib29sJiAvKmNob3NlUGxhaW5UZXh0Ki8pCit7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0Ry
YWdDb250cm9sbGVyR3RrLmNwcAppbmRleCA1NGZjOGU2Li4xM2FhOTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCkBAIC0yNiwxMyArMjYsMTcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgogCisj
aW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1
ZGUgIkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBh
c3RlYm9hcmQuaCIKKyNpbmNsdWRlICJtYXJrdXAuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01Myw3ICs1Nyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oRHJh
Z0RhdGEmKQogRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFn
RGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgaXMgaW5jb21wbGV0
ZQotICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgwKSkKKyAgICBpZiAoZHJhZ0RhdGEuY29u
dGFpbnNVUkwoKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwogCiAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOwpAQCAtNzQsNCArNzgsMTIgQEAgdm9pZCBEcmFnQ29udHJv
bGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVy
LCBFbGVtZW4KICAgICBkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLndyaXRlSW1hZ2UoZWxlbWVu
dCwgdXJsLCBsYWJlbCk7CiB9CiAKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0Nv
bnRyb2xsZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiBkcmFnRGF0YSwg
RnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wgLyphbGxvd1BsYWluVGV4dCovLCBib29sJiAvKmNo
b3NlUGxhaW5UZXh0Ki8pCit7CisgICAgaWYgKCFkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKS0+aGFz
TWFya3VwKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLT5kb2N1bWVudCgp
LCBkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKS0+bWFya3VwKCksICIiKTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCA5NGFmYTFjLi5h
YTQ1MTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5t
bQpAQCAtMjksMTMgKzI5LDE4IEBACiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogI2ltcG9y
dCAiRGF0YVRyYW5zZmVyLmgiCisjaW1wb3J0ICJEb2N1bWVudC5oIgorI2ltcG9ydCAiRG9jdW1l
bnRGcmFnbWVudC5oIgogI2ltcG9ydCAiRHJhZ0NsaWVudC5oIgogI2ltcG9ydCAiRHJhZ0RhdGEu
aCIKKyNpbXBvcnQgIkVkaXRvci5oIgorI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCiAjaW1wb3J0
ICJFbGVtZW50LmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIk1haW5GcmFtZS5o
IgogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgorI2ltcG9ydCAiUmFu
Z2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1OSw3IEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIAogRHJh
Z09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSYgZHJhZ0Rh
dGEpCiB7Ci0gICAgaWYgKChkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNNb2Rh
bCkgfHwgIWRyYWdEYXRhLmNvbnRhaW5zVVJMKCZtX3BhZ2UubWFpbkZyYW1lKCkpKQorICAgIGlm
ICgoZHJhZ0RhdGEuZmxhZ3MoKSAmIERyYWdBcHBsaWNhdGlvbklzTW9kYWwpIHx8ICFkcmFnRGF0
YS5jb250YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CiAKICAg
ICBpZiAoIW1fZG9jdW1lbnRVbmRlck1vdXNlIHx8ICghKGRyYWdEYXRhLmZsYWdzKCkgJiAoRHJh
Z0FwcGxpY2F0aW9uSGFzQXR0YWNoZWRTaGVldCB8IERyYWdBcHBsaWNhdGlvbklzU291cmNlKSkp
KQpAQCAtODcsNiArOTIsMTIgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRl
RHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBFbGVtZW4KICAgICBtX2NsaWVu
dC5kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5uYW1l
KCksIGVsZW1lbnQsIHVybCwgbGFiZWwsIGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKTsKIH0K
IAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJh
Z21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdEYXRhLCBGcmFtZSogZnJhbWUsIFJhbmdl
JiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKK3sK
KyAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQoZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSk7Cisg
ICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS53ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQocGFzdGVi
b2FyZCwgY29udGV4dCwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAppbmRleCBkMTlj
YTg4Li5mOGIwMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29u
dHJvbGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xs
ZXJXaW4uY3BwCkBAIC0yNiw5ICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJDbGlwYm9hcmRVdGlsaXRpZXNXaW4u
aCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAt
NTAsNyArNTQsNyBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9u
KERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICAvL2lmIHdlIGFyZSBhIG1vZGFsIHdpbmRvdywgd2Ug
YXJlIHRoZSBkcmFnIHNvdXJjZSwgb3IgdGhlIHdpbmRvdyBpcyBhbiBhdHRhY2hlZCBzaGVldAog
ICAgIC8vSWYgdGhpcyBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9wZXJh
dGlvbkZvckRyYWcgY2FuIGJlIHB1bGxlZCBpbnRvIAogICAgIC8vV2ViQ29yZSBpdHNlbGYKLSAg
ICByZXR1cm4gZHJhZ0RhdGEuY29udGFpbnNVUkwoMCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnID8g
RHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gZHJhZ0Rh
dGEuY29udGFpbnNVUkwoKSAmJiAhbV9kaWRJbml0aWF0ZURyYWcgPyBEcmFnT3BlcmF0aW9uQ29w
eSA6IERyYWdPcGVyYXRpb25Ob25lOwogfQogCiBib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlL
ZXlEb3duKERyYWdEYXRhJikKQEAgLTgzLDQgKzg3LDQwIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6
OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRWxl
bWVuCiAgICAgcGFzdGVib2FyZC53cml0ZU1hcmt1cChjcmVhdGVNYXJrdXAoZWxlbWVudCwgSW5j
bHVkZU5vZGUsIDAsIFJlc29sdmVBbGxVUkxzKSk7CiB9CiAKK1Bhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gRHJhZ0NvbnRyb2xsZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdE
YXRhJiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wgLyphbGxvd1BsYWluVGV4
dCovLCBib29sJiAvKmNob3NlUGxhaW5UZXh0Ki8pCit7CisgICAgLyoKKyAgICAgKiBPcmRlciBp
cyByaWNoZXN0IGZvcm1hdCBmaXJzdC4gT24gT1NYIHRoaXMgaXM6CisgICAgICogKiBXZWIgQXJj
aGl2ZQorICAgICAqICogRmlsZW5hbWVzCisgICAgICogKiBIVE1MCisgICAgICogKiBSVEYKKyAg
ICAgKiAqIFRJRkYKKyAgICAgKiAqIFBJQ1QKKyAgICAgKi8KKworICAgIGlmIChEcmFnRGF0YVJl
ZiBwbGF0Zm9ybURyYWdEYXRhID0gZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpIHsKKyAgICAgICAg
aWYgKGNvbnRhaW5zRmlsZW5hbWVzKHBsYXRmb3JtRHJhZ0RhdGEpKSB7CisgICAgICAgICAgICBp
ZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUZp
bGVuYW1lcyhmcmFtZS0+ZG9jdW1lbnQoKSwgcGxhdGZvcm1EcmFnRGF0YSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZyYWdtZW50OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbnRhaW5z
SFRNTChwbGF0Zm9ybURyYWdEYXRhKSkgeworICAgICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21IVE1MKGZyYW1lLT5kb2N1bWVu
dCgpLCBwbGF0Zm9ybURyYWdEYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoY29udGFpbnNGaWxlbmFtZXMo
JmRyYWdEYXRhLmRyYWdEYXRhTWFwKCkpKSB7CisgICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhmcmFtZS0+
ZG9jdW1lbnQoKSwgJmRyYWdEYXRhLmRyYWdEYXRhTWFwKCkpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmcmFnbWVudDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb250YWluc0hUTUwoJmRy
YWdEYXRhLmRyYWdEYXRhTWFwKCkpKSB7CisgICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUhUTUwoZnJhbWUtPmRvY3VtZW50
KCksICZkcmFnRGF0YS5kcmFnRGF0YU1hcCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJh
Z21lbnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IGYzYTM1YTcuLjAwYWE5ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNjAsMTAgKzYwLDcgQEAgdHlwZWRlZiB2b2lkKiBE
cmFnRGF0YVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGcmFtZTsKLWNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBVUkw7Ci1jbGFzcyBSYW5nZTsKIAogZW51bSBEcmFn
QXBwbGljYXRpb25GbGFncyB7CiAgICAgRHJhZ0FwcGxpY2F0aW9uTm9uZSA9IDAsCkBAIC05NSwx
NCArOTIsMTMgQEAgcHVibGljOgogICAgIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKCkgY29u
c3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkZsYWdzOyB9CiAgICAgRHJhZ0RhdGFSZWYgcGxhdGZv
cm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhOyB9CiAgICAgRHJhZ09w
ZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX2Ry
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQotICAgIGJvb2wgY29udGFpbnNVUkwoRnJhbWUq
LCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kgPSBDb252ZXJ0RmlsZW5h
bWVzKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGlj
eSBmaWxlbmFtZVBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgIGJvb2wgY29u
dGFpbnNQbGFpblRleHQoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29tcGF0aWJsZUNvbnRl
bnQoKSBjb25zdDsKLSAgICBTdHJpbmcgYXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Q
b2xpY3kgZmlsZW5hbWVQb2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlID0g
MCkgY29uc3Q7Ci0gICAgU3RyaW5nIGFzUGxhaW5UZXh0KEZyYW1lKikgY29uc3Q7CisgICAgU3Ry
aW5nIGFzVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSA9IENvbnZl
cnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUgPSAwKSBjb25zdDsKKyAgICBTdHJpbmcgYXNQbGFp
blRleHQoKSBjb25zdDsKICAgICB2b2lkIGFzRmlsZW5hbWVzKFZlY3RvcjxTdHJpbmc+JikgY29u
c3Q7CiAgICAgQ29sb3IgYXNDb2xvcigpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gYXNGcmFnbWVudChGcmFtZSosIFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxh
aW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkgY29uc3Q7CiAgICAgYm9vbCBjYW5TbWFydFJl
cGxhY2UoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29sb3IoKSBjb25zdDsKICAgICBib29s
IGNvbnRhaW5zRmlsZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJh
Z0RhdGFFZmwuY3BwCmluZGV4IGRjYzhlZmIuLjRiMjg1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcApAQCAtMjEsOSArMjEsNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAKLSNpbmNsdWRlICJEb2N1bWVudC5o
IgotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBib29sIERyYWdEYXRhOjpjYW5TbWFydFJlcGxhY2UoKSBjb25zdApAQCAtNTUsNyArNTIsNyBA
QCBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KEZyYW1lKikgY29uc3QKK1N0
cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KQEAgLTcwLDE5ICs2NywxNCBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGli
bGVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6
OmNvbnRhaW5zVVJMKEZyYW1lKiwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5KSBjb25zdAorYm9v
bCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5KSBjb25zdAog
ewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSos
IEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKikgY29uc3QKK1N0cmluZyBEcmFnRGF0
YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqKSBjb25zdAogewogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFn
RGF0YTo6YXNGcmFnbWVudChGcmFtZSosIFJhbmdlJiwgYm9vbCwgYm9vbCYpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EcmFnRGF0YUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0Rh
dGFHdGsuY3BwCmluZGV4IDJiZjM0ZGYuLjU5OGM0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcApAQCAtMTgsMTAgKzE4LDYgQEAKICNpbmNsdWRlICJE
cmFnRGF0YS5oIgogCiAjaW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgotI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIkZyYW1lLmgi
Ci0jaW5jbHVkZSAibWFya3VwLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNyAr
NTEsNyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVGV4dCgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6
OmFzUGxhaW5UZXh0KEZyYW1lKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQo
KSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGEtPnRleHQoKTsKIH0KQEAg
LTY3LDE1ICs2MywxNSBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAKIGJvb2wg
RHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewotICAgIHJldHVy
biBjb250YWluc1BsYWluVGV4dCgpIHx8IGNvbnRhaW5zVVJMKDApIHx8IG1fcGxhdGZvcm1EcmFn
RGF0YS0+aGFzTWFya3VwKCkgfHwgY29udGFpbnNDb2xvcigpIHx8IGNvbnRhaW5zRmlsZXMoKTsK
KyAgICByZXR1cm4gY29udGFpbnNQbGFpblRleHQoKSB8fCBjb250YWluc1VSTCgpIHx8IG1fcGxh
dGZvcm1EcmFnRGF0YS0+aGFzTWFya3VwKCkgfHwgY29udGFpbnNDb2xvcigpIHx8IGNvbnRhaW5z
RmlsZXMoKTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRnJhbWUqIGZyYW1lLCBG
aWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0Citib29sIERyYWdE
YXRhOjpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuICFhc1VSTChmcmFtZSwgZmlsZW5hbWVQb2xpY3kpLmlzRW1w
dHkoKTsKKyAgICByZXR1cm4gIWFzVVJMKGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CiB9CiAK
LVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kg
ZmlsZW5hbWVQb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFz
VVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRs
ZSkgY29uc3QKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVVJMKCkpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTkxLDE2ICs4Nyw0IEBAIFN0cmluZyBEcmFnRGF0YTo6
YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0
cmluZyoKICAgICByZXR1cm4gdXJsOwogfQogCi0KLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gRHJhZ0RhdGE6OmFzRnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wsIGJvb2wm
KSBjb25zdAotewotICAgIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNNYXJrdXAoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJr
dXAoKmZyYW1lLT5kb2N1bWVudCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEtPm1hcmt1cCgpLCAiIik7
Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0
YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRl
eCBkNTJhNGVhLi45Y2IyMDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdE
YXRhTWFjLm1tCkBAIC0yNywxOCArMjcsMTEgQEAKICNpbXBvcnQgIkRyYWdEYXRhLmgiCiAKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkRv
Y3VtZW50RnJhZ21lbnQuaCIKLSNpbXBvcnQgIkRPTURvY3VtZW50RnJhZ21lbnQuaCIKLSNpbXBv
cnQgIkRPTURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oIgotI2ltcG9ydCAiRWRpdG9yLmgiCi0j
aW1wb3J0ICJFZGl0b3JDbGllbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJNSU1F
VHlwZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJQYXN0ZWJv
YXJkU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2ltcG9ydCAi
UmFuZ2UuaCIKKyNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTEwNyw5ICsxMDAsMjAgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNQbGFp
blRleHQoKSBjb25zdAogICAgICAgICB8fCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnN0cmluZ0ZvclR5cGUoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSksIG1fcGFz
dGVib2FyZE5hbWUpLmxlbmd0aCgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0
KEZyYW1lICpmcmFtZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25z
dAogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkucmVhZFBsYWluVGV4dEZyb21QYXN0ZWJv
YXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGUobV9wYXN0ZWJvYXJkTmFtZSkpOworICAgIFBhc3RlYm9h
cmQgcGFzdGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBQYXN0ZWJvYXJkUGxhaW5UZXh0
IHRleHQ7CisgICAgcGFzdGVib2FyZC5yZWFkKHRleHQpOworICAgIFN0cmluZyBzdHJpbmcgPSB0
ZXh0LnRleHQ7CisKKyAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhpcyBpcyAxMDAlIGNv
cnJlY3Qgc2luY2Ugd2Uga25vdyAtW05TVVJMIFVSTFdpdGhTdHJpbmc6XSBkb2VzIG5vdCBoYW5k
bGUKKyAgICAvLyBhbGwgdGhlIHNhbWUgY2FzZXMgd2UgaGFuZGxlIHdlbGwgaW4gdGhlIFVSTCBj
b2RlIGZvciBjcmVhdGluZyBhbiBOU1VSTC4KKyAgICBpZiAodGV4dC5pc1VSTCkKKyAgICAgICAg
cmV0dXJuIHVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOwor
CisgICAgLy8gRklYTUU6IFdURiBzaG91bGQgb2ZmZXIgYSBub24tTWFjLXNwZWNpZmljIHdheSB0
byBjb252ZXJ0IHN0cmluZyB0byBwcmVjb21wb3NlZCBmb3JtIHNvIHdlIGNhbiBkbyBpdCBmb3Ig
YWxsIHBsYXRmb3Jtcy4KKyAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21wb3Nl
ZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKIH0KIAogQ29sb3IgRHJhZ0RhdGE6OmFzQ29s
b3IoKSBjb25zdApAQCAtMTM0LDEyICsxMzgsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnND
b21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFN0cmlu
ZyhrVVRUeXBlUE5HKSk7CiB9CiAgICAgCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGcmFt
ZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QK
K2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxl
bmFtZVBvbGljeSkgY29uc3QKIHsKLSAgICByZXR1cm4gIWFzVVJMKGZyYW1lLCBmaWxlbmFtZVBv
bGljeSkuaXNFbXB0eSgpOworICAgIHJldHVybiAhYXNVUkwoZmlsZW5hbWVQb2xpY3kpLmlzRW1w
dHkoKTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1l
Q29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6
YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBVc2UgZmlsZW5hbWVQb2xpY3kuCiAKQEAgLTE1MSwxNyArMTU1LDEzIEBA
IFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Q
b2xpY3ksIFN0cmluZyogdGl0bGUpIGNvCiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7
CiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBl
cyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgCi0gICAgLy8gRklYTUU6IHVzaW5nIHRo
ZSBlZGl0b3JDbGllbnQgdG8gY2FsbCBpbnRvIFdlYktpdCwgZm9yIG5vdywgc2luY2UgCi0gICAg
Ly8gY2FsbGluZyB3ZWJraXRfY2Fub25pY2FsaXplIGZyb20gV2ViQ29yZSBpbnZvbHZlcyBtaWdy
YXRpbmcgYSBzaXphYmxlIGFtb3VudCBvZiAKLSAgICAvLyBoZWxwZXIgY29kZSB0aGF0IHNob3Vs
ZCBlaXRoZXIgYmUgZG9uZSBpbiBhIHNlcGFyYXRlIHBhdGNoIG9yIGZpZ3VyZWQgb3V0IGluIGFu
b3RoZXIgd2F5LgotICAgIAorCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1VSTFBi
b2FyZFR5cGUpKSkgewogICAgICAgICBOU1VSTCAqVVJMRnJvbVBhc3RlYm9hcmQgPSBbTlNVUkwg
VVJMV2l0aFN0cmluZzpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCkt
PnN0cmluZ0ZvclR5cGUoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSksIG1fcGFzdGVib2FyZE5hbWUp
XTsKICAgICAgICAgTlNTdHJpbmcgKnNjaGVtZSA9IFtVUkxGcm9tUGFzdGVib2FyZCBzY2hlbWVd
OwogICAgICAgICAvLyBDYW5ub3QgZHJvcCBvdGhlciBzY2hlbWVzIHVubGVzcyA8cmRhcjovL3By
b2JsZW0vMTA1NjI2NjI+IGFuZCA8cmRhcjovL3Byb2JsZW0vMTExODczMTU+IGFyZSBmaXhlZC4K
ICAgICAgICAgaWYgKFtzY2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cCJdIHx8IFtzY2hlbWUg
aXNFcXVhbFRvU3RyaW5nOkAiaHR0cHMiXSkKLSAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVk
aXRvcigpLmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29s
dXRlU3RyaW5nXTsKKyAgICAgICAgICAgIHJldHVybiBbVVJMQnlDYW5vbmljYWxpemluZ1VSTChV
UkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOwogICAgIH0KICAgICAKICAgICBpZiAo
dHlwZXMuY29udGFpbnMoU3RyaW5nKE5TU3RyaW5nUGJvYXJkVHlwZSkpKSB7CkBAIC0xNzEsNyAr
MTcxLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29u
dmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY28KICAgICAgICAgLy8gVGhlIHJlc3VsdCBv
ZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5pdGlhdGUgbmF2aWdhdGlvbiwgc28gd2Ugc2hv
dWxkbid0IGFsbG93IGFyYml0cmFyeSBmaWxlIFVSTHMuCiAgICAgICAgIC8vIEZJWE1FOiBTaG91
bGQgd2UgYWxsb3cgb25seSBodHRwIGZhbWlseSBzY2hlbWVzLCBvciBhbnl0aGluZyBub24tbG9j
YWw/CiAgICAgICAgIGlmIChbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSB8fCBbc2No
ZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHBzIl0pCi0gICAgICAgICAgICByZXR1cm4gW2ZyYW1l
LT5lZGl0b3IoKS5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFVSTEZyb21QYXN0ZWJvYXJkKSBh
YnNvbHV0ZVN0cmluZ107CisgICAgICAgICAgICByZXR1cm4gW1VSTEJ5Q2Fub25pY2FsaXppbmdV
UkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKICAgICB9CiAgICAgCiAgICAg
aWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU0ZpbGVuYW1lc1Bib2FyZFR5cGUpKSkgewpAQCAt
MTgxLDE5ICsxODEsMTMgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZp
bGVuYW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY28KICAgICAgICAgICAgIEJP
T0wgaXNEaXJlY3Rvcnk7CiAgICAgICAgICAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVzWzBdIGlzRGlyZWN0b3J5OiZpc0RpcmVjdG9y
eV0gJiYgaXNEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
ICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9uaWNhbGl6ZVVS
TChbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVzWzBdXSkgYWJzb2x1dGVTdHJpbmddOworICAg
ICAgICAgICAgcmV0dXJuIFtVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6ZmlsZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgIH0KICAgICB9CiAgICAg
CiAgICAgcmV0dXJuIFN0cmluZygpOyAgICAgICAgCiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gRHJhZ0RhdGE6OmFzRnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYgcmFuZ2Us
IGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KSBjb25zdAotewotICAg
IFBhc3RlYm9hcmQgcGFzdGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICByZXR1cm4gZnJh
bWUtPmVkaXRvcigpLndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCByYW5nZSwg
YWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsKLX0KLSAgICAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAppbmRleCA1YTdmNzM2Li43MDA1NzBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKQEAgLTI5LDEw
ICsyOSw2IEBACiAKICNpbmNsdWRlICJDT01QdHIuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRVdGls
aXRpZXNXaW4uaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21l
bnQuaCIKLSNpbmNsdWRlICJNYXJrdXAuaCIKLSNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPG9iamlkbC5oPgogI2luY2x1ZGUgPHNobHdhcGku
aD4KQEAgLTU2LDcgKzUyLDcgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFw
JiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnMKIHsKIH0KIAotYm9v
bCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kg
ZmlsZW5hbWVQb2xpY3kpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGaWxlbmFt
ZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0CiB7CiAgICAgaWYgKG1fcGxh
dGZvcm1EcmFnRGF0YSkKICAgICAgICAgcmV0dXJuIFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0Rh
dGEtPlF1ZXJ5R2V0RGF0YSh1cmxXRm9ybWF0KCkpKSAKQEAgLTEwMSw3ICs5Nyw3IEBAIHZvaWQg
RHJhZ0RhdGE6OmdldERyYWdGaWxlQ29udGVudERhdGEoaW50IHNpemUsIHZvaWQqIGRhdGFCbG9i
KQogICAgICAgICBnZXRGaWxlQ29udGVudERhdGEobV9wbGF0Zm9ybURyYWdEYXRhLCBzaXplLCBk
YXRhQmxvYik7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNv
bnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJp
bmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGlj
eSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKICAgICByZXR1cm4gKG1fcGxhdGZvcm1EcmFnRGF0
YSkgPyBnZXRVUkwobV9wbGF0Zm9ybURyYWdEYXRhLCBmaWxlbmFtZVBvbGljeSwgdGl0bGUpIDog
Z2V0VVJMKCZtX2RyYWdEYXRhTWFwLCBmaWxlbmFtZVBvbGljeSwgdGl0bGUpOwogfQpAQCAtMTgx
LDcgKzE3Nyw3IEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3QKICAg
ICByZXR1cm4gbV9kcmFnRGF0YU1hcC5jb250YWlucyhwbGFpblRleHRXRm9ybWF0KCktPmNmRm9y
bWF0KSB8fCBtX2RyYWdEYXRhTWFwLmNvbnRhaW5zKHBsYWluVGV4dEZvcm1hdCgpLT5jZkZvcm1h
dCk7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoRnJhbWUqKSBjb25zdAorU3Ry
aW5nIERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChtX3BsYXRm
b3JtRHJhZ0RhdGEpID8gZ2V0UGxhaW5UZXh0KG1fcGxhdGZvcm1EcmFnRGF0YSkgOiBnZXRQbGFp
blRleHQoJm1fZHJhZ0RhdGFNYXApOwogfQpAQCAtMjAwLDQ4ICsxOTYsMTIgQEAgYm9vbCBEcmFn
RGF0YTo6Y2FuU21hcnRSZXBsYWNlKCkgY29uc3QKIAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnND
b21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnRhaW5zUGxhaW5UZXh0
KCkgfHwgY29udGFpbnNVUkwoMCkgCisgICAgcmV0dXJuIGNvbnRhaW5zUGxhaW5UZXh0KCkgfHwg
Y29udGFpbnNVUkwoKQogICAgICAgICB8fCAoKG1fcGxhdGZvcm1EcmFnRGF0YSkgPyAoY29udGFp
bnNIVE1MKG1fcGxhdGZvcm1EcmFnRGF0YSkgfHwgY29udGFpbnNGaWxlbmFtZXMobV9wbGF0Zm9y
bURyYWdEYXRhKSkKICAgICAgICAgICAgIDogKGNvbnRhaW5zSFRNTCgmbV9kcmFnRGF0YU1hcCkg
fHwgY29udGFpbnNGaWxlbmFtZXMoJm1fZHJhZ0RhdGFNYXApKSkKICAgICAgICAgfHwgY29udGFp
bnNDb2xvcigpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERyYWdEYXRhOjph
c0ZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUmFuZ2UmLCBib29sLCBib29sJikgY29uc3QKLXsgICAg
IAotICAgIC8qCi0gICAgICogT3JkZXIgaXMgcmljaGVzdCBmb3JtYXQgZmlyc3QuIE9uIE9TWCB0
aGlzIGlzOgotICAgICAqICogV2ViIEFyY2hpdmUKLSAgICAgKiAqIEZpbGVuYW1lcwotICAgICAq
ICogSFRNTAotICAgICAqICogUlRGCi0gICAgICogKiBUSUZGCi0gICAgICogKiBQSUNUCi0gICAg
ICovCi0gICAgIAotICAgIGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEpIHsKLSAgICAgICAgaWYgKGNv
bnRhaW5zRmlsZW5hbWVzKG1fcGxhdGZvcm1EcmFnRGF0YSkpIHsKLSAgICAgICAgICAgIGlmIChQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tRmlsZW5h
bWVzKGZyYW1lLT5kb2N1bWVudCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmcmFnbWVudDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb250YWluc0hU
TUwobV9wbGF0Zm9ybURyYWdEYXRhKSkgewotICAgICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21IVE1MKGZyYW1lLT5kb2N1bWVu
dCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEpKQotICAgICAgICAgICAgICAgIHJldHVybiBmcmFnbWVu
dDsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChjb250YWluc0ZpbGVuYW1l
cygmbV9kcmFnRGF0YU1hcCkpIHsKLSAgICAgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tRmlsZW5hbWVzKGZyYW1lLT5kb2N1bWVu
dCgpLCAmbV9kcmFnRGF0YU1hcCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50Owot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbnRhaW5zSFRNTCgmbV9kcmFnRGF0YU1hcCkpIHsK
LSAgICAgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0g
ZnJhZ21lbnRGcm9tSFRNTChmcmFtZS0+ZG9jdW1lbnQoKSwgJm1fZHJhZ0RhdGFNYXApKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gMDsKLX0KLQogQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogewogICAgIHJldHVy
biBDb2xvcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236519</attachid>
            <date>2014-08-13 05:43:03 -0700</date>
            <delta_ts>2014-08-14 00:26:19 -0700</delta_ts>
            <desc>Try to fix EFL and win build</desc>
            <filename>wcore-drag-data-layering-violations3.diff</filename>
            <type>text/plain</type>
            <size>28567</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3OWYyMjM1Li4wZjdmOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTQtMDgtMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIERyYWdEYXRhIHNob3VsZCBub3QgZGVwZW5kIG9uIENsaXBib2FyZCwgRG9j
dW1lbnRGcmFnbWVudCwgYW5kIERvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIERyYWdEYXRhIHRvIG5vdCBkZXBlbmQgb24gRnJh
bWUsIERvY3VtZW50RnJhZ21lbnQsCisgICAgICAgIERvY3VtZW50IGFuZCBSYW5nZS4gRHJhZ0Rh
dGE6OmFzRnJhZ21lbnQoKSBoYXMgYmVlbiBtb3ZlZCB0bworICAgICAgICBEcmFnQ29udHJvbGxl
ciBhbmQgaW1wbGVtZW50ZWQgaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGUuCisgICAgICAg
IERyYWdEYXRhIG1ldGhvZHMgdXNpbmcgRnJhbWUgaGFzIGJlZW4gcmV3b3JrZWQgaW4gTWFjIHRv
IG5vdCB1c2UKKyAgICAgICAgRnJhbWUsIHNpbmNlIGFsbCBvdGhlciBwb3J0cyB3ZXJlIGlnbm9y
ZWluZyB0aGUgZnJhbWUgcGFyYW1ldGVyLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9jdW1lbnRGcmFnbWVu
dEZyb21EcmFnRGF0YSk6IE1ha2UgaXQKKyAgICAgICAgYSBzdGF0aWMgbWVtYmVyIHRvIGJlIGFi
bGUgdG8gdXNlIGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKCkuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24pOiBVcGRhdGUgdG8KKyAgICAg
ICAgRHJhZ0RhdGEgQVBJIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxl
cjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL2VmbC9EcmFnQ29udHJvbGxlckVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRG
cm9tRHJhZ0RhdGEpOiBNb3ZlCisgICAgICAgIERyYWdEYXRhOjphc0ZyYWdtZW50KCkgaW1wbGVt
ZW50YXRpb24gaGVyZS4KKyAgICAgICAgKiBwYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEp
OiBEaXR0by4KKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRv
LgorICAgICAgICAqIHBhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZs
L0RyYWdEYXRhRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1BsYWluVGV4
dCk6IFJlbW92ZSBGcmFtZSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
Y29udGFpbnNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdE
YXRhOjphc0ZyYWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0Rh
dGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBTYW1l
IGltcGxlbWVudGF0aW9uIGFzIHRoZQorICAgICAgICBFZGl0b3IuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKTogVXNlIFVSTEJ5Q2Fub25pY2FsaXppbmdVUkwo
KSBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIHRoZSBFZGl0b3IgY2xpZW50LgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29u
dGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0RhdGE6OmFzVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFp
blRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbXBh
dGlibGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc0ZyYWdtZW50KTog
RGVsZXRlZC4KKwogMjAxNC0wOC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIEVsZW1lbnRzIHdob3NlIGNvbnRlbnRzIHN0YXJ0IHdpdGggYW4g
YXN0cmFsIFVuaWNvZGUgc3ltYm9sIGRpc2FwcGVhciB3aGVuIENTUyBgOjpmaXJzdC1sZXR0ZXJg
IGlzIGFwcGxpZWQgdG8gdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApp
bmRleCAxYjE5ZmU5Li5mNjQ3NDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcApAQCAtMTE0LDI1ICsxMTQsMjUgQEAgRHJhZ0NvbnRyb2xsZXI6On5EcmFnQ29udHJvbGxl
cigpCiAgICAgbV9jbGllbnQuZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKIH0KIAotc3RhdGlj
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0
YShEcmFnRGF0YSYgZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSwgUmFuZ2UmIGNvbnRleHQsIGJvb2wg
YWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQorUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6ZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShE
cmFnRGF0YSYgZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSwgUmFuZ2UmIGNvbnRleHQsIGJvb2wgYWxs
b3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQogewogICAgIGNob3NlUGxhaW5UZXh0
ID0gZmFsc2U7CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBjb250ZXh0Lm93bmVyRG9jdW1l
bnQoKTsKICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpKSB7Ci0g
ICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZHJhZ0Rh
dGEuYXNGcmFnbWVudChmcmFtZSwgY29udGV4dCwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5U
ZXh0KSkKKyAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YShkcmFnRGF0YSwgZnJhbWUsIGNvbnRleHQsIGFs
bG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21l
bnQ7CiAKLSAgICAgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKGZyYW1lLCBEcmFnRGF0YTo6
RG9Ob3RDb252ZXJ0RmlsZW5hbWVzKSkgeworICAgICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNV
UkwoRHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcykpIHsKICAgICAgICAgICAgIFN0cmlu
ZyB0aXRsZTsKLSAgICAgICAgICAgIFN0cmluZyB1cmwgPSBkcmFnRGF0YS5hc1VSTChmcmFtZSwg
RHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcywgJnRpdGxlKTsKKyAgICAgICAgICAgIFN0
cmluZyB1cmwgPSBkcmFnRGF0YS5hc1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVz
LCAmdGl0bGUpOwogICAgICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgUmVmUHRyPEhUTUxBbmNob3JFbGVtZW50PiBhbmNob3IgPSBIVE1MQW5jaG9yRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgICAgICAgICBhbmNob3ItPnNldEhyZWYodXJs
KTsKICAgICAgICAgICAgICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIFRyeSB0aGUgcGxhaW4gdGV4dCBmaXJzdCBiZWNhdXNlIHRoZSB1cmwgbWlnaHQg
YmUgbm9ybWFsaXplZCBvciBlc2NhcGVkLgogICAgICAgICAgICAgICAgICAgICBpZiAoZHJhZ0Rh
dGEuY29udGFpbnNQbGFpblRleHQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0g
ZHJhZ0RhdGEuYXNQbGFpblRleHQoZnJhbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgdGl0
bGUgPSBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAodGl0
bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB1cmw7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdE
CiAgICAgfQogICAgIGlmIChhbGxvd1BsYWluVGV4dCAmJiBkcmFnRGF0YS5jb250YWluc1BsYWlu
VGV4dCgpKSB7CiAgICAgICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4dCwgZHJhZ0RhdGEuYXNQbGFpblRleHQoZnJh
bWUpKS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4
dCwgZHJhZ0RhdGEuYXNQbGFpblRleHQoKSkuZ2V0KCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7
CkBAIC0yMzQsNyArMjM0LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVy
YXRpb24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBt
X2NsaWVudC53aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25B
Y3Rpb25Mb2FkLCBkcmFnRGF0YSk7Ci0gICAgbV9wYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmxv
YWQoRnJhbWVMb2FkUmVxdWVzdCgmbV9wYWdlLm1haW5GcmFtZSgpLCBSZXNvdXJjZVJlcXVlc3Qo
ZHJhZ0RhdGEuYXNVUkwoJm1fcGFnZS5tYWluRnJhbWUoKSkpKSk7CisgICAgbV9wYWdlLm1haW5G
cmFtZSgpLmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgmbV9wYWdlLm1haW5GcmFtZSgp
LCBSZXNvdXJjZVJlcXVlc3QoZHJhZ0RhdGEuYXNVUkwoKSkpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBib29sIHNldFNlbGVjdGlvblRvRHJhZ0Nh
cmV0KEZyYW1lKiBmcmFtZSwgVmlzaWJsZVNlbGVjdGlvbiYgZHJhZ0NhcmV0LCBSCiBib29sIERy
YWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1l
LCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgQVNTRVJUKG1fcGFnZS5kcmFnQ2FyZXRDb250
cm9sbGVyKCkuaGFzQ2FyZXQoKSk7Ci0gICAgU3RyaW5nIHRleHQgPSBtX3BhZ2UuZHJhZ0NhcmV0
Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyBlbXB0eVN0cmluZygpIDog
ZHJhZ0RhdGEuYXNQbGFpblRleHQoaW5uZXJGcmFtZSk7CisgICAgU3RyaW5nIHRleHQgPSBtX3Bh
Z2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyBlbXB0
eVN0cmluZygpIDogZHJhZ0RhdGEuYXNQbGFpblRleHQoKTsKICAgICBOb2RlKiB0YXJnZXQgPSBp
bm5lckZyYW1lLT5lZGl0b3IoKS5maW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS5kcmFnQ2FyZXRD
b250cm9sbGVyKCkuY2FyZXRQb3NpdGlvbigpKTsKICAgICByZXR1cm4gdGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKSwgdGV4dCksIElHTk9SRV9FWENFUFRJT04pOwogfQpAQCAtNTE3LDcgKzUxNyw3
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEmIGRyYWdE
YXRhKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgU3Ry
aW5nIHRleHQgPSBkcmFnRGF0YS5hc1BsYWluVGV4dChpbm5lckZyYW1lLmdldCgpKTsKKyAgICAg
ICAgU3RyaW5nIHRleHQgPSBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgICAgICBpZiAodGV4
dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVkaXRvcigpLnNob3VsZEluc2VydFRleHQodGV4
dCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
aAppbmRleCA0N2UzY2M5Li45NWJiNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIERh
dGFUcmFuc2ZlcjsKICAgICBjbGFzcyBEb2N1bWVudDsKKyAgICBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OwogICAgIGNsYXNzIERyYWdDbGllbnQ7CiAgICAgY2xhc3MgRHJhZ0RhdGE7CiAgICAgY2xh
c3MgRWxlbWVudDsKQEAgLTQ0LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIEludFJlY3Q7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZl
bnQ7CisgICAgY2xhc3MgUmFuZ2U7CiAKICAgICBzdHJ1Y3QgRHJhZ1N0YXRlOwogCkBAIC0xMTMs
NiArMTE1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGNsZWFudXBBZnRl
clN5c3RlbURyYWcoKTsKICAgICAgICAgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0
YVRyYW5zZmVyJiwgRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwpOwog
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJh
Z21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmLCBGcmFtZSosIFJhbmdlJiwgYm9vbCBhbGxvd1Bs
YWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YShEcmFnRGF0YSYs
IEZyYW1lKiwgUmFuZ2UmLCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4
dCk7CisKICAgICAgICAgUGFnZSYgbV9wYWdlOwogICAgICAgICBEcmFnQ2xpZW50JiBtX2NsaWVu
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJF
ZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3BwCmlu
ZGV4IDlkYjM4NjguLjliYWRkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZs
L0RyYWdDb250cm9sbGVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFn
Q29udHJvbGxlckVmbC5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtNTAsNyArNTIsNyBAQCBi
b29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKERyYWdEYXRhJikKIAogRHJhZ09wZXJh
dGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7
Ci0gICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKDApKQorICAgIGlmIChkcmFnRGF0YS5jb250
YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAKICAgICByZXR1
cm4gRHJhZ09wZXJhdGlvbk5vbmU7CkBAIC03MSw0ICs3Myw5IEBAIHZvaWQgRHJhZ0NvbnRyb2xs
ZXI6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImLCBFbGVtZW50JiwgY29u
c3QgVVJMCiB7CiB9CiAKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0NvbnRyb2xs
ZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiwgRnJhbWUqLCBSYW5nZSYs
IGJvb2wgLyphbGxvd1BsYWluVGV4dCovLCBib29sJiAvKmNob3NlUGxhaW5UZXh0Ki8pCit7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0Ry
YWdDb250cm9sbGVyR3RrLmNwcAppbmRleCA1NGZjOGU2Li4xM2FhOTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCkBAIC0yNiwxMyArMjYsMTcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgogCisj
aW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1
ZGUgIkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBh
c3RlYm9hcmQuaCIKKyNpbmNsdWRlICJtYXJrdXAuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01Myw3ICs1Nyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oRHJh
Z0RhdGEmKQogRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFn
RGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgaXMgaW5jb21wbGV0
ZQotICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgwKSkKKyAgICBpZiAoZHJhZ0RhdGEuY29u
dGFpbnNVUkwoKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwogCiAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOwpAQCAtNzQsNCArNzgsMTIgQEAgdm9pZCBEcmFnQ29udHJv
bGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVy
LCBFbGVtZW4KICAgICBkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLndyaXRlSW1hZ2UoZWxlbWVu
dCwgdXJsLCBsYWJlbCk7CiB9CiAKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0Nv
bnRyb2xsZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiBkcmFnRGF0YSwg
RnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wgLyphbGxvd1BsYWluVGV4dCovLCBib29sJiAvKmNo
b3NlUGxhaW5UZXh0Ki8pCit7CisgICAgaWYgKCFkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKS0+aGFz
TWFya3VwKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLT5kb2N1bWVudCgp
LCBkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKS0+bWFya3VwKCksICIiKTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCA5NGFmYTFjLi5h
YTQ1MTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5t
bQpAQCAtMjksMTMgKzI5LDE4IEBACiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogI2ltcG9y
dCAiRGF0YVRyYW5zZmVyLmgiCisjaW1wb3J0ICJEb2N1bWVudC5oIgorI2ltcG9ydCAiRG9jdW1l
bnRGcmFnbWVudC5oIgogI2ltcG9ydCAiRHJhZ0NsaWVudC5oIgogI2ltcG9ydCAiRHJhZ0RhdGEu
aCIKKyNpbXBvcnQgIkVkaXRvci5oIgorI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCiAjaW1wb3J0
ICJFbGVtZW50LmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIk1haW5GcmFtZS5o
IgogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgorI2ltcG9ydCAiUmFu
Z2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1OSw3IEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIAogRHJh
Z09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSYgZHJhZ0Rh
dGEpCiB7Ci0gICAgaWYgKChkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNNb2Rh
bCkgfHwgIWRyYWdEYXRhLmNvbnRhaW5zVVJMKCZtX3BhZ2UubWFpbkZyYW1lKCkpKQorICAgIGlm
ICgoZHJhZ0RhdGEuZmxhZ3MoKSAmIERyYWdBcHBsaWNhdGlvbklzTW9kYWwpIHx8ICFkcmFnRGF0
YS5jb250YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CiAKICAg
ICBpZiAoIW1fZG9jdW1lbnRVbmRlck1vdXNlIHx8ICghKGRyYWdEYXRhLmZsYWdzKCkgJiAoRHJh
Z0FwcGxpY2F0aW9uSGFzQXR0YWNoZWRTaGVldCB8IERyYWdBcHBsaWNhdGlvbklzU291cmNlKSkp
KQpAQCAtODcsNiArOTIsMTIgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRl
RHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBFbGVtZW4KICAgICBtX2NsaWVu
dC5kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5uYW1l
KCksIGVsZW1lbnQsIHVybCwgbGFiZWwsIGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKTsKIH0K
IAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJh
Z21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdEYXRhLCBGcmFtZSogZnJhbWUsIFJhbmdl
JiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKK3sK
KyAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQoZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSk7Cisg
ICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS53ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQocGFzdGVi
b2FyZCwgY29udGV4dCwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAppbmRleCBkMTlj
YTg4Li5mOGIwMGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29u
dHJvbGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xs
ZXJXaW4uY3BwCkBAIC0yNiw5ICsyNiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJDbGlwYm9hcmRVdGlsaXRpZXNXaW4u
aCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAt
NTAsNyArNTQsNyBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9u
KERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICAvL2lmIHdlIGFyZSBhIG1vZGFsIHdpbmRvdywgd2Ug
YXJlIHRoZSBkcmFnIHNvdXJjZSwgb3IgdGhlIHdpbmRvdyBpcyBhbiBhdHRhY2hlZCBzaGVldAog
ICAgIC8vSWYgdGhpcyBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9wZXJh
dGlvbkZvckRyYWcgY2FuIGJlIHB1bGxlZCBpbnRvIAogICAgIC8vV2ViQ29yZSBpdHNlbGYKLSAg
ICByZXR1cm4gZHJhZ0RhdGEuY29udGFpbnNVUkwoMCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnID8g
RHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gZHJhZ0Rh
dGEuY29udGFpbnNVUkwoKSAmJiAhbV9kaWRJbml0aWF0ZURyYWcgPyBEcmFnT3BlcmF0aW9uQ29w
eSA6IERyYWdPcGVyYXRpb25Ob25lOwogfQogCiBib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlL
ZXlEb3duKERyYWdEYXRhJikKQEAgLTgzLDQgKzg3LDQwIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6
OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRWxl
bWVuCiAgICAgcGFzdGVib2FyZC53cml0ZU1hcmt1cChjcmVhdGVNYXJrdXAoZWxlbWVudCwgSW5j
bHVkZU5vZGUsIDAsIFJlc29sdmVBbGxVUkxzKSk7CiB9CiAKK1Bhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gRHJhZ0NvbnRyb2xsZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdE
YXRhJiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wgLyphbGxvd1BsYWluVGV4
dCovLCBib29sJiAvKmNob3NlUGxhaW5UZXh0Ki8pCit7CisgICAgLyoKKyAgICAgKiBPcmRlciBp
cyByaWNoZXN0IGZvcm1hdCBmaXJzdC4gT24gT1NYIHRoaXMgaXM6CisgICAgICogKiBXZWIgQXJj
aGl2ZQorICAgICAqICogRmlsZW5hbWVzCisgICAgICogKiBIVE1MCisgICAgICogKiBSVEYKKyAg
ICAgKiAqIFRJRkYKKyAgICAgKiAqIFBJQ1QKKyAgICAgKi8KKworICAgIGlmIChEcmFnRGF0YVJl
ZiBwbGF0Zm9ybURyYWdEYXRhID0gZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpIHsKKyAgICAgICAg
aWYgKGNvbnRhaW5zRmlsZW5hbWVzKHBsYXRmb3JtRHJhZ0RhdGEpKSB7CisgICAgICAgICAgICBp
ZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUZp
bGVuYW1lcyhmcmFtZS0+ZG9jdW1lbnQoKSwgcGxhdGZvcm1EcmFnRGF0YSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZyYWdtZW50OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbnRhaW5z
SFRNTChwbGF0Zm9ybURyYWdEYXRhKSkgeworICAgICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21IVE1MKGZyYW1lLT5kb2N1bWVu
dCgpLCBwbGF0Zm9ybURyYWdEYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoY29udGFpbnNGaWxlbmFtZXMo
JmRyYWdEYXRhLmRyYWdEYXRhTWFwKCkpKSB7CisgICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhmcmFtZS0+
ZG9jdW1lbnQoKSwgJmRyYWdEYXRhLmRyYWdEYXRhTWFwKCkpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmcmFnbWVudDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb250YWluc0hUTUwoJmRy
YWdEYXRhLmRyYWdEYXRhTWFwKCkpKSB7CisgICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUhUTUwoZnJhbWUtPmRvY3VtZW50
KCksICZkcmFnRGF0YS5kcmFnRGF0YU1hcCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJh
Z21lbnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IGYzYTM1YTcuLjAwYWE5ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNjAsMTAgKzYwLDcgQEAgdHlwZWRlZiB2b2lkKiBE
cmFnRGF0YVJlZjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGcmFtZTsKLWNsYXNz
IERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBVUkw7Ci1jbGFzcyBSYW5nZTsKIAogZW51bSBEcmFn
QXBwbGljYXRpb25GbGFncyB7CiAgICAgRHJhZ0FwcGxpY2F0aW9uTm9uZSA9IDAsCkBAIC05NSwx
NCArOTIsMTMgQEAgcHVibGljOgogICAgIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKCkgY29u
c3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkZsYWdzOyB9CiAgICAgRHJhZ0RhdGFSZWYgcGxhdGZv
cm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhOyB9CiAgICAgRHJhZ09w
ZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX2Ry
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQotICAgIGJvb2wgY29udGFpbnNVUkwoRnJhbWUq
LCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kgPSBDb252ZXJ0RmlsZW5h
bWVzKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGlj
eSBmaWxlbmFtZVBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgIGJvb2wgY29u
dGFpbnNQbGFpblRleHQoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29tcGF0aWJsZUNvbnRl
bnQoKSBjb25zdDsKLSAgICBTdHJpbmcgYXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Q
b2xpY3kgZmlsZW5hbWVQb2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVzLCBTdHJpbmcqIHRpdGxlID0g
MCkgY29uc3Q7Ci0gICAgU3RyaW5nIGFzUGxhaW5UZXh0KEZyYW1lKikgY29uc3Q7CisgICAgU3Ry
aW5nIGFzVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSA9IENvbnZl
cnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUgPSAwKSBjb25zdDsKKyAgICBTdHJpbmcgYXNQbGFp
blRleHQoKSBjb25zdDsKICAgICB2b2lkIGFzRmlsZW5hbWVzKFZlY3RvcjxTdHJpbmc+JikgY29u
c3Q7CiAgICAgQ29sb3IgYXNDb2xvcigpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gYXNGcmFnbWVudChGcmFtZSosIFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxh
aW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkgY29uc3Q7CiAgICAgYm9vbCBjYW5TbWFydFJl
cGxhY2UoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29sb3IoKSBjb25zdDsKICAgICBib29s
IGNvbnRhaW5zRmlsZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJh
Z0RhdGFFZmwuY3BwCmluZGV4IGRjYzhlZmIuLjAwMmE3OTBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKQEAgLTIxLDggKzIxLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogCi0jaW5jbHVkZSAiRG9jdW1lbnQu
aCIKLSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNyArNTQsNyBAQCBib29s
IERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KEZyYW1lKikgY29uc3QKK1N0cmluZyBE
cmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
QEAgLTcwLDE5ICs2OSwxNCBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250
ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRh
aW5zVVJMKEZyYW1lKiwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5KSBjb25zdAorYm9vbCBEcmFn
RGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5KSBjb25zdAogewogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSosIEZpbGVu
YW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNV
UkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqKSBjb25zdAogewogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnRGF0YTo6
YXNGcmFnbWVudChGcmFtZSosIFJhbmdlJiwgYm9vbCwgYm9vbCYpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIDA7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9E
cmFnRGF0YUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsu
Y3BwCmluZGV4IDJiZjM0ZGYuLjU5OGM0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0RyYWdEYXRhR3RrLmNwcApAQCAtMTgsMTAgKzE4LDYgQEAKICNpbmNsdWRlICJEcmFnRGF0
YS5oIgogCiAjaW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgotI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5j
bHVkZSAibWFya3VwLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNyArNTEsNyBA
QCBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cGxhdGZvcm1EcmFnRGF0YS0+aGFzVGV4dCgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzUGxh
aW5UZXh0KEZyYW1lKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25z
dAogewogICAgIHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGEtPnRleHQoKTsKIH0KQEAgLTY3LDE1
ICs2MywxNSBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAKIGJvb2wgRHJhZ0Rh
dGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewotICAgIHJldHVybiBjb250
YWluc1BsYWluVGV4dCgpIHx8IGNvbnRhaW5zVVJMKDApIHx8IG1fcGxhdGZvcm1EcmFnRGF0YS0+
aGFzTWFya3VwKCkgfHwgY29udGFpbnNDb2xvcigpIHx8IGNvbnRhaW5zRmlsZXMoKTsKKyAgICBy
ZXR1cm4gY29udGFpbnNQbGFpblRleHQoKSB8fCBjb250YWluc1VSTCgpIHx8IG1fcGxhdGZvcm1E
cmFnRGF0YS0+aGFzTWFya3VwKCkgfHwgY29udGFpbnNDb2xvcigpIHx8IGNvbnRhaW5zRmlsZXMo
KTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFt
ZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0Citib29sIERyYWdEYXRhOjpj
b250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICFhc1VSTChmcmFtZSwgZmlsZW5hbWVQb2xpY3kpLmlzRW1wdHkoKTsK
KyAgICByZXR1cm4gIWFzVVJMKGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CiB9CiAKLVN0cmlu
ZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5h
bWVQb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZp
bGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29u
c3QKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVVJMKCkpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKQEAgLTkxLDE2ICs4Nyw0IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwo
RnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyoK
ICAgICByZXR1cm4gdXJsOwogfQogCi0KLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJh
Z0RhdGE6OmFzRnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wsIGJvb2wmKSBjb25z
dAotewotICAgIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNNYXJrdXAoKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZy
YW1lLT5kb2N1bWVudCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEtPm1hcmt1cCgpLCAiIik7Ci19Ci0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBkNTJh
NGVhLi45Y2IyMDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJh
Z0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFj
Lm1tCkBAIC0yNywxOCArMjcsMTEgQEAKICNpbXBvcnQgIkRyYWdEYXRhLmgiCiAKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkRvY3VtZW50
RnJhZ21lbnQuaCIKLSNpbXBvcnQgIkRPTURvY3VtZW50RnJhZ21lbnQuaCIKLSNpbXBvcnQgIkRP
TURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oIgotI2ltcG9ydCAiRWRpdG9yLmgiCi0jaW1wb3J0
ICJFZGl0b3JDbGllbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkU3Ry
YXRlZ3kuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2ltcG9ydCAiUmFuZ2Uu
aCIKKyNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTEwNyw5ICsxMDAsMjAgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQo
KSBjb25zdAogICAgICAgICB8fCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnN0cmluZ0ZvclR5cGUoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSksIG1fcGFzdGVib2Fy
ZE5hbWUpLmxlbmd0aCgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KEZyYW1l
ICpmcmFtZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogewot
ICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkucmVhZFBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKCpQ
YXN0ZWJvYXJkOjpjcmVhdGUobV9wYXN0ZWJvYXJkTmFtZSkpOworICAgIFBhc3RlYm9hcmQgcGFz
dGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBQYXN0ZWJvYXJkUGxhaW5UZXh0IHRleHQ7
CisgICAgcGFzdGVib2FyZC5yZWFkKHRleHQpOworICAgIFN0cmluZyBzdHJpbmcgPSB0ZXh0LnRl
eHQ7CisKKyAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhpcyBpcyAxMDAlIGNvcnJlY3Qg
c2luY2Ugd2Uga25vdyAtW05TVVJMIFVSTFdpdGhTdHJpbmc6XSBkb2VzIG5vdCBoYW5kbGUKKyAg
ICAvLyBhbGwgdGhlIHNhbWUgY2FzZXMgd2UgaGFuZGxlIHdlbGwgaW4gdGhlIFVSTCBjb2RlIGZv
ciBjcmVhdGluZyBhbiBOU1VSTC4KKyAgICBpZiAodGV4dC5pc1VSTCkKKyAgICAgICAgcmV0dXJu
IHVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworCisgICAg
Ly8gRklYTUU6IFdURiBzaG91bGQgb2ZmZXIgYSBub24tTWFjLXNwZWNpZmljIHdheSB0byBjb252
ZXJ0IHN0cmluZyB0byBwcmVjb21wb3NlZCBmb3JtIHNvIHdlIGNhbiBkbyBpdCBmb3IgYWxsIHBs
YXRmb3Jtcy4KKyAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21wb3NlZFN0cmlu
Z1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKIH0KIAogQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBj
b25zdApAQCAtMTM0LDEyICsxMzgsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRp
YmxlQ29udGVudCgpIGNvbnN0CiAgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRU
eXBlUE5HKSk7CiB9CiAgICAgCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGcmFtZSogZnJh
bWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKK2Jvb2wg
RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBv
bGljeSkgY29uc3QKIHsKLSAgICByZXR1cm4gIWFzVVJMKGZyYW1lLCBmaWxlbmFtZVBvbGljeSku
aXNFbXB0eSgpOworICAgIHJldHVybiAhYXNVUkwoZmlsZW5hbWVQb2xpY3kpLmlzRW1wdHkoKTsK
IH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVy
c2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwo
RmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBVc2UgZmlsZW5hbWVQb2xpY3kuCiAKQEAgLTE1MSwxNyArMTU1LDEzIEBAIFN0cmlu
ZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ks
IFN0cmluZyogdGl0bGUpIGNvCiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAgICAg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0eXBl
cywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgCi0gICAgLy8gRklYTUU6IHVzaW5nIHRoZSBlZGl0
b3JDbGllbnQgdG8gY2FsbCBpbnRvIFdlYktpdCwgZm9yIG5vdywgc2luY2UgCi0gICAgLy8gY2Fs
bGluZyB3ZWJraXRfY2Fub25pY2FsaXplIGZyb20gV2ViQ29yZSBpbnZvbHZlcyBtaWdyYXRpbmcg
YSBzaXphYmxlIGFtb3VudCBvZiAKLSAgICAvLyBoZWxwZXIgY29kZSB0aGF0IHNob3VsZCBlaXRo
ZXIgYmUgZG9uZSBpbiBhIHNlcGFyYXRlIHBhdGNoIG9yIGZpZ3VyZWQgb3V0IGluIGFub3RoZXIg
d2F5LgotICAgIAorCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1VSTFBib2FyZFR5
cGUpKSkgewogICAgICAgICBOU1VSTCAqVVJMRnJvbVBhc3RlYm9hcmQgPSBbTlNVUkwgVVJMV2l0
aFN0cmluZzpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnN0cmlu
Z0ZvclR5cGUoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSksIG1fcGFzdGVib2FyZE5hbWUpXTsKICAg
ICAgICAgTlNTdHJpbmcgKnNjaGVtZSA9IFtVUkxGcm9tUGFzdGVib2FyZCBzY2hlbWVdOwogICAg
ICAgICAvLyBDYW5ub3QgZHJvcCBvdGhlciBzY2hlbWVzIHVubGVzcyA8cmRhcjovL3Byb2JsZW0v
MTA1NjI2NjI+IGFuZCA8cmRhcjovL3Byb2JsZW0vMTExODczMTU+IGFyZSBmaXhlZC4KICAgICAg
ICAgaWYgKFtzY2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cCJdIHx8IFtzY2hlbWUgaXNFcXVh
bFRvU3RyaW5nOkAiaHR0cHMiXSkKLSAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRvcigp
LmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3Ry
aW5nXTsKKyAgICAgICAgICAgIHJldHVybiBbVVJMQnlDYW5vbmljYWxpemluZ1VSTChVUkxGcm9t
UGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOwogICAgIH0KICAgICAKICAgICBpZiAodHlwZXMu
Y29udGFpbnMoU3RyaW5nKE5TU3RyaW5nUGJvYXJkVHlwZSkpKSB7CkBAIC0xNzEsNyArMTcxLDcg
QEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lv
blBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY28KICAgICAgICAgLy8gVGhlIHJlc3VsdCBvZiB0aGlz
IGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5pdGlhdGUgbmF2aWdhdGlvbiwgc28gd2Ugc2hvdWxkbid0
IGFsbG93IGFyYml0cmFyeSBmaWxlIFVSTHMuCiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ug
YWxsb3cgb25seSBodHRwIGZhbWlseSBzY2hlbWVzLCBvciBhbnl0aGluZyBub24tbG9jYWw/CiAg
ICAgICAgIGlmIChbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSB8fCBbc2NoZW1lIGlz
RXF1YWxUb1N0cmluZzpAImh0dHBzIl0pCi0gICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0
b3IoKS5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFVSTEZyb21QYXN0ZWJvYXJkKSBhYnNvbHV0
ZVN0cmluZ107CisgICAgICAgICAgICByZXR1cm4gW1VSTEJ5Q2Fub25pY2FsaXppbmdVUkwoVVJM
RnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKICAgICB9CiAgICAgCiAgICAgaWYgKHR5
cGVzLmNvbnRhaW5zKFN0cmluZyhOU0ZpbGVuYW1lc1Bib2FyZFR5cGUpKSkgewpAQCAtMTgxLDE5
ICsxODEsMTMgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1l
Q29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY28KICAgICAgICAgICAgIEJPT0wgaXNE
aXJlY3Rvcnk7CiAgICAgICAgICAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVzWzBdIGlzRGlyZWN0b3J5OiZpc0RpcmVjdG9yeV0gJiYg
aXNEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICAg
ICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVzWzBdXSkgYWJzb2x1dGVTdHJpbmddOworICAgICAgICAg
ICAgcmV0dXJuIFtVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
ZmlsZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAg
cmV0dXJuIFN0cmluZygpOyAgICAgICAgCiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gRHJhZ0RhdGE6OmFzRnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYgcmFuZ2UsIGJvb2wg
YWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KSBjb25zdAotewotICAgIFBhc3Rl
Ym9hcmQgcGFzdGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICByZXR1cm4gZnJhbWUtPmVk
aXRvcigpLndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCByYW5nZSwgYWxsb3dQ
bGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsKLX0KLSAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5kZXggNDE3Y2UyZi4u
YzJmMTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2Fy
ZFV0aWxpdGllc1dpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9h
cmRVdGlsaXRpZXNXaW4uaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBVUkw7CiAK
IEhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCmluZGV4IDVhN2Y3MzYuLjcwMDU3MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtMjksMTAg
KzI5LDYgQEAKIAogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxp
dGllc1dpbi5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVu
dC5oIgotI2luY2x1ZGUgIk1hcmt1cC5oIgotI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAi
VGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8b2JqaWRsLmg+CiAjaW5jbHVkZSA8c2hsd2FwaS5o
PgpAQCAtNTYsNyArNTIsNyBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAm
IGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29ucwogewogfQogCi1ib29s
IERyYWdEYXRhOjpjb250YWluc1VSTChGcmFtZSosIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBm
aWxlbmFtZVBvbGljeSkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1l
Q29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAobV9wbGF0
Zm9ybURyYWdEYXRhKQogICAgICAgICByZXR1cm4gU1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFnRGF0
YS0+UXVlcnlHZXREYXRhKHVybFdGb3JtYXQoKSkpIApAQCAtMTAxLDcgKzk3LDcgQEAgdm9pZCBE
cmFnRGF0YTo6Z2V0RHJhZ0ZpbGVDb250ZW50RGF0YShpbnQgc2l6ZSwgdm9pZCogZGF0YUJsb2Ip
CiAgICAgICAgIGdldEZpbGVDb250ZW50RGF0YShtX3BsYXRmb3JtRHJhZ0RhdGEsIHNpemUsIGRh
dGFCbG9iKTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSosIEZpbGVuYW1lQ29u
dmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmlu
ZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5
LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIHJldHVybiAobV9wbGF0Zm9ybURyYWdEYXRh
KSA/IGdldFVSTChtX3BsYXRmb3JtRHJhZ0RhdGEsIGZpbGVuYW1lUG9saWN5LCB0aXRsZSkgOiBn
ZXRVUkwoJm1fZHJhZ0RhdGFNYXAsIGZpbGVuYW1lUG9saWN5LCB0aXRsZSk7CiB9CkBAIC0xODEs
NyArMTc3LDcgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQoKSBjb25zdAogICAg
IHJldHVybiBtX2RyYWdEYXRhTWFwLmNvbnRhaW5zKHBsYWluVGV4dFdGb3JtYXQoKS0+Y2ZGb3Jt
YXQpIHx8IG1fZHJhZ0RhdGFNYXAuY29udGFpbnMocGxhaW5UZXh0Rm9ybWF0KCktPmNmRm9ybWF0
KTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dChGcmFtZSopIGNvbnN0CitTdHJp
bmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gKG1fcGxhdGZv
cm1EcmFnRGF0YSkgPyBnZXRQbGFpblRleHQobV9wbGF0Zm9ybURyYWdEYXRhKSA6IGdldFBsYWlu
VGV4dCgmbV9kcmFnRGF0YU1hcCk7CiB9CkBAIC0yMDAsNDggKzE5NiwxMiBAQCBib29sIERyYWdE
YXRhOjpjYW5TbWFydFJlcGxhY2UoKSBjb25zdAogCiBib29sIERyYWdEYXRhOjpjb250YWluc0Nv
bXBhdGlibGVDb250ZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29udGFpbnNQbGFpblRleHQo
KSB8fCBjb250YWluc1VSTCgwKSAKKyAgICByZXR1cm4gY29udGFpbnNQbGFpblRleHQoKSB8fCBj
b250YWluc1VSTCgpCiAgICAgICAgIHx8ICgobV9wbGF0Zm9ybURyYWdEYXRhKSA/IChjb250YWlu
c0hUTUwobV9wbGF0Zm9ybURyYWdEYXRhKSB8fCBjb250YWluc0ZpbGVuYW1lcyhtX3BsYXRmb3Jt
RHJhZ0RhdGEpKQogICAgICAgICAgICAgOiAoY29udGFpbnNIVE1MKCZtX2RyYWdEYXRhTWFwKSB8
fCBjb250YWluc0ZpbGVuYW1lcygmbV9kcmFnRGF0YU1hcCkpKQogICAgICAgICB8fCBjb250YWlu
c0NvbG9yKCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0RhdGE6OmFz
RnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wsIGJvb2wmKSBjb25zdAoteyAgICAg
Ci0gICAgLyoKLSAgICAgKiBPcmRlciBpcyByaWNoZXN0IGZvcm1hdCBmaXJzdC4gT24gT1NYIHRo
aXMgaXM6Ci0gICAgICogKiBXZWIgQXJjaGl2ZQotICAgICAqICogRmlsZW5hbWVzCi0gICAgICog
KiBIVE1MCi0gICAgICogKiBSVEYKLSAgICAgKiAqIFRJRkYKLSAgICAgKiAqIFBJQ1QKLSAgICAg
Ki8KLSAgICAgCi0gICAgaWYgKG1fcGxhdGZvcm1EcmFnRGF0YSkgewotICAgICAgICBpZiAoY29u
dGFpbnNGaWxlbmFtZXMobV9wbGF0Zm9ybURyYWdEYXRhKSkgewotICAgICAgICAgICAgaWYgKFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21GaWxlbmFt
ZXMoZnJhbWUtPmRvY3VtZW50KCksIG1fcGxhdGZvcm1EcmFnRGF0YSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZyYWdtZW50OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbnRhaW5zSFRN
TChtX3BsYXRmb3JtRHJhZ0RhdGEpKSB7Ci0gICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUhUTUwoZnJhbWUtPmRvY3VtZW50
KCksIG1fcGxhdGZvcm1EcmFnRGF0YSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50
OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGNvbnRhaW5zRmlsZW5hbWVz
KCZtX2RyYWdEYXRhTWFwKSkgewotICAgICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21GaWxlbmFtZXMoZnJhbWUtPmRvY3VtZW50
KCksICZtX2RyYWdEYXRhTWFwKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoY29udGFpbnNIVE1MKCZtX2RyYWdEYXRhTWFwKSkgewot
ICAgICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBm
cmFnbWVudEZyb21IVE1MKGZyYW1lLT5kb2N1bWVudCgpLCAmbV9kcmFnRGF0YU1hcCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVy
biAwOwotfQotCiBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IENvbG9yKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236580</attachid>
            <date>2014-08-14 00:26:19 -0700</date>
            <delta_ts>2014-08-27 03:51:28 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wcore-drag-data-violations.diff</filename>
            <type>text/plain</type>
            <size>29271</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3OWYyMjM1Li4wZjdmOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTQtMDgtMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIERyYWdEYXRhIHNob3VsZCBub3QgZGVwZW5kIG9uIENsaXBib2FyZCwgRG9j
dW1lbnRGcmFnbWVudCwgYW5kIERvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIERyYWdEYXRhIHRvIG5vdCBkZXBlbmQgb24gRnJh
bWUsIERvY3VtZW50RnJhZ21lbnQsCisgICAgICAgIERvY3VtZW50IGFuZCBSYW5nZS4gRHJhZ0Rh
dGE6OmFzRnJhZ21lbnQoKSBoYXMgYmVlbiBtb3ZlZCB0bworICAgICAgICBEcmFnQ29udHJvbGxl
ciBhbmQgaW1wbGVtZW50ZWQgaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGUuCisgICAgICAg
IERyYWdEYXRhIG1ldGhvZHMgdXNpbmcgRnJhbWUgaGFzIGJlZW4gcmV3b3JrZWQgaW4gTWFjIHRv
IG5vdCB1c2UKKyAgICAgICAgRnJhbWUsIHNpbmNlIGFsbCBvdGhlciBwb3J0cyB3ZXJlIGlnbm9y
ZWluZyB0aGUgZnJhbWUgcGFyYW1ldGVyLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9jdW1lbnRGcmFnbWVu
dEZyb21EcmFnRGF0YSk6IE1ha2UgaXQKKyAgICAgICAgYSBzdGF0aWMgbWVtYmVyIHRvIGJlIGFi
bGUgdG8gdXNlIGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKCkuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24pOiBVcGRhdGUgdG8KKyAgICAg
ICAgRHJhZ0RhdGEgQVBJIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxl
cjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL2VmbC9EcmFnQ29udHJvbGxlckVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRG
cm9tRHJhZ0RhdGEpOiBNb3ZlCisgICAgICAgIERyYWdEYXRhOjphc0ZyYWdtZW50KCkgaW1wbGVt
ZW50YXRpb24gaGVyZS4KKyAgICAgICAgKiBwYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEp
OiBEaXR0by4KKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRv
LgorICAgICAgICAqIHBhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZs
L0RyYWdEYXRhRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1BsYWluVGV4
dCk6IFJlbW92ZSBGcmFtZSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
Y29udGFpbnNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdE
YXRhOjphc0ZyYWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0Rh
dGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBTYW1l
IGltcGxlbWVudGF0aW9uIGFzIHRoZQorICAgICAgICBFZGl0b3IuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKTogVXNlIFVSTEJ5Q2Fub25pY2FsaXppbmdVUkwo
KSBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIHRoZSBFZGl0b3IgY2xpZW50LgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29u
dGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0RhdGE6OmFzVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFp
blRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbXBh
dGlibGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc0ZyYWdtZW50KTog
RGVsZXRlZC4KKwogMjAxNC0wOC0xMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIEVsZW1lbnRzIHdob3NlIGNvbnRlbnRzIHN0YXJ0IHdpdGggYW4g
YXN0cmFsIFVuaWNvZGUgc3ltYm9sIGRpc2FwcGVhciB3aGVuIENTUyBgOjpmaXJzdC1sZXR0ZXJg
IGlzIGFwcGxpZWQgdG8gdGhlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApp
bmRleCAxYjE5ZmU5Li4wZmZkYzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcApAQCAtMTE0LDI1ICsxMTQsMjUgQEAgRHJhZ0NvbnRyb2xsZXI6On5EcmFnQ29udHJvbGxl
cigpCiAgICAgbV9jbGllbnQuZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKIH0KIAotc3RhdGlj
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0
YShEcmFnRGF0YSYgZHJhZ0RhdGEsIEZyYW1lKiBmcmFtZSwgUmFuZ2UmIGNvbnRleHQsIGJvb2wg
YWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQorUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6ZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShE
cmFnRGF0YSYgZHJhZ0RhdGEsIEZyYW1lJiBmcmFtZSwgUmFuZ2UmIGNvbnRleHQsIGJvb2wgYWxs
b3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KQogewogICAgIGNob3NlUGxhaW5UZXh0
ID0gZmFsc2U7CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBjb250ZXh0Lm93bmVyRG9jdW1l
bnQoKTsKICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpKSB7Ci0g
ICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZHJhZ0Rh
dGEuYXNGcmFnbWVudChmcmFtZSwgY29udGV4dCwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5U
ZXh0KSkKKyAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YShkcmFnRGF0YSwgZnJhbWUsIGNvbnRleHQsIGFs
bG93UGxhaW5UZXh0LCBjaG9zZVBsYWluVGV4dCkpCiAgICAgICAgICAgICByZXR1cm4gZnJhZ21l
bnQ7CiAKLSAgICAgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKGZyYW1lLCBEcmFnRGF0YTo6
RG9Ob3RDb252ZXJ0RmlsZW5hbWVzKSkgeworICAgICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNV
UkwoRHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcykpIHsKICAgICAgICAgICAgIFN0cmlu
ZyB0aXRsZTsKLSAgICAgICAgICAgIFN0cmluZyB1cmwgPSBkcmFnRGF0YS5hc1VSTChmcmFtZSwg
RHJhZ0RhdGE6OkRvTm90Q29udmVydEZpbGVuYW1lcywgJnRpdGxlKTsKKyAgICAgICAgICAgIFN0
cmluZyB1cmwgPSBkcmFnRGF0YS5hc1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVz
LCAmdGl0bGUpOwogICAgICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgUmVmUHRyPEhUTUxBbmNob3JFbGVtZW50PiBhbmNob3IgPSBIVE1MQW5jaG9yRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICAgICAgICAgICAgICBhbmNob3ItPnNldEhyZWYodXJs
KTsKICAgICAgICAgICAgICAgICBpZiAodGl0bGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIFRyeSB0aGUgcGxhaW4gdGV4dCBmaXJzdCBiZWNhdXNlIHRoZSB1cmwgbWlnaHQg
YmUgbm9ybWFsaXplZCBvciBlc2NhcGVkLgogICAgICAgICAgICAgICAgICAgICBpZiAoZHJhZ0Rh
dGEuY29udGFpbnNQbGFpblRleHQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0g
ZHJhZ0RhdGEuYXNQbGFpblRleHQoZnJhbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgdGl0
bGUgPSBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAodGl0
bGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB1cmw7CiAgICAg
ICAgICAgICAgICAgfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdE
CiAgICAgfQogICAgIGlmIChhbGxvd1BsYWluVGV4dCAmJiBkcmFnRGF0YS5jb250YWluc1BsYWlu
VGV4dCgpKSB7CiAgICAgICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4dCwgZHJhZ0RhdGEuYXNQbGFpblRleHQoZnJh
bWUpKS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoY29udGV4
dCwgZHJhZ0RhdGEuYXNQbGFpblRleHQoKSkuZ2V0KCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7
CkBAIC0yMzQsNyArMjM0LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVy
YXRpb24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBt
X2NsaWVudC53aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25B
Y3Rpb25Mb2FkLCBkcmFnRGF0YSk7Ci0gICAgbV9wYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmxv
YWQoRnJhbWVMb2FkUmVxdWVzdCgmbV9wYWdlLm1haW5GcmFtZSgpLCBSZXNvdXJjZVJlcXVlc3Qo
ZHJhZ0RhdGEuYXNVUkwoJm1fcGFnZS5tYWluRnJhbWUoKSkpKSk7CisgICAgbV9wYWdlLm1haW5G
cmFtZSgpLmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgmbV9wYWdlLm1haW5GcmFtZSgp
LCBSZXNvdXJjZVJlcXVlc3QoZHJhZ0RhdGEuYXNVUkwoKSkpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBib29sIHNldFNlbGVjdGlvblRvRHJhZ0Nh
cmV0KEZyYW1lKiBmcmFtZSwgVmlzaWJsZVNlbGVjdGlvbiYgZHJhZ0NhcmV0LCBSCiBib29sIERy
YWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1l
LCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgQVNTRVJUKG1fcGFnZS5kcmFnQ2FyZXRDb250
cm9sbGVyKCkuaGFzQ2FyZXQoKSk7Ci0gICAgU3RyaW5nIHRleHQgPSBtX3BhZ2UuZHJhZ0NhcmV0
Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyBlbXB0eVN0cmluZygpIDog
ZHJhZ0RhdGEuYXNQbGFpblRleHQoaW5uZXJGcmFtZSk7CisgICAgU3RyaW5nIHRleHQgPSBtX3Bh
Z2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgPyBlbXB0
eVN0cmluZygpIDogZHJhZ0RhdGEuYXNQbGFpblRleHQoKTsKICAgICBOb2RlKiB0YXJnZXQgPSBp
bm5lckZyYW1lLT5lZGl0b3IoKS5maW5kRXZlbnRUYXJnZXRGcm9tKG1fcGFnZS5kcmFnQ2FyZXRD
b250cm9sbGVyKCkuY2FyZXRQb3NpdGlvbigpKTsKICAgICByZXR1cm4gdGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLT5k
b21XaW5kb3coKSwgdGV4dCksIElHTk9SRV9FWENFUFRJT04pOwogfQpAQCAtNDk0LDcgKzQ5NCw3
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEmIGRyYWdE
YXRhKQogICAgIFJlc291cmNlQ2FjaGVWYWxpZGF0aW9uU3VwcHJlc3NvciB2YWxpZGF0aW9uU3Vw
cHJlc3NvcihjYWNoZWRSZXNvdXJjZUxvYWRlcik7CiAgICAgaWYgKGRyYWdJc01vdmUoaW5uZXJG
cmFtZS0+c2VsZWN0aW9uKCksIGRyYWdEYXRhKSB8fCBkcmFnQ2FyZXQuaXNDb250ZW50UmljaGx5
RWRpdGFibGUoKSkgewogICAgICAgICBib29sIGNob3NlUGxhaW5UZXh0ID0gZmFsc2U7Ci0gICAg
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50RnJhZ21lbnRG
cm9tRHJhZ0RhdGEoZHJhZ0RhdGEsIGlubmVyRnJhbWUuZ2V0KCksICpyYW5nZSwgdHJ1ZSwgY2hv
c2VQbGFpblRleHQpOworICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKGRyYWdEYXRhLCAqaW5uZXJGcmFtZSwgKnJh
bmdlLCB0cnVlLCBjaG9zZVBsYWluVGV4dCk7CiAgICAgICAgIGlmICghZnJhZ21lbnQgfHwgIWlu
bmVyRnJhbWUtPmVkaXRvcigpLnNob3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwg
RWRpdG9ySW5zZXJ0QWN0aW9uRHJvcHBlZCkpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQpAQCAtNTE3LDcgKzUxNyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNs
dWRlRWRpdERyYWcoRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5nIHRleHQgPSBkcmFnRGF0YS5hc1BsYWluVGV4
dChpbm5lckZyYW1lLmdldCgpKTsKKyAgICAgICAgU3RyaW5nIHRleHQgPSBkcmFnRGF0YS5hc1Bs
YWluVGV4dCgpOwogICAgICAgICBpZiAodGV4dC5pc0VtcHR5KCkgfHwgIWlubmVyRnJhbWUtPmVk
aXRvcigpLnNob3VsZEluc2VydFRleHQodGV4dCwgcmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFj
dGlvbkRyb3BwZWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAppbmRleCA0N2UzY2M5Li42ZTE4YjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIERhdGFUcmFuc2ZlcjsKICAgICBjbGFzcyBEb2N1bWVu
dDsKKyAgICBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogICAgIGNsYXNzIERyYWdDbGllbnQ7CiAg
ICAgY2xhc3MgRHJhZ0RhdGE7CiAgICAgY2xhc3MgRWxlbWVudDsKQEAgLTQ0LDYgKzQ1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgUGFnZTsK
ICAgICBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CisgICAgY2xhc3MgUmFuZ2U7CiAKICAgICBz
dHJ1Y3QgRHJhZ1N0YXRlOwogCkBAIC0xMTMsNiArMTE1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIGNsZWFudXBBZnRlclN5c3RlbURyYWcoKTsKICAgICAgICAgdm9pZCBk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0YVRyYW5zZmVyJiwgRWxlbWVudCYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmLCBG
cmFtZSYsIFJhbmdlJiwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQp
OworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZyb21EcmFnRGF0YShEcmFnRGF0YSYsIEZyYW1lJiwgUmFuZ2UmLCBib29sIGFsbG93UGxh
aW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCk7CisKICAgICAgICAgUGFnZSYgbV9wYWdlOwog
ICAgICAgICBEcmFnQ2xpZW50JiBtX2NsaWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9l
ZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3BwCmluZGV4IDlkYjM4NjguLjM2MTU1NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVmbC5jcHAKQEAgLTI5LDYgKzI5
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnQ29udHJvbGxlci5oIgog
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAj
aW5jbHVkZSAiRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgpAQCAtNTAsNyArNTIsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlE
b3duKERyYWdEYXRhJikKIAogRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJh
dGlvbihEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7Ci0gICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJM
KDApKQorICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJh
Z09wZXJhdGlvbkNvcHk7CiAKICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CkBAIC03MSw0
ICs3Myw5IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShE
YXRhVHJhbnNmZXImLCBFbGVtZW50JiwgY29uc3QgVVJMCiB7CiB9CiAKK1Bhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gRHJhZ0NvbnRyb2xsZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRh
KERyYWdEYXRhJiwgRnJhbWUmLCBSYW5nZSYsIGJvb2wgLyphbGxvd1BsYWluVGV4dCovLCBib29s
JiAvKmNob3NlUGxhaW5UZXh0Ki8pCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAppbmRleCA1NGZj
OGU2Li4xNzJjNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29u
dHJvbGxlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xs
ZXJHdGsuY3BwCkBAIC0yNiwxMyArMjYsMTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJEcmFnQ29udHJvbGxlci5oIgogCisjaW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgogI2lu
Y2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKKyNpbmNsdWRlICJtYXJrdXAu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Myw3ICs1Nyw3IEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmlzQ29weUtleURvd24oRHJhZ0RhdGEmKQogRHJhZ09wZXJhdGlvbiBEcmFnQ29u
dHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgLy8gRklY
TUU6IFRoaXMgbG9naWMgaXMgaW5jb21wbGV0ZQotICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VS
TCgwKSkKKyAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNVUkwoKSkKICAgICAgICAgcmV0dXJuIERy
YWdPcGVyYXRpb25Db3B5OwogCiAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwpAQCAtNzQs
NCArNzgsMTIgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBFbGVtZW4KICAgICBkYXRhVHJhbnNmZXIucGFz
dGVib2FyZCgpLndyaXRlSW1hZ2UoZWxlbWVudCwgdXJsLCBsYWJlbCk7CiB9CiAKK1Bhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0NvbnRyb2xsZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURy
YWdEYXRhKERyYWdEYXRhJiBkcmFnRGF0YSwgRnJhbWUmIGZyYW1lLCBSYW5nZSYsIGJvb2wgLyph
bGxvd1BsYWluVGV4dCovLCBib29sJiAvKmNob3NlUGxhaW5UZXh0Ki8pCit7CisgICAgaWYgKCFk
cmFnRGF0YS5wbGF0Zm9ybURhdGEoKS0+aGFzTWFya3VwKCkgfHwgIWZyYW1lLmRvY3VtZW50KCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCktPm1hcmt1
cCgpLCAiIik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Ry
YWdDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xs
ZXJNYWMubW0KaW5kZXggOTRhZmExYy4uOTdhNmFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KQEAgLTI5LDEzICsyOSwxOCBAQAogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAKICNpbXBvcnQgIkRhdGFUcmFuc2Zlci5oIgorI2ltcG9ydCAiRG9j
dW1lbnQuaCIKKyNpbXBvcnQgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbXBvcnQgIkRyYWdDbGll
bnQuaCIKICNpbXBvcnQgIkRyYWdEYXRhLmgiCisjaW1wb3J0ICJFZGl0b3IuaCIKKyNpbXBvcnQg
IkVkaXRvckNsaWVudC5oIgogI2ltcG9ydCAiRWxlbWVudC5oIgogI2ltcG9ydCAiRnJhbWVWaWV3
LmgiCiAjaW1wb3J0ICJNYWluRnJhbWUuaCIKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlBh
c3RlYm9hcmQuaCIKKyNpbXBvcnQgIlJhbmdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNTQsNyArNTksNyBAQCBib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKERyYWdE
YXRhJiBkcmFnRGF0YSkKICAgICAKIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdP
cGVyYXRpb24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIGlmICgoZHJhZ0RhdGEuZmxhZ3Mo
KSAmIERyYWdBcHBsaWNhdGlvbklzTW9kYWwpIHx8ICFkcmFnRGF0YS5jb250YWluc1VSTCgmbV9w
YWdlLm1haW5GcmFtZSgpKSkKKyAgICBpZiAoKGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFnQXBwbGlj
YXRpb25Jc01vZGFsKSB8fCAhZHJhZ0RhdGEuY29udGFpbnNVUkwoKSkKICAgICAgICAgcmV0dXJu
IERyYWdPcGVyYXRpb25Ob25lOwogCiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSB8fCAo
IShkcmFnRGF0YS5mbGFncygpICYgKERyYWdBcHBsaWNhdGlvbkhhc0F0dGFjaGVkU2hlZXQgfCBE
cmFnQXBwbGljYXRpb25Jc1NvdXJjZSkpKSkKQEAgLTg3LDYgKzkyLDEyIEBAIHZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJhbnNmZXImIGRhdGFUcmFu
c2ZlciwgRWxlbWVuCiAgICAgbV9jbGllbnQuZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGRhdGFU
cmFuc2Zlci5wYXN0ZWJvYXJkKCkubmFtZSgpLCBlbGVtZW50LCB1cmwsIGxhYmVsLCBlbGVtZW50
LmRvY3VtZW50KCkuZnJhbWUoKSk7CiB9CiAKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
RHJhZ0NvbnRyb2xsZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiBkcmFn
RGF0YSwgRnJhbWUmIGZyYW1lLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwg
Ym9vbCYgY2hvc2VQbGFpblRleHQpCit7CisgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKGRyYWdE
YXRhLnBhc3RlYm9hcmROYW1lKCkpOworICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS53ZWJDb250
ZW50RnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZCwgY29udGV4dCwgYWxsb3dQbGFpblRleHQsIGNo
b3NlUGxhaW5UZXh0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2lu
L0RyYWdDb250cm9sbGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250
cm9sbGVyV2luLmNwcAppbmRleCBkMTljYTg4Li5mOWQ2MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCkBAIC0yNiw5ICsyNiwxMyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRl
ICJDbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKKyNp
bmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgog
I2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtNTAsNyArNTQsNyBAQCBEcmFnT3BlcmF0aW9uIERyYWdD
b250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICAvL2lmIHdl
IGFyZSBhIG1vZGFsIHdpbmRvdywgd2UgYXJlIHRoZSBkcmFnIHNvdXJjZSwgb3IgdGhlIHdpbmRv
dyBpcyBhbiBhdHRhY2hlZCBzaGVldAogICAgIC8vSWYgdGhpcyBjYW4gYmUgZGV0ZXJtaW5lZCBm
cm9tIHdpdGhpbiBXZWJDb3JlIG9wZXJhdGlvbkZvckRyYWcgY2FuIGJlIHB1bGxlZCBpbnRvIAog
ICAgIC8vV2ViQ29yZSBpdHNlbGYKLSAgICByZXR1cm4gZHJhZ0RhdGEuY29udGFpbnNVUkwoMCkg
JiYgIW1fZGlkSW5pdGlhdGVEcmFnID8gRHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFnT3BlcmF0aW9u
Tm9uZTsKKyAgICByZXR1cm4gZHJhZ0RhdGEuY29udGFpbnNVUkwoKSAmJiAhbV9kaWRJbml0aWF0
ZURyYWcgPyBEcmFnT3BlcmF0aW9uQ29weSA6IERyYWdPcGVyYXRpb25Ob25lOwogfQogCiBib29s
IERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKERyYWdEYXRhJikKQEAgLTgzLDQgKzg3LDQw
IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRhVHJh
bnNmZXImIGRhdGFUcmFuc2ZlciwgRWxlbWVuCiAgICAgcGFzdGVib2FyZC53cml0ZU1hcmt1cChj
cmVhdGVNYXJrdXAoZWxlbWVudCwgSW5jbHVkZU5vZGUsIDAsIFJlc29sdmVBbGxVUkxzKSk7CiB9
CiAKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0NvbnRyb2xsZXI6OmNyZWF0ZUZy
YWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiBkcmFnRGF0YSwgRnJhbWUmIGZyYW1lLCBSYW5n
ZSYsIGJvb2wgLyphbGxvd1BsYWluVGV4dCovLCBib29sJiAvKmNob3NlUGxhaW5UZXh0Ki8pCit7
CisgICAgLyoKKyAgICAgKiBPcmRlciBpcyByaWNoZXN0IGZvcm1hdCBmaXJzdC4gT24gT1NYIHRo
aXMgaXM6CisgICAgICogKiBXZWIgQXJjaGl2ZQorICAgICAqICogRmlsZW5hbWVzCisgICAgICog
KiBIVE1MCisgICAgICogKiBSVEYKKyAgICAgKiAqIFRJRkYKKyAgICAgKiAqIFBJQ1QKKyAgICAg
Ki8KKworICAgIGlmIChEcmFnRGF0YVJlZiBwbGF0Zm9ybURyYWdEYXRhID0gZHJhZ0RhdGEucGxh
dGZvcm1EYXRhKCkpIHsKKyAgICAgICAgaWYgKGNvbnRhaW5zRmlsZW5hbWVzKHBsYXRmb3JtRHJh
Z0RhdGEpKSB7CisgICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhmcmFtZS5kb2N1bWVudCgpLCBwbGF0Zm9y
bURyYWdEYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoY29udGFpbnNIVE1MKHBsYXRmb3JtRHJhZ0RhdGEpKSB7CisgICAgICAg
ICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50
RnJvbUhUTUwoZnJhbWUuZG9jdW1lbnQoKSwgcGxhdGZvcm1EcmFnRGF0YSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZyYWdtZW50OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKGNvbnRhaW5zRmlsZW5hbWVzKCZkcmFnRGF0YS5kcmFnRGF0YU1hcCgpKSkgeworICAgICAg
ICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVu
dEZyb21GaWxlbmFtZXMoZnJhbWUuZG9jdW1lbnQoKSwgJmRyYWdEYXRhLmRyYWdEYXRhTWFwKCkp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChjb250YWluc0hUTUwoJmRyYWdEYXRhLmRyYWdEYXRhTWFwKCkpKSB7CisgICAgICAgICAg
ICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJv
bUhUTUwoZnJhbWUuZG9jdW1lbnQoKSwgJmRyYWdEYXRhLmRyYWdEYXRhTWFwKCkpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggZjNhMzVh
Ny4uMDBhYTlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC02MCwxMCArNjAs
NyBAQCB0eXBlZGVmIHZvaWQqIERyYWdEYXRhUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEZyYW1lOwotY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIFVSTDsKLWNsYXNz
IFJhbmdlOwogCiBlbnVtIERyYWdBcHBsaWNhdGlvbkZsYWdzIHsKICAgICBEcmFnQXBwbGljYXRp
b25Ob25lID0gMCwKQEAgLTk1LDE0ICs5MiwxMyBAQCBwdWJsaWM6CiAgICAgRHJhZ0FwcGxpY2F0
aW9uRmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uRmxhZ3M7IH0KICAg
ICBEcmFnRGF0YVJlZiBwbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRHJh
Z0RhdGE7IH0KICAgICBEcmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygp
IGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOyB9Ci0gICAgYm9v
bCBjb250YWluc1VSTChGcmFtZSosIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBv
bGljeSA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNVUkwoRmls
ZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5ID0gQ29udmVydEZpbGVuYW1lcykg
Y29uc3Q7CiAgICAgYm9vbCBjb250YWluc1BsYWluVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgY29u
dGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0OwotICAgIFN0cmluZyBhc1VSTChGcmFtZSos
IEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSA9IENvbnZlcnRGaWxlbmFt
ZXMsIFN0cmluZyogdGl0bGUgPSAwKSBjb25zdDsKLSAgICBTdHJpbmcgYXNQbGFpblRleHQoRnJh
bWUqKSBjb25zdDsKKyAgICBTdHJpbmcgYXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZp
bGVuYW1lUG9saWN5ID0gQ29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0aXRsZSA9IDApIGNvbnN0
OworICAgIFN0cmluZyBhc1BsYWluVGV4dCgpIGNvbnN0OwogICAgIHZvaWQgYXNGaWxlbmFtZXMo
VmVjdG9yPFN0cmluZz4mKSBjb25zdDsKICAgICBDb2xvciBhc0NvbG9yKCkgY29uc3Q7Ci0gICAg
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBhc0ZyYWdtZW50KEZyYW1lKiwgUmFuZ2UmIGNv
bnRleHQsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KSBjb25zdDsK
ICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNDb2xv
cigpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNGaWxlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKaW5kZXggZGNjOGVmYi4uMDAyYTc5MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcApAQCAtMjEs
OCArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAK
LSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01NSw3ICs1NCw3IEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoRnJh
bWUqKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQpAQCAtNzAsMTkgKzY5LDE0IEBAIGJvb2wgRHJhZ0RhdGE6OmNv
bnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xp
Y3kpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Q
b2xpY3kpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6
OmFzVVJMKEZyYW1lKiwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqKSBjb25zdAor
U3RyaW5nIERyYWdEYXRhOjphc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ksIFN0cmluZyop
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IERyYWdEYXRhOjphc0ZyYWdtZW50KEZyYW1lKiwgUmFuZ2UmLCBib29sLCBib29s
JikgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKaW5kZXggMmJmMzRkZi4uNTk4YzQ0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCkBAIC0xOCwxMCArMTgsNiBA
QAogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAKICNpbmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCi0j
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5j
bHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJtYXJrdXAuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC01NSw3ICs1MSw3IEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zUGxhaW5UZXh0KCkg
Y29uc3QKICAgICByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNUZXh0KCk7CiB9CiAKLVN0
cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoRnJhbWUqKSBjb25zdAorU3RyaW5nIERyYWdEYXRh
Ojphc1BsYWluVGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YS0+
dGV4dCgpOwogfQpAQCAtNjcsMTUgKzYzLDE1IEBAIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkg
Y29uc3QKIAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGNvbnRhaW5zUGxhaW5UZXh0KCkgfHwgY29udGFpbnNVUkwoMCkgfHwg
bV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNNYXJrdXAoKSB8fCBjb250YWluc0NvbG9yKCkgfHwgY29u
dGFpbnNGaWxlcygpOworICAgIHJldHVybiBjb250YWluc1BsYWluVGV4dCgpIHx8IGNvbnRhaW5z
VVJMKCkgfHwgbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNNYXJrdXAoKSB8fCBjb250YWluc0NvbG9y
KCkgfHwgY29udGFpbnNGaWxlcygpOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTChG
cmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29u
c3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBm
aWxlbmFtZVBvbGljeSkgY29uc3QKIHsKLSAgICByZXR1cm4gIWFzVVJMKGZyYW1lLCBmaWxlbmFt
ZVBvbGljeSkuaXNFbXB0eSgpOworICAgIHJldHVybiAhYXNVUkwoZmlsZW5hbWVQb2xpY3kpLmlz
RW1wdHkoKTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSosIEZpbGVuYW1lQ29u
dmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmlu
ZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5
LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhLT5o
YXNVUkwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtOTEsMTYgKzg3LDQgQEAgU3Ry
aW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSosIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxl
bmFtZVBvbGljeSwgU3RyaW5nKgogICAgIHJldHVybiB1cmw7CiB9CiAKLQotUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBEcmFnRGF0YTo6YXNGcmFnbWVudChGcmFtZSogZnJhbWUsIFJhbmdl
JiwgYm9vbCwgYm9vbCYpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEtPmhh
c01hcmt1cCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICghZnJhbWUtPmRv
Y3VtZW50KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGNyZWF0ZUZy
YWdtZW50RnJvbU1hcmt1cCgqZnJhbWUtPmRvY3VtZW50KCksIG1fcGxhdGZvcm1EcmFnRGF0YS0+
bWFya3VwKCksICIiKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0RyYWdEYXRhTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdE
YXRhTWFjLm1tCmluZGV4IGQ1MmE0ZWEuLjljYjIwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KQEAgLTI3LDE4ICsyNywxMSBAQAogI2ltcG9ydCAiRHJh
Z0RhdGEuaCIKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0jaW1wb3J0ICJEb2N1bWVudC5o
IgotI2ltcG9ydCAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2ltcG9ydCAiRE9NRG9jdW1lbnRGcmFn
bWVudC5oIgotI2ltcG9ydCAiRE9NRG9jdW1lbnRGcmFnbWVudEludGVybmFsLmgiCi0jaW1wb3J0
ICJFZGl0b3IuaCIKLSNpbXBvcnQgIkVkaXRvckNsaWVudC5oIgotI2ltcG9ydCAiRnJhbWUuaCIK
ICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmQuaCIKICNp
bXBvcnQgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgogI2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVz
LmgiCi0jaW1wb3J0ICJSYW5nZS5oIgorI2ltcG9ydCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA3LDkgKzEwMCwyMCBAQCBib29sIERyYWdEYXRh
Ojpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgICAgIHx8IHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c3RyaW5nRm9yVHlwZShTdHJpbmcoTlNVUkxQYm9h
cmRUeXBlKSwgbV9wYXN0ZWJvYXJkTmFtZSkubGVuZ3RoKCk7CiB9CiAKLVN0cmluZyBEcmFnRGF0
YTo6YXNQbGFpblRleHQoRnJhbWUgKmZyYW1lKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1Bs
YWluVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS5yZWFkUGxhaW5U
ZXh0RnJvbVBhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZShtX3Bhc3RlYm9hcmROYW1lKSk7
CisgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKG1fcGFzdGVib2FyZE5hbWUpOworICAgIFBhc3Rl
Ym9hcmRQbGFpblRleHQgdGV4dDsKKyAgICBwYXN0ZWJvYXJkLnJlYWQodGV4dCk7CisgICAgU3Ry
aW5nIHN0cmluZyA9IHRleHQudGV4dDsKKworICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0
aGlzIGlzIDEwMCUgY29ycmVjdCBzaW5jZSB3ZSBrbm93IC1bTlNVUkwgVVJMV2l0aFN0cmluZzpd
IGRvZXMgbm90IGhhbmRsZQorICAgIC8vIGFsbCB0aGUgc2FtZSBjYXNlcyB3ZSBoYW5kbGUgd2Vs
bCBpbiB0aGUgVVJMIGNvZGUgZm9yIGNyZWF0aW5nIGFuIE5TVVJMLgorICAgIGlmICh0ZXh0Lmlz
VVJMKQorICAgICAgICByZXR1cm4gdXNlclZpc2libGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJp
bmc6c3RyaW5nXSk7CisKKyAgICAvLyBGSVhNRTogV1RGIHNob3VsZCBvZmZlciBhIG5vbi1NYWMt
c3BlY2lmaWMgd2F5IHRvIGNvbnZlcnQgc3RyaW5nIHRvIHByZWNvbXBvc2VkIGZvcm0gc28gd2Ug
Y2FuIGRvIGl0IGZvciBhbGwgcGxhdGZvcm1zLgorICAgIHJldHVybiBbKE5TU3RyaW5nICopc3Ry
aW5nIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddOwogfQogCiBDb2xvciBE
cmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CkBAIC0xMzQsMTIgKzEzOCwxMiBAQCBib29sIERyYWdE
YXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICAgICAgfHwgdHlwZXMu
Y29udGFpbnMoU3RyaW5nKGtVVFR5cGVQTkcpKTsKIH0KICAgICAKLWJvb2wgRHJhZ0RhdGE6OmNv
bnRhaW5zVVJMKEZyYW1lKiBmcmFtZSwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1l
UG9saWN5KSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJz
aW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAogewotICAgIHJldHVybiAhYXNVUkwoZnJh
bWUsIGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CisgICAgcmV0dXJuICFhc1VSTChmaWxlbmFt
ZVBvbGljeSkuaXNFbXB0eSgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiBm
cmFtZSwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAorU3Ry
aW5nIERyYWdEYXRhOjphc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ksIFN0cmluZyogdGl0
bGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFVzZSBmaWxlbmFtZVBvbGljeS4KIApAQCAtMTUx
LDE3ICsxNTUsMTMgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVu
YW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY28KICAgICAKICAgICBWZWN0b3I8
U3RyaW5nPiB0eXBlczsKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICAKLSAgICAvLyBG
SVhNRTogdXNpbmcgdGhlIGVkaXRvckNsaWVudCB0byBjYWxsIGludG8gV2ViS2l0LCBmb3Igbm93
LCBzaW5jZSAKLSAgICAvLyBjYWxsaW5nIHdlYmtpdF9jYW5vbmljYWxpemUgZnJvbSBXZWJDb3Jl
IGludm9sdmVzIG1pZ3JhdGluZyBhIHNpemFibGUgYW1vdW50IG9mIAotICAgIC8vIGhlbHBlciBj
b2RlIHRoYXQgc2hvdWxkIGVpdGhlciBiZSBkb25lIGluIGEgc2VwYXJhdGUgcGF0Y2ggb3IgZmln
dXJlZCBvdXQgaW4gYW5vdGhlciB3YXkuCi0gICAgCisKICAgICBpZiAodHlwZXMuY29udGFpbnMo
U3RyaW5nKE5TVVJMUGJvYXJkVHlwZSkpKSB7CiAgICAgICAgIE5TVVJMICpVUkxGcm9tUGFzdGVi
b2FyZCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c3RyaW5nRm9yVHlwZShTdHJpbmcoTlNVUkxQYm9hcmRUeXBlKSwgbV9w
YXN0ZWJvYXJkTmFtZSldOwogICAgICAgICBOU1N0cmluZyAqc2NoZW1lID0gW1VSTEZyb21QYXN0
ZWJvYXJkIHNjaGVtZV07CiAgICAgICAgIC8vIENhbm5vdCBkcm9wIG90aGVyIHNjaGVtZXMgdW5s
ZXNzIDxyZGFyOi8vcHJvYmxlbS8xMDU2MjY2Mj4gYW5kIDxyZGFyOi8vcHJvYmxlbS8xMTE4NzMx
NT4gYXJlIGZpeGVkLgogICAgICAgICBpZiAoW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRw
Il0gfHwgW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwcyJdKQotICAgICAgICAgICAgcmV0
dXJuIFtmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9tUGFz
dGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOworICAgICAgICAgICAgcmV0dXJuIFtVUkxCeUNhbm9u
aWNhbGl6aW5nVVJMKFVSTEZyb21QYXN0ZWJvYXJkKSBhYnNvbHV0ZVN0cmluZ107CiAgICAgfQog
ICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNTdHJpbmdQYm9hcmRUeXBlKSkp
IHsKQEAgLTE3MSw3ICsxNzEsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiBmcmFt
ZSwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjbwogICAgICAgICAv
LyBUaGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBpbml0aWF0ZSBuYXZpZ2F0
aW9uLCBzbyB3ZSBzaG91bGRuJ3QgYWxsb3cgYXJiaXRyYXJ5IGZpbGUgVVJMcy4KICAgICAgICAg
Ly8gRklYTUU6IFNob3VsZCB3ZSBhbGxvdyBvbmx5IGh0dHAgZmFtaWx5IHNjaGVtZXMsIG9yIGFu
eXRoaW5nIG5vbi1sb2NhbD8KICAgICAgICAgaWYgKFtzY2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAi
aHR0cCJdIHx8IFtzY2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cHMiXSkKLSAgICAgICAgICAg
IHJldHVybiBbZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJv
bVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgICAgIHJldHVybiBbVVJMQnlD
YW5vbmljYWxpemluZ1VSTChVUkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOwogICAg
IH0KICAgICAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5TRmlsZW5hbWVzUGJvYXJk
VHlwZSkpKSB7CkBAIC0xODEsMTkgKzE4MSwxMyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZy
YW1lKiBmcmFtZSwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjbwog
ICAgICAgICAgICAgQk9PTCBpc0RpcmVjdG9yeTsKICAgICAgICAgICAgIGlmIChbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZXNbMF0gaXNEaXJlY3Rv
cnk6JmlzRGlyZWN0b3J5XSAmJiBpc0RpcmVjdG9yeSkKICAgICAgICAgICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0gICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+
Y2Fub25pY2FsaXplVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZmlsZXNbMF1dKSBhYnNvbHV0
ZVN0cmluZ107CisgICAgICAgICAgICByZXR1cm4gW1VSTEJ5Q2Fub25pY2FsaXppbmdVUkwoW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlc1swXV0pIGFic29sdXRlU3RyaW5nXTsKICAgICAgICAg
fQogICAgIH0KICAgICAKICAgICByZXR1cm4gU3RyaW5nKCk7ICAgICAgICAKIH0KIAotUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnRGF0YTo6YXNGcmFnbWVudChGcmFtZSogZnJhbWUs
IFJhbmdlJiByYW5nZSwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQp
IGNvbnN0Ci17Ci0gICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKG1fcGFzdGVib2FyZE5hbWUpOwot
ICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkud2ViQ29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmQsIHJhbmdlLCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOwotfQotICAgIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNX
aW4uaAppbmRleCA0MTdjZTJmLi5jMmYxNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCkBAIC0zMyw2ICszMyw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OworY2xhc3MgRG9jdW1lbnRGcmFn
bWVudDsKIGNsYXNzIFVSTDsKIAogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFN0cmlu
ZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXgg
NWE3ZjczNi4uNzAwNTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdEYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0Rh
dGFXaW4uY3BwCkBAIC0yOSwxMCArMjksNiBAQAogCiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAjaW5j
bHVkZSAiQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNs
dWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiTWFya3VwLmgiCi0jaW5jbHVkZSAi
UmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDxvYmppZGwuaD4K
ICNpbmNsdWRlIDxzaGx3YXBpLmg+CkBAIC01Niw3ICs1Miw3IEBAIERyYWdEYXRhOjpEcmFnRGF0
YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zCiB7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZyYW1lKiwgRmlsZW5h
bWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAorYm9vbCBEcmFnRGF0YTo6
Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25z
dAogewogICAgIGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiBTVUNDRUVE
RUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdldERhdGEodXJsV0Zvcm1hdCgpKSkgCkBAIC0x
MDEsNyArOTcsNyBAQCB2b2lkIERyYWdEYXRhOjpnZXREcmFnRmlsZUNvbnRlbnREYXRhKGludCBz
aXplLCB2b2lkKiBkYXRhQmxvYikKICAgICAgICAgZ2V0RmlsZUNvbnRlbnREYXRhKG1fcGxhdGZv
cm1EcmFnRGF0YSwgc2l6ZSwgZGF0YUJsb2IpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJM
KEZyYW1lKiwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcq
IHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Q
b2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IChtX3BsYXRmb3JtRHJhZ0RhdGEpID8gZ2V0VVJMKG1fcGxhdGZvcm1EcmFnRGF0YSwgZmlsZW5h
bWVQb2xpY3ksIHRpdGxlKSA6IGdldFVSTCgmbV9kcmFnRGF0YU1hcCwgZmlsZW5hbWVQb2xpY3ks
IHRpdGxlKTsKIH0KQEAgLTE4MSw3ICsxNzcsNyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1Bs
YWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZHJhZ0RhdGFNYXAuY29udGFpbnMocGxhaW5U
ZXh0V0Zvcm1hdCgpLT5jZkZvcm1hdCkgfHwgbV9kcmFnRGF0YU1hcC5jb250YWlucyhwbGFpblRl
eHRGb3JtYXQoKS0+Y2ZGb3JtYXQpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0
KEZyYW1lKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogewog
ICAgIHJldHVybiAobV9wbGF0Zm9ybURyYWdEYXRhKSA/IGdldFBsYWluVGV4dChtX3BsYXRmb3Jt
RHJhZ0RhdGEpIDogZ2V0UGxhaW5UZXh0KCZtX2RyYWdEYXRhTWFwKTsKIH0KQEAgLTIwMCw0OCAr
MTk2LDEyIEBAIGJvb2wgRHJhZ0RhdGE6OmNhblNtYXJ0UmVwbGFjZSgpIGNvbnN0CiAKIGJvb2wg
RHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewotICAgIHJldHVy
biBjb250YWluc1BsYWluVGV4dCgpIHx8IGNvbnRhaW5zVVJMKDApIAorICAgIHJldHVybiBjb250
YWluc1BsYWluVGV4dCgpIHx8IGNvbnRhaW5zVVJMKCkKICAgICAgICAgfHwgKChtX3BsYXRmb3Jt
RHJhZ0RhdGEpID8gKGNvbnRhaW5zSFRNTChtX3BsYXRmb3JtRHJhZ0RhdGEpIHx8IGNvbnRhaW5z
RmlsZW5hbWVzKG1fcGxhdGZvcm1EcmFnRGF0YSkpCiAgICAgICAgICAgICA6IChjb250YWluc0hU
TUwoJm1fZHJhZ0RhdGFNYXApIHx8IGNvbnRhaW5zRmlsZW5hbWVzKCZtX2RyYWdEYXRhTWFwKSkp
CiAgICAgICAgIHx8IGNvbnRhaW5zQ29sb3IoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBEcmFnRGF0YTo6YXNGcmFnbWVudChGcmFtZSogZnJhbWUsIFJhbmdlJiwgYm9vbCwg
Ym9vbCYpIGNvbnN0Ci17ICAgICAKLSAgICAvKgotICAgICAqIE9yZGVyIGlzIHJpY2hlc3QgZm9y
bWF0IGZpcnN0LiBPbiBPU1ggdGhpcyBpczoKLSAgICAgKiAqIFdlYiBBcmNoaXZlCi0gICAgICog
KiBGaWxlbmFtZXMKLSAgICAgKiAqIEhUTUwKLSAgICAgKiAqIFJURgotICAgICAqICogVElGRgot
ICAgICAqICogUElDVAotICAgICAqLwotICAgICAKLSAgICBpZiAobV9wbGF0Zm9ybURyYWdEYXRh
KSB7Ci0gICAgICAgIGlmIChjb250YWluc0ZpbGVuYW1lcyhtX3BsYXRmb3JtRHJhZ0RhdGEpKSB7
Ci0gICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9
IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhmcmFtZS0+ZG9jdW1lbnQoKSwgbV9wbGF0Zm9ybURyYWdE
YXRhKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoY29udGFpbnNIVE1MKG1fcGxhdGZvcm1EcmFnRGF0YSkpIHsKLSAgICAgICAgICAg
IGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9t
SFRNTChmcmFtZS0+ZG9jdW1lbnQoKSwgbV9wbGF0Zm9ybURyYWdEYXRhKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZnJhZ21lbnQ7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBp
ZiAoY29udGFpbnNGaWxlbmFtZXMoJm1fZHJhZ0RhdGFNYXApKSB7Ci0gICAgICAgICAgICBpZiAo
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUZpbGVu
YW1lcyhmcmFtZS0+ZG9jdW1lbnQoKSwgJm1fZHJhZ0RhdGFNYXApKQotICAgICAgICAgICAgICAg
IHJldHVybiBmcmFnbWVudDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb250YWluc0hUTUwo
Jm1fZHJhZ0RhdGFNYXApKSB7Ci0gICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUhUTUwoZnJhbWUtPmRvY3VtZW50KCksICZt
X2RyYWdEYXRhTWFwKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gQ29sb3IoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237217</attachid>
            <date>2014-08-27 03:51:28 -0700</date>
            <delta_ts>2014-09-15 04:49:00 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wcore-drag-data-violations.diff</filename>
            <type>text/plain</type>
            <size>30536</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MTZkZWU2Li45YThhMTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTQtMDgtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIERyYWdEYXRhIHNob3VsZCBub3QgZGVwZW5kIG9uIENsaXBib2FyZCwgRG9j
dW1lbnRGcmFnbWVudCwgYW5kIERvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIERyYWdEYXRhIHRvIG5vdCBkZXBlbmQgb24gRnJh
bWUsIERvY3VtZW50RnJhZ21lbnQsCisgICAgICAgIERvY3VtZW50IGFuZCBSYW5nZS4gRHJhZ0Rh
dGE6OmFzRnJhZ21lbnQoKSBoYXMgYmVlbiBtb3ZlZCB0bworICAgICAgICBEcmFnQ29udHJvbGxl
ciBhbmQgaW1wbGVtZW50ZWQgaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGUuCisgICAgICAg
IERyYWdEYXRhIG1ldGhvZHMgdXNpbmcgRnJhbWUgaGFzIGJlZW4gcmV3b3JrZWQgaW4gTWFjIHRv
IG5vdCB1c2UKKyAgICAgICAgRnJhbWUsIHNpbmNlIGFsbCBvdGhlciBwb3J0cyB3ZXJlIGlnbm9y
ZWluZyB0aGUgZnJhbWUgcGFyYW1ldGVyLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9jdW1lbnRGcmFnbWVu
dEZyb21EcmFnRGF0YSk6IE1ha2UgaXQKKyAgICAgICAgYSBzdGF0aWMgbWVtYmVyIHRvIGJlIGFi
bGUgdG8gdXNlIGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKCkuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24pOiBVcGRhdGUgdG8KKyAgICAg
ICAgRHJhZ0RhdGEgQVBJIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxl
cjo6ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL2VmbC9EcmFnQ29udHJvbGxlckVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRG
cm9tRHJhZ0RhdGEpOiBNb3ZlCisgICAgICAgIERyYWdEYXRhOjphc0ZyYWdtZW50KCkgaW1wbGVt
ZW50YXRpb24gaGVyZS4KKyAgICAgICAgKiBwYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEp
OiBEaXR0by4KKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRv
LgorICAgICAgICAqIHBhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZs
L0RyYWdEYXRhRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1BsYWluVGV4
dCk6IFJlbW92ZSBGcmFtZSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6
Y29udGFpbnNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEcmFnRGF0YTo6YXNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdE
YXRhOjphc0ZyYWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0Rh
dGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBTYW1l
IGltcGxlbWVudGF0aW9uIGFzIHRoZQorICAgICAgICBFZGl0b3IuCisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6Y29udGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKTogVXNlIFVSTEJ5Q2Fub25pY2FsaXppbmdVUkwo
KSBpbnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIHRoZSBFZGl0b3IgY2xpZW50LgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9EcmFnRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29u
dGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0RhdGE6OmFzVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFp
blRleHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbXBh
dGlibGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc0ZyYWdtZW50KTog
RGVsZXRlZC4KKwogMjAxNC0wOC0yNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFVuc2tpcCBjb21wb3NpdGluZyB0ZXN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDE2MmVlNDkuLjRlNzc3MzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xMTQsMjUgKzExNCwyNSBAQCBE
cmFnQ29udHJvbGxlcjo6fkRyYWdDb250cm9sbGVyKCkKICAgICBtX2NsaWVudC5kcmFnQ29udHJv
bGxlckRlc3Ryb3llZCgpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiBkcmFnRGF0YSwgRnJhbWUq
IGZyYW1lLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQ
bGFpblRleHQpCitQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERyYWdDb250cm9sbGVyOjpk
b2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiBkcmFnRGF0YSwgRnJhbWUmIGZy
YW1lLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFp
blRleHQpCiB7CiAgICAgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKIAogICAgIERvY3VtZW50JiBk
b2N1bWVudCA9IGNvbnRleHQub3duZXJEb2N1bWVudCgpOwogICAgIGlmIChkcmFnRGF0YS5jb250
YWluc0NvbXBhdGlibGVDb250ZW50KCkpIHsKLSAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkcmFnRGF0YS5hc0ZyYWdtZW50KGZyYW1lLCBjb250ZXh0
LCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpKQorICAgICAgICBpZiAoUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRh
KGRyYWdEYXRhLCBmcmFtZSwgY29udGV4dCwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0
KSkKICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKIAotICAgICAgICBpZiAoZHJhZ0RhdGEu
Y29udGFpbnNVUkwoZnJhbWUsIERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMpKSB7Cisg
ICAgICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0Rmls
ZW5hbWVzKSkgewogICAgICAgICAgICAgU3RyaW5nIHRpdGxlOwotICAgICAgICAgICAgU3RyaW5n
IHVybCA9IGRyYWdEYXRhLmFzVVJMKGZyYW1lLCBEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5h
bWVzLCAmdGl0bGUpOworICAgICAgICAgICAgU3RyaW5nIHVybCA9IGRyYWdEYXRhLmFzVVJMKERy
YWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMsICZ0aXRsZSk7CiAgICAgICAgICAgICBpZiAo
IXVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8SFRNTEFuY2hvckVsZW1l
bnQ+IGFuY2hvciA9IEhUTUxBbmNob3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAg
ICAgICAgICAgIGFuY2hvci0+c2V0SHJlZih1cmwpOwogICAgICAgICAgICAgICAgIGlmICh0aXRs
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVHJ5IHRoZSBwbGFpbiB0ZXh0
IGZpcnN0IGJlY2F1c2UgdGhlIHVybCBtaWdodCBiZSBub3JtYWxpemVkIG9yIGVzY2FwZWQuCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChkcmFnRGF0YS5jb250YWluc1BsYWluVGV4dCgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSBkcmFnRGF0YS5hc1BsYWluVGV4dChmcmFtZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7
CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICB0aXRsZSA9IHVybDsKICAgICAgICAgICAgICAgICB9CkBAIC0xNDYsNyArMTQ2
LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVu
dEZyb21EcmFnRGF0YShEcmFnRGF0YSYgZHJhZ0QKICAgICB9CiAgICAgaWYgKGFsbG93UGxhaW5U
ZXh0ICYmIGRyYWdEYXRhLmNvbnRhaW5zUGxhaW5UZXh0KCkpIHsKICAgICAgICAgY2hvc2VQbGFp
blRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb250
ZXh0LCBkcmFnRGF0YS5hc1BsYWluVGV4dChmcmFtZSkpLmdldCgpOworICAgICAgICByZXR1cm4g
Y3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb250ZXh0LCBkcmFnRGF0YS5hc1BsYWluVGV4dCgpKS5n
ZXQoKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTIzNCw3ICsyMzQsNyBAQCBib29sIERy
YWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihEcmFnRGF0YSYgZHJhZ0RhdGEpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fY2xpZW50LndpbGxQZXJmb3JtRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbkxvYWQsIGRyYWdEYXRhKTsKLSAgICBt
X3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KCZtX3BhZ2Uu
bWFpbkZyYW1lKCksIFJlc291cmNlUmVxdWVzdChkcmFnRGF0YS5hc1VSTCgmbV9wYWdlLm1haW5G
cmFtZSgpKSkpKTsKKyAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZChGcmFtZUxv
YWRSZXF1ZXN0KCZtX3BhZ2UubWFpbkZyYW1lKCksIFJlc291cmNlUmVxdWVzdChkcmFnRGF0YS5h
c1VSTCgpKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MjUsNyArNDI1LDcgQEAgc3Rh
dGljIGJvb2wgc2V0U2VsZWN0aW9uVG9EcmFnQ2FyZXQoRnJhbWUqIGZyYW1lLCBWaXNpYmxlU2Vs
ZWN0aW9uJiBkcmFnQ2FyZXQsIFIKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElu
cHV0RXZlbnRGb3IoRnJhbWUqIGlubmVyRnJhbWUsIERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAg
ICBBU1NFUlQobV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5oYXNDYXJldCgpKTsKLSAgICBT
dHJpbmcgdGV4dCA9IG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuaXNDb250ZW50UmljaGx5
RWRpdGFibGUoKSA/IGVtcHR5U3RyaW5nKCkgOiBkcmFnRGF0YS5hc1BsYWluVGV4dChpbm5lckZy
YW1lKTsKKyAgICBTdHJpbmcgdGV4dCA9IG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuaXND
b250ZW50UmljaGx5RWRpdGFibGUoKSA/IGVtcHR5U3RyaW5nKCkgOiBkcmFnRGF0YS5hc1BsYWlu
VGV4dCgpOwogICAgIE5vZGUqIHRhcmdldCA9IGlubmVyRnJhbWUtPmVkaXRvcigpLmZpbmRFdmVu
dFRhcmdldEZyb20obV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5jYXJldFBvc2l0aW9uKCkp
OwogICAgIHJldHVybiB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JE
cm9wKGlubmVyRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KSwgSUdOT1JFX0VY
Q0VQVElPTik7CiB9CkBAIC00OTQsNyArNDk0LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29u
Y2x1ZGVFZGl0RHJhZyhEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgUmVzb3VyY2VDYWNoZVZhbGlk
YXRpb25TdXBwcmVzc29yIHZhbGlkYXRpb25TdXBwcmVzc29yKGNhY2hlZFJlc291cmNlTG9hZGVy
KTsKICAgICBpZiAoZHJhZ0lzTW92ZShpbm5lckZyYW1lLT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEp
IHx8IGRyYWdDYXJldC5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKSB7CiAgICAgICAgIGJvb2wg
Y2hvc2VQbGFpblRleHQgPSBmYWxzZTsKLSAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShkcmFnRGF0YSwgaW5uZXJG
cmFtZS5nZXQoKSwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWluVGV4dCk7CisgICAgICAgIFJlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0Rh
dGEoZHJhZ0RhdGEsICppbm5lckZyYW1lLCAqcmFuZ2UsIHRydWUsIGNob3NlUGxhaW5UZXh0KTsK
ICAgICAgICAgaWYgKCFmcmFnbWVudCB8fCAhaW5uZXJGcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5z
ZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25Ecm9wcGVkKSkg
ewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC01MTcsNyArNTE3LDcg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhEcmFnRGF0YSYgZHJhZ0Rh
dGEpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBTdHJp
bmcgdGV4dCA9IGRyYWdEYXRhLmFzUGxhaW5UZXh0KGlubmVyRnJhbWUuZ2V0KCkpOworICAgICAg
ICBTdHJpbmcgdGV4dCA9IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgICAgIGlmICh0ZXh0
LmlzRW1wdHkoKSB8fCAhaW5uZXJGcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dCh0ZXh0
LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uRHJvcHBlZCkpIHsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5o
CmluZGV4IDI1YTYxNmYuLjRhMmM4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRGF0
YVRyYW5zZmVyOwogICAgIGNsYXNzIERvY3VtZW50OworICAgIGNsYXNzIERvY3VtZW50RnJhZ21l
bnQ7CiAgICAgY2xhc3MgRHJhZ0NsaWVudDsKICAgICBjbGFzcyBEcmFnRGF0YTsKICAgICBjbGFz
cyBFbGVtZW50OwpAQCAtNDQsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgSW50UmVjdDsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVu
dDsKKyAgICBjbGFzcyBSYW5nZTsKIAogICAgIHN0cnVjdCBEcmFnU3RhdGU7CiAKQEAgLTExMyw2
ICsxMTUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgY2xlYW51cEFmdGVy
U3lzdGVtRHJhZygpOwogICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShEYXRh
VHJhbnNmZXImLCBFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CiAK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFn
bWVudEZyb21EcmFnRGF0YShEcmFnRGF0YSYsIEZyYW1lJiwgUmFuZ2UmLCBib29sIGFsbG93UGxh
aW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiwg
RnJhbWUmLCBSYW5nZSYsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0
KTsKKwogICAgICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgICAgIERyYWdDbGllbnQmIG1fY2xpZW50
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVm
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVmbC5jcHAKaW5k
ZXggOWRiMzg2OC4uMzYxNTU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwv
RHJhZ0NvbnRyb2xsZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdD
b250cm9sbGVyRWZsLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC01MCw3ICs1Miw3IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oRHJhZ0RhdGEmKQogCiBEcmFnT3BlcmF0
aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0YSkKIHsK
LSAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNVUkwoMCkpCisgICAgaWYgKGRyYWdEYXRhLmNvbnRh
aW5zVVJMKCkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKIAogICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uTm9uZTsKQEAgLTcxLDQgKzczLDkgQEAgdm9pZCBEcmFnQ29udHJvbGxl
cjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYsIEVsZW1lbnQmLCBjb25z
dCBVUkwKIHsKIH0KIAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnQ29udHJvbGxl
cjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmLCBGcmFtZSYsIFJhbmdlJiwg
Ym9vbCAvKmFsbG93UGxhaW5UZXh0Ki8sIGJvb2wmIC8qY2hvc2VQbGFpblRleHQqLykKK3sKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJh
Z0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDU0ZmM4ZTYuLjE3MmM1ZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKQEAgLTI2LDEzICsyNiwxNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAKKyNp
bmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVyLmgiCisjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVk
ZSAiRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFz
dGVib2FyZC5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTUzLDcgKzU3LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihEcmFn
RGF0YSYpCiBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKERyYWdE
YXRhJiBkcmFnRGF0YSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBpcyBpbmNvbXBsZXRl
Ci0gICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKDApKQorICAgIGlmIChkcmFnRGF0YS5jb250
YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAKICAgICByZXR1
cm4gRHJhZ09wZXJhdGlvbk5vbmU7CkBAIC03NCw0ICs3OCwxMiBAQCB2b2lkIERyYWdDb250cm9s
bGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIs
IEVsZW1lbgogICAgIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkud3JpdGVJbWFnZShlbGVtZW50
LCB1cmwsIGxhYmVsKTsKIH0KIAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnQ29u
dHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdEYXRhLCBG
cmFtZSYgZnJhbWUsIFJhbmdlJiwgYm9vbCAvKmFsbG93UGxhaW5UZXh0Ki8sIGJvb2wmIC8qY2hv
c2VQbGFpblRleHQqLykKK3sKKyAgICBpZiAoIWRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpLT5oYXNN
YXJrdXAoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBk
cmFnRGF0YS5wbGF0Zm9ybURhdGEoKS0+bWFya3VwKCksICIiKTsKK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCA5NGFmYTFjLi45N2E2
YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQpA
QCAtMjksMTMgKzI5LDE4IEBACiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogI2ltcG9ydCAi
RGF0YVRyYW5zZmVyLmgiCisjaW1wb3J0ICJEb2N1bWVudC5oIgorI2ltcG9ydCAiRG9jdW1lbnRG
cmFnbWVudC5oIgogI2ltcG9ydCAiRHJhZ0NsaWVudC5oIgogI2ltcG9ydCAiRHJhZ0RhdGEuaCIK
KyNpbXBvcnQgIkVkaXRvci5oIgorI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCiAjaW1wb3J0ICJF
bGVtZW50LmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIk1haW5GcmFtZS5oIgog
I2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgorI2ltcG9ydCAiUmFuZ2Uu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1OSw3IEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmlzQ29weUtleURvd24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIAogRHJhZ09w
ZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSYgZHJhZ0RhdGEp
CiB7Ci0gICAgaWYgKChkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCkg
fHwgIWRyYWdEYXRhLmNvbnRhaW5zVVJMKCZtX3BhZ2UubWFpbkZyYW1lKCkpKQorICAgIGlmICgo
ZHJhZ0RhdGEuZmxhZ3MoKSAmIERyYWdBcHBsaWNhdGlvbklzTW9kYWwpIHx8ICFkcmFnRGF0YS5j
b250YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CiAKICAgICBp
ZiAoIW1fZG9jdW1lbnRVbmRlck1vdXNlIHx8ICghKGRyYWdEYXRhLmZsYWdzKCkgJiAoRHJhZ0Fw
cGxpY2F0aW9uSGFzQXR0YWNoZWRTaGVldCB8IERyYWdBcHBsaWNhdGlvbklzU291cmNlKSkpKQpA
QCAtODcsNiArOTIsMTIgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJh
Z0ltYWdlKERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBFbGVtZW4KICAgICBtX2NsaWVudC5k
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5uYW1lKCks
IGVsZW1lbnQsIHVybCwgbGFiZWwsIGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKTsKIH0KIAor
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21l
bnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdEYXRhLCBGcmFtZSYgZnJhbWUsIFJhbmdlJiBj
b250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKK3sKKyAg
ICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQoZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSk7CisgICAg
cmV0dXJuIGZyYW1lLmVkaXRvcigpLndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJk
LCBjb250ZXh0LCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCmluZGV4IGQxOWNhODgu
LmY5ZDYyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9s
bGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldp
bi5jcHAKQEAgLTI2LDkgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
RHJhZ0NvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGllc1dpbi5oIgog
I2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24u
aCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCkBAIC01MCw3
ICs1NCw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oRHJh
Z0RhdGEmIGRyYWdEYXRhKQogICAgIC8vaWYgd2UgYXJlIGEgbW9kYWwgd2luZG93LCB3ZSBhcmUg
dGhlIGRyYWcgc291cmNlLCBvciB0aGUgd2luZG93IGlzIGFuIGF0dGFjaGVkIHNoZWV0CiAgICAg
Ly9JZiB0aGlzIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gd2l0aGluIFdlYkNvcmUgb3BlcmF0aW9u
Rm9yRHJhZyBjYW4gYmUgcHVsbGVkIGludG8gCiAgICAgLy9XZWJDb3JlIGl0c2VsZgotICAgIHJl
dHVybiBkcmFnRGF0YS5jb250YWluc1VSTCgwKSAmJiAhbV9kaWRJbml0aWF0ZURyYWcgPyBEcmFn
T3BlcmF0aW9uQ29weSA6IERyYWdPcGVyYXRpb25Ob25lOworICAgIHJldHVybiBkcmFnRGF0YS5j
b250YWluc1VSTCgpICYmICFtX2RpZEluaXRpYXRlRHJhZyA/IERyYWdPcGVyYXRpb25Db3B5IDog
RHJhZ09wZXJhdGlvbk5vbmU7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURv
d24oRHJhZ0RhdGEmKQpAQCAtODMsNCArODcsNDAgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVj
bGFyZUFuZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBFbGVtZW4K
ICAgICBwYXN0ZWJvYXJkLndyaXRlTWFya3VwKGNyZWF0ZU1hcmt1cChlbGVtZW50LCBJbmNsdWRl
Tm9kZSwgMCwgUmVzb2x2ZUFsbFVSTHMpKTsKIH0KIAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEm
IGRyYWdEYXRhLCBGcmFtZSYgZnJhbWUsIFJhbmdlJiwgYm9vbCAvKmFsbG93UGxhaW5UZXh0Ki8s
IGJvb2wmIC8qY2hvc2VQbGFpblRleHQqLykKK3sKKyAgICAvKgorICAgICAqIE9yZGVyIGlzIHJp
Y2hlc3QgZm9ybWF0IGZpcnN0LiBPbiBPU1ggdGhpcyBpczoKKyAgICAgKiAqIFdlYiBBcmNoaXZl
CisgICAgICogKiBGaWxlbmFtZXMKKyAgICAgKiAqIEhUTUwKKyAgICAgKiAqIFJURgorICAgICAq
ICogVElGRgorICAgICAqICogUElDVAorICAgICAqLworCisgICAgaWYgKERyYWdEYXRhUmVmIHBs
YXRmb3JtRHJhZ0RhdGEgPSBkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSkgeworICAgICAgICBpZiAo
Y29udGFpbnNGaWxlbmFtZXMocGxhdGZvcm1EcmFnRGF0YSkpIHsKKyAgICAgICAgICAgIGlmIChQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tRmlsZW5h
bWVzKGZyYW1lLmRvY3VtZW50KCksIHBsYXRmb3JtRHJhZ0RhdGEpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmcmFnbWVudDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjb250YWluc0hUTUwo
cGxhdGZvcm1EcmFnRGF0YSkpIHsKKyAgICAgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tSFRNTChmcmFtZS5kb2N1bWVudCgpLCBw
bGF0Zm9ybURyYWdEYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoY29udGFpbnNGaWxlbmFtZXMoJmRyYWdE
YXRhLmRyYWdEYXRhTWFwKCkpKSB7CisgICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhmcmFtZS5kb2N1bWVu
dCgpLCAmZHJhZ0RhdGEuZHJhZ0RhdGFNYXAoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZy
YWdtZW50OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbnRhaW5zSFRNTCgmZHJhZ0RhdGEu
ZHJhZ0RhdGFNYXAoKSkpIHsKKyAgICAgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tSFRNTChmcmFtZS5kb2N1bWVudCgpLCAmZHJh
Z0RhdGEuZHJhZ0RhdGFNYXAoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50Owor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0RhdGEuaAppbmRleCA4ODAxMjZkLi44OWVhODVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdEYXRhLmgKQEAgLTYwLDEwICs2MCw3IEBAIHR5cGVkZWYgdm9pZCogRHJhZ0RhdGFS
ZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7Ci1jbGFzcyBEb2N1bWVu
dEZyYWdtZW50OwogY2xhc3MgVVJMOwotY2xhc3MgUmFuZ2U7CiAKIGVudW0gRHJhZ0FwcGxpY2F0
aW9uRmxhZ3MgewogICAgIERyYWdBcHBsaWNhdGlvbk5vbmUgPSAwLApAQCAtOTUsMTQgKzkyLDEz
IEBAIHB1YmxpYzoKICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncygpIGNvbnN0IHsgcmV0
dXJuIG1fYXBwbGljYXRpb25GbGFnczsgfQogICAgIERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YTsgfQogICAgIERyYWdPcGVyYXRpb24g
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2s7IH0KLSAgICBib29sIGNvbnRhaW5zVVJMKEZyYW1lKiwgRmlsZW5h
bWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5ID0gQ29udmVydEZpbGVuYW1lcykgY29u
c3Q7CisgICAgYm9vbCBjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5h
bWVQb2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVzKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zUGxh
aW5UZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29u
c3Q7Ci0gICAgU3RyaW5nIGFzVVJMKEZyYW1lKiwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZp
bGVuYW1lUG9saWN5ID0gQ29udmVydEZpbGVuYW1lcywgU3RyaW5nKiB0aXRsZSA9IDApIGNvbnN0
OwotICAgIFN0cmluZyBhc1BsYWluVGV4dChGcmFtZSopIGNvbnN0OworICAgIFN0cmluZyBhc1VS
TChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kgPSBDb252ZXJ0RmlsZW5h
bWVzLCBTdHJpbmcqIHRpdGxlID0gMCkgY29uc3Q7CisgICAgU3RyaW5nIGFzUGxhaW5UZXh0KCkg
Y29uc3Q7CiAgICAgdm9pZCBhc0ZpbGVuYW1lcyhWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAg
IENvbG9yIGFzQ29sb3IoKSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGFzRnJhZ21lbnQoRnJhbWUqLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwg
Ym9vbCYgY2hvc2VQbGFpblRleHQpIGNvbnN0OwogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkg
Y29uc3Q7CiAgICAgYm9vbCBjb250YWluc0NvbG9yKCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWlu
c0ZpbGVzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
RHJhZ0RhdGFFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZs
LmNwcAppbmRleCBkY2M4ZWZiLi4wMDJhNzkwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvRHJhZ0RhdGFFZmwuY3BwCkBAIC0yMSw4ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKIAotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5j
bHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDcgKzU0LDcgQEAgYm9vbCBEcmFnRGF0
YTo6Y29udGFpbnNQbGFpblRleHQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3Ry
aW5nIERyYWdEYXRhOjphc1BsYWluVGV4dChGcmFtZSopIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6
OmFzUGxhaW5UZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CkBAIC03MCwx
OSArNjksMTQgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTChG
cmFtZSosIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNv
bnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSkgY29uc3QKIHsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZl
cnNpb25Qb2xpY3ksIFN0cmluZyopIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVu
YW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKikgY29uc3QKIHsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0RhdGE6OmFzRnJhZ21l
bnQoRnJhbWUqLCBSYW5nZSYsIGJvb2wsIGJvb2wmKSBjb25zdAotewotICAgIHJldHVybiAwOwot
fQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAppbmRl
eCAyYmYzNGRmLi41OThjNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRHJhZ0RhdGFHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFn
RGF0YUd0ay5jcHAKQEAgLTE4LDEwICsxOCw2IEBACiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKIAog
I2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1
ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIm1h
cmt1cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU1LDcgKzUxLDcgQEAgYm9vbCBE
cmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQoKSBjb25zdAogICAgIHJldHVybiBtX3BsYXRmb3Jt
RHJhZ0RhdGEtPmhhc1RleHQoKTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dChG
cmFtZSopIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhLT50ZXh0KCk7CiB9CkBAIC02NywxNSArNjMsMTUg
QEAgQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogCiBib29sIERyYWdEYXRhOjpjb250
YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29udGFpbnNQbGFp
blRleHQoKSB8fCBjb250YWluc1VSTCgwKSB8fCBtX3BsYXRmb3JtRHJhZ0RhdGEtPmhhc01hcmt1
cCgpIHx8IGNvbnRhaW5zQ29sb3IoKSB8fCBjb250YWluc0ZpbGVzKCk7CisgICAgcmV0dXJuIGNv
bnRhaW5zUGxhaW5UZXh0KCkgfHwgY29udGFpbnNVUkwoKSB8fCBtX3BsYXRmb3JtRHJhZ0RhdGEt
Pmhhc01hcmt1cCgpIHx8IGNvbnRhaW5zQ29sb3IoKSB8fCBjb250YWluc0ZpbGVzKCk7CiB9CiAK
LWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZyYW1lKiBmcmFtZSwgRmlsZW5hbWVDb252ZXJz
aW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNV
UkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAogewotICAg
IHJldHVybiAhYXNVUkwoZnJhbWUsIGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CisgICAgcmV0
dXJuICFhc1VSTChmaWxlbmFtZVBvbGljeSkuaXNFbXB0eSgpOwogfQogCi1TdHJpbmcgRHJhZ0Rh
dGE6OmFzVVJMKEZyYW1lKiwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5
LCBTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChGaWxlbmFtZUNv
bnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEtPmhhc1VSTCgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CkBAIC05MSwxNiArODcsNCBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiwg
RmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqCiAgICAgcmV0
dXJuIHVybDsKIH0KIAotCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERyYWdEYXRhOjph
c0ZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUmFuZ2UmLCBib29sLCBib29sJikgY29uc3QKLXsKLSAg
ICBpZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzTWFya3VwKCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS0+ZG9j
dW1lbnQoKSwgbV9wbGF0Zm9ybURyYWdEYXRhLT5tYXJrdXAoKSwgIiIpOwotfQotCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KaW5kZXggZDUyYTRlYS4uOWNi
MjA4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpAQCAt
MjcsMTggKzI3LDExIEBACiAjaW1wb3J0ICJEcmFnRGF0YS5oIgogCiAjaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKLSNpbXBvcnQgIkRvY3VtZW50LmgiCi0jaW1wb3J0ICJEb2N1bWVudEZyYWdtZW50
LmgiCi0jaW1wb3J0ICJET01Eb2N1bWVudEZyYWdtZW50LmgiCi0jaW1wb3J0ICJET01Eb2N1bWVu
dEZyYWdtZW50SW50ZXJuYWwuaCIKLSNpbXBvcnQgIkVkaXRvci5oIgotI2ltcG9ydCAiRWRpdG9y
Q2xpZW50LmgiCi0jaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5o
IgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5Lmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKLSNpbXBvcnQgIlJhbmdlLmgiCisjaW1w
b3J0ICJXZWJDb3JlTlNVUkxFeHRyYXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0x
MDcsOSArMTAwLDIwIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3QK
ICAgICAgICAgfHwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5z
dHJpbmdGb3JUeXBlKFN0cmluZyhOU1VSTFBib2FyZFR5cGUpLCBtX3Bhc3RlYm9hcmROYW1lKS5s
ZW5ndGgoKTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dChGcmFtZSAqZnJhbWUp
IGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gZnJhbWUtPmVkaXRvcigpLnJlYWRQbGFpblRleHRGcm9tUGFzdGVib2FyZCgqUGFzdGVib2Fy
ZDo6Y3JlYXRlKG1fcGFzdGVib2FyZE5hbWUpKTsKKyAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQo
bV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgUGFzdGVib2FyZFBsYWluVGV4dCB0ZXh0OworICAgIHBh
c3RlYm9hcmQucmVhZCh0ZXh0KTsKKyAgICBTdHJpbmcgc3RyaW5nID0gdGV4dC50ZXh0OworCisg
ICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIHRoaXMgaXMgMTAwJSBjb3JyZWN0IHNpbmNlIHdl
IGtub3cgLVtOU1VSTCBVUkxXaXRoU3RyaW5nOl0gZG9lcyBub3QgaGFuZGxlCisgICAgLy8gYWxs
IHRoZSBzYW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3JlYXRp
bmcgYW4gTlNVUkwuCisgICAgaWYgKHRleHQuaXNVUkwpCisgICAgICAgIHJldHVybiB1c2VyVmlz
aWJsZVN0cmluZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsKKworICAgIC8vIEZJWE1F
OiBXVEYgc2hvdWxkIG9mZmVyIGEgbm9uLU1hYy1zcGVjaWZpYyB3YXkgdG8gY29udmVydCBzdHJp
bmcgdG8gcHJlY29tcG9zZWQgZm9ybSBzbyB3ZSBjYW4gZG8gaXQgZm9yIGFsbCBwbGF0Zm9ybXMu
CisgICAgcmV0dXJuIFsoTlNTdHJpbmcgKilzdHJpbmcgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fu
b25pY2FsTWFwcGluZ107CiB9CiAKIENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QKQEAg
LTEzNCwxMiArMTM4LDEyIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRl
bnQoKSBjb25zdAogICAgICAgICB8fCB0eXBlcy5jb250YWlucyhTdHJpbmcoa1VUVHlwZVBORykp
OwogfQogICAgIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRnJhbWUqIGZyYW1lLCBGaWxl
bmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0Citib29sIERyYWdEYXRh
Ojpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuICFhc1VSTChmcmFtZSwgZmlsZW5hbWVQb2xpY3kpLmlzRW1wdHko
KTsKKyAgICByZXR1cm4gIWFzVVJMKGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CiB9CiAKLVN0
cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xp
Y3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1l
Q29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
VXNlIGZpbGVuYW1lUG9saWN5LgogCkBAIC0xNTEsMTcgKzE1NSwxMyBAQCBTdHJpbmcgRHJhZ0Rh
dGE6OmFzVVJMKEZyYW1lKiBmcmFtZSwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcq
IHRpdGxlKSBjbwogICAgIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwogICAgIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1fcGFz
dGVib2FyZE5hbWUpOwotICAgIAotICAgIC8vIEZJWE1FOiB1c2luZyB0aGUgZWRpdG9yQ2xpZW50
IHRvIGNhbGwgaW50byBXZWJLaXQsIGZvciBub3csIHNpbmNlIAotICAgIC8vIGNhbGxpbmcgd2Vi
a2l0X2Nhbm9uaWNhbGl6ZSBmcm9tIFdlYkNvcmUgaW52b2x2ZXMgbWlncmF0aW5nIGEgc2l6YWJs
ZSBhbW91bnQgb2YgCi0gICAgLy8gaGVscGVyIGNvZGUgdGhhdCBzaG91bGQgZWl0aGVyIGJlIGRv
bmUgaW4gYSBzZXBhcmF0ZSBwYXRjaCBvciBmaWd1cmVkIG91dCBpbiBhbm90aGVyIHdheS4KLSAg
ICAKKwogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNVUkxQYm9hcmRUeXBlKSkpIHsK
ICAgICAgICAgTlNVUkwgKlVSTEZyb21QYXN0ZWJvYXJkID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zdHJpbmdGb3JUeXBl
KFN0cmluZyhOU1VSTFBib2FyZFR5cGUpLCBtX3Bhc3RlYm9hcmROYW1lKV07CiAgICAgICAgIE5T
U3RyaW5nICpzY2hlbWUgPSBbVVJMRnJvbVBhc3RlYm9hcmQgc2NoZW1lXTsKICAgICAgICAgLy8g
Q2Fubm90IGRyb3Agb3RoZXIgc2NoZW1lcyB1bmxlc3MgPHJkYXI6Ly9wcm9ibGVtLzEwNTYyNjYy
PiBhbmQgPHJkYXI6Ly9wcm9ibGVtLzExMTg3MzE1PiBhcmUgZml4ZWQuCiAgICAgICAgIGlmIChb
c2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSB8fCBbc2NoZW1lIGlzRXF1YWxUb1N0cmlu
ZzpAImh0dHBzIl0pCi0gICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5lZGl0b3IoKS5jbGllbnQo
KS0+Y2Fub25pY2FsaXplVVJMKFVSTEZyb21QYXN0ZWJvYXJkKSBhYnNvbHV0ZVN0cmluZ107Cisg
ICAgICAgICAgICByZXR1cm4gW1VSTEJ5Q2Fub25pY2FsaXppbmdVUkwoVVJMRnJvbVBhc3RlYm9h
cmQpIGFic29sdXRlU3RyaW5nXTsKICAgICB9CiAgICAgCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5z
KFN0cmluZyhOU1N0cmluZ1Bib2FyZFR5cGUpKSkgewpAQCAtMTcxLDcgKzE3MSw3IEBAIFN0cmlu
ZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3ks
IFN0cmluZyogdGl0bGUpIGNvCiAgICAgICAgIC8vIFRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlv
biBpcyB1c2VkIHRvIGluaXRpYXRlIG5hdmlnYXRpb24sIHNvIHdlIHNob3VsZG4ndCBhbGxvdyBh
cmJpdHJhcnkgZmlsZSBVUkxzLgogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFsbG93IG9u
bHkgaHR0cCBmYW1pbHkgc2NoZW1lcywgb3IgYW55dGhpbmcgbm9uLWxvY2FsPwogICAgICAgICBp
ZiAoW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0gfHwgW3NjaGVtZSBpc0VxdWFsVG9T
dHJpbmc6QCJodHRwcyJdKQotICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCkuY2xp
ZW50KCktPmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmdd
OworICAgICAgICAgICAgcmV0dXJuIFtVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKFVSTEZyb21QYXN0
ZWJvYXJkKSBhYnNvbHV0ZVN0cmluZ107CiAgICAgfQogICAgIAogICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcoTlNGaWxlbmFtZXNQYm9hcmRUeXBlKSkpIHsKQEAgLTE4MSwxOSArMTgxLDEz
IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNp
b25Qb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvCiAgICAgICAgICAgICBCT09MIGlzRGlyZWN0b3J5
OwogICAgICAgICAgICAgaWYgKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDpmaWxlc1swXSBpc0RpcmVjdG9yeTomaXNEaXJlY3RvcnldICYmIGlzRGlyZWN0
b3J5KQogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgICAgIHJldHVy
biBbZnJhbWUtPmVkaXRvcigpLmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpmaWxlc1swXV0pIGFic29sdXRlU3RyaW5nXTsKKyAgICAgICAgICAgIHJldHVy
biBbVVJMQnlDYW5vbmljYWxpemluZ1VSTChbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVzWzBd
XSkgYWJzb2x1dGVTdHJpbmddOwogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHJldHVybiBT
dHJpbmcoKTsgICAgICAgIAogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERyYWdE
YXRhOjphc0ZyYWdtZW50KEZyYW1lKiBmcmFtZSwgUmFuZ2UmIHJhbmdlLCBib29sIGFsbG93UGxh
aW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkgY29uc3QKLXsKLSAgICBQYXN0ZWJvYXJkIHBh
c3RlYm9hcmQobV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS53
ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZCwgcmFuZ2UsIGFsbG93UGxhaW5UZXh0
LCBjaG9zZVBsYWluVGV4dCk7Ci19Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCmluZGV4IDQxN2NlMmYuLmMyZjE2ZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRp
ZXNXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0
aWVzV2luLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RG9jdW1lbnQ7CitjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgVVJMOwogCiBIR0xPQkFM
IGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0RyYWdEYXRhV2luLmNwcAppbmRleCA1YTdmNzM2Li43MDA1NzBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKQEAgLTI5LDEwICsyOSw2IEBA
CiAKICNpbmNsdWRlICJDT01QdHIuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRVdGlsaXRpZXNXaW4u
aCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKLSNp
bmNsdWRlICJNYXJrdXAuaCIKLSNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRFbmNv
ZGluZy5oIgogI2luY2x1ZGUgPG9iamlkbC5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KQEAgLTU2
LDcgKzUyLDcgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiBkYXRhLCBj
b25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnMKIHsKIH0KIAotYm9vbCBEcmFnRGF0
YTo6Y29udGFpbnNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQ
b2xpY3kpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNp
b25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0CiB7CiAgICAgaWYgKG1fcGxhdGZvcm1EcmFn
RGF0YSkKICAgICAgICAgcmV0dXJuIFNVQ0NFRURFRChtX3BsYXRmb3JtRHJhZ0RhdGEtPlF1ZXJ5
R2V0RGF0YSh1cmxXRm9ybWF0KCkpKSAKQEAgLTEwMSw3ICs5Nyw3IEBAIHZvaWQgRHJhZ0RhdGE6
OmdldERyYWdGaWxlQ29udGVudERhdGEoaW50IHNpemUsIHZvaWQqIGRhdGFCbG9iKQogICAgICAg
ICBnZXRGaWxlQ29udGVudERhdGEobV9wbGF0Zm9ybURyYWdEYXRhLCBzaXplLCBkYXRhQmxvYik7
CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Q
b2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0Rh
dGE6OmFzVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5n
KiB0aXRsZSkgY29uc3QKIHsKICAgICByZXR1cm4gKG1fcGxhdGZvcm1EcmFnRGF0YSkgPyBnZXRV
UkwobV9wbGF0Zm9ybURyYWdEYXRhLCBmaWxlbmFtZVBvbGljeSwgdGl0bGUpIDogZ2V0VVJMKCZt
X2RyYWdEYXRhTWFwLCBmaWxlbmFtZVBvbGljeSwgdGl0bGUpOwogfQpAQCAtMTgxLDcgKzE3Nyw3
IEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3QKICAgICByZXR1cm4g
bV9kcmFnRGF0YU1hcC5jb250YWlucyhwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0KSB8fCBt
X2RyYWdEYXRhTWFwLmNvbnRhaW5zKHBsYWluVGV4dEZvcm1hdCgpLT5jZkZvcm1hdCk7CiB9CiAK
LVN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoRnJhbWUqKSBjb25zdAorU3RyaW5nIERyYWdE
YXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChtX3BsYXRmb3JtRHJhZ0Rh
dGEpID8gZ2V0UGxhaW5UZXh0KG1fcGxhdGZvcm1EcmFnRGF0YSkgOiBnZXRQbGFpblRleHQoJm1f
ZHJhZ0RhdGFNYXApOwogfQpAQCAtMjAwLDQ4ICsxOTYsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y2Fu
U21hcnRSZXBsYWNlKCkgY29uc3QKIAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxl
Q29udGVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnRhaW5zUGxhaW5UZXh0KCkgfHwgY29u
dGFpbnNVUkwoMCkgCisgICAgcmV0dXJuIGNvbnRhaW5zUGxhaW5UZXh0KCkgfHwgY29udGFpbnNV
UkwoKQogICAgICAgICB8fCAoKG1fcGxhdGZvcm1EcmFnRGF0YSkgPyAoY29udGFpbnNIVE1MKG1f
cGxhdGZvcm1EcmFnRGF0YSkgfHwgY29udGFpbnNGaWxlbmFtZXMobV9wbGF0Zm9ybURyYWdEYXRh
KSkKICAgICAgICAgICAgIDogKGNvbnRhaW5zSFRNTCgmbV9kcmFnRGF0YU1hcCkgfHwgY29udGFp
bnNGaWxlbmFtZXMoJm1fZHJhZ0RhdGFNYXApKSkKICAgICAgICAgfHwgY29udGFpbnNDb2xvcigp
OwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERyYWdEYXRhOjphc0ZyYWdtZW50
KEZyYW1lKiBmcmFtZSwgUmFuZ2UmLCBib29sLCBib29sJikgY29uc3QKLXsgICAgIAotICAgIC8q
Ci0gICAgICogT3JkZXIgaXMgcmljaGVzdCBmb3JtYXQgZmlyc3QuIE9uIE9TWCB0aGlzIGlzOgot
ICAgICAqICogV2ViIEFyY2hpdmUKLSAgICAgKiAqIEZpbGVuYW1lcwotICAgICAqICogSFRNTAot
ICAgICAqICogUlRGCi0gICAgICogKiBUSUZGCi0gICAgICogKiBQSUNUCi0gICAgICovCi0gICAg
IAotICAgIGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEpIHsKLSAgICAgICAgaWYgKGNvbnRhaW5zRmls
ZW5hbWVzKG1fcGxhdGZvcm1EcmFnRGF0YSkpIHsKLSAgICAgICAgICAgIGlmIChQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tRmlsZW5hbWVzKGZyYW1l
LT5kb2N1bWVudCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmcmFnbWVudDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb250YWluc0hUTUwobV9wbGF0
Zm9ybURyYWdEYXRhKSkgewotICAgICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21IVE1MKGZyYW1lLT5kb2N1bWVudCgpLCBtX3Bs
YXRmb3JtRHJhZ0RhdGEpKQotICAgICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKLSAgICAg
ICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChjb250YWluc0ZpbGVuYW1lcygmbV9kcmFn
RGF0YU1hcCkpIHsKLSAgICAgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tRmlsZW5hbWVzKGZyYW1lLT5kb2N1bWVudCgpLCAmbV9k
cmFnRGF0YU1hcCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGNvbnRhaW5zSFRNTCgmbV9kcmFnRGF0YU1hcCkpIHsKLSAgICAgICAg
ICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRG
cm9tSFRNTChmcmFtZS0+ZG9jdW1lbnQoKSwgJm1fZHJhZ0RhdGFNYXApKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmcmFnbWVudDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gMDsKLX0K
LQogQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3IoKSBjb25zdAogewogICAgIHJldHVybiBDb2xvcigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGRjNjZlMzcuLjYxMTg2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxNC0wOC0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CisKKyAgICAgICAgRHJhZ0RhdGEgc2hvdWxkIG5vdCBkZXBlbmQgb24gQ2xpcGJvYXJkLCBE
b2N1bWVudEZyYWdtZW50LCBhbmQgRG9jdW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOiBV
cGRhdGUgdG8gQVBJCisgICAgICAgIGNoYW5nZSBpbiBEcmFnRGF0YTo6YXNVUkwoKS4KKwogMjAx
NC0wOC0yNiAgTWF0dCBMaWxlayAgPG1ybEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdlYktp
dCBTUEkgdG8gY29udHJvbCB0aGUgbmF2aWdhdG9yLnN0YW5kYWxvbmUgcHJvcGVydHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYmMzNzAzMy4uMzFkZTk4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzNjgs
NyArMTM2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBEcmFnCiAgICAgVU5VU0VEX1BBUkFNKHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAgIFVOVVNFRF9QQVJBTShzYW5kYm94RXh0ZW5zaW9u
c0ZvclVwbG9hZCk7CiAKLSAgICBTdHJpbmcgdXJsID0gZHJhZ0RhdGEuYXNVUkwobnVsbHB0cik7
CisgICAgU3RyaW5nIHVybCA9IGRyYWdEYXRhLmFzVVJMKCk7CiAgICAgaWYgKCF1cmwuaXNFbXB0
eSgpKQogICAgICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwodXJsKTsK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhKSwgbV9wYWdlSUQpOwo=
</data>
<flag name="review"
          id="261933"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238114</attachid>
            <date>2014-09-15 04:49:00 -0700</date>
            <delta_ts>2014-09-16 01:28:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wcore-drag-data-violations.diff</filename>
            <type>text/plain</type>
            <size>30211</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMDg4OGYxLi41NmU5YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTQtMDktMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIERyYWdEYXRhIHNob3VsZCBub3QgZGVwZW5kIG9uIENsaXBib2FyZCwgRG9j
dW1lbnRGcmFnbWVudCwgYW5kIERvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIFJlZmFjdG9yIERyYWdEYXRhIHRvIG5vdCBkZXBlbmQgb24gRnJhbWUs
IERvY3VtZW50RnJhZ21lbnQsCisgICAgICAgIERvY3VtZW50IGFuZCBSYW5nZS4gRHJhZ0RhdGE6
OmFzRnJhZ21lbnQoKSBoYXMgYmVlbiBtb3ZlZCB0bworICAgICAgICBEcmFnQ29udHJvbGxlciBh
bmQgaW1wbGVtZW50ZWQgaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGUuCisgICAgICAgIERy
YWdEYXRhIG1ldGhvZHMgdXNpbmcgRnJhbWUgaGFzIGJlZW4gcmV3b3JrZWQgaW4gTWFjIHRvIG5v
dCB1c2UKKyAgICAgICAgRnJhbWUsIHNpbmNlIGFsbCBvdGhlciBwb3J0cyB3ZXJlIGlnbm9yZWlu
ZyB0aGUgZnJhbWUgcGFyYW1ldGVyLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9jdW1lbnRGcmFnbWVudEZy
b21EcmFnRGF0YSk6IE1ha2UgaXQKKyAgICAgICAgYSBzdGF0aWMgbWVtYmVyIHRvIGJlIGFibGUg
dG8gdXNlIGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKCkuCisgICAgICAgIChXZWJDb3JlOjpE
cmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24pOiBVcGRhdGUgdG8KKyAgICAgICAg
RHJhZ0RhdGEgQVBJIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL2VmbC9EcmFnQ29udHJvbGxlckVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9t
RHJhZ0RhdGEpOiBNb3ZlCisgICAgICAgIERyYWdEYXRhOjphc0ZyYWdtZW50KCkgaW1wbGVtZW50
YXRpb24gaGVyZS4KKyAgICAgICAgKiBwYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEpOiBE
aXR0by4KKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRvLgor
ICAgICAgICAqIHBhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL0Ry
YWdEYXRhRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1BsYWluVGV4dCk6
IFJlbW92ZSBGcmFtZSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29u
dGFpbnNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6YXNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojphc0ZyYWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBTYW1lIGlt
cGxlbWVudGF0aW9uIGFzIHRoZQorICAgICAgICBFZGl0b3IuCisgICAgICAgIChXZWJDb3JlOjpE
cmFnRGF0YTo6Y29udGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKTogVXNlIFVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoKSBp
bnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIHRoZSBFZGl0b3IgY2xpZW50LgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9EcmFnRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFp
bnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6OmFzVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRl
eHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbXBhdGli
bGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc0ZyYWdtZW50KTogRGVs
ZXRlZC4KKwogMjAxNC0wOS0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBDcmFzaCBhdCBDU1NQYXJzZXI6OnBh
cnNlR3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCmluZGV4IDE2MmVlNDkuLjRlNzc3MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCkBAIC0xMTQsMjUgKzExNCwyNSBAQCBEcmFnQ29udHJvbGxlcjo6fkRyYWdD
b250cm9sbGVyKCkKICAgICBtX2NsaWVudC5kcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwogfQog
Ci1zdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50RnJv
bURyYWdEYXRhKERyYWdEYXRhJiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1lLCBSYW5nZSYgY29udGV4
dCwgYm9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpCitQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IERyYWdDb250cm9sbGVyOjpkb2N1bWVudEZyYWdtZW50RnJvbURy
YWdEYXRhKERyYWdEYXRhJiBkcmFnRGF0YSwgRnJhbWUmIGZyYW1lLCBSYW5nZSYgY29udGV4dCwg
Ym9vbCBhbGxvd1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpCiB7CiAgICAgY2hvc2VQ
bGFpblRleHQgPSBmYWxzZTsKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGNvbnRleHQub3du
ZXJEb2N1bWVudCgpOwogICAgIGlmIChkcmFnRGF0YS5jb250YWluc0NvbXBhdGlibGVDb250ZW50
KCkpIHsKLSAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBkcmFnRGF0YS5hc0ZyYWdtZW50KGZyYW1lLCBjb250ZXh0LCBhbGxvd1BsYWluVGV4dCwgY2hv
c2VQbGFpblRleHQpKQorICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKGRyYWdEYXRhLCBmcmFtZSwgY29u
dGV4dCwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KSkKICAgICAgICAgICAgIHJldHVy
biBmcmFnbWVudDsKIAotICAgICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNVUkwoZnJhbWUsIERy
YWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMpKSB7CisgICAgICAgIGlmIChkcmFnRGF0YS5j
b250YWluc1VSTChEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzKSkgewogICAgICAgICAg
ICAgU3RyaW5nIHRpdGxlOwotICAgICAgICAgICAgU3RyaW5nIHVybCA9IGRyYWdEYXRhLmFzVVJM
KGZyYW1lLCBEcmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCAmdGl0bGUpOworICAgICAg
ICAgICAgU3RyaW5nIHVybCA9IGRyYWdEYXRhLmFzVVJMKERyYWdEYXRhOjpEb05vdENvbnZlcnRG
aWxlbmFtZXMsICZ0aXRsZSk7CiAgICAgICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgICAgICBSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvciA9IEhUTUxBbmNo
b3JFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgIGFuY2hvci0+c2V0
SHJlZih1cmwpOwogICAgICAgICAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgLy8gVHJ5IHRoZSBwbGFpbiB0ZXh0IGZpcnN0IGJlY2F1c2UgdGhlIHVy
bCBtaWdodCBiZSBub3JtYWxpemVkIG9yIGVzY2FwZWQuCiAgICAgICAgICAgICAgICAgICAgIGlm
IChkcmFnRGF0YS5jb250YWluc1BsYWluVGV4dCgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
dGl0bGUgPSBkcmFnRGF0YS5hc1BsYWluVGV4dChmcmFtZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB0aXRsZSA9IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmICh0aXRsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHVy
bDsKICAgICAgICAgICAgICAgICB9CkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShEcmFnRGF0
YSYgZHJhZ0QKICAgICB9CiAgICAgaWYgKGFsbG93UGxhaW5UZXh0ICYmIGRyYWdEYXRhLmNvbnRh
aW5zUGxhaW5UZXh0KCkpIHsKICAgICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAg
ICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb250ZXh0LCBkcmFnRGF0YS5hc1BsYWlu
VGV4dChmcmFtZSkpLmdldCgpOworICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4
dChjb250ZXh0LCBkcmFnRGF0YS5hc1BsYWluVGV4dCgpKS5nZXQoKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gMDsKQEAgLTIzNCw3ICsyMzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3Jt
RHJhZ09wZXJhdGlvbihEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIG1fY2xpZW50LndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0
aW5hdGlvbkFjdGlvbkxvYWQsIGRyYWdEYXRhKTsKLSAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9h
ZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KCZtX3BhZ2UubWFpbkZyYW1lKCksIFJlc291cmNl
UmVxdWVzdChkcmFnRGF0YS5hc1VSTCgmbV9wYWdlLm1haW5GcmFtZSgpKSkpKTsKKyAgICBtX3Bh
Z2UubWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KCZtX3BhZ2UubWFp
bkZyYW1lKCksIFJlc291cmNlUmVxdWVzdChkcmFnRGF0YS5hc1VSTCgpKSkpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC00MjUsNyArNDI1LDcgQEAgc3RhdGljIGJvb2wgc2V0U2VsZWN0aW9u
VG9EcmFnQ2FyZXQoRnJhbWUqIGZyYW1lLCBWaXNpYmxlU2VsZWN0aW9uJiBkcmFnQ2FyZXQsIFIK
IGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IoRnJhbWUqIGlu
bmVyRnJhbWUsIERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBBU1NFUlQobV9wYWdlLmRyYWdD
YXJldENvbnRyb2xsZXIoKS5oYXNDYXJldCgpKTsKLSAgICBTdHJpbmcgdGV4dCA9IG1fcGFnZS5k
cmFnQ2FyZXRDb250cm9sbGVyKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSA/IGVtcHR5U3Ry
aW5nKCkgOiBkcmFnRGF0YS5hc1BsYWluVGV4dChpbm5lckZyYW1lKTsKKyAgICBTdHJpbmcgdGV4
dCA9IG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUo
KSA/IGVtcHR5U3RyaW5nKCkgOiBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgIE5vZGUqIHRh
cmdldCA9IGlubmVyRnJhbWUtPmVkaXRvcigpLmZpbmRFdmVudFRhcmdldEZyb20obV9wYWdlLmRy
YWdDYXJldENvbnRyb2xsZXIoKS5jYXJldFBvc2l0aW9uKCkpOwogICAgIHJldHVybiB0YXJnZXQt
PmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CkBAIC00OTQs
NyArNDk0LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhEcmFnRGF0
YSYgZHJhZ0RhdGEpCiAgICAgUmVzb3VyY2VDYWNoZVZhbGlkYXRpb25TdXBwcmVzc29yIHZhbGlk
YXRpb25TdXBwcmVzc29yKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICBpZiAoZHJhZ0lzTW92
ZShpbm5lckZyYW1lLT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpIHx8IGRyYWdDYXJldC5pc0NvbnRl
bnRSaWNobHlFZGl0YWJsZSgpKSB7CiAgICAgICAgIGJvb2wgY2hvc2VQbGFpblRleHQgPSBmYWxz
ZTsKLSAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnRG
cmFnbWVudEZyb21EcmFnRGF0YShkcmFnRGF0YSwgaW5uZXJGcmFtZS5nZXQoKSwgKnJhbmdlLCB0
cnVlLCBjaG9zZVBsYWluVGV4dCk7CisgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IGRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEoZHJhZ0RhdGEsICppbm5lckZy
YW1lLCAqcmFuZ2UsIHRydWUsIGNob3NlUGxhaW5UZXh0KTsKICAgICAgICAgaWYgKCFmcmFnbWVu
dCB8fCAhaW5uZXJGcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQs
IHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25Ecm9wcGVkKSkgewogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CkBAIC01MTcsNyArNTE3LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxl
cjo6Y29uY2x1ZGVFZGl0RHJhZyhEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgdGV4dCA9IGRyYWdEYXRhLmFz
UGxhaW5UZXh0KGlubmVyRnJhbWUuZ2V0KCkpOworICAgICAgICBTdHJpbmcgdGV4dCA9IGRyYWdE
YXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgICAgIGlmICh0ZXh0LmlzRW1wdHkoKSB8fCAhaW5uZXJG
cmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCByYW5nZS5nZXQoKSwgRWRpdG9y
SW5zZXJ0QWN0aW9uRHJvcHBlZCkpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IDI1YTYxNmYuLjdlZWIx
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRGF0YVRyYW5zZmVyOwogICAgIGNsYXNz
IERvY3VtZW50OworICAgIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiAgICAgY2xhc3MgRHJhZ0Ns
aWVudDsKICAgICBjbGFzcyBEcmFnRGF0YTsKICAgICBjbGFzcyBFbGVtZW50OwpAQCAtNDQsNiAr
NDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFz
cyBQYWdlOwogICAgIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKKyAgICBjbGFzcyBSYW5nZTsK
IAogICAgIHN0cnVjdCBEcmFnU3RhdGU7CiAKQEAgLTExMyw2ICsxMTUsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIGNsZWFudXBBZnRlclN5c3RlbURyYWcoKTsKICAgICAg
ICAgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0YVRyYW5zZmVyJiwgRWxlbWVudCYs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwpOwogCisgICAgICAgIC8vIEZJWE1FOiBN
b3ZlIGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhIGltcGxlbWVudGF0aW9uIHRvIHRoZSBFZGl0
b3IgYW5kIG1ha2UgZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YSBhIHN0YXRpYyBmdW5jdGlv
biBhZ2Fpbi4KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9j
dW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShEcmFnRGF0YSYsIEZyYW1lJiwgUmFuZ2UmLCBib29s
IGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCk7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERy
YWdEYXRhJiwgRnJhbWUmLCBSYW5nZSYsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3Nl
UGxhaW5UZXh0KTsKKwogICAgICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgICAgIERyYWdDbGllbnQm
IG1fY2xpZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29u
dHJvbGxlckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVm
bC5jcHAKaW5kZXggOWRiMzg2OC4uMzYxNTU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
ZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC01MCw3ICs1
Miw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oRHJhZ0RhdGEmKQogCiBE
cmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFn
RGF0YSkKIHsKLSAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNVUkwoMCkpCisgICAgaWYgKGRyYWdE
YXRhLmNvbnRhaW5zVVJMKCkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKIAog
ICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKQEAgLTcxLDQgKzczLDkgQEAgdm9pZCBEcmFn
Q29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYsIEVsZW1l
bnQmLCBjb25zdCBVUkwKIHsKIH0KIAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFn
Q29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmLCBGcmFtZSYs
IFJhbmdlJiwgYm9vbCAvKmFsbG93UGxhaW5UZXh0Ki8sIGJvb2wmIC8qY2hvc2VQbGFpblRleHQq
LykKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDU0ZmM4ZTYuLjE3MmM1ZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKQEAgLTI2LDEz
ICsyNiwxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVy
LmgiCiAKKyNpbmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVy
LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50Lmgi
CiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUGFzdGVib2FyZC5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTUzLDcgKzU3LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5
RG93bihEcmFnRGF0YSYpCiBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0
aW9uKERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBpcyBp
bmNvbXBsZXRlCi0gICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKDApKQorICAgIGlmIChkcmFn
RGF0YS5jb250YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAK
ICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CkBAIC03NCw0ICs3OCwxMiBAQCB2b2lkIERy
YWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0YVRyYW5zZmVyJiBkYXRh
VHJhbnNmZXIsIEVsZW1lbgogICAgIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkud3JpdGVJbWFn
ZShlbGVtZW50LCB1cmwsIGxhYmVsKTsKIH0KIAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRy
YWdEYXRhLCBGcmFtZSYgZnJhbWUsIFJhbmdlJiwgYm9vbCAvKmFsbG93UGxhaW5UZXh0Ki8sIGJv
b2wmIC8qY2hvc2VQbGFpblRleHQqLykKK3sKKyAgICBpZiAoIWRyYWdEYXRhLnBsYXRmb3JtRGF0
YSgpLT5oYXNNYXJrdXAoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKS0+bWFya3VwKCksICIiKTsKK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCA5NGFm
YTFjLi45N2E2YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29u
dHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxl
ck1hYy5tbQpAQCAtMjksMTMgKzI5LDE4IEBACiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAog
I2ltcG9ydCAiRGF0YVRyYW5zZmVyLmgiCisjaW1wb3J0ICJEb2N1bWVudC5oIgorI2ltcG9ydCAi
RG9jdW1lbnRGcmFnbWVudC5oIgogI2ltcG9ydCAiRHJhZ0NsaWVudC5oIgogI2ltcG9ydCAiRHJh
Z0RhdGEuaCIKKyNpbXBvcnQgIkVkaXRvci5oIgorI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCiAj
aW1wb3J0ICJFbGVtZW50LmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIk1haW5G
cmFtZS5oIgogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgorI2ltcG9y
dCAiUmFuZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1OSw3IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAg
IAogRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiB7Ci0gICAgaWYgKChkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9u
SXNNb2RhbCkgfHwgIWRyYWdEYXRhLmNvbnRhaW5zVVJMKCZtX3BhZ2UubWFpbkZyYW1lKCkpKQor
ICAgIGlmICgoZHJhZ0RhdGEuZmxhZ3MoKSAmIERyYWdBcHBsaWNhdGlvbklzTW9kYWwpIHx8ICFk
cmFnRGF0YS5jb250YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7
CiAKICAgICBpZiAoIW1fZG9jdW1lbnRVbmRlck1vdXNlIHx8ICghKGRyYWdEYXRhLmZsYWdzKCkg
JiAoRHJhZ0FwcGxpY2F0aW9uSGFzQXR0YWNoZWRTaGVldCB8IERyYWdBcHBsaWNhdGlvbklzU291
cmNlKSkpKQpAQCAtODcsNiArOTIsMTIgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBFbGVtZW4KICAgICBt
X2NsaWVudC5kZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQo
KS5uYW1lKCksIGVsZW1lbnQsIHVybCwgbGFiZWwsIGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgp
KTsKIH0KIAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6Y3Jl
YXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdEYXRhLCBGcmFtZSYgZnJhbWUs
IFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4
dCkKK3sKKyAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQoZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUo
KSk7CisgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChw
YXN0ZWJvYXJkLCBjb250ZXh0LCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JU
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCmluZGV4
IGQxOWNhODguLmIwMWRlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0Ry
YWdDb250cm9sbGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29u
dHJvbGxlcldpbi5jcHAKQEAgLTI2LDkgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiRHJhZ0NvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGll
c1dpbi5oIgogI2luY2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAj
aW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVT
ZWxlY3Rpb24uaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAibWFya3VwLmgi
CkBAIC01MCw3ICs1NCw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVy
YXRpb24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIC8vaWYgd2UgYXJlIGEgbW9kYWwgd2luZG93
LCB3ZSBhcmUgdGhlIGRyYWcgc291cmNlLCBvciB0aGUgd2luZG93IGlzIGFuIGF0dGFjaGVkIHNo
ZWV0CiAgICAgLy9JZiB0aGlzIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gd2l0aGluIFdlYkNvcmUg
b3BlcmF0aW9uRm9yRHJhZyBjYW4gYmUgcHVsbGVkIGludG8gCiAgICAgLy9XZWJDb3JlIGl0c2Vs
ZgotICAgIHJldHVybiBkcmFnRGF0YS5jb250YWluc1VSTCgwKSAmJiAhbV9kaWRJbml0aWF0ZURy
YWcgPyBEcmFnT3BlcmF0aW9uQ29weSA6IERyYWdPcGVyYXRpb25Ob25lOworICAgIHJldHVybiBk
cmFnRGF0YS5jb250YWluc1VSTCgpICYmICFtX2RpZEluaXRpYXRlRHJhZyA/IERyYWdPcGVyYXRp
b25Db3B5IDogRHJhZ09wZXJhdGlvbk5vbmU7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6Omlz
Q29weUtleURvd24oRHJhZ0RhdGEmKQpAQCAtODMsNCArODcsMTkgQEAgdm9pZCBEcmFnQ29udHJv
bGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVy
LCBFbGVtZW4KICAgICBwYXN0ZWJvYXJkLndyaXRlTWFya3VwKGNyZWF0ZU1hcmt1cChlbGVtZW50
LCBJbmNsdWRlTm9kZSwgMCwgUmVzb2x2ZUFsbFVSTHMpKTsKIH0KIAorUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEo
RHJhZ0RhdGEmIGRyYWdEYXRhLCBGcmFtZSYgZnJhbWUsIFJhbmdlJiwgYm9vbCAvKmFsbG93UGxh
aW5UZXh0Ki8sIGJvb2wmIC8qY2hvc2VQbGFpblRleHQqLykKK3sKKyAgICBEcmFnRGF0YVJlZiBw
bGF0Zm9ybURyYWdEYXRhID0gZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCk7CisgICAgaWYgKGNvbnRh
aW5zRmlsZW5hbWVzKHBsYXRmb3JtRHJhZ0RhdGEgPyBwbGF0Zm9ybURyYWdEYXRhIDogJmRyYWdE
YXRhLmRyYWdEYXRhTWFwKCkpKSB7CisgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tRmlsZW5hbWVzKGZyYW1lLmRvY3VtZW50KCks
IHBsYXRmb3JtRHJhZ0RhdGEgPyBwbGF0Zm9ybURyYWdEYXRhIDogJmRyYWdEYXRhLmRyYWdEYXRh
TWFwKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OworICAgIH0KKworICAgIGlmIChj
b250YWluc0hUTUwocGxhdGZvcm1EcmFnRGF0YSA/IHBsYXRmb3JtRHJhZ0RhdGEgOiAmZHJhZ0Rh
dGEuZHJhZ0RhdGFNYXAoKSkpIHsKKyAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21IVE1MKGZyYW1lLmRvY3VtZW50KCksIHBsYXRm
b3JtRHJhZ0RhdGEgPyBwbGF0Zm9ybURyYWdEYXRhIDogJmRyYWdEYXRhLmRyYWdEYXRhTWFwKCkp
KQorICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggODgwMTI2ZC4uNTZi
MTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC02MCwxMCArNjAsNyBAQCB0
eXBlZGVmIHZvaWQqIERyYWdEYXRhUmVmOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEZyYW1lOwotY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIFVSTDsKLWNsYXNzIFJhbmdl
OwogCiBlbnVtIERyYWdBcHBsaWNhdGlvbkZsYWdzIHsKICAgICBEcmFnQXBwbGljYXRpb25Ob25l
ID0gMCwKQEAgLTk1LDE0ICs5MiwxMyBAQCBwdWJsaWM6CiAgICAgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uRmxhZ3M7IH0KICAgICBEcmFn
RGF0YVJlZiBwbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGE7
IH0KICAgICBEcmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpIGNvbnN0
IHsgcmV0dXJuIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOyB9Ci0gICAgYm9vbCBjb250
YWluc1VSTChGcmFtZSosIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSA9
IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNVUkwoRmlsZW5hbWVD
b252ZXJzaW9uUG9saWN5ID0gQ29udmVydEZpbGVuYW1lcykgY29uc3Q7CiAgICAgYm9vbCBjb250
YWluc1BsYWluVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNDb21wYXRpYmxlQ29udGVu
dCgpIGNvbnN0OwotICAgIFN0cmluZyBhc1VSTChGcmFtZSosIEZpbGVuYW1lQ29udmVyc2lvblBv
bGljeSBmaWxlbmFtZVBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUgPSAw
KSBjb25zdDsKLSAgICBTdHJpbmcgYXNQbGFpblRleHQoRnJhbWUqKSBjb25zdDsKKyAgICBTdHJp
bmcgYXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5ID0gQ29udmVydEZpbGVuYW1lcywgU3Ry
aW5nKiB0aXRsZSA9IG51bGxwdHIpIGNvbnN0OworICAgIFN0cmluZyBhc1BsYWluVGV4dCgpIGNv
bnN0OwogICAgIHZvaWQgYXNGaWxlbmFtZXMoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKICAgICBD
b2xvciBhc0NvbG9yKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBh
c0ZyYWdtZW50KEZyYW1lKiwgUmFuZ2UmIGNvbnRleHQsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJv
b2wmIGNob3NlUGxhaW5UZXh0KSBjb25zdDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZSgpIGNv
bnN0OwogICAgIGJvb2wgY29udGFpbnNDb2xvcigpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNG
aWxlcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Ry
YWdEYXRhRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5j
cHAKaW5kZXggZGNjOGVmYi4uMDAyYTc5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL0RyYWdEYXRhRWZsLmNwcApAQCAtMjEsOCArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1
ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw3ICs1NCw3IEBAIGJvb2wgRHJhZ0RhdGE6
OmNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmlu
ZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoRnJhbWUqKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjph
c1BsYWluVGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpAQCAtNzAsMTkg
KzY5LDE0IEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRnJh
bWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kpIGNvbnN0Citib29sIERyYWdEYXRhOjpjb250
YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiwgRmlsZW5hbWVDb252ZXJz
aW9uUG9saWN5LCBTdHJpbmcqKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChGaWxlbmFt
ZUNvbnZlcnNpb25Qb2xpY3ksIFN0cmluZyopIGNvbnN0CiB7CiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IERyYWdEYXRhOjphc0ZyYWdtZW50
KEZyYW1lKiwgUmFuZ2UmLCBib29sLCBib29sJikgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0K
LQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKaW5kZXgg
MmJmMzRkZi4uNTk4YzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0RyYWdEYXRhR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0Rh
dGFHdGsuY3BwCkBAIC0xOCwxMCArMTgsNiBAQAogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAKICNp
bmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRl
ICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJtYXJr
dXAuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NSw3ICs1MSw3IEBAIGJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3QKICAgICByZXR1cm4gbV9wbGF0Zm9ybURy
YWdEYXRhLT5oYXNUZXh0KCk7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoRnJh
bWUqKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YS0+dGV4dCgpOwogfQpAQCAtNjcsMTUgKzYzLDE1IEBA
IENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QKIAogYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnRhaW5zUGxhaW5U
ZXh0KCkgfHwgY29udGFpbnNVUkwoMCkgfHwgbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNNYXJrdXAo
KSB8fCBjb250YWluc0NvbG9yKCkgfHwgY29udGFpbnNGaWxlcygpOworICAgIHJldHVybiBjb250
YWluc1BsYWluVGV4dCgpIHx8IGNvbnRhaW5zVVJMKCkgfHwgbV9wbGF0Zm9ybURyYWdEYXRhLT5o
YXNNYXJrdXAoKSB8fCBjb250YWluc0NvbG9yKCkgfHwgY29udGFpbnNGaWxlcygpOwogfQogCi1i
b29sIERyYWdEYXRhOjpjb250YWluc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lv
blBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJM
KEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gIWFzVVJMKGZyYW1lLCBmaWxlbmFtZVBvbGljeSkuaXNFbXB0eSgpOworICAgIHJldHVy
biAhYXNVUkwoZmlsZW5hbWVQb2xpY3kpLmlzRW1wdHkoKTsKIH0KIAotU3RyaW5nIERyYWdEYXRh
Ojphc1VSTChGcmFtZSosIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwg
U3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVDb252
ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAg
IGlmICghbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNVUkwoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwpAQCAtOTEsMTYgKzg3LDQgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSosIEZp
bGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKgogICAgIHJldHVy
biB1cmw7CiB9CiAKLQotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnRGF0YTo6YXNG
cmFnbWVudChGcmFtZSogZnJhbWUsIFJhbmdlJiwgYm9vbCwgYm9vbCYpIGNvbnN0Ci17Ci0gICAg
aWYgKCFtX3BsYXRmb3JtRHJhZ0RhdGEtPmhhc01hcmt1cCgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUtPmRvY3Vt
ZW50KCksIG1fcGxhdGZvcm1EcmFnRGF0YS0+bWFya3VwKCksICIiKTsKLX0KLQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCmluZGV4IGQ1MmE0ZWEuLjljYjIw
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KQEAgLTI3
LDE4ICsyNywxMSBAQAogI2ltcG9ydCAiRHJhZ0RhdGEuaCIKIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCi0jaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRG9jdW1lbnRGcmFnbWVudC5o
IgotI2ltcG9ydCAiRE9NRG9jdW1lbnRGcmFnbWVudC5oIgotI2ltcG9ydCAiRE9NRG9jdW1lbnRG
cmFnbWVudEludGVybmFsLmgiCi0jaW1wb3J0ICJFZGl0b3IuaCIKLSNpbXBvcnQgIkVkaXRvckNs
aWVudC5oIgotI2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
ICNpbXBvcnQgIlBhc3RlYm9hcmQuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmRTdHJhdGVneS5oIgog
I2ltcG9ydCAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0jaW1wb3J0ICJSYW5nZS5oIgorI2ltcG9y
dCAiV2ViQ29yZU5TVVJMRXh0cmFzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA3
LDkgKzEwMCwyMCBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAg
ICAgICAgIHx8IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c3Ry
aW5nRm9yVHlwZShTdHJpbmcoTlNVUkxQYm9hcmRUeXBlKSwgbV9wYXN0ZWJvYXJkTmFtZSkubGVu
Z3RoKCk7CiB9CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoRnJhbWUgKmZyYW1lKSBj
b25zdAorU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGZyYW1lLT5lZGl0b3IoKS5yZWFkUGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoKlBhc3RlYm9hcmQ6
OmNyZWF0ZShtX3Bhc3RlYm9hcmROYW1lKSk7CisgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKG1f
cGFzdGVib2FyZE5hbWUpOworICAgIFBhc3RlYm9hcmRQbGFpblRleHQgdGV4dDsKKyAgICBwYXN0
ZWJvYXJkLnJlYWQodGV4dCk7CisgICAgU3RyaW5nIHN0cmluZyA9IHRleHQudGV4dDsKKworICAg
IC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0aGlzIGlzIDEwMCUgY29ycmVjdCBzaW5jZSB3ZSBr
bm93IC1bTlNVUkwgVVJMV2l0aFN0cmluZzpdIGRvZXMgbm90IGhhbmRsZQorICAgIC8vIGFsbCB0
aGUgc2FtZSBjYXNlcyB3ZSBoYW5kbGUgd2VsbCBpbiB0aGUgVVJMIGNvZGUgZm9yIGNyZWF0aW5n
IGFuIE5TVVJMLgorICAgIGlmICh0ZXh0LmlzVVJMKQorICAgICAgICByZXR1cm4gdXNlclZpc2li
bGVTdHJpbmcoW05TVVJMIFVSTFdpdGhTdHJpbmc6c3RyaW5nXSk7CisKKyAgICAvLyBGSVhNRTog
V1RGIHNob3VsZCBvZmZlciBhIG5vbi1NYWMtc3BlY2lmaWMgd2F5IHRvIGNvbnZlcnQgc3RyaW5n
IHRvIHByZWNvbXBvc2VkIGZvcm0gc28gd2UgY2FuIGRvIGl0IGZvciBhbGwgcGxhdGZvcm1zLgor
ICAgIHJldHVybiBbKE5TU3RyaW5nICopc3RyaW5nIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9u
aWNhbE1hcHBpbmddOwogfQogCiBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CkBAIC0x
MzQsMTIgKzEzOCwxMiBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50
KCkgY29uc3QKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVQTkcpKTsK
IH0KICAgICAKLWJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZyYW1lKiBmcmFtZSwgRmlsZW5h
bWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAorYm9vbCBEcmFnRGF0YTo6
Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25z
dAogewotICAgIHJldHVybiAhYXNVUkwoZnJhbWUsIGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7
CisgICAgcmV0dXJuICFhc1VSTChmaWxlbmFtZVBvbGljeSkuaXNFbXB0eSgpOwogfQogCi1TdHJp
bmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiBmcmFtZSwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5
LCBTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRhOjphc1VSTChGaWxlbmFtZUNv
bnZlcnNpb25Qb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFVz
ZSBmaWxlbmFtZVBvbGljeS4KIApAQCAtMTUxLDE3ICsxNTUsMTMgQEAgU3RyaW5nIERyYWdEYXRh
Ojphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0
aXRsZSkgY28KICAgICAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5cGVzKHR5cGVzLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKLSAgICAKLSAgICAvLyBGSVhNRTogdXNpbmcgdGhlIGVkaXRvckNsaWVudCB0
byBjYWxsIGludG8gV2ViS2l0LCBmb3Igbm93LCBzaW5jZSAKLSAgICAvLyBjYWxsaW5nIHdlYmtp
dF9jYW5vbmljYWxpemUgZnJvbSBXZWJDb3JlIGludm9sdmVzIG1pZ3JhdGluZyBhIHNpemFibGUg
YW1vdW50IG9mIAotICAgIC8vIGhlbHBlciBjb2RlIHRoYXQgc2hvdWxkIGVpdGhlciBiZSBkb25l
IGluIGEgc2VwYXJhdGUgcGF0Y2ggb3IgZmlndXJlZCBvdXQgaW4gYW5vdGhlciB3YXkuCi0gICAg
CisKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSkpKSB7CiAg
ICAgICAgIE5TVVJMICpVUkxGcm9tUGFzdGVib2FyZCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c3RyaW5nRm9yVHlwZShT
dHJpbmcoTlNVUkxQYm9hcmRUeXBlKSwgbV9wYXN0ZWJvYXJkTmFtZSldOwogICAgICAgICBOU1N0
cmluZyAqc2NoZW1lID0gW1VSTEZyb21QYXN0ZWJvYXJkIHNjaGVtZV07CiAgICAgICAgIC8vIENh
bm5vdCBkcm9wIG90aGVyIHNjaGVtZXMgdW5sZXNzIDxyZGFyOi8vcHJvYmxlbS8xMDU2MjY2Mj4g
YW5kIDxyZGFyOi8vcHJvYmxlbS8xMTE4NzMxNT4gYXJlIGZpeGVkLgogICAgICAgICBpZiAoW3Nj
aGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJodHRwIl0gfHwgW3NjaGVtZSBpc0VxdWFsVG9TdHJpbmc6
QCJodHRwcyJdKQotICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCkt
PmNhbm9uaWNhbGl6ZVVSTChVUkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOworICAg
ICAgICAgICAgcmV0dXJuIFtVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKFVSTEZyb21QYXN0ZWJvYXJk
KSBhYnNvbHV0ZVN0cmluZ107CiAgICAgfQogICAgIAogICAgIGlmICh0eXBlcy5jb250YWlucyhT
dHJpbmcoTlNTdHJpbmdQYm9hcmRUeXBlKSkpIHsKQEAgLTE3MSw3ICsxNzEsNyBAQCBTdHJpbmcg
RHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiBmcmFtZSwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBT
dHJpbmcqIHRpdGxlKSBjbwogICAgICAgICAvLyBUaGUgcmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24g
aXMgdXNlZCB0byBpbml0aWF0ZSBuYXZpZ2F0aW9uLCBzbyB3ZSBzaG91bGRuJ3QgYWxsb3cgYXJi
aXRyYXJ5IGZpbGUgVVJMcy4KICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBhbGxvdyBvbmx5
IGh0dHAgZmFtaWx5IHNjaGVtZXMsIG9yIGFueXRoaW5nIG5vbi1sb2NhbD8KICAgICAgICAgaWYg
KFtzY2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cCJdIHx8IFtzY2hlbWUgaXNFcXVhbFRvU3Ry
aW5nOkAiaHR0cHMiXSkKLSAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRvcigpLmNsaWVu
dCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsK
KyAgICAgICAgICAgIHJldHVybiBbVVJMQnlDYW5vbmljYWxpemluZ1VSTChVUkxGcm9tUGFzdGVi
b2FyZCkgYWJzb2x1dGVTdHJpbmddOwogICAgIH0KICAgICAKICAgICBpZiAodHlwZXMuY29udGFp
bnMoU3RyaW5nKE5TRmlsZW5hbWVzUGJvYXJkVHlwZSkpKSB7CkBAIC0xODEsMTkgKzE4MSwxMyBA
QCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiBmcmFtZSwgRmlsZW5hbWVDb252ZXJzaW9u
UG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjbwogICAgICAgICAgICAgQk9PTCBpc0RpcmVjdG9yeTsK
ICAgICAgICAgICAgIGlmIChbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlz
dHNBdFBhdGg6ZmlsZXNbMF0gaXNEaXJlY3Rvcnk6JmlzRGlyZWN0b3J5XSAmJiBpc0RpcmVjdG9y
eSkKICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgICAgICByZXR1cm4g
W2ZyYW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6ZmlsZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CisgICAgICAgICAgICByZXR1cm4g
W1VSTEJ5Q2Fub25pY2FsaXppbmdVUkwoW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlc1swXV0p
IGFic29sdXRlU3RyaW5nXTsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICByZXR1cm4gU3Ry
aW5nKCk7ICAgICAgICAKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnRGF0
YTo6YXNGcmFnbWVudChGcmFtZSogZnJhbWUsIFJhbmdlJiByYW5nZSwgYm9vbCBhbGxvd1BsYWlu
VGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpIGNvbnN0Ci17Ci0gICAgUGFzdGVib2FyZCBwYXN0
ZWJvYXJkKG1fcGFzdGVib2FyZE5hbWUpOwotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkud2Vi
Q29udGVudEZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmQsIHJhbmdlLCBhbGxvd1BsYWluVGV4dCwg
Y2hvc2VQbGFpblRleHQpOwotfQotICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaAppbmRleCA0MTdjZTJmLi5jMmYxNmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVz
V2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5oCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERv
Y3VtZW50OworY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIFVSTDsKIAogSEdMT0JBTCBj
cmVhdGVHbG9iYWxEYXRhKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggNWE3ZjczNi4uNzAwNTcwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCkBAIC0yOSwxMCArMjksNiBAQAog
CiAjaW5jbHVkZSAiQ09NUHRyLmgiCiAjaW5jbHVkZSAiQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgi
Ci0jaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5j
bHVkZSAiTWFya3VwLmgiCi0jaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0RW5jb2Rp
bmcuaCIKICNpbmNsdWRlIDxvYmppZGwuaD4KICNpbmNsdWRlIDxzaGx3YXBpLmg+CkBAIC01Niw3
ICs1Miw3IEBAIERyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0YSwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zCiB7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6
OmNvbnRhaW5zVVJMKEZyYW1lKiwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9s
aWN5KSBjb25zdAorYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9u
UG9saWN5IGZpbGVuYW1lUG9saWN5KSBjb25zdAogewogICAgIGlmIChtX3BsYXRmb3JtRHJhZ0Rh
dGEpCiAgICAgICAgIHJldHVybiBTVUNDRUVERUQobV9wbGF0Zm9ybURyYWdEYXRhLT5RdWVyeUdl
dERhdGEodXJsV0Zvcm1hdCgpKSkgCkBAIC0xMDEsNyArOTcsNyBAQCB2b2lkIERyYWdEYXRhOjpn
ZXREcmFnRmlsZUNvbnRlbnREYXRhKGludCBzaXplLCB2b2lkKiBkYXRhQmxvYikKICAgICAgICAg
Z2V0RmlsZUNvbnRlbnREYXRhKG1fcGxhdGZvcm1EcmFnRGF0YSwgc2l6ZSwgZGF0YUJsb2IpOwog
fQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiwgRmlsZW5hbWVDb252ZXJzaW9uUG9s
aWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAorU3RyaW5nIERyYWdEYXRh
Ojphc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyog
dGl0bGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChtX3BsYXRmb3JtRHJhZ0RhdGEpID8gZ2V0VVJM
KG1fcGxhdGZvcm1EcmFnRGF0YSwgZmlsZW5hbWVQb2xpY3ksIHRpdGxlKSA6IGdldFVSTCgmbV9k
cmFnRGF0YU1hcCwgZmlsZW5hbWVQb2xpY3ksIHRpdGxlKTsKIH0KQEAgLTE4MSw3ICsxNzcsNyBA
QCBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
ZHJhZ0RhdGFNYXAuY29udGFpbnMocGxhaW5UZXh0V0Zvcm1hdCgpLT5jZkZvcm1hdCkgfHwgbV9k
cmFnRGF0YU1hcC5jb250YWlucyhwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpOwogfQogCi1T
dHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KEZyYW1lKikgY29uc3QKK1N0cmluZyBEcmFnRGF0
YTo6YXNQbGFpblRleHQoKSBjb25zdAogewogICAgIHJldHVybiAobV9wbGF0Zm9ybURyYWdEYXRh
KSA/IGdldFBsYWluVGV4dChtX3BsYXRmb3JtRHJhZ0RhdGEpIDogZ2V0UGxhaW5UZXh0KCZtX2Ry
YWdEYXRhTWFwKTsKIH0KQEAgLTIwMCw0OCArMTk2LDEyIEBAIGJvb2wgRHJhZ0RhdGE6OmNhblNt
YXJ0UmVwbGFjZSgpIGNvbnN0CiAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNv
bnRlbnQoKSBjb25zdAogewotICAgIHJldHVybiBjb250YWluc1BsYWluVGV4dCgpIHx8IGNvbnRh
aW5zVVJMKDApIAorICAgIHJldHVybiBjb250YWluc1BsYWluVGV4dCgpIHx8IGNvbnRhaW5zVVJM
KCkKICAgICAgICAgfHwgKChtX3BsYXRmb3JtRHJhZ0RhdGEpID8gKGNvbnRhaW5zSFRNTChtX3Bs
YXRmb3JtRHJhZ0RhdGEpIHx8IGNvbnRhaW5zRmlsZW5hbWVzKG1fcGxhdGZvcm1EcmFnRGF0YSkp
CiAgICAgICAgICAgICA6IChjb250YWluc0hUTUwoJm1fZHJhZ0RhdGFNYXApIHx8IGNvbnRhaW5z
RmlsZW5hbWVzKCZtX2RyYWdEYXRhTWFwKSkpCiAgICAgICAgIHx8IGNvbnRhaW5zQ29sb3IoKTsK
IH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnRGF0YTo6YXNGcmFnbWVudChG
cmFtZSogZnJhbWUsIFJhbmdlJiwgYm9vbCwgYm9vbCYpIGNvbnN0Ci17ICAgICAKLSAgICAvKgot
ICAgICAqIE9yZGVyIGlzIHJpY2hlc3QgZm9ybWF0IGZpcnN0LiBPbiBPU1ggdGhpcyBpczoKLSAg
ICAgKiAqIFdlYiBBcmNoaXZlCi0gICAgICogKiBGaWxlbmFtZXMKLSAgICAgKiAqIEhUTUwKLSAg
ICAgKiAqIFJURgotICAgICAqICogVElGRgotICAgICAqICogUElDVAotICAgICAqLwotICAgICAK
LSAgICBpZiAobV9wbGF0Zm9ybURyYWdEYXRhKSB7Ci0gICAgICAgIGlmIChjb250YWluc0ZpbGVu
YW1lcyhtX3BsYXRmb3JtRHJhZ0RhdGEpKSB7Ci0gICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhmcmFtZS0+
ZG9jdW1lbnQoKSwgbV9wbGF0Zm9ybURyYWdEYXRhKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZnJhZ21lbnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29udGFpbnNIVE1MKG1fcGxhdGZv
cm1EcmFnRGF0YSkpIHsKLSAgICAgICAgICAgIGlmIChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tSFRNTChmcmFtZS0+ZG9jdW1lbnQoKSwgbV9wbGF0
Zm9ybURyYWdEYXRhKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoY29udGFpbnNGaWxlbmFtZXMoJm1fZHJhZ0Rh
dGFNYXApKSB7Ci0gICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhmcmFtZS0+ZG9jdW1lbnQoKSwgJm1fZHJh
Z0RhdGFNYXApKQotICAgICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChjb250YWluc0hUTUwoJm1fZHJhZ0RhdGFNYXApKSB7Ci0gICAgICAgICAg
ICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJv
bUhUTUwoZnJhbWUtPmRvY3VtZW50KCksICZtX2RyYWdEYXRhTWFwKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZnJhZ21lbnQ7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0K
IENvbG9yIERyYWdEYXRhOjphc0NvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gQ29sb3IoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhYTViZjUxLi4xNjMzOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDktMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIERyYWdEYXRhIHNob3VsZCBub3QgZGVwZW5kIG9uIENsaXBib2FyZCwgRG9j
dW1lbnRGcmFnbWVudCwgYW5kIERvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKTogVXBkYXRl
IHRvIEFQSQorICAgICAgICBjaGFuZ2UgaW4gRHJhZ0RhdGE6OmFzVVJMKCkuCisKIDIwMTQtMDkt
MTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgTm9k
ZTo6Y2hpbGROb2RlQ291bnQoKSB0byBjb3VudENoaWxkTm9kZXMoKSBhbmQgYXZvaWQgaW5lZmZp
Y2llbnQgdXNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCA0ZmI3MTQwLi5lYzA0M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMTM2OSw3ICsxMzY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWcKICAg
ICBVTlVTRURfUEFSQU0oc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKTsKIAotICAgIFN0cmluZyB1cmwgPSBkcmFnRGF0
YS5hc1VSTChudWxscHRyKTsKKyAgICBTdHJpbmcgdXJsID0gZHJhZ0RhdGEuYXNVUkwoKTsKICAg
ICBpZiAoIXVybC5pc0VtcHR5KCkpCiAgICAgICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vz
c1RvQmFzZVVSTCh1cmwpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEpLCBtX3BhZ2VJRCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238158</attachid>
            <date>2014-09-16 01:28:56 -0700</date>
            <delta_ts>2014-09-16 08:14:35 -0700</delta_ts>
            <desc>Try to fix windows build</desc>
            <filename>wcore-drag-data-violations.diff</filename>
            <type>text/plain</type>
            <size>30321</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYTcxNmQwLi4zNGJhMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTQtMDktMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIERyYWdEYXRhIHNob3VsZCBub3QgZGVwZW5kIG9uIENsaXBib2FyZCwgRG9j
dW1lbnRGcmFnbWVudCwgYW5kIERvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIFJlZmFjdG9yIERyYWdEYXRhIHRvIG5vdCBkZXBlbmQgb24gRnJhbWUs
IERvY3VtZW50RnJhZ21lbnQsCisgICAgICAgIERvY3VtZW50IGFuZCBSYW5nZS4gRHJhZ0RhdGE6
OmFzRnJhZ21lbnQoKSBoYXMgYmVlbiBtb3ZlZCB0bworICAgICAgICBEcmFnQ29udHJvbGxlciBh
bmQgaW1wbGVtZW50ZWQgaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGUuCisgICAgICAgIERy
YWdEYXRhIG1ldGhvZHMgdXNpbmcgRnJhbWUgaGFzIGJlZW4gcmV3b3JrZWQgaW4gTWFjIHRvIG5v
dCB1c2UKKyAgICAgICAgRnJhbWUsIHNpbmNlIGFsbCBvdGhlciBwb3J0cyB3ZXJlIGlnbm9yZWlu
ZyB0aGUgZnJhbWUgcGFyYW1ldGVyLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9jdW1lbnRGcmFnbWVudEZy
b21EcmFnRGF0YSk6IE1ha2UgaXQKKyAgICAgICAgYSBzdGF0aWMgbWVtYmVyIHRvIGJlIGFibGUg
dG8gdXNlIGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKCkuCisgICAgICAgIChXZWJDb3JlOjpE
cmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24pOiBVcGRhdGUgdG8KKyAgICAgICAg
RHJhZ0RhdGEgQVBJIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL2VmbC9EcmFnQ29udHJvbGxlckVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9t
RHJhZ0RhdGEpOiBNb3ZlCisgICAgICAgIERyYWdEYXRhOjphc0ZyYWdtZW50KCkgaW1wbGVtZW50
YXRpb24gaGVyZS4KKyAgICAgICAgKiBwYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEpOiBE
aXR0by4KKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRvLgor
ICAgICAgICAqIHBhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL0Ry
YWdEYXRhRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1BsYWluVGV4dCk6
IFJlbW92ZSBGcmFtZSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29u
dGFpbnNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6YXNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojphc0ZyYWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBTYW1lIGlt
cGxlbWVudGF0aW9uIGFzIHRoZQorICAgICAgICBFZGl0b3IuCisgICAgICAgIChXZWJDb3JlOjpE
cmFnRGF0YTo6Y29udGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKTogVXNlIFVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoKSBp
bnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIHRoZSBFZGl0b3IgY2xpZW50LgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9EcmFnRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFp
bnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6OmFzVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRl
eHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbXBhdGli
bGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc0ZyYWdtZW50KTogRGVs
ZXRlZC4KKwogMjAxNC0wOS0xNSAgSWFnbyBUb3JhbCAgPGl0b3JhbEBpZ2FsaWEuY29tPiBhbmQg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRk
IFdheWxhbmREaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4
IDJmZTAyNzEuLmZjODkxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CkBAIC0xMTQsMjUgKzExNCwyNSBAQCBEcmFnQ29udHJvbGxlcjo6fkRyYWdDb250cm9sbGVyKCkK
ICAgICBtX2NsaWVudC5kcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwogfQogCi1zdGF0aWMgUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERy
YWdEYXRhJiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1lLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxv
d1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpCitQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IERyYWdDb250cm9sbGVyOjpkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdE
YXRhJiBkcmFnRGF0YSwgRnJhbWUmIGZyYW1lLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1Bs
YWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpCiB7CiAgICAgY2hvc2VQbGFpblRleHQgPSBm
YWxzZTsKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGNvbnRleHQub3duZXJEb2N1bWVudCgp
OwogICAgIGlmIChkcmFnRGF0YS5jb250YWluc0NvbXBhdGlibGVDb250ZW50KCkpIHsKLSAgICAg
ICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkcmFnRGF0YS5h
c0ZyYWdtZW50KGZyYW1lLCBjb250ZXh0LCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQp
KQorICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKGRyYWdEYXRhLCBmcmFtZSwgY29udGV4dCwgYWxsb3dQ
bGFpblRleHQsIGNob3NlUGxhaW5UZXh0KSkKICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsK
IAotICAgICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNVUkwoZnJhbWUsIERyYWdEYXRhOjpEb05v
dENvbnZlcnRGaWxlbmFtZXMpKSB7CisgICAgICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTChE
cmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzKSkgewogICAgICAgICAgICAgU3RyaW5nIHRp
dGxlOwotICAgICAgICAgICAgU3RyaW5nIHVybCA9IGRyYWdEYXRhLmFzVVJMKGZyYW1lLCBEcmFn
RGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCAmdGl0bGUpOworICAgICAgICAgICAgU3RyaW5n
IHVybCA9IGRyYWdEYXRhLmFzVVJMKERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMsICZ0
aXRsZSk7CiAgICAgICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICBSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvciA9IEhUTUxBbmNob3JFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgIGFuY2hvci0+c2V0SHJlZih1cmwpOwog
ICAgICAgICAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gVHJ5IHRoZSBwbGFpbiB0ZXh0IGZpcnN0IGJlY2F1c2UgdGhlIHVybCBtaWdodCBiZSBu
b3JtYWxpemVkIG9yIGVzY2FwZWQuCiAgICAgICAgICAgICAgICAgICAgIGlmIChkcmFnRGF0YS5j
b250YWluc1BsYWluVGV4dCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSBkcmFn
RGF0YS5hc1BsYWluVGV4dChmcmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9
IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHVybDsKICAgICAgICAg
ICAgICAgICB9CkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShEcmFnRGF0YSYgZHJhZ0QKICAg
ICB9CiAgICAgaWYgKGFsbG93UGxhaW5UZXh0ICYmIGRyYWdEYXRhLmNvbnRhaW5zUGxhaW5UZXh0
KCkpIHsKICAgICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3Jl
YXRlRnJhZ21lbnRGcm9tVGV4dChjb250ZXh0LCBkcmFnRGF0YS5hc1BsYWluVGV4dChmcmFtZSkp
LmdldCgpOworICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb250ZXh0LCBk
cmFnRGF0YS5hc1BsYWluVGV4dCgpKS5nZXQoKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAg
LTIzNCw3ICsyMzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlv
bihEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fY2xp
ZW50LndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlv
bkxvYWQsIGRyYWdEYXRhKTsKLSAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZChG
cmFtZUxvYWRSZXF1ZXN0KCZtX3BhZ2UubWFpbkZyYW1lKCksIFJlc291cmNlUmVxdWVzdChkcmFn
RGF0YS5hc1VSTCgmbV9wYWdlLm1haW5GcmFtZSgpKSkpKTsKKyAgICBtX3BhZ2UubWFpbkZyYW1l
KCkubG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KCZtX3BhZ2UubWFpbkZyYW1lKCksIFJl
c291cmNlUmVxdWVzdChkcmFnRGF0YS5hc1VSTCgpKSkpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC00MjUsNyArNDI1LDcgQEAgc3RhdGljIGJvb2wgc2V0U2VsZWN0aW9uVG9EcmFnQ2FyZXQo
RnJhbWUqIGZyYW1lLCBWaXNpYmxlU2VsZWN0aW9uJiBkcmFnQ2FyZXQsIFIKIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IoRnJhbWUqIGlubmVyRnJhbWUsIERy
YWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBBU1NFUlQobV9wYWdlLmRyYWdDYXJldENvbnRyb2xs
ZXIoKS5oYXNDYXJldCgpKTsKLSAgICBTdHJpbmcgdGV4dCA9IG1fcGFnZS5kcmFnQ2FyZXRDb250
cm9sbGVyKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSA/IGVtcHR5U3RyaW5nKCkgOiBkcmFn
RGF0YS5hc1BsYWluVGV4dChpbm5lckZyYW1lKTsKKyAgICBTdHJpbmcgdGV4dCA9IG1fcGFnZS5k
cmFnQ2FyZXRDb250cm9sbGVyKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSA/IGVtcHR5U3Ry
aW5nKCkgOiBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgIE5vZGUqIHRhcmdldCA9IGlubmVy
RnJhbWUtPmVkaXRvcigpLmZpbmRFdmVudFRhcmdldEZyb20obV9wYWdlLmRyYWdDYXJldENvbnRy
b2xsZXIoKS5jYXJldFBvc2l0aW9uKCkpOwogICAgIHJldHVybiB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpLCB0ZXh0KSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CkBAIC00OTQsNyArNDk0LDcgQEAg
Ym9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhEcmFnRGF0YSYgZHJhZ0RhdGEp
CiAgICAgUmVzb3VyY2VDYWNoZVZhbGlkYXRpb25TdXBwcmVzc29yIHZhbGlkYXRpb25TdXBwcmVz
c29yKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICBpZiAoZHJhZ0lzTW92ZShpbm5lckZyYW1l
LT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpIHx8IGRyYWdDYXJldC5pc0NvbnRlbnRSaWNobHlFZGl0
YWJsZSgpKSB7CiAgICAgICAgIGJvb2wgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKLSAgICAgICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnRGcmFnbWVudEZyb21E
cmFnRGF0YShkcmFnRGF0YSwgaW5uZXJGcmFtZS5nZXQoKSwgKnJhbmdlLCB0cnVlLCBjaG9zZVBs
YWluVGV4dCk7CisgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRv
Y3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEoZHJhZ0RhdGEsICppbm5lckZyYW1lLCAqcmFuZ2Us
IHRydWUsIGNob3NlUGxhaW5UZXh0KTsKICAgICAgICAgaWYgKCFmcmFnbWVudCB8fCAhaW5uZXJG
cmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0
b3JJbnNlcnRBY3Rpb25Ecm9wcGVkKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CkBAIC01MTcsNyArNTE3LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVF
ZGl0RHJhZyhEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgdGV4dCA9IGRyYWdEYXRhLmFzUGxhaW5UZXh0KGlu
bmVyRnJhbWUuZ2V0KCkpOworICAgICAgICBTdHJpbmcgdGV4dCA9IGRyYWdEYXRhLmFzUGxhaW5U
ZXh0KCk7CiAgICAgICAgIGlmICh0ZXh0LmlzRW1wdHkoKSB8fCAhaW5uZXJGcmFtZS0+ZWRpdG9y
KCkuc2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9u
RHJvcHBlZCkpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IDI1YTYxNmYuLjdlZWIxNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgY2xhc3MgRGF0YVRyYW5zZmVyOwogICAgIGNsYXNzIERvY3VtZW50Owor
ICAgIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiAgICAgY2xhc3MgRHJhZ0NsaWVudDsKICAgICBj
bGFzcyBEcmFnRGF0YTsKICAgICBjbGFzcyBFbGVtZW50OwpAQCAtNDQsNiArNDUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBQYWdlOwogICAg
IGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKKyAgICBjbGFzcyBSYW5nZTsKIAogICAgIHN0cnVj
dCBEcmFnU3RhdGU7CiAKQEAgLTExMyw2ICsxMTUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIGNsZWFudXBBZnRlclN5c3RlbURyYWcoKTsKICAgICAgICAgdm9pZCBkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0YVRyYW5zZmVyJiwgRWxlbWVudCYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgbGFiZWwpOwogCisgICAgICAgIC8vIEZJWE1FOiBNb3ZlIGNyZWF0ZUZy
YWdtZW50RnJvbURyYWdEYXRhIGltcGxlbWVudGF0aW9uIHRvIHRoZSBFZGl0b3IgYW5kIG1ha2Ug
ZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YSBhIHN0YXRpYyBmdW5jdGlvbiBhZ2Fpbi4KKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVu
dEZyb21EcmFnRGF0YShEcmFnRGF0YSYsIEZyYW1lJiwgUmFuZ2UmLCBib29sIGFsbG93UGxhaW5U
ZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiwgRnJh
bWUmLCBSYW5nZSYsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KTsK
KwogICAgICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgICAgIERyYWdDbGllbnQmIG1fY2xpZW50Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVmbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVmbC5jcHAKaW5kZXgg
OWRiMzg2OC4uMzYxNTU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJh
Z0NvbnRyb2xsZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250
cm9sbGVyRWZsLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC01MCw3ICs1Miw3IEBAIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oRHJhZ0RhdGEmKQogCiBEcmFnT3BlcmF0aW9u
IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAg
ICBpZiAoZHJhZ0RhdGEuY29udGFpbnNVUkwoMCkpCisgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5z
VVJMKCkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKIAogICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uTm9uZTsKQEAgLTcxLDQgKzczLDkgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYsIEVsZW1lbnQmLCBjb25zdCBV
UkwKIHsKIH0KIAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6
Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmLCBGcmFtZSYsIFJhbmdlJiwgYm9v
bCAvKmFsbG93UGxhaW5UZXh0Ki8sIGJvb2wmIC8qY2hvc2VQbGFpblRleHQqLykKK3sKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9n
dGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0Nv
bnRyb2xsZXJHdGsuY3BwCmluZGV4IDU0ZmM4ZTYuLjE3MmM1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKQEAgLTI2LDEzICsyNiwxNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAKKyNpbmNs
dWRlICJEYXRhT2JqZWN0R3RrLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVyLmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAi
RHJhZ0RhdGEuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFzdGVi
b2FyZC5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTUzLDcgKzU3LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihEcmFnRGF0
YSYpCiBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKERyYWdEYXRh
JiBkcmFnRGF0YSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBpcyBpbmNvbXBsZXRlCi0g
ICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKDApKQorICAgIGlmIChkcmFnRGF0YS5jb250YWlu
c1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAKICAgICByZXR1cm4g
RHJhZ09wZXJhdGlvbk5vbmU7CkBAIC03NCw0ICs3OCwxMiBAQCB2b2lkIERyYWdDb250cm9sbGVy
OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEVs
ZW1lbgogICAgIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkud3JpdGVJbWFnZShlbGVtZW50LCB1
cmwsIGxhYmVsKTsKIH0KIAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnQ29udHJv
bGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdEYXRhLCBGcmFt
ZSYgZnJhbWUsIFJhbmdlJiwgYm9vbCAvKmFsbG93UGxhaW5UZXh0Ki8sIGJvb2wmIC8qY2hvc2VQ
bGFpblRleHQqLykKK3sKKyAgICBpZiAoIWRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpLT5oYXNNYXJr
dXAoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBkcmFn
RGF0YS5wbGF0Zm9ybURhdGEoKS0+bWFya3VwKCksICIiKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCA5NGFmYTFjLi45N2E2YWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQpAQCAt
MjksMTMgKzI5LDE4IEBACiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogI2ltcG9ydCAiRGF0
YVRyYW5zZmVyLmgiCisjaW1wb3J0ICJEb2N1bWVudC5oIgorI2ltcG9ydCAiRG9jdW1lbnRGcmFn
bWVudC5oIgogI2ltcG9ydCAiRHJhZ0NsaWVudC5oIgogI2ltcG9ydCAiRHJhZ0RhdGEuaCIKKyNp
bXBvcnQgIkVkaXRvci5oIgorI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCiAjaW1wb3J0ICJFbGVt
ZW50LmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIk1haW5GcmFtZS5oIgogI2lt
cG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgorI2ltcG9ydCAiUmFuZ2UuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1OSw3IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OmlzQ29weUtleURvd24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIAogRHJhZ09wZXJh
dGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7
Ci0gICAgaWYgKChkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCkgfHwg
IWRyYWdEYXRhLmNvbnRhaW5zVVJMKCZtX3BhZ2UubWFpbkZyYW1lKCkpKQorICAgIGlmICgoZHJh
Z0RhdGEuZmxhZ3MoKSAmIERyYWdBcHBsaWNhdGlvbklzTW9kYWwpIHx8ICFkcmFnRGF0YS5jb250
YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CiAKICAgICBpZiAo
IW1fZG9jdW1lbnRVbmRlck1vdXNlIHx8ICghKGRyYWdEYXRhLmZsYWdzKCkgJiAoRHJhZ0FwcGxp
Y2F0aW9uSGFzQXR0YWNoZWRTaGVldCB8IERyYWdBcHBsaWNhdGlvbklzU291cmNlKSkpKQpAQCAt
ODcsNiArOTIsMTIgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBFbGVtZW4KICAgICBtX2NsaWVudC5kZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5uYW1lKCksIGVs
ZW1lbnQsIHVybCwgbGFiZWwsIGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKTsKIH0KIAorUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRG
cm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdEYXRhLCBGcmFtZSYgZnJhbWUsIFJhbmdlJiBjb250
ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKK3sKKyAgICBQ
YXN0ZWJvYXJkIHBhc3RlYm9hcmQoZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSk7CisgICAgcmV0
dXJuIGZyYW1lLmVkaXRvcigpLndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCBj
b250ZXh0LCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCmluZGV4IGQxOWNhODguLmZi
NDYzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVy
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5j
cHAKQEAgLTI2LDkgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJh
Z0NvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGllc1dpbi5oIgogI2lu
Y2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIK
ICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCkBAIC01MCw3ICs1
NCw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogICAgIC8vaWYgd2UgYXJlIGEgbW9kYWwgd2luZG93LCB3ZSBhcmUgdGhl
IGRyYWcgc291cmNlLCBvciB0aGUgd2luZG93IGlzIGFuIGF0dGFjaGVkIHNoZWV0CiAgICAgLy9J
ZiB0aGlzIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gd2l0aGluIFdlYkNvcmUgb3BlcmF0aW9uRm9y
RHJhZyBjYW4gYmUgcHVsbGVkIGludG8gCiAgICAgLy9XZWJDb3JlIGl0c2VsZgotICAgIHJldHVy
biBkcmFnRGF0YS5jb250YWluc1VSTCgwKSAmJiAhbV9kaWRJbml0aWF0ZURyYWcgPyBEcmFnT3Bl
cmF0aW9uQ29weSA6IERyYWdPcGVyYXRpb25Ob25lOworICAgIHJldHVybiBkcmFnRGF0YS5jb250
YWluc1VSTCgpICYmICFtX2RpZEluaXRpYXRlRHJhZyA/IERyYWdPcGVyYXRpb25Db3B5IDogRHJh
Z09wZXJhdGlvbk5vbmU7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24o
RHJhZ0RhdGEmKQpAQCAtODMsNCArODcsMjcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBFbGVtZW4KICAg
ICBwYXN0ZWJvYXJkLndyaXRlTWFya3VwKGNyZWF0ZU1hcmt1cChlbGVtZW50LCBJbmNsdWRlTm9k
ZSwgMCwgUmVzb2x2ZUFsbFVSTHMpKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFBsYXRmb3Jt
RHJhZ0RhdGE+CitzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZyb21QbGF0Zm9ybURhdGEoY29uc3QgUGxhdGZvcm1EcmFnRGF0YSogcGxhdGZvcm1EcmFn
RGF0YSwgRnJhbWUmIGZyYW1lKQoreworICAgIGlmIChjb250YWluc0ZpbGVuYW1lcyhwbGF0Zm9y
bURyYWdEYXRhKSkgeworICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBm
cmFnbWVudCA9IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhmcmFtZS5kb2N1bWVudCgpLCBwbGF0Zm9y
bURyYWdEYXRhKSkKKyAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKKyAgICB9CisKKyAgICBp
ZiAoY29udGFpbnNIVE1MKHBsYXRmb3JtRHJhZ0RhdGEpKSB7CisgICAgICAgIGlmIChQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tSFRNTChmcmFtZS5k
b2N1bWVudCgpLCBwbGF0Zm9ybURyYWdEYXRhKSkKKyAgICAgICAgICAgIHJldHVybiBmcmFnbWVu
dDsKKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Bhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gRHJhZ0NvbnRyb2xsZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdE
YXRhJiBkcmFnRGF0YSwgRnJhbWUmIGZyYW1lLCBSYW5nZSYsIGJvb2wgLyphbGxvd1BsYWluVGV4
dCovLCBib29sJiAvKmNob3NlUGxhaW5UZXh0Ki8pCit7CisgICAgaWYgKERyYWdEYXRhUmVmIHBs
YXRmb3JtRHJhZ0RhdGEgPSBkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSkKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZUZyYWdtZW50RnJvbVBsYXRmb3JtRGF0YShwbGF0Zm9ybURyYWdEYXRhLCBmcmFtZSk7
CisKKyAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tUGxhdGZvcm1EYXRhKCZkcmFnRGF0YS5k
cmFnRGF0YU1hcCgpLCBmcmFtZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
CmluZGV4IDg4MDEyNmQuLjU2YjExOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApA
QCAtNjAsMTAgKzYwLDcgQEAgdHlwZWRlZiB2b2lkKiBEcmFnRGF0YVJlZjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBGcmFtZTsKLWNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFz
cyBVUkw7Ci1jbGFzcyBSYW5nZTsKIAogZW51bSBEcmFnQXBwbGljYXRpb25GbGFncyB7CiAgICAg
RHJhZ0FwcGxpY2F0aW9uTm9uZSA9IDAsCkBAIC05NSwxNCArOTIsMTMgQEAgcHVibGljOgogICAg
IERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlv
bkZsYWdzOyB9CiAgICAgRHJhZ0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybURyYWdEYXRhOyB9CiAgICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
azsgfQotICAgIGJvb2wgY29udGFpbnNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xp
Y3kgZmlsZW5hbWVQb2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVzKSBjb25zdDsKKyAgICBib29sIGNv
bnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMpIGNv
bnN0OwogICAgIGJvb2wgY29udGFpbnNQbGFpblRleHQoKSBjb25zdDsKICAgICBib29sIGNvbnRh
aW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdDsKLSAgICBTdHJpbmcgYXNVUkwoRnJhbWUqLCBG
aWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVz
LCBTdHJpbmcqIHRpdGxlID0gMCkgY29uc3Q7Ci0gICAgU3RyaW5nIGFzUGxhaW5UZXh0KEZyYW1l
KikgY29uc3Q7CisgICAgU3RyaW5nIGFzVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSA9IENv
bnZlcnRGaWxlbmFtZXMsIFN0cmluZyogdGl0bGUgPSBudWxscHRyKSBjb25zdDsKKyAgICBTdHJp
bmcgYXNQbGFpblRleHQoKSBjb25zdDsKICAgICB2b2lkIGFzRmlsZW5hbWVzKFZlY3RvcjxTdHJp
bmc+JikgY29uc3Q7CiAgICAgQ29sb3IgYXNDb2xvcigpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gYXNGcmFnbWVudChGcmFtZSosIFJhbmdlJiBjb250ZXh0LCBib29s
IGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkgY29uc3Q7CiAgICAgYm9vbCBj
YW5TbWFydFJlcGxhY2UoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29sb3IoKSBjb25zdDsK
ICAgICBib29sIGNvbnRhaW5zRmlsZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvRHJhZ0RhdGFFZmwuY3BwCmluZGV4IGRjYzhlZmIuLjAwMmE3OTBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKQEAgLTIxLDggKzIxLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogCi0jaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNyArNTQs
NyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KEZyYW1lKikgY29uc3QK
K1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogewogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KQEAgLTcwLDE5ICs2OSwxNCBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBh
dGlibGVDb250ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRHJhZ0Rh
dGE6OmNvbnRhaW5zVVJMKEZyYW1lKiwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5KSBjb25zdAor
Ym9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5KSBjb25z
dAogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFt
ZSosIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKikgY29uc3QKK1N0cmluZyBEcmFn
RGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqKSBjb25zdAogewog
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBE
cmFnRGF0YTo6YXNGcmFnbWVudChGcmFtZSosIFJhbmdlJiwgYm9vbCwgYm9vbCYpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJh
Z0RhdGFHdGsuY3BwCmluZGV4IDJiZjM0ZGYuLjU5OGM0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcApAQCAtMTgsMTAgKzE4LDYgQEAKICNpbmNsdWRl
ICJEcmFnRGF0YS5oIgogCiAjaW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgotI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIkZyYW1l
LmgiCi0jaW5jbHVkZSAibWFya3VwLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUs
NyArNTEsNyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVGV4dCgpOwogfQogCi1TdHJpbmcgRHJhZ0Rh
dGE6OmFzUGxhaW5UZXh0KEZyYW1lKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRl
eHQoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGEtPnRleHQoKTsKIH0K
QEAgLTY3LDE1ICs2MywxNSBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAKIGJv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewotICAgIHJl
dHVybiBjb250YWluc1BsYWluVGV4dCgpIHx8IGNvbnRhaW5zVVJMKDApIHx8IG1fcGxhdGZvcm1E
cmFnRGF0YS0+aGFzTWFya3VwKCkgfHwgY29udGFpbnNDb2xvcigpIHx8IGNvbnRhaW5zRmlsZXMo
KTsKKyAgICByZXR1cm4gY29udGFpbnNQbGFpblRleHQoKSB8fCBjb250YWluc1VSTCgpIHx8IG1f
cGxhdGZvcm1EcmFnRGF0YS0+aGFzTWFya3VwKCkgfHwgY29udGFpbnNDb2xvcigpIHx8IGNvbnRh
aW5zRmlsZXMoKTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRnJhbWUqIGZyYW1l
LCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0Citib29sIERy
YWdEYXRhOjpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xp
Y3kpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFhc1VSTChmcmFtZSwgZmlsZW5hbWVQb2xpY3kpLmlz
RW1wdHkoKTsKKyAgICByZXR1cm4gIWFzVVJMKGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CiB9
CiAKLVN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xp
Y3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6
OmFzVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0
aXRsZSkgY29uc3QKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVVJMKCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTkxLDE2ICs4Nyw0IEBAIFN0cmluZyBEcmFnRGF0
YTo6YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ks
IFN0cmluZyoKICAgICByZXR1cm4gdXJsOwogfQogCi0KLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gRHJhZ0RhdGE6OmFzRnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wsIGJv
b2wmKSBjb25zdAotewotICAgIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNNYXJrdXAoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21N
YXJrdXAoKmZyYW1lLT5kb2N1bWVudCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEtPm1hcmt1cCgpLCAi
Iik7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
RGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpp
bmRleCBkNTJhNGVhLi45Y2IyMDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Ry
YWdEYXRhTWFjLm1tCkBAIC0yNywxOCArMjcsMTEgQEAKICNpbXBvcnQgIkRyYWdEYXRhLmgiCiAK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQg
IkRvY3VtZW50RnJhZ21lbnQuaCIKLSNpbXBvcnQgIkRPTURvY3VtZW50RnJhZ21lbnQuaCIKLSNp
bXBvcnQgIkRPTURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oIgotI2ltcG9ydCAiRWRpdG9yLmgi
Ci0jaW1wb3J0ICJFZGl0b3JDbGllbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJQYXN0
ZWJvYXJkU3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2ltcG9y
dCAiUmFuZ2UuaCIKKyNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTEwNyw5ICsxMDAsMjAgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNQ
bGFpblRleHQoKSBjb25zdAogICAgICAgICB8fCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVi
b2FyZFN0cmF0ZWd5KCktPnN0cmluZ0ZvclR5cGUoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSksIG1f
cGFzdGVib2FyZE5hbWUpLmxlbmd0aCgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5U
ZXh0KEZyYW1lICpmcmFtZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBj
b25zdAogewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkucmVhZFBsYWluVGV4dEZyb21QYXN0
ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVhdGUobV9wYXN0ZWJvYXJkTmFtZSkpOworICAgIFBhc3Rl
Ym9hcmQgcGFzdGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBQYXN0ZWJvYXJkUGxhaW5U
ZXh0IHRleHQ7CisgICAgcGFzdGVib2FyZC5yZWFkKHRleHQpOworICAgIFN0cmluZyBzdHJpbmcg
PSB0ZXh0LnRleHQ7CisKKyAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhpcyBpcyAxMDAl
IGNvcnJlY3Qgc2luY2Ugd2Uga25vdyAtW05TVVJMIFVSTFdpdGhTdHJpbmc6XSBkb2VzIG5vdCBo
YW5kbGUKKyAgICAvLyBhbGwgdGhlIHNhbWUgY2FzZXMgd2UgaGFuZGxlIHdlbGwgaW4gdGhlIFVS
TCBjb2RlIGZvciBjcmVhdGluZyBhbiBOU1VSTC4KKyAgICBpZiAodGV4dC5pc1VSTCkKKyAgICAg
ICAgcmV0dXJuIHVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10p
OworCisgICAgLy8gRklYTUU6IFdURiBzaG91bGQgb2ZmZXIgYSBub24tTWFjLXNwZWNpZmljIHdh
eSB0byBjb252ZXJ0IHN0cmluZyB0byBwcmVjb21wb3NlZCBmb3JtIHNvIHdlIGNhbiBkbyBpdCBm
b3IgYWxsIHBsYXRmb3Jtcy4KKyAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21w
b3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKIH0KIAogQ29sb3IgRHJhZ0RhdGE6OmFz
Q29sb3IoKSBjb25zdApAQCAtMTM0LDEyICsxMzgsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFp
bnNDb21wYXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFN0
cmluZyhrVVRUeXBlUE5HKSk7CiB9CiAgICAgCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTChG
cmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29u
c3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBm
aWxlbmFtZVBvbGljeSkgY29uc3QKIHsKLSAgICByZXR1cm4gIWFzVVJMKGZyYW1lLCBmaWxlbmFt
ZVBvbGljeSkuaXNFbXB0eSgpOworICAgIHJldHVybiAhYXNVUkwoZmlsZW5hbWVQb2xpY3kpLmlz
RW1wdHkoKTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVu
YW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0
YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiBVc2UgZmlsZW5hbWVQb2xpY3kuCiAKQEAgLTE1MSwxNyArMTU1LDEz
IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNp
b25Qb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvCiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gdHlw
ZXM7CiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRU
eXBlcyh0eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgCi0gICAgLy8gRklYTUU6IHVzaW5n
IHRoZSBlZGl0b3JDbGllbnQgdG8gY2FsbCBpbnRvIFdlYktpdCwgZm9yIG5vdywgc2luY2UgCi0g
ICAgLy8gY2FsbGluZyB3ZWJraXRfY2Fub25pY2FsaXplIGZyb20gV2ViQ29yZSBpbnZvbHZlcyBt
aWdyYXRpbmcgYSBzaXphYmxlIGFtb3VudCBvZiAKLSAgICAvLyBoZWxwZXIgY29kZSB0aGF0IHNo
b3VsZCBlaXRoZXIgYmUgZG9uZSBpbiBhIHNlcGFyYXRlIHBhdGNoIG9yIGZpZ3VyZWQgb3V0IGlu
IGFub3RoZXIgd2F5LgotICAgIAorCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1VS
TFBib2FyZFR5cGUpKSkgewogICAgICAgICBOU1VSTCAqVVJMRnJvbVBhc3RlYm9hcmQgPSBbTlNV
UkwgVVJMV2l0aFN0cmluZzpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnN0cmluZ0ZvclR5cGUoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSksIG1fcGFzdGVib2FyZE5h
bWUpXTsKICAgICAgICAgTlNTdHJpbmcgKnNjaGVtZSA9IFtVUkxGcm9tUGFzdGVib2FyZCBzY2hl
bWVdOwogICAgICAgICAvLyBDYW5ub3QgZHJvcCBvdGhlciBzY2hlbWVzIHVubGVzcyA8cmRhcjov
L3Byb2JsZW0vMTA1NjI2NjI+IGFuZCA8cmRhcjovL3Byb2JsZW0vMTExODczMTU+IGFyZSBmaXhl
ZC4KICAgICAgICAgaWYgKFtzY2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cCJdIHx8IFtzY2hl
bWUgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cHMiXSkKLSAgICAgICAgICAgIHJldHVybiBbZnJhbWUt
PmVkaXRvcigpLmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFi
c29sdXRlU3RyaW5nXTsKKyAgICAgICAgICAgIHJldHVybiBbVVJMQnlDYW5vbmljYWxpemluZ1VS
TChVUkxGcm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOwogICAgIH0KICAgICAKICAgICBp
ZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKE5TU3RyaW5nUGJvYXJkVHlwZSkpKSB7CkBAIC0xNzEs
NyArMTcxLDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1l
Q29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY28KICAgICAgICAgLy8gVGhlIHJlc3Vs
dCBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5pdGlhdGUgbmF2aWdhdGlvbiwgc28gd2Ug
c2hvdWxkbid0IGFsbG93IGFyYml0cmFyeSBmaWxlIFVSTHMuCiAgICAgICAgIC8vIEZJWE1FOiBT
aG91bGQgd2UgYWxsb3cgb25seSBodHRwIGZhbWlseSBzY2hlbWVzLCBvciBhbnl0aGluZyBub24t
bG9jYWw/CiAgICAgICAgIGlmIChbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSB8fCBb
c2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHBzIl0pCi0gICAgICAgICAgICByZXR1cm4gW2Zy
YW1lLT5lZGl0b3IoKS5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFVSTEZyb21QYXN0ZWJvYXJk
KSBhYnNvbHV0ZVN0cmluZ107CisgICAgICAgICAgICByZXR1cm4gW1VSTEJ5Q2Fub25pY2FsaXpp
bmdVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKICAgICB9CiAgICAgCiAg
ICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU0ZpbGVuYW1lc1Bib2FyZFR5cGUpKSkgewpA
QCAtMTgxLDE5ICsxODEsMTMgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUs
IEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY28KICAgICAgICAgICAg
IEJPT0wgaXNEaXJlY3Rvcnk7CiAgICAgICAgICAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVzWzBdIGlzRGlyZWN0b3J5OiZpc0RpcmVj
dG9yeV0gJiYgaXNEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
ICAgICAgICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9uaWNhbGl6
ZVVSTChbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVzWzBdXSkgYWJzb2x1dGVTdHJpbmddOwor
ICAgICAgICAgICAgcmV0dXJuIFtVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKFtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6ZmlsZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgIH0KICAgICB9CiAg
ICAgCiAgICAgcmV0dXJuIFN0cmluZygpOyAgICAgICAgCiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gRHJhZ0RhdGE6OmFzRnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYgcmFu
Z2UsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KSBjb25zdAotewot
ICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICByZXR1cm4g
ZnJhbWUtPmVkaXRvcigpLndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCByYW5n
ZSwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsKLX0KLSAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5kZXgg
NDE3Y2UyZi4uYzJmMTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFz
cyBVUkw7CiAKIEhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBTdHJpbmcmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCmluZGV4IDVhN2Y3MzYuLjcw
MDU3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApA
QCAtMjksMTAgKzI5LDYgQEAKIAogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIkNsaXBi
b2FyZFV0aWxpdGllc1dpbi5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRG9jdW1l
bnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIk1hcmt1cC5oIgotI2luY2x1ZGUgIlJhbmdlLmgiCiAj
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8b2JqaWRsLmg+CiAjaW5jbHVkZSA8
c2hsd2FwaS5oPgpAQCAtNTYsNyArNTIsNyBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgRHJh
Z0RhdGFNYXAmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29ucwogewog
fQogCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGcmFtZSosIEZpbGVuYW1lQ29udmVyc2lv
blBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJM
KEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKICAgICBp
ZiAobV9wbGF0Zm9ybURyYWdEYXRhKQogICAgICAgICByZXR1cm4gU1VDQ0VFREVEKG1fcGxhdGZv
cm1EcmFnRGF0YS0+UXVlcnlHZXREYXRhKHVybFdGb3JtYXQoKSkpIApAQCAtMTAxLDcgKzk3LDcg
QEAgdm9pZCBEcmFnRGF0YTo6Z2V0RHJhZ0ZpbGVDb250ZW50RGF0YShpbnQgc2l6ZSwgdm9pZCog
ZGF0YUJsb2IpCiAgICAgICAgIGdldEZpbGVDb250ZW50RGF0YShtX3BsYXRmb3JtRHJhZ0RhdGEs
IHNpemUsIGRhdGFCbG9iKTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSosIEZp
bGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29u
c3QKK1N0cmluZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVu
YW1lUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIHJldHVybiAobV9wbGF0Zm9y
bURyYWdEYXRhKSA/IGdldFVSTChtX3BsYXRmb3JtRHJhZ0RhdGEsIGZpbGVuYW1lUG9saWN5LCB0
aXRsZSkgOiBnZXRVUkwoJm1fZHJhZ0RhdGFNYXAsIGZpbGVuYW1lUG9saWN5LCB0aXRsZSk7CiB9
CkBAIC0xODEsNyArMTc3LDcgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQoKSBj
b25zdAogICAgIHJldHVybiBtX2RyYWdEYXRhTWFwLmNvbnRhaW5zKHBsYWluVGV4dFdGb3JtYXQo
KS0+Y2ZGb3JtYXQpIHx8IG1fZHJhZ0RhdGFNYXAuY29udGFpbnMocGxhaW5UZXh0Rm9ybWF0KCkt
PmNmRm9ybWF0KTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dChGcmFtZSopIGNv
bnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4g
KG1fcGxhdGZvcm1EcmFnRGF0YSkgPyBnZXRQbGFpblRleHQobV9wbGF0Zm9ybURyYWdEYXRhKSA6
IGdldFBsYWluVGV4dCgmbV9kcmFnRGF0YU1hcCk7CiB9CkBAIC0yMDAsNDggKzE5NiwxMiBAQCBi
b29sIERyYWdEYXRhOjpjYW5TbWFydFJlcGxhY2UoKSBjb25zdAogCiBib29sIERyYWdEYXRhOjpj
b250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29udGFpbnNQ
bGFpblRleHQoKSB8fCBjb250YWluc1VSTCgwKSAKKyAgICByZXR1cm4gY29udGFpbnNQbGFpblRl
eHQoKSB8fCBjb250YWluc1VSTCgpCiAgICAgICAgIHx8ICgobV9wbGF0Zm9ybURyYWdEYXRhKSA/
IChjb250YWluc0hUTUwobV9wbGF0Zm9ybURyYWdEYXRhKSB8fCBjb250YWluc0ZpbGVuYW1lcyht
X3BsYXRmb3JtRHJhZ0RhdGEpKQogICAgICAgICAgICAgOiAoY29udGFpbnNIVE1MKCZtX2RyYWdE
YXRhTWFwKSB8fCBjb250YWluc0ZpbGVuYW1lcygmbV9kcmFnRGF0YU1hcCkpKQogICAgICAgICB8
fCBjb250YWluc0NvbG9yKCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJh
Z0RhdGE6OmFzRnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wsIGJvb2wmKSBjb25z
dAoteyAgICAgCi0gICAgLyoKLSAgICAgKiBPcmRlciBpcyByaWNoZXN0IGZvcm1hdCBmaXJzdC4g
T24gT1NYIHRoaXMgaXM6Ci0gICAgICogKiBXZWIgQXJjaGl2ZQotICAgICAqICogRmlsZW5hbWVz
Ci0gICAgICogKiBIVE1MCi0gICAgICogKiBSVEYKLSAgICAgKiAqIFRJRkYKLSAgICAgKiAqIFBJ
Q1QKLSAgICAgKi8KLSAgICAgCi0gICAgaWYgKG1fcGxhdGZvcm1EcmFnRGF0YSkgewotICAgICAg
ICBpZiAoY29udGFpbnNGaWxlbmFtZXMobV9wbGF0Zm9ybURyYWdEYXRhKSkgewotICAgICAgICAg
ICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZy
b21GaWxlbmFtZXMoZnJhbWUtPmRvY3VtZW50KCksIG1fcGxhdGZvcm1EcmFnRGF0YSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNv
bnRhaW5zSFRNTChtX3BsYXRmb3JtRHJhZ0RhdGEpKSB7Ci0gICAgICAgICAgICBpZiAoUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUhUTUwoZnJhbWUt
PmRvY3VtZW50KCksIG1fcGxhdGZvcm1EcmFnRGF0YSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZyYWdtZW50OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGNvbnRhaW5z
RmlsZW5hbWVzKCZtX2RyYWdEYXRhTWFwKSkgewotICAgICAgICAgICAgaWYgKFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21GaWxlbmFtZXMoZnJhbWUt
PmRvY3VtZW50KCksICZtX2RyYWdEYXRhTWFwKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJh
Z21lbnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29udGFpbnNIVE1MKCZtX2RyYWdEYXRh
TWFwKSkgewotICAgICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQgPSBmcmFnbWVudEZyb21IVE1MKGZyYW1lLT5kb2N1bWVudCgpLCAmbV9kcmFnRGF0YU1h
cCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwotICAgICAgICB9Ci0gICAgfQot
ICAgIHJldHVybiAwOwotfQotCiBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIENvbG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTdkODViZC4uY2Y4ZDEyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0LTA5LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBEcmFnRGF0YSBzaG91bGQgbm90IGRlcGVu
ZCBvbiBDbGlwYm9hcmQsIERvY3VtZW50RnJhZ21lbnQsIGFuZCBEb2N1bWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbik6IFVwZGF0ZSB0byBBUEkKKyAgICAgICAgY2hhbmdlIGluIERyYWdEYXRhOjph
c1VSTCgpLgorCiAyMDE0LTA5LTEzICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcmFjbG91Z2hAYXBw
bGUuY29tPgogCiAgICAgICAgIFNob3VsZCBjYWxsIFtCS1NQcm9jZXNzQXNzZXJ0aW9uIGludmFs
aWRhdGVdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDRm
YjcxNDAuLmVjMDQzZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0xMzY5LDcgKzEzNjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgRHJhZwogICAgIFVO
VVNFRF9QQVJBTShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0oc2Fu
ZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpOwogCi0gICAgU3RyaW5nIHVybCA9IGRyYWdEYXRhLmFz
VVJMKG51bGxwdHIpOworICAgIFN0cmluZyB1cmwgPSBkcmFnRGF0YS5hc1VSTCgpOwogICAgIGlm
ICghdXJsLmlzRW1wdHkoKSkKICAgICAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9C
YXNlVVJMKHVybCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJm
b3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YSksIG1fcGFnZUlEKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238181</attachid>
            <date>2014-09-16 08:14:35 -0700</date>
            <delta_ts>2014-09-16 08:14:35 -0700</delta_ts>
            <desc>Try to fix windows build again</desc>
            <filename>wcore-drag-data-violations2.diff</filename>
            <type>text/plain</type>
            <size>30315</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYTcxNmQwLi4zNGJhMDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTQtMDktMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIERyYWdEYXRhIHNob3VsZCBub3QgZGVwZW5kIG9uIENsaXBib2FyZCwgRG9j
dW1lbnRGcmFnbWVudCwgYW5kIERvY3VtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIFJlZmFjdG9yIERyYWdEYXRhIHRvIG5vdCBkZXBlbmQgb24gRnJhbWUs
IERvY3VtZW50RnJhZ21lbnQsCisgICAgICAgIERvY3VtZW50IGFuZCBSYW5nZS4gRHJhZ0RhdGE6
OmFzRnJhZ21lbnQoKSBoYXMgYmVlbiBtb3ZlZCB0bworICAgICAgICBEcmFnQ29udHJvbGxlciBh
bmQgaW1wbGVtZW50ZWQgaW4gdGhlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGUuCisgICAgICAgIERy
YWdEYXRhIG1ldGhvZHMgdXNpbmcgRnJhbWUgaGFzIGJlZW4gcmV3b3JrZWQgaW4gTWFjIHRvIG5v
dCB1c2UKKyAgICAgICAgRnJhbWUsIHNpbmNlIGFsbCBvdGhlciBwb3J0cyB3ZXJlIGlnbm9yZWlu
ZyB0aGUgZnJhbWUgcGFyYW1ldGVyLgorCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZG9jdW1lbnRGcmFnbWVudEZy
b21EcmFnRGF0YSk6IE1ha2UgaXQKKyAgICAgICAgYSBzdGF0aWMgbWVtYmVyIHRvIGJlIGFibGUg
dG8gdXNlIGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKCkuCisgICAgICAgIChXZWJDb3JlOjpE
cmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24pOiBVcGRhdGUgdG8KKyAgICAgICAg
RHJhZ0RhdGEgQVBJIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6
ZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmRvY3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL2VmbC9EcmFnQ29udHJvbGxlckVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9t
RHJhZ0RhdGEpOiBNb3ZlCisgICAgICAgIERyYWdEYXRhOjphc0ZyYWdtZW50KCkgaW1wbGVtZW50
YXRpb24gaGVyZS4KKyAgICAgICAgKiBwYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEpOiBE
aXR0by4KKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRvLgor
ICAgICAgICAqIHBhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpjcmVhdGVGcmFnbWVudEZyb21EcmFnRGF0YSk6IERpdHRvLgor
ICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL0Ry
YWdEYXRhRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1BsYWluVGV4dCk6
IFJlbW92ZSBGcmFtZSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29u
dGFpbnNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc1VSTCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpEcmFnRGF0YTo6YXNVUkwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRh
Ojphc0ZyYWdtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRleHQpOiBTYW1lIGlt
cGxlbWVudGF0aW9uIGFzIHRoZQorICAgICAgICBFZGl0b3IuCisgICAgICAgIChXZWJDb3JlOjpE
cmFnRGF0YTo6Y29udGFpbnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmFzVVJMKTogVXNlIFVSTEJ5Q2Fub25pY2FsaXppbmdVUkwoKSBp
bnN0ZWFkCisgICAgICAgIG9mIHVzaW5nIHRoZSBFZGl0b3IgY2xpZW50LgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0RhdGE6OmFzRnJhZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9EcmFnRGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFp
bnNVUkwpOiBSZW1vdmUgRnJhbWUgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Rh
dGE6OmFzVVJMKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6YXNQbGFpblRl
eHQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbXBhdGli
bGVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjphc0ZyYWdtZW50KTogRGVs
ZXRlZC4KKwogMjAxNC0wOS0xNSAgSWFnbyBUb3JhbCAgPGl0b3JhbEBpZ2FsaWEuY29tPiBhbmQg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRk
IFdheWxhbmREaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4
IDJmZTAyNzEuLmZjODkxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CkBAIC0xMTQsMjUgKzExNCwyNSBAQCBEcmFnQ29udHJvbGxlcjo6fkRyYWdDb250cm9sbGVyKCkK
ICAgICBtX2NsaWVudC5kcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOwogfQogCi1zdGF0aWMgUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERy
YWdEYXRhJiBkcmFnRGF0YSwgRnJhbWUqIGZyYW1lLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxv
d1BsYWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpCitQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IERyYWdDb250cm9sbGVyOjpkb2N1bWVudEZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdE
YXRhJiBkcmFnRGF0YSwgRnJhbWUmIGZyYW1lLCBSYW5nZSYgY29udGV4dCwgYm9vbCBhbGxvd1Bs
YWluVGV4dCwgYm9vbCYgY2hvc2VQbGFpblRleHQpCiB7CiAgICAgY2hvc2VQbGFpblRleHQgPSBm
YWxzZTsKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGNvbnRleHQub3duZXJEb2N1bWVudCgp
OwogICAgIGlmIChkcmFnRGF0YS5jb250YWluc0NvbXBhdGlibGVDb250ZW50KCkpIHsKLSAgICAg
ICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkcmFnRGF0YS5h
c0ZyYWdtZW50KGZyYW1lLCBjb250ZXh0LCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQp
KQorICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNy
ZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKGRyYWdEYXRhLCBmcmFtZSwgY29udGV4dCwgYWxsb3dQ
bGFpblRleHQsIGNob3NlUGxhaW5UZXh0KSkKICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsK
IAotICAgICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNVUkwoZnJhbWUsIERyYWdEYXRhOjpEb05v
dENvbnZlcnRGaWxlbmFtZXMpKSB7CisgICAgICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTChE
cmFnRGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzKSkgewogICAgICAgICAgICAgU3RyaW5nIHRp
dGxlOwotICAgICAgICAgICAgU3RyaW5nIHVybCA9IGRyYWdEYXRhLmFzVVJMKGZyYW1lLCBEcmFn
RGF0YTo6RG9Ob3RDb252ZXJ0RmlsZW5hbWVzLCAmdGl0bGUpOworICAgICAgICAgICAgU3RyaW5n
IHVybCA9IGRyYWdEYXRhLmFzVVJMKERyYWdEYXRhOjpEb05vdENvbnZlcnRGaWxlbmFtZXMsICZ0
aXRsZSk7CiAgICAgICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICBSZWZQdHI8SFRNTEFuY2hvckVsZW1lbnQ+IGFuY2hvciA9IEhUTUxBbmNob3JFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgIGFuY2hvci0+c2V0SHJlZih1cmwpOwog
ICAgICAgICAgICAgICAgIGlmICh0aXRsZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gVHJ5IHRoZSBwbGFpbiB0ZXh0IGZpcnN0IGJlY2F1c2UgdGhlIHVybCBtaWdodCBiZSBu
b3JtYWxpemVkIG9yIGVzY2FwZWQuCiAgICAgICAgICAgICAgICAgICAgIGlmIChkcmFnRGF0YS5j
b250YWluc1BsYWluVGV4dCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSBkcmFn
RGF0YS5hc1BsYWluVGV4dChmcmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9
IGRyYWdEYXRhLmFzUGxhaW5UZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IHVybDsKICAgICAgICAg
ICAgICAgICB9CkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShEcmFnRGF0YSYgZHJhZ0QKICAg
ICB9CiAgICAgaWYgKGFsbG93UGxhaW5UZXh0ICYmIGRyYWdEYXRhLmNvbnRhaW5zUGxhaW5UZXh0
KCkpIHsKICAgICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3Jl
YXRlRnJhZ21lbnRGcm9tVGV4dChjb250ZXh0LCBkcmFnRGF0YS5hc1BsYWluVGV4dChmcmFtZSkp
LmdldCgpOworICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChjb250ZXh0LCBk
cmFnRGF0YS5hc1BsYWluVGV4dCgpKS5nZXQoKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAg
LTIzNCw3ICsyMzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlv
bihEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fY2xp
ZW50LndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlv
bkxvYWQsIGRyYWdEYXRhKTsKLSAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkubG9hZChG
cmFtZUxvYWRSZXF1ZXN0KCZtX3BhZ2UubWFpbkZyYW1lKCksIFJlc291cmNlUmVxdWVzdChkcmFn
RGF0YS5hc1VSTCgmbV9wYWdlLm1haW5GcmFtZSgpKSkpKTsKKyAgICBtX3BhZ2UubWFpbkZyYW1l
KCkubG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KCZtX3BhZ2UubWFpbkZyYW1lKCksIFJl
c291cmNlUmVxdWVzdChkcmFnRGF0YS5hc1VSTCgpKSkpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC00MjUsNyArNDI1LDcgQEAgc3RhdGljIGJvb2wgc2V0U2VsZWN0aW9uVG9EcmFnQ2FyZXQo
RnJhbWUqIGZyYW1lLCBWaXNpYmxlU2VsZWN0aW9uJiBkcmFnQ2FyZXQsIFIKIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IoRnJhbWUqIGlubmVyRnJhbWUsIERy
YWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBBU1NFUlQobV9wYWdlLmRyYWdDYXJldENvbnRyb2xs
ZXIoKS5oYXNDYXJldCgpKTsKLSAgICBTdHJpbmcgdGV4dCA9IG1fcGFnZS5kcmFnQ2FyZXRDb250
cm9sbGVyKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSA/IGVtcHR5U3RyaW5nKCkgOiBkcmFn
RGF0YS5hc1BsYWluVGV4dChpbm5lckZyYW1lKTsKKyAgICBTdHJpbmcgdGV4dCA9IG1fcGFnZS5k
cmFnQ2FyZXRDb250cm9sbGVyKCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSA/IGVtcHR5U3Ry
aW5nKCkgOiBkcmFnRGF0YS5hc1BsYWluVGV4dCgpOwogICAgIE5vZGUqIHRhcmdldCA9IGlubmVy
RnJhbWUtPmVkaXRvcigpLmZpbmRFdmVudFRhcmdldEZyb20obV9wYWdlLmRyYWdDYXJldENvbnRy
b2xsZXIoKS5jYXJldFBvc2l0aW9uKCkpOwogICAgIHJldHVybiB0YXJnZXQtPmRpc3BhdGNoRXZl
bnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKGlubmVyRnJhbWUtPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpLCB0ZXh0KSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CkBAIC00OTQsNyArNDk0LDcgQEAg
Ym9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhEcmFnRGF0YSYgZHJhZ0RhdGEp
CiAgICAgUmVzb3VyY2VDYWNoZVZhbGlkYXRpb25TdXBwcmVzc29yIHZhbGlkYXRpb25TdXBwcmVz
c29yKGNhY2hlZFJlc291cmNlTG9hZGVyKTsKICAgICBpZiAoZHJhZ0lzTW92ZShpbm5lckZyYW1l
LT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpIHx8IGRyYWdDYXJldC5pc0NvbnRlbnRSaWNobHlFZGl0
YWJsZSgpKSB7CiAgICAgICAgIGJvb2wgY2hvc2VQbGFpblRleHQgPSBmYWxzZTsKLSAgICAgICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnRGcmFnbWVudEZyb21E
cmFnRGF0YShkcmFnRGF0YSwgaW5uZXJGcmFtZS5nZXQoKSwgKnJhbmdlLCB0cnVlLCBjaG9zZVBs
YWluVGV4dCk7CisgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGRv
Y3VtZW50RnJhZ21lbnRGcm9tRHJhZ0RhdGEoZHJhZ0RhdGEsICppbm5lckZyYW1lLCAqcmFuZ2Us
IHRydWUsIGNob3NlUGxhaW5UZXh0KTsKICAgICAgICAgaWYgKCFmcmFnbWVudCB8fCAhaW5uZXJG
cmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0
b3JJbnNlcnRBY3Rpb25Ecm9wcGVkKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CkBAIC01MTcsNyArNTE3LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVF
ZGl0RHJhZyhEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgdGV4dCA9IGRyYWdEYXRhLmFzUGxhaW5UZXh0KGlu
bmVyRnJhbWUuZ2V0KCkpOworICAgICAgICBTdHJpbmcgdGV4dCA9IGRyYWdEYXRhLmFzUGxhaW5U
ZXh0KCk7CiAgICAgICAgIGlmICh0ZXh0LmlzRW1wdHkoKSB8fCAhaW5uZXJGcmFtZS0+ZWRpdG9y
KCkuc2hvdWxkSW5zZXJ0VGV4dCh0ZXh0LCByYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9u
RHJvcHBlZCkpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IDI1YTYxNmYuLjdlZWIxNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgY2xhc3MgRGF0YVRyYW5zZmVyOwogICAgIGNsYXNzIERvY3VtZW50Owor
ICAgIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiAgICAgY2xhc3MgRHJhZ0NsaWVudDsKICAgICBj
bGFzcyBEcmFnRGF0YTsKICAgICBjbGFzcyBFbGVtZW50OwpAQCAtNDQsNiArNDUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBQYWdlOwogICAg
IGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKKyAgICBjbGFzcyBSYW5nZTsKIAogICAgIHN0cnVj
dCBEcmFnU3RhdGU7CiAKQEAgLTExMyw2ICsxMTUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIGNsZWFudXBBZnRlclN5c3RlbURyYWcoKTsKICAgICAgICAgdm9pZCBkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0YVRyYW5zZmVyJiwgRWxlbWVudCYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgbGFiZWwpOwogCisgICAgICAgIC8vIEZJWE1FOiBNb3ZlIGNyZWF0ZUZy
YWdtZW50RnJvbURyYWdEYXRhIGltcGxlbWVudGF0aW9uIHRvIHRoZSBFZGl0b3IgYW5kIG1ha2Ug
ZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YSBhIHN0YXRpYyBmdW5jdGlvbiBhZ2Fpbi4KKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVu
dEZyb21EcmFnRGF0YShEcmFnRGF0YSYsIEZyYW1lJiwgUmFuZ2UmLCBib29sIGFsbG93UGxhaW5U
ZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiwgRnJh
bWUmLCBSYW5nZSYsIGJvb2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KTsK
KwogICAgICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgICAgIERyYWdDbGllbnQmIG1fY2xpZW50Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVmbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVmbC5jcHAKaW5kZXgg
OWRiMzg2OC4uMzYxNTU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJh
Z0NvbnRyb2xsZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250
cm9sbGVyRWZsLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1
ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC01MCw3ICs1Miw3IEBAIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oRHJhZ0RhdGEmKQogCiBEcmFnT3BlcmF0aW9u
IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKLSAg
ICBpZiAoZHJhZ0RhdGEuY29udGFpbnNVUkwoMCkpCisgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5z
VVJMKCkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKIAogICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uTm9uZTsKQEAgLTcxLDQgKzczLDkgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYsIEVsZW1lbnQmLCBjb25zdCBV
UkwKIHsKIH0KIAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6
Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmLCBGcmFtZSYsIFJhbmdlJiwgYm9v
bCAvKmFsbG93UGxhaW5UZXh0Ki8sIGJvb2wmIC8qY2hvc2VQbGFpblRleHQqLykKK3sKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9n
dGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0Nv
bnRyb2xsZXJHdGsuY3BwCmluZGV4IDU0ZmM4ZTYuLjE3MmM1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKQEAgLTI2LDEzICsyNiwxNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAKKyNpbmNs
dWRlICJEYXRhT2JqZWN0R3RrLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVyLmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAi
RHJhZ0RhdGEuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFzdGVi
b2FyZC5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTUzLDcgKzU3LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihEcmFnRGF0
YSYpCiBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKERyYWdEYXRh
JiBkcmFnRGF0YSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBpcyBpbmNvbXBsZXRlCi0g
ICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKDApKQorICAgIGlmIChkcmFnRGF0YS5jb250YWlu
c1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAKICAgICByZXR1cm4g
RHJhZ09wZXJhdGlvbk5vbmU7CkBAIC03NCw0ICs3OCwxMiBAQCB2b2lkIERyYWdDb250cm9sbGVy
OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEVs
ZW1lbgogICAgIGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkud3JpdGVJbWFnZShlbGVtZW50LCB1
cmwsIGxhYmVsKTsKIH0KIAorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnQ29udHJv
bGxlcjo6Y3JlYXRlRnJhZ21lbnRGcm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdEYXRhLCBGcmFt
ZSYgZnJhbWUsIFJhbmdlJiwgYm9vbCAvKmFsbG93UGxhaW5UZXh0Ki8sIGJvb2wmIC8qY2hvc2VQ
bGFpblRleHQqLykKK3sKKyAgICBpZiAoIWRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpLT5oYXNNYXJr
dXAoKSB8fCAhZnJhbWUuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBkcmFn
RGF0YS5wbGF0Zm9ybURhdGEoKS0+bWFya3VwKCksICIiKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCA5NGFmYTFjLi45N2E2YWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQpAQCAt
MjksMTMgKzI5LDE4IEBACiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogI2ltcG9ydCAiRGF0
YVRyYW5zZmVyLmgiCisjaW1wb3J0ICJEb2N1bWVudC5oIgorI2ltcG9ydCAiRG9jdW1lbnRGcmFn
bWVudC5oIgogI2ltcG9ydCAiRHJhZ0NsaWVudC5oIgogI2ltcG9ydCAiRHJhZ0RhdGEuaCIKKyNp
bXBvcnQgIkVkaXRvci5oIgorI2ltcG9ydCAiRWRpdG9yQ2xpZW50LmgiCiAjaW1wb3J0ICJFbGVt
ZW50LmgiCiAjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgIk1haW5GcmFtZS5oIgogI2lt
cG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZC5oIgorI2ltcG9ydCAiUmFuZ2UuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1OSw3IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OmlzQ29weUtleURvd24oRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIAogRHJhZ09wZXJh
dGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7
Ci0gICAgaWYgKChkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCkgfHwg
IWRyYWdEYXRhLmNvbnRhaW5zVVJMKCZtX3BhZ2UubWFpbkZyYW1lKCkpKQorICAgIGlmICgoZHJh
Z0RhdGEuZmxhZ3MoKSAmIERyYWdBcHBsaWNhdGlvbklzTW9kYWwpIHx8ICFkcmFnRGF0YS5jb250
YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CiAKICAgICBpZiAo
IW1fZG9jdW1lbnRVbmRlck1vdXNlIHx8ICghKGRyYWdEYXRhLmZsYWdzKCkgJiAoRHJhZ0FwcGxp
Y2F0aW9uSGFzQXR0YWNoZWRTaGVldCB8IERyYWdBcHBsaWNhdGlvbklzU291cmNlKSkpKQpAQCAt
ODcsNiArOTIsMTIgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBFbGVtZW4KICAgICBtX2NsaWVudC5kZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5uYW1lKCksIGVs
ZW1lbnQsIHVybCwgbGFiZWwsIGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKTsKIH0KIAorUGFz
c1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnQ29udHJvbGxlcjo6Y3JlYXRlRnJhZ21lbnRG
cm9tRHJhZ0RhdGEoRHJhZ0RhdGEmIGRyYWdEYXRhLCBGcmFtZSYgZnJhbWUsIFJhbmdlJiBjb250
ZXh0LCBib29sIGFsbG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKK3sKKyAgICBQ
YXN0ZWJvYXJkIHBhc3RlYm9hcmQoZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKSk7CisgICAgcmV0
dXJuIGZyYW1lLmVkaXRvcigpLndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCBj
b250ZXh0LCBhbGxvd1BsYWluVGV4dCwgY2hvc2VQbGFpblRleHQpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCmluZGV4IGQxOWNhODguLmJi
MDZhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVy
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5j
cHAKQEAgLTI2LDkgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJh
Z0NvbnRyb2xsZXIuaCIKIAorI2luY2x1ZGUgIkNsaXBib2FyZFV0aWxpdGllc1dpbi5oIgogI2lu
Y2x1ZGUgIkRhdGFUcmFuc2Zlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAi
RG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIK
ICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCkBAIC01MCw3ICs1
NCw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogICAgIC8vaWYgd2UgYXJlIGEgbW9kYWwgd2luZG93LCB3ZSBhcmUgdGhl
IGRyYWcgc291cmNlLCBvciB0aGUgd2luZG93IGlzIGFuIGF0dGFjaGVkIHNoZWV0CiAgICAgLy9J
ZiB0aGlzIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gd2l0aGluIFdlYkNvcmUgb3BlcmF0aW9uRm9y
RHJhZyBjYW4gYmUgcHVsbGVkIGludG8gCiAgICAgLy9XZWJDb3JlIGl0c2VsZgotICAgIHJldHVy
biBkcmFnRGF0YS5jb250YWluc1VSTCgwKSAmJiAhbV9kaWRJbml0aWF0ZURyYWcgPyBEcmFnT3Bl
cmF0aW9uQ29weSA6IERyYWdPcGVyYXRpb25Ob25lOworICAgIHJldHVybiBkcmFnRGF0YS5jb250
YWluc1VSTCgpICYmICFtX2RpZEluaXRpYXRlRHJhZyA/IERyYWdPcGVyYXRpb25Db3B5IDogRHJh
Z09wZXJhdGlvbk5vbmU7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24o
RHJhZ0RhdGEmKQpAQCAtODMsNCArODcsMjcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlKERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBFbGVtZW4KICAg
ICBwYXN0ZWJvYXJkLndyaXRlTWFya3VwKGNyZWF0ZU1hcmt1cChlbGVtZW50LCBJbmNsdWRlTm9k
ZSwgMCwgUmVzb2x2ZUFsbFVSTHMpKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFBsYXRmb3Jt
RHJhZ0RhdGE+CitzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFn
bWVudEZyb21QbGF0Zm9ybURhdGEoUGxhdGZvcm1EcmFnRGF0YSogcGxhdGZvcm1EcmFnRGF0YSwg
RnJhbWUmIGZyYW1lKQoreworICAgIGlmIChjb250YWluc0ZpbGVuYW1lcyhwbGF0Zm9ybURyYWdE
YXRhKSkgeworICAgICAgICBpZiAoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVu
dCA9IGZyYWdtZW50RnJvbUZpbGVuYW1lcyhmcmFtZS5kb2N1bWVudCgpLCBwbGF0Zm9ybURyYWdE
YXRhKSkKKyAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKKyAgICB9CisKKyAgICBpZiAoY29u
dGFpbnNIVE1MKHBsYXRmb3JtRHJhZ0RhdGEpKSB7CisgICAgICAgIGlmIChQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZnJhZ21lbnRGcm9tSFRNTChmcmFtZS5kb2N1bWVu
dCgpLCBwbGF0Zm9ybURyYWdEYXRhKSkKKyAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKKyAg
ICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Bhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gRHJhZ0NvbnRyb2xsZXI6OmNyZWF0ZUZyYWdtZW50RnJvbURyYWdEYXRhKERyYWdEYXRhJiBk
cmFnRGF0YSwgRnJhbWUmIGZyYW1lLCBSYW5nZSYsIGJvb2wgLyphbGxvd1BsYWluVGV4dCovLCBi
b29sJiAvKmNob3NlUGxhaW5UZXh0Ki8pCit7CisgICAgaWYgKERyYWdEYXRhUmVmIHBsYXRmb3Jt
RHJhZ0RhdGEgPSBkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSkKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZUZyYWdtZW50RnJvbVBsYXRmb3JtRGF0YShwbGF0Zm9ybURyYWdEYXRhLCBmcmFtZSk7CisKKyAg
ICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tUGxhdGZvcm1EYXRhKCZkcmFnRGF0YS5kcmFnRGF0
YU1hcCgpLCBmcmFtZSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4
IDg4MDEyNmQuLjU2YjExOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNjAs
MTAgKzYwLDcgQEAgdHlwZWRlZiB2b2lkKiBEcmFnRGF0YVJlZjsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBGcmFtZTsKLWNsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBVUkw7
Ci1jbGFzcyBSYW5nZTsKIAogZW51bSBEcmFnQXBwbGljYXRpb25GbGFncyB7CiAgICAgRHJhZ0Fw
cGxpY2F0aW9uTm9uZSA9IDAsCkBAIC05NSwxNCArOTIsMTMgQEAgcHVibGljOgogICAgIERyYWdB
cHBsaWNhdGlvbkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkZsYWdz
OyB9CiAgICAgRHJhZ0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0
Zm9ybURyYWdEYXRhOyB9CiAgICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQot
ICAgIGJvb2wgY29udGFpbnNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmls
ZW5hbWVQb2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVzKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5z
VVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0Owog
ICAgIGJvb2wgY29udGFpbnNQbGFpblRleHQoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29t
cGF0aWJsZUNvbnRlbnQoKSBjb25zdDsKLSAgICBTdHJpbmcgYXNVUkwoRnJhbWUqLCBGaWxlbmFt
ZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVzLCBTdHJp
bmcqIHRpdGxlID0gMCkgY29uc3Q7Ci0gICAgU3RyaW5nIGFzUGxhaW5UZXh0KEZyYW1lKikgY29u
c3Q7CisgICAgU3RyaW5nIGFzVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSA9IENvbnZlcnRG
aWxlbmFtZXMsIFN0cmluZyogdGl0bGUgPSBudWxscHRyKSBjb25zdDsKKyAgICBTdHJpbmcgYXNQ
bGFpblRleHQoKSBjb25zdDsKICAgICB2b2lkIGFzRmlsZW5hbWVzKFZlY3RvcjxTdHJpbmc+Jikg
Y29uc3Q7CiAgICAgQ29sb3IgYXNDb2xvcigpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gYXNGcmFnbWVudChGcmFtZSosIFJhbmdlJiBjb250ZXh0LCBib29sIGFsbG93
UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkgY29uc3Q7CiAgICAgYm9vbCBjYW5TbWFy
dFJlcGxhY2UoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29sb3IoKSBjb25zdDsKICAgICBi
b29sIGNvbnRhaW5zRmlsZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
RHJhZ0RhdGFFZmwuY3BwCmluZGV4IGRjYzhlZmIuLjAwMmE3OTBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKQEAgLTIxLDggKzIxLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogCi0jaW5jbHVkZSAiRG9jdW1l
bnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNyArNTQsNyBAQCBi
b29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KEZyYW1lKikgY29uc3QKK1N0cmlu
ZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAogewogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KQEAgLTcwLDE5ICs2OSwxNCBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVD
b250ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRHJhZ0RhdGE6OmNv
bnRhaW5zVVJMKEZyYW1lKiwgRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5KSBjb25zdAorYm9vbCBE
cmFnRGF0YTo6Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5KSBjb25zdAogewog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSosIEZp
bGVuYW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6
YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqKSBjb25zdAogewogICAgIHJl
dHVybiBTdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBEcmFnRGF0
YTo6YXNGcmFnbWVudChGcmFtZSosIFJhbmdlJiwgYm9vbCwgYm9vbCYpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIDA7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EcmFnRGF0YUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFH
dGsuY3BwCmluZGV4IDJiZjM0ZGYuLjU5OGM0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0RyYWdEYXRhR3RrLmNwcApAQCAtMTgsMTAgKzE4LDYgQEAKICNpbmNsdWRlICJEcmFn
RGF0YS5oIgogCiAjaW5jbHVkZSAiRGF0YU9iamVjdEd0ay5oIgotI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0j
aW5jbHVkZSAibWFya3VwLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsNyArNTEs
NyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc1BsYWluVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVGV4dCgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFz
UGxhaW5UZXh0KEZyYW1lKikgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBj
b25zdAogewogICAgIHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGEtPnRleHQoKTsKIH0KQEAgLTY3
LDE1ICs2MywxNSBAQCBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiAKIGJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogewotICAgIHJldHVybiBj
b250YWluc1BsYWluVGV4dCgpIHx8IGNvbnRhaW5zVVJMKDApIHx8IG1fcGxhdGZvcm1EcmFnRGF0
YS0+aGFzTWFya3VwKCkgfHwgY29udGFpbnNDb2xvcigpIHx8IGNvbnRhaW5zRmlsZXMoKTsKKyAg
ICByZXR1cm4gY29udGFpbnNQbGFpblRleHQoKSB8fCBjb250YWluc1VSTCgpIHx8IG1fcGxhdGZv
cm1EcmFnRGF0YS0+aGFzTWFya3VwKCkgfHwgY29udGFpbnNDb2xvcigpIHx8IGNvbnRhaW5zRmls
ZXMoKTsKIH0KIAotYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNVUkwoRnJhbWUqIGZyYW1lLCBGaWxl
bmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNvbnN0Citib29sIERyYWdEYXRh
Ojpjb250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3kpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuICFhc1VSTChmcmFtZSwgZmlsZW5hbWVQb2xpY3kpLmlzRW1wdHko
KTsKKyAgICByZXR1cm4gIWFzVVJMKGZpbGVuYW1lUG9saWN5KS5pc0VtcHR5KCk7CiB9CiAKLVN0
cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmls
ZW5hbWVQb2xpY3ksIFN0cmluZyogdGl0bGUpIGNvbnN0CitTdHJpbmcgRHJhZ0RhdGE6OmFzVVJM
KEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRsZSkg
Y29uc3QKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVVJMKCkpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKQEAgLTkxLDE2ICs4Nyw0IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNV
UkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmlu
ZyoKICAgICByZXR1cm4gdXJsOwogfQogCi0KLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
RHJhZ0RhdGE6OmFzRnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wsIGJvb2wmKSBj
b25zdAotewotICAgIGlmICghbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNNYXJrdXAoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAo
KmZyYW1lLT5kb2N1bWVudCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEtPm1hcmt1cCgpLCAiIik7Ci19
Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBk
NTJhNGVhLi45Y2IyMDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
RHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRh
TWFjLm1tCkBAIC0yNywxOCArMjcsMTEgQEAKICNpbXBvcnQgIkRyYWdEYXRhLmgiCiAKICNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKQotI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkRvY3Vt
ZW50RnJhZ21lbnQuaCIKLSNpbXBvcnQgIkRPTURvY3VtZW50RnJhZ21lbnQuaCIKLSNpbXBvcnQg
IkRPTURvY3VtZW50RnJhZ21lbnRJbnRlcm5hbC5oIgotI2ltcG9ydCAiRWRpdG9yLmgiCi0jaW1w
b3J0ICJFZGl0b3JDbGllbnQuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCiAjaW1wb3J0ICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJk
U3RyYXRlZ3kuaCIKICNpbXBvcnQgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotI2ltcG9ydCAiUmFu
Z2UuaCIKKyNpbXBvcnQgIldlYkNvcmVOU1VSTEV4dHJhcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTEwNyw5ICsxMDAsMjAgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRl
eHQoKSBjb25zdAogICAgICAgICB8fCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnN0cmluZ0ZvclR5cGUoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSksIG1fcGFzdGVi
b2FyZE5hbWUpLmxlbmd0aCgpOwogfQogCi1TdHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KEZy
YW1lICpmcmFtZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNQbGFpblRleHQoKSBjb25zdAog
ewotICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCkucmVhZFBsYWluVGV4dEZyb21QYXN0ZWJvYXJk
KCpQYXN0ZWJvYXJkOjpjcmVhdGUobV9wYXN0ZWJvYXJkTmFtZSkpOworICAgIFBhc3RlYm9hcmQg
cGFzdGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBQYXN0ZWJvYXJkUGxhaW5UZXh0IHRl
eHQ7CisgICAgcGFzdGVib2FyZC5yZWFkKHRleHQpOworICAgIFN0cmluZyBzdHJpbmcgPSB0ZXh0
LnRleHQ7CisKKyAgICAvLyBGSVhNRTogSXQncyBub3QgY2xlYXIgdGhpcyBpcyAxMDAlIGNvcnJl
Y3Qgc2luY2Ugd2Uga25vdyAtW05TVVJMIFVSTFdpdGhTdHJpbmc6XSBkb2VzIG5vdCBoYW5kbGUK
KyAgICAvLyBhbGwgdGhlIHNhbWUgY2FzZXMgd2UgaGFuZGxlIHdlbGwgaW4gdGhlIFVSTCBjb2Rl
IGZvciBjcmVhdGluZyBhbiBOU1VSTC4KKyAgICBpZiAodGV4dC5pc1VSTCkKKyAgICAgICAgcmV0
dXJuIHVzZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOworCisg
ICAgLy8gRklYTUU6IFdURiBzaG91bGQgb2ZmZXIgYSBub24tTWFjLXNwZWNpZmljIHdheSB0byBj
b252ZXJ0IHN0cmluZyB0byBwcmVjb21wb3NlZCBmb3JtIHNvIHdlIGNhbiBkbyBpdCBmb3IgYWxs
IHBsYXRmb3Jtcy4KKyAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21wb3NlZFN0
cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKIH0KIAogQ29sb3IgRHJhZ0RhdGE6OmFzQ29sb3Io
KSBjb25zdApAQCAtMTM0LDEyICsxMzgsMTIgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNDb21w
YXRpYmxlQ29udGVudCgpIGNvbnN0CiAgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFN0cmluZyhr
VVRUeXBlUE5HKSk7CiB9CiAgICAgCi1ib29sIERyYWdEYXRhOjpjb250YWluc1VSTChGcmFtZSog
ZnJhbWUsIEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKK2Jv
b2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFt
ZVBvbGljeSkgY29uc3QKIHsKLSAgICByZXR1cm4gIWFzVVJMKGZyYW1lLCBmaWxlbmFtZVBvbGlj
eSkuaXNFbXB0eSgpOworICAgIHJldHVybiAhYXNVUkwoZmlsZW5hbWVQb2xpY3kpLmlzRW1wdHko
KTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29u
dmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0cmluZyBEcmFnRGF0YTo6YXNV
UkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAg
IC8vIEZJWE1FOiBVc2UgZmlsZW5hbWVQb2xpY3kuCiAKQEAgLTE1MSwxNyArMTU1LDEzIEBAIFN0
cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqIGZyYW1lLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xp
Y3ksIFN0cmluZyogdGl0bGUpIGNvCiAgICAgCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7CiAg
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5nZXRUeXBlcyh0
eXBlcywgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgCi0gICAgLy8gRklYTUU6IHVzaW5nIHRoZSBl
ZGl0b3JDbGllbnQgdG8gY2FsbCBpbnRvIFdlYktpdCwgZm9yIG5vdywgc2luY2UgCi0gICAgLy8g
Y2FsbGluZyB3ZWJraXRfY2Fub25pY2FsaXplIGZyb20gV2ViQ29yZSBpbnZvbHZlcyBtaWdyYXRp
bmcgYSBzaXphYmxlIGFtb3VudCBvZiAKLSAgICAvLyBoZWxwZXIgY29kZSB0aGF0IHNob3VsZCBl
aXRoZXIgYmUgZG9uZSBpbiBhIHNlcGFyYXRlIHBhdGNoIG9yIGZpZ3VyZWQgb3V0IGluIGFub3Ro
ZXIgd2F5LgotICAgIAorCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1VSTFBib2Fy
ZFR5cGUpKSkgewogICAgICAgICBOU1VSTCAqVVJMRnJvbVBhc3RlYm9hcmQgPSBbTlNVUkwgVVJM
V2l0aFN0cmluZzpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnN0
cmluZ0ZvclR5cGUoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSksIG1fcGFzdGVib2FyZE5hbWUpXTsK
ICAgICAgICAgTlNTdHJpbmcgKnNjaGVtZSA9IFtVUkxGcm9tUGFzdGVib2FyZCBzY2hlbWVdOwog
ICAgICAgICAvLyBDYW5ub3QgZHJvcCBvdGhlciBzY2hlbWVzIHVubGVzcyA8cmRhcjovL3Byb2Js
ZW0vMTA1NjI2NjI+IGFuZCA8cmRhcjovL3Byb2JsZW0vMTExODczMTU+IGFyZSBmaXhlZC4KICAg
ICAgICAgaWYgKFtzY2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cCJdIHx8IFtzY2hlbWUgaXNF
cXVhbFRvU3RyaW5nOkAiaHR0cHMiXSkKLSAgICAgICAgICAgIHJldHVybiBbZnJhbWUtPmVkaXRv
cigpLmNsaWVudCgpLT5jYW5vbmljYWxpemVVUkwoVVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRl
U3RyaW5nXTsKKyAgICAgICAgICAgIHJldHVybiBbVVJMQnlDYW5vbmljYWxpemluZ1VSTChVUkxG
cm9tUGFzdGVib2FyZCkgYWJzb2x1dGVTdHJpbmddOwogICAgIH0KICAgICAKICAgICBpZiAodHlw
ZXMuY29udGFpbnMoU3RyaW5nKE5TU3RyaW5nUGJvYXJkVHlwZSkpKSB7CkBAIC0xNzEsNyArMTcx
LDcgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVuYW1lQ29udmVy
c2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY28KICAgICAgICAgLy8gVGhlIHJlc3VsdCBvZiB0
aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5pdGlhdGUgbmF2aWdhdGlvbiwgc28gd2Ugc2hvdWxk
bid0IGFsbG93IGFyYml0cmFyeSBmaWxlIFVSTHMuCiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQg
d2UgYWxsb3cgb25seSBodHRwIGZhbWlseSBzY2hlbWVzLCBvciBhbnl0aGluZyBub24tbG9jYWw/
CiAgICAgICAgIGlmIChbc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImh0dHAiXSB8fCBbc2NoZW1l
IGlzRXF1YWxUb1N0cmluZzpAImh0dHBzIl0pCi0gICAgICAgICAgICByZXR1cm4gW2ZyYW1lLT5l
ZGl0b3IoKS5jbGllbnQoKS0+Y2Fub25pY2FsaXplVVJMKFVSTEZyb21QYXN0ZWJvYXJkKSBhYnNv
bHV0ZVN0cmluZ107CisgICAgICAgICAgICByZXR1cm4gW1VSTEJ5Q2Fub25pY2FsaXppbmdVUkwo
VVJMRnJvbVBhc3RlYm9hcmQpIGFic29sdXRlU3RyaW5nXTsKICAgICB9CiAgICAgCiAgICAgaWYg
KHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU0ZpbGVuYW1lc1Bib2FyZFR5cGUpKSkgewpAQCAtMTgx
LDE5ICsxODEsMTMgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSogZnJhbWUsIEZpbGVu
YW1lQ29udmVyc2lvblBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY28KICAgICAgICAgICAgIEJPT0wg
aXNEaXJlY3Rvcnk7CiAgICAgICAgICAgICBpZiAoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVzWzBdIGlzRGlyZWN0b3J5OiZpc0RpcmVjdG9yeV0g
JiYgaXNEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAg
ICAgICAgcmV0dXJuIFtmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmNhbm9uaWNhbGl6ZVVSTChb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVzWzBdXSkgYWJzb2x1dGVTdHJpbmddOworICAgICAg
ICAgICAgcmV0dXJuIFtVUkxCeUNhbm9uaWNhbGl6aW5nVVJMKFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6ZmlsZXNbMF1dKSBhYnNvbHV0ZVN0cmluZ107CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAg
ICAgcmV0dXJuIFN0cmluZygpOyAgICAgICAgCiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gRHJhZ0RhdGE6OmFzRnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYgcmFuZ2UsIGJv
b2wgYWxsb3dQbGFpblRleHQsIGJvb2wmIGNob3NlUGxhaW5UZXh0KSBjb25zdAotewotICAgIFBh
c3RlYm9hcmQgcGFzdGVib2FyZChtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICByZXR1cm4gZnJhbWUt
PmVkaXRvcigpLndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCByYW5nZSwgYWxs
b3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsKLX0KLSAgICAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5kZXggNDE3Y2Uy
Zi4uYzJmMTZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBi
b2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlw
Ym9hcmRVdGlsaXRpZXNXaW4uaApAQCAtMzMsNiArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIERvY3VtZW50RnJhZ21lbnQ7CiBjbGFzcyBVUkw7
CiAKIEhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCmluZGV4IDVhN2Y3MzYuLjcwMDU3MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtMjks
MTAgKzI5LDYgQEAKIAogI2luY2x1ZGUgIkNPTVB0ci5oIgogI2luY2x1ZGUgIkNsaXBib2FyZFV0
aWxpdGllc1dpbi5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRGcmFn
bWVudC5oIgotI2luY2x1ZGUgIk1hcmt1cC5oIgotI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8b2JqaWRsLmg+CiAjaW5jbHVkZSA8c2hsd2Fw
aS5oPgpAQCAtNTYsNyArNTIsNyBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFN
YXAmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29ucwogewogfQogCi1i
b29sIERyYWdEYXRhOjpjb250YWluc1VSTChGcmFtZSosIEZpbGVuYW1lQ29udmVyc2lvblBvbGlj
eSBmaWxlbmFtZVBvbGljeSkgY29uc3QKK2Jvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zVVJMKEZpbGVu
YW1lQ29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSkgY29uc3QKIHsKICAgICBpZiAobV9w
bGF0Zm9ybURyYWdEYXRhKQogICAgICAgICByZXR1cm4gU1VDQ0VFREVEKG1fcGxhdGZvcm1EcmFn
RGF0YS0+UXVlcnlHZXREYXRhKHVybFdGb3JtYXQoKSkpIApAQCAtMTAxLDcgKzk3LDcgQEAgdm9p
ZCBEcmFnRGF0YTo6Z2V0RHJhZ0ZpbGVDb250ZW50RGF0YShpbnQgc2l6ZSwgdm9pZCogZGF0YUJs
b2IpCiAgICAgICAgIGdldEZpbGVDb250ZW50RGF0YShtX3BsYXRmb3JtRHJhZ0RhdGEsIHNpemUs
IGRhdGFCbG9iKTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSosIEZpbGVuYW1l
Q29udmVyc2lvblBvbGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKK1N0
cmluZyBEcmFnRGF0YTo6YXNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9s
aWN5LCBTdHJpbmcqIHRpdGxlKSBjb25zdAogewogICAgIHJldHVybiAobV9wbGF0Zm9ybURyYWdE
YXRhKSA/IGdldFVSTChtX3BsYXRmb3JtRHJhZ0RhdGEsIGZpbGVuYW1lUG9saWN5LCB0aXRsZSkg
OiBnZXRVUkwoJm1fZHJhZ0RhdGFNYXAsIGZpbGVuYW1lUG9saWN5LCB0aXRsZSk7CiB9CkBAIC0x
ODEsNyArMTc3LDcgQEAgYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNQbGFpblRleHQoKSBjb25zdAog
ICAgIHJldHVybiBtX2RyYWdEYXRhTWFwLmNvbnRhaW5zKHBsYWluVGV4dFdGb3JtYXQoKS0+Y2ZG
b3JtYXQpIHx8IG1fZHJhZ0RhdGFNYXAuY29udGFpbnMocGxhaW5UZXh0Rm9ybWF0KCktPmNmRm9y
bWF0KTsKIH0KIAotU3RyaW5nIERyYWdEYXRhOjphc1BsYWluVGV4dChGcmFtZSopIGNvbnN0CitT
dHJpbmcgRHJhZ0RhdGE6OmFzUGxhaW5UZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gKG1fcGxh
dGZvcm1EcmFnRGF0YSkgPyBnZXRQbGFpblRleHQobV9wbGF0Zm9ybURyYWdEYXRhKSA6IGdldFBs
YWluVGV4dCgmbV9kcmFnRGF0YU1hcCk7CiB9CkBAIC0yMDAsNDggKzE5NiwxMiBAQCBib29sIERy
YWdEYXRhOjpjYW5TbWFydFJlcGxhY2UoKSBjb25zdAogCiBib29sIERyYWdEYXRhOjpjb250YWlu
c0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29udGFpbnNQbGFpblRl
eHQoKSB8fCBjb250YWluc1VSTCgwKSAKKyAgICByZXR1cm4gY29udGFpbnNQbGFpblRleHQoKSB8
fCBjb250YWluc1VSTCgpCiAgICAgICAgIHx8ICgobV9wbGF0Zm9ybURyYWdEYXRhKSA/IChjb250
YWluc0hUTUwobV9wbGF0Zm9ybURyYWdEYXRhKSB8fCBjb250YWluc0ZpbGVuYW1lcyhtX3BsYXRm
b3JtRHJhZ0RhdGEpKQogICAgICAgICAgICAgOiAoY29udGFpbnNIVE1MKCZtX2RyYWdEYXRhTWFw
KSB8fCBjb250YWluc0ZpbGVuYW1lcygmbV9kcmFnRGF0YU1hcCkpKQogICAgICAgICB8fCBjb250
YWluc0NvbG9yKCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRHJhZ0RhdGE6
OmFzRnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBSYW5nZSYsIGJvb2wsIGJvb2wmKSBjb25zdAoteyAg
ICAgCi0gICAgLyoKLSAgICAgKiBPcmRlciBpcyByaWNoZXN0IGZvcm1hdCBmaXJzdC4gT24gT1NY
IHRoaXMgaXM6Ci0gICAgICogKiBXZWIgQXJjaGl2ZQotICAgICAqICogRmlsZW5hbWVzCi0gICAg
ICogKiBIVE1MCi0gICAgICogKiBSVEYKLSAgICAgKiAqIFRJRkYKLSAgICAgKiAqIFBJQ1QKLSAg
ICAgKi8KLSAgICAgCi0gICAgaWYgKG1fcGxhdGZvcm1EcmFnRGF0YSkgewotICAgICAgICBpZiAo
Y29udGFpbnNGaWxlbmFtZXMobV9wbGF0Zm9ybURyYWdEYXRhKSkgewotICAgICAgICAgICAgaWYg
KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21GaWxl
bmFtZXMoZnJhbWUtPmRvY3VtZW50KCksIG1fcGxhdGZvcm1EcmFnRGF0YSkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZyYWdtZW50OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbnRhaW5z
SFRNTChtX3BsYXRmb3JtRHJhZ0RhdGEpKSB7Ci0gICAgICAgICAgICBpZiAoUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGZyYWdtZW50RnJvbUhUTUwoZnJhbWUtPmRvY3Vt
ZW50KCksIG1fcGxhdGZvcm1EcmFnRGF0YSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZyYWdt
ZW50OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGNvbnRhaW5zRmlsZW5h
bWVzKCZtX2RyYWdEYXRhTWFwKSkgewotICAgICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQgPSBmcmFnbWVudEZyb21GaWxlbmFtZXMoZnJhbWUtPmRvY3Vt
ZW50KCksICZtX2RyYWdEYXRhTWFwKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJhZ21lbnQ7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29udGFpbnNIVE1MKCZtX2RyYWdEYXRhTWFwKSkg
ewotICAgICAgICAgICAgaWYgKFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBmcmFnbWVudEZyb21IVE1MKGZyYW1lLT5kb2N1bWVudCgpLCAmbV9kcmFnRGF0YU1hcCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZyYWdtZW50OwotICAgICAgICB9Ci0gICAgfQotICAgIHJl
dHVybiAwOwotfQotCiBDb2xvciBEcmFnRGF0YTo6YXNDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIENvbG9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTdkODViZC4uY2Y4ZDEyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE0IEBACisyMDE0LTA5LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKworICAgICAgICBEcmFnRGF0YSBzaG91bGQgbm90IGRlcGVuZCBvbiBD
bGlwYm9hcmQsIERvY3VtZW50RnJhZ21lbnQsIGFuZCBEb2N1bWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbik6IFVwZGF0ZSB0byBBUEkKKyAgICAgICAgY2hhbmdlIGluIERyYWdEYXRhOjphc1VSTCgp
LgorCiAyMDE0LTA5LTEzICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcmFjbG91Z2hAYXBwbGUuY29t
PgogCiAgICAgICAgIFNob3VsZCBjYWxsIFtCS1NQcm9jZXNzQXNzZXJ0aW9uIGludmFsaWRhdGVd
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDRmYjcxNDAu
LmVjMDQzZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0xMzY5LDcgKzEzNjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgRHJhZwogICAgIFVOVVNFRF9Q
QVJBTShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0oc2FuZGJveEV4
dGVuc2lvbnNGb3JVcGxvYWQpOwogCi0gICAgU3RyaW5nIHVybCA9IGRyYWdEYXRhLmFzVVJMKG51
bGxwdHIpOworICAgIFN0cmluZyB1cmwgPSBkcmFnRGF0YS5hc1VSTCgpOwogICAgIGlmICghdXJs
LmlzRW1wdHkoKSkKICAgICAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJM
KHVybCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YSksIG1fcGFnZUlEKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>