<?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>205210</bug_id>
          
          <creation_ts>2019-12-13 11:19:20 -0800</creation_ts>
          <short_desc>Isolated object implementation of parameterized attribute SelectTextWithCriteria.</short_desc>
          <delta_ts>2019-12-16 10:49:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1598413</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-13 11:19:20 -0800</bug_when>
    <thetext>Isolated object implementation of parameterized attribute SelectTextWithCriteria.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598428</commentid>
    <comment_count>1</comment_count>
      <attachid>385625</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-13 11:55:13 -0800</bug_when>
    <thetext>Created attachment 385625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598441</commentid>
    <comment_count>2</comment_count>
      <attachid>385625</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-12-13 12:13:51 -0800</bug_when>
    <thetext>Comment on attachment 385625
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:-3577
&gt; -    ASSERT(roleValue() == AccessibilityRole::TabList);

worried that this might populate tabChildren for elements not expected to have any... maybe we can change this to

if (role != TabList)
   return

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp:696
&gt; +Vector&lt;RefPtr&lt;Range&gt;&gt; AXIsolatedObject::findTextRanges(AccessibilitySearchTextCriteria const&amp; criteria) const

what&apos;s the implication of returning a Range from the main thread to a secondary thread?

&gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:101
&gt;              m_semaphore.signal();

can you rename execute to something that is more meaningful in explaining that it will dispatch to the main thread

&gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:104
&gt; +        CFRunLoopRunInMode(kCFRunLoopDefaultMode, .25, false);

put a comment why we need to spin the run loop</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598494</commentid>
    <comment_count>3</comment_count>
      <attachid>385642</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-13 14:12:12 -0800</bug_when>
    <thetext>Created attachment 385642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598498</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-13 14:21:46 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #2)
&gt; Comment on attachment 385625 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385625&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:-3577
&gt; &gt; -    ASSERT(roleValue() == AccessibilityRole::TabList);
&gt; 
&gt; worried that this might populate tabChildren for elements not expected to
&gt; have any... maybe we can change this to
&gt; 
&gt; if (role != TabList)
&gt;    return

Done.
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTreeNode.cpp:696
&gt; &gt; +Vector&lt;RefPtr&lt;Range&gt;&gt; AXIsolatedObject::findTextRanges(AccessibilitySearchTextCriteria const&amp; criteria) const
&gt; 
&gt; what&apos;s the implication of returning a Range from the main thread to a
&gt; secondary thread?

This function is only used in the wrapper and will be always be executed inside a block dispatched to the main thread. You are right, it won&apos;t work if we return this value outside the main thread, but that is not happening.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:101
&gt; &gt;              m_semaphore.signal();
&gt; 
&gt; can you rename execute to something that is more meaningful in explaining
&gt; that it will dispatch to the main thread

Renamed it executeOnAXThreadIfPossible.
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:104
&gt; &gt; +        CFRunLoopRunInMode(kCFRunLoopDefaultMode, .25, false);
&gt; 
&gt; put a comment why we need to spin the run loop

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598886</commentid>
    <comment_count>5</comment_count>
      <attachid>385766</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-16 07:52:57 -0800</bug_when>
    <thetext>Created attachment 385766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598909</commentid>
    <comment_count>6</comment_count>
      <attachid>385766</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2019-12-16 08:41:45 -0800</bug_when>
    <thetext>Comment on attachment 385766
Patch

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

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:50
&gt; +    AXObjectCache* axObjectCache() const { return m_axObjectCache; }

feel like we should assert main thread in this getter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598943</commentid>
    <comment_count>7</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2019-12-16 10:04:29 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #6)
&gt; Comment on attachment 385766 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=385766&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.h:50
&gt; &gt; +    AXObjectCache* axObjectCache() const { return m_axObjectCache; }
&gt; 
&gt; feel like we should assert main thread in this getter

Will do. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598973</commentid>
    <comment_count>8</comment_count>
      <attachid>385766</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-16 10:48:01 -0800</bug_when>
    <thetext>Comment on attachment 385766
Patch

Clearing flags on attachment: 385766

Committed r253565: &lt;https://trac.webkit.org/changeset/253565&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598974</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-16 10:48:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598975</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-16 10:49:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/57976699&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385625</attachid>
            <date>2019-12-13 11:55:13 -0800</date>
            <delta_ts>2019-12-13 14:12:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205210-20191213115512.patch</filename>
            <type>text/plain</type>
            <size>23187</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWNjZDAzMTQxZDAxZDI5
