<?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>210392</bug_id>
          
          <creation_ts>2020-04-11 14:44:02 -0700</creation_ts>
          <short_desc>Make WTR::AccessibilityUIElements methods run on AX secondary thread.</short_desc>
          <delta_ts>2020-04-13 10:57:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>cfleizach</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1640604</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-04-11 14:44:02 -0700</bug_when>
    <thetext>Make WTR::AccessibilityUIElements methods run on AX secondary thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640605</commentid>
    <comment_count>1</comment_count>
      <attachid>396192</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-04-11 14:51:03 -0700</bug_when>
    <thetext>Created attachment 396192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640626</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-04-11 17:56:38 -0700</bug_when>
    <thetext>GTK failures. looks like we have things like id in the .h file

../../Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:57:12: error: ‘id’ does not name a type; did you mean ‘GPid’?
     friend id attributeValue(id, NSString*);
            ^~
            GPid

../../Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp:29:
../../Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:56:12: error: ‘NSArray’ does not name a type; did you mean ‘GArray’?
     friend NSArray* supportedAttributes(id);
            ^~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640842</commentid>
    <comment_count>3</comment_count>
      <attachid>396269</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-04-13 06:55:29 -0700</bug_when>
    <thetext>Created attachment 396269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640843</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-04-13 06:57:56 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #2)
&gt; GTK failures. looks like we have things like id in the .h file
&gt; 
&gt; ../../Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:57:12:
&gt; error: ‘id’ does not name a type; did you mean ‘GPid’?
&gt;      friend id attributeValue(id, NSString*);
&gt;             ^~
&gt;             GPid
&gt; 
&gt; ../../Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp:29:
&gt; ../../Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:56:12:
&gt; error: ‘NSArray’ does not name a type; did you mean ‘GArray’?
&gt;      friend NSArray* supportedAttributes(id);
&gt;             ^~~~~~~

