<?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>207558</bug_id>
          
          <creation_ts>2020-02-11 09:39:03 -0800</creation_ts>
          <short_desc>Fix for crashes in WebAccessibilityObjectWrapper after notification updates in IsolatedTree mode.</short_desc>
          <delta_ts>2020-02-11 13:34:17 -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>1617433</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-02-11 09:39:03 -0800</bug_when>
    <thetext>Fix for crashes in WebAccessibilityObjectWrapper after notification updates in IsolatedTree mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617442</commentid>
    <comment_count>1</comment_count>
      <attachid>390378</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-02-11 09:50:19 -0800</bug_when>
    <thetext>Created attachment 390378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617444</commentid>
    <comment_count>2</comment_count>
      <attachid>390378</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-02-11 09:54:34 -0800</bug_when>
    <thetext>Comment on attachment 390378
Patch

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

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:802
&gt; +    if (self.axBackingObject)

if (auto backingObject = self.axBackingObject)
   ....

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:1956
&gt; +    return Accessibility::retrieveValueFromMainThread&lt;RetainPtr&lt;id&gt;&gt;([protectedSelf = RetainPtr&lt;WebAccessibilityObjectWrapper&gt;(self)] () -&gt; RetainPtr&lt;id&gt; {

should we have a retrieveValueFromMainThreadWithAutorelease function that handles the right casting and release for these kinds of values?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617518</commentid>
    <comment_count>3</comment_count>
      <attachid>390397</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-02-11 11:21:08 -0800</bug_when>
    <thetext>Created attachment 390397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617519</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-02-11 11:23:07 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #2)
&gt; Comment on attachment 390378 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=390378&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:802
&gt; &gt; +    if (self.axBackingObject)
&gt; 
&gt; if (auto backingObject = self.axBackingObject)
&gt;    ....

Fixed.
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:1956
&gt; &gt; +    return Accessibility::retrieveValueFromMainThread&lt;RetainPtr&lt;id&gt;&gt;([protectedSelf = RetainPtr&lt;WebAccessibilityObjectWrapper&gt;(self)] () -&gt; RetainPtr&lt;id&gt; {
&gt; 
&gt; should we have a retrieveValueFromMainThreadWithAutorelease function that
&gt; handles the right casting and release for these kinds of values?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617593</commentid>
    <comment_count>5</comment_count>
      <attachid>390397</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-11 13:33:46 -0800</bug_when>
    <thetext>Comment on attachment 390397
Patch

Clearing flags on attachment: 390397

Committed r256347: &lt;https://trac.webkit.org/changeset/256347&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617594</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-11 13:33:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617595</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-11 13:34:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/59361573&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390378</attachid>
            <date>2020-02-11 09:50:19 -0800</date>
            <delta_ts>2020-02-11 11:21:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207558-20200211125018.patch</filename>
            <type>text/plain</type>
            <size>22841</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1OTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM2NzBhZGMwYTljODk4
MTBmZjkxNGM2NDZhMzU4N2VkNTU0NzY1NS4uMmQ4N2MyMTBlYjE5M2I2ZWM0NWQxMWQxNjM2MWZi
YjYyMWU3NGE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTAyLTExICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggZm9yIGNy
YXNoZXMgaW4gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWZ0ZXIgbm90aWZpY2F0aW9u
IHVwZGF0ZXMgaW4gSXNvbGF0ZWRUcmVlIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAtIEFjY2Vzc2liaWxpdHkgbWV0aG9kcyBpbnZva2VkIGlu
IHRoZSBzZWNvbmRhcnkgdGhyZWFkIHRoYXQgUmV0dXJuIGlkCisgICAgICAgIHZhbHVlcyByZXRy
aWV2ZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQsIG5lZWQgdG8gcmV0YWluL2F1dG9yZWxlYXNlIHRo
ZQorICAgICAgICByZXR1cm5lZCBpZHMuCisgICAgICAgIC0gV2hlbiBzZXJ2aW5nIGEgcmVxdWVz
dCBvbiB0aGUgQVggdGhyZWFkIHRoYXQgcmVxdWlyZXMgcmV0cmlldmluZyBhCisgICAgICAgIHZh
bHVlIGZyb20gdGhlIG1haW4gdGhyZWFkLCB0aGUgYmFja2luZyBvYmJqZWN0IG9uIHRoZSBtYWlu
IHRocmVhZCBtYXkKKyAgICAgICAgaGF2ZSBnb25lIGF3YXksIHNvIG5lZWQgdG8gY2hlY2sgZm9y
IG51bGxpdHkgb2YgdGhlIGJhY2tpbmcgb2JqZWN0IGFsc28KKyAgICAgICAgb24gdGhlIG1haW4g
dGhyZWFkLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGF0dGFjaG1lbnRWaWV3XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZTpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dKToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYXNzb2NpYXRlZFBsdWdpblBhcmVudF0pOgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzY3JvbGxWaWV3UGFyZW50
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHdpbmRvd0VsZW1l
bnQ6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6CisKIDIwMjAtMDItMDYgIEFkcmlh
biBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ2Fpcm9d
IERvIG5vdCB1c2Ugb2xkLXN0eWxlIEdOVSBmaWVsZCBpbml0aWFsaXplcnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggYWY5ZmRiOTFlNzUxOTczNjVjYmJhMjQ3
OTk5MGY5NzA3OGY2MjJjYi4uZmJiN2M0ZmUzMDg0ODYzNjlhMDBjM2EyYmJiOGJmZDk3ZmMyZTIw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTU1NywxMiAr
NTU3LDEyIEBAIGV4dGVybiAiQyIgQVhVSUVsZW1lbnRSZWYgTlNBY2Nlc3NpYmlsaXR5Q3JlYXRl
QVhVSUVsZW1lbnRSZWYoaWQgZWxlbWVudCk7CiB7CiAgICAgQVNTRVJUKHNlbGYuYXhCYWNraW5n
T2JqZWN0LT5pc0F0dGFjaG1lbnQoKSk7CiAKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0
cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFJldGFpblB0cjxp
ZD4+KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyPihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7CiAgICAgICAgIGF1dG8qIHdpZGdldCA9
IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0LT53aWRnZXRGb3JBdHRhY2htZW50
VmlldygpOwogICAgICAgICBpZiAoIXdpZGdldCkKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlVbmlnbm9yZWREZXNjZW5kYW50KHdpZGdldC0+
cGxhdGZvcm1XaWRnZXQoKSk7Ci0gICAgfSk7CisgICAgfSkuYXV0b3JlbGVhc2UoKTsKIH0KIAog
I3ByYWdtYSBtYXJrIFN5c3RlbUludGVyZmFjZSB3cmFwcGVycwpAQCAtNzk5LDcgKzc5OSw5IEBA
IHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1h
cmtlcihBWE9iamVjdENhY2hlKiBjYWNoCiAKIC0gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21SYW5n
ZTooY29uc3QgUmVmUHRyPFJhbmdlPilyYW5nZQogewotICAgIHJldHVybiB0ZXh0TWFya2VyUmFu
Z2VGcm9tUmFuZ2Uoc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgcmFuZ2Up
OworICAgIGlmIChzZWxmLmF4QmFja2luZ09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRleHRNYXJr
ZXJSYW5nZUZyb21SYW5nZShzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCBy
YW5nZSk7CisgICAgcmV0dXJuIG5pbDsKIH0KIAogc3RhdGljIGlkIHRleHRNYXJrZXJSYW5nZUZy
b21SYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgUmVmUHRyPFJhbmdlPiByYW5nZSkK
QEAgLTE4OTUsNyArMTg5NywxMSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKIC0gKE5TQXJyYXkqKXJlbmRlcldpZGdldENoaWxkcmVuCiB7CiAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxOU0FycmF5ICo+KFtwcm90ZWN0
ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0g
KCkgLT4gTlNBcnJheSAqIHsKLSAgICAgICAgV2lkZ2V0KiB3aWRnZXQgPSBwcm90ZWN0ZWRTZWxm
LmdldCgpLmF4QmFja2luZ09iamVjdC0+d2lkZ2V0KCk7CisgICAgICAgIGF1dG8qIGJhY2tpbmdP
YmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKKyAgICAgICAgaWYg
KCFiYWNraW5nT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICBXaWRn
ZXQqIHdpZGdldCA9IGJhY2tpbmdPYmplY3QtPndpZGdldCgpOwogICAgICAgICBpZiAoIXdpZGdl
dCkKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCkBAIC0xOTQ3LDcgKzE5NTMsNyBAQCBzdGF0aWMgTlNNdXRhYmxlQXJy
YXkgKmNvbnZlcnRTdHJpbmdzVG9OU0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3Ip
CiAKIC0gKGlkKWFzc29jaWF0ZWRQbHVnaW5QYXJlbnQKIHsKLSAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJl
dGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsK
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFJl
dGFpblB0cjxpZD4+KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7CiAgICAgICAgIGlmICgh
cHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3QgfHwgIXByb3RlY3RlZFNlbGYuZ2V0
KCkuYXhCYWNraW5nT2JqZWN0LT5oYXNBcHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUoKSkKICAg
ICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCkBAIC0xOTU5LDcgKzE5NjUsNyBAQCBzdGF0aWMg
TlNNdXRhYmxlQXJyYXkgKmNvbnZlcnRTdHJpbmdzVG9OU0FycmF5KGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB2ZWN0b3IpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICAKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFBsdWdpblZpZXdCYXNlKj4ocGx1Z2luV2lkZ2V0KS0+YWNjZXNz
aWJpbGl0eUFzc29jaWF0ZWRQbHVnaW5QYXJlbnRGb3JFbGVtZW50KHByb3RlY3RlZFNlbGYuZ2V0
KCkuYXhCYWNraW5nT2JqZWN0LT5lbGVtZW50KCkpOwotICAgIH0pOworICAgIH0pLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIFdlYlRyYW5zZm9ybUNHUGF0aFRvTlNCZXppZXJQYXRo
KHZvaWQqIGluZm8sIGNvbnN0IENHUGF0aEVsZW1lbnQgKmVsZW1lbnQpCkBAIC0yMjk4LDcgKzIz
MDQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpc2Nyb2xs
Vmlld1BhcmVudAogewotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJv
bU1haW5UaHJlYWQ8aWQ+KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmV0YWluUHRyPGlkPj4oW3Byb3RlY3Rl
ZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAo
KSAtPiBSZXRhaW5QdHI8aWQ+IHsKICAgICAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5U2Nyb2xs
Vmlldz4ocHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3QpKQogICAgICAgICAgICAg
cmV0dXJuIG5pbDsKIApAQCAtMjMxNSw3ICsyMzIxLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5pZ25vcmVk
QW5jZXN0b3Ioc2Nyb2xsLT5wbGF0Zm9ybVdpZGdldCgpKTsKIAogICAgICAgICByZXR1cm4gW3By
b3RlY3RlZFNlbGYgcmVtb3RlQWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdF07Ci0gICAgfSk7Cisg
ICAgfSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoTlNTdHJpbmcgKil2YWx1ZURlc2NyaXB0aW9u
Rm9yTWV0ZXIKQEAgLTIzNDMsNyArMjM0OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAogCiAtIChpZCl3aW5kb3dFbGVtZW50OihOU1N0cmluZyopYXR0cmlidXRlTmFtZQog
ewotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8
aWQ+KFthdHRyaWJ1dGVOYW1lLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmV0YWluUHRyPGlkPj4oW2F0dHJp
YnV0ZU5hbWUsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKICAgICAgICAgaWQgcmVtb3Rl
UGFyZW50ID0gW3Byb3RlY3RlZFNlbGYgcmVtb3RlQWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdF07
CiAgICAgICAgIGlmIChyZW1vdGVQYXJlbnQpIHsKICAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCkBAIC0yMzUxLDExICsyMzU3LDE1IEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYXV0byogZnYgPSBwcm90ZWN0
ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdC0+ZG9jdW1lbnRGcmFtZVZpZXcoKSkKKyAgICAg
ICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2Jq
ZWN0OworICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gbmls
OworCisgICAgICAgIGlmIChhdXRvKiBmdiA9IGJhY2tpbmdPYmplY3QtPmRvY3VtZW50RnJhbWVW
aWV3KCkpCiAgICAgICAgICAgICByZXR1cm4gW2Z2LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd107
CiAKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9KTsKKyAgICB9KS5hdXRvcmVsZWFzZSgpOwog
fQogCiAvLyBGSVhNRTogc3BsaXQgdXAgdGhpcyBmdW5jdGlvbiBpbiBhIGJldHRlciB3YXkuCkBA
IC0zOTU3LDcgKzM5NjcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5RW5kVGV4dE1hcmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7Ci0gICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+
KFsmcmVjdCwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6
OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZXRhaW5QdHI8aWQ+PihbJnJlY3QsIHByb3Rl
Y3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYp
XSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKICAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVj
dGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICAgICAg
ICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTM5NjUsMTEg
KzM5NzUsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAg
ICAgICBJbnRSZWN0IHdlYkNvcmVSZWN0ID0gW3Byb3RlY3RlZFNlbGYgc2NyZWVuVG9Db250ZW50
czplbmNsb3NpbmdJbnRSZWN0KHJlY3QpXTsKICAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBj
aGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9yQm91bmRzKHdlYkNvcmVS
ZWN0LCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgdGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdOwotICAgICAgICB9KTsKKyAgICAg
ICAgfSkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U3RhcnRUZXh0TWFya2VyRm9yQm91bmRzUGFyYW1ldGVy
aXplZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZl
VmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZyZWN0LCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRy
PFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPFJldGFp
blB0cjxpZD4+KFsmcmVjdCwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewogICAgICAgICAg
ICAgYXV0byogY2FjaGUgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdC0+YXhP
YmplY3RDYWNoZSgpOwogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmlsOwpAQCAtMzk3Nyw3ICszOTg3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgICAgICBJbnRSZWN0IHdlYkNvcmVSZWN0ID0gW3Byb3RlY3Rl
ZFNlbGYgc2NyZWVuVG9Db250ZW50czplbmNsb3NpbmdJbnRSZWN0KHJlY3QpXTsKICAgICAgICAg
ICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zm
c2V0Rm9yQm91bmRzKHdlYkNvcmVSZWN0LCB0cnVlKTsKICAgICAgICAgICAgIHJldHVybiBbcHJv
dGVjdGVkU2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF07
Ci0gICAgICAgIH0pOworICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlMaW5lVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlclBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CkBAIC00MDE0LDEw
ICs0MDI0LDEwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0K
IAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdl
Rm9yVUlFbGVtZW50Il0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZl
VmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ1aUVsZW1lbnQsIHByb3RlY3RlZFNlbGYgPSBSZXRh
aW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7Cisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8
UmV0YWluUHRyPGlkPj4oWyZ1aUVsZW1lbnQsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsK
ICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSB1aUVsZW1lbnQuZ2V0KCktPmVsZW1l
bnRSYW5nZSgpOwogICAgICAgICAgICAgcmV0dXJuIFtwcm90ZWN0ZWRTZWxmIHRleHRNYXJrZXJS
YW5nZUZyb21SYW5nZTpyYW5nZV07Ci0gICAgICAgIH0pOworICAgICAgICB9KS5hdXRvcmVsZWFz
ZSgpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTGlu
ZUZvclRleHRNYXJrZXIiXSkgewpAQCAtNDA0MiwxNCArNDA1MiwxNCBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKCFwb2ludFNldCkKICAgICAgICAg
ICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZl
VmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ3ZWJDb3JlUG9pbnQsIHByb3RlY3RlZFNlbGYgPSBS
ZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7
CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJl
YWQ8UmV0YWluUHRyPGlkPj4oWyZ3ZWJDb3JlUG9pbnQsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5Q
dHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8
aWQ+IHsKICAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJh
Y2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0
IGNoYXJhY3Rlck9mZnNldCA9IGNhY2hlLT5jaGFyYWN0ZXJPZmZzZXRGb3JQb2ludCh3ZWJDb3Jl
UG9pbnQsIHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0KTsKICAgICAgICAgICAg
IHJldHVybiBbcHJvdGVjdGVkU2VsZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJh
Y3Rlck9mZnNldF07Ci0gICAgICAgIH0pOworICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOwogICAg
IH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYQm91bmRzRm9yVGV4
dE1hcmtlclJhbmdlIl0pIHsKQEAgLTQwNjEsMTcgKzQwNzEsMjEgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5Qm91bmRzRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkg
ewogICAgICAgICBOU1JlY3QgcmVjdCA9IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9t
TWFpblRocmVhZDxOU1JlY3Q+KFsmcmFuZ2UsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBOU1JlY3QgewotICAgICAg
ICAgICAgYXV0byogY2FjaGUgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdC0+
YXhPYmplY3RDYWNoZSgpOworICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3Rl
Y3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0OworICAgICAgICAgICAgaWYgKCFiYWNraW5n
T2JqZWN0KQorICAgICAgICAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOworCisgICAgICAgICAg
ICBhdXRvKiBjYWNoZSA9IGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICAgICAg
ICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAKLSAg
ICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBzdGFydCA9IGNhY2hlLT5jaGFyYWN0ZXJPZmZzZXRG
b3JJbmRleChyYW5nZS5sb2NhdGlvbiwgcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmpl
Y3QpOwotICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGNhY2hlLT5jaGFyYWN0ZXJP
ZmZzZXRGb3JJbmRleChyYW5nZS5sb2NhdGlvbityYW5nZS5sZW5ndGgsIHByb3RlY3RlZFNlbGYu
Z2V0KCkuYXhCYWNraW5nT2JqZWN0KTsKKyAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBzdGFy
dCA9IGNhY2hlLT5jaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChyYW5nZS5sb2NhdGlvbiwgYmFja2lu
Z09iamVjdCk7CisgICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kID0gY2FjaGUtPmNoYXJh
Y3Rlck9mZnNldEZvckluZGV4KHJhbmdlLmxvY2F0aW9uK3JhbmdlLmxlbmd0aCwgYmFja2luZ09i
amVjdCk7CiAgICAgICAgICAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwogCiAgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gY2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhz
dGFydCwgZW5kKTsKLSAgICAgICAgICAgIGF1dG8gYm91bmRzID0gRmxvYXRSZWN0KHByb3RlY3Rl
ZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0LT5ib3VuZHNGb3JSYW5nZShyYW5nZSkpOworICAg
ICAgICAgICAgYXV0byBib3VuZHMgPSBGbG9hdFJlY3QoYmFja2luZ09iamVjdC0+Ym91bmRzRm9y
UmFuZ2UocmFuZ2UpKTsKICAgICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiBjb252ZXJ0
UmVjdFRvU3BhY2U6Ym91bmRzIHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNj
cmVlbl07CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmVj
dDpyZWN0XTsKQEAgLTQxMjcsNyArNDE0MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgICAgICBpZiAoIUFYT2JqZWN0SXNUZXh0TWFya2VyKHRleHRNYXJrZXIx
KSB8fCAhQVhPYmplY3RJc1RleHRNYXJrZXIodGV4dE1hcmtlcjIpKQogICAgICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZy
b21NYWluVGhyZWFkPGlkPihbdGV4dE1hcmtlcjEsIHRleHRNYXJrZXIyLCBwcm90ZWN0ZWRTZWxm
ID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4g
aWQgeworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWlu
VGhyZWFkPFJldGFpblB0cjxpZD4+KFt0ZXh0TWFya2VyMSwgdGV4dE1hcmtlcjIsIHByb3RlY3Rl
ZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAo
KSAtPiBSZXRhaW5QdHI8aWQ+IHsKICAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVjdGVk
U2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICAgICAgICAg
IGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQxMzYsNyArNDE1
MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAg
Q2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldDIgPSBbcHJvdGVjdGVkU2VsZiBjaGFyYWN0
ZXJPZmZzZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXIyXTsKICAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBjYWNoZS0+cmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNo
YXJhY3Rlck9mZnNldDEsIGNoYXJhY3Rlck9mZnNldDIpOwogICAgICAgICAgICAgcmV0dXJuIFtw
cm90ZWN0ZWRTZWxmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZTpyYW5nZV07Ci0gICAgICAgIH0p
OworICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRl
IGlzRXF1YWxUb1N0cmluZzpAIkFYTmV4dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKQEAg
LTQxNTAsNyArNDE2NCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTGVmdFdvcmRU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3RleHRNYXJrZXIsIHByb3Rl
Y3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYp
XSAoKSAtPiBpZCB7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVl
RnJvbU1haW5UaHJlYWQ8UmV0YWluUHRyPGlkPj4oW3RleHRNYXJrZXIsIHByb3RlY3RlZFNlbGYg
PSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBS
ZXRhaW5QdHI8aWQ+IHsKICAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVjdGVkU2VsZi5n
ZXQoKS5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICAgICAgICAgIGlmICgh
Y2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQxNTgsMTEgKzQxNzIsMTEg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBDaGFy
YWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gW3Byb3RlY3RlZFNlbGYgY2hhcmFjdGVyT2Zm
c2V0Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBjYWNoZS0+bGVmdFdvcmRSYW5nZShjaGFyYWN0ZXJPZmZzZXQpOwogICAgICAgICAg
ICAgcmV0dXJuIFtwcm90ZWN0ZWRTZWxmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZTpyYW5nZV07
Ci0gICAgICAgIH0pOworICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUmlnaHRXb3JkVGV4dE1hcmtlclJhbmdl
Rm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2
ZVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFt0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gUmV0
YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgewor
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFk
PFJldGFpblB0cjxpZD4+KFt0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7
CiAgICAgICAgICAgICBhdXRvKiBjYWNoZSA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5n
T2JqZWN0LT5heE9iamVjdENhY2hlKCk7CiAgICAgICAgICAgICBpZiAoIWNhY2hlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MTcwLDcgKzQxODQsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFy
YWN0ZXJPZmZzZXQgPSBbcHJvdGVjdGVkU2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2Vy
OnRleHRNYXJrZXJdOwogICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGNhY2hlLT5y
aWdodFdvcmRSYW5nZShjaGFyYWN0ZXJPZmZzZXQpOwogICAgICAgICAgICAgcmV0dXJuIFtwcm90
ZWN0ZWRTZWxmIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZTpyYW5nZV07Ci0gICAgICAgIH0pOwor
ICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpAIkFYTGVmdExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0p
IHsKQEAgLTQxODYsNyArNDIwMCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYU2Vu
dGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3RleHRNYXJrZXIs
IHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+
KHNlbGYpXSAoKSAtPiBpZCB7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2
ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmV0YWluUHRyPGlkPj4oW3RleHRNYXJrZXIsIHByb3RlY3Rl
ZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAo
KSAtPiBSZXRhaW5QdHI8aWQ+IHsKICAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVjdGVk
U2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICAgICAgICAg
IGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQxOTQsMTEgKzQy
MDgsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAg
ICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gW3Byb3RlY3RlZFNlbGYgY2hhcmFj
dGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKICAgICAgICAgICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBjYWNoZS0+c2VudGVuY2VGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVy
T2Zmc2V0KTsKICAgICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiB0ZXh0TWFya2VyUmFu
Z2VGcm9tUmFuZ2U6cmFuZ2VdOwotICAgICAgICB9KTsKKyAgICAgICAgfSkuYXV0b3JlbGVhc2Uo
KTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFBhcmFn
cmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewotICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4dE1hcmtlciwg
cHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4o
c2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZl
VmFsdWVGcm9tTWFpblRocmVhZDxSZXRhaW5QdHI8aWQ+PihbdGV4dE1hcmtlciwgcHJvdGVjdGVk
U2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgp
IC0+IFJldGFpblB0cjxpZD4gewogICAgICAgICAgICAgYXV0byogY2FjaGUgPSBwcm90ZWN0ZWRT
ZWxmLmdldCgpLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwogICAgICAgICAgICAg
aWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwpAQCAtNDIwNiwxMSArNDIy
MCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAg
IENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBbcHJvdGVjdGVkU2VsZiBjaGFyYWN0
ZXJPZmZzZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwogICAgICAgICAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IGNhY2hlLT5wYXJhZ3JhcGhGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVy
T2Zmc2V0KTsKICAgICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiB0ZXh0TWFya2VyUmFu
Z2VGcm9tUmFuZ2U6cmFuZ2VdOwotICAgICAgICB9KTsKKyAgICAgICAgfSkuYXV0b3JlbGVhc2Uo
KTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWE5leHRX
b3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4dE1hcmtlciwgcHJv
dGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2Vs
ZildICgpIC0+IGlkIHsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFs
dWVGcm9tTWFpblRocmVhZDxSZXRhaW5QdHI8aWQ+PihbdGV4dE1hcmtlciwgcHJvdGVjdGVkU2Vs
ZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+
IFJldGFpblB0cjxpZD4gewogICAgICAgICAgICAgYXV0byogY2FjaGUgPSBwcm90ZWN0ZWRTZWxm
LmdldCgpLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwogICAgICAgICAgICAgaWYg
KCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwpAQCAtNDIxOCwxMSArNDIzMiwx
MSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIENo
YXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBbcHJvdGVjdGVkU2VsZiBjaGFyYWN0ZXJP
ZmZzZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwogICAgICAgICAgICAgQ2hhcmFjdGVyT2Zm
c2V0IG5leHRFbmQgPSBjYWNoZS0+bmV4dFdvcmRFbmRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVy
T2Zmc2V0KTsKICAgICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiB0ZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0Om5leHRFbmRdOwotICAgICAgICB9KTsKKyAgICAgICAgfSkuYXV0b3Jl
bGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJB
WFByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4
dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6
OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZXRhaW5QdHI8aWQ+PihbdGV4dE1hcmtlciwg
cHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4o
c2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewogICAgICAgICAgICAgYXV0byogY2FjaGUgPSBw
cm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwogICAg
ICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwpAQCAtNDIz
MCw3ICs0MjQ0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAg
ICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gW3Byb3RlY3RlZFNlbGYg
Y2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKICAgICAgICAgICAgIENo
YXJhY3Rlck9mZnNldCBwcmV2aW91c1N0YXJ0ID0gY2FjaGUtPnByZXZpb3VzV29yZFN0YXJ0Q2hh
cmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CiAgICAgICAgICAgICByZXR1cm4gW3Byb3Rl
Y3RlZFNlbGYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpwcmV2aW91c1N0YXJ0XTsKLSAg
ICAgICAgfSk7CisgICAgICAgIH0pLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKFth
dHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhOZXh0TGluZUVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyIl0pIHsKQEAgLTQyNDQsNyArNDI1OCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgIH0KICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9T
dHJpbmc6QCJBWE5leHRTZW50ZW5jZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKLSAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxp
ZD4oW3RleHRNYXJrZXIsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmV0YWluUHRyPGlkPj4oW3RleHRN
YXJrZXIsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXI+KHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKICAgICAgICAgICAgIGF1dG8qIGNh
Y2hlID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUo
KTsKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsK
QEAgLTQyNTIsMTEgKzQyNjYsMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gW3Byb3Rl
Y3RlZFNlbGYgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKICAgICAg
ICAgICAgIENoYXJhY3Rlck9mZnNldCBuZXh0RW5kID0gY2FjaGUtPm5leHRTZW50ZW5jZUVuZENo
YXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwogICAgICAgICAgICAgcmV0dXJuIFtwcm90
ZWN0ZWRTZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6bmV4dEVuZF07Ci0gICAgICAg
IH0pOworICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmli
dXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUHJldmlvdXNTZW50ZW5jZVN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXIiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVW
YWx1ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IFJldGFp
blB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxS
ZXRhaW5QdHI8aWQ+PihbdGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewog
ICAgICAgICAgICAgYXV0byogY2FjaGUgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09i
amVjdC0+YXhPYmplY3RDYWNoZSgpOwogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gbmlsOwpAQCAtNDI2NCwxMSArNDI3OCwxMSBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFy
YWN0ZXJPZmZzZXQgPSBbcHJvdGVjdGVkU2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2Vy
OnRleHRNYXJrZXJdOwogICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzU3RhcnQg
PSBjYWNoZS0+cHJldmlvdXNTZW50ZW5jZVN0YXJ0Q2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9m
ZnNldCk7CiAgICAgICAgICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgdGV4dE1hcmtlckZvckNo
YXJhY3Rlck9mZnNldDpwcmV2aW91c1N0YXJ0XTsKLSAgICAgICAgfSk7CisgICAgICAgIH0pLmF1
dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5n
OkAiQVhOZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihb
dGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxSZXRhaW5QdHI8aWQ+PihbdGV4dE1hcmtl
ciwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cj4oc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewogICAgICAgICAgICAgYXV0byogY2FjaGUg
PSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwog
ICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwpAQCAt
NDI3NiwxMSArNDI5MCwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBbcHJvdGVjdGVk
U2VsZiBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwogICAgICAgICAg
ICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHRFbmQgPSBjYWNoZS0+bmV4dFBhcmFncmFwaEVuZENoYXJh
Y3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwogICAgICAgICAgICAgcmV0dXJuIFtwcm90ZWN0
ZWRTZWxmIHRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6bmV4dEVuZF07Ci0gICAgICAgIH0p
OworICAgICAgICB9KS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRl
IGlzRXF1YWxUb1N0cmluZzpAIkFYUHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFs
dWVGcm9tTWFpblRocmVhZDxpZD4oW3RleHRNYXJrZXIsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5Q
dHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7CisgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8UmV0
YWluUHRyPGlkPj4oW3RleHRNYXJrZXIsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKICAg
ICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmpl
Y3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKQEAgLTQyODgsNyArNDMwMiw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rl
ck9mZnNldCA9IFtwcm90ZWN0ZWRTZWxmIGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXI6dGV4
dE1hcmtlcl07CiAgICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNTdGFydCA9IGNh
Y2hlLT5wcmV2aW91c1BhcmFncmFwaFN0YXJ0Q2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNl
dCk7CiAgICAgICAgICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgdGV4dE1hcmtlckZvckNoYXJh
Y3Rlck9mZnNldDpwcmV2aW91c1N0YXJ0XTsKLSAgICAgICAgfSk7CisgICAgICAgIH0pLmF1dG9y
ZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAi
QVhTdHlsZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390397</attachid>
            <date>2020-02-11 11:21:08 -0800</date>
            <delta_ts>2020-02-11 13:33:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207558-20200211142107.patch</filename>
            <type>text/plain</type>
            <size>17690</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1OTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM2NzBhZGMwYTljODk4
MTBmZjkxNGM2NDZhMzU4N2VkNTU0NzY1NS4uY2MxNmVkNTBkOTdiMmQ1NGIxYzAzYWRlOWY2MjNj
OWRmYTYwMjEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAyLTExICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggZm9yIGNy
YXNoZXMgaW4gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWZ0ZXIgbm90aWZpY2F0aW9u
IHVwZGF0ZXMgaW4gSXNvbGF0ZWRUcmVlIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAtIEFjY2Vzc2liaWxpdHkgbWV0aG9kcyBpbnZva2VkIGlu
IHRoZSBzZWNvbmRhcnkgdGhyZWFkIHRoYXQgUmV0dXJuIGlkCisgICAgICAgIHZhbHVlcyByZXRy
aWV2ZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQsIG5lZWQgdG8gcmV0YWluL2F1dG9yZWxlYXNlIHRo
ZQorICAgICAgICByZXR1cm5lZCBpZHMuCisgICAgICAgIC0gV2hlbiBzZXJ2aW5nIGEgcmVxdWVz
dCBvbiB0aGUgQVggdGhyZWFkIHRoYXQgcmVxdWlyZXMgcmV0cmlldmluZyBhCisgICAgICAgIHZh
bHVlIGZyb20gdGhlIG1haW4gdGhyZWFkLCB0aGUgYmFja2luZyBvYmJqZWN0IG9uIHRoZSBtYWlu
IHRocmVhZCBtYXkKKyAgICAgICAgaGF2ZSBnb25lIGF3YXksIHNvIG5lZWQgdG8gY2hlY2sgZm9y
IG51bGxpdHkgb2YgdGhlIGJhY2tpbmcgb2JqZWN0IGFsc28KKyAgICAgICAgb24gdGhlIG1haW4g
dGhyZWFkLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9y
ZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhdHRhY2htZW50Vmlld10pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2U6XSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHJlbmRlcldpZGdldENoaWxk
cmVuXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFzc29jaWF0
ZWRQbHVnaW5QYXJlbnRdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIgc2Nyb2xsVmlld1BhcmVudF0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciB3aW5kb3dFbGVtZW50Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6Zm9yUGFyYW1ldGVyOl0pOgor
CiAyMDIwLTAyLTA2ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0NhaXJvXSBEbyBub3QgdXNlIG9sZC1zdHlsZSBHTlUgZmllbGQgaW5pdGlh
bGl6ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IGM3YWI2YzRiZGJjZGVlOGYxODU1MWYy
OTdlZjcwNTljOGExMmUxMzYuLjJkODExNzY2MDJmNmNhYTY5NzI1YTA1ZGUzNTkzNzc3OTE2YmYx
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC0xMjA3LDYgKzEyMDcsMjAgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIFQgcmV0cmlldmVWYWx1ZUZyb21NYWlu
VGhyZWFkKFUmJiBsYW1iZGEKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKKyNpZiBQTEFURk9STShD
T0NPQSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBUIHJldHJpZXZl
QXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZChVJiYgbGFtYmRhKQoreworICAgIGlmIChp
c01haW5UaHJlYWQoKSkKKyAgICAgICAgcmV0dXJuIGxhbWJkYSgpLmF1dG9yZWxlYXNlKCk7CisK
KyAgICBSZXRhaW5QdHI8VD4gdmFsdWU7CisgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZ2
YWx1ZSwgJmxhbWJkYV0geworICAgICAgICB2YWx1ZSA9IGxhbWJkYSgpOworICAgIH0pOworICAg
IHJldHVybiB2YWx1ZS5hdXRvcmVsZWFzZSgpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IEFjY2Vzc2liaWxpdHkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCBhZjlmZGI5MWU3NTE5NzM2NWNiYmEyNDc5OTkw
Zjk3MDc4ZjYyMmNiLi40NmUyNmE2YzJiN2E1MmFiMjE4OGZkY2IyNTY2N2M4NDY2ZjgxNjQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNTU3LDcgKzU1Nyw3
IEBAIGV4dGVybiAiQyIgQVhVSUVsZW1lbnRSZWYgTlNBY2Nlc3NpYmlsaXR5Q3JlYXRlQVhVSUVs
ZW1lbnRSZWYoaWQgZWxlbWVudCk7CiB7CiAgICAgQVNTRVJUKHNlbGYuYXhCYWNraW5nT2JqZWN0
LT5pc0F0dGFjaG1lbnQoKSk7CiAKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVW
YWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihb
cHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4o
c2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewogICAgICAgICBhdXRvKiB3aWRnZXQgPSBwcm90
ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdC0+d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXco
KTsKICAgICAgICAgaWYgKCF3aWRnZXQpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwpAQCAtNzk5
LDcgKzc5OSw5IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2Jq
ZWN0Rm9yVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoCiAKIC0gKGlkKXRleHRNYXJrZXJS
YW5nZUZyb21SYW5nZTooY29uc3QgUmVmUHRyPFJhbmdlPilyYW5nZQogewotICAgIHJldHVybiB0
ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2Uoc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2Fj
aGUoKSwgcmFuZ2UpOworICAgIGlmIChhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tp
bmdPYmplY3QpCisgICAgICAgIHJldHVybiB0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UoYmFja2lu
Z09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCByYW5nZSk7CisgICAgcmV0dXJuIG5pbDsKIH0KIAog
c3RhdGljIGlkIHRleHRNYXJrZXJSYW5nZUZyb21SYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwg
Y29uc3QgUmVmUHRyPFJhbmdlPiByYW5nZSkKQEAgLTE4OTUsNyArMTg5NywxMSBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIC0gKE5TQXJyYXkqKXJlbmRlcldpZGdldENo
aWxkcmVuCiB7CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFp
blRocmVhZDxOU0FycmF5ICo+KFtwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gTlNBcnJheSAqIHsKLSAgICAgICAgV2lk
Z2V0KiB3aWRnZXQgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdC0+d2lkZ2V0
KCk7CisgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4
QmFja2luZ09iamVjdDsKKyAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQorICAgICAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgICAgICBXaWRnZXQqIHdpZGdldCA9IGJhY2tpbmdPYmplY3QtPndp
ZGdldCgpOwogICAgICAgICBpZiAoIXdpZGdldCkKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCkBAIC0xOTQ3LDcgKzE5
NTMsNyBAQCBzdGF0aWMgTlNNdXRhYmxlQXJyYXkgKmNvbnZlcnRTdHJpbmdzVG9OU0FycmF5KGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB2ZWN0b3IpCiAKIC0gKGlkKWFzc29jaWF0ZWRQbHVnaW5QYXJl
bnQKIHsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhy
ZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0
cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9
IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IFJl
dGFpblB0cjxpZD4gewogICAgICAgICBpZiAoIXByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5n
T2JqZWN0IHx8ICFwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdC0+aGFzQXBwbGVQ
REZBbm5vdGF0aW9uQXR0cmlidXRlKCkpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgIApA
QCAtMjI5OCw3ICsyMzA0LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAK
IC0gKGlkKXNjcm9sbFZpZXdQYXJlbnQKIHsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0
cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFk
PGlkPihbcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcj4oc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewogICAgICAgICBpZiAoIWlzPEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3Pihwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdCkp
CiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0yMzQzLDcgKzIzNDksNyBAQCBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIAogLSAoaWQpd2luZG93RWxlbWVudDooTlNTdHJp
bmcqKWF0dHJpYnV0ZU5hbWUKIHsKLSAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVW
YWx1ZUZyb21NYWluVGhyZWFkPGlkPihbYXR0cmlidXRlTmFtZSwgcHJvdGVjdGVkU2VsZiA9IFJl
dGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsK
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21N
YWluVGhyZWFkPGlkPihbYXR0cmlidXRlTmFtZSwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4g
ewogICAgICAgICBpZCByZW1vdGVQYXJlbnQgPSBbcHJvdGVjdGVkU2VsZiByZW1vdGVBY2Nlc3Np
YmlsaXR5UGFyZW50T2JqZWN0XTsKICAgICAgICAgaWYgKHJlbW90ZVBhcmVudCkgewogICAgICAg
ICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KQEAgLTIzNTEsNyArMjM1
NywxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KGF1dG8qIGZ2ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3QtPmRvY3VtZW50
RnJhbWVWaWV3KCkpCisgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxm
LmdldCgpLmF4QmFja2luZ09iamVjdDsKKyAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQorICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKKworICAgICAgICBpZiAoYXV0byogZnYgPSBiYWNraW5nT2Jq
ZWN0LT5kb2N1bWVudEZyYW1lVmlldygpKQogICAgICAgICAgICAgcmV0dXJuIFtmdi0+cGxhdGZv
cm1XaWRnZXQoKSB3aW5kb3ddOwogCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC0zOTU3LDcgKzM5
NjcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RW5kVGV4dE1h
cmtlckZvckJvdW5kc1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmcmVjdCwgcHJv
dGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2Vs
ZildICgpIC0+IGlkIHsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0
b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZyZWN0LCBwcm90ZWN0ZWRTZWxmID0g
UmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gUmV0
YWluUHRyPGlkPiB7CiAgICAgICAgICAgICBhdXRvKiBjYWNoZSA9IHByb3RlY3RlZFNlbGYuZ2V0
KCkuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CiAgICAgICAgICAgICBpZiAoIWNh
Y2hlKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CkBAIC0zOTY5LDcgKzM5NzksNyBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U3RhcnRUZXh0TWFya2VyRm9y
Qm91bmRzUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZyZWN0LCBwcm90ZWN0ZWRT
ZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkg
LT4gaWQgeworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFz
ZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnJlY3QsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5Q
dHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8
aWQ+IHsKICAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJh
Y2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQwMTQsNyArNDAyNCw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRl
IGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVUlFbGVtZW50Il0pIHsKLSAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxp
ZD4oWyZ1aUVsZW1lbnQsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7CisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdWlF
bGVtZW50LCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyPihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7CiAgICAgICAgICAgICBSZWZQdHI8
UmFuZ2U+IHJhbmdlID0gdWlFbGVtZW50LmdldCgpLT5lbGVtZW50UmFuZ2UoKTsKICAgICAgICAg
ICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2U6cmFuZ2Vd
OwogICAgICAgICB9KTsKQEAgLTQwNDIsNyArNDA1Miw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgICAgICBpZiAoIXBvaW50U2V0KQogICAgICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZy
b21NYWluVGhyZWFkPGlkPihbJndlYkNvcmVQb2ludCwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0
cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFp
blRocmVhZDxpZD4oWyZ3ZWJDb3JlUG9pbnQsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsK
ICAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdP
YmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQwNjEsMTcgKzQwNzEsMjEgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5Qm91bmRzRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRl
XSkgewogICAgICAgICBOU1JlY3QgcmVjdCA9IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVG
cm9tTWFpblRocmVhZDxOU1JlY3Q+KFsmcmFuZ2UsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBOU1JlY3QgewotICAg
ICAgICAgICAgYXV0byogY2FjaGUgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVj
dC0+YXhPYmplY3RDYWNoZSgpOworICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHBy
b3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0OworICAgICAgICAgICAgaWYgKCFiYWNr
aW5nT2JqZWN0KQorICAgICAgICAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOworCisgICAgICAg
ICAgICBhdXRvKiBjYWNoZSA9IGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICAg
ICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAK
LSAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBzdGFydCA9IGNhY2hlLT5jaGFyYWN0ZXJPZmZz
ZXRGb3JJbmRleChyYW5nZS5sb2NhdGlvbiwgcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdP
YmplY3QpOwotICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGVuZCA9IGNhY2hlLT5jaGFyYWN0
ZXJPZmZzZXRGb3JJbmRleChyYW5nZS5sb2NhdGlvbityYW5nZS5sZW5ndGgsIHByb3RlY3RlZFNl
bGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0KTsKKyAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBz
dGFydCA9IGNhY2hlLT5jaGFyYWN0ZXJPZmZzZXRGb3JJbmRleChyYW5nZS5sb2NhdGlvbiwgYmFj
a2luZ09iamVjdCk7CisgICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgZW5kID0gY2FjaGUtPmNo
YXJhY3Rlck9mZnNldEZvckluZGV4KHJhbmdlLmxvY2F0aW9uK3JhbmdlLmxlbmd0aCwgYmFja2lu
Z09iamVjdCk7CiAgICAgICAgICAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgp
KQogICAgICAgICAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwogCiAgICAgICAgICAgICBSZWZQ
dHI8UmFuZ2U+IHJhbmdlID0gY2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0
cyhzdGFydCwgZW5kKTsKLSAgICAgICAgICAgIGF1dG8gYm91bmRzID0gRmxvYXRSZWN0KHByb3Rl
Y3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0LT5ib3VuZHNGb3JSYW5nZShyYW5nZSkpOwor
ICAgICAgICAgICAgYXV0byBib3VuZHMgPSBGbG9hdFJlY3QoYmFja2luZ09iamVjdC0+Ym91bmRz
Rm9yUmFuZ2UocmFuZ2UpKTsKICAgICAgICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2VsZiBjb252
ZXJ0UmVjdFRvU3BhY2U6Ym91bmRzIHNwYWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6
OlNjcmVlbl07CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRo
UmVjdDpyZWN0XTsKQEAgLTQxMjcsNyArNDE0MSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICBpZiAoIUFYT2JqZWN0SXNUZXh0TWFya2VyKHRleHRNYXJr
ZXIxKSB8fCAhQVhPYmplY3RJc1RleHRNYXJrZXIodGV4dE1hcmtlcjIpKQogICAgICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1
ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4dE1hcmtlcjEsIHRleHRNYXJrZXIyLCBwcm90ZWN0ZWRT
ZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkg
LT4gaWQgeworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFz
ZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4dE1hcmtlcjEsIHRleHRNYXJrZXIyLCBwcm90
ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxm
KV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7CiAgICAgICAgICAgICBhdXRvKiBjYWNoZSA9IHByb3Rl
Y3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CiAgICAgICAg
ICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MTUwLDcg
KzQxNjQsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICB9CiAK
ICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExlZnRXb3JkVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Ojpy
ZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFt0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxm
ID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4g
aWQgeworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRW
YWx1ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IFJldGFp
blB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IFJldGFpblB0
cjxpZD4gewogICAgICAgICAgICAgYXV0byogY2FjaGUgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4
QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwogICAgICAgICAgICAgaWYgKCFjYWNoZSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwpAQCAtNDE2Miw3ICs0MTc2LDcgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhSaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFy
a2VyIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9t
TWFpblRocmVhZDxpZD4oW3RleHRNYXJrZXIsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBpZCB7CisgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJl
YWQ8aWQ+KFt0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7CiAgICAgICAg
ICAgICBhdXRvKiBjYWNoZSA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0LT5h
eE9iamVjdENhY2hlKCk7CiAgICAgICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgICAg
IHJldHVybiBuaWw7CkBAIC00MTg2LDcgKzQyMDAsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJp
bmc6QCJBWFNlbnRlbmNlVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFt0
ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4dE1hcmtl
ciwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cj4oc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewogICAgICAgICAgICAgYXV0byogY2FjaGUg
PSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwog
ICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwpAQCAt
NDE5OCw3ICs0MjEyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQYXJhZ3JhcGhU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3RleHRNYXJrZXIsIHByb3Rl
Y3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYp
XSAoKSAtPiBpZCB7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9y
ZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFt0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxm
ID0gUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4g
UmV0YWluUHRyPGlkPiB7CiAgICAgICAgICAgICBhdXRvKiBjYWNoZSA9IHByb3RlY3RlZFNlbGYu
Z2V0KCkuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CiAgICAgICAgICAgICBpZiAo
IWNhY2hlKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MjEwLDcgKzQyMjQsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAo
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWE5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXIiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1
ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0
cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFp
blRocmVhZDxpZD4oW3RleHRNYXJrZXIsIHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKICAg
ICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmpl
Y3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKQEAgLTQyMjIsNyArNDIzNiw3IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzpAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7
Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJl
YWQ8aWQ+KFt0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWluUHRyPFdlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihb
dGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewogICAgICAgICAgICAgYXV0
byogY2FjaGUgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RD
YWNoZSgpOwogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1cm4g
bmlsOwpAQCAtNDI0NCw3ICs0MjU4LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpA
IkFYTmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4
dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcj4oc2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6
OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3RleHRNYXJrZXIs
IHByb3RlY3RlZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+
KHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKICAgICAgICAgICAgIGF1dG8qIGNhY2hlID0g
cHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAg
ICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQy
NTYsNyArNDI3MCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAg
IH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUHJldmlvdXNTZW50
ZW5jZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbdGV4dE1hcmtlciwg
cHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4o
c2VsZildICgpIC0+IGlkIHsKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZl
QXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3RleHRNYXJrZXIsIHByb3RlY3Rl
ZFNlbGYgPSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAo
KSAtPiBSZXRhaW5QdHI8aWQ+IHsKICAgICAgICAgICAgIGF1dG8qIGNhY2hlID0gcHJvdGVjdGVk
U2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICAgICAgICAg
IGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQyNjgsNyArNDI4
Miw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJl
dHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oW3RleHRNYXJrZXIsIHByb3RlY3RlZFNlbGYg
PSBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+KHNlbGYpXSAoKSAtPiBp
ZCB7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZh
bHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFt0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWlu
UHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gUmV0YWluUHRy
PGlkPiB7CiAgICAgICAgICAgICBhdXRvKiBjYWNoZSA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhC
YWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CiAgICAgICAgICAgICBpZiAoIWNhY2hlKQog
ICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MjgwLDcgKzQyOTQsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0
ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZh
bHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFt0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gUmV0YWlu
UHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPihzZWxmKV0gKCkgLT4gaWQgeworICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21N
YWluVGhyZWFkPGlkPihbdGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IFJldGFpblB0cjxXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4oc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewog
ICAgICAgICAgICAgYXV0byogY2FjaGUgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09i
amVjdC0+YXhPYmplY3RDYWNoZSgpOwogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gbmlsOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>