ODBjNjE5NjcxMTAyZGZmNzBkNzFiYmIxMy4uMjg2YzkxYjI1NjFlNzI3OTQwN2E0YTJmMTRlZDg2
OGViNmRmMzliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTEyLTEzICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJc29sYXRlZCBv
YmplY3QgaW1wbGVtZW50YXRpb24gb2YgcGFyYW1ldGVyaXplZCBhdHRyaWJ1dGUgU2VsZWN0VGV4
dFdpdGhDcml0ZXJpYS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNTIxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2ZpbmQtYW5kLXJlcGxhY2UtbWF0
Y2gtY2FwaXRhbGl6YXRpb24uaHRtbCBleGVyY2lzZSB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKKyAg
ICAgICAgUmVxdWVzdHMgZm9yIHBhcmFtZXRlcml6ZWQgYXR0cmlidXRlcyB0aGF0IHJlcXVpcmUg
Y29tcHV0YXRpb25zIGluCisgICAgICAgIHRoZSBXZWJDb3JlIERPTSBuZWVkIHRvIGJlIGRpc3Bh
dGNoZWQgdG8gdGhlIG1haW4gdGhyZWFkLiBUaGlzCisgICAgICAgIGNoYW5nZSBpcyB0aGUgYmx1
ZXByaW50IGZvciBhbGwgb3RoZXIgYXR0cmlidXRlcyB0byBmb2xsb3cuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6aXNvbGF0ZWRUcmVlUm9vdE9iamVjdCk6IFRoZSBpc29sYXRlZCB0cmVlIHJvb3Qg
b2JqZWN0IGlzIGFsd2F5cyByZXRyaWV2ZWQgaW4gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Z2VuZXJhdGVJc29sYXRlZFRyZWUpOiBTZXRzIHRoZSBB
WE9iamVjdENhY2hlIGZvciB0aGUgZ2VuZXJhdGVkIElzb2xhdGVkVHJlZS4KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDogQWRkZWQgdGhlIHRl
bXBsYXRlIGZ1bmN0aW9ucyB0byBkaXNwYXRjaCB0byB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OjpwZXJmb3JtRnVuY3Rpb25Pbk1haW5UaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhy
ZWFkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwOiBSZW1vdmVkIG9ic29sZXRlIGFzc2VydHMuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGFiQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6IEl0IG5vdyBob2xkcyBhIHJl
ZmVyZW5jZSB0byB0aGUgQVhPYmplY3RDYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpheE9iamVjdENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpzZXRBWE9iamVjdENhY2hlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6ZmluZFRleHRSYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZE9iamVjdDo6cGVyZm9ybVRleHRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6YXhPYmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmg6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06IE1vdmVk
IHRlbXBsYXRlIGZ1bmN0aW9ucyB0byBkaXNwYXRjaCB0byB0aGUgbWFpbiB0aHJlYWQgaW50byB0
aGUgQWNjZXNzaWJpbGl0eSBuYW1lc3BhY2UgdG8gdXNlIHRoZW0gaW4gdGhlIGlzb2xhdGVkIG9i
amVjdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYXR0YWNobWVudFZpZXddKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgYXNzb2NpYXRlZFBsdWdpblBhcmVudF0pOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzY3JvbGxWaWV3UGFyZW50XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHdpbmRvd0VsZW1lbnQ6XSk6CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlTaG93Q29u
dGV4dE1lbnVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFtZXRlcjpdKToKKyAgICAgICAgKHBlcmZv
cm1BY2Nlc3NpYmlsaXR5RnVuY3Rpb25Pbk1haW5UaHJlYWQpOiBNb3ZlZC4KKyAgICAgICAgKHJl
dHJpZXZlQWNjZXNzaWJpbGl0eVZhbHVlRnJvbU1haW5UaHJlYWQpOiBNb3ZlZC4KKwogMjAxOS0x
Mi0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyZWFtbGlu
ZSBQT0RJbnRlcnZhbFRyZWUgY29kZSBhbmQgcmVtb3ZlIFZhbHVlVG9TdHJpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDVhMjAyNDQ3
NjZhMGY2OGM5MGNiNGE3NDI1NzQ1MzRlMDA4MWFiYzUuLmY4NmYzNzMwMDk5ZDNhODI1MTNlMWMz
NDk3Y2I5NTc0MWIwOTI5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcApAQCAtNzM1LDI1ICs3MzUsMjMgQEAgQVhDb3JlT2JqZWN0KiBBWE9i
amVjdENhY2hlOjpyb290T2JqZWN0KCkKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRF
RF9UUkVFKQogQVhDb3JlT2JqZWN0KiBBWE9iamVjdENhY2hlOjppc29sYXRlZFRyZWVSb290T2Jq
ZWN0KCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gcGFnZUlEID0g
bV9kb2N1bWVudC5wYWdlSUQoKTsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgq
cGFnZUlEKTsKLSAgICBpZiAoIXRyZWUgJiYgaXNNYWluVGhyZWFkKCkpIHsKKyAgICBpZiAoIXRy
ZWUpIHsKICAgICAgICAgdHJlZSA9IGdlbmVyYXRlSXNvbGF0ZWRUcmVlKCpwYWdlSUQsIG1fZG9j
dW1lbnQpOwogICAgICAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIGNyZWF0ZWQgb3VyIHRyZWUsIGlu
aXRpYWxpemUgdGhlIHNlY29uZGFyeSB0aHJlYWQsCiAgICAgICAgIC8vIHNvIGZ1dHVyZSByZXF1
ZXN0cyBjb21lIGluIG9uIHRoZSBvdGhlciB0aHJlYWQuCiAgICAgICAgIF9BWFVJRWxlbWVudFVz
ZVNlY29uZGFyeUFYVGhyZWFkKHRydWUpOwotICAgICAgICByZXR1cm4gdHJlZS0+cm9vdE5vZGUo
KS5nZXQoKTsKICAgICB9CiAKLSAgICBpZiAodHJlZSAmJiAhaXNNYWluVGhyZWFkKCkpIHsKLSAg
ICAgICAgdHJlZS0+YXBwbHlQZW5kaW5nQ2hhbmdlcygpOworICAgIGlmICh0cmVlKQogICAgICAg
ICByZXR1cm4gdHJlZS0+cm9vdE5vZGUoKS5nZXQoKTsKLSAgICB9CiAKLSAgICAvLyBTaG91bGQg
bm90IGdldCBoZXJlLCBjb3VsZG4ndCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBJc29sYXRlZFRyZWUu
CisgICAgLy8gU2hvdWxkIG5vdCBnZXQgaGVyZSwgY291bGRuJ3QgY3JlYXRlIHRoZSBJc29sYXRl
ZFRyZWUuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CkBAIC0zMDk0LDYgKzMwOTIsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYT2JqZWN0Q2FjaGU6
OmdlbmVyYXRlSXNvbGF0ZWRUcmVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgRAogICAgIGF1dG8q
IGF4T2JqZWN0Q2FjaGUgPSBkb2N1bWVudC5heE9iamVjdENhY2hlKCk7CiAgICAgaWYgKCFheE9i
amVjdENhY2hlKQogICAgICAgICByZXR1cm4gbWFrZVJlZigqdHJlZSk7CisgICAgdHJlZS0+c2V0
QVhPYmplY3RDYWNoZShheE9iamVjdENhY2hlKTsKIAogICAgIGF1dG8qIGF4Um9vdCA9IGF4T2Jq
ZWN0Q2FjaGUtPmdldE9yQ3JlYXRlKGRvY3VtZW50LnZpZXcoKSk7CiAgICAgaWYgKGF4Um9vdCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCA5MWI5ODIzYzhhMmJlNzE0OTM0OTJhYzJhM2Fl
YWYyNWMyODQ0OWNiLi5mZjQ0Zjc3NDU4ZTI0NTk0N2NmNzFkOTdjZGI3YTVkNGIzZGQ0NDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMTEyOSw2ICsxMTI5LDI4IEBAIFQqIGZpbmRBbmNl
c3Rvcihjb25zdCBUJiBvYmplY3QsIGJvb2wgaW5jbHVkZVNlbGYsIGNvbnN0IEYmIG1hdGNoZXMp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSB2
b2lkIHBlcmZvcm1GdW5jdGlvbk9uTWFpblRocmVhZChVJiYgbGFtYmRhKQoreworICAgIGlmIChp
c01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIGxhbWJkYSgpOworCisgICAgY2FsbE9uTWFp
blRocmVhZChbJmxhbWJkYV0geworICAgICAgICBsYW1iZGEoKTsKKyAgICB9KTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFQgcmV0cmlldmVWYWx1ZUZyb21N
YWluVGhyZWFkKFUmJiBsYW1iZGEpCit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAg
ICByZXR1cm4gbGFtYmRhKCk7CisKKyAgICBUIHZhbHVlOworICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmdmFsdWUsICZsYW1iZGFdIHsKKyAgICAgICAgdmFsdWUgPSBsYW1iZGEoKTsKKyAg
ICB9KTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEFjY2Vzc2liaWxp
dHkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYjdk
YTZhYWNkM2Q2MmE2NjUyNGU1YzFhZTJmMzhmYjYxYzY2YTFkYy4uZjM4YmQyNTA2ZjdiYTg2NGEy
MjQ4ZWQ3ODJhZWJhMWNmZWU0Yzc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zNTYyLDEx
ICszNTYyLDEwIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYUxpc3Rib3hW
aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuCiB2b2lkIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IHJlc3VsdCkKIHsKICAgICBBU1NFUlQocmVzdWx0LmlzRW1wdHkoKSk7Ci0gICAgICAgIAotICAg
IC8vIG9ubHkgbGlzdGJveGVzIGFyZSBhc2tlZCBmb3IgdGhlaXIgdmlzaWJsZSBjaGlsZHJlbi4g
CisKKyAgICAvLyBPbmx5IGxpc3Rib3hlcyBhcmUgYXNrZWQgZm9yIHRoZWlyIHZpc2libGUgY2hp
bGRyZW4uCisgICAgLy8gTmF0aXZlIGxpc3QgYm94ZXMgd291bGQgYmUgQWNjZXNzaWJpbGl0eUxp
c3RCb3hlcywgc28gb25seSBjaGVjayBmb3IgYXJpYSBsaXN0IGJveGVzLgogICAgIGlmIChhcmlh
Um9sZUF0dHJpYnV0ZSgpICE9IEFjY2Vzc2liaWxpdHlSb2xlOjpMaXN0Qm94KSB7Ci0gICAgICAg
IC8vIG5hdGl2ZSBsaXN0IGJveGVzIHdvdWxkIGJlIEFjY2Vzc2liaWxpdHlMaXN0Qm94ZXMsIHNv
IG9ubHkgY2hlY2sgZm9yIGFyaWEgbGlzdCBib3hlcwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICByZXR1cm4gYXJpYUxpc3Rib3hWaXNp
YmxlQ2hpbGRyZW4ocmVzdWx0KTsKQEAgLTM1NzQsOCArMzU3Myw2IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgcmVzCiAgCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnRhYkNoaWxkcmVu
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0KQogewotICAgIEFTU0VSVChyb2xl
VmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VGFiTGlzdCk7Ci0gICAgCiAgICAgZm9yIChj
b25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5pc1Rh
Ykl0ZW0oKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2hpbGQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmgKaW5kZXggOWVmYjIyYmVmMTdiODRjOTEyMGUwMTMxODIyNmJmOWEwNGE2YTM4OC4uNjhm
NTIzMWNmMGU0NzViMTcxMTQ3NzBhZDljNWZhNTYzZjYwMmMxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9y
UGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJRCk7CisgICAgQVhPYmpl
Y3RDYWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXhPYmplY3RDYWNoZTsg
fQorICAgIHZvaWQgc2V0QVhPYmplY3RDYWNoZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hl
KSB7IG1fYXhPYmplY3RDYWNoZSA9IGF4T2JqZWN0Q2FjaGU7IH0KIAogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiByb290Tm9kZSgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBmb2N1c2VkVUlFbGVtZW50KCk7CkBAIC03MSw2
ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEhhc2hNYXA8QVhJc29sYXRlZFRyZWVJRCwg
UmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVJRENhY2hlKCk7CiAgICAgc3RhdGljIEhhc2hNYXA8
UGFnZUlkZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlUGFnZUNhY2hlKCk7CiAK
KyAgICBBWE9iamVjdENhY2hlKiBtX2F4T2JqZWN0Q2FjaGUgeyBudWxscHRyIH07CisKICAgICAv
LyBPbmx5IGFjY2VzcyBvbiBBWCB0aHJlYWQgcmVxdWVzdGluZyBkYXRhLgogICAgIEhhc2hNYXA8
QVhJRCwgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+PiBtX3JlYWRlclRocmVhZE5vZGVNYXA7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCmluZGV4IDcxZTVkYzJjNDM3ZjIxYTZkMGE0OTcy
NmFiNjk2MWFiOWIwNThiNzYuLmY1YjBkZWE5ZWE2YmVhODFhZGMyOGIyYmU5ZDcxYzYzNjExYzY3
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNwcApAQCAtNjkzLDYgKzY5MywyMCBA
QCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OnVwZGF0ZUJhY2tpbmdTdG9yZSgpCiAgICAgfQogfQog
CitWZWN0b3I8UmVmUHRyPFJhbmdlPj4gQVhJc29sYXRlZE9iamVjdDo6ZmluZFRleHRSYW5nZXMo
QWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSBjb25zdCYgY3JpdGVyaWEpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxW
ZWN0b3I8UmVmUHRyPFJhbmdlPj4+KFsmY3JpdGVyaWEsIGF4SUQgPSBvYmplY3RJRCgpLCB0aGlz
XSAoKSAtPiBWZWN0b3I8UmVmUHRyPFJhbmdlPj4geworICAgICAgICByZXR1cm4gYXhPYmplY3RD
YWNoZSgpLT5vYmplY3RGcm9tQVhJRChheElEKS0+ZmluZFRleHRSYW5nZXMoY3JpdGVyaWEpOwor
ICAgIH0pOworfQorCitWZWN0b3I8U3RyaW5nPiBBWElzb2xhdGVkT2JqZWN0OjpwZXJmb3JtVGV4
dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiBjb25zdCYgdGV4dE9wZXJhdGlv
bikKK3sKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhy
ZWFkPFZlY3RvcjxTdHJpbmc+PihbJnRleHRPcGVyYXRpb24sIGF4SUQgPSBvYmplY3RJRCgpLCB0
aGlzXSAoKSAtPiBWZWN0b3I8U3RyaW5nPiB7CisgICAgICAgIHJldHVybiBheE9iamVjdENhY2hl
KCktPm9iamVjdEZyb21BWElEKGF4SUQpLT5wZXJmb3JtVGV4dE9wZXJhdGlvbih0ZXh0T3BlcmF0
aW9uKTsKKyAgICB9KTsKK30KKwogYm9vbCBBWElzb2xhdGVkT2JqZWN0OjpyZXBsYWNlVGV4dElu
UmFuZ2UoY29uc3QgU3RyaW5nJiwgY29uc3QgUGxhaW5UZXh0UmFuZ2UmKQogewogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTMzMSw4ICsxMzQ1LDcgQEAgdm9pZCBBWElzb2xhdGVkT2Jq
ZWN0OjplbGVtZW50c0Zyb21BdHRyaWJ1dGUoVmVjdG9yPEVsZW1lbnQqPiYsIGNvbnN0IFF1YWxp
ZmllZE4KIAogQVhPYmplY3RDYWNoZSogQVhJc29sYXRlZE9iamVjdDo6YXhPYmplY3RDYWNoZSgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIHRyZWUoKS0+YXhPYmplY3RDYWNoZSgpOwogfQogCiBFbGVtZW50KiBBWElz
b2xhdGVkT2JqZWN0OjphbmNob3JFbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVO
b2RlLmgKaW5kZXggOWRhZTJmMTI2Mjc2YjhjMDNiZTg4ZjUwOGU5MmQxZGMyM2M2ZTI5Ny4uYWVh
OGZjMWFjMGNlNjhmYzNhMzhhNTE4MTk5NmRmYTUyZWVkYTkxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZFRyZWVOb2RlLmgKQEAgLTUyMSw2ICs1MjEsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQnVz
eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNCdXN5KTsgfQogICAgIGJvb2wgaXNJbmxpbmVUZXh0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0lubGluZVRleHQp
OyB9CiAKKyAgICAvLyBQYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZSByZXRyaWV2YWwuCisgICAgVmVj
dG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0UmFuZ2VzKEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0
Q3JpdGVyaWEgY29uc3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8U3RyaW5nPiBwZXJm
b3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiBjb25zdCYpIG92ZXJy
aWRlOworCiAgICAgLy8gQXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSB0aGUgcm9vdCBub2RlIG9u
bHkgc28gdGhhdCB0aGUgZGF0YSBpc24ndCBkdXBsaWNhdGVkIG9uIGVhY2ggbm9kZS4KICAgICB1
aW50NjRfdCBzZXNzaW9uSUQoKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgZG9jdW1lbnRV
UkkoKSBjb25zdCBvdmVycmlkZTsKQEAgLTU5OCw4ICs2MDIsNiBAQCBwcml2YXRlOgogICAgIFN0
cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSA9
IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBTdHJpbmcoKTsgfQogICAgIFJlZlB0cjxSYW5nZT4gZ2V0TWlzc3BlbGxpbmdSYW5nZShS
ZWZQdHI8UmFuZ2U+IGNvbnN0JiwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZvaWQgZmluZE1hdGNoaW5nT2JqZWN0
cyhBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBvdmVycmlkZSB7IH0KLSAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZmluZFRleHRSYW5n
ZXMoQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSBjb25zdCYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PigpOyB9Ci0gICAgVmVjdG9yPFN0cmluZz4g
cGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gY29uc3QmKSBv
dmVycmlkZSB7IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOyB9CiAgICAgRmxvYXRSZWN0IGNvbnZl
cnRGcmFtZVRvU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25T
cGFjZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KICAgICB2b2lkIGlu
Y3JlbWVudCgpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgZGVjcmVtZW50KCkgb3ZlcnJpZGUgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDY2OTMyZDQ0OGNh
Y2UwZDQ3MTMwYTQ4NzBkZThlOTk4ZDNjNmUyNTMuLmMxYTBiNmEyNjJhZWExMDlmOWMxMmIzY2Ey
OWUzZTU2YmU4MzI4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CkBAIC01NTUsMzMgKzU1NSwxMSBAQCBleHRlcm4gIkMiIEFYVUlFbGVtZW50UmVmIE5TQWNjZXNz
aWJpbGl0eUNyZWF0ZUFYVUlFbGVtZW50UmVmKGlkIGVsZW1lbnQpOwogICAgIFtzdXBlciBkZXRh
Y2hdOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgdm9pZCBwZXJmb3JtQWNjZXNz
aWJpbGl0eUZ1bmN0aW9uT25NYWluVGhyZWFkKFUmJiBsYW1iZGEpCi17Ci0gICAgaWYgKGlzTWFp
blRocmVhZCgpKQotICAgICAgICByZXR1cm4gbGFtYmRhKCk7Ci0KLSAgICBjYWxsT25NYWluVGhy
ZWFkKFsmbGFtYmRhXSB7Ci0gICAgICAgIGxhbWJkYSgpOwotICAgIH0pOwotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgVCByZXRyaWV2ZUFjY2Vzc2liaWxpdHlW
YWx1ZUZyb21NYWluVGhyZWFkKFUmJiBsYW1iZGEpCi17Ci0gICAgaWYgKGlzTWFpblRocmVhZCgp
KQotICAgICAgICByZXR1cm4gbGFtYmRhKCk7Ci0gICAgCi0gICAgVCB2YWx1ZTsKLSAgICBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChbJnZhbHVlLCAmbGFtYmRhXSB7Ci0gICAgICAgIHZhbHVlID0g
bGFtYmRhKCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIHZhbHVlOwotfQotCiAtIChpZClhdHRhY2ht
ZW50VmlldwogewogICAgIEFTU0VSVChtX29iamVjdC0+aXNBdHRhY2htZW50KCkpOwogCi0gICAg
cmV0dXJuIHJldHJpZXZlQWNjZXNzaWJpbGl0eVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFtwcm90
ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxm
KV0gKCkgLT4gaWQgeworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJv
bU1haW5UaHJlYWQ8aWQ+KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgewogICAgICAgICBhdXRvKiB3aWRnZXQg
PSBwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKICAg
ICAgICAgaWYgKCF3aWRnZXQpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwpAQCAtMTkyMCw3ICsx
ODk4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKIC0gKE5TQXJy
YXkqKXJlbmRlcldpZGdldENoaWxkcmVuCiB7Ci0gICAgcmV0dXJuIHJldHJpZXZlQWNjZXNzaWJp
bGl0eVZhbHVlRnJvbU1haW5UaHJlYWQ8TlNBcnJheSAqPihbcHJvdGVjdGVkU2VsZiA9IFJldGFp
blB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IE5TQXJyYXkg
KiB7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVh
ZDxOU0FycmF5ICo+KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gTlNBcnJheSAqIHsKICAgICAgICAgV2lkZ2V0KiB3
aWRnZXQgPSBwcm90ZWN0ZWRTZWxmLT5tX29iamVjdC0+d2lkZ2V0KCk7CiAgICAgICAgIGlmICgh
d2lkZ2V0KQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTE5NzMsNyArMTk1MSw3IEBAIHN0
YXRpYyBOU011dGFibGVBcnJheSAqY29udmVydFN0cmluZ3NUb05TQXJyYXkoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHZlY3RvcikKIAogLSAoaWQpYXNzb2NpYXRlZFBsdWdpblBhcmVudAogewotICAg
IHJldHVybiByZXRyaWV2ZUFjY2Vzc2liaWxpdHlWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJv
dGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2Vs
ZildICgpIC0+IGlkIHsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZy
b21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKICAgICAgICAgaWYgKCFwcm90ZWN0
ZWRTZWxmLT5tX29iamVjdCB8fCAhcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QtPmhhc0FwcGxlUERG
QW5ub3RhdGlvbkF0dHJpYnV0ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKQEAg
LTIzMjYsNyArMjMwNCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogCiAt
IChpZClzY3JvbGxWaWV3UGFyZW50CiB7Ci0gICAgcmV0dXJuIHJldHJpZXZlQWNjZXNzaWJpbGl0
eVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFtwcm90ZWN0ZWRT
ZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkg
LT4gaWQgewogICAgICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Pihwcm90ZWN0
ZWRTZWxmLT5tX29iamVjdCkpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0yMzcxLDcg
KzIzNDksNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpd2lu
ZG93RWxlbWVudDooTlNTdHJpbmcqKWF0dHJpYnV0ZU5hbWUKIHsKLSAgICByZXR1cm4gcmV0cmll
dmVBY2Nlc3NpYmlsaXR5VmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW2F0dHJpYnV0ZU5hbWUsIHBy
b3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNl
bGYpXSAoKSAtPiBpZCB7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVG
cm9tTWFpblRocmVhZDxpZD4oW2F0dHJpYnV0ZU5hbWUsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5Q
dHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7CiAgICAg
ICAgIGlkIHJlbW90ZVBhcmVudCA9IFtwcm90ZWN0ZWRTZWxmIHJlbW90ZUFjY2Vzc2liaWxpdHlQ
YXJlbnRPYmplY3RdOwogICAgICAgICBpZiAocmVtb3RlUGFyZW50KSB7CiAgICAgICAgICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgpAQCAtMzQ5Nyw3ICszNDc1LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKHZvaWQpYWNjZXNzaWJpbGl0
eVNob3dDb250ZXh0TWVudQogewotICAgIHBlcmZvcm1BY2Nlc3NpYmlsaXR5RnVuY3Rpb25Pbk1h
aW5UaHJlYWQoW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI+KHNlbGYpXSB7CisgICAgQWNjZXNzaWJpbGl0eTo6cGVyZm9ybUZ1bmN0aW9uT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyPihzZWxmKV0gewogICAgICAgICBbcHJvdGVjdGVkU2VsZiBfYWNjZXNzaWJpbGl0
eVNob3dDb250ZXh0TWVudV07CiAgICAgfSk7CiB9CkBAIC0zOTI1LDEwICszOTAzLDEyIEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIC8vIGRpc3BhdGNoCiAgICAg
aWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdFRleHRX
aXRoQ3JpdGVyaWFQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewogICAgICAgICAvLyBUbyBiZSBk
ZXByZWNhdGVkLgotICAgICAgICBhdXRvIGNyaXRlcmlhID0gYWNjZXNzaWJpbGl0eVRleHRDcml0
ZXJpYUZvclBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoZGljdGlvbmFyeSk7Ci0gICAgICAgIGNyaXRl
cmlhLnNlY29uZC50ZXh0UmFuZ2VzID0gbV9vYmplY3QtPmZpbmRUZXh0UmFuZ2VzKGNyaXRlcmlh
LmZpcnN0KTsKLSAgICAgICAgQVNTRVJUKGNyaXRlcmlhLnNlY29uZC50ZXh0UmFuZ2VzLnNpemUo
KSA8PSAxKTsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0ID0gbV9vYmplY3QtPnBlcmZv
cm1UZXh0T3BlcmF0aW9uKGNyaXRlcmlhLnNlY29uZCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
QWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFZlY3RvcjxTdHJpbmc+
PihbZGljdGlvbmFyeSwgc2VsZl0gKCkgLT4gVmVjdG9yPFN0cmluZz4geworICAgICAgICAgICAg
YXV0byBjcml0ZXJpYSA9IGFjY2Vzc2liaWxpdHlUZXh0Q3JpdGVyaWFGb3JQYXJhbWV0ZXJpemVk
QXR0cmlidXRlKGRpY3Rpb25hcnkpOworICAgICAgICAgICAgY3JpdGVyaWEuc2Vjb25kLnRleHRS
YW5nZXMgPSBtX29iamVjdC0+ZmluZFRleHRSYW5nZXMoY3JpdGVyaWEuZmlyc3QpOworICAgICAg
ICAgICAgQVNTRVJUKGNyaXRlcmlhLnNlY29uZC50ZXh0UmFuZ2VzLnNpemUoKSA8PSAxKTsKKyAg
ICAgICAgICAgIHJldHVybiBtX29iamVjdC0+cGVyZm9ybVRleHRPcGVyYXRpb24oY3JpdGVyaWEu
c2Vjb25kKTsKKyAgICAgICAgfSk7CiAgICAgICAgIEFTU0VSVChyZXN1bHQuc2l6ZSgpIDw9IDEp
OwogICAgICAgICBpZiAocmVzdWx0LnNpemUoKSA+IDApCiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0WzBdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGJhNzc2MjgxNWU3NGJhMzllZjdlYmJkNDQ2MzgzYWMxYmFlNmY2MDEuLjNiMzFiYTFlNzNh
MDNmYTJjOWNiMzY5NWI0NjVmMjY3Y2QyZWRlZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0xMi0xMyAgQW5k
cmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgSXNvbGF0ZWQg
b2JqZWN0IGltcGxlbWVudGF0aW9uIG9mIHBhcmFtZXRlcml6ZWQgYXR0cmlidXRlIFNlbGVjdFRl
eHRXaXRoQ3JpdGVyaWEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDUyMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9v
dEVsZW1lbnQpOiBBbHdheXMgcnVuIGluIG15IHRocmVhZC4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OmV4ZWN1dGUpOiBEaXNwYXRjaGVzIHRvIHRoZSBzZWNvbmRhcnkg
dGhyZWFkLiBTcGlucyB0aGUgbWFpbiBsb29wIHRvIGFsbG93IHBhcmFtZXRlcml6ZWQgYXR0cmli
dXRlcyBtZXRob2RzIHRvIGV4ZWN1dGUgaW4gbWFpbiB0aHJlYWQuCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMu
bW06CisgICAgICAgIChXVFI6OmZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
bGVjdFRleHRXaXRoQ3JpdGVyaWEpOgorCiAyMDE5LTEyLTA5ICB5b3Vlbm4gZmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gb3B0aW9uIHRvIGNhcHR1cmUgYXVkaW8g
aW4gR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggZjhh
MzQ4NjUwM2E5YjQ3ZmE1NGNjZTZmNmQwMDg4YzFiZWViNGExNi4uN2IwNGFhZWVjZGMwZmQ3ZmZk
ZjQ0NzJiZGM1MzE5YTIyNzNlMDkyMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5j
cHAKQEAgLTc2LDIyICs3NiwxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjplbmhh
bmNlZEFjY2Vzc2liaWxpdHlFbmFibGVkKCkKIFJlZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnQoKQogewogICAgIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpOwot
ICAgIFBsYXRmb3JtVUlFbGVtZW50IHJvb3QgPSBudWxscHRyOworICAgIFBsYXRmb3JtVUlFbGVt
ZW50IHJvb3QgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybVVJRWxlbWVudD4oV0tBY2Nlc3NpYmlsaXR5
Um9vdE9iamVjdChwYWdlKSk7CiAKLSAgICBpZiAobV91c2VBWFRocmVhZCkgewotICAgICAgICBB
WFRocmVhZDo6ZGlzcGF0Y2goWyZyb290LCBwYWdlLCB0aGlzXSB7Ci0gICAgICAgICAgICByb290
ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1VSUVsZW1lbnQ+KFdLQWNjZXNzaWJpbGl0eVJvb3RPYmpl
Y3QocGFnZSkpOwotICAgICAgICAgICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgICAgIH0p
OwotCi0gICAgICAgIG1fc2VtYXBob3JlLndhaXQoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBy
b290ID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1VSUVsZW1lbnQ+KFdLQWNjZXNzaWJpbGl0eVJvb3RP
YmplY3QocGFnZSkpOwotCi0gICAgICAgIC8vIFNldCBtX3VzZUFYVGhyZWFkIHRvIHRydWUgZm9y
IG5leHQgcmVxdWVzdC4KLSAgICAgICAgaWYgKFdLQWNjZXNzaWJpbGl0eUNhblVzZVNlY29uZGFy
eUFYVGhyZWFkKHBhZ2UpKQotICAgICAgICAgICAgbV91c2VBWFRocmVhZCA9IHRydWU7Ci0gICAg
fQorICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgYSByb290IGFuZCB0aGUgaXNvbGF0ZWQgdHJlZSBp
cyBnZW5lcmF0ZWQsIHNldAorICAgIC8vIG1fdXNlQVhUaHJlYWQgdG8gdHJ1ZSBmb3IgbmV4dCBy
ZXF1ZXN0IHRvIGJlIGhhbmRsZWQgaW4gdGhlIHNlY29uZGFyeSB0aHJlYWQuCisgICAgaWYgKFdL
QWNjZXNzaWJpbGl0eUNhblVzZVNlY29uZGFyeUFYVGhyZWFkKEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKS5wYWdlKCktPnBhZ2UoKSkpCisgICAgICAgIG1fdXNlQVhUaHJlYWQgPSB0cnVlOwog
CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShyb290KTsKIH0KQEAg
LTExMSw2ICsxMDEsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpleGVjdXRlKEZ1
bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKICAgICAgICAgICAgIG1fc2VtYXBob3JlLnNpZ25h
bCgpOwogICAgICAgICB9KTsKIAorICAgICAgICBDRlJ1bkxvb3BSdW5Jbk1vZGUoa0NGUnVuTG9v
cERlZmF1bHRNb2RlLCAuMjUsIGZhbHNlKTsKICAgICAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwog
ICAgIH0gZWxzZQogICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlck1hYy5tbQppbmRleCBkMWRkMjI4MDcxMzIxMzMwYjNkYjhjNWQ1MTBmZGJl
ZTAwZTg4ZDdhLi5hMzIzMjc4ODE4YjhhNDY3NTFiN2JmNWZmOTY4YWZhOTA5YWFhZDQ4IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbQpAQCAtODEsNiArODEs
NyBAQCBzdGF0aWMgaWQgZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKGlkIG9iaiwgTlNTdHJpbmcg
KmlkQXR0cmlidXRlKQogICAgICAgICByZXR1cm4gb2JqOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKIAorICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkgKmNoaWxk
cmVuID0gW29iaiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5BdHRyaWJ1dGVdOwogICAgIE5TVUludGVnZXIgY2hpbGRyZW5Db3VudCA9IFtjaGlsZHJl
biBjb3VudF07CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY2hpbGRyZW5Db3VudDsg
KytpKSB7CkBAIC04OCw2ICs4OSw3IEBAIHN0YXRpYyBpZCBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5
SWQoaWQgb2JqLCBOU1N0cmluZyAqaWRBdHRyaWJ1dGUpCiAgICAgICAgIGlmIChyZXN1bHQpCiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTk1LDEyICs5NywyNCBAQCBzdGF0aWMg
aWQgZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKGlkIG9iaiwgTlNTdHJpbmcgKmlkQXR0cmlidXRl
KQogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
OjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWRBdHRyaWJ1dGUpCiB7CiAgICAg
V0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgp
LT5wYWdlKCk7Ci0gICAgaWQgcm9vdCA9IChfX2JyaWRnZSBpZClXS0FjY2Vzc2liaWxpdHlSb290
T2JqZWN0KHBhZ2UpOworICAgIFBsYXRmb3JtVUlFbGVtZW50IHJvb3QgPSBudWxscHRyOworCisg
ICAgZXhlY3V0ZShbJnBhZ2UsICZyb290XSB7CisgICAgICAgIHJvb3QgPSBzdGF0aWNfY2FzdDxQ
bGF0Zm9ybVVJRWxlbWVudD4oV0tBY2Nlc3NpYmlsaXR5Um9vdE9iamVjdChwYWdlKSk7CisgICAg
fSk7CisKKyAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIGEgcm9vdCBhbmQgdGhlIGlzb2xhdGVkIHRy
ZWUgaXMgZ2VuZXJhdGVkLCBzZXQKKyAgICAvLyBtX3VzZUFYVGhyZWFkIHRvIHRydWUgZm9yIG5l
eHQgcmVxdWVzdCB0byBiZSBoYW5kbGVkIGluIHRoZSBzZWNvbmRhcnkgdGhyZWFkLgorICAgIGlm
IChXS0FjY2Vzc2liaWxpdHlDYW5Vc2VTZWNvbmRhcnlBWFRocmVhZChJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkpKQorICAgICAgICBtX3VzZUFYVGhyZWFkID0gdHJ1
ZTsKKworICAgIGlkIHJlc3VsdDsKKyAgICBleGVjdXRlKFsmcm9vdCwgJmlkQXR0cmlidXRlLCAm
cmVzdWx0XSB7CisgICAgICAgIHJlc3VsdCA9IGZpbmRBY2Nlc3NpYmxlT2JqZWN0QnlJZChyb290
LCBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmlkQXR0cmlidXRlXSk7CisgICAgfSk7
CiAKLSAgICBpZCByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQocm9vdCwgW05TU3Ry
aW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjppZEF0dHJpYnV0ZV0pOwogICAgIGlmIChyZXN1bHQp
CiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUocmVzdWx0KTsK
LQogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQppbmRleCBjNTY5ZjY4NjM2NGE2MTljNTI2ZWFjOGIxYTFkMTNiNWQxNjI5
NjJiLi5iNjQyYmNkYTk3MmNhNDIwNGNiNzVjMWNkODBkZGQwYTYxZjY4YWFlIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KQEAgLTEyNTMsNyArMTI1MywxMSBA
QCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0
VGV4dFdpdGhDcml0ZXJpYShKU0NvbnRleAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIE5TRGljdGlvbmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSA9IHNlbGVjdFRleHRQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yQ3JpdGVyaWEoY29udGV4dCwgYW1iaWd1aXR5UmVzb2x1
dGlvbiwgc2VhcmNoU3RyaW5ncywgcmVwbGFjZW1lbnRTdHJpbmcsIGFjdGl2aXR5KTsKLSAgICBp
ZCByZXN1bHQgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYU2Vs
ZWN0VGV4dFdpdGhDcml0ZXJpYSIgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVd
OworICAgIGlkIHJlc3VsdDsKKyAgICBhdXRvIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gSW5q
ZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7CisgICAg
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPmV4ZWN1dGUoWyZwYXJhbWV0ZXJpemVkQXR0cmlidXRl
LCAmcmVzdWx0LCB0aGlzXSB7CisgICAgICAgIHJlc3VsdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTZWxlY3RUZXh0V2l0aENyaXRlcmlhIiBmb3JQYXJhbWV0
ZXI6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CisgICAgfSk7CiAgICAgaWYgKFtyZXN1bHQgaXNL
aW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFtyZXN1bHQgY3Jl
YXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385642</attachid>
            <date>2019-12-13 14:12:12 -0800</date>
            <delta_ts>2019-12-16 07:52:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205210-20191213141211.patch</filename>
            <type>text/plain</type>
            <size>25728</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWNjZDAzMTQxZDAxZDI5
ODBjNjE5NjcxMTAyZGZmNzBkNzFiYmIxMy4uMjg2YzkxYjI1NjFlNzI3OTQwN2E0YTJmMTRlZDg2
OGViNmRmMzliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTEyLTEzICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJc29sYXRlZCBv
YmplY3QgaW1wbGVtZW50YXRpb24gb2YgcGFyYW1ldGVyaXplZCBhdHRyaWJ1dGUgU2VsZWN0VGV4
dFdpdGhDcml0ZXJpYS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNTIxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2ZpbmQtYW5kLXJlcGxhY2UtbWF0
Y2gtY2FwaXRhbGl6YXRpb24uaHRtbCBleGVyY2lzZSB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKKyAg
ICAgICAgUmVxdWVzdHMgZm9yIHBhcmFtZXRlcml6ZWQgYXR0cmlidXRlcyB0aGF0IHJlcXVpcmUg
Y29tcHV0YXRpb25zIGluCisgICAgICAgIHRoZSBXZWJDb3JlIERPTSBuZWVkIHRvIGJlIGRpc3Bh
dGNoZWQgdG8gdGhlIG1haW4gdGhyZWFkLiBUaGlzCisgICAgICAgIGNoYW5nZSBpcyB0aGUgYmx1
ZXByaW50IGZvciBhbGwgb3RoZXIgYXR0cmlidXRlcyB0byBmb2xsb3cuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6aXNvbGF0ZWRUcmVlUm9vdE9iamVjdCk6IFRoZSBpc29sYXRlZCB0cmVlIHJvb3Qg
b2JqZWN0IGlzIGFsd2F5cyByZXRyaWV2ZWQgaW4gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Z2VuZXJhdGVJc29sYXRlZFRyZWUpOiBTZXRzIHRoZSBB
WE9iamVjdENhY2hlIGZvciB0aGUgZ2VuZXJhdGVkIElzb2xhdGVkVHJlZS4KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDogQWRkZWQgdGhlIHRl
bXBsYXRlIGZ1bmN0aW9ucyB0byBkaXNwYXRjaCB0byB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OjpwZXJmb3JtRnVuY3Rpb25Pbk1haW5UaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhy
ZWFkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwOiBSZW1vdmVkIG9ic29sZXRlIGFzc2VydHMuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGFiQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6IEl0IG5vdyBob2xkcyBhIHJl
ZmVyZW5jZSB0byB0aGUgQVhPYmplY3RDYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpheE9iamVjdENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpzZXRBWE9iamVjdENhY2hlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6ZmluZFRleHRSYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZE9iamVjdDo6cGVyZm9ybVRleHRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6YXhPYmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmg6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06IE1vdmVk
IHRlbXBsYXRlIGZ1bmN0aW9ucyB0byBkaXNwYXRjaCB0byB0aGUgbWFpbiB0aHJlYWQgaW50byB0
aGUgQWNjZXNzaWJpbGl0eSBuYW1lc3BhY2UgdG8gdXNlIHRoZW0gaW4gdGhlIGlzb2xhdGVkIG9i
amVjdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYXR0YWNobWVudFZpZXddKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgYXNzb2NpYXRlZFBsdWdpblBhcmVudF0pOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzY3JvbGxWaWV3UGFyZW50XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHdpbmRvd0VsZW1lbnQ6XSk6CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlTaG93Q29u
dGV4dE1lbnVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFtZXRlcjpdKToKKyAgICAgICAgKHBlcmZv
cm1BY2Nlc3NpYmlsaXR5RnVuY3Rpb25Pbk1haW5UaHJlYWQpOiBNb3ZlZC4KKyAgICAgICAgKHJl
dHJpZXZlQWNjZXNzaWJpbGl0eVZhbHVlRnJvbU1haW5UaHJlYWQpOiBNb3ZlZC4KKwogMjAxOS0x
Mi0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyZWFtbGlu
ZSBQT0RJbnRlcnZhbFRyZWUgY29kZSBhbmQgcmVtb3ZlIFZhbHVlVG9TdHJpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDVhMjAyNDQ3
NjZhMGY2OGM5MGNiNGE3NDI1NzQ1MzRlMDA4MWFiYzUuLmY4NmYzNzMwMDk5ZDNhODI1MTNlMWMz
NDk3Y2I5NTc0MWIwOTI5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcApAQCAtNzM1LDI1ICs3MzUsMjMgQEAgQVhDb3JlT2JqZWN0KiBBWE9i
amVjdENhY2hlOjpyb290T2JqZWN0KCkKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRF
RF9UUkVFKQogQVhDb3JlT2JqZWN0KiBBWE9iamVjdENhY2hlOjppc29sYXRlZFRyZWVSb290T2Jq
ZWN0KCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gcGFnZUlEID0g
bV9kb2N1bWVudC5wYWdlSUQoKTsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgq
cGFnZUlEKTsKLSAgICBpZiAoIXRyZWUgJiYgaXNNYWluVGhyZWFkKCkpIHsKKyAgICBpZiAoIXRy
ZWUpIHsKICAgICAgICAgdHJlZSA9IGdlbmVyYXRlSXNvbGF0ZWRUcmVlKCpwYWdlSUQsIG1fZG9j
dW1lbnQpOwogICAgICAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIGNyZWF0ZWQgb3VyIHRyZWUsIGlu
aXRpYWxpemUgdGhlIHNlY29uZGFyeSB0aHJlYWQsCiAgICAgICAgIC8vIHNvIGZ1dHVyZSByZXF1
ZXN0cyBjb21lIGluIG9uIHRoZSBvdGhlciB0aHJlYWQuCiAgICAgICAgIF9BWFVJRWxlbWVudFVz
ZVNlY29uZGFyeUFYVGhyZWFkKHRydWUpOwotICAgICAgICByZXR1cm4gdHJlZS0+cm9vdE5vZGUo
KS5nZXQoKTsKICAgICB9CiAKLSAgICBpZiAodHJlZSAmJiAhaXNNYWluVGhyZWFkKCkpIHsKLSAg
ICAgICAgdHJlZS0+YXBwbHlQZW5kaW5nQ2hhbmdlcygpOworICAgIGlmICh0cmVlKQogICAgICAg
ICByZXR1cm4gdHJlZS0+cm9vdE5vZGUoKS5nZXQoKTsKLSAgICB9CiAKLSAgICAvLyBTaG91bGQg
bm90IGdldCBoZXJlLCBjb3VsZG4ndCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBJc29sYXRlZFRyZWUu
CisgICAgLy8gU2hvdWxkIG5vdCBnZXQgaGVyZSwgY291bGRuJ3QgY3JlYXRlIHRoZSBJc29sYXRl
ZFRyZWUuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CkBAIC0zMDk0LDYgKzMwOTIsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYT2JqZWN0Q2FjaGU6
OmdlbmVyYXRlSXNvbGF0ZWRUcmVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgRAogICAgIGF1dG8q
IGF4T2JqZWN0Q2FjaGUgPSBkb2N1bWVudC5heE9iamVjdENhY2hlKCk7CiAgICAgaWYgKCFheE9i
amVjdENhY2hlKQogICAgICAgICByZXR1cm4gbWFrZVJlZigqdHJlZSk7CisgICAgdHJlZS0+c2V0
QVhPYmplY3RDYWNoZShheE9iamVjdENhY2hlKTsKIAogICAgIGF1dG8qIGF4Um9vdCA9IGF4T2Jq
ZWN0Q2FjaGUtPmdldE9yQ3JlYXRlKGRvY3VtZW50LnZpZXcoKSk7CiAgICAgaWYgKGF4Um9vdCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCA5MWI5ODIzYzhhMmJlNzE0OTM0OTJhYzJhM2Fl
YWYyNWMyODQ0OWNiLi5mZjQ0Zjc3NDU4ZTI0NTk0N2NmNzFkOTdjZGI3YTVkNGIzZGQ0NDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMTEyOSw2ICsxMTI5LDI4IEBAIFQqIGZpbmRBbmNl
c3Rvcihjb25zdCBUJiBvYmplY3QsIGJvb2wgaW5jbHVkZVNlbGYsIGNvbnN0IEYmIG1hdGNoZXMp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSB2
b2lkIHBlcmZvcm1GdW5jdGlvbk9uTWFpblRocmVhZChVJiYgbGFtYmRhKQoreworICAgIGlmIChp
c01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIGxhbWJkYSgpOworCisgICAgY2FsbE9uTWFp
blRocmVhZChbJmxhbWJkYV0geworICAgICAgICBsYW1iZGEoKTsKKyAgICB9KTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFQgcmV0cmlldmVWYWx1ZUZyb21N
YWluVGhyZWFkKFUmJiBsYW1iZGEpCit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAg
ICByZXR1cm4gbGFtYmRhKCk7CisKKyAgICBUIHZhbHVlOworICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmdmFsdWUsICZsYW1iZGFdIHsKKyAgICAgICAgdmFsdWUgPSBsYW1iZGEoKTsKKyAg
ICB9KTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEFjY2Vzc2liaWxp
dHkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYjdk
YTZhYWNkM2Q2MmE2NjUyNGU1YzFhZTJmMzhmYjYxYzY2YTFkYy4uYTg3MjM3YzlkOTYxN2NmODBi
YWQyNjI4YjZmOWJjNTNhN2U3MjllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zNTYyLDIw
ICszNTYyLDE5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYUxpc3Rib3hW
aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuCiB2b2lkIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IHJlc3VsdCkKIHsKICAgICBBU1NFUlQocmVzdWx0LmlzRW1wdHkoKSk7Ci0gICAgICAgIAotICAg
IC8vIG9ubHkgbGlzdGJveGVzIGFyZSBhc2tlZCBmb3IgdGhlaXIgdmlzaWJsZSBjaGlsZHJlbi4g
Ci0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RC
b3gpIHsKLSAgICAgICAgLy8gbmF0aXZlIGxpc3QgYm94ZXMgd291bGQgYmUgQWNjZXNzaWJpbGl0
eUxpc3RCb3hlcywgc28gb25seSBjaGVjayBmb3IgYXJpYSBsaXN0IGJveGVzCi0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgLy8gT25seSBsaXN0Ym94ZXMgYXJlIGFza2VkIGZv
ciB0aGVpciB2aXNpYmxlIGNoaWxkcmVuLgorICAgIC8vIE5hdGl2ZSBsaXN0IGJveGVzIHdvdWxk
IGJlIEFjY2Vzc2liaWxpdHlMaXN0Qm94ZXMsIHNvIG9ubHkgY2hlY2sgZm9yIGFyaWEgbGlzdCBi
b3hlcy4KKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGlzdEJveCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICByZXR1cm4gYXJpYUxpc3Rib3hW
aXNpYmxlQ2hpbGRyZW4ocmVzdWx0KTsKIH0KICAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6dGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHQpCiB7
Ci0gICAgQVNTRVJUKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0KTsK
LSAgICAKKyAgICBpZiAocm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3Qp
CisgICAgICAgIHJldHVybjsKKwogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJl
bigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aXNUYWJJdGVtKCkpCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IDllZmIyMmJlZjE3Yjg0
YzkxMjBlMDEzMTgyMjZiZjlhMDRhNmEzODguLjY4ZjUyMzFjZjBlNDc1YjE3MTE0NzcwYWQ5YzVm
YTU2M2Y2MDJjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRl
VHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvcklE
KEFYSXNvbGF0ZWRUcmVlSUQpOworICAgIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUoKSBj
b25zdCB7IHJldHVybiBtX2F4T2JqZWN0Q2FjaGU7IH0KKyAgICB2b2lkIHNldEFYT2JqZWN0Q2Fj
aGUoQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSkgeyBtX2F4T2JqZWN0Q2FjaGUgPSBheE9i
amVjdENhY2hlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QVhJc29sYXRlZE9iamVj
dD4gcm9vdE5vZGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QVhJc29sYXRlZE9iamVj
dD4gZm9jdXNlZFVJRWxlbWVudCgpOwpAQCAtNzEsNiArNzMsOCBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBIYXNoTWFwPEFYSXNvbGF0ZWRUcmVlSUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVl
SURDYWNoZSgpOwogICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29s
YXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgpOwogCisgICAgQVhPYmplY3RDYWNoZSogbV9heE9i
amVjdENhY2hlIHsgbnVsbHB0ciB9OworCiAgICAgLy8gT25seSBhY2Nlc3Mgb24gQVggdGhyZWFk
IHJlcXVlc3RpbmcgZGF0YS4KICAgICBIYXNoTWFwPEFYSUQsIFJlZjxBWElzb2xhdGVkT2JqZWN0
Pj4gbV9yZWFkZXJUaHJlYWROb2RlTWFwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNw
cAppbmRleCA3MWU1ZGMyYzQzN2YyMWE2ZDBhNDk3MjZhYjY5NjFhYjliMDU4Yjc2Li5mNWIwZGVh
OWVhNmJlYTgxYWRjMjhiMmJlOWQ3MWM2MzYxMWM2NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlTm9kZS5jcHAKQEAgLTY5Myw2ICs2OTMsMjAgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojp1
cGRhdGVCYWNraW5nU3RvcmUoKQogICAgIH0KIH0KIAorVmVjdG9yPFJlZlB0cjxSYW5nZT4+IEFY
SXNvbGF0ZWRPYmplY3Q6OmZpbmRUZXh0UmFuZ2VzKEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3Jp
dGVyaWEgY29uc3QmIGNyaXRlcmlhKSBjb25zdAoreworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8VmVjdG9yPFJlZlB0cjxSYW5nZT4+PihbJmNy
aXRlcmlhLCBheElEID0gb2JqZWN0SUQoKSwgdGhpc10gKCkgLT4gVmVjdG9yPFJlZlB0cjxSYW5n
ZT4+IHsKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+b2JqZWN0RnJvbUFYSUQoYXhJ
RCktPmZpbmRUZXh0UmFuZ2VzKGNyaXRlcmlhKTsKKyAgICB9KTsKK30KKworVmVjdG9yPFN0cmlu
Zz4gQVhJc29sYXRlZE9iamVjdDo6cGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRl
eHRPcGVyYXRpb24gY29uc3QmIHRleHRPcGVyYXRpb24pCit7CisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxWZWN0b3I8U3RyaW5nPj4oWyZ0ZXh0
T3BlcmF0aW9uLCBheElEID0gb2JqZWN0SUQoKSwgdGhpc10gKCkgLT4gVmVjdG9yPFN0cmluZz4g
eworICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5vYmplY3RGcm9tQVhJRChheElEKS0+
cGVyZm9ybVRleHRPcGVyYXRpb24odGV4dE9wZXJhdGlvbik7CisgICAgfSk7Cit9CisKIGJvb2wg
QVhJc29sYXRlZE9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFBsYWluVGV4dFJhbmdlJikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzMzEs
OCArMTM0NSw3IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudHNGcm9tQXR0cmlidXRl
KFZlY3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROCiAKIEFYT2JqZWN0Q2FjaGUqIEFY
SXNvbGF0ZWRPYmplY3Q6OmF4T2JqZWN0Q2FjaGUoKSBjb25zdAogewotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiB0cmVlKCktPmF4T2Jq
ZWN0Q2FjaGUoKTsKIH0KIAogRWxlbWVudCogQVhJc29sYXRlZE9iamVjdDo6YW5jaG9yRWxlbWVu
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oCmluZGV4IDlkYWUyZjEyNjI3NmI4
YzAzYmU4OGY1MDhlOTJkMWRjMjNjNmUyOTcuLmFlYThmYzFhYzBjZTY4ZmMzYTM4YTUxODE5OTZk
ZmE1MmVlZGE5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oCkBAIC01MjEsNiArNTIx
LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0J1c3koKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQnVzeSk7IH0KICAgICBib29s
IGlzSW5saW5lVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6SXNJbmxpbmVUZXh0KTsgfQogCisgICAgLy8gUGFyYW1ldGVyaXpl
ZCBhdHRyaWJ1dGUgcmV0cmlldmFsLgorICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4
dFJhbmdlcyhBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVmVjdG9yPFN0cmluZz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJp
bGl0eVRleHRPcGVyYXRpb24gY29uc3QmKSBvdmVycmlkZTsKKwogICAgIC8vIEF0dHJpYnV0ZXMg
cmV0cmlldmVkIGZyb20gdGhlIHJvb3Qgbm9kZSBvbmx5IHNvIHRoYXQgdGhlIGRhdGEgaXNuJ3Qg
ZHVwbGljYXRlZCBvbiBlYWNoIG5vZGUuCiAgICAgdWludDY0X3Qgc2Vzc2lvbklEKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgU3RyaW5nIGRvY3VtZW50VVJJKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01
OTgsOCArNjAyLDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgdGV4dFVuZGVyRWxlbWVudChBY2Nl
c3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgPSBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxl
bWVudE1vZGUoKSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBSZWZQ
dHI8UmFuZ2U+IGdldE1pc3NwZWxsaW5nUmFuZ2UoUmVmUHRyPFJhbmdlPiBjb25zdCYsIEFjY2Vz
c2liaWxpdHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICB2b2lkIGZpbmRNYXRjaGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhKiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9Ci0gICAgVmVj
dG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0UmFuZ2VzKEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0
Q3JpdGVyaWEgY29uc3QmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWZWN0b3I8UmVmUHRyPFJh
bmdlPj4oKTsgfQotICAgIFZlY3RvcjxTdHJpbmc+IHBlcmZvcm1UZXh0T3BlcmF0aW9uKEFjY2Vz
c2liaWxpdHlUZXh0T3BlcmF0aW9uIGNvbnN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gVmVjdG9yPFN0
cmluZz4oKTsgfQogICAgIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0
UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEZsb2F0UmVjdCgpOyB9CiAgICAgdm9pZCBpbmNyZW1lbnQoKSBvdmVycmlkZSB7IH0KICAg
ICB2b2lkIGRlY3JlbWVudCgpIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQppbmRleCA2NjkzMmQ0NDhjYWNlMGQ0NzEzMGE0ODcwZGU4ZTk5OGQzYzZl
MjUzLi5jMWEwYjZhMjYyYWVhMTA5ZjljMTJiM2NhMjllM2U1NmJlODMyOGE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNTU1LDMzICs1NTUsMTEgQEAgZXh0
ZXJuICJDIiBBWFVJRWxlbWVudFJlZiBOU0FjY2Vzc2liaWxpdHlDcmVhdGVBWFVJRWxlbWVudFJl
ZihpZCBlbGVtZW50KTsKICAgICBbc3VwZXIgZGV0YWNoXTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVT4gaW5saW5lIHZvaWQgcGVyZm9ybUFjY2Vzc2liaWxpdHlGdW5jdGlvbk9uTWFpblRocmVh
ZChVJiYgbGFtYmRhKQotewotICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmV0dXJu
IGxhbWJkYSgpOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChbJmxhbWJkYV0gewotICAgICAgICBs
YW1iZGEoKTsKLSAgICB9KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIFQgcmV0cmlldmVBY2Nlc3NpYmlsaXR5VmFsdWVGcm9tTWFpblRocmVhZChVJiYgbGFt
YmRhKQotewotICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuIGxhbWJkYSgp
OwotICAgIAotICAgIFQgdmFsdWU7Ci0gICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZ2YWx1
ZSwgJmxhbWJkYV0gewotICAgICAgICB2YWx1ZSA9IGxhbWJkYSgpOwotICAgIH0pOwotICAgIHJl
dHVybiB2YWx1ZTsKLX0KLQogLSAoaWQpYXR0YWNobWVudFZpZXcKIHsKICAgICBBU1NFUlQobV9v
YmplY3QtPmlzQXR0YWNobWVudCgpKTsKIAotICAgIHJldHVybiByZXRyaWV2ZUFjY2Vzc2liaWxp
dHlWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVk
U2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgp
IC0+IGlkIHsKICAgICAgICAgYXV0byogd2lkZ2V0ID0gcHJvdGVjdGVkU2VsZi0+bV9vYmplY3Qt
PndpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7CiAgICAgICAgIGlmICghd2lkZ2V0KQogICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKQEAgLTE5MjAsNyArMTg5OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogCiAtIChOU0FycmF5KilyZW5kZXJXaWRnZXRDaGlsZHJlbgog
ewotICAgIHJldHVybiByZXRyaWV2ZUFjY2Vzc2liaWxpdHlWYWx1ZUZyb21NYWluVGhyZWFkPE5T
QXJyYXkgKj4oW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBOU0FycmF5ICogeworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8TlNBcnJheSAqPihbcHJvdGVjdGVkU2Vs
ZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+
IE5TQXJyYXkgKiB7CiAgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gcHJvdGVjdGVkU2VsZi0+bV9v
YmplY3QtPndpZGdldCgpOwogICAgICAgICBpZiAoIXdpZGdldCkKICAgICAgICAgICAgIHJldHVy
biBuaWw7CkBAIC0xOTczLDcgKzE5NTEsNyBAQCBzdGF0aWMgTlNNdXRhYmxlQXJyYXkgKmNvbnZl
cnRTdHJpbmdzVG9OU0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3IpCiAKIC0gKGlk
KWFzc29jaWF0ZWRQbHVnaW5QYXJlbnQKIHsKLSAgICByZXR1cm4gcmV0cmlldmVBY2Nlc3NpYmls
aXR5VmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3Byb3RlY3Rl
ZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAo
KSAtPiBpZCB7CiAgICAgICAgIGlmICghcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QgfHwgIXByb3Rl
Y3RlZFNlbGYtPm1fb2JqZWN0LT5oYXNBcHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUoKSkKICAg
ICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCkBAIC0yMzI2LDcgKzIzMDQsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpc2Nyb2xsVmlld1BhcmVudAogewot
ICAgIHJldHVybiByZXRyaWV2ZUFjY2Vzc2liaWxpdHlWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihb
cHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4o
c2VsZildICgpIC0+IGlkIHsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1
ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKICAgICAgICAgaWYgKCFpczxB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4ocHJvdGVjdGVkU2VsZi0+bV9vYmplY3QpKQogICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMjM3MSw3ICsyMzQ5LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKGlkKXdpbmRvd0VsZW1lbnQ6KE5TU3RyaW5nKilhdHRy
aWJ1dGVOYW1lCiB7Ci0gICAgcmV0dXJuIHJldHJpZXZlQWNjZXNzaWJpbGl0eVZhbHVlRnJvbU1h
aW5UaHJlYWQ8aWQ+KFthdHRyaWJ1dGVOYW1lLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFthdHRyaWJ1
dGVOYW1lLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgewogICAgICAgICBpZCByZW1vdGVQYXJlbnQgPSBbcHJv
dGVjdGVkU2VsZiByZW1vdGVBY2Nlc3NpYmlsaXR5UGFyZW50T2JqZWN0XTsKICAgICAgICAgaWYg
KHJlbW90ZVBhcmVudCkgewogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KQEAgLTM0OTcsNyArMzQ3NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlTaG93Q29udGV4dE1lbnUKIHsKLSAgICBw
ZXJmb3JtQWNjZXNzaWJpbGl0eUZ1bmN0aW9uT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0g
UmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0geworICAgIEFj
Y2Vzc2liaWxpdHk6OnBlcmZvcm1GdW5jdGlvbk9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildIHsKICAgICAg
ICAgW3Byb3RlY3RlZFNlbGYgX2FjY2Vzc2liaWxpdHlTaG93Q29udGV4dE1lbnVdOwogICAgIH0p
OwogfQpAQCAtMzkyNSwxMCArMzkwMywxMiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAvLyBkaXNwYXRjaAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RUZXh0V2l0aENyaXRlcmlhUGFyYW1ldGVyaXplZEF0
dHJpYnV0ZV0pIHsKICAgICAgICAgLy8gVG8gYmUgZGVwcmVjYXRlZC4KLSAgICAgICAgYXV0byBj
cml0ZXJpYSA9IGFjY2Vzc2liaWxpdHlUZXh0Q3JpdGVyaWFGb3JQYXJhbWV0ZXJpemVkQXR0cmli
dXRlKGRpY3Rpb25hcnkpOwotICAgICAgICBjcml0ZXJpYS5zZWNvbmQudGV4dFJhbmdlcyA9IG1f
b2JqZWN0LT5maW5kVGV4dFJhbmdlcyhjcml0ZXJpYS5maXJzdCk7Ci0gICAgICAgIEFTU0VSVChj
cml0ZXJpYS5zZWNvbmQudGV4dFJhbmdlcy5zaXplKCkgPD0gMSk7Ci0gICAgICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3VsdCA9IG1fb2JqZWN0LT5wZXJmb3JtVGV4dE9wZXJhdGlvbihjcml0ZXJpYS5z
ZWNvbmQpOworICAgICAgICBhdXRvIHJlc3VsdCA9IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFs
dWVGcm9tTWFpblRocmVhZDxWZWN0b3I8U3RyaW5nPj4oW2RpY3Rpb25hcnksIHNlbGZdICgpIC0+
IFZlY3RvcjxTdHJpbmc+IHsKKyAgICAgICAgICAgIGF1dG8gY3JpdGVyaWEgPSBhY2Nlc3NpYmls
aXR5VGV4dENyaXRlcmlhRm9yUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShkaWN0aW9uYXJ5KTsKKyAg
ICAgICAgICAgIGNyaXRlcmlhLnNlY29uZC50ZXh0UmFuZ2VzID0gbV9vYmplY3QtPmZpbmRUZXh0
UmFuZ2VzKGNyaXRlcmlhLmZpcnN0KTsKKyAgICAgICAgICAgIEFTU0VSVChjcml0ZXJpYS5zZWNv
bmQudGV4dFJhbmdlcy5zaXplKCkgPD0gMSk7CisgICAgICAgICAgICByZXR1cm4gbV9vYmplY3Qt
PnBlcmZvcm1UZXh0T3BlcmF0aW9uKGNyaXRlcmlhLnNlY29uZCk7CisgICAgICAgIH0pOwogICAg
ICAgICBBU1NFUlQocmVzdWx0LnNpemUoKSA8PSAxKTsKICAgICAgICAgaWYgKHJlc3VsdC5zaXpl
KCkgPiAwKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFswXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiYTc3NjI4MTVlNzRiYTM5ZWY3ZWJi
ZDQ0NjM4M2FjMWJhZTZmNjAxLi4zYjMxYmExZTczYTAzZmEyYzljYjM2OTViNDY1ZjI2N2NkMmVk
ZWQ2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTktMTItMTMgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJA
YXBwbGUuY29tPgorCisgICAgICAgIElzb2xhdGVkIG9iamVjdCBpbXBsZW1lbnRhdGlvbiBvZiBw
YXJhbWV0ZXJpemVkIGF0dHJpYnV0ZSBTZWxlY3RUZXh0V2l0aENyaXRlcmlhLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjEwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KTogQWx3YXlzIHJ1biBpbiBt
eSB0aHJlYWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpleGVjdXRl
KTogRGlzcGF0Y2hlcyB0byB0aGUgc2Vjb25kYXJ5IHRocmVhZC4gU3BpbnMgdGhlIG1haW4gbG9v
cCB0byBhbGxvdyBwYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZXMgbWV0aG9kcyB0byBleGVjdXRlIGlu
IG1haW4gdGhyZWFkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpmaW5kQWNj
ZXNzaWJsZU9iamVjdEJ5SWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RUZXh0V2l0aENyaXRlcmlhKToKKwog
MjAxOS0xMi0wOSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGFuIG9wdGlvbiB0byBjYXB0dXJlIGF1ZGlvIGluIEdQVSBwcm9jZXNzCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IGY4YTM0ODY1MDNhOWI0N2ZhNTRjY2U2ZjZkMDA4
OGMxYmVlYjRhMTYuLmM5NjY5YzFmZGJiNTJkMjA2ZGM0MzA3MjNhYzg4M2RmZTkwMjRiZjAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC03NiwyMiArNzYsMTIgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxlZCgp
CiBSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJv
b3RFbGVtZW50KCkKIHsKICAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKTsKLSAgICBQbGF0Zm9ybVVJRWxlbWVudCByb290
ID0gbnVsbHB0cjsKKyAgICBQbGF0Zm9ybVVJRWxlbWVudCByb290ID0gc3RhdGljX2Nhc3Q8UGxh
dGZvcm1VSUVsZW1lbnQ+KFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QocGFnZSkpOwogCi0gICAg
aWYgKG1fdXNlQVhUaHJlYWQpIHsKLSAgICAgICAgQVhUaHJlYWQ6OmRpc3BhdGNoKFsmcm9vdCwg
cGFnZSwgdGhpc10gewotICAgICAgICAgICAgcm9vdCA9IHN0YXRpY19jYXN0PFBsYXRmb3JtVUlF
bGVtZW50PihXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KHBhZ2UpKTsKLSAgICAgICAgICAgIG1f
c2VtYXBob3JlLnNpZ25hbCgpOwotICAgICAgICB9KTsKLQotICAgICAgICBtX3NlbWFwaG9yZS53
YWl0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcm9vdCA9IHN0YXRpY19jYXN0PFBsYXRmb3Jt
VUlFbGVtZW50PihXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KHBhZ2UpKTsKLQotICAgICAgICAv
LyBTZXQgbV91c2VBWFRocmVhZCB0byB0cnVlIGZvciBuZXh0IHJlcXVlc3QuCi0gICAgICAgIGlm
IChXS0FjY2Vzc2liaWxpdHlDYW5Vc2VTZWNvbmRhcnlBWFRocmVhZChwYWdlKSkKLSAgICAgICAg
ICAgIG1fdXNlQVhUaHJlYWQgPSB0cnVlOwotICAgIH0KKyAgICAvLyBOb3cgdGhhdCB3ZSBoYXZl
IGEgcm9vdCBhbmQgdGhlIGlzb2xhdGVkIHRyZWUgaXMgZ2VuZXJhdGVkLCBzZXQKKyAgICAvLyBt
X3VzZUFYVGhyZWFkIHRvIHRydWUgZm9yIG5leHQgcmVxdWVzdCB0byBiZSBoYW5kbGVkIGluIHRo
ZSBzZWNvbmRhcnkgdGhyZWFkLgorICAgIGlmIChXS0FjY2Vzc2liaWxpdHlDYW5Vc2VTZWNvbmRh
cnlBWFRocmVhZChJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkpKQor
ICAgICAgICBtX3VzZUFYVGhyZWFkID0gdHJ1ZTsKIAogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpjcmVhdGUocm9vdCk7CiB9CkBAIC0xMDMsNyArOTMsNyBAQCBSZWY8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50
KCkKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGZvY3VzZWRFbGVt
ZW50KTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZXhlY3V0ZShGdW5jdGlv
bjx2b2lkKCk+JiYgZnVuY3Rpb24pCit2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpleGVj
dXRlT25BWFRocmVhZElmUG9zc2libGUoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogewog
ICAgIGlmIChtX3VzZUFYVGhyZWFkKSB7CiAgICAgICAgIEFYVGhyZWFkOjpkaXNwYXRjaChbJmZ1
bmN0aW9uLCB0aGlzXSB7CkBAIC0xMTEsNiArMTAxLDExIEBAIHZvaWQgQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OmV4ZWN1dGUoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgICAgICAg
ICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgIH0pOwogCisgICAgICAgIC8vIFNwaW4g
dGhlIG1haW4gbG9vcCBzbyB0aGF0IGFueSByZXF1aXJlZCBET00gcHJvY2Vzc2luZyBjYW4gYmUK
KyAgICAgICAgLy8gZXhlY3V0ZWQgaW4gdGhlIG1haW4gdGhyZWFkLiBUaGF0IGlzIHRoZSBjYXNl
IG9mIG1vc3QgcGFyYW1ldGVyaXplZAorICAgICAgICAvLyBhdHRyaWJ1dGVzLCB3aGVyZSB0aGUg
YXR0cmlidXRlIHZhbHVlIGhhcyB0byBiZSBjYWxjdWxhdGVkCisgICAgICAgIC8vIGJhY2sgaW4g
dGhlIG1haW4gdGhyZWFkLgorICAgICAgICBDRlJ1bkxvb3BSdW5Jbk1vZGUoa0NGUnVuTG9vcERl
ZmF1bHRNb2RlLCAuMjUsIGZhbHNlKTsKICAgICAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwogICAg
IH0gZWxzZQogICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5o
CmluZGV4IGY4ZGYzYzhjN2IxNDNhNGRjNzRjMGQyNGIyZGU1OWVjNjQzNzBlYTAuLmNlZmFhNDNi
ZGZlMjAzYWU0ZGM2YTA0OTYzMTBlYWE5NWQ3NjRlYjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PiBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWRBdHRyaWJ1
dGUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBleGVjdXRlKEZ1bmN0aW9uPHZv
aWQoKT4mJik7CisgICAgdm9pZCBleGVjdXRlT25BWFRocmVhZElmUG9zc2libGUoRnVuY3Rpb248
dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgYm9vbCBhZGROb3RpZmljYXRpb25MaXN0ZW5lcihK
U1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlck1hYy5tbQppbmRleCBkMWRkMjI4MDcxMzIxMzMwYjNkYjhjNWQ1MTBmZGJlZTAw
ZTg4ZDdhLi5hOTRkZTM4NjBkOWNjNDFlNmJmOGNmMGZlMzdkNzliNTNiY2JiZTYzIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbQpAQCAtODEsNiArODEsNyBA
QCBzdGF0aWMgaWQgZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKGlkIG9iaiwgTlNTdHJpbmcgKmlk
QXR0cmlidXRlKQogICAgICAgICByZXR1cm4gb2JqOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKIAorICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkgKmNoaWxkcmVu
ID0gW29iaiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5BdHRyaWJ1dGVdOwogICAgIE5TVUludGVnZXIgY2hpbGRyZW5Db3VudCA9IFtjaGlsZHJlbiBj
b3VudF07CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY2hpbGRyZW5Db3VudDsgKytp
KSB7CkBAIC04OCw2ICs4OSw3IEBAIHN0YXRpYyBpZCBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQo
aWQgb2JqLCBOU1N0cmluZyAqaWRBdHRyaWJ1dGUpCiAgICAgICAgIGlmIChyZXN1bHQpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTk1LDEyICs5NywyNCBAQCBzdGF0aWMgaWQg
ZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKGlkIG9iaiwgTlNTdHJpbmcgKmlkQXR0cmlidXRlKQog
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjph
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWRBdHRyaWJ1dGUpCiB7CiAgICAgV0tC
dW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5w
YWdlKCk7Ci0gICAgaWQgcm9vdCA9IChfX2JyaWRnZSBpZClXS0FjY2Vzc2liaWxpdHlSb290T2Jq
ZWN0KHBhZ2UpOworICAgIFBsYXRmb3JtVUlFbGVtZW50IHJvb3QgPSBudWxscHRyOworCisgICAg
ZXhlY3V0ZU9uQVhUaHJlYWRJZlBvc3NpYmxlKFsmcGFnZSwgJnJvb3RdIHsKKyAgICAgICAgcm9v
dCA9IHN0YXRpY19jYXN0PFBsYXRmb3JtVUlFbGVtZW50PihXS0FjY2Vzc2liaWxpdHlSb290T2Jq
ZWN0KHBhZ2UpKTsKKyAgICB9KTsKKworICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgYSByb290IGFu
ZCB0aGUgaXNvbGF0ZWQgdHJlZSBpcyBnZW5lcmF0ZWQsIHNldAorICAgIC8vIG1fdXNlQVhUaHJl
YWQgdG8gdHJ1ZSBmb3IgbmV4dCByZXF1ZXN0IHRvIGJlIGhhbmRsZWQgaW4gdGhlIHNlY29uZGFy
eSB0aHJlYWQuCisgICAgaWYgKFdLQWNjZXNzaWJpbGl0eUNhblVzZVNlY29uZGFyeUFYVGhyZWFk
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSkpCisgICAgICAgIG1f
dXNlQVhUaHJlYWQgPSB0cnVlOworCisgICAgaWQgcmVzdWx0OworICAgIGV4ZWN1dGVPbkFYVGhy
ZWFkSWZQb3NzaWJsZShbJnJvb3QsICZpZEF0dHJpYnV0ZSwgJnJlc3VsdF0geworICAgICAgICBy
ZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQocm9vdCwgW05TU3RyaW5nIHN0cmluZ1dp
dGhKU1N0cmluZ1JlZjppZEF0dHJpYnV0ZV0pOworICAgIH0pOwogCi0gICAgaWQgcmVzdWx0ID0g
ZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKHJvb3QsIFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJp
bmdSZWY6aWRBdHRyaWJ1dGVdKTsKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHJlc3VsdCk7Ci0KICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXgg
YzU2OWY2ODYzNjRhNjE5YzUyNmVhYzhiMWExZDEzYjVkMTYyOTYyYi4uOWI1OWJmY2UwZjRjNDg1
NWJmY2RmYWU2NWQ0NTk1ZTRiZjY2MWNhMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZShWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUUKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBhdXRvIGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKCk7Ci0gICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPmV4ZWN1dGUoWyZlbGVt
ZW50VmVjdG9yLCBsb2NhdGlvbiwgbGVuZ3RoLCB0aGlzXSB7CisgICAgYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXItPmV4ZWN1dGVPbkFYVGhyZWFkSWZQb3NzaWJsZShbJmVsZW1lbnRWZWN0b3IsIGxv
Y2F0aW9uLCBsZW5ndGgsIHRoaXNdIHsKICAgICAgICAgTlNBcnJheSogY2hpbGRyZW4gPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczpOU0FjY2Vzc2liaWxpdHlD
aGlsZHJlbkF0dHJpYnV0ZSBpbmRleDpsb2NhdGlvbiBtYXhDb3VudDpsZW5ndGhdOwogICAgICAg
ICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4+KGNoaWxkcmVuKTsKICAgICB9KTsKQEAgLTY0MCw3ICs2NDAsNyBAQCBk
b3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlKQogICAgIGlkIHZhbHVlOwogCiAgICAgYXV0byBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlciA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcigpOwotICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5leGVjdXRlKFsmYXR0cmli
dXRlLCAmdmFsdWUsIHRoaXNdIHsKKyAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci0+ZXhlY3V0
ZU9uQVhUaHJlYWRJZlBvc3NpYmxlKFsmYXR0cmlidXRlLCAmdmFsdWUsIHRoaXNdIHsKICAgICAg
ICAgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNTdHJp
bmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOwogICAgIH0pOwogCkBAIC0xMjUz
LDcgKzEyNTMsMTEgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNlbGVjdFRleHRXaXRoQ3JpdGVyaWEoSlNDb250ZXgKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKICAgICBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUg
PSBzZWxlY3RUZXh0UGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKGNvbnRleHQsIGFt
YmlndWl0eVJlc29sdXRpb24sIHNlYXJjaFN0cmluZ3MsIHJlcGxhY2VtZW50U3RyaW5nLCBhY3Rp
dml0eSk7Ci0gICAgaWQgcmVzdWx0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWFNlbGVjdFRleHRXaXRoQ3JpdGVyaWEiIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJp
emVkQXR0cmlidXRlXTsKKyAgICBpZCByZXN1bHQ7CisgICAgYXV0byBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlciA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcigpOworICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5leGVjdXRlT25BWFRocmVhZElm
UG9zc2libGUoWyZwYXJhbWV0ZXJpemVkQXR0cmlidXRlLCAmcmVzdWx0LCB0aGlzXSB7CisgICAg
ICAgIHJlc3VsdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhT
ZWxlY3RUZXh0V2l0aENyaXRlcmlhIiBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyaXplZEF0dHJpYnV0
ZV07CisgICAgfSk7CiAgICAgaWYgKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKICAgICAgICAgcmV0dXJuIFtyZXN1bHQgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385766</attachid>
            <date>2019-12-16 07:52:57 -0800</date>
            <delta_ts>2019-12-16 10:48:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205210-20191216105256.patch</filename>
            <type>text/plain</type>
            <size>27669</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWNjZDAzMTQxZDAxZDI5
ODBjNjE5NjcxMTAyZGZmNzBkNzFiYmIxMy4uMjg2YzkxYjI1NjFlNzI3OTQwN2E0YTJmMTRlZDg2
OGViNmRmMzliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTEyLTEzICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJc29sYXRlZCBv
YmplY3QgaW1wbGVtZW50YXRpb24gb2YgcGFyYW1ldGVyaXplZCBhdHRyaWJ1dGUgU2VsZWN0VGV4
dFdpdGhDcml0ZXJpYS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNTIxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2ZpbmQtYW5kLXJlcGxhY2UtbWF0
Y2gtY2FwaXRhbGl6YXRpb24uaHRtbCBleGVyY2lzZSB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKKyAg
ICAgICAgUmVxdWVzdHMgZm9yIHBhcmFtZXRlcml6ZWQgYXR0cmlidXRlcyB0aGF0IHJlcXVpcmUg
Y29tcHV0YXRpb25zIGluCisgICAgICAgIHRoZSBXZWJDb3JlIERPTSBuZWVkIHRvIGJlIGRpc3Bh
dGNoZWQgdG8gdGhlIG1haW4gdGhyZWFkLiBUaGlzCisgICAgICAgIGNoYW5nZSBpcyB0aGUgYmx1
ZXByaW50IGZvciBhbGwgb3RoZXIgYXR0cmlidXRlcyB0byBmb2xsb3cuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6aXNvbGF0ZWRUcmVlUm9vdE9iamVjdCk6IFRoZSBpc29sYXRlZCB0cmVlIHJvb3Qg
b2JqZWN0IGlzIGFsd2F5cyByZXRyaWV2ZWQgaW4gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICAo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Z2VuZXJhdGVJc29sYXRlZFRyZWUpOiBTZXRzIHRoZSBB
WE9iamVjdENhY2hlIGZvciB0aGUgZ2VuZXJhdGVkIElzb2xhdGVkVHJlZS4KKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDogQWRkZWQgdGhlIHRl
bXBsYXRlIGZ1bmN0aW9ucyB0byBkaXNwYXRjaCB0byB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OjpwZXJmb3JtRnVuY3Rpb25Pbk1haW5UaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhy
ZWFkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwOiBSZW1vdmVkIG9ic29sZXRlIGFzc2VydHMuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dGFiQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6IEl0IG5vdyBob2xkcyBhIHJl
ZmVyZW5jZSB0byB0aGUgQVhPYmplY3RDYWNoZS4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpheE9iamVjdENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpzZXRBWE9iamVjdENhY2hlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29s
YXRlZE9iamVjdDo6ZmluZFRleHRSYW5nZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZE9iamVjdDo6cGVyZm9ybVRleHRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6YXhPYmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmg6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06IE1vdmVk
IHRlbXBsYXRlIGZ1bmN0aW9ucyB0byBkaXNwYXRjaCB0byB0aGUgbWFpbiB0aHJlYWQgaW50byB0
aGUgQWNjZXNzaWJpbGl0eSBuYW1lc3BhY2UgdG8gdXNlIHRoZW0gaW4gdGhlIGlzb2xhdGVkIG9i
amVjdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYXR0YWNobWVudFZpZXddKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgYXNzb2NpYXRlZFBsdWdpblBhcmVudF0pOgorICAgICAgICAoLVtX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzY3JvbGxWaWV3UGFyZW50XSk6CisgICAgICAg
ICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHdpbmRvd0VsZW1lbnQ6XSk6CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlTaG93Q29u
dGV4dE1lbnVdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFtZXRlcjpdKToKKyAgICAgICAgKHBlcmZv
cm1BY2Nlc3NpYmlsaXR5RnVuY3Rpb25Pbk1haW5UaHJlYWQpOiBNb3ZlZC4KKyAgICAgICAgKHJl
dHJpZXZlQWNjZXNzaWJpbGl0eVZhbHVlRnJvbU1haW5UaHJlYWQpOiBNb3ZlZC4KKwogMjAxOS0x
Mi0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyZWFtbGlu
ZSBQT0RJbnRlcnZhbFRyZWUgY29kZSBhbmQgcmVtb3ZlIFZhbHVlVG9TdHJpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDVhMjAyNDQ3
NjZhMGY2OGM5MGNiNGE3NDI1NzQ1MzRlMDA4MWFiYzUuLmY4NmYzNzMwMDk5ZDNhODI1MTNlMWMz
NDk3Y2I5NTc0MWIwOTI5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcApAQCAtNzM1LDI1ICs3MzUsMjMgQEAgQVhDb3JlT2JqZWN0KiBBWE9i
amVjdENhY2hlOjpyb290T2JqZWN0KCkKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRF
RF9UUkVFKQogQVhDb3JlT2JqZWN0KiBBWE9iamVjdENhY2hlOjppc29sYXRlZFRyZWVSb290T2Jq
ZWN0KCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8gcGFnZUlEID0g
bV9kb2N1bWVudC5wYWdlSUQoKTsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgq
cGFnZUlEKTsKLSAgICBpZiAoIXRyZWUgJiYgaXNNYWluVGhyZWFkKCkpIHsKKyAgICBpZiAoIXRy
ZWUpIHsKICAgICAgICAgdHJlZSA9IGdlbmVyYXRlSXNvbGF0ZWRUcmVlKCpwYWdlSUQsIG1fZG9j
dW1lbnQpOwogICAgICAgICAvLyBOb3cgdGhhdCB3ZSBoYXZlIGNyZWF0ZWQgb3VyIHRyZWUsIGlu
aXRpYWxpemUgdGhlIHNlY29uZGFyeSB0aHJlYWQsCiAgICAgICAgIC8vIHNvIGZ1dHVyZSByZXF1
ZXN0cyBjb21lIGluIG9uIHRoZSBvdGhlciB0aHJlYWQuCiAgICAgICAgIF9BWFVJRWxlbWVudFVz
ZVNlY29uZGFyeUFYVGhyZWFkKHRydWUpOwotICAgICAgICByZXR1cm4gdHJlZS0+cm9vdE5vZGUo
KS5nZXQoKTsKICAgICB9CiAKLSAgICBpZiAodHJlZSAmJiAhaXNNYWluVGhyZWFkKCkpIHsKLSAg
ICAgICAgdHJlZS0+YXBwbHlQZW5kaW5nQ2hhbmdlcygpOworICAgIGlmICh0cmVlKQogICAgICAg
ICByZXR1cm4gdHJlZS0+cm9vdE5vZGUoKS5nZXQoKTsKLSAgICB9CiAKLSAgICAvLyBTaG91bGQg
bm90IGdldCBoZXJlLCBjb3VsZG4ndCBjcmVhdGUgb3IgdXBkYXRlIHRoZSBJc29sYXRlZFRyZWUu
CisgICAgLy8gU2hvdWxkIG5vdCBnZXQgaGVyZSwgY291bGRuJ3QgY3JlYXRlIHRoZSBJc29sYXRl
ZFRyZWUuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CkBAIC0zMDk0LDYgKzMwOTIsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYT2JqZWN0Q2FjaGU6
OmdlbmVyYXRlSXNvbGF0ZWRUcmVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgRAogICAgIGF1dG8q
IGF4T2JqZWN0Q2FjaGUgPSBkb2N1bWVudC5heE9iamVjdENhY2hlKCk7CiAgICAgaWYgKCFheE9i
amVjdENhY2hlKQogICAgICAgICByZXR1cm4gbWFrZVJlZigqdHJlZSk7CisgICAgdHJlZS0+c2V0
QVhPYmplY3RDYWNoZShheE9iamVjdENhY2hlKTsKIAogICAgIGF1dG8qIGF4Um9vdCA9IGF4T2Jq
ZWN0Q2FjaGUtPmdldE9yQ3JlYXRlKGRvY3VtZW50LnZpZXcoKSk7CiAgICAgaWYgKGF4Um9vdCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCA5MWI5ODIzYzhhMmJlNzE0OTM0OTJhYzJhM2Fl
YWYyNWMyODQ0OWNiLi5mZjQ0Zjc3NDU4ZTI0NTk0N2NmNzFkOTdjZGI3YTVkNGIzZGQ0NDY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtMTEyOSw2ICsxMTI5LDI4IEBAIFQqIGZpbmRBbmNl
c3Rvcihjb25zdCBUJiBvYmplY3QsIGJvb2wgaW5jbHVkZVNlbGYsIGNvbnN0IEYmIG1hdGNoZXMp
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSB2
b2lkIHBlcmZvcm1GdW5jdGlvbk9uTWFpblRocmVhZChVJiYgbGFtYmRhKQoreworICAgIGlmIChp
c01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIGxhbWJkYSgpOworCisgICAgY2FsbE9uTWFp
blRocmVhZChbJmxhbWJkYV0geworICAgICAgICBsYW1iZGEoKTsKKyAgICB9KTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFQgcmV0cmlldmVWYWx1ZUZyb21N
YWluVGhyZWFkKFUmJiBsYW1iZGEpCit7CisgICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgICAg
ICByZXR1cm4gbGFtYmRhKCk7CisKKyAgICBUIHZhbHVlOworICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmdmFsdWUsICZsYW1iZGFdIHsKKyAgICAgICAgdmFsdWUgPSBsYW1iZGEoKTsKKyAg
ICB9KTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEFjY2Vzc2liaWxp
dHkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYjdk
YTZhYWNkM2Q2MmE2NjUyNGU1YzFhZTJmMzhmYjYxYzY2YTFkYy4uYTg3MjM3YzlkOTYxN2NmODBi
YWQyNjI4YjZmOWJjNTNhN2U3MjllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0zNTYyLDIw
ICszNTYyLDE5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYUxpc3Rib3hW
aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuCiB2b2lkIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IHJlc3VsdCkKIHsKICAgICBBU1NFUlQocmVzdWx0LmlzRW1wdHkoKSk7Ci0gICAgICAgIAotICAg
IC8vIG9ubHkgbGlzdGJveGVzIGFyZSBhc2tlZCBmb3IgdGhlaXIgdmlzaWJsZSBjaGlsZHJlbi4g
Ci0gICAgaWYgKGFyaWFSb2xlQXR0cmlidXRlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Okxpc3RC
b3gpIHsKLSAgICAgICAgLy8gbmF0aXZlIGxpc3QgYm94ZXMgd291bGQgYmUgQWNjZXNzaWJpbGl0
eUxpc3RCb3hlcywgc28gb25seSBjaGVjayBmb3IgYXJpYSBsaXN0IGJveGVzCi0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgLy8gT25seSBsaXN0Ym94ZXMgYXJlIGFza2VkIGZv
ciB0aGVpciB2aXNpYmxlIGNoaWxkcmVuLgorICAgIC8vIE5hdGl2ZSBsaXN0IGJveGVzIHdvdWxk
IGJlIEFjY2Vzc2liaWxpdHlMaXN0Qm94ZXMsIHNvIG9ubHkgY2hlY2sgZm9yIGFyaWEgbGlzdCBi
b3hlcy4KKyAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6
TGlzdEJveCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICByZXR1cm4gYXJpYUxpc3Rib3hW
aXNpYmxlQ2hpbGRyZW4ocmVzdWx0KTsKIH0KICAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6dGFiQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHQpCiB7
Ci0gICAgQVNTRVJUKHJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpUYWJMaXN0KTsK
LSAgICAKKyAgICBpZiAocm9sZVZhbHVlKCkgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlRhYkxpc3Qp
CisgICAgICAgIHJldHVybjsKKwogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJl
bigpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aXNUYWJJdGVtKCkpCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IDllZmIyMmJlZjE3Yjg0
YzkxMjBlMDEzMTgyMjZiZjlhMDRhNmEzODguLjY4ZjUyMzFjZjBlNDc1YjE3MTE0NzcwYWQ5YzVm
YTU2M2Y2MDJjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRl
VHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvcklE
KEFYSXNvbGF0ZWRUcmVlSUQpOworICAgIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUoKSBj
b25zdCB7IHJldHVybiBtX2F4T2JqZWN0Q2FjaGU7IH0KKyAgICB2b2lkIHNldEFYT2JqZWN0Q2Fj
aGUoQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSkgeyBtX2F4T2JqZWN0Q2FjaGUgPSBheE9i
amVjdENhY2hlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QVhJc29sYXRlZE9iamVj
dD4gcm9vdE5vZGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QVhJc29sYXRlZE9iamVj
dD4gZm9jdXNlZFVJRWxlbWVudCgpOwpAQCAtNzEsNiArNzMsOCBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBIYXNoTWFwPEFYSXNvbGF0ZWRUcmVlSUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVl
SURDYWNoZSgpOwogICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29s
YXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgpOwogCisgICAgQVhPYmplY3RDYWNoZSogbV9heE9i
amVjdENhY2hlIHsgbnVsbHB0ciB9OworCiAgICAgLy8gT25seSBhY2Nlc3Mgb24gQVggdGhyZWFk
IHJlcXVlc3RpbmcgZGF0YS4KICAgICBIYXNoTWFwPEFYSUQsIFJlZjxBWElzb2xhdGVkT2JqZWN0
Pj4gbV9yZWFkZXJUaHJlYWROb2RlTWFwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWVOb2RlLmNw
cAppbmRleCA3MWU1ZGMyYzQzN2YyMWE2ZDBhNDk3MjZhYjY5NjFhYjliMDU4Yjc2Li5mNWIwZGVh
OWVhNmJlYTgxYWRjMjhiMmJlOWQ3MWM2MzYxMWM2NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlTm9kZS5jcHAKQEAgLTY5Myw2ICs2OTMsMjAgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojp1
cGRhdGVCYWNraW5nU3RvcmUoKQogICAgIH0KIH0KIAorVmVjdG9yPFJlZlB0cjxSYW5nZT4+IEFY
SXNvbGF0ZWRPYmplY3Q6OmZpbmRUZXh0UmFuZ2VzKEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0Q3Jp
dGVyaWEgY29uc3QmIGNyaXRlcmlhKSBjb25zdAoreworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8VmVjdG9yPFJlZlB0cjxSYW5nZT4+PihbJmNy
aXRlcmlhLCBheElEID0gb2JqZWN0SUQoKSwgdGhpc10gKCkgLT4gVmVjdG9yPFJlZlB0cjxSYW5n
ZT4+IHsKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+b2JqZWN0RnJvbUFYSUQoYXhJ
RCktPmZpbmRUZXh0UmFuZ2VzKGNyaXRlcmlhKTsKKyAgICB9KTsKK30KKworVmVjdG9yPFN0cmlu
Zz4gQVhJc29sYXRlZE9iamVjdDo6cGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJpbGl0eVRl
eHRPcGVyYXRpb24gY29uc3QmIHRleHRPcGVyYXRpb24pCit7CisgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxWZWN0b3I8U3RyaW5nPj4oWyZ0ZXh0
T3BlcmF0aW9uLCBheElEID0gb2JqZWN0SUQoKSwgdGhpc10gKCkgLT4gVmVjdG9yPFN0cmluZz4g
eworICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5vYmplY3RGcm9tQVhJRChheElEKS0+
cGVyZm9ybVRleHRPcGVyYXRpb24odGV4dE9wZXJhdGlvbik7CisgICAgfSk7Cit9CisKIGJvb2wg
QVhJc29sYXRlZE9iamVjdDo6cmVwbGFjZVRleHRJblJhbmdlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFBsYWluVGV4dFJhbmdlJikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEzMzEs
OCArMTM0NSw3IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudHNGcm9tQXR0cmlidXRl
KFZlY3RvcjxFbGVtZW50Kj4mLCBjb25zdCBRdWFsaWZpZWROCiAKIEFYT2JqZWN0Q2FjaGUqIEFY
SXNvbGF0ZWRPYmplY3Q6OmF4T2JqZWN0Q2FjaGUoKSBjb25zdAogewotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiB0cmVlKCktPmF4T2Jq
ZWN0Q2FjaGUoKTsKIH0KIAogRWxlbWVudCogQVhJc29sYXRlZE9iamVjdDo6YW5jaG9yRWxlbWVu
dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oCmluZGV4IDlkYWUyZjEyNjI3NmI4
YzAzYmU4OGY1MDhlOTJkMWRjMjNjNmUyOTcuLmFlYThmYzFhYzBjZTY4ZmMzYTM4YTUxODE5OTZk
ZmE1MmVlZGE5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlTm9kZS5oCkBAIC01MjEsNiArNTIx
LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0J1c3koKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQnVzeSk7IH0KICAgICBib29s
IGlzSW5saW5lVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1
ZShBWFByb3BlcnR5TmFtZTo6SXNJbmxpbmVUZXh0KTsgfQogCisgICAgLy8gUGFyYW1ldGVyaXpl
ZCBhdHRyaWJ1dGUgcmV0cmlldmFsLgorICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBmaW5kVGV4
dFJhbmdlcyhBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhIGNvbnN0JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVmVjdG9yPFN0cmluZz4gcGVyZm9ybVRleHRPcGVyYXRpb24oQWNjZXNzaWJp
bGl0eVRleHRPcGVyYXRpb24gY29uc3QmKSBvdmVycmlkZTsKKwogICAgIC8vIEF0dHJpYnV0ZXMg
cmV0cmlldmVkIGZyb20gdGhlIHJvb3Qgbm9kZSBvbmx5IHNvIHRoYXQgdGhlIGRhdGEgaXNuJ3Qg
ZHVwbGljYXRlZCBvbiBlYWNoIG5vZGUuCiAgICAgdWludDY0X3Qgc2Vzc2lvbklEKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgU3RyaW5nIGRvY3VtZW50VVJJKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01
OTgsOCArNjAyLDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgdGV4dFVuZGVyRWxlbWVudChBY2Nl
c3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgPSBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxl
bWVudE1vZGUoKSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBSZWZQ
dHI8UmFuZ2U+IGdldE1pc3NwZWxsaW5nUmFuZ2UoUmVmUHRyPFJhbmdlPiBjb25zdCYsIEFjY2Vz
c2liaWxpdHlTZWFyY2hEaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICB2b2lkIGZpbmRNYXRjaGluZ09iamVjdHMoQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhKiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgb3ZlcnJpZGUgeyB9Ci0gICAgVmVj
dG9yPFJlZlB0cjxSYW5nZT4+IGZpbmRUZXh0UmFuZ2VzKEFjY2Vzc2liaWxpdHlTZWFyY2hUZXh0
Q3JpdGVyaWEgY29uc3QmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWZWN0b3I8UmVmUHRyPFJh
bmdlPj4oKTsgfQotICAgIFZlY3RvcjxTdHJpbmc+IHBlcmZvcm1UZXh0T3BlcmF0aW9uKEFjY2Vz
c2liaWxpdHlUZXh0T3BlcmF0aW9uIGNvbnN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gVmVjdG9yPFN0
cmluZz4oKTsgfQogICAgIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZsb2F0
UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEZsb2F0UmVjdCgpOyB9CiAgICAgdm9pZCBpbmNyZW1lbnQoKSBvdmVycmlkZSB7IH0KICAg
ICB2b2lkIGRlY3JlbWVudCgpIG92ZXJyaWRlIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQppbmRleCA2NjkzMmQ0NDhjYWNlMGQ0NzEzMGE0ODcwZGU4ZTk5OGQzYzZl
MjUzLi5iZWNiY2ZlOWIxNjgwODdjMWY4MWZkZGQ0ZWYxYzc4NGIwYTA1MjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNTU1LDMzICs1NTUsMTEgQEAgZXh0
ZXJuICJDIiBBWFVJRWxlbWVudFJlZiBOU0FjY2Vzc2liaWxpdHlDcmVhdGVBWFVJRWxlbWVudFJl
ZihpZCBlbGVtZW50KTsKICAgICBbc3VwZXIgZGV0YWNoXTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVT4gaW5saW5lIHZvaWQgcGVyZm9ybUFjY2Vzc2liaWxpdHlGdW5jdGlvbk9uTWFpblRocmVh
ZChVJiYgbGFtYmRhKQotewotICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmV0dXJu
IGxhbWJkYSgpOwotCi0gICAgY2FsbE9uTWFpblRocmVhZChbJmxhbWJkYV0gewotICAgICAgICBs
YW1iZGEoKTsKLSAgICB9KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIFQgcmV0cmlldmVBY2Nlc3NpYmlsaXR5VmFsdWVGcm9tTWFpblRocmVhZChVJiYgbGFt
YmRhKQotewotICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmV0dXJuIGxhbWJkYSgp
OwotICAgIAotICAgIFQgdmFsdWU7Ci0gICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZ2YWx1
ZSwgJmxhbWJkYV0gewotICAgICAgICB2YWx1ZSA9IGxhbWJkYSgpOwotICAgIH0pOwotICAgIHJl
dHVybiB2YWx1ZTsKLX0KLQogLSAoaWQpYXR0YWNobWVudFZpZXcKIHsKICAgICBBU1NFUlQobV9v
YmplY3QtPmlzQXR0YWNobWVudCgpKTsKIAotICAgIHJldHVybiByZXRyaWV2ZUFjY2Vzc2liaWxp
dHlWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVk
U2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgp
IC0+IGlkIHsKICAgICAgICAgYXV0byogd2lkZ2V0ID0gcHJvdGVjdGVkU2VsZi0+bV9vYmplY3Qt
PndpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7CiAgICAgICAgIGlmICghd2lkZ2V0KQogICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKQEAgLTE5MjAsNyArMTg5OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogCiAtIChOU0FycmF5KilyZW5kZXJXaWRnZXRDaGlsZHJlbgog
ewotICAgIHJldHVybiByZXRyaWV2ZUFjY2Vzc2liaWxpdHlWYWx1ZUZyb21NYWluVGhyZWFkPE5T
QXJyYXkgKj4oW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBOU0FycmF5ICogeworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8TlNBcnJheSAqPihbcHJvdGVjdGVkU2Vs
ZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+
IE5TQXJyYXkgKiB7CiAgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gcHJvdGVjdGVkU2VsZi0+bV9v
YmplY3QtPndpZGdldCgpOwogICAgICAgICBpZiAoIXdpZGdldCkKICAgICAgICAgICAgIHJldHVy
biBuaWw7CkBAIC0xOTczLDcgKzE5NTEsNyBAQCBzdGF0aWMgTlNNdXRhYmxlQXJyYXkgKmNvbnZl
cnRTdHJpbmdzVG9OU0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3IpCiAKIC0gKGlk
KWFzc29jaWF0ZWRQbHVnaW5QYXJlbnQKIHsKLSAgICByZXR1cm4gcmV0cmlldmVBY2Nlc3NpYmls
aXR5VmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3Byb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7CisgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3Byb3RlY3Rl
ZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAo
KSAtPiBpZCB7CiAgICAgICAgIGlmICghcHJvdGVjdGVkU2VsZi0+bV9vYmplY3QgfHwgIXByb3Rl
Y3RlZFNlbGYtPm1fb2JqZWN0LT5oYXNBcHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUoKSkKICAg
ICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCkBAIC0yMzI2LDcgKzIzMDQsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpc2Nyb2xsVmlld1BhcmVudAogewot
ICAgIHJldHVybiByZXRyaWV2ZUFjY2Vzc2liaWxpdHlWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihb
cHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4o
c2VsZildICgpIC0+IGlkIHsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1
ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKICAgICAgICAgaWYgKCFpczxB
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldz4ocHJvdGVjdGVkU2VsZi0+bV9vYmplY3QpKQogICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMjM3MSw3ICsyMzQ5LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAKIC0gKGlkKXdpbmRvd0VsZW1lbnQ6KE5TU3RyaW5nKilhdHRy
aWJ1dGVOYW1lCiB7Ci0gICAgcmV0dXJuIHJldHJpZXZlQWNjZXNzaWJpbGl0eVZhbHVlRnJvbU1h
aW5UaHJlYWQ8aWQ+KFthdHRyaWJ1dGVOYW1lLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFthdHRyaWJ1
dGVOYW1lLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgewogICAgICAgICBpZCByZW1vdGVQYXJlbnQgPSBbcHJv
dGVjdGVkU2VsZiByZW1vdGVBY2Nlc3NpYmlsaXR5UGFyZW50T2JqZWN0XTsKICAgICAgICAgaWYg
KHJlbW90ZVBhcmVudCkgewogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KQEAgLTM0OTcsNyArMzQ3NSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlTaG93Q29udGV4dE1lbnUKIHsKLSAgICBw
ZXJmb3JtQWNjZXNzaWJpbGl0eUZ1bmN0aW9uT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRTZWxmID0g
UmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0geworICAgIEFj
Y2Vzc2liaWxpdHk6OnBlcmZvcm1GdW5jdGlvbk9uTWFpblRocmVhZChbcHJvdGVjdGVkU2VsZiA9
IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildIHsKICAgICAg
ICAgW3Byb3RlY3RlZFNlbGYgX2FjY2Vzc2liaWxpdHlTaG93Q29udGV4dE1lbnVdOwogICAgIH0p
OwogfQpAQCAtMzkyNSwxMCArMzkwMywxMiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAvLyBkaXNwYXRjaAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RUZXh0V2l0aENyaXRlcmlhUGFyYW1ldGVyaXplZEF0
dHJpYnV0ZV0pIHsKICAgICAgICAgLy8gVG8gYmUgZGVwcmVjYXRlZC4KLSAgICAgICAgYXV0byBj
cml0ZXJpYSA9IGFjY2Vzc2liaWxpdHlUZXh0Q3JpdGVyaWFGb3JQYXJhbWV0ZXJpemVkQXR0cmli
dXRlKGRpY3Rpb25hcnkpOwotICAgICAgICBjcml0ZXJpYS5zZWNvbmQudGV4dFJhbmdlcyA9IG1f
b2JqZWN0LT5maW5kVGV4dFJhbmdlcyhjcml0ZXJpYS5maXJzdCk7Ci0gICAgICAgIEFTU0VSVChj
cml0ZXJpYS5zZWNvbmQudGV4dFJhbmdlcy5zaXplKCkgPD0gMSk7Ci0gICAgICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3VsdCA9IG1fb2JqZWN0LT5wZXJmb3JtVGV4dE9wZXJhdGlvbihjcml0ZXJpYS5z
ZWNvbmQpOworICAgICAgICBhdXRvIHJlc3VsdCA9IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFs
dWVGcm9tTWFpblRocmVhZDxWZWN0b3I8U3RyaW5nPj4oW2RpY3Rpb25hcnksIHNlbGZdICgpIC0+
IFZlY3RvcjxTdHJpbmc+IHsKKyAgICAgICAgICAgIGF1dG8gY3JpdGVyaWEgPSBhY2Nlc3NpYmls
aXR5VGV4dENyaXRlcmlhRm9yUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShkaWN0aW9uYXJ5KTsKKyAg
ICAgICAgICAgIGNyaXRlcmlhLnNlY29uZC50ZXh0UmFuZ2VzID0gbV9vYmplY3QtPmZpbmRUZXh0
UmFuZ2VzKGNyaXRlcmlhLmZpcnN0KTsKKyAgICAgICAgICAgIEFTU0VSVChjcml0ZXJpYS5zZWNv
bmQudGV4dFJhbmdlcy5zaXplKCkgPD0gMSk7CisgICAgICAgICAgICByZXR1cm4gbV9vYmplY3Qt
PnBlcmZvcm1UZXh0T3BlcmF0aW9uKGNyaXRlcmlhLnNlY29uZCk7CisgICAgICAgIH0pOwogICAg
ICAgICBBU1NFUlQocmVzdWx0LnNpemUoKSA8PSAxKTsKICAgICAgICAgaWYgKHJlc3VsdC5zaXpl
KCkgPiAwKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdFswXTsKQEAgLTM5MzcsMjAgKzM5MTcs
MjQgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKICAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VhcmNoVGV4dFdpdGhDcml0
ZXJpYVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CiAgICAgICAgIGF1dG8gY3JpdGVyaWEgPSBh
Y2Nlc3NpYmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhRm9yUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShk
aWN0aW9uYXJ5KTsKLSAgICAgICAgYXV0byByYW5nZXMgPSBtX29iamVjdC0+ZmluZFRleHRSYW5n
ZXMoY3JpdGVyaWEpOwotICAgICAgICBpZiAocmFuZ2VzLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5ICptYXJrZXJzID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnJhbmdlcy5zaXplKCldOwotICAgICAgICBmb3IgKGF1
dG8gcmFuZ2UgOiByYW5nZXMpIHsKLSAgICAgICAgICAgIGlmIChpZCBtYXJrZXIgPSBbc2VsZiB0
ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2U6cmFuZ2VdKQotICAgICAgICAgICAgICAgIFttYXJrZXJz
IGFkZE9iamVjdDptYXJrZXJdOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtYXJrZXJzOwor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFk
PE5TQXJyYXkgKj4oWyZjcml0ZXJpYSwgc2VsZl0gKCkgLT4gTlNBcnJheSAqIHsKKyAgICAgICAg
ICAgIGF1dG8gcmFuZ2VzID0gbV9vYmplY3QtPmZpbmRUZXh0UmFuZ2VzKGNyaXRlcmlhKTsKKyAg
ICAgICAgICAgIGlmIChyYW5nZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBu
aWw7CisgICAgICAgICAgICBOU011dGFibGVBcnJheSAqbWFya2VycyA9IFtOU011dGFibGVBcnJh
eSBhcnJheVdpdGhDYXBhY2l0eTpyYW5nZXMuc2l6ZSgpXTsKKyAgICAgICAgICAgIGZvciAoYXV0
byByYW5nZSA6IHJhbmdlcykgeworICAgICAgICAgICAgICAgIGlmIChpZCBtYXJrZXIgPSBbc2Vs
ZiB0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2U6cmFuZ2VdKQorICAgICAgICAgICAgICAgICAgICBb
bWFya2VycyBhZGRPYmplY3Q6bWFya2VyXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiBtYXJrZXJzOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvblBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVdKSB7Ci0gICAgICAgIGF1dG8gdGV4dE9wZXJhdGlvbiA9IGFjY2Vzc2liaWxpdHlU
ZXh0T3BlcmF0aW9uRm9yUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShzZWxmLCBkaWN0aW9uYXJ5KTsK
LSAgICAgICAgYXV0byBvcGVyYXRpb25SZXN1bHQgPSBtX29iamVjdC0+cGVyZm9ybVRleHRPcGVy
YXRpb24odGV4dE9wZXJhdGlvbik7CisgICAgICAgIGF1dG8gb3BlcmF0aW9uUmVzdWx0ID0gQWNj
ZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFZlY3RvcjxTdHJpbmc+Pihb
ZGljdGlvbmFyeSwgc2VsZl0gKCkgLT4gVmVjdG9yPFN0cmluZz4geworICAgICAgICAgICAgYXV0
byB0ZXh0T3BlcmF0aW9uID0gYWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb25Gb3JQYXJhbWV0ZXJp
emVkQXR0cmlidXRlKHNlbGYsIGRpY3Rpb25hcnkpOworICAgICAgICAgICAgcmV0dXJuIG1fb2Jq
ZWN0LT5wZXJmb3JtVGV4dE9wZXJhdGlvbih0ZXh0T3BlcmF0aW9uKTsKKyAgICAgICAgfSk7CiAg
ICAgICAgIGlmIChvcGVyYXRpb25SZXN1bHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBh
cnJheVdpdGhDYXBhY2l0eTpvcGVyYXRpb25SZXN1bHQuc2l6ZSgpXTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiYTc3NjI4MTVlNzRiYTM5ZWY3
ZWJiZDQ0NjM4M2FjMWJhZTZmNjAxLi4zYjMxYmExZTczYTAzZmEyYzljYjM2OTViNDY1ZjI2N2Nk
MmVkZWQ2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTktMTItMTMgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2df
MjJAYXBwbGUuY29tPgorCisgICAgICAgIElzb2xhdGVkIG9iamVjdCBpbXBsZW1lbnRhdGlvbiBv
ZiBwYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZSBTZWxlY3RUZXh0V2l0aENyaXRlcmlhLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MjEwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVtZW50KTogQWx3YXlzIHJ1biBp
biBteSB0aHJlYWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpleGVj
dXRlKTogRGlzcGF0Y2hlcyB0byB0aGUgc2Vjb25kYXJ5IHRocmVhZC4gU3BpbnMgdGhlIG1haW4g
bG9vcCB0byBhbGxvdyBwYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZXMgbWV0aG9kcyB0byBleGVjdXRl
IGluIG1haW4gdGhyZWFkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpmaW5k
QWNjZXNzaWJsZU9iamVjdEJ5SWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6YWNjZXNzaWJsZUVsZW1lbnRCeUlkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RUZXh0V2l0aENyaXRlcmlhKToK
KwogMjAxOS0xMi0wOSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGFuIG9wdGlvbiB0byBjYXB0dXJlIGF1ZGlvIGluIEdQVSBwcm9jZXNzCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IGY4YTM0ODY1MDNhOWI0N2ZhNTRjY2U2ZjZk
MDA4OGMxYmVlYjRhMTYuLmM5NjY5YzFmZGJiNTJkMjA2ZGM0MzA3MjNhYzg4M2RmZTkwMjRiZjAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC03NiwyMiArNzYsMTIgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZW5oYW5jZWRBY2Nlc3NpYmlsaXR5RW5hYmxl
ZCgpCiBSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OnJvb3RFbGVtZW50KCkKIHsKICAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKTsKLSAgICBQbGF0Zm9ybVVJRWxlbWVudCBy
b290ID0gbnVsbHB0cjsKKyAgICBQbGF0Zm9ybVVJRWxlbWVudCByb290ID0gc3RhdGljX2Nhc3Q8
UGxhdGZvcm1VSUVsZW1lbnQ+KFdLQWNjZXNzaWJpbGl0eVJvb3RPYmplY3QocGFnZSkpOwogCi0g
ICAgaWYgKG1fdXNlQVhUaHJlYWQpIHsKLSAgICAgICAgQVhUaHJlYWQ6OmRpc3BhdGNoKFsmcm9v
dCwgcGFnZSwgdGhpc10gewotICAgICAgICAgICAgcm9vdCA9IHN0YXRpY19jYXN0PFBsYXRmb3Jt
VUlFbGVtZW50PihXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KHBhZ2UpKTsKLSAgICAgICAgICAg
IG1fc2VtYXBob3JlLnNpZ25hbCgpOwotICAgICAgICB9KTsKLQotICAgICAgICBtX3NlbWFwaG9y
ZS53YWl0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcm9vdCA9IHN0YXRpY19jYXN0PFBsYXRm
b3JtVUlFbGVtZW50PihXS0FjY2Vzc2liaWxpdHlSb290T2JqZWN0KHBhZ2UpKTsKLQotICAgICAg
ICAvLyBTZXQgbV91c2VBWFRocmVhZCB0byB0cnVlIGZvciBuZXh0IHJlcXVlc3QuCi0gICAgICAg
IGlmIChXS0FjY2Vzc2liaWxpdHlDYW5Vc2VTZWNvbmRhcnlBWFRocmVhZChwYWdlKSkKLSAgICAg
ICAgICAgIG1fdXNlQVhUaHJlYWQgPSB0cnVlOwotICAgIH0KKyAgICAvLyBOb3cgdGhhdCB3ZSBo
YXZlIGEgcm9vdCBhbmQgdGhlIGlzb2xhdGVkIHRyZWUgaXMgZ2VuZXJhdGVkLCBzZXQKKyAgICAv
LyBtX3VzZUFYVGhyZWFkIHRvIHRydWUgZm9yIG5leHQgcmVxdWVzdCB0byBiZSBoYW5kbGVkIGlu
IHRoZSBzZWNvbmRhcnkgdGhyZWFkLgorICAgIGlmIChXS0FjY2Vzc2liaWxpdHlDYW5Vc2VTZWNv
bmRhcnlBWFRocmVhZChJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkp
KQorICAgICAgICBtX3VzZUFYVGhyZWFkID0gdHJ1ZTsKIAogICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjcmVhdGUocm9vdCk7CiB9CkBAIC0xMDMsNyArOTMsNyBAQCBSZWY8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVt
ZW50KCkKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGZvY3VzZWRF
bGVtZW50KTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZXhlY3V0ZShGdW5j
dGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpl
eGVjdXRlT25BWFRocmVhZElmUG9zc2libGUoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQog
ewogICAgIGlmIChtX3VzZUFYVGhyZWFkKSB7CiAgICAgICAgIEFYVGhyZWFkOjpkaXNwYXRjaChb
JmZ1bmN0aW9uLCB0aGlzXSB7CkBAIC0xMTEsNiArMTAxLDExIEBAIHZvaWQgQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI6OmV4ZWN1dGUoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgICAg
ICAgICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgICAgIH0pOwogCisgICAgICAgIC8vIFNw
aW4gdGhlIG1haW4gbG9vcCBzbyB0aGF0IGFueSByZXF1aXJlZCBET00gcHJvY2Vzc2luZyBjYW4g
YmUKKyAgICAgICAgLy8gZXhlY3V0ZWQgaW4gdGhlIG1haW4gdGhyZWFkLiBUaGF0IGlzIHRoZSBj
YXNlIG9mIG1vc3QgcGFyYW1ldGVyaXplZAorICAgICAgICAvLyBhdHRyaWJ1dGVzLCB3aGVyZSB0
aGUgYXR0cmlidXRlIHZhbHVlIGhhcyB0byBiZSBjYWxjdWxhdGVkCisgICAgICAgIC8vIGJhY2sg
aW4gdGhlIG1haW4gdGhyZWFkLgorICAgICAgICBDRlJ1bkxvb3BSdW5Jbk1vZGUoa0NGUnVuTG9v
cERlZmF1bHRNb2RlLCAuMjUsIGZhbHNlKTsKICAgICAgICAgbV9zZW1hcGhvcmUud2FpdCgpOwog
ICAgIH0gZWxzZQogICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5oCmluZGV4IGY4ZGYzYzhjN2IxNDNhNGRjNzRjMGQyNGIyZGU1OWVjNjQzNzBlYTAuLmNlZmFh
NDNiZGZlMjAzYWU0ZGM2YTA0OTYzMTBlYWE5NWQ3NjRlYjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBhY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWRBdHRy
aWJ1dGUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBleGVjdXRlKEZ1bmN0aW9u
PHZvaWQoKT4mJik7CisgICAgdm9pZCBleGVjdXRlT25BWFRocmVhZElmUG9zc2libGUoRnVuY3Rp
b248dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgYm9vbCBhZGROb3RpZmljYXRpb25MaXN0ZW5l
cihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlck1hYy5tbQppbmRleCBkMWRkMjI4MDcxMzIxMzMwYjNkYjhjNWQ1MTBmZGJl
ZTAwZTg4ZDdhLi5hOTRkZTM4NjBkOWNjNDFlNmJmOGNmMGZlMzdkNzliNTNiY2JiZTYzIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlck1hYy5tbQpAQCAtODEsNiArODEs
NyBAQCBzdGF0aWMgaWQgZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKGlkIG9iaiwgTlNTdHJpbmcg
KmlkQXR0cmlidXRlKQogICAgICAgICByZXR1cm4gb2JqOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKIAorICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TQXJyYXkgKmNoaWxk
cmVuID0gW29iaiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5BdHRyaWJ1dGVdOwogICAgIE5TVUludGVnZXIgY2hpbGRyZW5Db3VudCA9IFtjaGlsZHJl
biBjb3VudF07CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY2hpbGRyZW5Db3VudDsg
KytpKSB7CkBAIC04OCw2ICs4OSw3IEBAIHN0YXRpYyBpZCBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5
SWQoaWQgb2JqLCBOU1N0cmluZyAqaWRBdHRyaWJ1dGUpCiAgICAgICAgIGlmIChyZXN1bHQpCiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTk1LDEyICs5NywyNCBAQCBzdGF0aWMg
aWQgZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKGlkIG9iaiwgTlNTdHJpbmcgKmlkQXR0cmlidXRl
KQogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
OjphY2Nlc3NpYmxlRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWRBdHRyaWJ1dGUpCiB7CiAgICAg
V0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgp
LT5wYWdlKCk7Ci0gICAgaWQgcm9vdCA9IChfX2JyaWRnZSBpZClXS0FjY2Vzc2liaWxpdHlSb290
T2JqZWN0KHBhZ2UpOworICAgIFBsYXRmb3JtVUlFbGVtZW50IHJvb3QgPSBudWxscHRyOworCisg
ICAgZXhlY3V0ZU9uQVhUaHJlYWRJZlBvc3NpYmxlKFsmcGFnZSwgJnJvb3RdIHsKKyAgICAgICAg
cm9vdCA9IHN0YXRpY19jYXN0PFBsYXRmb3JtVUlFbGVtZW50PihXS0FjY2Vzc2liaWxpdHlSb290
T2JqZWN0KHBhZ2UpKTsKKyAgICB9KTsKKworICAgIC8vIE5vdyB0aGF0IHdlIGhhdmUgYSByb290
IGFuZCB0aGUgaXNvbGF0ZWQgdHJlZSBpcyBnZW5lcmF0ZWQsIHNldAorICAgIC8vIG1fdXNlQVhU
aHJlYWQgdG8gdHJ1ZSBmb3IgbmV4dCByZXF1ZXN0IHRvIGJlIGhhbmRsZWQgaW4gdGhlIHNlY29u
ZGFyeSB0aHJlYWQuCisgICAgaWYgKFdLQWNjZXNzaWJpbGl0eUNhblVzZVNlY29uZGFyeUFYVGhy
ZWFkKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSkpCisgICAgICAg
IG1fdXNlQVhUaHJlYWQgPSB0cnVlOworCisgICAgaWQgcmVzdWx0OworICAgIGV4ZWN1dGVPbkFY
VGhyZWFkSWZQb3NzaWJsZShbJnJvb3QsICZpZEF0dHJpYnV0ZSwgJnJlc3VsdF0geworICAgICAg
ICByZXN1bHQgPSBmaW5kQWNjZXNzaWJsZU9iamVjdEJ5SWQocm9vdCwgW05TU3RyaW5nIHN0cmlu
Z1dpdGhKU1N0cmluZ1JlZjppZEF0dHJpYnV0ZV0pOworICAgIH0pOwogCi0gICAgaWQgcmVzdWx0
ID0gZmluZEFjY2Vzc2libGVPYmplY3RCeUlkKHJvb3QsIFtOU1N0cmluZyBzdHJpbmdXaXRoSlNT
dHJpbmdSZWY6aWRBdHRyaWJ1dGVdKTsKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHJlc3VsdCk7Ci0KICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5k
ZXggYzU2OWY2ODYzNjRhNjE5YzUyNmVhYzhiMWExZDEzYjVkMTYyOTYyYi4uOWI1OWJmY2UwZjRj
NDg1NWJmY2RmYWU2NWQ0NTk1ZTRiZjY2MWNhMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tCkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZShWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUUKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKICAgICBhdXRvIGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKCk7Ci0gICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPmV4ZWN1dGUoWyZl
bGVtZW50VmVjdG9yLCBsb2NhdGlvbiwgbGVuZ3RoLCB0aGlzXSB7CisgICAgYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXItPmV4ZWN1dGVPbkFYVGhyZWFkSWZQb3NzaWJsZShbJmVsZW1lbnRWZWN0b3Is
IGxvY2F0aW9uLCBsZW5ndGgsIHRoaXNdIHsKICAgICAgICAgTlNBcnJheSogY2hpbGRyZW4gPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczpOU0FjY2Vzc2liaWxp
dHlDaGlsZHJlbkF0dHJpYnV0ZSBpbmRleDpsb2NhdGlvbiBtYXhDb3VudDpsZW5ndGhdOwogICAg
ICAgICBlbGVtZW50VmVjdG9yID0gY29udmVydE5TQXJyYXlUb1ZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4+KGNoaWxkcmVuKTsKICAgICB9KTsKQEAgLTY0MCw3ICs2NDAsNyBA
QCBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNT
dHJpbmdSZWYgYXR0cmlidXRlKQogICAgIGlkIHZhbHVlOwogCiAgICAgYXV0byBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlciA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcigpOwotICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5leGVjdXRlKFsmYXR0
cmlidXRlLCAmdmFsdWUsIHRoaXNdIHsKKyAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci0+ZXhl
Y3V0ZU9uQVhUaHJlYWRJZlBvc3NpYmxlKFsmYXR0cmlidXRlLCAmdmFsdWUsIHRoaXNdIHsKICAg
ICAgICAgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpbTlNT
dHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOwogICAgIH0pOwogCkBAIC0x
MjUzLDcgKzEyNTMsMTEgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNlbGVjdFRleHRXaXRoQ3JpdGVyaWEoSlNDb250ZXgKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUgPSBzZWxlY3RUZXh0UGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKGNvbnRleHQs
IGFtYmlndWl0eVJlc29sdXRpb24sIHNlYXJjaFN0cmluZ3MsIHJlcGxhY2VtZW50U3RyaW5nLCBh
Y3Rpdml0eSk7Ci0gICAgaWQgcmVzdWx0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWFNlbGVjdFRleHRXaXRoQ3JpdGVyaWEiIGZvclBhcmFtZXRlcjpwYXJhbWV0
ZXJpemVkQXR0cmlidXRlXTsKKyAgICBpZCByZXN1bHQ7CisgICAgYXV0byBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlciA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcigpOworICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLT5leGVjdXRlT25BWFRocmVh
ZElmUG9zc2libGUoWyZwYXJhbWV0ZXJpemVkQXR0cmlidXRlLCAmcmVzdWx0LCB0aGlzXSB7Cisg
ICAgICAgIHJlc3VsdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhTZWxlY3RUZXh0V2l0aENyaXRlcmlhIiBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVyaXplZEF0dHJp
YnV0ZV07CisgICAgfSk7CiAgICAgaWYgKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcg
Y2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFtyZXN1bHQgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
</data>

          </attachment>
      

    </bug>

</bugzilla>