Fixed in latest revision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640939</commentid>
    <comment_count>5</comment_count>
      <attachid>396269</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-04-13 10:01:06 -0700</bug_when>
    <thetext>Comment on attachment 396269
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:194
&gt; +    for (NSUInteger i = 0; i &lt; attributes.count; ++i) {

can we just do 
for (NSString *attribute in attributes) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640941</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-04-13 10:01:23 -0700</bug_when>
    <thetext>LGTM, but consider requests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640990</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-13 10:56:49 -0700</bug_when>
    <thetext>Committed r260029: &lt;https://trac.webkit.org/changeset/260029&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396269.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1640994</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-13 10:57:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/61725588&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396192</attachid>
            <date>2020-04-11 14:51:03 -0700</date>
            <delta_ts>2020-04-13 06:55:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210392-20200411175102.patch</filename>
            <type>text/plain</type>
            <size>24300</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5ODY1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTg0ZjUwN2YwYmUwMDkzNGNhMDkwNGNiMWY0NjFhNjgz
YTJlOWRhMi4uZGIxN2QyNTcwNzgxNGU1NWU3YTllMjFjNzMwOTU2MmRhNjI2YjRlZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDIwLTA0LTExICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCBtZXRob2RzIHJ1biBv
biBBWCBzZWNvbmRhcnkgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEwMzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gdGVzdCBhY2Nlc3NpYmlsaXR5IGlzb2xhdGVkIHRy
ZWUgbW9kZSwgaXQgaXMgbmVjZXNzYXJ5IHRvCisgICAgICAgIHJ1biBXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQgbWV0aG9kcyBvbiB0aGUgQVggc2Vjb25kYXJ5IHRocmVhZC4gVGhpcworICAg
ICAgICBjaGFuZ2UgdXNlcyB0aGUgZnVuY3Rpb25hbGl0eSBidWlsdC1pbiBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlciB0bworICAgICAgICBkaXNwYXRjaCB0aGUgY2FsbHMgdG8gV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgdG8gdGhlIEFYIHRocmVhZC4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpzdXBwb3J0ZWRBdHRyaWJ1dGVzKToK
KyAgICAgICAgKFdUUjo6YXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpkZXNjcmlwdGlv
bk9mVmFsdWUpOgorICAgICAgICAoV1RSOjphdHRyaWJ1dGVzT2ZFbGVtZW50KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRVSUVsZW1lbnRzV2l0aEF0dHJp
YnV0ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENo
aWxkcmVuKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRy
ZW5XaXRoUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dI
ZWFkZXJzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29s
dW1uSGVhZGVycyBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmVsZW1lbnRBdFBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxl
bWVudEZvckF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmVsZW1lbnRGb3JBdHRyaWJ1dGVBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0
SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJv
bHNFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFyaWFEZXRhaWxzRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphcmlhRXJyb3JNZXNzYWdlRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4IGNvbnN0KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50
IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRS
b3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVV
SUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRF
bGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2Vk
QnlSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRy
aWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0
cmlidXRlU3VwcG9ydGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNTZWxlY3RlZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNlbGVjdFRleHRXaXRoQ3JpdGVyaWEpOgorCiAyMDIwLTA0LTEwICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxhdHBhayBTREtdIEZsYXRwYWsg
YnVpbGQgYnJva2VuIHdoZW4gdXNpbmcgJ2dpdCBjb25maWcgY29yZS53ZWJraXRicmFuY2hidWls
ZD10cnVlJwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAppbmRleCAxNDFkYjIwYWViOTJhODE4
NDdlOTBkODhhMDU5NDQwN2U2OGM2ZWMyLi5kNjY2OTkwOGNjNzMzZDZmYTFlNmY5ZTVjMWI5MmY0
Y2EzMDM2NDYzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAtMzUsNiArMzUsOCBA
QAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19D
TEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU1N0cmluZzsKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiB1c2luZyBQbGF0Zm9ybVVJRWxlbWVudCA9IGlkOwogI2VsaWYgSEFWRShBQ0NFU1NJ
QklMSVRZKSAmJiBVU0UoQVRLKQpAQCAtNDgsNyArNTAsMTEgQEAgdHlwZWRlZiB2b2lkKiBQbGF0
Zm9ybVVJRWxlbWVudDsKIAogbmFtZXNwYWNlIFdUUiB7CiAKK2NsYXNzIEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOworCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IDogcHVibGljIEpTV3Jh
cHBhYmxlIHsKKyAgICBmcmllbmQgTlNBcnJheSogc3VwcG9ydGVkQXR0cmlidXRlcyhpZCk7Cisg
ICAgZnJpZW5kIGlkIGF0dHJpYnV0ZVZhbHVlKGlkLCBOU1N0cmluZyopOwogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY3JlYXRlKFBsYXRmb3JtVUlFbGVt
ZW50KTsKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Jik7CkBAIC0zNjAsMTAgKzM2NiwxMyBAQCBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxpZD4gbV9lbGVtZW50OwogICAg
IFJldGFpblB0cjxpZD4gbV9ub3RpZmljYXRpb25IYW5kbGVyOworICAgIHN0YXRpYyBSZWZQdHI8
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IHNfY29udHJvbGxlcjsKIAogICAgIHZvaWQgZ2V0TGlu
a2VkVUlFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsK
ICAgICB2b2lkIGdldERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiA+Jik7Ci0gICAgCisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IGVs
ZW1lbnRGb3JBdHRyaWJ1dGUoTlNTdHJpbmcqKSBjb25zdDsKKyAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gZWxlbWVudEZvckF0dHJpYnV0ZUF0SW5kZXgoTlNTdHJpbmcqLCB1bnNp
Z25lZCkgY29uc3Q7CisKICAgICB2b2lkIGdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKEpTU3Ry
aW5nUmVmLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKSBjb25zdDsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQppbmRl
eCAyN2YwZmI1ZTE4MDA5ZDU1OWQyMTQ4NmU0ODkzNGJhMmZhYWQ3N2FhLi5hZDU1NDRjNWQzMDgy
ZDhlZGZjNjYzMDg1NjY1YTQzY2I5N2ZhN2U5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0KQEAgLTkyLDkgKzkyLDEzIEBAIHN0YXRpYyBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gY3JlYXRlRW1wdHlKU1N0cmluZygpCiAgICAgcmV0dXJuIGFkb3B0KEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCkpOwogfQogCitSZWZQdHI8QWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNfY29udHJvbGxlcjsK
KwogQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChpZCBlbGVt
ZW50KQogICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCiB7CisgICAgaWYgKCFzX2NvbnRyb2xsZXIp
CisgICAgICAgIHNfY29udHJvbGxlciA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcigpOwogfQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQpA
QCAtMTEzLDExICsxMTcsMzcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VxdWFs
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIHJldHVybiBwbGF0Zm9ybVVJRWxlbWVudCgpID09IG90aGVyRWxlbWVudC0+cGxh
dGZvcm1VSUVsZW1lbnQoKTsKIH0KLSAgICAKLXN0YXRpYyBOU1N0cmluZyogZGVzY3JpcHRpb25P
ZlZhbHVlKGlkIHZhbHVlT2JqZWN0LCBpZCBmb2N1c2VkQWNjZXNzaWJpbGl0eU9iamVjdCkKKwor
TlNBcnJheSogc3VwcG9ydGVkQXR0cmlidXRlcyhpZCBlbGVtZW50KQoreworICAgIE5TQXJyYXkq
IGF0dHJpYnV0ZXM7CisKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzX2NvbnRyb2xsZXItPmV4ZWN1dGVPbkFYVGhyZWFkSWZQb3NzaWJs
ZShbJmF0dHJpYnV0ZXMsICZlbGVtZW50XSB7CisgICAgICAgIGF0dHJpYnV0ZXMgPSBbZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdOworICAgIH0pOworICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKKworICAgIHJldHVybiBhdHRyaWJ1dGVzOworfQorCitpZCBhdHRyaWJ1dGVW
YWx1ZShpZCBlbGVtZW50LCBOU1N0cmluZyogYXR0cmlidXRlKQoreworICAgIGlkIHZhbHVlOwor
CisgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c19jb250cm9sbGVyLT5leGVjdXRlT25BWFRocmVhZElmUG9zc2libGUoWyZlbGVtZW50LCAm
YXR0cmlidXRlLCAmdmFsdWVdIHsKKyAgICAgICAgdmFsdWUgPSBbZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6YXR0cmlidXRlXTsKKyAgICB9KTsKKyAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyBOU1N0cmluZyogZGVz
Y3JpcHRpb25PZlZhbHVlKGlkIHZhbHVlT2JqZWN0LCBpZCBlbGVtZW50KQogewogICAgIGlmICgh
dmFsdWVPYmplY3QpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gbmlsOwog
CiAgICAgaWYgKFt2YWx1ZU9iamVjdCBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAg
ICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxhcnJheSBvZiBzaXpl
ICVsdT4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihbKE5TQXJyYXkqKXZhbHVlT2JqZWN0
IGNvdW50XSldOwpAQCAtMTQ2LDQyICsxNzYsMzggQEAgc3RhdGljIE5TU3RyaW5nKiBkZXNjcmlw
dGlvbk9mVmFsdWUoaWQgdmFsdWVPYmplY3QsIGlkIGZvY3VzZWRBY2Nlc3NpYmlsaXR5T2JqZWMK
IAogICAgIC8vIFN0cmlwIHBvaW50ZXIgbG9jYXRpb25zCiAgICAgaWYgKFtkZXNjcmlwdGlvbiBy
YW5nZU9mU3RyaW5nOkAiMHgiXS5sZW5ndGgpIHsKLSAgICAgICAgTlNTdHJpbmcqIHJvbGUgPSBb
Zm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdOwotICAgICAgICBOU1N0cmluZyogdGl0bGUgPSBb
Zm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlXTsKLSAgICAgICAgaWYgKFt0aXRsZSBsZW5ndGhd
KQorICAgICAgICBOU1N0cmluZyogcm9sZSA9IGF0dHJpYnV0ZVZhbHVlKGVsZW1lbnQsIE5TQWNj
ZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGUpOworICAgICAgICBOU1N0cmluZyogdGl0bGUgPSBhdHRy
aWJ1dGVWYWx1ZShlbGVtZW50LCBOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZSk7CisgICAg
ICAgIGlmICh0aXRsZS5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCI8JUA6ICclQCc+Iiwgcm9sZSwgdGl0bGVdOwogICAgICAgICByZXR1cm4g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA+Iiwgcm9sZV07CiAgICAgfQotICAgIAor
CiAgICAgcmV0dXJuIFt2YWx1ZU9iamVjdCBkZXNjcmlwdGlvbl07CiB9CiAKIHN0YXRpYyBOU1N0
cmluZyAqYXR0cmlidXRlc09mRWxlbWVudChpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0KQogewotICAg
IE5TQXJyYXkgKnN1cHBvcnRlZEF0dHJpYnV0ZXMgPSBbYWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdOworICAgIE5TQXJyYXkqIGF0dHJpYnV0ZXMgPSBzdXBw
b3J0ZWRBdHRyaWJ1dGVzKGFjY2Vzc2liaWxpdHlPYmplY3QpOwogCiAgICAgTlNNdXRhYmxlU3Ry
aW5nKiBhdHRyaWJ1dGVzU3RyaW5nID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwotICAgIGZv
ciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IFtzdXBwb3J0ZWRBdHRyaWJ1dGVzIGNvdW50XTsgKytp
KSB7Ci0gICAgICAgIE5TU3RyaW5nKiBhdHRyaWJ1dGUgPSBbc3VwcG9ydGVkQXR0cmlidXRlcyBv
YmplY3RBdEluZGV4OmldOwotICAgICAgICAKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkg
PCBhdHRyaWJ1dGVzLmNvdW50OyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcqIGF0dHJpYnV0ZSA9
IFthdHRyaWJ1dGVzIG9iamVjdEF0SW5kZXg6aV07CisKICAgICAgICAgLy8gUmlnaHQgbm93LCBw
b3NpdGlvbiBwcm92aWRlcyB1c2VsZXNzIGFuZCBzY3JlZW4tc3BlY2lmaWMgaW5mb3JtYXRpb24s
IHNvIHdlIGRvIG5vdAogICAgICAgICAvLyB3YW50IHRvIGluY2x1ZGUgaXQgZm9yIHRoZSBzYWtl
IG9mIHVuaXZlcnNhbGx5IHBhc3NpbmcgdGVzdHMuCiAgICAgICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpAIkFYUG9zaXRpb24iXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAKKwogICAgICAgICAvLyBTa2lwIHNjcmVlbi1zcGVjaWZpYyBpbmZvcm1hdGlvbi4KICAg
ICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiX0FYUHJpbWFyeVNjcmVlbkhl
aWdodCJdIHx8IFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhSZWxhdGl2ZUZyYW1lIl0p
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6IGNhbiB0aHJvdyBhbiBpZiBhbiBhdHRyaWJ1dGUgaXMgbm90IHJldHVybmVkLgot
ICAgICAgICAvLyBGb3IgRHVtcFJlbmRlclRyZWUncyBwdXJwb3NlLCB3ZSBzaG91bGQgaWdub3Jl
IHRob3NlIGV4Y2VwdGlvbnMKLSAgICAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
ICAgIGlkIHZhbHVlT2JqZWN0ID0gW2FjY2Vzc2liaWxpdHlPYmplY3QgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZV07CisgICAgICAgIGlkIHZhbHVlT2JqZWN0ID0gYXR0cmli
dXRlVmFsdWUoYWNjZXNzaWJpbGl0eU9iamVjdCwgYXR0cmlidXRlKTsKICAgICAgICAgTlNTdHJp
bmcqIHZhbHVlID0gZGVzY3JpcHRpb25PZlZhbHVlKHZhbHVlT2JqZWN0LCBhY2Nlc3NpYmlsaXR5
T2JqZWN0KTsKICAgICAgICAgW2F0dHJpYnV0ZXNTdHJpbmcgYXBwZW5kRm9ybWF0OkAiJUA6ICVA
XG4iLCBhdHRyaWJ1dGUsIHZhbHVlXTsKLSAgICAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIH0KLSAgICAKKwogICAgIHJldHVybiBhdHRyaWJ1dGVzU3RyaW5nOwogfQogCkBAIC0zMTcs
NDUgKzM0MywzNCBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICptaXNzcGVsbGluZ1NlYXJjaFBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVGb3JDcml0ZXJpYShBY2Nlc3NpYgogCiB2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Pj4mIGVsZW1lbnRWZWN0b3IpCiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgTlNBcnJheSogbGlua2VkRWxlbWVudHMgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmli
dXRlXTsKLSAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4+KGxpbmtlZEVsZW1lbnRzKTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
CisgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+PihhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0eUxp
bmtlZFVJRWxlbWVudHNBdHRyaWJ1dGUpKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpnZXREb2N1bWVudExpbmtzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4+JiBlbGVtZW50VmVjdG9yKQogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IE5TQXJyYXkqIGxpbmtFbGVtZW50cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhMaW5rVUlFbGVtZW50cyJdOwotICAgIGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4obGlua0VsZW1lbnRzKTsKLSAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0
KCksIEAiQVhMaW5rVUlFbGVtZW50cyIpKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpnZXRVSUVsZW1lbnRzV2l0aEF0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFZl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBlbGVtZW50cykgY29uc3QKIHsK
LSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOltOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdS
ZWY6YXR0cmlidXRlXV07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQu
Z2V0KCksIFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXSk7CiAgICAg
aWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgIGVsZW1l
bnRzID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHZhbHVlKTsK
LSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Z2V0Q2hpbGRyZW4oVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+
JiBlbGVtZW50VmVjdG9yKQogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5T
QXJyYXkqIGNoaWxkcmVuID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdOwotICAgIGVsZW1lbnRWZWN0b3IgPSBt
YWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY2hpbGRyZW4pOwotICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5n
ZXQoKSwgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUpKTsKIH0KIAogdm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZShWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IsIHVuc2lnbmVkIGxvY2F0aW9u
LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
YXV0byBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciA9IEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24o
KS5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOwotICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LT5leGVjdXRlT25BWFRocmVhZElmUG9zc2libGUoWyZlbGVtZW50VmVjdG9yLCBsb2NhdGlvbiwg
bGVuZ3RoLCB0aGlzXSB7Ci0gICAgICAgIE5TQXJyYXkqIGNoaWxkcmVuID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5B
dHRyaWJ1dGUgaW5kZXg6bG9jYXRpb24gbWF4Q291bnQ6bGVuZ3RoXTsKLSAgICAgICAgZWxlbWVu
dFZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjaGls
ZHJlbik7CisgICAgTlNBcnJheSogY2hpbGRyZW47CisgICAgc19jb250cm9sbGVyLT5leGVjdXRl
T25BWFRocmVhZElmUG9zc2libGUoWyZjaGlsZHJlbiwgbG9jYXRpb24sIGxlbmd0aCwgdGhpc10g
eworICAgICAgICBjaGlsZHJlbiA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmli
dXRlVmFsdWVzOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlIGluZGV4OmxvY2F0aW9u
IG1heENvdW50Omxlbmd0aF07CiAgICAgfSk7CisgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjaGlsZHJlbik7CiAgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0zNjYsNyArMzgxLDcgQEAgSlNWYWx1ZVJlZiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzKCkgY29uc3QKICAgICAKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+PiBlbGVtZW50czsKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVd
OworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBOU0FjY2Vz
c2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKICAgICAgICAgZWxlbWVudHMgPSBtYWtlVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4odmFsdWUpOwogICAgIHJldHVybiBj
b252ZXJ0VmVjdG9yVG9PYmplY3RBcnJheTxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+
KGNvbnRleHQsIGVsZW1lbnRzKTsKQEAgLTM4MCw3ICszOTUsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMoKSBjb25zdAogCiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCiAgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pj4gZWxlbWVudHM7Ci0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRl
XTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nl
c3NpYmlsaXR5Q29sdW1uSGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgIGVsZW1lbnRzID0gbWFr
ZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHZhbHVlKTsKICAgICByZXR1
cm4gY29udmVydFZlY3RvclRvT2JqZWN0QXJyYXk8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+Pihjb250ZXh0LCBlbGVtZW50cyk7CkBAIC0zOTcsMTYgKzQxMiwyNSBAQCBpbnQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW5Db3VudCgpCiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludChpbnQgeCwg
aW50IHkpCiB7Ci0gICAgaWQgZWxlbWVudCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUhpdFRl
c3Q6TlNNYWtlUG9pbnQoeCwgeSldOworICAgIGlkIGVsZW1lbnQ7CisgICAgc19jb250cm9sbGVy
LT5leGVjdXRlT25BWFRocmVhZElmUG9zc2libGUoWyZ4LCAmeSwgJmVsZW1lbnQsIHRoaXNdIHsK
KyAgICAgICAgZWxlbWVudCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUhpdFRlc3Q6TlNNYWtl
UG9pbnQoeCwgeSldOworICAgIH0pOworCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
cmVhdGUoZWxlbWVudCk7CiB9CiAKIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlu
ZGV4T2ZDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQogewotICAgIHJldHVy
biBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6ZWxlbWVudC0+cGxhdGZvcm1V
SUVsZW1lbnQoKV07CisgICAgdW5zaWduZWQgaW5kZXg7CisgICAgaWQgcGxhdGZvcm1FbGVtZW50
ID0gZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKTsKKyAgICBzX2NvbnRyb2xsZXItPmV4ZWN1
dGVPbkFYVGhyZWFkSWZQb3NzaWJsZShbJnBsYXRmb3JtRWxlbWVudCwgJmluZGV4LCB0aGlzXSB7
CisgICAgICAgIGluZGV4ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SW5kZXhPZkNoaWxkOnBs
YXRmb3JtRWxlbWVudF07CisgICAgfSk7CisgICAgcmV0dXJuIGluZGV4OwogfQogCiBSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdElu
ZGV4KHVuc2lnbmVkIGluZGV4KQpAQCAtNDE5LDE1MyArNDQzLDk0IEBAIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgodW5z
aWduZWQgaW5kCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50Rm9yQXR0cmlidXRlKE5T
U3RyaW5nKiBhdHRyaWJ1dGUpIGNvbnN0Cit7CisgICAgaWQgZWxlbWVudCA9IGF0dHJpYnV0ZVZh
bHVlKG1fZWxlbWVudC5nZXQoKSwgYXR0cmlidXRlKTsKKyAgICByZXR1cm4gZWxlbWVudCA/IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KSA6IFJlZlB0cjxBY2Nlc3NpYmls
aXR5VUlFbGVtZW50PigpOworfQorCitSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEZvckF0dHJpYnV0ZUF0SW5kZXgoTlNTdHJpbmcq
IGF0dHJpYnV0ZSwgdW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgTlNBcnJheSogZWxlbWVu
dHMgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIGF0dHJpYnV0ZSk7CisgICAgcmV0
dXJuIGluZGV4IDwgZWxlbWVudHMuY291bnQgPyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVh
dGUoW2VsZW1lbnRzIG9iamVjdEF0SW5kZXg6aW5kZXhdKSA6IFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PigpOworfQorCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkK
IHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5KiBvYmplY3RzID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGlu
a2VkVUlFbGVtZW50c0F0dHJpYnV0ZV07Ci0gICAgaWYgKGluZGV4IDwgW29iamVjdHMgY291bnRd
KQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFtvYmplY3Rz
IG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGVsZW1lbnRGb3JBdHRyaWJ1dGVBdElu
ZGV4KE5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGUsIGluZGV4KTsKIH0K
IAogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSogb2JqZWN0cyA9IFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGVdOwotICAg
IGlmIChpbmRleCA8IFtvYmplY3RzIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNyZWF0ZShbb2JqZWN0cyBvYmplY3RBdEluZGV4OmluZGV4XSk7Ci0gICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAotICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBlbGVtZW50Rm9yQXR0cmlidXRlQXRJbmRleChOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmli
dXRlLCBpbmRleCk7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgp
CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSogb2JqZWN0cyA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxp
bmtlZFVJRWxlbWVudHNBdHRyaWJ1dGVdOwotICAgIGlmIChpbmRleCA8IFtvYmplY3RzIGNvdW50
XSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbb2JqZWN0
cyBvYmplY3RBdEluZGV4OmluZGV4XSk7Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IAotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBlbGVtZW50Rm9yQXR0cmlidXRlQXRJ
bmRleChOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlLCBpbmRleCk7CiB9
CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhQ29udHJvbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5KiBhcmlhQ29udHJvbHMgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQVJJQUNvbnRyb2xzIl07Ci0gICAg
aWYgKGluZGV4IDwgW2FyaWFDb250cm9scyBjb3VudF0pCi0gICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW2FyaWFDb250cm9scyBvYmplY3RBdEluZGV4OmluZGV4
XSk7Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBlbGVtZW50Rm9yQXR0cmlidXRlQXRJbmRleChAIkFYQVJJQUNvbnRyb2xzIiwgaW5k
ZXgpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXJpYURldGFpbHNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKLSAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5KiBkZXRhaWxzID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWERldGFpbHNFbGVtZW50cyJdOwot
ICAgIGlmIChpbmRleCA8IFtkZXRhaWxzIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbZGV0YWlscyBvYmplY3RBdEluZGV4OmluZGV4XSk7Ci0g
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVy
biBlbGVtZW50Rm9yQXR0cmlidXRlQXRJbmRleChAIkFYRGV0YWlsc0VsZW1lbnRzIiwgaW5kZXgp
OwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXJpYUVycm9yTWVzc2FnZUVsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewot
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkqIGVycm9yTWVzc2FnZXMg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRXJyb3JNZXNzYWdl
RWxlbWVudHMiXTsKLSAgICBpZiAoaW5kZXggPCBbZXJyb3JNZXNzYWdlcyBjb3VudF0pCi0gICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW2Vycm9yTWVzc2FnZXMg
b2JqZWN0QXRJbmRleDppbmRleF0pOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZWxlbWVudEZvckF0dHJpYnV0ZUF0SW5kZXgoQCJB
WEVycm9yTWVzc2FnZUVsZW1lbnRzIiwgaW5kZXgpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1
bnNpZ25lZCBpbmRleCkKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0Fy
cmF5KiByb3dzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV07Ci0gICAgaWYgKGluZGV4IDwgW3Jvd3Mg
Y291bnRdKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFty
b3dzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0K
LSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZWxlbWVudEZvckF0dHJpYnV0ZUF0SW5k
ZXgoTlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZSwgaW5kZXgpOwogfQotICAg
IAorCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKLSAgICBOU0FycmF5KiByb3dzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV07Ci0gICAgaWYgKGluZGV4IDwg
W3Jvd3MgY291bnRdKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3Jl
YXRlKFtyb3dzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCi0gICAgCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGVsZW1lbnRGb3JBdHRy
aWJ1dGVBdEluZGV4KE5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGUsIGluZGV4KTsKIH0KIAog
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
bGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogewotICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkqIGFycmF5ID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJp
YnV0ZV07Ci0gICAgaWYgKGluZGV4IDwgW2FycmF5IGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbYXJyYXkgb2JqZWN0QXRJbmRleDppbmRleF0p
OwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKLSAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gZWxlbWVudEZvckF0dHJpYnV0ZUF0SW5kZXgoTlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSwgaW5kZXgpOwogfQogCiB1bnNpZ25lZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291bnQoKSBjb25zdAogeworICAgIHVuc2ln
bmVkIGNvdW50ID0gMDsKKwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVy
biBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50Ok5TQWNjZXNzaWJp
bGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOworICAgIHNfY29udHJvbGxlci0+ZXhlY3V0
ZU9uQVhUaHJlYWRJZlBvc3NpYmxlKFsmY291bnQsIHRoaXNdIHsKKyAgICAgICAgY291bnQgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50Ok5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOworICAgIH0pOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBjb3VudDsKIH0KIAogUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVk
Um93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBOU0FycmF5KiByb3dzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXTsKLSAgICBpZiAoaW5k
ZXggPCBbcm93cyBjb3VudF0pCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjcmVhdGUoW3Jvd3Mgb2JqZWN0QXRJbmRleDppbmRleF0pOwotICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKLSAgICAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZWxlbWVudEZv
ckF0dHJpYnV0ZUF0SW5kZXgoTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlLCBp
bmRleCk7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCi0gICAgaWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsK
LSAgICBpZiAoYWNjZXNzaWJpbGl0eU9iamVjdCkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNyZWF0ZShhY2Nlc3NpYmlsaXR5T2JqZWN0KTsKLSAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGVsZW1l
bnRGb3JBdHRyaWJ1dGUoTlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGUpOwog
fQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cGFyZW50RWxlbWVudCgpCiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
aWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZV07Ci0gICAgaWYgKGFjY2Vzc2li
aWxpdHlPYmplY3QpCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVh
dGUoYWNjZXNzaWJpbGl0eU9iamVjdCk7Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IAotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBlbGVtZW50Rm9yQXR0cmlidXRlKE5T
QWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSk7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJvdygpCiB7Ci0g
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURp
c2Nsb3NlZEJ5Um93QXR0cmlidXRlXTsKLSAgICBpZiAoYWNjZXNzaWJpbGl0eU9iamVjdCkKLSAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhY2Nlc3NpYmlsaXR5
T2JqZWN0KTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCi0gICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIGVsZW1lbnRGb3JBdHRyaWJ1dGUoTlNBY2Nlc3NpYmlsaXR5RGlz
Y2xvc2VkQnlSb3dBdHRyaWJ1dGUpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mTGlua2VkVUlFbGVtZW50cygpCkBAIC02
MTcsMTggKzU4Miw5IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlCiAKIGRvdWJsZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUpCiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWU7Ci0KLSAg
ICBhdXRvIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7Ci0gICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXItPmV4ZWN1dGVPbkFYVGhyZWFkSWZQb3NzaWJsZShbJmF0dHJpYnV0ZSwgJnZhbHVlLCB0aGlz
XSB7Ci0gICAgICAgIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKLSAgICB9KTsK
LQorICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBbTlNTdHJp
bmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOwogICAgIGlmIChbdmFsdWUgaXNL
aW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2YWx1ZSBkb3Vi
bGVWYWx1ZV07Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotCiAgICAgcmV0dXJuIDA7CiB9
CiAKQEAgLTY4OSw5ICs2NDUsOSBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0
cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiB7
CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFtbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10gY29udGFpbnNPYmplY3Q6W05TU3RyaW5nIHN0cmlu
Z1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdXTsKKyAgICByZXR1cm4gW3N1cHBvcnRlZEF0dHJp
YnV0ZXMobV9lbGVtZW50LmdldCgpKSBjb250YWluc09iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0
aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAg
ICAKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtOTg4LDEyICs5NDQsOSBAQCBib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNlZCgpIGNvbnN0CiAKIGJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCgpIGNvbnN0CiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZEF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUg
PSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVk
QXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNz
XV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMjM1LDggKzExODgs
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Vs
ZWN0VGV4dFdpdGhDcml0ZXJpYShKU0NvbnRleAogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwogICAgIE5TRGljdGlvbmFyeSAqcGFyYW1ldGVyaXplZEF0dHJpYnV0ZSA9IHNlbGVjdFRleHRQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlRm9yQ3JpdGVyaWEoY29udGV4dCwgYW1iaWd1aXR5UmVzb2x1
dGlvbiwgc2VhcmNoU3RyaW5ncywgcmVwbGFjZW1lbnRTdHJpbmcsIGFjdGl2aXR5KTsKICAgICBp
ZCByZXN1bHQ7Ci0gICAgYXV0byBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciA9IEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpOwotICAgIGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLT5leGVjdXRlT25BWFRocmVhZElmUG9zc2libGUoWyZwYXJhbWV0ZXJp
emVkQXR0cmlidXRlLCAmcmVzdWx0LCB0aGlzXSB7CisgICAgc19jb250cm9sbGVyLT5leGVjdXRl
T25BWFRocmVhZElmUG9zc2libGUoWyZwYXJhbWV0ZXJpemVkQXR0cmlidXRlLCAmcmVzdWx0LCB0
aGlzXSB7CiAgICAgICAgIHJlc3VsdCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOkAiQVhTZWxlY3RUZXh0V2l0aENyaXRlcmlhIiBmb3JQYXJhbWV0ZXI6cGFyYW1ldGVy
aXplZEF0dHJpYnV0ZV07CiAgICAgfSk7CiAgICAgaWYgKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgY2xhc3NdXSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396269</attachid>
            <date>2020-04-13 06:55:29 -0700</date>
            <delta_ts>2020-04-13 10:56:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210392-20200413095528.patch</filename>
            <type>text/plain</type>
            <size>24467</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5ODY1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTg0ZjUwN2YwYmUwMDkzNGNhMDkwNGNiMWY0NjFhNjgz
YTJlOWRhMi4uZGIxN2QyNTcwNzgxNGU1NWU3YTllMjFjNzMwOTU2MmRhNjI2YjRlZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDIwLTA0LTExICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCBtZXRob2RzIHJ1biBv
biBBWCBzZWNvbmRhcnkgdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjEwMzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gdGVzdCBhY2Nlc3NpYmlsaXR5IGlzb2xhdGVkIHRy
ZWUgbW9kZSwgaXQgaXMgbmVjZXNzYXJ5IHRvCisgICAgICAgIHJ1biBXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQgbWV0aG9kcyBvbiB0aGUgQVggc2Vjb25kYXJ5IHRocmVhZC4gVGhpcworICAg
ICAgICBjaGFuZ2UgdXNlcyB0aGUgZnVuY3Rpb25hbGl0eSBidWlsdC1pbiBBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlciB0bworICAgICAgICBkaXNwYXRjaCB0aGUgY2FsbHMgdG8gV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgdG8gdGhlIEFYIHRocmVhZC4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpzdXBwb3J0ZWRBdHRyaWJ1dGVzKToK
KyAgICAgICAgKFdUUjo6YXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpkZXNjcmlwdGlv
bk9mVmFsdWUpOgorICAgICAgICAoV1RSOjphdHRyaWJ1dGVzT2ZFbGVtZW50KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERvY3VtZW50TGlua3MpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRVSUVsZW1lbnRzV2l0aEF0dHJp
YnV0ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENo
aWxkcmVuKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRy
ZW5XaXRoUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dI
ZWFkZXJzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29s
dW1uSGVhZGVycyBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmVsZW1lbnRBdFBvaW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aW5kZXhPZkNoaWxkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxl
bWVudEZvckF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmVsZW1lbnRGb3JBdHRyaWJ1dGVBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlua2VkVUlFbGVtZW50QXRJbmRleCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVudEF0
SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhQ29udHJv
bHNFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFyaWFEZXRhaWxzRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphcmlhRXJyb3JNZXNzYWdlRWxlbWVudEF0SW5kZXgpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93QXRJbmRleCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4IGNvbnN0KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50
IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRS
b3dBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVV
SUVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJlbnRF
bGVtZW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2Vk
QnlSb3cpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRy
aWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0
cmlidXRlU3VwcG9ydGVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNTZWxlY3RlZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNlbGVjdFRleHRXaXRoQ3JpdGVyaWEpOgorCiAyMDIwLTA0LTEwICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRmxhdHBhayBTREtdIEZsYXRwYWsg
YnVpbGQgYnJva2VuIHdoZW4gdXNpbmcgJ2dpdCBjb25maWcgY29yZS53ZWJraXRicmFuY2hidWls
ZD10cnVlJwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAppbmRleCAxNDFkYjIwYWViOTJhODE4
NDdlOTBkODhhMDU5NDQwN2U2OGM2ZWMyLi42MWQzMDc1N2Y5NGQ0OGU1ZWU2ZjcyYmFmYjBlNmRm
OTBhODFkNmUyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAtMzUsNiArMzUsOCBA
QAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQorT0JKQ19D
TEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU1N0cmluZzsKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiB1c2luZyBQbGF0Zm9ybVVJRWxlbWVudCA9IGlkOwogI2VsaWYgSEFWRShBQ0NFU1NJ
QklMSVRZKSAmJiBVU0UoQVRLKQpAQCAtNDgsNyArNTAsMTUgQEAgdHlwZWRlZiB2b2lkKiBQbGF0
Zm9ybVVJRWxlbWVudDsKIAogbmFtZXNwYWNlIFdUUiB7CiAKK2NsYXNzIEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOworCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IDogcHVibGljIEpTV3Jh
cHBhYmxlIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIHRo
YXQgZGlzcGF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
bWV0aG9kIHRvIHRoZSBBWCBzZWNvbmRhcnkgdGhyZWFkIHdoZW4gYXBwcm9wcmlhdGUuCisgICAg
ZnJpZW5kIE5TQXJyYXkqIHN1cHBvcnRlZEF0dHJpYnV0ZXMoaWQpOworICAgIGZyaWVuZCBpZCBh
dHRyaWJ1dGVWYWx1ZShpZCwgTlNTdHJpbmcqKTsKKyNlbmRpZgorCiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBjcmVhdGUoUGxhdGZvcm1VSUVsZW1lbnQp
OwogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gY3JlYXRlKGNvbnN0IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsKQEAgLTM2MCwxMCArMzcwLDEzIEBAIHByaXZhdGU6CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPGlkPiBtX2VsZW1lbnQ7CiAgICAgUmV0
YWluUHRyPGlkPiBtX25vdGlmaWNhdGlvbkhhbmRsZXI7CisgICAgc3RhdGljIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcj4gc19jb250cm9sbGVyOwogCiAgICAgdm9pZCBnZXRMaW5rZWRV
SUVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOwogICAg
IHZvaWQgZ2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+ID4mKTsKLSAgICAKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZWxlbWVu
dEZvckF0dHJpYnV0ZShOU1N0cmluZyopIGNvbnN0OworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50PiBlbGVtZW50Rm9yQXR0cmlidXRlQXRJbmRleChOU1N0cmluZyosIHVuc2lnbmVk
KSBjb25zdDsKKwogICAgIHZvaWQgZ2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUoSlNTdHJpbmdS
ZWYsIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpIGNvbnN0OwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCmluZGV4IDI3
ZjBmYjVlMTgwMDlkNTU5ZDIxNDg2ZTQ4OTM0YmEyZmFhZDc3YWEuLmFkNTU0NGM1ZDMwODJkOGVk
ZmM2NjMwODU2NjVhNDNjYjk3ZmE3ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbQpAQCAtOTIsOSArOTIsMTMgQEAgc3RhdGljIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBjcmVhdGVFbXB0eUpTU3RyaW5nKCkKICAgICByZXR1cm4gYWRvcHQoSlNTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKSk7CiB9CiAKK1JlZlB0cjxBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c19jb250cm9sbGVyOworCiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGlkIGVsZW1lbnQp
CiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKIHsKKyAgICBpZiAoIXNfY29udHJvbGxlcikKKyAg
ICAgICAgc19jb250cm9sbGVyID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKCk7CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQoY29uc3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYgb3RoZXIpCkBAIC0x
MTMsMTEgKzExNywzNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCogb3RoZXJFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIHBsYXRmb3JtVUlFbGVtZW50KCkgPT0gb3RoZXJFbGVtZW50LT5wbGF0Zm9y
bVVJRWxlbWVudCgpOwogfQotICAgIAotc3RhdGljIE5TU3RyaW5nKiBkZXNjcmlwdGlvbk9mVmFs
dWUoaWQgdmFsdWVPYmplY3QsIGlkIGZvY3VzZWRBY2Nlc3NpYmlsaXR5T2JqZWN0KQorCitOU0Fy
cmF5KiBzdXBwb3J0ZWRBdHRyaWJ1dGVzKGlkIGVsZW1lbnQpCit7CisgICAgTlNBcnJheSogYXR0
cmlidXRlczsKKworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNfY29udHJvbGxlci0+ZXhlY3V0ZU9uQVhUaHJlYWRJZlBvc3NpYmxlKFsm
YXR0cmlidXRlcywgJmVsZW1lbnRdIHsKKyAgICAgICAgYXR0cmlidXRlcyA9IFtlbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc107CisgICAgfSk7CisgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUworCisgICAgcmV0dXJuIGF0dHJpYnV0ZXM7Cit9CisKK2lkIGF0dHJpYnV0ZVZhbHVl
KGlkIGVsZW1lbnQsIE5TU3RyaW5nKiBhdHRyaWJ1dGUpCit7CisgICAgaWQgdmFsdWU7CisKKyAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
X2NvbnRyb2xsZXItPmV4ZWN1dGVPbkFYVGhyZWFkSWZQb3NzaWJsZShbJmVsZW1lbnQsICZhdHRy
aWJ1dGUsICZ2YWx1ZV0geworICAgICAgICB2YWx1ZSA9IFtlbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGVdOworICAgIH0pOworICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKKworICAgIHJldHVybiB2YWx1ZTsKK30KKworc3RhdGljIE5TU3RyaW5nKiBkZXNjcmlw
dGlvbk9mVmFsdWUoaWQgdmFsdWVPYmplY3QsIGlkIGVsZW1lbnQpCiB7CiAgICAgaWYgKCF2YWx1
ZU9iamVjdCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBuaWw7CiAKICAg
ICBpZiAoW3ZhbHVlT2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKICAgICAg
ICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGFycmF5IG9mIHNpemUgJWx1
PiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KFsoTlNBcnJheSopdmFsdWVPYmplY3QgY291
bnRdKV07CkBAIC0xNDYsNDIgKzE3NiwzOCBAQCBzdGF0aWMgTlNTdHJpbmcqIGRlc2NyaXB0aW9u
T2ZWYWx1ZShpZCB2YWx1ZU9iamVjdCwgaWQgZm9jdXNlZEFjY2Vzc2liaWxpdHlPYmplYwogCiAg
ICAgLy8gU3RyaXAgcG9pbnRlciBsb2NhdGlvbnMKICAgICBpZiAoW2Rlc2NyaXB0aW9uIHJhbmdl
T2ZTdHJpbmc6QCIweCJdLmxlbmd0aCkgewotICAgICAgICBOU1N0cmluZyogcm9sZSA9IFtmb2N1
c2VkQWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV07Ci0gICAgICAgIE5TU3RyaW5nKiB0aXRsZSA9IFtmb2N1
c2VkQWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGVdOwotICAgICAgICBpZiAoW3RpdGxlIGxlbmd0aF0pCisg
ICAgICAgIE5TU3RyaW5nKiByb2xlID0gYXR0cmlidXRlVmFsdWUoZWxlbWVudCwgTlNBY2Nlc3Np
YmlsaXR5Um9sZUF0dHJpYnV0ZSk7CisgICAgICAgIE5TU3RyaW5nKiB0aXRsZSA9IGF0dHJpYnV0
ZVZhbHVlKGVsZW1lbnQsIE5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlKTsKKyAgICAgICAg
aWYgKHRpdGxlLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIjwlQDogJyVAJz4iLCByb2xlLCB0aXRsZV07CiAgICAgICAgIHJldHVybiBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQD4iLCByb2xlXTsKICAgICB9Ci0gICAgCisKICAg
ICByZXR1cm4gW3ZhbHVlT2JqZWN0IGRlc2NyaXB0aW9uXTsKIH0KIAogc3RhdGljIE5TU3RyaW5n
ICphdHRyaWJ1dGVzT2ZFbGVtZW50KGlkIGFjY2Vzc2liaWxpdHlPYmplY3QpCiB7Ci0gICAgTlNB
cnJheSAqc3VwcG9ydGVkQXR0cmlidXRlcyA9IFthY2Nlc3NpYmlsaXR5T2JqZWN0IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVOYW1lc107CisgICAgTlNBcnJheSogYXR0cmlidXRlcyA9IHN1cHBvcnRl
ZEF0dHJpYnV0ZXMoYWNjZXNzaWJpbGl0eU9iamVjdCk7CiAKICAgICBOU011dGFibGVTdHJpbmcq
IGF0dHJpYnV0ZXNTdHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107Ci0gICAgZm9yIChO
U1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3N1cHBvcnRlZEF0dHJpYnV0ZXMgY291bnRdOyArK2kpIHsK
LSAgICAgICAgTlNTdHJpbmcqIGF0dHJpYnV0ZSA9IFtzdXBwb3J0ZWRBdHRyaWJ1dGVzIG9iamVj
dEF0SW5kZXg6aV07Ci0gICAgICAgIAorICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGF0
dHJpYnV0ZXMuY291bnQ7ICsraSkgeworICAgICAgICBOU1N0cmluZyogYXR0cmlidXRlID0gW2F0
dHJpYnV0ZXMgb2JqZWN0QXRJbmRleDppXTsKKwogICAgICAgICAvLyBSaWdodCBub3csIHBvc2l0
aW9uIHByb3ZpZGVzIHVzZWxlc3MgYW5kIHNjcmVlbi1zcGVjaWZpYyBpbmZvcm1hdGlvbiwgc28g
d2UgZG8gbm90CiAgICAgICAgIC8vIHdhbnQgdG8gaW5jbHVkZSBpdCBmb3IgdGhlIHNha2Ugb2Yg
dW5pdmVyc2FsbHkgcGFzc2luZyB0ZXN0cy4KICAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOkAiQVhQb3NpdGlvbiJdKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IAorCiAgICAgICAgIC8vIFNraXAgc2NyZWVuLXNwZWNpZmljIGluZm9ybWF0aW9uLgogICAgICAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJfQVhQcmltYXJ5U2NyZWVuSGVpZ2h0
Il0gfHwgW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFJlbGF0aXZlRnJhbWUiXSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIC8vIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTogY2FuIHRocm93IGFuIGlmIGFuIGF0dHJpYnV0ZSBpcyBub3QgcmV0dXJuZWQuCi0gICAg
ICAgIC8vIEZvciBEdW1wUmVuZGVyVHJlZSdzIHB1cnBvc2UsIHdlIHNob3VsZCBpZ25vcmUgdGhv
c2UgZXhjZXB0aW9ucwotICAgICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAgICAg
aWQgdmFsdWVPYmplY3QgPSBbYWNjZXNzaWJpbGl0eU9iamVjdCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6YXR0cmlidXRlXTsKKyAgICAgICAgaWQgdmFsdWVPYmplY3QgPSBhdHRyaWJ1dGVW
YWx1ZShhY2Nlc3NpYmlsaXR5T2JqZWN0LCBhdHRyaWJ1dGUpOwogICAgICAgICBOU1N0cmluZyog
dmFsdWUgPSBkZXNjcmlwdGlvbk9mVmFsdWUodmFsdWVPYmplY3QsIGFjY2Vzc2liaWxpdHlPYmpl
Y3QpOwogICAgICAgICBbYXR0cmlidXRlc1N0cmluZyBhcHBlbmRGb3JtYXQ6QCIlQDogJUBcbiIs
IGF0dHJpYnV0ZSwgdmFsdWVdOwotICAgICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAg
fQotICAgIAorCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXNTdHJpbmc7CiB9CiAKQEAgLTMxNyw0NSAr
MzQzLDM0IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm1pc3NwZWxsaW5nU2VhcmNoUGFyYW1ldGVy
aXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKEFjY2Vzc2liCiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0TGlua2VkVUlFbGVtZW50cyhWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+PiYgZWxlbWVudFZlY3RvcikKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBOU0FycmF5KiBsaW5rZWRFbGVtZW50cyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGVd
OwotICAgIGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Pj4obGlua2VkRWxlbWVudHMpOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAg
ICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4+KGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3NpYmlsaXR5TGlua2Vk
VUlFbGVtZW50c0F0dHJpYnV0ZSkpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmdldERvY3VtZW50TGlua3MoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4m
IGVsZW1lbnRWZWN0b3IpCiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNB
cnJheSogbGlua0VsZW1lbnRzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWExpbmtVSUVsZW1lbnRzIl07Ci0gICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihsaW5rRWxlbWVudHMpOwotICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKKyAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwg
QCJBWExpbmtVSUVsZW1lbnRzIikpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSwgVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4mIGVsZW1lbnRzKSBjb25zdAogewotICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6W05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjph
dHRyaWJ1dGVdXTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQo
KSwgW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKICAgICBpZiAo
W3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKICAgICAgICAgZWxlbWVudHMg
PSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4odmFsdWUpOwotICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpnZXRDaGlsZHJlbihWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVs
ZW1lbnRWZWN0b3IpCiB7Ci0gICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJh
eSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07Ci0gICAgZWxlbWVudFZlY3RvciA9IG1ha2VW
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjaGlsZHJlbik7Ci0gICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgp
LCBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSkpOwogfQogCiB2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3RvciwgdW5zaWduZWQgbG9jYXRpb24sIHVu
c2lnbmVkIGxlbmd0aCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBhdXRv
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKCk7Ci0gICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXItPmV4
ZWN1dGVPbkFYVGhyZWFkSWZQb3NzaWJsZShbJmVsZW1lbnRWZWN0b3IsIGxvY2F0aW9uLCBsZW5n
dGgsIHRoaXNdIHsKLSAgICAgICAgTlNBcnJheSogY2hpbGRyZW4gPSBbbV9lbGVtZW50IGFjY2Vz
c2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJp
YnV0ZSBpbmRleDpsb2NhdGlvbiBtYXhDb3VudDpsZW5ndGhdOwotICAgICAgICBlbGVtZW50VmVj
dG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNoaWxkcmVu
KTsKKyAgICBOU0FycmF5KiBjaGlsZHJlbjsKKyAgICBzX2NvbnRyb2xsZXItPmV4ZWN1dGVPbkFY
VGhyZWFkSWZQb3NzaWJsZShbJmNoaWxkcmVuLCBsb2NhdGlvbiwgbGVuZ3RoLCB0aGlzXSB7Cisg
ICAgICAgIGNoaWxkcmVuID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVW
YWx1ZXM6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUgaW5kZXg6bG9jYXRpb24gbWF4
Q291bnQ6bGVuZ3RoXTsKICAgICB9KTsKKyAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNoaWxkcmVuKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCiB9CiAKQEAgLTM2Niw3ICszODEsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMoKSBjb25zdAogICAgIAogICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwogICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+
IGVsZW1lbnRzOwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07Cisg
ICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJp
bGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGUpOwogICAgIGlmIChbdmFsdWUgaXNLaW5k
T2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQogICAgICAgICBlbGVtZW50cyA9IG1ha2VWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pih2YWx1ZSk7CiAgICAgcmV0dXJuIGNvbnZl
cnRWZWN0b3JUb09iamVjdEFycmF5PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oY29u
dGV4dCwgZWxlbWVudHMpOwpAQCAtMzgwLDcgKzM5NSw3IEBAIEpTVmFsdWVSZWYgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycygpIGNvbnN0CiAKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKICAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiBl
bGVtZW50czsKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdOwor
ICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBOU0FjY2Vzc2li
aWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKICAgICAgICAgZWxlbWVudHMgPSBtYWtlVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4odmFsdWUpOwogICAgIHJldHVybiBj
b252ZXJ0VmVjdG9yVG9PYmplY3RBcnJheTxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+
KGNvbnRleHQsIGVsZW1lbnRzKTsKQEAgLTM5NywxNiArNDEyLDI1IEBAIGludCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KCkKIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRBdFBvaW50KGludCB4LCBpbnQg
eSkKIHsKLSAgICBpZCBlbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpO
U01ha2VQb2ludCh4LCB5KV07CisgICAgaWQgZWxlbWVudDsKKyAgICBzX2NvbnRyb2xsZXItPmV4
ZWN1dGVPbkFYVGhyZWFkSWZQb3NzaWJsZShbJngsICZ5LCAmZWxlbWVudCwgdGhpc10geworICAg
ICAgICBlbGVtZW50ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5SGl0VGVzdDpOU01ha2VQb2lu
dCh4LCB5KV07CisgICAgfSk7CisKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIAorCiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0
ZShlbGVtZW50KTsKIH0KIAogdW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhP
ZkNoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDplbGVtZW50LT5wbGF0Zm9ybVVJRWxl
bWVudCgpXTsKKyAgICB1bnNpZ25lZCBpbmRleDsKKyAgICBpZCBwbGF0Zm9ybUVsZW1lbnQgPSBl
bGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpOworICAgIHNfY29udHJvbGxlci0+ZXhlY3V0ZU9u
QVhUaHJlYWRJZlBvc3NpYmxlKFsmcGxhdGZvcm1FbGVtZW50LCAmaW5kZXgsIHRoaXNdIHsKKyAg
ICAgICAgaW5kZXggPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6cGxhdGZv
cm1FbGVtZW50XTsKKyAgICB9KTsKKyAgICByZXR1cm4gaW5kZXg7CiB9CiAKIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgo
dW5zaWduZWQgaW5kZXgpCkBAIC00MTksMTUzICs0NDMsOTQgQEAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25l
ZCBpbmQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRGb3JBdHRyaWJ1dGUoTlNTdHJp
bmcqIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICBpZCBlbGVtZW50ID0gYXR0cmlidXRlVmFsdWUo
bV9lbGVtZW50LmdldCgpLCBhdHRyaWJ1dGUpOworICAgIHJldHVybiBlbGVtZW50ID8gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQpIDogUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+KCk7Cit9CisKK1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbGVtZW50Rm9yQXR0cmlidXRlQXRJbmRleChOU1N0cmluZyogYXR0
cmlidXRlLCB1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBOU0FycmF5KiBlbGVtZW50cyA9
IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgYXR0cmlidXRlKTsKKyAgICByZXR1cm4g
aW5kZXggPCBlbGVtZW50cy5jb3VudCA/IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShb
ZWxlbWVudHMgb2JqZWN0QXRJbmRleDppbmRleF0pIDogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+KCk7Cit9CisKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsaW5rZWRVSUVsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewot
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkqIG9iamVjdHMgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlMaW5rZWRV
SUVsZW1lbnRzQXR0cmlidXRlXTsKLSAgICBpZiAoaW5kZXggPCBbb2JqZWN0cyBjb3VudF0pCi0g
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW29iamVjdHMgb2Jq
ZWN0QXRJbmRleDppbmRleF0pOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKLSAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZWxlbWVudEZvckF0dHJpYnV0ZUF0SW5kZXgo
TlNBY2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZSwgaW5kZXgpOwogfQogCiBS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJp
YU93bnNFbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBOU0FycmF5KiBvYmplY3RzID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3duc0F0dHJpYnV0ZV07Ci0gICAgaWYg
KGluZGV4IDwgW29iamVjdHMgY291bnRdKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y3JlYXRlKFtvYmplY3RzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKLSAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IGVsZW1lbnRGb3JBdHRyaWJ1dGVBdEluZGV4KE5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGUs
IGluZGV4KTsKIH0KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKIHsK
LSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5KiBvYmplY3RzID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TGlua2Vk
VUlFbGVtZW50c0F0dHJpYnV0ZV07Ci0gICAgaWYgKGluZGV4IDwgW29iamVjdHMgY291bnRdKQot
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFtvYmplY3RzIG9i
amVjdEF0SW5kZXg6aW5kZXhdKTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCi0g
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGVsZW1lbnRGb3JBdHRyaWJ1dGVBdEluZGV4
KE5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGUsIGluZGV4KTsKIH0KIAog
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFy
aWFDb250cm9sc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewotICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkqIGFyaWFDb250cm9scyA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBUklBQ29udHJvbHMiXTsKLSAgICBpZiAo
aW5kZXggPCBbYXJpYUNvbnRyb2xzIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmNyZWF0ZShbYXJpYUNvbnRyb2xzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsK
LSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIGVsZW1lbnRGb3JBdHRyaWJ1dGVBdEluZGV4KEAiQVhBUklBQ29udHJvbHMiLCBpbmRleCk7
CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphcmlhRGV0YWlsc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewotICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkqIGRldGFpbHMgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRGV0YWlsc0VsZW1lbnRzIl07Ci0gICAg
aWYgKGluZGV4IDwgW2RldGFpbHMgY291bnRdKQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y3JlYXRlKFtkZXRhaWxzIG9iamVjdEF0SW5kZXg6aW5kZXhdKTsKLSAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGVs
ZW1lbnRGb3JBdHRyaWJ1dGVBdEluZGV4KEAiQVhEZXRhaWxzRWxlbWVudHMiLCBpbmRleCk7CiB9
CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhRXJyb3JNZXNzYWdlRWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiB7Ci0gICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSogZXJyb3JNZXNzYWdlcyA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhFcnJvck1lc3NhZ2VFbGVt
ZW50cyJdOwotICAgIGlmIChpbmRleCA8IFtlcnJvck1lc3NhZ2VzIGNvdW50XSkKLSAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbZXJyb3JNZXNzYWdlcyBvYmpl
Y3RBdEluZGV4OmluZGV4XSk7Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBlbGVtZW50Rm9yQXR0cmlidXRlQXRJbmRleChAIkFYRXJy
b3JNZXNzYWdlRWxlbWVudHMiLCBpbmRleCk7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRSb3dBdEluZGV4KHVuc2ln
bmVkIGluZGV4KQogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkq
IHJvd3MgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlEaXNjbG9zZWRSb3dzQXR0cmlidXRlXTsKLSAgICBpZiAoaW5kZXggPCBbcm93cyBjb3Vu
dF0pCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW3Jvd3Mg
b2JqZWN0QXRJbmRleDppbmRleF0pOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLQotICAg
IHJldHVybiBudWxscHRyOworICAgIHJldHVybiBlbGVtZW50Rm9yQXR0cmlidXRlQXRJbmRleChO
U0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRSb3dzQXR0cmlidXRlLCBpbmRleCk7CiB9Ci0gICAgCisK
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
b3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIE5TQXJyYXkqIHJvd3MgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKLSAgICBpZiAoaW5kZXggPCBbcm93
cyBjb3VudF0pCi0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUo
W3Jvd3Mgb2JqZWN0QXRJbmRleDppbmRleF0pOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZWxlbWVudEZvckF0dHJpYnV0
ZUF0SW5kZXgoTlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZSwgaW5kZXgpOwogfQogCiBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0
ZWRDaGlsZEF0SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgTlNBcnJheSogYXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRl
XTsKLSAgICBpZiAoaW5kZXggPCBbYXJyYXkgY291bnRdKQotICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFthcnJheSBvYmplY3RBdEluZGV4OmluZGV4XSk7Ci0g
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAotICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBlbGVtZW50Rm9yQXR0cmlidXRlQXRJbmRleChOU0FjY2Vzc2liaWxpdHlTZWxlY3Rl
ZENoaWxkcmVuQXR0cmlidXRlLCBpbmRleCk7CiB9CiAKIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRyZW5Db3VudCgpIGNvbnN0CiB7CisgICAgdW5zaWduZWQg
Y291bnQgPSAwOworCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6TlNBY2Nlc3NpYmlsaXR5
U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgc19jb250cm9sbGVyLT5leGVjdXRlT25B
WFRocmVhZElmUG9zc2libGUoWyZjb3VudCwgdGhpc10geworICAgICAgICBjb3VudCA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6TlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgfSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGNvdW50OwogfQogCiBSZWZQdHI8QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dB
dEluZGV4KHVuc2lnbmVkIGluZGV4KQogewotICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIE5TQXJyYXkqIHJvd3MgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdOwotICAgIGlmIChpbmRleCA8
IFtyb3dzIGNvdW50XSkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNy
ZWF0ZShbcm93cyBvYmplY3RBdEluZGV4OmluZGV4XSk7Ci0gICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIAotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBlbGVtZW50Rm9yQXR0
cmlidXRlQXRJbmRleChOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGUsIGluZGV4
KTsKIH0KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRpdGxlVUlFbGVtZW50KCkKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwotICAg
IGlmIChhY2Nlc3NpYmlsaXR5T2JqZWN0KQotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y3JlYXRlKGFjY2Vzc2liaWxpdHlPYmplY3QpOwotICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKLSAgICAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZWxlbWVudEZv
ckF0dHJpYnV0ZShOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZSk7CiB9CiAK
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpw
YXJlbnRFbGVtZW50KCkKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBh
Y2Nlc3NpYmlsaXR5T2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlXTsKLSAgICBpZiAoYWNjZXNzaWJpbGl0
eU9iamVjdCkKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShh
Y2Nlc3NpYmlsaXR5T2JqZWN0KTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCi0g
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGVsZW1lbnRGb3JBdHRyaWJ1dGUoTlNBY2Nl
c3NpYmlsaXR5UGFyZW50QXR0cmlidXRlKTsKIH0KIAogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkKIHsKLSAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGlzY2xv
c2VkQnlSb3dBdHRyaWJ1dGVdOwotICAgIGlmIChhY2Nlc3NpYmlsaXR5T2JqZWN0KQotICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGFjY2Vzc2liaWxpdHlPYmpl
Y3QpOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKLSAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gZWxlbWVudEZvckF0dHJpYnV0ZShOU0FjY2Vzc2liaWxpdHlEaXNjbG9z
ZWRCeVJvd0F0dHJpYnV0ZSk7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZMaW5rZWRVSUVsZW1lbnRzKCkKQEAgLTYxNywx
OCArNTgyLDkgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmUKIAogZG91YmxlIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkK
IHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZTsKLQotICAgIGF1
dG8gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKTsKLSAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci0+
ZXhlY3V0ZU9uQVhUaHJlYWRJZlBvc3NpYmxlKFsmYXR0cmlidXRlLCAmdmFsdWUsIHRoaXNdIHsK
LSAgICAgICAgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpb
TlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOwotICAgIH0pOwotCisg
ICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIFtOU1N0cmluZyBz
dHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gW3ZhbHVlIGRvdWJsZVZh
bHVlXTsKLSAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0KICAgICByZXR1cm4gMDsKIH0KIApA
QCAtNjg5LDkgKzY0NSw5IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1
dGVTZXR0YWJsZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiBib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gW1ttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSBjb250YWluc09iamVjdDpbTlNTdHJpbmcgc3RyaW5nV2l0
aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV1dOworICAgIHJldHVybiBbc3VwcG9ydGVkQXR0cmlidXRl
cyhtX2VsZW1lbnQuZ2V0KCkpIGNvbnRhaW5zT2JqZWN0OltOU1N0cmluZyBzdHJpbmdXaXRoSlNT
dHJpbmdSZWY6YXR0cmlidXRlXV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAor
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05ODgsMTIgKzk0NCw5IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkKCkgY29uc3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc1NlbGVjdGVkKCkgY29uc3QKIHsKLSAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQ
VElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlXTsKKyAgICBpZCB2YWx1ZSA9IGF0
dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRy
aWJ1dGUpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkK
ICAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwotICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKLSAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEyMzUsOCArMTE4OCw3IEBA
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RU
ZXh0V2l0aENyaXRlcmlhKEpTQ29udGV4CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAg
ICAgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJpemVkQXR0cmlidXRlID0gc2VsZWN0VGV4dFBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVGb3JDcml0ZXJpYShjb250ZXh0LCBhbWJpZ3VpdHlSZXNvbHV0aW9u
LCBzZWFyY2hTdHJpbmdzLCByZXBsYWNlbWVudFN0cmluZywgYWN0aXZpdHkpOwogICAgIGlkIHJl
c3VsdDsKLSAgICBhdXRvIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7Ci0gICAgYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXItPmV4ZWN1dGVPbkFYVGhyZWFkSWZQb3NzaWJsZShbJnBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGUsICZyZXN1bHQsIHRoaXNdIHsKKyAgICBzX2NvbnRyb2xsZXItPmV4ZWN1dGVPbkFY
VGhyZWFkSWZQb3NzaWJsZShbJnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUsICZyZXN1bHQsIHRoaXNd
IHsKICAgICAgICAgcmVzdWx0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWFNlbGVjdFRleHRXaXRoQ3JpdGVyaWEiIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJpemVk
QXR0cmlidXRlXTsKICAgICB9KTsKICAgICBpZiAoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>