<?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>239848</bug_id>
          
          <creation_ts>2022-04-28 05:58:27 -0700</creation_ts>
          <short_desc>Code cleanup in preparation for refactoring of computing relationships between AXObjects.</short_desc>
          <delta_ts>2022-04-30 19:44:12 -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>Accessibility</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>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1865131</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-28 05:58:27 -0700</bug_when>
    <thetext>Code cleanup in preparation for refactoring of computing relationships between AXObjects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865132</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-28 05:58:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/92455544&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865133</commentid>
    <comment_count>2</comment_count>
      <attachid>458523</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-28 06:13:03 -0700</bug_when>
    <thetext>Created attachment 458523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865222</commentid>
    <comment_count>3</comment_count>
      <attachid>458523</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-04-28 12:47:17 -0700</bug_when>
    <thetext>Comment on attachment 458523
Patch

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

Seems like a really nice improvement!

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:4018
&gt; +    if (!labelFor.size())

Could this be labelFor.isEmpty()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865237</commentid>
    <comment_count>4</comment_count>
      <attachid>458523</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-04-28 13:23:02 -0700</bug_when>
    <thetext>Comment on attachment 458523
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:3953
&gt; +AXCoreObject::AccessibilityChildrenVector AccessibilityObject::activeDescendantOf() const

this feels like it should be plural
activeDescendantsOf

&gt; Source/WebCore/accessibility/AccessibilityObject.h:307
&gt; +    AccessibilityChildrenVector descriptionFor() const override;

I don&apos;t feel like these methods indicate they&apos;re returning elements. descriptionFor() sounds like it could be a string returning function

can we call it something like &quot;descriptionElementsFor()&quot; or &quot;errorMessageElementsFor()&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865520</commentid>
    <comment_count>5</comment_count>
      <attachid>458604</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-29 13:18:22 -0700</bug_when>
    <thetext>Created attachment 458604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865521</commentid>
    <comment_count>6</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-29 13:20:32 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #3)
&gt; Comment on attachment 458523 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458523&amp;action=review
&gt; 
&gt; Seems like a really nice improvement!
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.cpp:4018
&gt; &gt; +    if (!labelFor.size())
&gt; 
&gt; Could this be labelFor.isEmpty()?

Yes, using isEmpty() in more places where it makes the code more legible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865524</commentid>
    <comment_count>7</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-29 13:27:18 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #4)
&gt; Comment on attachment 458523 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458523&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.cpp:3953
&gt; &gt; +AXCoreObject::AccessibilityChildrenVector AccessibilityObject::activeDescendantOf() const
&gt; 
&gt; this feels like it should be plural
&gt; activeDescendantsOf

Renamed to activeDescendantOfObjects. ActiveDescendant is singular because it refers to this object, and the method returns the objects that &quot;contain&quot; this as their active descendant. Hopefully the naming now is a bit more clear. Let me know.

&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityObject.h:307
&gt; &gt; +    AccessibilityChildrenVector descriptionFor() const override;
&gt; 
&gt; I don&apos;t feel like these methods indicate they&apos;re returning elements.
&gt; descriptionFor() sounds like it could be a string returning function
&gt; 
&gt; can we call it something like &quot;descriptionElementsFor()&quot; or
&gt; &quot;errorMessageElementsFor()&quot;

Chose Objects as part of the name to avoid confusion with DOM Elements. Notice the symmetric methods for a given relationship. For instance, we have labelledByObjects and labelForObjects. Hopefully this is a bit more clear now. Let me know. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865531</commentid>
    <comment_count>8</comment_count>
      <attachid>458607</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-29 13:59:44 -0700</bug_when>
    <thetext>Created attachment 458607
Patch

Fix for iOS build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865541</commentid>
    <comment_count>9</comment_count>
      <attachid>458607</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-04-29 14:31:30 -0700</bug_when>
    <thetext>Comment on attachment 458607
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1084
&gt; +    linkedUIElements = flowToObjects();

Will this overwrite existing elements in `linkedUIElements`? If so, should we concat these vectors instead?

&gt; Source/WebCore/accessibility/AccessibilityTableRow.cpp:154
&gt; +    if (ownedObjects.size()) {

Would this be better as !ownedObjects.isEmpty()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865577</commentid>
    <comment_count>10</comment_count>
      <attachid>458618</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-29 16:46:23 -0700</bug_when>
    <thetext>Created attachment 458618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865581</commentid>
    <comment_count>11</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-29 16:52:40 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #9)
&gt; Comment on attachment 458607 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458607&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:1084
&gt; &gt; +    linkedUIElements = flowToObjects();
&gt; 
&gt; Will this overwrite existing elements in `linkedUIElements`? If so, should
&gt; we concat these vectors instead?

It is never used to concat linked objects. So while at it, also removed the out parameter and renamed to linkedObjects() like all the other relations methods.

&gt; 
&gt; &gt; Source/WebCore/accessibility/AccessibilityTableRow.cpp:154
&gt; &gt; +    if (ownedObjects.size()) {
&gt; 
&gt; Would this be better as !ownedObjects.isEmpty()?

In this case I think either one is fine, but I opted for the shortest with no negation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865673</commentid>
    <comment_count>12</comment_count>
      <attachid>458639</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-30 13:37:11 -0700</bug_when>
    <thetext>Created attachment 458639
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865685</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-30 19:44:09 -0700</bug_when>
    <thetext>Committed r293650 (250154@main): &lt;https://commits.webkit.org/250154@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458639.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458523</attachid>
            <date>2022-04-28 06:13:03 -0700</date>
            <delta_ts>2022-04-29 13:18:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239848-20220428091301.patch</filename>
            <type>text/plain</type>
            <size>28050</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI5YThjODkxOGJhZTdi
NDc0NTJhNjRiYjY4NzQ1ZmQ1ZjVkN2I2Yy4uMzI5MzdkNTI5ZjA5Y2IyZWJiNWQxZjk3NWFiOGZk
NDY3ZGQ3Yzk1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTA0LTI4ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBDb2RlIGNsZWFu
dXAgaW4gcHJlcGFyYXRpb24gZm9yIHJlZmFjdG9yaW5nIG9mIGNvbXB1dGluZyByZWxhdGlvbnNo
aXBzIGJldHdlZW4gQVhPYmplY3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM5ODQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MjQ1NTU0ND4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
ZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVu
dHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUgaXMgdGhlIG1ldGhvZAorICAgICAgICB0aGF0IGN1cnJl
bnRseSBjb21wdXRlcyB0aGUgcmV2ZXJzZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gYW4gb2JqZWN0
IGFuZAorICAgICAgICBvdGhlciBvYmplY3RzIHRoYXQgcmVmZXJlbmNlIGl0LiBUaGlzIG1ldGhv
ZCBub3cgcmV0dXJucyBhIHZlY3RvciBvZiB0aGUKKyAgICAgICAgcmVsYXRlZCBvYmplY3RzIGlu
c3RlYWQgb2YgdGFraW5nIGFuIG91dCBwYXJhbWV0ZXIuIEluIGFkZGl0aW9uLCBhbGwKKyAgICAg
ICAgYXJpYVhYWFJlZmVyZW5jaW5nRWxlbWVudHMgbWV0aG9kcyBhcmUgcmVuYW1lZCB0byBiZXR0
ZXIgcmVmbGVjdCB0aGUKKyAgICAgICAgcmVsYXRpb25zaGlwIHRoYXQgdGhleSBhcmUgcmV0cmll
dmluZy4gVGhlc2UgdHdvIGNoYW5nZXMgbWFrZSB0aGUgY29kZQorICAgICAgICBtb3JlIGNvbmNp
c2UgYW5kIGNsZWFyZXIuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Ojp0ZXh0VW5kZXJFbGVtZW50IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENv
bnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
Y3RpdmVEZXNjZW5kYW50T2YgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6Y29udHJvbGxlcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdDo6ZGVzY3JpcHRpb25Gb3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWlsc0ZvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjplcnJvck1lc3NhZ2VGb3IgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Zmxvd3NGcm9tIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmxhYmVsRm9yIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om93bmVycyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5n
RWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVkQnlS
ZWZlcmVuY2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRXJy
b3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYU93bnNSZWZlcmVuY2luZ0Vs
ZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXJp
YU93bmVkQnlQYXJlbnQgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3RBdHNwaTo6cmVsYXRpb25NYXAgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZE9iamVjdDo6YWN0aXZlRGVzY2VuZGFudE9mIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmNvbnRyb2xsZXJzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmRlc2NyaXB0aW9uRm9yIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmRldGFpbHNGb3IgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZXJyb3JNZXNzYWdlRm9yIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmZsb3dzRnJvbSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpsYWJlbEZvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojpvd25lcnMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1l
bnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdF
bGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphcmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUVycm9yTWVzc2FnZVJlZmVyZW5j
aW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6YXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUxhYmVsbGVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgor
CiAyMDIyLTA0LTI0ICBQaGlsaXBwZSBOb3JtYW5kICA8cGhpbG5AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1N0cmVhbWVyXSBEaXNhYmxlIG5ldyBkZW11eGVycyBiYXNlZCBvbiBhZGFwdGl2ZWRl
bXV4MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCA5ODVmMDE0ZGQ1YTg2MjA3OTRmYWUyZDk4OTg4ZjFj
YjI1NzlhOTM1Li5jMmFlNzFmMGQ3ZjJkYTdhMGE3OTFmMDY3NzcyYzM1M2ZkMDlhYmE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcApAQCAtMjA1MSwxMiArMjA1MSw4IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVu
dE1vCiAgICAgLy8gcmVmZXJlbmNlZCBieSBhcmlhLWxhYmVsbGVkYnkgb3IgYXJpYS1kZXNjcmli
ZWRieSwgYW5kIGlzIG5vdCBhIGhvc3QgbGFuZ3VhZ2UgdGV4dAogICAgIC8vIGFsdGVybmF0aXZl
LCB0aGUgZW1wdHkgc3RyaW5nIHNob3VsZCBiZSByZXR1cm5lZC4KICAgICBpZiAoaXNET01IaWRk
ZW4oKSAmJiAhaXNBcmlhVmlzaWJsZSAmJiAhaXM8SFRNTExhYmVsRWxlbWVudD4obm9kZSkgJiYg
KG5vZGUgJiYgIWFuY2VzdG9yc09mVHlwZTxIVE1MQ2FudmFzRWxlbWVudD4oKm5vZGUpLmZpcnN0
KCkpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBsYWJlbEZvcjsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGRlc2NyaXB0aW9uRm9yOwotICAgICAgICBhcmlhTGFiZWxsZWRC
eVJlZmVyZW5jaW5nRWxlbWVudHMobGFiZWxGb3IpOwotICAgICAgICBhcmlhRGVzY3JpYmVkQnlS
ZWZlcmVuY2luZ0VsZW1lbnRzKGRlc2NyaXB0aW9uRm9yKTsKLSAgICAgICAgaWYgKCFsYWJlbEZv
ci5zaXplKCkgJiYgIWRlc2NyaXB0aW9uRm9yLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICAgICAgaWYgKCFsYWJlbEZvcigpLnNpemUoKSAmJiAhZGVzY3JpcHRpb25G
b3IoKS5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDc4ZTI3NzI1MzZiNzk0MGIxNDQ0ZTc4MjIz
ZTY3YzI5YTgxZTljNzMuLjMwOTEyMGU5MjA4MmNmYTQxZDE2MzBhMjE0YWM1MzZhNDZlNTY2MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcApAQCAtMzkxNywzMCArMzkxNywzMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JgogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpdGVyYXRlcyB0aGUgd2hvbGUgRE9NIHRyZWUg
YW5kIHRyaWVzIHRvIG1hdGNoIGV2ZXJ5IEVsZW1lbnQgaW4gdGhlIHRyZWUsIHdoaWNoIGlzIHZl
cnkgZXhwZW5zaXZlLgogLy8gV2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgd2F5IHRvIGFjaGlldmUg
dGhpcy4KLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5
QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZWxlbWVudHMsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFbGVtZW50c1JlZmVyZW5j
ZWRCeUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0CiB7CiAg
ICAgYXV0byBpZCA9IGlkZW50aWZpZXJBdHRyaWJ1dGUoKTsKICAgICBpZiAoaWQuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvKiBjYWNo
ZSA9IGF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiB7IH07CiAKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igb2Jq
ZWN0czsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50
Pihub2RlKCktPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkpKSB7CiAgICAgICAgIGF1dG8mIGlkTGlz
dCA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdHRyaWJ1dGUpOwog
ICAgICAgICBpZiAoIVNwYWNlU3BsaXRTdHJpbmc6OnNwYWNlU3BsaXRTdHJpbmdDb250YWluc1Zh
bHVlKGlkTGlzdCwgaWQsIFNwYWNlU3BsaXRTdHJpbmc6OlNob3VsZEZvbGRDYXNlOjpObykpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoYXV0byogYXhPYmplY3QgPSBjYWNo
ZS0+Z2V0T3JDcmVhdGUoJmVsZW1lbnQpKQotICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKGF4
T2JqZWN0KTsKKyAgICAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGNhY2hlLT5nZXRPckNyZWF0ZSgm
ZWxlbWVudCkpCisgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChvYmplY3QpOwogICAgIH0KKyAg
ICByZXR1cm4gb2JqZWN0czsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FjdGl2
ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdAogewotICAgIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBjb250YWluZXJzOwotICAgIGFyaWFBY3RpdmVEZXNjZW5kYW50UmVm
ZXJlbmNpbmdFbGVtZW50cyhjb250YWluZXJzKTsKKyAgICBhdXRvIGNvbnRhaW5lcnMgPSBhY3Rp
dmVEZXNjZW5kYW50T2YoKTsKICAgICBmb3IgKGF1dG8mIGNvbnRhaW5lciA6IGNvbnRhaW5lcnMp
IHsKICAgICAgICAgaWYgKGNvbnRhaW5lci0+aXNGb2N1c2VkKCkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTM5NDksOSArMzk1MCw5IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRh
bnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY29udGFp
bmVycykgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFjdGl2ZURlc2NlbmRhbnRPZigpIGNvbnN0CiB7Ci0gICAgYXJp
YUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGNvbnRhaW5lcnMsIGFyaWFfYWN0aXZlZGVz
Y2VuZGFudEF0dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1
dGUoYXJpYV9hY3RpdmVkZXNjZW5kYW50QXR0cik7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9i
amVjdDo6YXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBh
cmlhQ29udHJvbHMpIGNvbnN0CkBAIC0zOTU5LDkgKzM5NjAsOSBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgYXJpYQogICAgIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYUNvbnRyb2xzLCBhcmlh
X2NvbnRyb2xzQXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUNvbnRy
b2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNvbnRy
b2xsZXJzKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
QWNjZXNzaWJpbGl0eU9iamVjdDo6Y29udHJvbGxlcnMoKSBjb25zdAogewotICAgIGFyaWFFbGVt
ZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShjb250cm9sbGVycywgYXJpYV9jb250cm9sc0F0dHIp
OworICAgIHJldHVybiBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoYXJpYV9jb250
cm9sc0F0dHIpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXNjcmliZWRC
eUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYXJpYURlc2NyaWJlZEJ5KSBj
b25zdApAQCAtMzk2OSw5ICszOTcwLDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphcmlh
RGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGEKICAgICBh
cmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGFyaWFEZXNjcmliZWRCeSwgYXJpYV9kZXNjcmliZWRi
eUF0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXNjcmliZWRCeVJl
ZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBkZXNjcmliZXJz
KSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNz
aWJpbGl0eU9iamVjdDo6ZGVzY3JpcHRpb25Gb3IoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50
c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShkZXNjcmliZXJzLCBhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7
CisgICAgcmV0dXJuIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShhcmlhX2Rlc2Ny
aWJlZGJ5QXR0cik7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYURldGFpbHNF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGFyaWFEZXRhaWxzKSBjb25zdApA
QCAtMzk3OSw5ICszOTgwLDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRGV0YWls
c0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYXJpYUQKICAgICBhcmlhRWxl
bWVudHNGcm9tQXR0cmlidXRlKGFyaWFEZXRhaWxzLCBhcmlhX2RldGFpbHNBdHRyKTsKIH0KIAot
dm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBkZXRhaWxzRm9yKSBjb25zdAorQVhDb3JlT2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0
YWlsc0ZvcigpIGNvbnN0CiB7Ci0gICAgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRl
KGRldGFpbHNGb3IsIGFyaWFfZGV0YWlsc0F0dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNS
ZWZlcmVuY2VkQnlBdHRyaWJ1dGUoYXJpYV9kZXRhaWxzQXR0cik7CiB9CiAKIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgYXJpYUVycm9yTWVzc2FnZSkgY29uc3QKQEAgLTM5ODksOSArMzk5MCw5IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYKICAgICBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGFy
aWFFcnJvck1lc3NhZ2UsIGFyaWFfZXJyb3JtZXNzYWdlQXR0cik7CiB9CiAKLXZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBlcnJvck1lc3NhZ2VGb3IpIGNvbnN0CitBWENvcmVPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2JqZWN0OjplcnJv
ck1lc3NhZ2VGb3IoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJp
YnV0ZShlcnJvck1lc3NhZ2VGb3IsIGFyaWFfZXJyb3JtZXNzYWdlQXR0cik7CisgICAgcmV0dXJu
IGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShhcmlhX2Vycm9ybWVzc2FnZUF0dHIp
OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFGbG93VG9FbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGZsb3dUbykgY29uc3QKQEAgLTM5OTksOSArNDAwMCw5
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYgZmxvd1RvCiAgICAgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0
ZShmbG93VG8sIGFyaWFfZmxvd3RvQXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVj
dDo6YXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBmbG93RnJvbSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmZsb3dzRnJvbSgpIGNvbnN0CiB7Ci0gICAgYXJp
YUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGZsb3dGcm9tLCBhcmlhX2Zsb3d0b0F0dHIp
OworICAgIHJldHVybiBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoYXJpYV9mbG93
dG9BdHRyKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhTGFiZWxsZWRCeUVs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYXJpYUxhYmVsbGVkQnkpIGNvbnN0
CkBAIC00MDExLDExICs0MDEyLDEyIEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxh
YmVsbGVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGFyCiAgICAgICAg
IGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYUxhYmVsbGVkQnksIGFyaWFfbGFiZWxlZGJ5
QXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxhYmVsbGVkQnlSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgbGFiZWxzKSBjb25z
dAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0
eU9iamVjdDo6bGFiZWxGb3IoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRC
eUF0dHJpYnV0ZShsYWJlbHMsIGFyaWFfbGFiZWxsZWRieUF0dHIpOwotICAgIGlmICghbGFiZWxz
LnNpemUoKSkKLSAgICAgICAgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGxhYmVs
cywgYXJpYV9sYWJlbGVkYnlBdHRyKTsKKyAgICBhdXRvIGxhYmVsRm9yID0gYXJpYUVsZW1lbnRz
UmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfbGFiZWxsZWRieUF0dHIpOworICAgIGlmICghbGFi
ZWxGb3Iuc2l6ZSgpKQorICAgICAgICBsYWJlbEZvciA9IGFyaWFFbGVtZW50c1JlZmVyZW5jZWRC
eUF0dHJpYnV0ZShhcmlhX2xhYmVsZWRieUF0dHIpOworICAgIHJldHVybiBsYWJlbEZvcjsKIH0K
IAogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhT3duc0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYgYXhPYmplY3RzKSBjb25zdApAQCAtNDAyMyw5ICs0MDI1LDkgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhT3duc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYgYXhPYmplY3QKICAgICBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGF4
T2JqZWN0cywgYXJpYV9vd25zQXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6
YXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
b3duZXJzKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
QWNjZXNzaWJpbGl0eU9iamVjdDo6b3duZXJzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNS
ZWZlcmVuY2VkQnlBdHRyaWJ1dGUob3duZXJzLCBhcmlhX293bnNBdHRyKTsKKyAgICByZXR1cm4g
YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfb3duc0F0dHIpOwogfQogCiB2
b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldElzSWdub3JlZEZyb21QYXJlbnREYXRhRm9yQ2hp
bGQoQVhDb3JlT2JqZWN0KiBjaGlsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggMzNhY2ZhZTRhNmJiM2Q0NWNjOTAzZjAz
NzlmNGY0ODY3MjBlMzFiNS4uZjAyZDIwOTIwMmIzNTUzMmNiNGVhNjU2ZjU1YzYwYjA1MzAwN2Rh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKQEAgLTMwMCwyMSArMzAwLDIxIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcG9y
dHNBUklBT3ducygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBp
c0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2b2lkIGFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgYWN0aXZlRGVzY2VuZGFudE9mKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhcmlhQ29udHJvbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZXJzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRlc2NyaXB0aW9uRm9yKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdm9pZCBhcmlhRGV0YWlsc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxzRm9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
KyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZXJyb3JNZXNzYWdlRm9yKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhcmlhRmxvd1RvRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhRmxvd1RvUmVmZXJlbmNp
bmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
KyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZmxvd3NGcm9tKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBsYWJlbEZvcigpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZvaWQgYXJpYU93bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igb3duZXJzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBi
b29sIGhhc1BvcHVwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBTdHJp
bmcgcG9wdXBWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtODExLDcgKzgxMSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgYm9vbCBpc0FSSUFJbnB1dChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAK
ICAgICB2b2lkIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUVsZW1l
bnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBj
b25zdCBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByYWRpb0dyb3VwQW5jZXN0
b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggMjYxNDkzYTdjMzAwOGEyMTA4
OGJlYmYxOGIxNjIwY2JjNTlmZTkzMi4uYWEwY2U0N2MzNDZjMTA3ZGIxZDRjNWIwZjdjZjFiOGJi
YzEwYzc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTEwNDgsMjEgKzEwNDgsMjEgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcigp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhY3RpdmVEZXNjZW5kYW50T2Yo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJp
YUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29u
dHJvbGxlcnMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFyaWFEZXNjcmliZWRCeUVs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgZGVzY3JpcHRpb25Gb3IoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRldGFpbHNGb3IoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJvck1lc3NhZ2VGb3IoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFGbG93
VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBmbG93c0Zyb20o
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBh
cmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGxhYmVsRm9yKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcmlhT3duc0VsZW1lbnRz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgYXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBv
d25lcnMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzUG9wdXAoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0ID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwu
Y3BwCmluZGV4IDYyM2E2MDI4ZTQyZTU0YmFlYzMwNjMxYzc0OTM3NGYzMjhlODcwNjEuLmVjNmYy
NjQ5ZGE4ZjNmYmYzZjY0ZDg4Njk2MmU1MzQ0NjBkMDhlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAt
Mjk2LDExICsyOTYsOSBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dIZWFkZXJzKCkKIAogQWNjZXNzaWJpbGl0eVRh
YmxlUm93KiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjphcmlhT3duZWRCeVBhcmVudCgpIGNvbnN0
CiB7Ci0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFPd25lZEJ5OwotICAgIGFy
aWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhhcmlhT3duZWRCeSk7Ci0gICAgaWYgKGFyaWFPd25l
ZEJ5LnNpemUoKSA9PSAxICYmIGFyaWFPd25lZEJ5WzBdLT5pc1RhYmxlUm93KCkpCi0gICAgICAg
IHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KGFyaWFPd25lZEJ5WzBdLmdl
dCgpKTsKLQorICAgIGF1dG8gb3duZXJzID0gdGhpcy0+b3duZXJzKCk7CisgICAgaWYgKG93bmVy
cy5zaXplKCkgPT0gMSAmJiBvd25lcnNbMF0tPmlzVGFibGVSb3coKSkKKyAgICAgICAgcmV0dXJu
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ob3duZXJzWzBdLmdldCgpKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCmluZGV4IGRh
OTJmZDQxM2YxMDc3YzcxMjkwZTEzYTNlNTQ4NjIwYmU3Yzg5NjcuLjZhYmI1M2NjNzhhZWI5Mzlj
YmNkOTViYWQ5MmU4Njc2MWNhNWQyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAK
QEAgLTEwNjgsNjAgKzEwNjgsNDggQEAgSGFzaE1hcDx1aW50MzJfdCwgVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk+Pj4gQWNjZXNzaWJpbGl0eU9iamVjdEEKICAgICAgICAg
bV9jb3JlT2JqZWN0LT5hcmlhTGFiZWxsZWRCeUVsZW1lbnRzKGFyaWFMYWJlbGxlZEJ5RWxlbWVu
dHMpOwogICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpMYWJlbGxlZEJ5LCBhcmlhTGFiZWxsZWRCeUVs
ZW1lbnRzKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBhcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHM7CisgICAgQWNjZXNzaWJp
bGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsRm9yT2JqZWN0czsK
ICAgICBpZiAoYXV0byogY29udHJvbCA9IG1fY29yZU9iamVjdC0+Y29ycmVzcG9uZGluZ0NvbnRy
b2xGb3JMYWJlbEVsZW1lbnQoKSkKLSAgICAgICAgYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0Vs
ZW1lbnRzLmFwcGVuZChjb250cm9sKTsKKyAgICAgICAgbGFiZWxGb3JPYmplY3RzLmFwcGVuZChj
b250cm9sKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29yZU9iamVjdC0+YXJpYUxhYmVsbGVkQnlS
ZWZlcmVuY2luZ0VsZW1lbnRzKGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyk7Ci0g
ICAgYWRkUmVsYXRpb24oQXRzcGk6OkxhYmVsRm9yLCBhcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5n
RWxlbWVudHMpOworICAgICAgICBsYWJlbEZvck9iamVjdHMgPSBtX2NvcmVPYmplY3QtPmxhYmVs
Rm9yKCk7CisgICAgYWRkUmVsYXRpb24oQXRzcGk6OkxhYmVsRm9yLCBsYWJlbEZvck9iamVjdHMp
OwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGFyaWFGbG93VG9FbGVtZW50czsKICAgICBtX2NvcmVPYmplY3QtPmFyaWFGbG93VG9FbGVtZW50
cyhhcmlhRmxvd1RvRWxlbWVudHMpOwogICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpGbG93c1RvLCBh
cmlhRmxvd1RvRWxlbWVudHMpOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzOwotICAgIG1f
Y29yZU9iamVjdC0+YXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoYXJpYUZsb3dUb1JlZmVy
ZW5jaW5nRWxlbWVudHMpOwotICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpGbG93c0Zyb20sIGFyaWFG
bG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKTsKKyAgICBhZGRSZWxhdGlvbihBdHNwaTo6Rmxvd3NG
cm9tLCBtX2NvcmVPYmplY3QtPmZsb3dzRnJvbSgpKTsKIAogICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRGVzY3JpYmVkQnlFbGVtZW50czsK
ICAgICBtX2NvcmVPYmplY3QtPmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKGFyaWFEZXNjcmliZWRC
eUVsZW1lbnRzKTsKICAgICBhZGRSZWxhdGlvbihBdHNwaTo6RGVzY3JpYmVkQnksIGFyaWFEZXNj
cmliZWRCeUVsZW1lbnRzKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzOwotICAg
IG1fY29yZU9iamVjdC0+YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhhcmlhRGVz
Y3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKTsKLSAgICBhZGRSZWxhdGlvbihBdHNwaTo6RGVz
Y3JpcHRpb25Gb3IsIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMpOworICAgIGFk
ZFJlbGF0aW9uKEF0c3BpOjpEZXNjcmlwdGlvbkZvciwgbV9jb3JlT2JqZWN0LT5kZXNjcmlwdGlv
bkZvcigpKTsKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBhcmlhQ29udHJvbHNFbGVtZW50czsKICAgICBtX2NvcmVPYmplY3QtPmFyaWFDb250
cm9sc0VsZW1lbnRzKGFyaWFDb250cm9sc0VsZW1lbnRzKTsKICAgICBhZGRSZWxhdGlvbihBdHNw
aTo6Q29udHJvbGxlckZvciwgYXJpYUNvbnRyb2xzRWxlbWVudHMpOwogCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFDb250cm9sc1JlZmVy
ZW5jaW5nRWxlbWVudHM7Ci0gICAgbV9jb3JlT2JqZWN0LT5hcmlhQ29udHJvbHNSZWZlcmVuY2lu
Z0VsZW1lbnRzKGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMpOwotICAgIGFkZFJlbGF0
aW9uKEF0c3BpOjpDb250cm9sbGVkQnksIGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMp
OworICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpDb250cm9sbGVkQnksIG1fY29yZU9iamVjdC0+Y29u
dHJvbGxlcnMoKSk7CiAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgYXJpYU93bnNFbGVtZW50czsKICAgICBtX2NvcmVPYmplY3QtPmFyaWFPd25z
RWxlbWVudHMoYXJpYU93bnNFbGVtZW50cyk7CiAgICAgYWRkUmVsYXRpb24oQXRzcGk6Ok5vZGVQ
YXJlbnRPZiwgYXJpYU93bnNFbGVtZW50cyk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzOwot
ICAgIG1fY29yZU9iamVjdC0+YXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKGFyaWFPd25zUmVm
ZXJlbmNpbmdFbGVtZW50cyk7Ci0gICAgYWRkUmVsYXRpb24oQXRzcGk6Ok5vZGVDaGlsZE9mLCBh
cmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMpOworICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpOb2Rl
Q2hpbGRPZiwgbV9jb3JlT2JqZWN0LT5vd25lcnMoKSk7CiAKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYURldGFpbHNFbGVtZW50czsKICAg
ICBtX2NvcmVPYmplY3QtPmFyaWFEZXRhaWxzRWxlbWVudHMoYXJpYURldGFpbHNFbGVtZW50cyk7
CiAgICAgYWRkUmVsYXRpb24oQXRzcGk6OkRldGFpbHMsIGFyaWFEZXRhaWxzRWxlbWVudHMpOwog
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFy
aWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50czsKLSAgICBtX2NvcmVPYmplY3QtPmFyaWFEZXRh
aWxzUmVmZXJlbmNpbmdFbGVtZW50cyhhcmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMpOwot
ICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpEZXRhaWxzRm9yLCBhcmlhRGV0YWlsc1JlZmVyZW5jaW5n
RWxlbWVudHMpOworICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpEZXRhaWxzRm9yLCBtX2NvcmVPYmpl
Y3QtPmRldGFpbHNGb3IoKSk7CiAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzOwogICAgIG1fY29yZU9i
amVjdC0+YXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyk7
CiAgICAgYWRkUmVsYXRpb24oQXRzcGk6OkVycm9yTWVzc2FnZSwgYXJpYUVycm9yTWVzc2FnZUVs
ZW1lbnRzKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBhcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50czsKLSAgICBtX2NvcmVP
YmplY3QtPmFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKGFyaWFFcnJvck1lc3Nh
Z2VSZWZlcmVuY2luZ0VsZW1lbnRzKTsKLSAgICBhZGRSZWxhdGlvbihBdHNwaTo6RXJyb3JGb3Is
IGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKTsKKyAgICBhZGRSZWxhdGlvbihB
dHNwaTo6RXJyb3JGb3IsIG1fY29yZU9iamVjdC0+ZXJyb3JNZXNzYWdlRm9yKCkpOwogCiAgICAg
cmV0dXJuIG1hcDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggNmQ5NDQwZDNm
YmI2MDBlOTE5MzZlOWU0MWIyNTMwNWNjMGNhZjU5OC4uZWZkOTYwNzdhODg2NjJkODg4NTdmYmE0
NjljNGM0N2NmZTA0NWM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTE4NzQs
MTQgKzE4NzQsMTYgQEAgQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjpzZWxlY3RlZExp
c3RJdGVtKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0
OjphcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmFjdGl2ZURlc2NlbmRhbnRPZigpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBBWElz
b2xhdGVkT2JqZWN0OjphcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0Ojpjb250cm9sbGVycygpIGNvbnN0CiB7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogdm9pZCBBWElzb2xh
dGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBjb25zdApAQCAtMTg4OSwyNCArMTg5MSwyOCBAQCB2b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmRlc2NyaXB0aW9uRm9yKCkgY29uc3QKIHsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OmFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgQVhJc29sYXRlZE9iamVjdDo6ZGV0YWlsc0ZvcigpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0
OjphcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgQVhJc29sYXRlZE9iamVjdDo6ZXJyb3JNZXNzYWdlRm9yKCkgY29uc3QKIHsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OmFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBBWElzb2xhdGVkT2JqZWN0OjpmbG93c0Zyb20oKSBjb25zdAogewogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07CiB9CiAKIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6
YXJpYUxhYmVsbGVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dApAQCAtMTkxNCwxNCArMTkyMCwxNiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFMYWJl
bGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29ucwogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFMYWJl
bGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRl
ZE9iamVjdDo6bGFiZWxGb3IoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYU93bnNSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENv
cmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0Ojpv
d25lcnMoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7
IH07CiB9CiAKIGJvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFzRGF0YWxpc3QoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGRlYjE0YjY1NzFmZjkwZmU0YWIwMjAyYTg5NDkwNDY0
NTE4ZWVlMjYuLmMyMjRkOWIzOWY1NGY2ZDBjMjcwZjAzMDVmMmFlNjg5NzZiZThiNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTU0NSwxNiArNTQ1LDE2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBBWENvcmVP
YmplY3QqIHNlbGVjdGVkTGlzdEl0ZW0oKSBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFBY3RpdmVE
ZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFjdGl2ZURlc2NlbmRhbnRPZigpIGNvbnN0IG92ZXJy
aWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250cm9sbGVycygpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVk
QnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUVy
cm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGVzY3JpcHRpb25Gb3IoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGV0YWlsc0ZvcigpIGNvbnN0IG92ZXJy
aWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJvck1lc3NhZ2VGb3IoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZmxvd3NGcm9t
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUxh
YmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBsYWJlbEZvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBvd25lcnMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29s
IGhhc0RhdGFsaXN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0hhc1BvcHVw
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1ByZXNzZWQoKSBjb25zdCBvdmVy
cmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458604</attachid>
            <date>2022-04-29 13:18:22 -0700</date>
            <delta_ts>2022-04-29 14:10:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239848-20220429161820.patch</filename>
            <type>text/plain</type>
            <size>49136</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVlYjMzNmQ3NmFhMjlj
Yjk5YjRlMmFhZmE2YzU3ODRiZmU4YTcxNC4uOWNmODdlYWVmMTllMGExYzA3MmUzYTQyOTA3NmVk
NDBmNzQ5NDAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIyLTA0LTI5ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBDb2RlIGNsZWFu
dXAgaW4gcHJlcGFyYXRpb24gZm9yIHJlZmFjdG9yaW5nIG9mIGNvbXB1dGluZyByZWxhdGlvbnNo
aXBzIGJldHdlZW4gQVhPYmplY3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM5ODQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MjQ1NTU0ND4K
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaCBhbmQgVHlsZXIgV2lsY29jay4K
KworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKCkgYW5kCisgICAgICAgIGFyaWFFbGVt
ZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZSgpIGFyZSB0aGUgbWV0aG9kcyB0aGF0IGN1cnJlbnRs
eQorICAgICAgICBjb21wdXRlIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gb2JqZWN0cy4gVGhl
c2UgbWV0aG9kcyBub3cgcmV0dXJuIGEKKyAgICAgICAgdmVjdG9yIG9mIHRoZSByZWxhdGVkIG9i
amVjdHMgaW5zdGVhZCBvZiB0YWtpbmcgYW4gb3V0IHBhcmFtZXRlci4KKyAgICAgICAgSW4gYWRk
aXRpb24sIGFsbCBhcmlhWFhYRWxlbWVudHMgYW5kIGFyaWFYWFhSZWZlcmVuY2luZ0VsZW1lbnRz
IG1ldGhvZHMKKyAgICAgICAgYXJlIHJlbmFtZWQgdG8gYmV0dGVyIHJlZmxlY3QgdGhlIHJlbGF0
aW9uc2hpcHMgdGhleSByZXRyaWV2ZS4gTm90ZSB0aGF0CisgICAgICAgIHRoZSBwcmVmaXggYXJp
YSBpcyByZW1vdmVkIGZyb20gYWxsIG1ldGhvZCBuYW1lcyBiZWNhdXNlIEFSSUEgaXMgb25lIHdh
eQorICAgICAgICBvZiBlc3RhYmxpc2hpbmcgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIG9iamVjdHMs
IGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlCisgICAgICAgIG9ubHkgd2F5LiBUaGVzZSBjaGFuZ2Vz
IG1ha2UgdGhlIGNvZGUgbW9yZSBjb25jaXNlIGFuZCBjbGVhcmVyLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFbGVtZW50c1Jl
ZmVyZW5jZWRCeUF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWN0aXZlRGVzY2VuZGFudE9m
T2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
b250cm9sbGVkT2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpjb250cm9sbGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpkZXNjcmliZWRCeU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVzY3JpcHRpb25Gb3JPYmplY3RzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFpbGVkQnlPYmplY3RzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFpbHNGb3JPYmpl
Y3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVycm9y
TWVzc2FnZU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6ZXJyb3JNZXNzYWdlRm9yT2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpmbG93VG9PYmplY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZsb3dGcm9tT2JqZWN0cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYWJlbGxlZEJ5T2JqZWN0cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYWJlbEZvck9iamVjdHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6b3duZWRPYmpl
Y3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om93bmVy
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhQWN0
aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUNvbnRyb2xzRWxlbWVudHMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJp
YUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphcmlh
RGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXRhaWxzRWxlbWVudHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYURl
dGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRXJy
b3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRmxvd1RvRWxlbWVudHMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUZsb3dU
b1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxhYmVsbGVkQnlFbGVtZW50cyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhTGFiZWxsZWRC
eVJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYU93bnNFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhT3duc1JlZmVyZW5jaW5n
RWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpsaW5rZWRVSUVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnRhcmdldEVsZW1lbnRGb3JBY3RpdmVEZXNjZW5kYW50IGNvbnN0
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSGVhZGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjphcmlhT3duZWRCeVBh
cmVudCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVS
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGls
ZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpy
ZWxhdGlvbk1hcCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphY3RpdmVEZXNjZW5kYW50T2ZPYmplY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmNvbnRyb2xsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmRlc2NyaWJlZEJ5T2JqZWN0cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpkZXNjcmlwdGlvbkZvck9iamVjdHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZGV0YWlsc0Zvck9iamVjdHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZXJyb3JNZXNzYWdlRm9y
T2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpmbG93
RnJvbU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
bGFiZWxsZWRCeU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9i
amVjdDo6bGFiZWxGb3JPYmplY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6Om93bmVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUNvbnRyb2xzUmVm
ZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhRXJyb3JNZXNzYWdlUmVm
ZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhTGFiZWxsZWRCeUVs
ZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OmFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhT3duc1JlZmVyZW5jaW5nRWxl
bWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMjIt
MDQtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxN
ZWRpYUVsZW1lbnQgY2FuIGdldCBtdWx0aXBsZSBpbnRlcnJ1cHRpb25zIGZvciBpbnZpc2libGUg
YXV0b3BsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggZjQzOGM5YzVkNTI3MDE0Nzc1NDk2MjA2M2Rm
ZDk2NTMwNjMxYzcxNy4uYWFiYTdlZTliOGI4NmQ4YjFkMjZmY2RiYjBiZWI0NTVhN2YwZjA2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKQEAgLTIwNTEsMTIgKzIwNTEsOCBAQCBTdHJpbmcgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNbwogICAgIC8vIHJlZmVyZW5jZWQgYnkgYXJpYS1sYWJlbGxlZGJ5IG9yIGFyaWEtZGVz
Y3JpYmVkYnksIGFuZCBpcyBub3QgYSBob3N0IGxhbmd1YWdlIHRleHQKICAgICAvLyBhbHRlcm5h
dGl2ZSwgdGhlIGVtcHR5IHN0cmluZyBzaG91bGQgYmUgcmV0dXJuZWQuCiAgICAgaWYgKGlzRE9N
SGlkZGVuKCkgJiYgIWlzQXJpYVZpc2libGUgJiYgIWlzPEhUTUxMYWJlbEVsZW1lbnQ+KG5vZGUp
ICYmIChub2RlICYmICFhbmNlc3RvcnNPZlR5cGU8SFRNTENhbnZhc0VsZW1lbnQ+KCpub2RlKS5m
aXJzdCgpKSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgbGFiZWxGb3I7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXNjcmlwdGlvbkZvcjsKLSAgICAgICAgYXJpYUxhYmVs
bGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKGxhYmVsRm9yKTsKLSAgICAgICAgYXJpYURlc2NyaWJl
ZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhkZXNjcmlwdGlvbkZvcik7Ci0gICAgICAgIGlmICghbGFi
ZWxGb3Iuc2l6ZSgpICYmICFkZXNjcmlwdGlvbkZvci5zaXplKCkpCi0gICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgICAgIGlmIChsYWJlbEZvck9iamVjdHMoKS5pc0VtcHR5KCkgJiYg
ZGVzY3JpcHRpb25Gb3JPYmplY3RzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAxODZm
Yzk5ZjZjOWZjYThiYjhkNTJlY2VhZTBkMmQwYzJmZGMzOGM4Li5kNzRkNWY4M2YyODZiYzUyNmIx
OWYzZmQ1Y2MxNWVlYTIyNTI2NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTE5NzgsOCArMTk3OCw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9y
Tm9kZShOb2RlKiBub2RlKQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJvd3MsIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgYW5jZXN0b3JzKQogewotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBh
cmlhT3duczsKLSAgICBhcmlhT3duc0VsZW1lbnRzKGFyaWFPd25zKTsKKyAgICBhdXRvIG93bmVk
T2JqZWN0cyA9IHRoaXMtPm93bmVkT2JqZWN0cygpOwogCiAgICAgYW5jZXN0b3JzLmFwcGVuZCh0
aGlzKTsKIApAQCAtMTk5MCw5ICsxOTg5LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByb3dzLCBBY2Nlc3MKICAg
ICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0
ZW0pIHsKICAgICAgICAgICAgIC8vIENoaWxkIGFwcGVhcnMgYm90aCBhcyBhIGRpcmVjdCBjaGls
ZCBhbmQgYXJpYS1vd25zLCB3ZSBzaG91bGQgdXNlIHRoZSBvcmRlcmluZyBhcwogICAgICAgICAg
ICAgLy8gZGVzY3JpYmVkIGluIGFyaWEtb3ducyBmb3IgdGhpcyBjaGlsZC4KLSAgICAgICAgICAg
IGlmIChhcmlhT3ducy5jb250YWlucyhjaGlsZCkpCisgICAgICAgICAgICBpZiAob3duZWRPYmpl
Y3RzLmNvbnRhaW5zKGNoaWxkKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAorCiAgICAgICAgICAgICAvLyBUaGUgcmVzdWx0IHNldCBtYXkgYWxyZWFkeSBjb250YWlu
IHRoZSBjaGlsZCB0aHJvdWdoIGFyaWEtb3ducy4gRm9yIGV4YW1wbGUsCiAgICAgICAgICAgICAv
LyBhIHRyZWVpdGVtIHNpdHRpbmcgdW5kZXIgdGhlIHRyZWUgcm9vdCwgd2hpY2ggaXMgb3duZWQg
ZWxzZXdoZXJlIGluIHRoZSB0cmVlLgogICAgICAgICAgICAgaWYgKHJvd3MuY29udGFpbnMoY2hp
bGQpKQpAQCAtMjAwNywxMyArMjAwNiwxMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFy
aWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJvd3MsIEFjY2VzcwogICAg
IH0KIAogICAgIC8vIE5vdyBnbyB0aHJvdWdoIHRoZSBhcmlhLW93bnMgZWxlbWVudHMuCi0gICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGFyaWFPd25zKSB7CisgICAgZm9yIChjb25zdCBhdXRv
JiBjaGlsZCA6IG93bmVkT2JqZWN0cykgewogICAgICAgICAvLyBBdm9pZCBhIGNpcmN1bGFyIHJl
ZmVyZW5jZSB2aWEgYXJpYS1vd25zIGJ5IGNoZWNraW5nIGlmIG91ciBwYXJlbnQKICAgICAgICAg
Ly8gcGF0aCBpbmNsdWRlcyB0aGlzIGNoaWxkLiBDdXJyZW50bHksIGxvb2tpbmcgdXAgdGhlIGFy
aWEtb3ducyBwYXJlbnQKICAgICAgICAgLy8gcGF0aCBpdHNlbGYgY291bGQgYmUgZXhwZW5zaXZl
LCBzbyB3ZSB0cmFjayBpdCBzZXBhcmF0ZWx5LgogICAgICAgICBpZiAoYW5jZXN0b3JzLmNvbnRh
aW5zKGNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICAv
LyBBZGQgdHJlZSBpdGVtcyBhcyB0aGUgcm93cy4KICAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0pIHsKICAgICAgICAgICAgIC8vIEhv
cGVmdWxseSBhIGZsb3cgdGhhdCBkb2VzIG5vdCBvY2N1ciBvZnRlbiBpbiBwcmFjdGljZSwgYnV0
IGlmIHNvbWVvbmUgd2VyZSB0byBpbmNsdWRlCkBAIC0yMDIxLDcgKzIwMjAsNyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIHJvd3MsIEFjY2VzcwogICAgICAgICAgICAgLy8gbW92ZSBpdCB0byB0aGUgcmlnaHQgcGxh
Y2UuCiAgICAgICAgICAgICBpZiAocm93cy5jb250YWlucyhjaGlsZCkpCiAgICAgICAgICAgICAg
ICAgcm93cy5yZW1vdmVGaXJzdChjaGlsZCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
cm93cy5hcHBlbmQoY2hpbGQpOwogICAgICAgICB9CiAKQEAgLTIwMjksNyArMjAyOCw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgcm93cywgQWNjZXNzCiAgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5T2JqZWN0
PigqY2hpbGQpKQogICAgICAgICAgICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oKmNo
aWxkKS5hcmlhVHJlZVJvd3Mocm93cywgYW5jZXN0b3JzKTsKICAgICB9Ci0gICAgCisKICAgICBh
bmNlc3RvcnMucmVtb3ZlTGFzdCgpOwogfQogCkBAIC0zOTIwLDQyICszOTE5LDQzIEBAIEFYQ29y
ZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSgpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRz
RnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRz
RnJvbUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0g
ICAgYXV0byBlbGVtZW50cyA9IGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsK
LSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogYXhPYmpl
Y3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCkpCi0gICAgICAgICAgICBjaGlsZHJlbi5h
cHBlbmQoYXhPYmplY3QpOwotICAgIH0KKyAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUo
KTsKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBlbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoYXR0cmlidXRlKS5tYXAoW2NhY2hlXSAoYXV0byogZWxlbWVudCkg
LT4gUmVmUHRyPEFYQ29yZU9iamVjdD4geworICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3Jl
YXRlKGVsZW1lbnQpOworICAgIH0pOwogfQogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpdGVy
YXRlcyB0aGUgd2hvbGUgRE9NIHRyZWUgYW5kIHRyaWVzIHRvIG1hdGNoIGV2ZXJ5IEVsZW1lbnQg
aW4gdGhlIHRyZWUsIHdoaWNoIGlzIHZlcnkgZXhwZW5zaXZlLgogLy8gV2Ugc2hvdWxkIGZpbmQg
YSBiZXR0ZXIgd2F5IHRvIGFjaGlldmUgdGhpcy4KLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6
YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgZWxlbWVudHMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3QKK0FY
Q29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGUpIGNvbnN0CiB7CiAgICAgYXV0byBpZCA9IGlkZW50aWZpZXJBdHRyaWJ1dGUo
KTsKICAgICBpZiAoaWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNh
Y2hlKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAKKyAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igb2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBk
ZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihub2RlKCktPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkp
KSB7CiAgICAgICAgIGF1dG8mIGlkTGlzdCA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihhdHRyaWJ1dGUpOwogICAgICAgICBpZiAoIVNwYWNlU3BsaXRTdHJpbmc6OnNw
YWNlU3BsaXRTdHJpbmdDb250YWluc1ZhbHVlKGlkTGlzdCwgaWQsIFNwYWNlU3BsaXRTdHJpbmc6
OlNob3VsZEZvbGRDYXNlOjpObykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBp
ZiAoYXV0byogYXhPYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoJmVsZW1lbnQpKQotICAgICAg
ICAgICAgZWxlbWVudHMuYXBwZW5kKGF4T2JqZWN0KTsKKyAgICAgICAgaWYgKGF1dG8qIG9iamVj
dCA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmZWxlbWVudCkpCisgICAgICAgICAgICBvYmplY3RzLmFw
cGVuZChvYmplY3QpOwogICAgIH0KKyAgICByZXR1cm4gb2JqZWN0czsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBj
b25zdAogewotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250YWluZXJzOwotICAg
IGFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhjb250YWluZXJzKTsKKyAg
ICBhdXRvIGNvbnRhaW5lcnMgPSBhY3RpdmVEZXNjZW5kYW50T2ZPYmplY3RzKCk7CiAgICAgZm9y
IChhdXRvJiBjb250YWluZXIgOiBjb250YWluZXJzKSB7CiAgICAgICAgIGlmIChjb250YWluZXIt
PmlzRm9jdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zOTY0LDgzICszOTY0
LDg1IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1
c2VkQ29udGFpbmVyKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY29udGFpbmVycykgY29uc3QKK0FYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGl2
ZURlc2NlbmRhbnRPZk9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5j
ZWRCeUF0dHJpYnV0ZShjb250YWluZXJzLCBhcmlhX2FjdGl2ZWRlc2NlbmRhbnRBdHRyKTsKKyAg
ICByZXR1cm4gYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfYWN0aXZlZGVz
Y2VuZGFudEF0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDb250cm9s
c0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYXJpYUNvbnRyb2xzKSBjb25z
dAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0
eU9iamVjdDo6Y29udHJvbGxlZE9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c0Zy
b21BdHRyaWJ1dGUoYXJpYUNvbnRyb2xzLCBhcmlhX2NvbnRyb2xzQXR0cik7CisgICAgcmV0dXJu
IGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYV9jb250cm9sc0F0dHIpOwogfQogCi12b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjb250cm9sbGVycykgY29uc3QKK0FYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbnRy
b2xsZXJzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUo
Y29udHJvbGxlcnMsIGFyaWFfY29udHJvbHNBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRz
UmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfY29udHJvbHNBdHRyKTsKIH0KIAotdm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGFyaWFEZXNjcmliZWRCeSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlc2NyaWJlZEJ5T2Jq
ZWN0cygpIGNvbnN0CiB7Ci0gICAgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhRGVzY3Jp
YmVkQnksIGFyaWFfZGVzY3JpYmVkYnlBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzRnJv
bUF0dHJpYnV0ZShhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImIGRlc2NyaWJlcnMpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXNjcmlwdGlvbkZvck9i
amVjdHMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShk
ZXNjcmliZXJzLCBhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CisgICAgcmV0dXJuIGFyaWFFbGVtZW50
c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CiB9CiAKLXZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGFyaWFEZXRhaWxzKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWlsZWRCeU9iamVjdHMo
KSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYURldGFpbHMsIGFy
aWFfZGV0YWlsc0F0dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGFy
aWFfZGV0YWlsc0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXRh
aWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGRldGFp
bHNGb3IpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhaWxzRm9yT2JqZWN0cygpIGNvbnN0CiB7Ci0gICAgYXJp
YUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGRldGFpbHNGb3IsIGFyaWFfZGV0YWlsc0F0
dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoYXJpYV9k
ZXRhaWxzQXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVycm9yTWVz
c2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYXJpYUVycm9yTWVzc2Fn
ZSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmVycm9yTWVzc2FnZU9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFF
bGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYUVycm9yTWVzc2FnZSwgYXJpYV9lcnJvcm1lc3NhZ2VB
dHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhX2Vycm9ybWVz
c2FnZUF0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFcnJvck1lc3Nh
Z2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZXJyb3JN
ZXNzYWdlRm9yKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZXJyb3JNZXNzYWdlRm9yT2JqZWN0cygpIGNvbnN0CiB7
Ci0gICAgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGVycm9yTWVzc2FnZUZvciwg
YXJpYV9lcnJvcm1lc3NhZ2VBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzUmVmZXJlbmNl
ZEJ5QXR0cmlidXRlKGFyaWFfZXJyb3JtZXNzYWdlQXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6YXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgZmxvd1RvKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmxvd1RvT2JqZWN0cygpIGNvbnN0CiB7Ci0gICAgYXJp
YUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShmbG93VG8sIGFyaWFfZmxvd3RvQXR0cik7CisgICAgcmV0
dXJuIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYV9mbG93dG9BdHRyKTsKIH0KIAotdm9p
ZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGZsb3dGcm9tKSBjb25zdAorQVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmxvd0Zyb21P
YmplY3RzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUo
Zmxvd0Zyb20sIGFyaWFfZmxvd3RvQXR0cik7CisgICAgcmV0dXJuIGFyaWFFbGVtZW50c1JlZmVy
ZW5jZWRCeUF0dHJpYnV0ZShhcmlhX2Zsb3d0b0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFyaWFMYWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBhcmlhTGFiZWxsZWRCeSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxhYmVsbGVkQnlPYmplY3RzKCkgY29u
c3QKIHsKLSAgICBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGFyaWFMYWJlbGxlZEJ5LCBhcmlh
X2xhYmVsbGVkYnlBdHRyKTsKLSAgICBpZiAoIWFyaWFMYWJlbGxlZEJ5LnNpemUoKSkKLSAgICAg
ICAgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhTGFiZWxsZWRCeSwgYXJpYV9sYWJlbGVk
YnlBdHRyKTsKKyAgICBhdXRvIGxhYmVsbGVkQnlPYmplY3RzID0gYXJpYUVsZW1lbnRzRnJvbUF0
dHJpYnV0ZShhcmlhX2xhYmVsbGVkYnlBdHRyKTsKKyAgICBpZiAobGFiZWxsZWRCeU9iamVjdHMu
aXNFbXB0eSgpKQorICAgICAgICBsYWJlbGxlZEJ5T2JqZWN0cyA9IGFyaWFFbGVtZW50c0Zyb21B
dHRyaWJ1dGUoYXJpYV9sYWJlbGVkYnlBdHRyKTsKKyAgICByZXR1cm4gbGFiZWxsZWRCeU9iamVj
dHM7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxhYmVsbGVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgbGFiZWxzKSBjb25zdAor
QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9i
amVjdDo6bGFiZWxGb3JPYmplY3RzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNSZWZlcmVu
Y2VkQnlBdHRyaWJ1dGUobGFiZWxzLCBhcmlhX2xhYmVsbGVkYnlBdHRyKTsKLSAgICBpZiAoIWxh
YmVscy5zaXplKCkpCi0gICAgICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShs
YWJlbHMsIGFyaWFfbGFiZWxlZGJ5QXR0cik7CisgICAgYXV0byBvYmplY3RzID0gYXJpYUVsZW1l
bnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfbGFiZWxsZWRieUF0dHIpOworICAgIGlmIChv
YmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgb2JqZWN0cyA9IGFyaWFFbGVtZW50c1JlZmVyZW5j
ZWRCeUF0dHJpYnV0ZShhcmlhX2xhYmVsZWRieUF0dHIpOworICAgIHJldHVybiBvYmplY3RzOwog
fQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiBheE9iamVjdHMpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpvd25lZE9iamVjdHMo
KSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXhPYmplY3RzLCBhcmlh
X293bnNBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhX293
bnNBdHRyKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhT3duc1JlZmVyZW5j
aW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBvd25lcnMpIGNvbnN0CitB
WENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpvd25lcnMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJp
YnV0ZShvd25lcnMsIGFyaWFfb3duc0F0dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNSZWZl
cmVuY2VkQnlBdHRyaWJ1dGUoYXJpYV9vd25zQXR0cik7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBWENvcmVPYmplY3Qq
IGNoaWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAppbmRleCA0NmZlZDc2ZTRmYmY2YWE2OWYxMDc4YjZkNzk2Yjk3MmJjNjJhOWI3
Li4wNGM5MWI0NTQxZjc1YzA5ZjM5NDMwODdlMWE4OGFmNWQ4ZWNhM2NkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMzAx
LDIxICszMDEsMjIgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNBUklBUm9sZURlc2NyaXB0
aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENv
bnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRS
ZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlh
TGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYU93
bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2b2lkIGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBhY3RpdmVEZXNjZW5kYW50T2ZPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZWRPYmplY3RzKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZXJzKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRlc2NyaWJlZEJ5T2Jq
ZWN0cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBk
ZXNjcmlwdGlvbkZvck9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgZGV0YWlsZWRCeU9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGV0YWlsc0Zvck9iamVjdHMoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZXJyb3JNZXNzYWdlT2JqZWN0
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJv
ck1lc3NhZ2VGb3JPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGZsb3dUb09iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgZmxvd0Zyb21PYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsbGVkQnlPYmplY3RzKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsRm9yT2JqZWN0
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBvd25l
ZE9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3Igb3duZXJzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGhhc1BvcHVwKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBTdHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtODExLDggKzgxMiw4IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBi
b29sIGlzQVJJQUlucHV0KEFjY2Vzc2liaWxpdHlSb2xlKTsKIAotICAgIHZvaWQgYXJpYUVsZW1l
bnRzRnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImLCBjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRy
aWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRWxlbWVudHNGcm9t
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29u
dGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByYWRp
b0dyb3VwQW5jZXN0b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggMjYxNDkz
YTdjMzAwOGEyMTA4OGJlYmYxOGIxNjIwY2JjNTlmZTkzMi4uY2E4ODY5MWRlMWVhZGMyZmNiODhh
MWVjN2I1ZDBjMjk4OTY1NjcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTEwNDgsMjEg
KzEwNDgsMjMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQU93bnMo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNl
ZENvbnRhaW5lcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYUFjdGl2ZURlc2Nl
bmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcmlh
RGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFy
aWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYU93bnNFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7CisKKyAgICAvLyBSZXRyaWV2YWwgb2YgcmVsYXRlZCBvYmplY3RzLgorICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFjdGl2ZURlc2NlbmRhbnRPZk9i
amVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgY29udHJvbGxlZE9iamVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgY29udHJvbGxlcnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGVzY3JpYmVkQnlPYmplY3RzKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRlc2NyaXB0aW9uRm9y
T2JqZWN0cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBkZXRhaWxlZEJ5T2JqZWN0cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxzRm9yT2JqZWN0cygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJvck1lc3NhZ2VPYmplY3RzKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGVycm9y
TWVzc2FnZUZvck9iamVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgZmxvd1RvT2JqZWN0cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBmbG93RnJvbU9iamVjdHMoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGFiZWxsZWRCeU9iamVjdHMo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGFi
ZWxGb3JPYmplY3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIG93bmVkT2JqZWN0cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBvd25lcnMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaGFzUG9wdXAoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcG9wdXBWYWx1ZSgp
IGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDA0MDRjYjc0MTQ1ZGEwYjI1MWZk
MGVmY2FjMjQ3NzRjZDYxNDk4MzIuLjU2ODkwMDMwYjU3ZmFmYzMzNjRmNGY3MjRmNmFmZDA2YjRh
OGEzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTA3NiwxMiArMTA3NiwxMiBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBNZW1iZXJzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlbgogICAgICAgICB9CiAgICAgfQogfQotICAgIAorCiAvLyBsaW5r
ZWQgdWkgZWxlbWVudHMgY291bGQgYmUgYWxsIHRoZSByZWxhdGVkIHJhZGlvIGJ1dHRvbnMgaW4g
YSBncm91cAogLy8gb3IgYW4gaW50ZXJuYWwgYW5jaG9yIGNvbm5lY3Rpb24KIHZvaWQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bGlua2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0CiB7Ci0gICAgYXJpYUZsb3dUb0VsZW1l
bnRzKGxpbmtlZFVJRWxlbWVudHMpOworICAgIGxpbmtlZFVJRWxlbWVudHMgPSBmbG93VG9PYmpl
Y3RzKCk7CiAKICAgICBpZiAoaXNMaW5rKCkpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogbGlua2VkQVhFbGVtZW50ID0gaW50ZXJuYWxMaW5rRWxlbWVudCgpOwpAQCAtMjcxNSwxMSAr
MjcxNSwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY3RpdmVEZXNjZW5kYW50KCkgY29uc3QKIAogUmVuZGVyT2JqZWN0KiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojp0YXJnZXRFbGVtZW50Rm9yQWN0aXZlRGVzY2VuZGFudChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNj
ZW5kYW50KSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBlbGVtZW50czsKLSAgICBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGVs
ZW1lbnRzLCBhdHRyaWJ1dGVOYW1lKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBl
bGVtZW50cykgewotICAgICAgICBpZiAoYWN0aXZlRGVzY2VuZGFudC0+aXNEZXNjZW5kYW50T2ZP
YmplY3QoZWxlbWVudC5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVudC0+cmVuZGVy
ZXIoKTsKKyAgICBhdXRvIG9iamVjdHMgPSBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpOworICAgIGZvciAoY29uc3QgYXV0byYgb2JqZWN0IDogb2JqZWN0cykgeworICAg
ICAgICBpZiAoYWN0aXZlRGVzY2VuZGFudC0+aXNEZXNjZW5kYW50T2ZPYmplY3Qob2JqZWN0Lmdl
dCgpKSkKKyAgICAgICAgICAgIHJldHVybiBvYmplY3QtPnJlbmRlcmVyKCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAppbmRleCA2MjNhNjAyOGU0MmU1NGJhZWMz
MDYzMWM3NDkzNzRmMzI4ZTg3MDYxLi5jOTE5NGYyYmVlMmIwMjgzOTI4YzcyNGM5ZTVmNmRiYWY2
YTdmMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKQEAgLTIzNiwxNiArMjM2LDE1IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbDo6c3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGlzVGFibGVIZWFkZXJDZWxsKCkgJiYgaGFzQXR0cmlidXRlKGFiYnJBdHRyKTsK
IH0KLSAgICAKKwogQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSGVhZGVycygpCiB7Ci0gICAgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGhlYWRlcnM7Ci0gICAgQWNjZXNzaWJpbGl0eVRhYmxlKiBwYXJlbnQg
PSBwYXJlbnRUYWJsZSgpOworICAgIGF1dG8qIHBhcmVudCA9IHBhcmVudFRhYmxlKCk7CiAgICAg
aWYgKCFwYXJlbnQpCi0gICAgICAgIHJldHVybiBoZWFkZXJzOworICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgLy8gQ2hvb3NlIGNvbHVtbkhlYWRlcnMgYXMgdGhlIHBsYWNlIHdoZXJlIHRoZSAi
aGVhZGVycyIgYXR0cmlidXRlIGlzIHJlcG9ydGVkLgotICAgIGFyaWFFbGVtZW50c0Zyb21BdHRy
aWJ1dGUoaGVhZGVycywgaGVhZGVyc0F0dHIpOworICAgIGF1dG8gaGVhZGVycyA9IGFyaWFFbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoaGVhZGVyc0F0dHIpOwogICAgIC8vIElmIHRoZSBoZWFkZXJzIGF0
dHJpYnV0ZSByZXR1cm5lZCB2YWxpZCB2YWx1ZXMsIHRoZW4gZG8gbm90IGZ1cnRoZXIgc2VhcmNo
IGZvciBjb2x1bW4gaGVhZGVycy4KICAgICBpZiAoIWhlYWRlcnMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gaGVhZGVyczsKQEAgLTI2OCw3ICsyNjcsNyBAQCBBWENvcmVPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5IZWFk
ZXJzKAogCiAgICAgcmV0dXJuIGhlYWRlcnM7CiB9Ci0gICAgCisKIEFYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0hlYWRl
cnMoKQogewogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBoZWFkZXJzOwpAQCAtMjk2
LDExICsyOTUsOSBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dIZWFkZXJzKCkKIAogQWNjZXNzaWJpbGl0eVRhYmxl
Um93KiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjphcmlhT3duZWRCeVBhcmVudCgpIGNvbnN0CiB7
Ci0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFPd25lZEJ5OwotICAgIGFyaWFP
d25zUmVmZXJlbmNpbmdFbGVtZW50cyhhcmlhT3duZWRCeSk7Ci0gICAgaWYgKGFyaWFPd25lZEJ5
LnNpemUoKSA9PSAxICYmIGFyaWFPd25lZEJ5WzBdLT5pc1RhYmxlUm93KCkpCi0gICAgICAgIHJl
dHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KGFyaWFPd25lZEJ5WzBdLmdldCgp
KTsKLQorICAgIGF1dG8gb3duZXJzID0gdGhpcy0+b3duZXJzKCk7CisgICAgaWYgKG93bmVycy5z
aXplKCkgPT0gMSAmJiBvd25lcnNbMF0tPmlzVGFibGVSb3coKSkKKyAgICAgICAgcmV0dXJuIGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ob3duZXJzWzBdLmdldCgpKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCmluZGV4IDFkZjk4YzhkNjE5Y2RlMGY4MzMxZGFm
NThlYWZhZWJmOWRjZTZkNGEuLjA4N2RkZTAyNTQ0YWMyODFhZDczY2E2ZDhjM2M4ZDYwN2FmY2Qw
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZVJvdy5jcHAKQEAgLTE0NiwxOSArMTQ2LDE4IEBAIEFYQ29yZU9iamVjdCogQWNj
ZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogICAgIAogICAgIHJldHVybiBjZWxs
OwogfQotICAgIAorCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YWRkQ2hpbGRyZW4oKQog
ewogICAgIC8vIElmIHRoZSBlbGVtZW50IHNwZWNpZmllcyBpdHMgY2VsbHMgdGhyb3VnaCBhcmlh
LW93bnMsIHJldHVybiB0aGF0IGZpcnN0LgotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBhcmlhT3duZWRFbGVtZW50czsKLSAgICBhcmlhT3duc0VsZW1lbnRzKGFyaWFPd25lZEVsZW1l
bnRzKTsKLSAgICBpZiAoYXJpYU93bmVkRWxlbWVudHMuc2l6ZSgpKSB7Ci0gICAgICAgIGZvciAo
YXV0byYgYXJpYU93bmVkRWxlbWVudCA6IGFyaWFPd25lZEVsZW1lbnRzKQotICAgICAgICAgICAg
YWRkQ2hpbGQoYXJpYU93bmVkRWxlbWVudC5nZXQoKSwgRGVzY2VuZElmSWdub3JlZDo6Tm8pOwor
ICAgIGF1dG8gb3duZWRPYmplY3RzID0gdGhpcy0+b3duZWRPYmplY3RzKCk7CisgICAgaWYgKG93
bmVkT2JqZWN0cy5zaXplKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBvd25lZE9i
amVjdHMpCisgICAgICAgICAgICBhZGRDaGlsZChvYmplY3QuZ2V0KCksIERlc2NlbmRJZklnbm9y
ZWQ6Ok5vKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphZGRDaGlsZHJlbigpOwotICAgIAorCiAgICAgLy8gIkFSSUEgMS4xLCBJZiB0aGUgc2V0
IG9mIGNvbHVtbnMgd2hpY2ggaXMgcHJlc2VudCBpbiB0aGUgRE9NIGlzIGNvbnRpZ3VvdXMsIGFu
ZCBpZiB0aGVyZSBhcmUgbm8gY2VsbHMgd2hpY2ggc3BhbiBtb3JlIHRoYW4gb25lIHJvdyBvcgog
ICAgIC8vIGNvbHVtbiBpbiB0aGF0IHNldCwgdGhlbiBhdXRob3JzIG1heSBwbGFjZSBhcmlhLWNv
bGluZGV4IG9uIGVhY2ggcm93LCBzZXR0aW5nIHRoZSB2YWx1ZSB0byB0aGUgaW5kZXggb2YgdGhl
IGZpcnN0IGNvbHVtbiBvZiB0aGUgc2V0LiIKICAgICAvLyBVcGRhdGUgY2hpbGQgY2VsbHMnIGF4
Q29sSW5kZXggaWYgdGhlcmUncyBhbiBhcmlhLWNvbGluZGV4IHZhbHVlIHNldCBmb3IgdGhlIHJv
dy4gU28gdGhlIGNlbGwgZG9lc24ndCBoYXZlIHRvIGdvIHRocm91Z2ggdGhlIHNpYmxpbmdzCkBA
IC0xNjYsNyArMTY1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmFkZENoaWxkcmVu
KCkKICAgICBpbnQgY29sSW5kZXggPSBheENvbHVtbkluZGV4KCk7CiAgICAgaWYgKGNvbEluZGV4
ID09IC0xKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBjZWxsIDogY2hpbGRyZW4oKSkgewogICAgICAgICBpZiAo
aXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmNlbGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGkuY3BwCmluZGV4IGRhOTJmZDQxM2YxMDc3YzcxMjkwZTEzYTNlNTQ4NjIwYmU3Yzg5NjcuLjZh
YmI1M2NjNzhhZWI5MzljYmNkOTViYWQ5MmU4Njc2MWNhNWQyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaS5jcHAKQEAgLTEwNjgsNjAgKzEwNjgsNDggQEAgSGFzaE1hcDx1aW50MzJfdCwg
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk+Pj4gQWNjZXNzaWJpbGl0eU9i
amVjdEEKICAgICAgICAgbV9jb3JlT2JqZWN0LT5hcmlhTGFiZWxsZWRCeUVsZW1lbnRzKGFyaWFM
YWJlbGxlZEJ5RWxlbWVudHMpOwogICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpMYWJlbGxlZEJ5LCBh
cmlhTGFiZWxsZWRCeUVsZW1lbnRzKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHM7
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxh
YmVsRm9yT2JqZWN0czsKICAgICBpZiAoYXV0byogY29udHJvbCA9IG1fY29yZU9iamVjdC0+Y29y
cmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSkKLSAgICAgICAgYXJpYUxhYmVsbGVk
QnlSZWZlcmVuY2luZ0VsZW1lbnRzLmFwcGVuZChjb250cm9sKTsKKyAgICAgICAgbGFiZWxGb3JP
YmplY3RzLmFwcGVuZChjb250cm9sKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29yZU9iamVjdC0+
YXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNp
bmdFbGVtZW50cyk7Ci0gICAgYWRkUmVsYXRpb24oQXRzcGk6OkxhYmVsRm9yLCBhcmlhTGFiZWxs
ZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMpOworICAgICAgICBsYWJlbEZvck9iamVjdHMgPSBtX2Nv
cmVPYmplY3QtPmxhYmVsRm9yKCk7CisgICAgYWRkUmVsYXRpb24oQXRzcGk6OkxhYmVsRm9yLCBs
YWJlbEZvck9iamVjdHMpOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGFyaWFGbG93VG9FbGVtZW50czsKICAgICBtX2NvcmVPYmplY3QtPmFy
aWFGbG93VG9FbGVtZW50cyhhcmlhRmxvd1RvRWxlbWVudHMpOwogICAgIGFkZFJlbGF0aW9uKEF0
c3BpOjpGbG93c1RvLCBhcmlhRmxvd1RvRWxlbWVudHMpOwogCi0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFGbG93VG9SZWZlcmVuY2luZ0Vs
ZW1lbnRzOwotICAgIG1fY29yZU9iamVjdC0+YXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMo
YXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMpOwotICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpG
bG93c0Zyb20sIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKTsKKyAgICBhZGRSZWxhdGlv
bihBdHNwaTo6Rmxvd3NGcm9tLCBtX2NvcmVPYmplY3QtPmZsb3dzRnJvbSgpKTsKIAogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRGVzY3Jp
YmVkQnlFbGVtZW50czsKICAgICBtX2NvcmVPYmplY3QtPmFyaWFEZXNjcmliZWRCeUVsZW1lbnRz
KGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKTsKICAgICBhZGRSZWxhdGlvbihBdHNwaTo6RGVzY3Jp
YmVkQnksIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2lu
Z0VsZW1lbnRzOwotICAgIG1fY29yZU9iamVjdC0+YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdF
bGVtZW50cyhhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKTsKLSAgICBhZGRSZWxh
dGlvbihBdHNwaTo6RGVzY3JpcHRpb25Gb3IsIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxl
bWVudHMpOworICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpEZXNjcmlwdGlvbkZvciwgbV9jb3JlT2Jq
ZWN0LT5kZXNjcmlwdGlvbkZvcigpKTsKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhQ29udHJvbHNFbGVtZW50czsKICAgICBtX2NvcmVP
YmplY3QtPmFyaWFDb250cm9sc0VsZW1lbnRzKGFyaWFDb250cm9sc0VsZW1lbnRzKTsKICAgICBh
ZGRSZWxhdGlvbihBdHNwaTo6Q29udHJvbGxlckZvciwgYXJpYUNvbnRyb2xzRWxlbWVudHMpOwog
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFy
aWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHM7Ci0gICAgbV9jb3JlT2JqZWN0LT5hcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMp
OwotICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpDb250cm9sbGVkQnksIGFyaWFDb250cm9sc1JlZmVy
ZW5jaW5nRWxlbWVudHMpOworICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpDb250cm9sbGVkQnksIG1f
Y29yZU9iamVjdC0+Y29udHJvbGxlcnMoKSk7CiAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnNFbGVtZW50czsKICAgICBtX2NvcmVP
YmplY3QtPmFyaWFPd25zRWxlbWVudHMoYXJpYU93bnNFbGVtZW50cyk7CiAgICAgYWRkUmVsYXRp
b24oQXRzcGk6Ok5vZGVQYXJlbnRPZiwgYXJpYU93bnNFbGVtZW50cyk7CiAKLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnNSZWZlcmVu
Y2luZ0VsZW1lbnRzOwotICAgIG1fY29yZU9iamVjdC0+YXJpYU93bnNSZWZlcmVuY2luZ0VsZW1l
bnRzKGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyk7Ci0gICAgYWRkUmVsYXRpb24oQXRzcGk6
Ok5vZGVDaGlsZE9mLCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMpOworICAgIGFkZFJlbGF0
aW9uKEF0c3BpOjpOb2RlQ2hpbGRPZiwgbV9jb3JlT2JqZWN0LT5vd25lcnMoKSk7CiAKICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYURldGFp
bHNFbGVtZW50czsKICAgICBtX2NvcmVPYmplY3QtPmFyaWFEZXRhaWxzRWxlbWVudHMoYXJpYURl
dGFpbHNFbGVtZW50cyk7CiAgICAgYWRkUmVsYXRpb24oQXRzcGk6OkRldGFpbHMsIGFyaWFEZXRh
aWxzRWxlbWVudHMpOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50czsKLSAgICBtX2NvcmVP
YmplY3QtPmFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhhcmlhRGV0YWlsc1JlZmVyZW5j
aW5nRWxlbWVudHMpOwotICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpEZXRhaWxzRm9yLCBhcmlhRGV0
YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMpOworICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpEZXRhaWxz
Rm9yLCBtX2NvcmVPYmplY3QtPmRldGFpbHNGb3IoKSk7CiAKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRz
OwogICAgIG1fY29yZU9iamVjdC0+YXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKGFyaWFFcnJvck1l
c3NhZ2VFbGVtZW50cyk7CiAgICAgYWRkUmVsYXRpb24oQXRzcGk6OkVycm9yTWVzc2FnZSwgYXJp
YUVycm9yTWVzc2FnZUVsZW1lbnRzKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50
czsKLSAgICBtX2NvcmVPYmplY3QtPmFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRz
KGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKTsKLSAgICBhZGRSZWxhdGlvbihB
dHNwaTo6RXJyb3JGb3IsIGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKTsKKyAg
ICBhZGRSZWxhdGlvbihBdHNwaTo6RXJyb3JGb3IsIG1fY29yZU9iamVjdC0+ZXJyb3JNZXNzYWdl
Rm9yKCkpOwogCiAgICAgcmV0dXJuIG1hcDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAK
aW5kZXggNmQ5NDQwZDNmYmI2MDBlOTE5MzZlOWU0MWIyNTMwNWNjMGNhZjU5OC4uOTMyYmU3N2Ez
ZTFiYmQ5ZTE0OWQ3NTkyZTUyNWU1MjRkMzlkM2U1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5jcHAKQEAgLTMzMywyNSArMzMzLDEyIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoQVhDb3JlT2JqZWN0JiBjb3JlT2JqZWN0LCBJc1Jvb3QgaXNSCiAgICAg
b2JqZWN0LmxpbmtlZFVJRWxlbWVudHMobGlua2VkVUlFbGVtZW50cyk7CiAgICAgc2V0T2JqZWN0
VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkxpbmtlZFVJRWxlbWVudHMsIGxpbmtlZFVJ
RWxlbWVudHMpOwogCi0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFDb250cm9s
c0VsZW1lbnRzOwotICAgIG9iamVjdC5hcmlhQ29udHJvbHNFbGVtZW50cyhhcmlhQ29udHJvbHNF
bGVtZW50cyk7Ci0gICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFS
SUFDb250cm9sc0VsZW1lbnRzLCBhcmlhQ29udHJvbHNFbGVtZW50cyk7Ci0KLSAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYURldGFpbHNFbGVtZW50czsKLSAgICBvYmplY3QuYXJp
YURldGFpbHNFbGVtZW50cyhhcmlhRGV0YWlsc0VsZW1lbnRzKTsKLSAgICBzZXRPYmplY3RWZWN0
b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQURldGFpbHNFbGVtZW50cywgYXJpYURldGFp
bHNFbGVtZW50cyk7Ci0KLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUVycm9y
TWVzc2FnZUVsZW1lbnRzOwotICAgIG9iamVjdC5hcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoYXJp
YUVycm9yTWVzc2FnZUVsZW1lbnRzKTsKLSAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6QVJJQUVycm9yTWVzc2FnZUVsZW1lbnRzLCBhcmlhRXJyb3JNZXNzYWdlRWxl
bWVudHMpOwotCi0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFGbG93VG9FbGVt
ZW50czsKLSAgICBvYmplY3QuYXJpYUZsb3dUb0VsZW1lbnRzKGFyaWFGbG93VG9FbGVtZW50cyk7
Ci0gICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFGbG93VG9F
bGVtZW50cywgYXJpYUZsb3dUb0VsZW1lbnRzKTsKLQotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBhcmlhT3duc0VsZW1lbnRzOwotICAgIG9iamVjdC5hcmlhT3duc0VsZW1lbnRzKGFy
aWFPd25zRWxlbWVudHMpOwotICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpBUklBT3duc0VsZW1lbnRzLCBhcmlhT3duc0VsZW1lbnRzKTsKKyAgICAvLyBSZWxhdGlv
bnMuCisgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbnRyb2xs
ZWRPYmplY3RzLCBvYmplY3QuY29udHJvbGxlZE9iamVjdHMoKSk7CisgICAgc2V0T2JqZWN0VmVj
dG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkRldGFpbGVkQnlPYmplY3RzLCBvYmplY3QuZGV0
YWlsZWRCeU9iamVjdHMoKSk7CisgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OkVycm9yTWVzc2FnZU9iamVjdHMsIG9iamVjdC5lcnJvck1lc3NhZ2VPYmplY3RzKCkp
OworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpGbG93VG9PYmpl
Y3RzLCBvYmplY3QuZmxvd1RvT2JqZWN0cygpKTsKKyAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6T3duZWRPYmplY3RzLCBvYmplY3Qub3duZWRPYmplY3RzKCkpOwog
CiAgICAgLy8gU3BpbiBidXR0b24gc3VwcG9ydC4KICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6RGVjcmVtZW50QnV0dG9uLCBvYmplY3QuZGVjcmVtZW50QnV0dG9uKCkpOwpA
QCAtMTg3NCw1NCArMTg2MSw2NCBAQCBBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OnNl
bGVjdGVkTGlzdEl0ZW0oKQogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEFYSXNvbGF0
ZWRPYmplY3Q6OmFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRlZE9iamVjdDo6YWN0aXZlRGVzY2VuZGFudE9mT2JqZWN0
cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsK
IH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0Ojpjb250cm9sbGVycygp
IGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKIH0K
IAotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRlZE9iamVjdDo6ZGVzY3JpYmVkQnlPYmplY3RzKCkgY29u
c3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCi12
b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmRlc2NyaXB0aW9uRm9yT2Jq
ZWN0cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsg
fTsKIH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxl
bWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QKK0FYQ29yZU9iamVjdDo6
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmRldGFpbHNGb3JP
YmplY3RzKCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
eyB9OwogfQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFFcnJvck1lc3NhZ2VSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENvcmVP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0OjplcnJv
ck1lc3NhZ2VGb3JPYmplY3RzKCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFGbG93VG9S
ZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitB
WENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0
OjpmbG93RnJvbU9iamVjdHMoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYUxhYmVsbGVk
QnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAorQVhDb3JlT2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRlZE9iamVjdDo6bGFiZWxs
ZWRCeU9iamVjdHMoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiB7IH07CiB9CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYUxhYmVsbGVkQnlSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENv
cmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0Ojps
YWJlbEZvck9iamVjdHMoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiB7IH07CiB9CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYU93bnNSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENvcmVP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0Ojpvd25l
cnMoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07
CiB9CiAKIGJvb2wgQVhJc29sYXRlZE9iamVjdDo6aGFzRGF0YWxpc3QoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5oCmluZGV4IGRlYjE0YjY1NzFmZjkwZmU0YWIwMjAyYTg5NDkwNDY0NTE4
ZWVlMjYuLmM1ODk2NTA0NDVjMjY3Mzk4NjllYjYwZjM4NDA4ZmQ5M2ZiOWE3MjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmgKQEAgLTIzMCwxMSArMjMwLDYgQEAgcHJpdmF0ZToKICAgICBkb3Vi
bGUgbG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5sb2Fk
aW5nUHJvZ3Jlc3MoKTsgfQogICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNB
UklBT3ducyk7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5l
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6SXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKTsgfQotICAgIHZvaWQg
YXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJl
bikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6QVJJQUNvbnRyb2xzRWxlbWVudHMsIGNoaWxkcmVuKTsgfQotICAgIHZvaWQgYXJp
YURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBj
b25zdCBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpBUklBRGV0YWlsc0VsZW1lbnRzLCBjaGlsZHJlbik7IH0KLSAgICB2b2lkIGFyaWFFcnJv
ck1lc3NhZ2VFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBj
b25zdCBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpBUklBRXJyb3JNZXNzYWdlRWxlbWVudHMsIGNoaWxkcmVuKTsgfQotICAgIHZvaWQgYXJp
YUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNv
bnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OkFSSUFGbG93VG9FbGVtZW50cywgY2hpbGRyZW4pOyB9Ci0gICAgdm9pZCBhcmlhT3duc0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJy
aWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFP
d25zRWxlbWVudHMsIGNoaWxkcmVuKTsgfQogICAgIGJvb2wgaGFzUG9wdXAoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhhc1BvcHVw
KTsgfQogICAgIFN0cmluZyBwb3B1cFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3Ry
aW5nQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlBvcHVwVmFsdWUpOyB9CiAgICAgYm9v
bCBwcmVzc2VkSXNQcmVzZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpQcmVzc2VkSXNQcmVzZW50KTsgfQpAQCAtNTQ1LDE2ICs1
NDAsMjMgQEAgcHJpdmF0ZToKICAgICBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1
bHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBmbG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIEFYQ29yZU9iamVjdCogc2VsZWN0ZWRMaXN0SXRlbSgpIG92ZXJyaWRl
OwotICAgIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUNv
bnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYURlc2Ny
aWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFy
aWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxl
bWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZv
aWQgYXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFj
dGl2ZURlc2NlbmRhbnRPZk9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgY29udHJvbGxlZE9iamVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQ
cm9wZXJ0eU5hbWU6OkNvbnRyb2xsZWRPYmplY3RzKSk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgY29udHJvbGxlcnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgZGVzY3JpYmVkQnlPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRlc2NyaXB0aW9uRm9yT2JqZWN0cygpIGNv
bnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxlZEJ5
T2JqZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2
ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6RGV0YWlsZWRCeU9iamVj
dHMpKTsgfQorICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxzRm9yT2JqZWN0
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJv
ck1lc3NhZ2VPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5vYmplY3Rz
Rm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpFcnJvck1l
c3NhZ2VPYmplY3RzKSk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZXJyb3JN
ZXNzYWdlRm9yT2JqZWN0cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBmbG93VG9PYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgp
LT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1l
OjpGbG93VG9PYmplY3RzKSk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZmxv
d0Zyb21PYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIGxhYmVsbGVkQnlPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsRm9yT2JqZWN0cygpIGNvbnN0IG92ZXJyaWRlOworICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBvd25lZE9iamVjdHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJ
RD4oQVhQcm9wZXJ0eU5hbWU6Ok93bmVkT2JqZWN0cykpOyB9CisgICAgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIG93bmVycygpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgYm9vbCBoYXNEYXRh
bGlzdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNIYXNQb3B1cCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQcmVzc2VkKCkgY29uc3Qgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaAppbmRleCA3YWMwMGYyNzg4ZWI3ZWM0NDJmNjU0ZWUzMDUwMzNjN2Uz
MTVjOGU0Li42MmRmM2FlOGNmNDdmOWUxNWI2YjNjMjllNDYwOWFhZTQ5NzkxYWJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmgKQEAgLTQ5LDE3ICs0OSwxMSBAQCBlbnVtIGNsYXNzIEFYU3RyZWFtT3B0
aW9ucyA6IHVpbnQ4X3Q7CiB1c2luZyBBWElzb2xhdGVkVHJlZUlEID0gdW5zaWduZWQ7CiAKIGVu
dW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7Ci0gICAgQVJJQUNvbnRyb2xzRWxl
bWVudHMsCi0gICAgQVJJQURldGFpbHNFbGVtZW50cywKLSAgICBEcm9wRWZmZWN0cywKLSAgICBB
UklBRXJyb3JNZXNzYWdlRWxlbWVudHMsCiAgICAgQVJJQUlzTXVsdGlsaW5lLAotICAgIEFSSUFG
bG93VG9FbGVtZW50cywKICAgICBBUklBTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24sCiAgICAgQVJJ
QVRyZWVJdGVtQ29udGVudCwKICAgICBBUklBVHJlZVJvd3MsCiAgICAgQVJJQVJvbGVBdHRyaWJ1
dGUsCi0gICAgQVJJQU93bnNFbGVtZW50cywKICAgICBBWENvbHVtbkNvdW50LAogICAgIEFYQ29s
dW1uSW5kZXgsCiAgICAgQVhSb3dDb3VudCwKQEAgLTk4LDIwICs5MiwyNSBAQCBlbnVtIGNsYXNz
IEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIENvbHVtbkluZGV4UmFuZ2UsCiAgICAg
Q29tcHV0ZWRSb2xlU3RyaW5nLAogICAgIENvbnRlbnRzLAorICAgIENvbnRyb2xsZWRPYmplY3Rz
LAogICAgIEN1cnJlbnRTdGF0ZSwKICAgICBDdXJyZW50VmFsdWUsCiAgICAgRGF0ZXRpbWVBdHRy
aWJ1dGVWYWx1ZSwKICAgICBEZWNyZW1lbnRCdXR0b24sCiAgICAgRGVzY3JpcHRpb24sCisgICAg
RGV0YWlsZWRCeU9iamVjdHMsCiAgICAgRGlzY2xvc2VkQnlSb3csCiAgICAgRGlzY2xvc2VkUm93
cywKICAgICBEb2N1bWVudEVuY29kaW5nLAogICAgIERvY3VtZW50TGlua3MsCiAgICAgRG9jdW1l
bnRVUkksCisgICAgRHJvcEVmZmVjdHMsCiAgICAgRWRpdGFibGVBbmNlc3RvciwKICAgICBFbWJl
ZGRlZEltYWdlRGVzY3JpcHRpb24sCisgICAgRXJyb3JNZXNzYWdlT2JqZWN0cywKICAgICBFeHBh
bmRlZFRleHRWYWx1ZSwKICAgICBGaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVlSW5UaXRsZSwK
KyAgICBGbG93VG9PYmplY3RzLAogICAgIEZvY3VzYWJsZUFuY2VzdG9yLAogICAgIEhhc0FSSUFW
YWx1ZU5vdywKICAgICBIYXNBcHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUsCkBAIC0yNTEsNiAr
MjUwLDcgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBNYXhW
YWx1ZUZvclJhbmdlLAogICAgIE1pblZhbHVlRm9yUmFuZ2UsCiAgICAgTmFtZUF0dHJpYnV0ZSwK
KyAgICBPd25lZE9iamVjdHMsCiAgICAgT3JpZW50YXRpb24sCiAgICAgT3V0ZXJIVE1MLAogICAg
IFBhdGgsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDgxOWZk
MTQzYTBkNDBlZjJhM2MwOWFjOTA3ZDg1MDBiMmUyZWQyMjYuLjA0ODNkYzc0YzMyNWEzZmM2ODg5
MjVkNjEyNzg1YTQxZGZkYzIzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCkBAIC0yNDY2LDExICsyNDY2LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3Qt
PmludmFsaWRTdGF0dXMoKTsKIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5T3duc0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFPd25zOwotICAgICAgICBi
YWNraW5nT2JqZWN0LT5hcmlhT3duc0VsZW1lbnRzKGFyaWFPd25zKTsKLSAgICAgICAgcmV0dXJu
IG1ha2VOU0FycmF5KGFyaWFPd25zKTsKLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlXSkKKyAgICAgICAgcmV0
dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPm93bmVkT2JqZWN0cygpKTsKIAogICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQVBvc0lu
U2V0QXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+cG9zSW5TZXQo
KSk7CkBAIC0yNjI2LDExICsyNjIzLDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYSXNJbkNl
bGwiXSkKICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5nT2Jq
ZWN0LT5pc0luQ2VsbCgpXTsKIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6QCJBWERldGFpbHNFbGVtZW50cyJdKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxzOwotICAgICAgICBiYWNraW5nT2Jq
ZWN0LT5hcmlhRGV0YWlsc0VsZW1lbnRzKGRldGFpbHMpOwotICAgICAgICByZXR1cm4gbWFrZU5T
QXJyYXkoZGV0YWlscyk7Ci0gICAgfQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6QCJBWERldGFpbHNFbGVtZW50cyJdKQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXko
YmFja2luZ09iamVjdC0+ZGV0YWlsZWRCeU9iamVjdHMoKSk7CiAKICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJyYWlsbGVMYWJlbEF0dHJpYnV0
ZV0pCiAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT5icmFpbGxlTGFiZWwoKTsKQEAgLTI2
NDEsMTEgKzI2MzUsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJlbGF0
aXZlRnJhbWVBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmVj
dDooTlNSZWN0KWJhY2tpbmdPYmplY3QtPnJlbGF0aXZlRnJhbWUoKV07CiAKLSAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhFcnJvck1lc3NhZ2VFbGVtZW50cyJdKSB7
Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBlcnJvck1lc3NhZ2VzOwotICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhRXJyb3JNZXNzYWdl
RWxlbWVudHMoZXJyb3JNZXNzYWdlcyk7Ci0gICAgICAgIHJldHVybiBtYWtlTlNBcnJheShlcnJv
ck1lc3NhZ2VzKTsKLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpAIkFYRXJyb3JNZXNzYWdlRWxlbWVudHMiXSkKKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5
KGJhY2tpbmdPYmplY3QtPmVycm9yTWVzc2FnZU9iamVjdHMoKSk7CiAKICAgICAvLyBNdWx0aS1z
ZWxlY3RhYmxlCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlJc011bHRpU2VsZWN0YWJsZUF0dHJpYnV0ZV0pCkBAIC0yNjU5LDExICsyNjUwLDgg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiBi
YWNraW5nT2JqZWN0LT5kb2N1bWVudEVuY29kaW5nKCk7CiAKICAgICAvLyBBcmlhIGNvbnRyb2xz
IGVsZW1lbnQKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eUFyaWFDb250cm9sc0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFDb250cm9sczsKLSAgICAgICAg
YmFja2luZ09iamVjdC0+YXJpYUNvbnRyb2xzRWxlbWVudHMoYXJpYUNvbnRyb2xzKTsKLSAgICAg
ICAgcmV0dXJuIG1ha2VOU0FycmF5KGFyaWFDb250cm9scyk7Ci0gICAgfQorICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXJpYUNvbnRyb2xzQXR0
cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbnRy
b2xsZWRPYmplY3RzKCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlGb2N1c2FibGVBbmNlc3RvckF0dHJpYnV0ZV0pIHsKICAgICAgICAg
QVhDb3JlT2JqZWN0KiBvYmplY3QgPSBiYWNraW5nT2JqZWN0LT5mb2N1c2FibGVBbmNlc3Rvcigp
Owo=
</data>
<flag name="commit-queue"
          id="487488"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458607</attachid>
            <date>2022-04-29 13:59:44 -0700</date>
            <delta_ts>2022-04-29 16:46:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239848-20220429165943.patch</filename>
            <type>text/plain</type>
            <size>50942</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVlYjMzNmQ3NmFhMjlj
Yjk5YjRlMmFhZmE2YzU3ODRiZmU4YTcxNC4uOWNmODdlYWVmMTllMGExYzA3MmUzYTQyOTA3NmVk
NDBmNzQ5NDAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIyLTA0LTI5ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBDb2RlIGNsZWFu
dXAgaW4gcHJlcGFyYXRpb24gZm9yIHJlZmFjdG9yaW5nIG9mIGNvbXB1dGluZyByZWxhdGlvbnNo
aXBzIGJldHdlZW4gQVhPYmplY3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM5ODQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MjQ1NTU0ND4K
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaCBhbmQgVHlsZXIgV2lsY29jay4K
KworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKCkgYW5kCisgICAgICAgIGFyaWFFbGVt
ZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZSgpIGFyZSB0aGUgbWV0aG9kcyB0aGF0IGN1cnJlbnRs
eQorICAgICAgICBjb21wdXRlIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gb2JqZWN0cy4gVGhl
c2UgbWV0aG9kcyBub3cgcmV0dXJuIGEKKyAgICAgICAgdmVjdG9yIG9mIHRoZSByZWxhdGVkIG9i
amVjdHMgaW5zdGVhZCBvZiB0YWtpbmcgYW4gb3V0IHBhcmFtZXRlci4KKyAgICAgICAgSW4gYWRk
aXRpb24sIGFsbCBhcmlhWFhYRWxlbWVudHMgYW5kIGFyaWFYWFhSZWZlcmVuY2luZ0VsZW1lbnRz
IG1ldGhvZHMKKyAgICAgICAgYXJlIHJlbmFtZWQgdG8gYmV0dGVyIHJlZmxlY3QgdGhlIHJlbGF0
aW9uc2hpcHMgdGhleSByZXRyaWV2ZS4gTm90ZSB0aGF0CisgICAgICAgIHRoZSBwcmVmaXggYXJp
YSBpcyByZW1vdmVkIGZyb20gYWxsIG1ldGhvZCBuYW1lcyBiZWNhdXNlIEFSSUEgaXMgb25lIHdh
eQorICAgICAgICBvZiBlc3RhYmxpc2hpbmcgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIG9iamVjdHMs
IGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlCisgICAgICAgIG9ubHkgd2F5LiBUaGVzZSBjaGFuZ2Vz
IG1ha2UgdGhlIGNvZGUgbW9yZSBjb25jaXNlIGFuZCBjbGVhcmVyLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFbGVtZW50c1Jl
ZmVyZW5jZWRCeUF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWN0aXZlRGVzY2VuZGFudE9m
T2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
b250cm9sbGVkT2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpjb250cm9sbGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpkZXNjcmliZWRCeU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVzY3JpcHRpb25Gb3JPYmplY3RzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFpbGVkQnlPYmplY3RzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFpbHNGb3JPYmpl
Y3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVycm9y
TWVzc2FnZU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6ZXJyb3JNZXNzYWdlRm9yT2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpmbG93VG9PYmplY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZsb3dGcm9tT2JqZWN0cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYWJlbGxlZEJ5T2JqZWN0cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYWJlbEZvck9iamVjdHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6b3duZWRPYmpl
Y3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om93bmVy
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhQWN0
aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUNvbnRyb2xzRWxlbWVudHMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJp
YUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphcmlh
RGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXRhaWxzRWxlbWVudHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYURl
dGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRXJy
b3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRmxvd1RvRWxlbWVudHMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUZsb3dU
b1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxhYmVsbGVkQnlFbGVtZW50cyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhTGFiZWxsZWRC
eVJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYU93bnNFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhT3duc1JlZmVyZW5jaW5n
RWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpsaW5rZWRVSUVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnRhcmdldEVsZW1lbnRGb3JBY3RpdmVEZXNjZW5kYW50IGNvbnN0
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSGVhZGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjphcmlhT3duZWRCeVBh
cmVudCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVS
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGls
ZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpy
ZWxhdGlvbk1hcCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphY3RpdmVEZXNjZW5kYW50T2ZPYmplY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmNvbnRyb2xsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmRlc2NyaWJlZEJ5T2JqZWN0cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpkZXNjcmlwdGlvbkZvck9iamVjdHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZGV0YWlsc0Zvck9iamVjdHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZXJyb3JNZXNzYWdlRm9y
T2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpmbG93
RnJvbU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
bGFiZWxsZWRCeU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9i
amVjdDo6bGFiZWxGb3JPYmplY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6Om93bmVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUNvbnRyb2xzUmVm
ZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhRXJyb3JNZXNzYWdlUmVm
ZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhTGFiZWxsZWRCeUVs
ZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OmFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhT3duc1JlZmVyZW5jaW5nRWxl
bWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMjIt
MDQtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxN
ZWRpYUVsZW1lbnQgY2FuIGdldCBtdWx0aXBsZSBpbnRlcnJ1cHRpb25zIGZvciBpbnZpc2libGUg
YXV0b3BsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggZjQzOGM5YzVkNTI3MDE0Nzc1NDk2MjA2M2Rm
ZDk2NTMwNjMxYzcxNy4uYWFiYTdlZTliOGI4NmQ4YjFkMjZmY2RiYjBiZWI0NTVhN2YwZjA2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKQEAgLTIwNTEsMTIgKzIwNTEsOCBAQCBTdHJpbmcgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNbwogICAgIC8vIHJlZmVyZW5jZWQgYnkgYXJpYS1sYWJlbGxlZGJ5IG9yIGFyaWEtZGVz
Y3JpYmVkYnksIGFuZCBpcyBub3QgYSBob3N0IGxhbmd1YWdlIHRleHQKICAgICAvLyBhbHRlcm5h
dGl2ZSwgdGhlIGVtcHR5IHN0cmluZyBzaG91bGQgYmUgcmV0dXJuZWQuCiAgICAgaWYgKGlzRE9N
SGlkZGVuKCkgJiYgIWlzQXJpYVZpc2libGUgJiYgIWlzPEhUTUxMYWJlbEVsZW1lbnQ+KG5vZGUp
ICYmIChub2RlICYmICFhbmNlc3RvcnNPZlR5cGU8SFRNTENhbnZhc0VsZW1lbnQ+KCpub2RlKS5m
aXJzdCgpKSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgbGFiZWxGb3I7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXNjcmlwdGlvbkZvcjsKLSAgICAgICAgYXJpYUxhYmVs
bGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKGxhYmVsRm9yKTsKLSAgICAgICAgYXJpYURlc2NyaWJl
ZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhkZXNjcmlwdGlvbkZvcik7Ci0gICAgICAgIGlmICghbGFi
ZWxGb3Iuc2l6ZSgpICYmICFkZXNjcmlwdGlvbkZvci5zaXplKCkpCi0gICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgICAgIGlmIChsYWJlbEZvck9iamVjdHMoKS5pc0VtcHR5KCkgJiYg
ZGVzY3JpcHRpb25Gb3JPYmplY3RzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAxODZm
Yzk5ZjZjOWZjYThiYjhkNTJlY2VhZTBkMmQwYzJmZGMzOGM4Li5kNzRkNWY4M2YyODZiYzUyNmIx
OWYzZmQ1Y2MxNWVlYTIyNTI2NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTE5NzgsOCArMTk3OCw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9y
Tm9kZShOb2RlKiBub2RlKQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJvd3MsIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgYW5jZXN0b3JzKQogewotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBh
cmlhT3duczsKLSAgICBhcmlhT3duc0VsZW1lbnRzKGFyaWFPd25zKTsKKyAgICBhdXRvIG93bmVk
T2JqZWN0cyA9IHRoaXMtPm93bmVkT2JqZWN0cygpOwogCiAgICAgYW5jZXN0b3JzLmFwcGVuZCh0
aGlzKTsKIApAQCAtMTk5MCw5ICsxOTg5LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByb3dzLCBBY2Nlc3MKICAg
ICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0
ZW0pIHsKICAgICAgICAgICAgIC8vIENoaWxkIGFwcGVhcnMgYm90aCBhcyBhIGRpcmVjdCBjaGls
ZCBhbmQgYXJpYS1vd25zLCB3ZSBzaG91bGQgdXNlIHRoZSBvcmRlcmluZyBhcwogICAgICAgICAg
ICAgLy8gZGVzY3JpYmVkIGluIGFyaWEtb3ducyBmb3IgdGhpcyBjaGlsZC4KLSAgICAgICAgICAg
IGlmIChhcmlhT3ducy5jb250YWlucyhjaGlsZCkpCisgICAgICAgICAgICBpZiAob3duZWRPYmpl
Y3RzLmNvbnRhaW5zKGNoaWxkKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAorCiAgICAgICAgICAgICAvLyBUaGUgcmVzdWx0IHNldCBtYXkgYWxyZWFkeSBjb250YWlu
IHRoZSBjaGlsZCB0aHJvdWdoIGFyaWEtb3ducy4gRm9yIGV4YW1wbGUsCiAgICAgICAgICAgICAv
LyBhIHRyZWVpdGVtIHNpdHRpbmcgdW5kZXIgdGhlIHRyZWUgcm9vdCwgd2hpY2ggaXMgb3duZWQg
ZWxzZXdoZXJlIGluIHRoZSB0cmVlLgogICAgICAgICAgICAgaWYgKHJvd3MuY29udGFpbnMoY2hp
bGQpKQpAQCAtMjAwNywxMyArMjAwNiwxMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFy
aWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJvd3MsIEFjY2VzcwogICAg
IH0KIAogICAgIC8vIE5vdyBnbyB0aHJvdWdoIHRoZSBhcmlhLW93bnMgZWxlbWVudHMuCi0gICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGFyaWFPd25zKSB7CisgICAgZm9yIChjb25zdCBhdXRv
JiBjaGlsZCA6IG93bmVkT2JqZWN0cykgewogICAgICAgICAvLyBBdm9pZCBhIGNpcmN1bGFyIHJl
ZmVyZW5jZSB2aWEgYXJpYS1vd25zIGJ5IGNoZWNraW5nIGlmIG91ciBwYXJlbnQKICAgICAgICAg
Ly8gcGF0aCBpbmNsdWRlcyB0aGlzIGNoaWxkLiBDdXJyZW50bHksIGxvb2tpbmcgdXAgdGhlIGFy
aWEtb3ducyBwYXJlbnQKICAgICAgICAgLy8gcGF0aCBpdHNlbGYgY291bGQgYmUgZXhwZW5zaXZl
LCBzbyB3ZSB0cmFjayBpdCBzZXBhcmF0ZWx5LgogICAgICAgICBpZiAoYW5jZXN0b3JzLmNvbnRh
aW5zKGNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICAv
LyBBZGQgdHJlZSBpdGVtcyBhcyB0aGUgcm93cy4KICAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0pIHsKICAgICAgICAgICAgIC8vIEhv
cGVmdWxseSBhIGZsb3cgdGhhdCBkb2VzIG5vdCBvY2N1ciBvZnRlbiBpbiBwcmFjdGljZSwgYnV0
IGlmIHNvbWVvbmUgd2VyZSB0byBpbmNsdWRlCkBAIC0yMDIxLDcgKzIwMjAsNyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIHJvd3MsIEFjY2VzcwogICAgICAgICAgICAgLy8gbW92ZSBpdCB0byB0aGUgcmlnaHQgcGxh
Y2UuCiAgICAgICAgICAgICBpZiAocm93cy5jb250YWlucyhjaGlsZCkpCiAgICAgICAgICAgICAg
ICAgcm93cy5yZW1vdmVGaXJzdChjaGlsZCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
cm93cy5hcHBlbmQoY2hpbGQpOwogICAgICAgICB9CiAKQEAgLTIwMjksNyArMjAyOCw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgcm93cywgQWNjZXNzCiAgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5T2JqZWN0
PigqY2hpbGQpKQogICAgICAgICAgICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oKmNo
aWxkKS5hcmlhVHJlZVJvd3Mocm93cywgYW5jZXN0b3JzKTsKICAgICB9Ci0gICAgCisKICAgICBh
bmNlc3RvcnMucmVtb3ZlTGFzdCgpOwogfQogCkBAIC0zOTIwLDQyICszOTE5LDQzIEBAIEFYQ29y
ZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSgpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRz
RnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRz
RnJvbUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0g
ICAgYXV0byBlbGVtZW50cyA9IGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsK
LSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogYXhPYmpl
Y3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCkpCi0gICAgICAgICAgICBjaGlsZHJlbi5h
cHBlbmQoYXhPYmplY3QpOwotICAgIH0KKyAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUo
KTsKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBlbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoYXR0cmlidXRlKS5tYXAoW2NhY2hlXSAoYXV0byogZWxlbWVudCkg
LT4gUmVmUHRyPEFYQ29yZU9iamVjdD4geworICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3Jl
YXRlKGVsZW1lbnQpOworICAgIH0pOwogfQogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpdGVy
YXRlcyB0aGUgd2hvbGUgRE9NIHRyZWUgYW5kIHRyaWVzIHRvIG1hdGNoIGV2ZXJ5IEVsZW1lbnQg
aW4gdGhlIHRyZWUsIHdoaWNoIGlzIHZlcnkgZXhwZW5zaXZlLgogLy8gV2Ugc2hvdWxkIGZpbmQg
YSBiZXR0ZXIgd2F5IHRvIGFjaGlldmUgdGhpcy4KLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6
YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgZWxlbWVudHMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3QKK0FY
Q29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGUpIGNvbnN0CiB7CiAgICAgYXV0byBpZCA9IGlkZW50aWZpZXJBdHRyaWJ1dGUo
KTsKICAgICBpZiAoaWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNh
Y2hlKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAKKyAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igb2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBk
ZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihub2RlKCktPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkp
KSB7CiAgICAgICAgIGF1dG8mIGlkTGlzdCA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihhdHRyaWJ1dGUpOwogICAgICAgICBpZiAoIVNwYWNlU3BsaXRTdHJpbmc6OnNw
YWNlU3BsaXRTdHJpbmdDb250YWluc1ZhbHVlKGlkTGlzdCwgaWQsIFNwYWNlU3BsaXRTdHJpbmc6
OlNob3VsZEZvbGRDYXNlOjpObykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBp
ZiAoYXV0byogYXhPYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoJmVsZW1lbnQpKQotICAgICAg
ICAgICAgZWxlbWVudHMuYXBwZW5kKGF4T2JqZWN0KTsKKyAgICAgICAgaWYgKGF1dG8qIG9iamVj
dCA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmZWxlbWVudCkpCisgICAgICAgICAgICBvYmplY3RzLmFw
cGVuZChvYmplY3QpOwogICAgIH0KKyAgICByZXR1cm4gb2JqZWN0czsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBj
b25zdAogewotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250YWluZXJzOwotICAg
IGFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhjb250YWluZXJzKTsKKyAg
ICBhdXRvIGNvbnRhaW5lcnMgPSBhY3RpdmVEZXNjZW5kYW50T2ZPYmplY3RzKCk7CiAgICAgZm9y
IChhdXRvJiBjb250YWluZXIgOiBjb250YWluZXJzKSB7CiAgICAgICAgIGlmIChjb250YWluZXIt
PmlzRm9jdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zOTY0LDgzICszOTY0
LDg1IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1
c2VkQ29udGFpbmVyKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY29udGFpbmVycykgY29uc3QKK0FYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGl2
ZURlc2NlbmRhbnRPZk9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5j
ZWRCeUF0dHJpYnV0ZShjb250YWluZXJzLCBhcmlhX2FjdGl2ZWRlc2NlbmRhbnRBdHRyKTsKKyAg
ICByZXR1cm4gYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfYWN0aXZlZGVz
Y2VuZGFudEF0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDb250cm9s
c0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYXJpYUNvbnRyb2xzKSBjb25z
dAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0
eU9iamVjdDo6Y29udHJvbGxlZE9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c0Zy
b21BdHRyaWJ1dGUoYXJpYUNvbnRyb2xzLCBhcmlhX2NvbnRyb2xzQXR0cik7CisgICAgcmV0dXJu
IGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYV9jb250cm9sc0F0dHIpOwogfQogCi12b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjb250cm9sbGVycykgY29uc3QKK0FYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbnRy
b2xsZXJzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUo
Y29udHJvbGxlcnMsIGFyaWFfY29udHJvbHNBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRz
UmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfY29udHJvbHNBdHRyKTsKIH0KIAotdm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGFyaWFEZXNjcmliZWRCeSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlc2NyaWJlZEJ5T2Jq
ZWN0cygpIGNvbnN0CiB7Ci0gICAgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhRGVzY3Jp
YmVkQnksIGFyaWFfZGVzY3JpYmVkYnlBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzRnJv
bUF0dHJpYnV0ZShhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImIGRlc2NyaWJlcnMpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXNjcmlwdGlvbkZvck9i
amVjdHMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShk
ZXNjcmliZXJzLCBhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CisgICAgcmV0dXJuIGFyaWFFbGVtZW50
c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CiB9CiAKLXZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGFyaWFEZXRhaWxzKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWlsZWRCeU9iamVjdHMo
KSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYURldGFpbHMsIGFy
aWFfZGV0YWlsc0F0dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGFy
aWFfZGV0YWlsc0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXRh
aWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGRldGFp
bHNGb3IpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhaWxzRm9yT2JqZWN0cygpIGNvbnN0CiB7Ci0gICAgYXJp
YUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGRldGFpbHNGb3IsIGFyaWFfZGV0YWlsc0F0
dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoYXJpYV9k
ZXRhaWxzQXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVycm9yTWVz
c2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYXJpYUVycm9yTWVzc2Fn
ZSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmVycm9yTWVzc2FnZU9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFF
bGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYUVycm9yTWVzc2FnZSwgYXJpYV9lcnJvcm1lc3NhZ2VB
dHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhX2Vycm9ybWVz
c2FnZUF0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFcnJvck1lc3Nh
Z2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZXJyb3JN
ZXNzYWdlRm9yKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZXJyb3JNZXNzYWdlRm9yT2JqZWN0cygpIGNvbnN0CiB7
Ci0gICAgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGVycm9yTWVzc2FnZUZvciwg
YXJpYV9lcnJvcm1lc3NhZ2VBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzUmVmZXJlbmNl
ZEJ5QXR0cmlidXRlKGFyaWFfZXJyb3JtZXNzYWdlQXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6YXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgZmxvd1RvKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmxvd1RvT2JqZWN0cygpIGNvbnN0CiB7Ci0gICAgYXJp
YUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShmbG93VG8sIGFyaWFfZmxvd3RvQXR0cik7CisgICAgcmV0
dXJuIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYV9mbG93dG9BdHRyKTsKIH0KIAotdm9p
ZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGZsb3dGcm9tKSBjb25zdAorQVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmxvd0Zyb21P
YmplY3RzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUo
Zmxvd0Zyb20sIGFyaWFfZmxvd3RvQXR0cik7CisgICAgcmV0dXJuIGFyaWFFbGVtZW50c1JlZmVy
ZW5jZWRCeUF0dHJpYnV0ZShhcmlhX2Zsb3d0b0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFyaWFMYWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBhcmlhTGFiZWxsZWRCeSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxhYmVsbGVkQnlPYmplY3RzKCkgY29u
c3QKIHsKLSAgICBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGFyaWFMYWJlbGxlZEJ5LCBhcmlh
X2xhYmVsbGVkYnlBdHRyKTsKLSAgICBpZiAoIWFyaWFMYWJlbGxlZEJ5LnNpemUoKSkKLSAgICAg
ICAgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhTGFiZWxsZWRCeSwgYXJpYV9sYWJlbGVk
YnlBdHRyKTsKKyAgICBhdXRvIGxhYmVsbGVkQnlPYmplY3RzID0gYXJpYUVsZW1lbnRzRnJvbUF0
dHJpYnV0ZShhcmlhX2xhYmVsbGVkYnlBdHRyKTsKKyAgICBpZiAobGFiZWxsZWRCeU9iamVjdHMu
aXNFbXB0eSgpKQorICAgICAgICBsYWJlbGxlZEJ5T2JqZWN0cyA9IGFyaWFFbGVtZW50c0Zyb21B
dHRyaWJ1dGUoYXJpYV9sYWJlbGVkYnlBdHRyKTsKKyAgICByZXR1cm4gbGFiZWxsZWRCeU9iamVj
dHM7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxhYmVsbGVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgbGFiZWxzKSBjb25zdAor
QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9i
amVjdDo6bGFiZWxGb3JPYmplY3RzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNSZWZlcmVu
Y2VkQnlBdHRyaWJ1dGUobGFiZWxzLCBhcmlhX2xhYmVsbGVkYnlBdHRyKTsKLSAgICBpZiAoIWxh
YmVscy5zaXplKCkpCi0gICAgICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShs
YWJlbHMsIGFyaWFfbGFiZWxlZGJ5QXR0cik7CisgICAgYXV0byBvYmplY3RzID0gYXJpYUVsZW1l
bnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfbGFiZWxsZWRieUF0dHIpOworICAgIGlmIChv
YmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgb2JqZWN0cyA9IGFyaWFFbGVtZW50c1JlZmVyZW5j
ZWRCeUF0dHJpYnV0ZShhcmlhX2xhYmVsZWRieUF0dHIpOworICAgIHJldHVybiBvYmplY3RzOwog
fQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiBheE9iamVjdHMpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpvd25lZE9iamVjdHMo
KSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXhPYmplY3RzLCBhcmlh
X293bnNBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhX293
bnNBdHRyKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhT3duc1JlZmVyZW5j
aW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBvd25lcnMpIGNvbnN0CitB
WENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpvd25lcnMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJp
YnV0ZShvd25lcnMsIGFyaWFfb3duc0F0dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNSZWZl
cmVuY2VkQnlBdHRyaWJ1dGUoYXJpYV9vd25zQXR0cik7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBWENvcmVPYmplY3Qq
IGNoaWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAppbmRleCA0NmZlZDc2ZTRmYmY2YWE2OWYxMDc4YjZkNzk2Yjk3MmJjNjJhOWI3
Li4wNGM5MWI0NTQxZjc1YzA5ZjM5NDMwODdlMWE4OGFmNWQ4ZWNhM2NkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMzAx
LDIxICszMDEsMjIgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNBUklBUm9sZURlc2NyaXB0
aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENv
bnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRS
ZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlh
TGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYU93
bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2b2lkIGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBhY3RpdmVEZXNjZW5kYW50T2ZPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZWRPYmplY3RzKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZXJzKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRlc2NyaWJlZEJ5T2Jq
ZWN0cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBk
ZXNjcmlwdGlvbkZvck9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgZGV0YWlsZWRCeU9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGV0YWlsc0Zvck9iamVjdHMoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZXJyb3JNZXNzYWdlT2JqZWN0
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJv
ck1lc3NhZ2VGb3JPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGZsb3dUb09iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgZmxvd0Zyb21PYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsbGVkQnlPYmplY3RzKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsRm9yT2JqZWN0
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBvd25l
ZE9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3Igb3duZXJzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGhhc1BvcHVwKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBTdHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtODExLDggKzgxMiw4IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBi
b29sIGlzQVJJQUlucHV0KEFjY2Vzc2liaWxpdHlSb2xlKTsKIAotICAgIHZvaWQgYXJpYUVsZW1l
bnRzRnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImLCBjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Q7Ci0gICAgdm9pZCBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRy
aWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRWxlbWVudHNGcm9t
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29u
dGVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByYWRp
b0dyb3VwQW5jZXN0b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggMjYxNDkz
YTdjMzAwOGEyMTA4OGJlYmYxOGIxNjIwY2JjNTlmZTkzMi4uY2E4ODY5MWRlMWVhZGMyZmNiODhh
MWVjN2I1ZDBjMjk4OTY1NjcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTEwNDgsMjEg
KzEwNDgsMjMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQVJJQU93bnMo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNl
ZENvbnRhaW5lcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYUFjdGl2ZURlc2Nl
bmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcmlh
RGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFy
aWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcmlhTGFiZWxsZWRCeUVsZW1lbnRz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYU93bnNFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCA9IDA7CisKKyAgICAvLyBSZXRyaWV2YWwgb2YgcmVsYXRlZCBvYmplY3RzLgorICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFjdGl2ZURlc2NlbmRhbnRPZk9i
amVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgY29udHJvbGxlZE9iamVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgY29udHJvbGxlcnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGVzY3JpYmVkQnlPYmplY3RzKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRlc2NyaXB0aW9uRm9y
T2JqZWN0cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBkZXRhaWxlZEJ5T2JqZWN0cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxzRm9yT2JqZWN0cygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJvck1lc3NhZ2VPYmplY3RzKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGVycm9y
TWVzc2FnZUZvck9iamVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgZmxvd1RvT2JqZWN0cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBmbG93RnJvbU9iamVjdHMoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGFiZWxsZWRCeU9iamVjdHMo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGFi
ZWxGb3JPYmplY3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIG93bmVkT2JqZWN0cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBvd25lcnMoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaGFzUG9wdXAoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgcG9wdXBWYWx1ZSgp
IGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDA0MDRjYjc0MTQ1ZGEwYjI1MWZk
MGVmY2FjMjQ3NzRjZDYxNDk4MzIuLjU2ODkwMDMwYjU3ZmFmYzMzNjRmNGY3MjRmNmFmZDA2YjRh
OGEzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTA3NiwxMiArMTA3NiwxMiBAQCB2b2lk
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJhZGlvQnV0dG9uR3JvdXBNZW1iZXJzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlbgogICAgICAgICB9CiAgICAgfQogfQotICAgIAorCiAvLyBsaW5r
ZWQgdWkgZWxlbWVudHMgY291bGQgYmUgYWxsIHRoZSByZWxhdGVkIHJhZGlvIGJ1dHRvbnMgaW4g
YSBncm91cAogLy8gb3IgYW4gaW50ZXJuYWwgYW5jaG9yIGNvbm5lY3Rpb24KIHZvaWQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6bGlua2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0CiB7Ci0gICAgYXJpYUZsb3dUb0VsZW1l
bnRzKGxpbmtlZFVJRWxlbWVudHMpOworICAgIGxpbmtlZFVJRWxlbWVudHMgPSBmbG93VG9PYmpl
Y3RzKCk7CiAKICAgICBpZiAoaXNMaW5rKCkpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogbGlua2VkQVhFbGVtZW50ID0gaW50ZXJuYWxMaW5rRWxlbWVudCgpOwpAQCAtMjcxNSwxMSAr
MjcxNSwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjphY3RpdmVEZXNjZW5kYW50KCkgY29uc3QKIAogUmVuZGVyT2JqZWN0KiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0Ojp0YXJnZXRFbGVtZW50Rm9yQWN0aXZlRGVzY2VuZGFudChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNj
ZW5kYW50KSBjb25zdAogewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBlbGVtZW50czsKLSAgICBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGVs
ZW1lbnRzLCBhdHRyaWJ1dGVOYW1lKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGVsZW1lbnQgOiBl
bGVtZW50cykgewotICAgICAgICBpZiAoYWN0aXZlRGVzY2VuZGFudC0+aXNEZXNjZW5kYW50T2ZP
YmplY3QoZWxlbWVudC5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVudC0+cmVuZGVy
ZXIoKTsKKyAgICBhdXRvIG9iamVjdHMgPSBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGF0dHJp
YnV0ZU5hbWUpOworICAgIGZvciAoY29uc3QgYXV0byYgb2JqZWN0IDogb2JqZWN0cykgeworICAg
ICAgICBpZiAoYWN0aXZlRGVzY2VuZGFudC0+aXNEZXNjZW5kYW50T2ZPYmplY3Qob2JqZWN0Lmdl
dCgpKSkKKyAgICAgICAgICAgIHJldHVybiBvYmplY3QtPnJlbmRlcmVyKCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAppbmRleCA2MjNhNjAyOGU0MmU1NGJhZWMz
MDYzMWM3NDkzNzRmMzI4ZTg3MDYxLi5jOTE5NGYyYmVlMmIwMjgzOTI4YzcyNGM5ZTVmNmRiYWY2
YTdmMTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKQEAgLTIzNiwxNiArMjM2LDE1IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbDo6c3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGlzVGFibGVIZWFkZXJDZWxsKCkgJiYgaGFzQXR0cmlidXRlKGFiYnJBdHRyKTsK
IH0KLSAgICAKKwogQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSGVhZGVycygpCiB7Ci0gICAgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGhlYWRlcnM7Ci0gICAgQWNjZXNzaWJpbGl0eVRhYmxlKiBwYXJlbnQg
PSBwYXJlbnRUYWJsZSgpOworICAgIGF1dG8qIHBhcmVudCA9IHBhcmVudFRhYmxlKCk7CiAgICAg
aWYgKCFwYXJlbnQpCi0gICAgICAgIHJldHVybiBoZWFkZXJzOworICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgLy8gQ2hvb3NlIGNvbHVtbkhlYWRlcnMgYXMgdGhlIHBsYWNlIHdoZXJlIHRoZSAi
aGVhZGVycyIgYXR0cmlidXRlIGlzIHJlcG9ydGVkLgotICAgIGFyaWFFbGVtZW50c0Zyb21BdHRy
aWJ1dGUoaGVhZGVycywgaGVhZGVyc0F0dHIpOworICAgIGF1dG8gaGVhZGVycyA9IGFyaWFFbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoaGVhZGVyc0F0dHIpOwogICAgIC8vIElmIHRoZSBoZWFkZXJzIGF0
dHJpYnV0ZSByZXR1cm5lZCB2YWxpZCB2YWx1ZXMsIHRoZW4gZG8gbm90IGZ1cnRoZXIgc2VhcmNo
IGZvciBjb2x1bW4gaGVhZGVycy4KICAgICBpZiAoIWhlYWRlcnMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gaGVhZGVyczsKQEAgLTI2OCw3ICsyNjcsNyBAQCBBWENvcmVPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5IZWFk
ZXJzKAogCiAgICAgcmV0dXJuIGhlYWRlcnM7CiB9Ci0gICAgCisKIEFYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0hlYWRl
cnMoKQogewogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBoZWFkZXJzOwpAQCAtMjk2
LDExICsyOTUsOSBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dIZWFkZXJzKCkKIAogQWNjZXNzaWJpbGl0eVRhYmxl
Um93KiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjphcmlhT3duZWRCeVBhcmVudCgpIGNvbnN0CiB7
Ci0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFPd25lZEJ5OwotICAgIGFyaWFP
d25zUmVmZXJlbmNpbmdFbGVtZW50cyhhcmlhT3duZWRCeSk7Ci0gICAgaWYgKGFyaWFPd25lZEJ5
LnNpemUoKSA9PSAxICYmIGFyaWFPd25lZEJ5WzBdLT5pc1RhYmxlUm93KCkpCi0gICAgICAgIHJl
dHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KGFyaWFPd25lZEJ5WzBdLmdldCgp
KTsKLQorICAgIGF1dG8gb3duZXJzID0gdGhpcy0+b3duZXJzKCk7CisgICAgaWYgKG93bmVycy5z
aXplKCkgPT0gMSAmJiBvd25lcnNbMF0tPmlzVGFibGVSb3coKSkKKyAgICAgICAgcmV0dXJuIGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ob3duZXJzWzBdLmdldCgpKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCmluZGV4IDFkZjk4YzhkNjE5Y2RlMGY4MzMxZGFm
NThlYWZhZWJmOWRjZTZkNGEuLjA4N2RkZTAyNTQ0YWMyODFhZDczY2E2ZDhjM2M4ZDYwN2FmY2Qw
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZVJvdy5jcHAKQEAgLTE0NiwxOSArMTQ2LDE4IEBAIEFYQ29yZU9iamVjdCogQWNj
ZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3QoKQogICAgIAogICAgIHJldHVybiBjZWxs
OwogfQotICAgIAorCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YWRkQ2hpbGRyZW4oKQog
ewogICAgIC8vIElmIHRoZSBlbGVtZW50IHNwZWNpZmllcyBpdHMgY2VsbHMgdGhyb3VnaCBhcmlh
LW93bnMsIHJldHVybiB0aGF0IGZpcnN0LgotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBhcmlhT3duZWRFbGVtZW50czsKLSAgICBhcmlhT3duc0VsZW1lbnRzKGFyaWFPd25lZEVsZW1l
bnRzKTsKLSAgICBpZiAoYXJpYU93bmVkRWxlbWVudHMuc2l6ZSgpKSB7Ci0gICAgICAgIGZvciAo
YXV0byYgYXJpYU93bmVkRWxlbWVudCA6IGFyaWFPd25lZEVsZW1lbnRzKQotICAgICAgICAgICAg
YWRkQ2hpbGQoYXJpYU93bmVkRWxlbWVudC5nZXQoKSwgRGVzY2VuZElmSWdub3JlZDo6Tm8pOwor
ICAgIGF1dG8gb3duZWRPYmplY3RzID0gdGhpcy0+b3duZWRPYmplY3RzKCk7CisgICAgaWYgKG93
bmVkT2JqZWN0cy5zaXplKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBvYmplY3QgOiBvd25lZE9i
amVjdHMpCisgICAgICAgICAgICBhZGRDaGlsZChvYmplY3QuZ2V0KCksIERlc2NlbmRJZklnbm9y
ZWQ6Ok5vKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjphZGRDaGlsZHJlbigpOwotICAgIAorCiAgICAgLy8gIkFSSUEgMS4xLCBJZiB0aGUgc2V0
IG9mIGNvbHVtbnMgd2hpY2ggaXMgcHJlc2VudCBpbiB0aGUgRE9NIGlzIGNvbnRpZ3VvdXMsIGFu
ZCBpZiB0aGVyZSBhcmUgbm8gY2VsbHMgd2hpY2ggc3BhbiBtb3JlIHRoYW4gb25lIHJvdyBvcgog
ICAgIC8vIGNvbHVtbiBpbiB0aGF0IHNldCwgdGhlbiBhdXRob3JzIG1heSBwbGFjZSBhcmlhLWNv
bGluZGV4IG9uIGVhY2ggcm93LCBzZXR0aW5nIHRoZSB2YWx1ZSB0byB0aGUgaW5kZXggb2YgdGhl
IGZpcnN0IGNvbHVtbiBvZiB0aGUgc2V0LiIKICAgICAvLyBVcGRhdGUgY2hpbGQgY2VsbHMnIGF4
Q29sSW5kZXggaWYgdGhlcmUncyBhbiBhcmlhLWNvbGluZGV4IHZhbHVlIHNldCBmb3IgdGhlIHJv
dy4gU28gdGhlIGNlbGwgZG9lc24ndCBoYXZlIHRvIGdvIHRocm91Z2ggdGhlIHNpYmxpbmdzCkBA
IC0xNjYsNyArMTY1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmFkZENoaWxkcmVu
KCkKICAgICBpbnQgY29sSW5kZXggPSBheENvbHVtbkluZGV4KCk7CiAgICAgaWYgKGNvbEluZGV4
ID09IC0xKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBjZWxsIDogY2hpbGRyZW4oKSkgewogICAgICAgICBpZiAo
aXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmNlbGwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGkuY3BwCmluZGV4IGRhOTJmZDQxM2YxMDc3YzcxMjkwZTEzYTNlNTQ4NjIwYmU3Yzg5NjcuLjZh
YmI1M2NjNzhhZWI5MzljYmNkOTViYWQ5MmU4Njc2MWNhNWQyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaS5jcHAKQEAgLTEwNjgsNjAgKzEwNjgsNDggQEAgSGFzaE1hcDx1aW50MzJfdCwg
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk+Pj4gQWNjZXNzaWJpbGl0eU9i
amVjdEEKICAgICAgICAgbV9jb3JlT2JqZWN0LT5hcmlhTGFiZWxsZWRCeUVsZW1lbnRzKGFyaWFM
YWJlbGxlZEJ5RWxlbWVudHMpOwogICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpMYWJlbGxlZEJ5LCBh
cmlhTGFiZWxsZWRCeUVsZW1lbnRzKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHM7
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxh
YmVsRm9yT2JqZWN0czsKICAgICBpZiAoYXV0byogY29udHJvbCA9IG1fY29yZU9iamVjdC0+Y29y
cmVzcG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSkKLSAgICAgICAgYXJpYUxhYmVsbGVk
QnlSZWZlcmVuY2luZ0VsZW1lbnRzLmFwcGVuZChjb250cm9sKTsKKyAgICAgICAgbGFiZWxGb3JP
YmplY3RzLmFwcGVuZChjb250cm9sKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29yZU9iamVjdC0+
YXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNp
bmdFbGVtZW50cyk7Ci0gICAgYWRkUmVsYXRpb24oQXRzcGk6OkxhYmVsRm9yLCBhcmlhTGFiZWxs
ZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMpOworICAgICAgICBsYWJlbEZvck9iamVjdHMgPSBtX2Nv
cmVPYmplY3QtPmxhYmVsRm9yKCk7CisgICAgYWRkUmVsYXRpb24oQXRzcGk6OkxhYmVsRm9yLCBs
YWJlbEZvck9iamVjdHMpOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGFyaWFGbG93VG9FbGVtZW50czsKICAgICBtX2NvcmVPYmplY3QtPmFy
aWFGbG93VG9FbGVtZW50cyhhcmlhRmxvd1RvRWxlbWVudHMpOwogICAgIGFkZFJlbGF0aW9uKEF0
c3BpOjpGbG93c1RvLCBhcmlhRmxvd1RvRWxlbWVudHMpOwogCi0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFGbG93VG9SZWZlcmVuY2luZ0Vs
ZW1lbnRzOwotICAgIG1fY29yZU9iamVjdC0+YXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMo
YXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMpOwotICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpG
bG93c0Zyb20sIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKTsKKyAgICBhZGRSZWxhdGlv
bihBdHNwaTo6Rmxvd3NGcm9tLCBtX2NvcmVPYmplY3QtPmZsb3dzRnJvbSgpKTsKIAogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRGVzY3Jp
YmVkQnlFbGVtZW50czsKICAgICBtX2NvcmVPYmplY3QtPmFyaWFEZXNjcmliZWRCeUVsZW1lbnRz
KGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKTsKICAgICBhZGRSZWxhdGlvbihBdHNwaTo6RGVzY3Jp
YmVkQnksIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2lu
Z0VsZW1lbnRzOwotICAgIG1fY29yZU9iamVjdC0+YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdF
bGVtZW50cyhhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKTsKLSAgICBhZGRSZWxh
dGlvbihBdHNwaTo6RGVzY3JpcHRpb25Gb3IsIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxl
bWVudHMpOworICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpEZXNjcmlwdGlvbkZvciwgbV9jb3JlT2Jq
ZWN0LT5kZXNjcmlwdGlvbkZvcigpKTsKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhQ29udHJvbHNFbGVtZW50czsKICAgICBtX2NvcmVP
YmplY3QtPmFyaWFDb250cm9sc0VsZW1lbnRzKGFyaWFDb250cm9sc0VsZW1lbnRzKTsKICAgICBh
ZGRSZWxhdGlvbihBdHNwaTo6Q29udHJvbGxlckZvciwgYXJpYUNvbnRyb2xzRWxlbWVudHMpOwog
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFy
aWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHM7Ci0gICAgbV9jb3JlT2JqZWN0LT5hcmlhQ29u
dHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMp
OwotICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpDb250cm9sbGVkQnksIGFyaWFDb250cm9sc1JlZmVy
ZW5jaW5nRWxlbWVudHMpOworICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpDb250cm9sbGVkQnksIG1f
Y29yZU9iamVjdC0+Y29udHJvbGxlcnMoKSk7CiAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnNFbGVtZW50czsKICAgICBtX2NvcmVP
YmplY3QtPmFyaWFPd25zRWxlbWVudHMoYXJpYU93bnNFbGVtZW50cyk7CiAgICAgYWRkUmVsYXRp
b24oQXRzcGk6Ok5vZGVQYXJlbnRPZiwgYXJpYU93bnNFbGVtZW50cyk7CiAKLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnNSZWZlcmVu
Y2luZ0VsZW1lbnRzOwotICAgIG1fY29yZU9iamVjdC0+YXJpYU93bnNSZWZlcmVuY2luZ0VsZW1l
bnRzKGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyk7Ci0gICAgYWRkUmVsYXRpb24oQXRzcGk6
Ok5vZGVDaGlsZE9mLCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMpOworICAgIGFkZFJlbGF0
aW9uKEF0c3BpOjpOb2RlQ2hpbGRPZiwgbV9jb3JlT2JqZWN0LT5vd25lcnMoKSk7CiAKICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYURldGFp
bHNFbGVtZW50czsKICAgICBtX2NvcmVPYmplY3QtPmFyaWFEZXRhaWxzRWxlbWVudHMoYXJpYURl
dGFpbHNFbGVtZW50cyk7CiAgICAgYWRkUmVsYXRpb24oQXRzcGk6OkRldGFpbHMsIGFyaWFEZXRh
aWxzRWxlbWVudHMpOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50czsKLSAgICBtX2NvcmVP
YmplY3QtPmFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhhcmlhRGV0YWlsc1JlZmVyZW5j
aW5nRWxlbWVudHMpOwotICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpEZXRhaWxzRm9yLCBhcmlhRGV0
YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMpOworICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpEZXRhaWxz
Rm9yLCBtX2NvcmVPYmplY3QtPmRldGFpbHNGb3IoKSk7CiAKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRz
OwogICAgIG1fY29yZU9iamVjdC0+YXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKGFyaWFFcnJvck1l
c3NhZ2VFbGVtZW50cyk7CiAgICAgYWRkUmVsYXRpb24oQXRzcGk6OkVycm9yTWVzc2FnZSwgYXJp
YUVycm9yTWVzc2FnZUVsZW1lbnRzKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50
czsKLSAgICBtX2NvcmVPYmplY3QtPmFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRz
KGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKTsKLSAgICBhZGRSZWxhdGlvbihB
dHNwaTo6RXJyb3JGb3IsIGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKTsKKyAg
ICBhZGRSZWxhdGlvbihBdHNwaTo6RXJyb3JGb3IsIG1fY29yZU9iamVjdC0+ZXJyb3JNZXNzYWdl
Rm9yKCkpOwogCiAgICAgcmV0dXJuIG1hcDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0KaW5kZXggYWQzMzY2YjE5NzBmZTA2YmVkNmI4YTUwMTZiNzE1ZjkxYmVjZmM4
YS4uZDA1NTM5YmJlNWUyZDgyZjc4MmNkMjNhZDAxZTU2ZjBhMDE0Y2VkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE5MDgsMTEgKzE5MDgsOCBAQCBzdGF0
aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNT
dHJpbmcgKnN0cmluZykKIHsKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNh
bGxdKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbjsKLSAgICBzZWxmLmF4QmFja2lu
Z09iamVjdC0+YXJpYUZsb3dUb0VsZW1lbnRzKGNoaWxkcmVuKTsKLSAgICAKLSAgICByZXR1cm4g
Y3JlYXRlTlNBcnJheShjaGlsZHJlbiwgW10gKGF1dG8mIGNoaWxkKSAtPiBpZCB7CisKKyAgICBy
ZXR1cm4gY3JlYXRlTlNBcnJheShzZWxmLmF4QmFja2luZ09iamVjdC0+Zmxvd1RvT2JqZWN0cygp
LCBbXSAoYXV0byYgY2hpbGQpIC0+IGlkIHsKICAgICAgICAgYXV0byB3cmFwcGVyID0gY2hpbGQt
PndyYXBwZXIoKTsKICAgICAgICAgQVNTRVJUKHdyYXBwZXIpOwogCkBAIC0xOTQ1LDIwICsxOTQy
LDE0IEBAIHN0YXRpYyBOU0FycmF5ICphY2Nlc3NpYmxlRWxlbWVudHNGb3JPYmplY3RzKGNvbnN0
IEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoCiB7CiAgICAgaWYgKCFbc2VsZiBfcHJlcGFy
ZUFjY2Vzc2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIEFYQ29yZU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRldGFpbHNFbGVtZW50czsKLSAgICBz
ZWxmLmF4QmFja2luZ09iamVjdC0+YXJpYURldGFpbHNFbGVtZW50cyhkZXRhaWxzRWxlbWVudHMp
OwotICAgIHJldHVybiBhY2Nlc3NpYmxlRWxlbWVudHNGb3JPYmplY3RzKGRldGFpbHNFbGVtZW50
cyk7CisgICAgcmV0dXJuIGFjY2Vzc2libGVFbGVtZW50c0Zvck9iamVjdHMoc2VsZi5heEJhY2tp
bmdPYmplY3QtPmRldGFpbGVkQnlPYmplY3RzKCkpOwogfQogCiAtIChOU0FycmF5ICopYWNjZXNz
aWJpbGl0eUVycm9yTWVzc2FnZUVsZW1lbnRzCiB7CiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFj
Y2Vzc2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIEFYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGVycm9yRWxlbWVudHM7Ci0gICAgc2VsZi5h
eEJhY2tpbmdPYmplY3QtPmFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhlcnJvckVsZW1lbnRzKTsK
LSAgICByZXR1cm4gYWNjZXNzaWJsZUVsZW1lbnRzRm9yT2JqZWN0cyhlcnJvckVsZW1lbnRzKTsK
KyAgICByZXR1cm4gYWNjZXNzaWJsZUVsZW1lbnRzRm9yT2JqZWN0cyhzZWxmLmF4QmFja2luZ09i
amVjdC0+ZXJyb3JNZXNzYWdlT2JqZWN0cygpKTsKIH0KIAogLSAoaWQpYWNjZXNzaWJpbGl0eUxp
bmtlZEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggNmQ5NDQwZDNmYmI2
MDBlOTE5MzZlOWU0MWIyNTMwNWNjMGNhZjU5OC4uOTMyYmU3N2EzZTFiYmQ5ZTE0OWQ3NTkyZTUy
NWU1MjRkMzlkM2U1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTMzMywyNSAr
MzMzLDEyIEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoQVhD
b3JlT2JqZWN0JiBjb3JlT2JqZWN0LCBJc1Jvb3QgaXNSCiAgICAgb2JqZWN0LmxpbmtlZFVJRWxl
bWVudHMobGlua2VkVUlFbGVtZW50cyk7CiAgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkxpbmtlZFVJRWxlbWVudHMsIGxpbmtlZFVJRWxlbWVudHMpOwogCi0gICAg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFDb250cm9sc0VsZW1lbnRzOwotICAgIG9i
amVjdC5hcmlhQ29udHJvbHNFbGVtZW50cyhhcmlhQ29udHJvbHNFbGVtZW50cyk7Ci0gICAgc2V0
T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFDb250cm9sc0VsZW1lbnRz
LCBhcmlhQ29udHJvbHNFbGVtZW50cyk7Ci0KLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgYXJpYURldGFpbHNFbGVtZW50czsKLSAgICBvYmplY3QuYXJpYURldGFpbHNFbGVtZW50cyhh
cmlhRGV0YWlsc0VsZW1lbnRzKTsKLSAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6QVJJQURldGFpbHNFbGVtZW50cywgYXJpYURldGFpbHNFbGVtZW50cyk7Ci0KLSAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzOwot
ICAgIG9iamVjdC5hcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoYXJpYUVycm9yTWVzc2FnZUVsZW1l
bnRzKTsKLSAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQUVy
cm9yTWVzc2FnZUVsZW1lbnRzLCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMpOwotCi0gICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFGbG93VG9FbGVtZW50czsKLSAgICBvYmplY3Qu
YXJpYUZsb3dUb0VsZW1lbnRzKGFyaWFGbG93VG9FbGVtZW50cyk7Ci0gICAgc2V0T2JqZWN0VmVj
dG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFGbG93VG9FbGVtZW50cywgYXJpYUZsb3dU
b0VsZW1lbnRzKTsKLQotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhT3duc0Vs
ZW1lbnRzOwotICAgIG9iamVjdC5hcmlhT3duc0VsZW1lbnRzKGFyaWFPd25zRWxlbWVudHMpOwot
ICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBT3duc0VsZW1l
bnRzLCBhcmlhT3duc0VsZW1lbnRzKTsKKyAgICAvLyBSZWxhdGlvbnMuCisgICAgc2V0T2JqZWN0
VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbnRyb2xsZWRPYmplY3RzLCBvYmplY3Qu
Y29udHJvbGxlZE9iamVjdHMoKSk7CisgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OkRldGFpbGVkQnlPYmplY3RzLCBvYmplY3QuZGV0YWlsZWRCeU9iamVjdHMoKSk7
CisgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkVycm9yTWVzc2Fn
ZU9iamVjdHMsIG9iamVjdC5lcnJvck1lc3NhZ2VPYmplY3RzKCkpOworICAgIHNldE9iamVjdFZl
Y3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpGbG93VG9PYmplY3RzLCBvYmplY3QuZmxvd1Rv
T2JqZWN0cygpKTsKKyAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
T3duZWRPYmplY3RzLCBvYmplY3Qub3duZWRPYmplY3RzKCkpOwogCiAgICAgLy8gU3BpbiBidXR0
b24gc3VwcG9ydC4KICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RGVjcmVt
ZW50QnV0dG9uLCBvYmplY3QuZGVjcmVtZW50QnV0dG9uKCkpOwpAQCAtMTg3NCw1NCArMTg2MSw2
NCBAQCBBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OnNlbGVjdGVkTGlzdEl0ZW0oKQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFBY3Rp
dmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJ
c29sYXRlZE9iamVjdDo6YWN0aXZlRGVzY2VuZGFudE9mT2JqZWN0cygpIGNvbnN0CiB7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBBWElzb2xh
dGVkT2JqZWN0OjphcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBBWElzb2xhdGVkT2JqZWN0Ojpjb250cm9sbGVycygpIGNvbnN0CiB7CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBBWElzb2xhdGVk
T2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJ
c29sYXRlZE9iamVjdDo6ZGVzY3JpYmVkQnlPYmplY3RzKCkgY29uc3QKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmRlc2NyaXB0aW9uRm9yT2JqZWN0cygpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBBWElz
b2xhdGVkT2JqZWN0OjphcmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmRldGFpbHNGb3JPYmplY3RzKCkgY29uc3QKIHsK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEFY
SXNvbGF0ZWRPYmplY3Q6OmFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0OjplcnJvck1lc3NhZ2VGb3JPYmplY3Rz
KCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9Owog
fQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0OjpmbG93RnJvbU9iamVjdHMo
KSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07CiB9
CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYUxhYmVsbGVkQnlFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRlZE9iamVjdDo6bGFiZWxsZWRCeU9iamVjdHMoKSBjb25z
dAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZv
aWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0OjpsYWJlbEZvck9iamVjdHMoKSBj
b25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07CiB9CiAK
LXZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0Ojpvd25lcnMoKSBjb25zdAogewogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07CiB9CiAKIGJvb2wgQVhJc29s
YXRlZE9iamVjdDo6aGFzRGF0YWxpc3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmlu
ZGV4IGRlYjE0YjY1NzFmZjkwZmU0YWIwMjAyYTg5NDkwNDY0NTE4ZWVlMjYuLmM1ODk2NTA0NDVj
MjY3Mzk4NjllYjYwZjM4NDA4ZmQ5M2ZiOWE3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgK
QEAgLTIzMCwxMSArMjMwLDYgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbG9hZGluZ1Byb2dyZXNz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5sb2FkaW5nUHJvZ3Jlc3MoKTsgfQog
ICAgIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xB
dHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNBUklBT3ducyk7IH0KICAgICBi
b29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNBY3RpdmVEZXNj
ZW5kYW50T2ZGb2N1c2VkQ29udGFpbmVyKTsgfQotICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUg
eyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQUNvbnRy
b2xzRWxlbWVudHMsIGNoaWxkcmVuKTsgfQotICAgIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdCBvdmVycmlkZSB7IGZp
bGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBRGV0YWlsc0Vs
ZW1lbnRzLCBjaGlsZHJlbik7IH0KLSAgICB2b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdCBvdmVycmlkZSB7IGZp
bGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBRXJyb3JNZXNz
YWdlRWxlbWVudHMsIGNoaWxkcmVuKTsgfQotICAgIHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmls
bENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFGbG93VG9FbGVt
ZW50cywgY2hpbGRyZW4pOyB9Ci0gICAgdm9pZCBhcmlhT3duc0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVu
VmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFPd25zRWxlbWVudHMsIGNoaWxk
cmVuKTsgfQogICAgIGJvb2wgaGFzUG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29s
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Okhhc1BvcHVwKTsgfQogICAgIFN0cmluZyBw
b3B1cFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RyaW5nQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OlBvcHVwVmFsdWUpOyB9CiAgICAgYm9vbCBwcmVzc2VkSXNQcmVzZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpQcmVzc2VkSXNQcmVzZW50KTsgfQpAQCAtNTQ1LDE2ICs1NDAsMjMgQEAgcHJpdmF0ZToK
ICAgICBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBmbG9hdCBzdGVwVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFY
Q29yZU9iamVjdCogc2VsZWN0ZWRMaXN0SXRlbSgpIG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUFj
dGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3NhZ2VSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhTGFiZWxsZWRC
eUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYU93bnNSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OworCisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFjdGl2ZURlc2NlbmRhbnRPZk9i
amVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
Y29udHJvbGxlZE9iamVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cmVlKCktPm9iamVj
dHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OkNvbnRy
b2xsZWRPYmplY3RzKSk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udHJv
bGxlcnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
ZGVzY3JpYmVkQnlPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGRlc2NyaXB0aW9uRm9yT2JqZWN0cygpIGNvbnN0IG92ZXJyaWRlOworICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxlZEJ5T2JqZWN0cygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1
ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6RGV0YWlsZWRCeU9iamVjdHMpKTsgfQorICAgIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxzRm9yT2JqZWN0cygpIGNvbnN0IG92ZXJyaWRl
OworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJvck1lc3NhZ2VPYmplY3RzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJp
YnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpFcnJvck1lc3NhZ2VPYmplY3RzKSk7IH0K
KyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZXJyb3JNZXNzYWdlRm9yT2JqZWN0cygp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBmbG93VG9P
YmplY3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZl
Y3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpGbG93VG9PYmplY3RzKSk7
IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZmxvd0Zyb21PYmplY3RzKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsbGVkQnlP
YmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGxhYmVsRm9yT2JqZWN0cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBvd25lZE9iamVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cmVlKCkt
Pm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6
Ok93bmVkT2JqZWN0cykpOyB9CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG93bmVy
cygpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgYm9vbCBoYXNEYXRhbGlzdCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgc3VwcG9ydHNIYXNQb3B1cCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgc3VwcG9ydHNQcmVzc2VkKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApp
bmRleCA3YWMwMGYyNzg4ZWI3ZWM0NDJmNjU0ZWUzMDUwMzNjN2UzMTVjOGU0Li42MmRmM2FlOGNm
NDdmOWUxNWI2YjNjMjllNDYwOWFhZTQ5NzkxYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAg
LTQ5LDE3ICs0OSwxMSBAQCBlbnVtIGNsYXNzIEFYU3RyZWFtT3B0aW9ucyA6IHVpbnQ4X3Q7CiB1
c2luZyBBWElzb2xhdGVkVHJlZUlEID0gdW5zaWduZWQ7CiAKIGVudW0gY2xhc3MgQVhQcm9wZXJ0
eU5hbWUgOiB1aW50MTZfdCB7Ci0gICAgQVJJQUNvbnRyb2xzRWxlbWVudHMsCi0gICAgQVJJQURl
dGFpbHNFbGVtZW50cywKLSAgICBEcm9wRWZmZWN0cywKLSAgICBBUklBRXJyb3JNZXNzYWdlRWxl
bWVudHMsCiAgICAgQVJJQUlzTXVsdGlsaW5lLAotICAgIEFSSUFGbG93VG9FbGVtZW50cywKICAg
ICBBUklBTGFuZG1hcmtSb2xlRGVzY3JpcHRpb24sCiAgICAgQVJJQVRyZWVJdGVtQ29udGVudCwK
ICAgICBBUklBVHJlZVJvd3MsCiAgICAgQVJJQVJvbGVBdHRyaWJ1dGUsCi0gICAgQVJJQU93bnNF
bGVtZW50cywKICAgICBBWENvbHVtbkNvdW50LAogICAgIEFYQ29sdW1uSW5kZXgsCiAgICAgQVhS
b3dDb3VudCwKQEAgLTk4LDIwICs5MiwyNSBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDog
dWludDE2X3QgewogICAgIENvbHVtbkluZGV4UmFuZ2UsCiAgICAgQ29tcHV0ZWRSb2xlU3RyaW5n
LAogICAgIENvbnRlbnRzLAorICAgIENvbnRyb2xsZWRPYmplY3RzLAogICAgIEN1cnJlbnRTdGF0
ZSwKICAgICBDdXJyZW50VmFsdWUsCiAgICAgRGF0ZXRpbWVBdHRyaWJ1dGVWYWx1ZSwKICAgICBE
ZWNyZW1lbnRCdXR0b24sCiAgICAgRGVzY3JpcHRpb24sCisgICAgRGV0YWlsZWRCeU9iamVjdHMs
CiAgICAgRGlzY2xvc2VkQnlSb3csCiAgICAgRGlzY2xvc2VkUm93cywKICAgICBEb2N1bWVudEVu
Y29kaW5nLAogICAgIERvY3VtZW50TGlua3MsCiAgICAgRG9jdW1lbnRVUkksCisgICAgRHJvcEVm
ZmVjdHMsCiAgICAgRWRpdGFibGVBbmNlc3RvciwKICAgICBFbWJlZGRlZEltYWdlRGVzY3JpcHRp
b24sCisgICAgRXJyb3JNZXNzYWdlT2JqZWN0cywKICAgICBFeHBhbmRlZFRleHRWYWx1ZSwKICAg
ICBGaWxlVXBsb2FkQnV0dG9uUmV0dXJuc1ZhbHVlSW5UaXRsZSwKKyAgICBGbG93VG9PYmplY3Rz
LAogICAgIEZvY3VzYWJsZUFuY2VzdG9yLAogICAgIEhhc0FSSUFWYWx1ZU5vdywKICAgICBIYXNB
cHBsZVBERkFubm90YXRpb25BdHRyaWJ1dGUsCkBAIC0yNTEsNiArMjUwLDcgQEAgZW51bSBjbGFz
cyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBNYXhWYWx1ZUZvclJhbmdlLAogICAg
IE1pblZhbHVlRm9yUmFuZ2UsCiAgICAgTmFtZUF0dHJpYnV0ZSwKKyAgICBPd25lZE9iamVjdHMs
CiAgICAgT3JpZW50YXRpb24sCiAgICAgT3V0ZXJIVE1MLAogICAgIFBhdGgsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDgxOWZkMTQzYTBkNDBlZjJhM2MwOWFj
OTA3ZDg1MDBiMmUyZWQyMjYuLjA0ODNkYzc0YzMyNWEzZmM2ODg5MjVkNjEyNzg1YTQxZGZkYzIz
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0yNDY2LDEx
ICsyNDY2LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0
cmlidXRlXSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPmludmFsaWRTdGF0dXMoKTsK
IAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
T3duc0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFPd25zOwotICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlh
T3duc0VsZW1lbnRzKGFyaWFPd25zKTsKLSAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGFyaWFP
d25zKTsKLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlPd25zQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJh
Y2tpbmdPYmplY3QtPm93bmVkT2JqZWN0cygpKTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQVBvc0luU2V0QXR0cmlidXRlXSkKICAg
ICAgICAgcmV0dXJuIEAoYmFja2luZ09iamVjdC0+cG9zSW5TZXQoKSk7CkBAIC0yNjI2LDExICsy
NjIzLDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYSXNJbkNlbGwiXSkKICAgICAgICAgcmV0
dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpiYWNraW5nT2JqZWN0LT5pc0luQ2VsbCgpXTsK
IAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERldGFpbHNFbGVt
ZW50cyJdKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBkZXRhaWxzOwotICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhRGV0YWlsc0Vs
ZW1lbnRzKGRldGFpbHMpOwotICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoZGV0YWlscyk7Ci0g
ICAgfQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERldGFpbHNF
bGVtZW50cyJdKQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+ZGV0
YWlsZWRCeU9iamVjdHMoKSk7CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUJyYWlsbGVMYWJlbEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVy
biBiYWNraW5nT2JqZWN0LT5icmFpbGxlTGFiZWwoKTsKQEAgLTI2NDEsMTEgKzI2MzUsOCBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJlbGF0aXZlRnJhbWVBdHRyaWJ1dGVd
KQogICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmVjdDooTlNSZWN0KWJhY2tpbmdP
YmplY3QtPnJlbGF0aXZlRnJhbWUoKV07CiAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOkAiQVhFcnJvck1lc3NhZ2VFbGVtZW50cyJdKSB7Ci0gICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJvck1lc3NhZ2VzOwot
ICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoZXJyb3JNZXNz
YWdlcyk7Ci0gICAgICAgIHJldHVybiBtYWtlTlNBcnJheShlcnJvck1lc3NhZ2VzKTsKLSAgICB9
CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYRXJyb3JNZXNzYWdl
RWxlbWVudHMiXSkKKyAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmVy
cm9yTWVzc2FnZU9iamVjdHMoKSk7CiAKICAgICAvLyBNdWx0aS1zZWxlY3RhYmxlCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJc011bHRpU2Vs
ZWN0YWJsZUF0dHJpYnV0ZV0pCkBAIC0yNjU5LDExICsyNjUwLDggQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiBiYWNraW5nT2JqZWN0LT5kb2N1
bWVudEVuY29kaW5nKCk7CiAKICAgICAvLyBBcmlhIGNvbnRyb2xzIGVsZW1lbnQKLSAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFyaWFDb250cm9s
c0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGFyaWFDb250cm9sczsKLSAgICAgICAgYmFja2luZ09iamVjdC0+YXJp
YUNvbnRyb2xzRWxlbWVudHMoYXJpYUNvbnRyb2xzKTsKLSAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGFyaWFDb250cm9scyk7Ci0gICAgfQorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXJpYUNvbnRyb2xzQXR0cmlidXRlXSkKKyAgICAgICAg
cmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmNvbnRyb2xsZWRPYmplY3RzKCkpOwog
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlG
b2N1c2FibGVBbmNlc3RvckF0dHJpYnV0ZV0pIHsKICAgICAgICAgQVhDb3JlT2JqZWN0KiBvYmpl
Y3QgPSBiYWNraW5nT2JqZWN0LT5mb2N1c2FibGVBbmNlc3RvcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458618</attachid>
            <date>2022-04-29 16:46:23 -0700</date>
            <delta_ts>2022-04-30 13:37:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239848-20220429194622.patch</filename>
            <type>text/plain</type>
            <size>58399</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVlYjMzNmQ3NmFhMjlj
Yjk5YjRlMmFhZmE2YzU3ODRiZmU4YTcxNC4uOWNmODdlYWVmMTllMGExYzA3MmUzYTQyOTA3NmVk
NDBmNzQ5NDAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIyLTA0LTI5ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBDb2RlIGNsZWFu
dXAgaW4gcHJlcGFyYXRpb24gZm9yIHJlZmFjdG9yaW5nIG9mIGNvbXB1dGluZyByZWxhdGlvbnNo
aXBzIGJldHdlZW4gQVhPYmplY3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM5ODQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MjQ1NTU0ND4K
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaCBhbmQgVHlsZXIgV2lsY29jay4K
KworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKCkgYW5kCisgICAgICAgIGFyaWFFbGVt
ZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZSgpIGFyZSB0aGUgbWV0aG9kcyB0aGF0IGN1cnJlbnRs
eQorICAgICAgICBjb21wdXRlIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gb2JqZWN0cy4gVGhl
c2UgbWV0aG9kcyBub3cgcmV0dXJuIGEKKyAgICAgICAgdmVjdG9yIG9mIHRoZSByZWxhdGVkIG9i
amVjdHMgaW5zdGVhZCBvZiB0YWtpbmcgYW4gb3V0IHBhcmFtZXRlci4KKyAgICAgICAgSW4gYWRk
aXRpb24sIGFsbCBhcmlhWFhYRWxlbWVudHMgYW5kIGFyaWFYWFhSZWZlcmVuY2luZ0VsZW1lbnRz
IG1ldGhvZHMKKyAgICAgICAgYXJlIHJlbmFtZWQgdG8gYmV0dGVyIHJlZmxlY3QgdGhlIHJlbGF0
aW9uc2hpcHMgdGhleSByZXRyaWV2ZS4gTm90ZSB0aGF0CisgICAgICAgIHRoZSBwcmVmaXggYXJp
YSBpcyByZW1vdmVkIGZyb20gYWxsIG1ldGhvZCBuYW1lcyBiZWNhdXNlIEFSSUEgaXMgb25lIHdh
eQorICAgICAgICBvZiBlc3RhYmxpc2hpbmcgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIG9iamVjdHMs
IGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlCisgICAgICAgIG9ubHkgd2F5LiBUaGVzZSBjaGFuZ2Vz
IG1ha2UgdGhlIGNvZGUgbW9yZSBjb25jaXNlIGFuZCBjbGVhcmVyLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFbGVtZW50c1Jl
ZmVyZW5jZWRCeUF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWN0aXZlRGVzY2VuZGFudE9m
T2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
b250cm9sbGVkT2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpjb250cm9sbGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpkZXNjcmliZWRCeU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVzY3JpcHRpb25Gb3JPYmplY3RzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFpbGVkQnlPYmplY3RzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFpbHNGb3JPYmpl
Y3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVycm9y
TWVzc2FnZU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6ZXJyb3JNZXNzYWdlRm9yT2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpmbG93VG9PYmplY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZsb3dGcm9tT2JqZWN0cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYWJlbGxlZEJ5T2JqZWN0cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYWJlbEZvck9iamVjdHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6b3duZWRPYmpl
Y3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om93bmVy
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhQWN0
aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUNvbnRyb2xzRWxlbWVudHMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJp
YUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphcmlh
RGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXRhaWxzRWxlbWVudHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYURl
dGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRXJy
b3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRmxvd1RvRWxlbWVudHMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUZsb3dU
b1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxhYmVsbGVkQnlFbGVtZW50cyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhTGFiZWxsZWRC
eVJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYU93bnNFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhT3duc1JlZmVyZW5jaW5n
RWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpsaW5rZWRVSUVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnRhcmdldEVsZW1lbnRGb3JBY3RpdmVEZXNjZW5kYW50IGNvbnN0
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSGVhZGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjphcmlhT3duZWRCeVBh
cmVudCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVS
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGls
ZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpy
ZWxhdGlvbk1hcCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphY3RpdmVEZXNjZW5kYW50T2ZPYmplY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmNvbnRyb2xsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmRlc2NyaWJlZEJ5T2JqZWN0cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpkZXNjcmlwdGlvbkZvck9iamVjdHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZGV0YWlsc0Zvck9iamVjdHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZXJyb3JNZXNzYWdlRm9y
T2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpmbG93
RnJvbU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
bGFiZWxsZWRCeU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9i
amVjdDo6bGFiZWxGb3JPYmplY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6Om93bmVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUNvbnRyb2xzUmVm
ZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhRXJyb3JNZXNzYWdlUmVm
ZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhTGFiZWxsZWRCeUVs
ZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OmFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhT3duc1JlZmVyZW5jaW5nRWxl
bWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMjIt
MDQtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxN
ZWRpYUVsZW1lbnQgY2FuIGdldCBtdWx0aXBsZSBpbnRlcnJ1cHRpb25zIGZvciBpbnZpc2libGUg
YXV0b3BsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggZjQzOGM5YzVkNTI3MDE0Nzc1NDk2MjA2M2Rm
ZDk2NTMwNjMxYzcxNy4uYWFiYTdlZTliOGI4NmQ4YjFkMjZmY2RiYjBiZWI0NTVhN2YwZjA2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKQEAgLTIwNTEsMTIgKzIwNTEsOCBAQCBTdHJpbmcgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNbwogICAgIC8vIHJlZmVyZW5jZWQgYnkgYXJpYS1sYWJlbGxlZGJ5IG9yIGFyaWEtZGVz
Y3JpYmVkYnksIGFuZCBpcyBub3QgYSBob3N0IGxhbmd1YWdlIHRleHQKICAgICAvLyBhbHRlcm5h
dGl2ZSwgdGhlIGVtcHR5IHN0cmluZyBzaG91bGQgYmUgcmV0dXJuZWQuCiAgICAgaWYgKGlzRE9N
SGlkZGVuKCkgJiYgIWlzQXJpYVZpc2libGUgJiYgIWlzPEhUTUxMYWJlbEVsZW1lbnQ+KG5vZGUp
ICYmIChub2RlICYmICFhbmNlc3RvcnNPZlR5cGU8SFRNTENhbnZhc0VsZW1lbnQ+KCpub2RlKS5m
aXJzdCgpKSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgbGFiZWxGb3I7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXNjcmlwdGlvbkZvcjsKLSAgICAgICAgYXJpYUxhYmVs
bGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKGxhYmVsRm9yKTsKLSAgICAgICAgYXJpYURlc2NyaWJl
ZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhkZXNjcmlwdGlvbkZvcik7Ci0gICAgICAgIGlmICghbGFi
ZWxGb3Iuc2l6ZSgpICYmICFkZXNjcmlwdGlvbkZvci5zaXplKCkpCi0gICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgICAgIGlmIChsYWJlbEZvck9iamVjdHMoKS5pc0VtcHR5KCkgJiYg
ZGVzY3JpcHRpb25Gb3JPYmplY3RzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAxODZm
Yzk5ZjZjOWZjYThiYjhkNTJlY2VhZTBkMmQwYzJmZGMzOGM4Li5kNzRkNWY4M2YyODZiYzUyNmIx
OWYzZmQ1Y2MxNWVlYTIyNTI2NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTE5NzgsOCArMTk3OCw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9y
Tm9kZShOb2RlKiBub2RlKQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJvd3MsIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgYW5jZXN0b3JzKQogewotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBh
cmlhT3duczsKLSAgICBhcmlhT3duc0VsZW1lbnRzKGFyaWFPd25zKTsKKyAgICBhdXRvIG93bmVk
T2JqZWN0cyA9IHRoaXMtPm93bmVkT2JqZWN0cygpOwogCiAgICAgYW5jZXN0b3JzLmFwcGVuZCh0
aGlzKTsKIApAQCAtMTk5MCw5ICsxOTg5LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByb3dzLCBBY2Nlc3MKICAg
ICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0
ZW0pIHsKICAgICAgICAgICAgIC8vIENoaWxkIGFwcGVhcnMgYm90aCBhcyBhIGRpcmVjdCBjaGls
ZCBhbmQgYXJpYS1vd25zLCB3ZSBzaG91bGQgdXNlIHRoZSBvcmRlcmluZyBhcwogICAgICAgICAg
ICAgLy8gZGVzY3JpYmVkIGluIGFyaWEtb3ducyBmb3IgdGhpcyBjaGlsZC4KLSAgICAgICAgICAg
IGlmIChhcmlhT3ducy5jb250YWlucyhjaGlsZCkpCisgICAgICAgICAgICBpZiAob3duZWRPYmpl
Y3RzLmNvbnRhaW5zKGNoaWxkKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAorCiAgICAgICAgICAgICAvLyBUaGUgcmVzdWx0IHNldCBtYXkgYWxyZWFkeSBjb250YWlu
IHRoZSBjaGlsZCB0aHJvdWdoIGFyaWEtb3ducy4gRm9yIGV4YW1wbGUsCiAgICAgICAgICAgICAv
LyBhIHRyZWVpdGVtIHNpdHRpbmcgdW5kZXIgdGhlIHRyZWUgcm9vdCwgd2hpY2ggaXMgb3duZWQg
ZWxzZXdoZXJlIGluIHRoZSB0cmVlLgogICAgICAgICAgICAgaWYgKHJvd3MuY29udGFpbnMoY2hp
bGQpKQpAQCAtMjAwNywxMyArMjAwNiwxMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFy
aWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJvd3MsIEFjY2VzcwogICAg
IH0KIAogICAgIC8vIE5vdyBnbyB0aHJvdWdoIHRoZSBhcmlhLW93bnMgZWxlbWVudHMuCi0gICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGFyaWFPd25zKSB7CisgICAgZm9yIChjb25zdCBhdXRv
JiBjaGlsZCA6IG93bmVkT2JqZWN0cykgewogICAgICAgICAvLyBBdm9pZCBhIGNpcmN1bGFyIHJl
ZmVyZW5jZSB2aWEgYXJpYS1vd25zIGJ5IGNoZWNraW5nIGlmIG91ciBwYXJlbnQKICAgICAgICAg
Ly8gcGF0aCBpbmNsdWRlcyB0aGlzIGNoaWxkLiBDdXJyZW50bHksIGxvb2tpbmcgdXAgdGhlIGFy
aWEtb3ducyBwYXJlbnQKICAgICAgICAgLy8gcGF0aCBpdHNlbGYgY291bGQgYmUgZXhwZW5zaXZl
LCBzbyB3ZSB0cmFjayBpdCBzZXBhcmF0ZWx5LgogICAgICAgICBpZiAoYW5jZXN0b3JzLmNvbnRh
aW5zKGNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICAv
LyBBZGQgdHJlZSBpdGVtcyBhcyB0aGUgcm93cy4KICAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0pIHsKICAgICAgICAgICAgIC8vIEhv
cGVmdWxseSBhIGZsb3cgdGhhdCBkb2VzIG5vdCBvY2N1ciBvZnRlbiBpbiBwcmFjdGljZSwgYnV0
IGlmIHNvbWVvbmUgd2VyZSB0byBpbmNsdWRlCkBAIC0yMDIxLDcgKzIwMjAsNyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIHJvd3MsIEFjY2VzcwogICAgICAgICAgICAgLy8gbW92ZSBpdCB0byB0aGUgcmlnaHQgcGxh
Y2UuCiAgICAgICAgICAgICBpZiAocm93cy5jb250YWlucyhjaGlsZCkpCiAgICAgICAgICAgICAg
ICAgcm93cy5yZW1vdmVGaXJzdChjaGlsZCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
cm93cy5hcHBlbmQoY2hpbGQpOwogICAgICAgICB9CiAKQEAgLTIwMjksNyArMjAyOCw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgcm93cywgQWNjZXNzCiAgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5T2JqZWN0
PigqY2hpbGQpKQogICAgICAgICAgICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oKmNo
aWxkKS5hcmlhVHJlZVJvd3Mocm93cywgYW5jZXN0b3JzKTsKICAgICB9Ci0gICAgCisKICAgICBh
bmNlc3RvcnMucmVtb3ZlTGFzdCgpOwogfQogCkBAIC0zOTIwLDQyICszOTE5LDQzIEBAIEFYQ29y
ZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSgpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRz
RnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRz
RnJvbUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0g
ICAgYXV0byBlbGVtZW50cyA9IGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsK
LSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogYXhPYmpl
Y3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCkpCi0gICAgICAgICAgICBjaGlsZHJlbi5h
cHBlbmQoYXhPYmplY3QpOwotICAgIH0KKyAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUo
KTsKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBlbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoYXR0cmlidXRlKS5tYXAoW2NhY2hlXSAoYXV0byogZWxlbWVudCkg
LT4gUmVmUHRyPEFYQ29yZU9iamVjdD4geworICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3Jl
YXRlKGVsZW1lbnQpOworICAgIH0pOwogfQogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpdGVy
YXRlcyB0aGUgd2hvbGUgRE9NIHRyZWUgYW5kIHRyaWVzIHRvIG1hdGNoIGV2ZXJ5IEVsZW1lbnQg
aW4gdGhlIHRyZWUsIHdoaWNoIGlzIHZlcnkgZXhwZW5zaXZlLgogLy8gV2Ugc2hvdWxkIGZpbmQg
YSBiZXR0ZXIgd2F5IHRvIGFjaGlldmUgdGhpcy4KLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6
YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgZWxlbWVudHMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3QKK0FY
Q29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGUpIGNvbnN0CiB7CiAgICAgYXV0byBpZCA9IGlkZW50aWZpZXJBdHRyaWJ1dGUo
KTsKICAgICBpZiAoaWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNh
Y2hlKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAKKyAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igb2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBk
ZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihub2RlKCktPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkp
KSB7CiAgICAgICAgIGF1dG8mIGlkTGlzdCA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihhdHRyaWJ1dGUpOwogICAgICAgICBpZiAoIVNwYWNlU3BsaXRTdHJpbmc6OnNw
YWNlU3BsaXRTdHJpbmdDb250YWluc1ZhbHVlKGlkTGlzdCwgaWQsIFNwYWNlU3BsaXRTdHJpbmc6
OlNob3VsZEZvbGRDYXNlOjpObykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBp
ZiAoYXV0byogYXhPYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoJmVsZW1lbnQpKQotICAgICAg
ICAgICAgZWxlbWVudHMuYXBwZW5kKGF4T2JqZWN0KTsKKyAgICAgICAgaWYgKGF1dG8qIG9iamVj
dCA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmZWxlbWVudCkpCisgICAgICAgICAgICBvYmplY3RzLmFw
cGVuZChvYmplY3QpOwogICAgIH0KKyAgICByZXR1cm4gb2JqZWN0czsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBj
b25zdAogewotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250YWluZXJzOwotICAg
IGFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhjb250YWluZXJzKTsKKyAg
ICBhdXRvIGNvbnRhaW5lcnMgPSBhY3RpdmVEZXNjZW5kYW50T2ZPYmplY3RzKCk7CiAgICAgZm9y
IChhdXRvJiBjb250YWluZXIgOiBjb250YWluZXJzKSB7CiAgICAgICAgIGlmIChjb250YWluZXIt
PmlzRm9jdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zOTY0LDgzICszOTY0
LDg1IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1
c2VkQ29udGFpbmVyKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY29udGFpbmVycykgY29uc3QKK0FYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGl2
ZURlc2NlbmRhbnRPZk9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5j
ZWRCeUF0dHJpYnV0ZShjb250YWluZXJzLCBhcmlhX2FjdGl2ZWRlc2NlbmRhbnRBdHRyKTsKKyAg
ICByZXR1cm4gYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfYWN0aXZlZGVz
Y2VuZGFudEF0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDb250cm9s
c0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYXJpYUNvbnRyb2xzKSBjb25z
dAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0
eU9iamVjdDo6Y29udHJvbGxlZE9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c0Zy
b21BdHRyaWJ1dGUoYXJpYUNvbnRyb2xzLCBhcmlhX2NvbnRyb2xzQXR0cik7CisgICAgcmV0dXJu
IGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYV9jb250cm9sc0F0dHIpOwogfQogCi12b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjb250cm9sbGVycykgY29uc3QKK0FYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbnRy
b2xsZXJzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUo
Y29udHJvbGxlcnMsIGFyaWFfY29udHJvbHNBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRz
UmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfY29udHJvbHNBdHRyKTsKIH0KIAotdm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGFyaWFEZXNjcmliZWRCeSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlc2NyaWJlZEJ5T2Jq
ZWN0cygpIGNvbnN0CiB7Ci0gICAgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhRGVzY3Jp
YmVkQnksIGFyaWFfZGVzY3JpYmVkYnlBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzRnJv
bUF0dHJpYnV0ZShhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImIGRlc2NyaWJlcnMpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXNjcmlwdGlvbkZvck9i
amVjdHMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShk
ZXNjcmliZXJzLCBhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CisgICAgcmV0dXJuIGFyaWFFbGVtZW50
c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CiB9CiAKLXZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGFyaWFEZXRhaWxzKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWlsZWRCeU9iamVjdHMo
KSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYURldGFpbHMsIGFy
aWFfZGV0YWlsc0F0dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGFy
aWFfZGV0YWlsc0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXRh
aWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGRldGFp
bHNGb3IpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhaWxzRm9yT2JqZWN0cygpIGNvbnN0CiB7Ci0gICAgYXJp
YUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGRldGFpbHNGb3IsIGFyaWFfZGV0YWlsc0F0
dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoYXJpYV9k
ZXRhaWxzQXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVycm9yTWVz
c2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYXJpYUVycm9yTWVzc2Fn
ZSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmVycm9yTWVzc2FnZU9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFF
bGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYUVycm9yTWVzc2FnZSwgYXJpYV9lcnJvcm1lc3NhZ2VB
dHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhX2Vycm9ybWVz
c2FnZUF0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFcnJvck1lc3Nh
Z2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZXJyb3JN
ZXNzYWdlRm9yKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZXJyb3JNZXNzYWdlRm9yT2JqZWN0cygpIGNvbnN0CiB7
Ci0gICAgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGVycm9yTWVzc2FnZUZvciwg
YXJpYV9lcnJvcm1lc3NhZ2VBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzUmVmZXJlbmNl
ZEJ5QXR0cmlidXRlKGFyaWFfZXJyb3JtZXNzYWdlQXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6YXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgZmxvd1RvKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmxvd1RvT2JqZWN0cygpIGNvbnN0CiB7Ci0gICAgYXJp
YUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShmbG93VG8sIGFyaWFfZmxvd3RvQXR0cik7CisgICAgcmV0
dXJuIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYV9mbG93dG9BdHRyKTsKIH0KIAotdm9p
ZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGZsb3dGcm9tKSBjb25zdAorQVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmxvd0Zyb21P
YmplY3RzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUo
Zmxvd0Zyb20sIGFyaWFfZmxvd3RvQXR0cik7CisgICAgcmV0dXJuIGFyaWFFbGVtZW50c1JlZmVy
ZW5jZWRCeUF0dHJpYnV0ZShhcmlhX2Zsb3d0b0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFyaWFMYWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBhcmlhTGFiZWxsZWRCeSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxhYmVsbGVkQnlPYmplY3RzKCkgY29u
c3QKIHsKLSAgICBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGFyaWFMYWJlbGxlZEJ5LCBhcmlh
X2xhYmVsbGVkYnlBdHRyKTsKLSAgICBpZiAoIWFyaWFMYWJlbGxlZEJ5LnNpemUoKSkKLSAgICAg
ICAgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhTGFiZWxsZWRCeSwgYXJpYV9sYWJlbGVk
YnlBdHRyKTsKKyAgICBhdXRvIGxhYmVsbGVkQnlPYmplY3RzID0gYXJpYUVsZW1lbnRzRnJvbUF0
dHJpYnV0ZShhcmlhX2xhYmVsbGVkYnlBdHRyKTsKKyAgICBpZiAobGFiZWxsZWRCeU9iamVjdHMu
aXNFbXB0eSgpKQorICAgICAgICBsYWJlbGxlZEJ5T2JqZWN0cyA9IGFyaWFFbGVtZW50c0Zyb21B
dHRyaWJ1dGUoYXJpYV9sYWJlbGVkYnlBdHRyKTsKKyAgICByZXR1cm4gbGFiZWxsZWRCeU9iamVj
dHM7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxhYmVsbGVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgbGFiZWxzKSBjb25zdAor
QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9i
amVjdDo6bGFiZWxGb3JPYmplY3RzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNSZWZlcmVu
Y2VkQnlBdHRyaWJ1dGUobGFiZWxzLCBhcmlhX2xhYmVsbGVkYnlBdHRyKTsKLSAgICBpZiAoIWxh
YmVscy5zaXplKCkpCi0gICAgICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShs
YWJlbHMsIGFyaWFfbGFiZWxlZGJ5QXR0cik7CisgICAgYXV0byBvYmplY3RzID0gYXJpYUVsZW1l
bnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfbGFiZWxsZWRieUF0dHIpOworICAgIGlmIChv
YmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgb2JqZWN0cyA9IGFyaWFFbGVtZW50c1JlZmVyZW5j
ZWRCeUF0dHJpYnV0ZShhcmlhX2xhYmVsZWRieUF0dHIpOworICAgIHJldHVybiBvYmplY3RzOwog
fQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiBheE9iamVjdHMpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpvd25lZE9iamVjdHMo
KSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXhPYmplY3RzLCBhcmlh
X293bnNBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhX293
bnNBdHRyKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhT3duc1JlZmVyZW5j
aW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBvd25lcnMpIGNvbnN0CitB
WENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpvd25lcnMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJp
YnV0ZShvd25lcnMsIGFyaWFfb3duc0F0dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNSZWZl
cmVuY2VkQnlBdHRyaWJ1dGUoYXJpYV9vd25zQXR0cik7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBWENvcmVPYmplY3Qq
IGNoaWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAppbmRleCA0NmZlZDc2ZTRmYmY2YWE2OWYxMDc4YjZkNzk2Yjk3MmJjNjJhOWI3
Li4xNGNmOWMwOGZlY2RkMzUwMzBlY2U4ZDNjMGQ5YTM4ZmE5YzA4YzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMzAx
LDIxICszMDEsMjIgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNBUklBUm9sZURlc2NyaXB0
aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENv
bnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRS
ZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlh
TGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYU93
bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2b2lkIGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBhY3RpdmVEZXNjZW5kYW50T2ZPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZWRPYmplY3RzKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZXJzKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRlc2NyaWJlZEJ5T2Jq
ZWN0cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBk
ZXNjcmlwdGlvbkZvck9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgZGV0YWlsZWRCeU9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGV0YWlsc0Zvck9iamVjdHMoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZXJyb3JNZXNzYWdlT2JqZWN0
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJv
ck1lc3NhZ2VGb3JPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGZsb3dUb09iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgZmxvd0Zyb21PYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsbGVkQnlPYmplY3RzKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsRm9yT2JqZWN0
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBvd25l
ZE9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3Igb3duZXJzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGhhc1BvcHVwKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBTdHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtMzg0LDcgKzM4NSw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8U3RyaW5n
PiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiBjb25zdCYp
IG92ZXJyaWRlOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2b2lkIGxpbmtlZFVJRWxl
bWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Cisg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxpbmtlZE9iamVjdHMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB7IH07IH0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZVVJRWxl
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3Jy
ZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KQEAgLTgxMSw4ICs4MTIsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMg
Ym9vbCBpc0FSSUFJbnB1dChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAKLSAgICB2b2lkIGFyaWFFbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0
cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUVsZW1lbnRzRnJv
bUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICBGbG9hdFJlY3QgdW5vYnNjdXJlZENv
bnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmFk
aW9Hcm91cEFuY2VzdG9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IDI2MTQ5
M2E3YzMwMDhhMjEwODhiZWJmMThiMTYyMGNiYzU5ZmU5MzIuLmI4YzdlYjFlZjEzZDc2M2JjYTUy
NTY4ZTZlNzc0MjM1NWFlOTBhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC0xMDQ4LDIx
ICsxMDQ4LDIzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25z
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3Vz
ZWRDb250YWluZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFBY3RpdmVEZXNj
ZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYUNv
bnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJp
YURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBh
cmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBhcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFGbG93VG9FbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFPd25zRWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3QgPSAwOworCisgICAgLy8gUmV0cmlldmFsIG9mIHJlbGF0ZWQgb2JqZWN0cy4KKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhY3RpdmVEZXNjZW5kYW50T2ZP
YmplY3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGNvbnRyb2xsZWRPYmplY3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZXJzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRlc2NyaWJlZEJ5T2JqZWN0cygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXNjcmlwdGlvbkZv
ck9iamVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgZGV0YWlsZWRCeU9iamVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGV0YWlsc0Zvck9iamVjdHMoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZXJyb3JNZXNzYWdlT2JqZWN0cygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJv
ck1lc3NhZ2VGb3JPYmplY3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGZsb3dUb09iamVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZmxvd0Zyb21PYmplY3RzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsbGVkQnlPYmplY3Rz
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxh
YmVsRm9yT2JqZWN0cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBvd25lZE9iamVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igb3duZXJzKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBi
b29sIGhhc1BvcHVwKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHBvcHVwVmFsdWUo
KSBjb25zdCA9IDA7CkBAIC0xMTI4LDcgKzExMzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJh
dGlvbiBjb25zdCYpID0gMDsKIAogICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBvYnNlcnZhYmxl
T2JqZWN0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBsaW5rZWRPYmplY3RzKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgQVhDb3JlT2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIEFYQ29yZU9iamVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250cm9s
Rm9yTGFiZWxFbGVtZW50KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggMDQw
NGNiNzQxNDVkYTBiMjUxZmQwZWZjYWMyNDc3NGNkNjE0OTgzMi4uNjVkOWU1YjcyZWI5MDJjMGYz
ODQwM2FjOTc2ZTNiM2M5ZTdmMTZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMDc2LDIx
ICsxMDc2LDIzIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmFkaW9CdXR0
b25Hcm91cE1lbWJlcnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuCiAgICAgICAgIH0KICAgICB9CiB9
Ci0gICAgCi0vLyBsaW5rZWQgdWkgZWxlbWVudHMgY291bGQgYmUgYWxsIHRoZSByZWxhdGVkIHJh
ZGlvIGJ1dHRvbnMgaW4gYSBncm91cAotLy8gb3IgYW4gaW50ZXJuYWwgYW5jaG9yIGNvbm5lY3Rp
b24KLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bGlua2VkVUlFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0CisKKy8vIExp
bmtlZCB1aSBlbGVtZW50cyBjb3VsZCBiZSBhbGwgdGhlIHJlbGF0ZWQgcmFkaW8gYnV0dG9ucyBp
biBhIGdyb3VwCisvLyBvciBhbiBpbnRlcm5hbCBhbmNob3IgY29ubmVjdGlvbi4KK0FYQ29yZU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmxpbmtlZE9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFGbG93VG9FbGVtZW50cyhsaW5r
ZWRVSUVsZW1lbnRzKTsKKyAgICBhdXRvIGxpbmtlZE9iamVjdHMgPSBmbG93VG9PYmplY3RzKCk7
CiAKICAgICBpZiAoaXNMaW5rKCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlu
a2VkQVhFbGVtZW50ID0gaW50ZXJuYWxMaW5rRWxlbWVudCgpOworICAgICAgICBhdXRvKiBsaW5r
ZWRBWEVsZW1lbnQgPSBpbnRlcm5hbExpbmtFbGVtZW50KCk7CiAgICAgICAgIGlmIChsaW5rZWRB
WEVsZW1lbnQpCi0gICAgICAgICAgICBsaW5rZWRVSUVsZW1lbnRzLmFwcGVuZChsaW5rZWRBWEVs
ZW1lbnQpOworICAgICAgICAgICAgbGlua2VkT2JqZWN0cy5hcHBlbmQobGlua2VkQVhFbGVtZW50
KTsKICAgICB9CiAKICAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJh
ZGlvQnV0dG9uKQotICAgICAgICBhZGRSYWRpb0J1dHRvbkdyb3VwTWVtYmVycyhsaW5rZWRVSUVs
ZW1lbnRzKTsKKyAgICAgICAgYWRkUmFkaW9CdXR0b25Hcm91cE1lbWJlcnMobGlua2VkT2JqZWN0
cyk7CisKKyAgICByZXR1cm4gbGlua2VkT2JqZWN0czsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpoYXNQb3B1cCgpIGNvbnN0CkBAIC0yNzE1LDExICsyNzE3LDEwIEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjdGl2ZURlc2Nl
bmRhbnQoKSBjb25zdAogCiBSZW5kZXJPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnRhcmdldEVsZW1lbnRGb3JBY3RpdmVEZXNjZW5kYW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQpIGNvbnN0
CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGVsZW1lbnRzOwotICAgIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoZWxlbWVudHMsIGF0dHJp
YnV0ZU5hbWUpOwotICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7Ci0g
ICAgICAgIGlmIChhY3RpdmVEZXNjZW5kYW50LT5pc0Rlc2NlbmRhbnRPZk9iamVjdChlbGVtZW50
LmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50LT5yZW5kZXJlcigpOworICAgIGF1
dG8gb2JqZWN0cyA9IGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBvYmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgIGlmIChhY3Rp
dmVEZXNjZW5kYW50LT5pc0Rlc2NlbmRhbnRPZk9iamVjdChvYmplY3QuZ2V0KCkpKQorICAgICAg
ICAgICAgcmV0dXJuIG9iamVjdC0+cmVuZGVyZXIoKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggZTcwODk5YzViZWFlYmU0MGYxODQyZjJhMjU1ZGJj
MTQxNzE4NzAxMC4uZTBiNGEzYWE4YWQ4ODQyNGYyNzkwOGU4MjQ0MGJlNzViNDNkMWNlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZvaWQgbGlua2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGlu
a2VkT2JqZWN0cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRp
dGxlVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQVJJQU93
bnMoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4IDYyM2E2MDI4ZTQyZTU0YmFl
YzMwNjMxYzc0OTM3NGYzMjhlODcwNjEuLmM5MTk0ZjJiZWUyYjAyODM5MjhjNzI0YzllNWY2ZGJh
ZjZhN2YxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAtMjM2LDE2ICsyMzYsMTUgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gaXNUYWJsZUhlYWRlckNlbGwoKSAmJiBoYXNBdHRyaWJ1dGUoYWJickF0dHIp
OwogfQotICAgIAorCiBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5IZWFkZXJzKCkKIHsKLSAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgaGVhZGVyczsKLSAgICBBY2Nlc3NpYmlsaXR5VGFibGUqIHBhcmVu
dCA9IHBhcmVudFRhYmxlKCk7CisgICAgYXV0byogcGFyZW50ID0gcGFyZW50VGFibGUoKTsKICAg
ICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuIGhlYWRlcnM7CisgICAgICAgIHJldHVybiB7
IH07CiAKICAgICAvLyBDaG9vc2UgY29sdW1uSGVhZGVycyBhcyB0aGUgcGxhY2Ugd2hlcmUgdGhl
ICJoZWFkZXJzIiBhdHRyaWJ1dGUgaXMgcmVwb3J0ZWQuCi0gICAgYXJpYUVsZW1lbnRzRnJvbUF0
dHJpYnV0ZShoZWFkZXJzLCBoZWFkZXJzQXR0cik7CisgICAgYXV0byBoZWFkZXJzID0gYXJpYUVs
ZW1lbnRzRnJvbUF0dHJpYnV0ZShoZWFkZXJzQXR0cik7CiAgICAgLy8gSWYgdGhlIGhlYWRlcnMg
YXR0cmlidXRlIHJldHVybmVkIHZhbGlkIHZhbHVlcywgdGhlbiBkbyBub3QgZnVydGhlciBzZWFy
Y2ggZm9yIGNvbHVtbiBoZWFkZXJzLgogICAgIGlmICghaGVhZGVycy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBoZWFkZXJzOwpAQCAtMjY4LDcgKzI2Nyw3IEBAIEFYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbHVtbkhl
YWRlcnMoCiAKICAgICByZXR1cm4gaGVhZGVyczsKIH0KLSAgICAKKwogQVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SGVh
ZGVycygpCiB7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGhlYWRlcnM7CkBAIC0y
OTYsMTEgKzI5NSw5IEBAIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0hlYWRlcnMoKQogCiBBY2Nlc3NpYmlsaXR5VGFi
bGVSb3cqIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmFyaWFPd25lZEJ5UGFyZW50KCkgY29uc3QK
IHsKLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bmVkQnk7Ci0gICAgYXJp
YU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKGFyaWFPd25lZEJ5KTsKLSAgICBpZiAoYXJpYU93bmVk
Qnkuc2l6ZSgpID09IDEgJiYgYXJpYU93bmVkQnlbMF0tPmlzVGFibGVSb3coKSkKLSAgICAgICAg
cmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oYXJpYU93bmVkQnlbMF0uZ2V0
KCkpOwotCisgICAgYXV0byBvd25lcnMgPSB0aGlzLT5vd25lcnMoKTsKKyAgICBpZiAob3duZXJz
LnNpemUoKSA9PSAxICYmIG93bmVyc1swXS0+aXNUYWJsZVJvdygpKQorICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pihvd25lcnNbMF0uZ2V0KCkpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKaW5kZXggMWRmOThjOGQ2MTljZGUwZjgzMzFk
YWY1OGVhZmFlYmY5ZGNlNmQ0YS4uMDg3ZGRlMDI1NDRhYzI4MWFkNzNjYTZkOGMzYzhkNjA3YWZj
ZDBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMTQ2LDE5ICsxNDYsMTggQEAgQVhDb3JlT2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVjdCgpCiAgICAgCiAgICAgcmV0dXJuIGNl
bGw7CiB9Ci0gICAgCisKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGlsZHJlbigp
CiB7CiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgc3BlY2lmaWVzIGl0cyBjZWxscyB0aHJvdWdoIGFy
aWEtb3ducywgcmV0dXJuIHRoYXQgZmlyc3QuCi0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGFyaWFPd25lZEVsZW1lbnRzOwotICAgIGFyaWFPd25zRWxlbWVudHMoYXJpYU93bmVkRWxl
bWVudHMpOwotICAgIGlmIChhcmlhT3duZWRFbGVtZW50cy5zaXplKCkpIHsKLSAgICAgICAgZm9y
IChhdXRvJiBhcmlhT3duZWRFbGVtZW50IDogYXJpYU93bmVkRWxlbWVudHMpCi0gICAgICAgICAg
ICBhZGRDaGlsZChhcmlhT3duZWRFbGVtZW50LmdldCgpLCBEZXNjZW5kSWZJZ25vcmVkOjpObyk7
CisgICAgYXV0byBvd25lZE9iamVjdHMgPSB0aGlzLT5vd25lZE9iamVjdHMoKTsKKyAgICBpZiAo
b3duZWRPYmplY3RzLnNpemUoKSkgeworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG93bmVk
T2JqZWN0cykKKyAgICAgICAgICAgIGFkZENoaWxkKG9iamVjdC5nZXQoKSwgRGVzY2VuZElmSWdu
b3JlZDo6Tm8pOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFkZENoaWxkcmVuKCk7Ci0gICAgCisKICAgICAvLyAiQVJJQSAxLjEsIElmIHRoZSBz
ZXQgb2YgY29sdW1ucyB3aGljaCBpcyBwcmVzZW50IGluIHRoZSBET00gaXMgY29udGlndW91cywg
YW5kIGlmIHRoZXJlIGFyZSBubyBjZWxscyB3aGljaCBzcGFuIG1vcmUgdGhhbiBvbmUgcm93IG9y
CiAgICAgLy8gY29sdW1uIGluIHRoYXQgc2V0LCB0aGVuIGF1dGhvcnMgbWF5IHBsYWNlIGFyaWEt
Y29saW5kZXggb24gZWFjaCByb3csIHNldHRpbmcgdGhlIHZhbHVlIHRvIHRoZSBpbmRleCBvZiB0
aGUgZmlyc3QgY29sdW1uIG9mIHRoZSBzZXQuIgogICAgIC8vIFVwZGF0ZSBjaGlsZCBjZWxscycg
YXhDb2xJbmRleCBpZiB0aGVyZSdzIGFuIGFyaWEtY29saW5kZXggdmFsdWUgc2V0IGZvciB0aGUg
cm93LiBTbyB0aGUgY2VsbCBkb2Vzbid0IGhhdmUgdG8gZ28gdGhyb3VnaCB0aGUgc2libGluZ3MK
QEAgLTE2Niw3ICsxNjUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YWRkQ2hpbGRy
ZW4oKQogICAgIGludCBjb2xJbmRleCA9IGF4Q29sdW1uSW5kZXgoKTsKICAgICBpZiAoY29sSW5k
ZXggPT0gLTEpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNlbGwgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlm
IChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2VsbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaS5jcHAKaW5kZXggZGE5MmZkNDEzZjEwNzdjNzEyOTBlMTNhM2U1NDg2MjBiZTdjODk2Ny4u
NmFiYjUzY2M3OGFlYjkzOWNiY2Q5NWJhZDkyZTg2NzYxY2E1ZDI5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcApAQCAtMTA2OCw2MCArMTA2OCw0OCBAQCBIYXNoTWFwPHVpbnQzMl90
LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaT4+PiBBY2Nlc3NpYmlsaXR5
T2JqZWN0QQogICAgICAgICBtX2NvcmVPYmplY3QtPmFyaWFMYWJlbGxlZEJ5RWxlbWVudHMoYXJp
YUxhYmVsbGVkQnlFbGVtZW50cyk7CiAgICAgYWRkUmVsYXRpb24oQXRzcGk6OkxhYmVsbGVkQnks
IGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMpOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50
czsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
bGFiZWxGb3JPYmplY3RzOwogICAgIGlmIChhdXRvKiBjb250cm9sID0gbV9jb3JlT2JqZWN0LT5j
b3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpKQotICAgICAgICBhcmlhTGFiZWxs
ZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMuYXBwZW5kKGNvbnRyb2wpOworICAgICAgICBsYWJlbEZv
ck9iamVjdHMuYXBwZW5kKGNvbnRyb2wpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb3JlT2JqZWN0
LT5hcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoYXJpYUxhYmVsbGVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzKTsKLSAgICBhZGRSZWxhdGlvbihBdHNwaTo6TGFiZWxGb3IsIGFyaWFMYWJl
bGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyk7CisgICAgICAgIGxhYmVsRm9yT2JqZWN0cyA9IG1f
Y29yZU9iamVjdC0+bGFiZWxGb3IoKTsKKyAgICBhZGRSZWxhdGlvbihBdHNwaTo6TGFiZWxGb3Is
IGxhYmVsRm9yT2JqZWN0cyk7CiAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUZsb3dUb0VsZW1lbnRzOwogICAgIG1fY29yZU9iamVjdC0+
YXJpYUZsb3dUb0VsZW1lbnRzKGFyaWFGbG93VG9FbGVtZW50cyk7CiAgICAgYWRkUmVsYXRpb24o
QXRzcGk6OkZsb3dzVG8sIGFyaWFGbG93VG9FbGVtZW50cyk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUZsb3dUb1JlZmVyZW5jaW5n
RWxlbWVudHM7Ci0gICAgbV9jb3JlT2JqZWN0LT5hcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50
cyhhcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyk7Ci0gICAgYWRkUmVsYXRpb24oQXRzcGk6
OkZsb3dzRnJvbSwgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMpOworICAgIGFkZFJlbGF0
aW9uKEF0c3BpOjpGbG93c0Zyb20sIG1fY29yZU9iamVjdC0+Zmxvd3NGcm9tKCkpOwogCiAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFEZXNj
cmliZWRCeUVsZW1lbnRzOwogICAgIG1fY29yZU9iamVjdC0+YXJpYURlc2NyaWJlZEJ5RWxlbWVu
dHMoYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMpOwogICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpEZXNj
cmliZWRCeSwgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMpOwogCi0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFEZXNjcmliZWRCeVJlZmVyZW5j
aW5nRWxlbWVudHM7Ci0gICAgbV9jb3JlT2JqZWN0LT5hcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2lu
Z0VsZW1lbnRzKGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMpOwotICAgIGFkZFJl
bGF0aW9uKEF0c3BpOjpEZXNjcmlwdGlvbkZvciwgYXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdF
bGVtZW50cyk7CisgICAgYWRkUmVsYXRpb24oQXRzcGk6OkRlc2NyaXB0aW9uRm9yLCBtX2NvcmVP
YmplY3QtPmRlc2NyaXB0aW9uRm9yKCkpOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFDb250cm9sc0VsZW1lbnRzOwogICAgIG1fY29y
ZU9iamVjdC0+YXJpYUNvbnRyb2xzRWxlbWVudHMoYXJpYUNvbnRyb2xzRWxlbWVudHMpOwogICAg
IGFkZFJlbGF0aW9uKEF0c3BpOjpDb250cm9sbGVyRm9yLCBhcmlhQ29udHJvbHNFbGVtZW50cyk7
CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
YXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50czsKLSAgICBtX2NvcmVPYmplY3QtPmFyaWFD
b250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoYXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50
cyk7Ci0gICAgYWRkUmVsYXRpb24oQXRzcGk6OkNvbnRyb2xsZWRCeSwgYXJpYUNvbnRyb2xzUmVm
ZXJlbmNpbmdFbGVtZW50cyk7CisgICAgYWRkUmVsYXRpb24oQXRzcGk6OkNvbnRyb2xsZWRCeSwg
bV9jb3JlT2JqZWN0LT5jb250cm9sbGVycygpKTsKIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhT3duc0VsZW1lbnRzOwogICAgIG1fY29y
ZU9iamVjdC0+YXJpYU93bnNFbGVtZW50cyhhcmlhT3duc0VsZW1lbnRzKTsKICAgICBhZGRSZWxh
dGlvbihBdHNwaTo6Tm9kZVBhcmVudE9mLCBhcmlhT3duc0VsZW1lbnRzKTsKIAotICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhT3duc1JlZmVy
ZW5jaW5nRWxlbWVudHM7Ci0gICAgbV9jb3JlT2JqZWN0LT5hcmlhT3duc1JlZmVyZW5jaW5nRWxl
bWVudHMoYXJpYU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKTsKLSAgICBhZGRSZWxhdGlvbihBdHNw
aTo6Tm9kZUNoaWxkT2YsIGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyk7CisgICAgYWRkUmVs
YXRpb24oQXRzcGk6Ok5vZGVDaGlsZE9mLCBtX2NvcmVPYmplY3QtPm93bmVycygpKTsKIAogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRGV0
YWlsc0VsZW1lbnRzOwogICAgIG1fY29yZU9iamVjdC0+YXJpYURldGFpbHNFbGVtZW50cyhhcmlh
RGV0YWlsc0VsZW1lbnRzKTsKICAgICBhZGRSZWxhdGlvbihBdHNwaTo6RGV0YWlscywgYXJpYURl
dGFpbHNFbGVtZW50cyk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgYXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzOwotICAgIG1fY29y
ZU9iamVjdC0+YXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzKGFyaWFEZXRhaWxzUmVmZXJl
bmNpbmdFbGVtZW50cyk7Ci0gICAgYWRkUmVsYXRpb24oQXRzcGk6OkRldGFpbHNGb3IsIGFyaWFE
ZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyk7CisgICAgYWRkUmVsYXRpb24oQXRzcGk6OkRldGFp
bHNGb3IsIG1fY29yZU9iamVjdC0+ZGV0YWlsc0ZvcigpKTsKIAogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRXJyb3JNZXNzYWdlRWxlbWVu
dHM7CiAgICAgbV9jb3JlT2JqZWN0LT5hcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoYXJpYUVycm9y
TWVzc2FnZUVsZW1lbnRzKTsKICAgICBhZGRSZWxhdGlvbihBdHNwaTo6RXJyb3JNZXNzYWdlLCBh
cmlhRXJyb3JNZXNzYWdlRWxlbWVudHMpOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1l
bnRzOwotICAgIG1fY29yZU9iamVjdC0+YXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVu
dHMoYXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMpOwotICAgIGFkZFJlbGF0aW9u
KEF0c3BpOjpFcnJvckZvciwgYXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMpOwor
ICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpFcnJvckZvciwgbV9jb3JlT2JqZWN0LT5lcnJvck1lc3Nh
Z2VGb3IoKSk7CiAKICAgICByZXR1cm4gbWFwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5tbQppbmRleCBhZDMzNjZiMTk3MGZlMDZiZWQ2YjhhNTAxNmI3MTVmOTFiZWNm
YzhhLi45NTE2ZDYyYTAyZGUzNzY0ODU4NmQxMWYyMTJjMDJhZmQ0M2Q1NWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTQ2MCwxNCArMTQ2MCwxMyBAQCBz
dGF0aWMgdm9pZCBhcHBlbmRTdHJpbmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwg
TlNTdHJpbmcgKnN0cmluZykKICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQs
IDApOwogCiAgICAgaWYgKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5pc1JhZGlvQnV0dG9uKCkpIHsK
LSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IHJhZGlvQnV0dG9uU2libGluZ3M7Ci0gICAgICAgIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5saW5r
ZWRVSUVsZW1lbnRzKHJhZGlvQnV0dG9uU2libGluZ3MpOworICAgICAgICBhdXRvIHJhZGlvQnV0
dG9uU2libGluZ3MgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+bGlua2VkT2JqZWN0cygpOwogICAg
ICAgICBpZiAocmFkaW9CdXR0b25TaWJsaW5ncy5zaXplKCkgPD0gMSkKICAgICAgICAgICAgIHJl
dHVybiBOU01ha2VSYW5nZShOU05vdEZvdW5kLCAwKTsKLSAgICAgICAgCisKICAgICAgICAgcmV0
dXJuIE5TTWFrZVJhbmdlKHJhZGlvQnV0dG9uU2libGluZ3MuZmluZChzZWxmLmF4QmFja2luZ09i
amVjdCksIHJhZGlvQnV0dG9uU2libGluZ3Muc2l6ZSgpKTsKICAgICB9Ci0gICAgCisKICAgICBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsKiB0YWJsZUNlbGwgPSBbc2VsZiB0YWJsZUNlbGxQYXJlbnRd
OwogICAgIGlmICghdGFibGVDZWxsKQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RG
b3VuZCwgMCk7CkBAIC0xOTA4LDExICsxOTA3LDggQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5n
VG9SZXN1bHQoTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiB7CiAg
ICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3IgY2hpbGRyZW47Ci0gICAgc2VsZi5heEJhY2tpbmdPYmplY3QtPmFyaWFGbG93VG9F
bGVtZW50cyhjaGlsZHJlbik7Ci0gICAgCi0gICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoY2hpbGRy
ZW4sIFtdIChhdXRvJiBjaGlsZCkgLT4gaWQgeworCisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXko
c2VsZi5heEJhY2tpbmdPYmplY3QtPmZsb3dUb09iamVjdHMoKSwgW10gKGF1dG8mIGNoaWxkKSAt
PiBpZCB7CiAgICAgICAgIGF1dG8gd3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7CiAgICAgICAg
IEFTU0VSVCh3cmFwcGVyKTsKIApAQCAtMTk0NSwyMCArMTk0MSwxNCBAQCBzdGF0aWMgTlNBcnJh
eSAqYWNjZXNzaWJsZUVsZW1lbnRzRm9yT2JqZWN0cyhjb25zdCBBWENvcmVPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaAogewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0p
CiAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBkZXRhaWxzRWxlbWVudHM7Ci0gICAgc2VsZi5heEJhY2tpbmdPYmplY3Qt
PmFyaWFEZXRhaWxzRWxlbWVudHMoZGV0YWlsc0VsZW1lbnRzKTsKLSAgICByZXR1cm4gYWNjZXNz
aWJsZUVsZW1lbnRzRm9yT2JqZWN0cyhkZXRhaWxzRWxlbWVudHMpOworICAgIHJldHVybiBhY2Nl
c3NpYmxlRWxlbWVudHNGb3JPYmplY3RzKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kZXRhaWxlZEJ5
T2JqZWN0cygpKTsKIH0KIAogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlFcnJvck1lc3NhZ2VF
bGVtZW50cwogewogICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBlcnJvckVsZW1lbnRzOwotICAgIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5hcmlh
RXJyb3JNZXNzYWdlRWxlbWVudHMoZXJyb3JFbGVtZW50cyk7Ci0gICAgcmV0dXJuIGFjY2Vzc2li
bGVFbGVtZW50c0Zvck9iamVjdHMoZXJyb3JFbGVtZW50cyk7CisgICAgcmV0dXJuIGFjY2Vzc2li
bGVFbGVtZW50c0Zvck9iamVjdHMoc2VsZi5heEJhY2tpbmdPYmplY3QtPmVycm9yTWVzc2FnZU9i
amVjdHMoKSk7CiB9CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlMaW5rZWRFbGVtZW50CkBAIC0xOTY3
LDIzICsxOTU3LDIwIEBAIHN0YXRpYyBOU0FycmF5ICphY2Nlc3NpYmxlRWxlbWVudHNGb3JPYmpl
Y3RzKGNvbnN0IEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoCiAgICAgICAgIHJldHVybiBu
aWw7CiAKICAgICAvLyBJZiB0aGlzIHN0YXRpYyB0ZXh0IGluc2lkZSBvZiBhIGxpbmssIGl0IHNo
b3VsZCB1c2UgaXRzIHBhcmVudCdzIGxpbmtlZCBlbGVtZW50LgotICAgIEFYQ29yZU9iamVjdCog
ZWxlbWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwotICAgIGlmIChzZWxmLmF4QmFja2luZ09i
amVjdC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgJiYgc2Vs
Zi5heEJhY2tpbmdPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5pc0xpbmsoKSkKLSAg
ICAgICAgZWxlbWVudCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9y
ZWQoKTsKKyAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7Cisg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpT
dGF0aWNUZXh0ICYmIGJhY2tpbmdPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5pc0xp
bmsoKSkKKyAgICAgICAgYmFja2luZ09iamVjdCA9IGJhY2tpbmdPYmplY3QtPnBhcmVudE9iamVj
dFVuaWdub3JlZCgpOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGxpbmtlZEVsZW1lbnRzOwotICAgIGVsZW1lbnQtPmxpbmtlZFVJRWxlbWVu
dHMobGlua2VkRWxlbWVudHMpOwotICAgIGlmICghbGlua2VkRWxlbWVudHMuc2l6ZSgpIHx8ICFs
aW5rZWRFbGVtZW50c1swXSkKKyAgICBhdXRvIGxpbmtlZE9iamVjdHMgPSBiYWNraW5nT2JqZWN0
LT5saW5rZWRPYmplY3RzKCk7CisgICAgaWYgKGxpbmtlZE9iamVjdHMuaXNFbXB0eSgpIHx8ICFs
aW5rZWRPYmplY3RzWzBdKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgLy8gQWNjZXNzaWJp
bGl0eU9iamVjdDo6bGlua2VkVUlFbGVtZW50cyBtYXkgcmV0dXJuIGFuIG9iamVjdCB0aGF0IGlz
Ci0gICAgLy8gZXhwb3NlZCBpbiBvdGhlciBwbGF0Zm9ybXMgYnV0IG5vdCBvbiBpT1MsIGkuZS4s
IGdyb3VwaW5nIG9yIHN0cnVjdHVyZQotICAgIC8vIGVsZW1lbnRzIGxpa2UgPGRpdj4gb3IgPHA+
LiBUaHVzIGZpbmQgdGhlIG5leHQgYWNjZXNzaWJsZSBvYmplY3QgdGhhdCBpcwotICAgIC8vIGV4
cG9zZWQgb24gaU9TLgotICAgIGF1dG8gbGlua2VkRWxlbWVudCA9IGZpcnN0QWNjZXNzaWJsZU9i
amVjdEZyb21Ob2RlKGxpbmtlZEVsZW1lbnRzWzBdLT5ub2RlKCksIFtdIChjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0JiBhY2Nlc3NpYmxlKSB7CisgICAgLy8gQVhDb3JlT2JqZWN0OjpsaW5rZWRP
YmplY3QgbWF5IHJldHVybiBhbiBvYmplY3QgdGhhdCBpcyBleHBvc2VkIGluIG90aGVyIHBsYXRm
b3JtcyBidXQgbm90IG9uIGlPUywgaS5lLiwgZ3JvdXBpbmcgb3Igc3RydWN0dXJlIGVsZW1lbnRz
IGxpa2UgPGRpdj4gb3IgPHA+LgorICAgIC8vIFRodXMgZmluZCB0aGUgbmV4dCBhY2Nlc3NpYmxl
IG9iamVjdCB0aGF0IGlzIGV4cG9zZWQgb24gaU9TLgorICAgIGF1dG8gbGlua2VkT2JqZWN0ID0g
Zmlyc3RBY2Nlc3NpYmxlT2JqZWN0RnJvbU5vZGUobGlua2VkT2JqZWN0c1swXS0+bm9kZSgpLCBb
XSAoY29uc3QgYXV0byYgYWNjZXNzaWJsZSkgewogICAgICAgICByZXR1cm4gYWNjZXNzaWJsZS53
cmFwcGVyKCkuaXNBY2Nlc3NpYmlsaXR5RWxlbWVudDsKICAgICB9KTsKLSAgICByZXR1cm4gbGlu
a2VkRWxlbWVudCA/IGxpbmtlZEVsZW1lbnQtPndyYXBwZXIoKSA6IG51bGxwdHI7CisgICAgcmV0
dXJuIGxpbmtlZE9iamVjdCA/IGxpbmtlZE9iamVjdC0+d3JhcHBlcigpIDogbmlsOwogfQogCiAt
IChCT09MKWlzQXR0YWNobWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCA2ZDk0
NDBkM2ZiYjYwMGU5MTkzNmU5ZTQxYjI1MzA1Y2MwY2FmNTk4Li4xMTkzYTdlMTlhNmQ0MTcyMWJm
Mjc4YTNjMzA1MDc3N2YxYTU3YzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAt
MzI5LDI5ICszMjksMTQgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVy
dGllcyhBWENvcmVPYmplY3QmIGNvcmVPYmplY3QsIElzUm9vdCBpc1IKICAgICBvYmplY3QudGFi
Q2hpbGRyZW4odGFiQ2hpbGRyZW4pOwogICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpUYWJDaGlsZHJlbiwgdGFiQ2hpbGRyZW4pOwogCi0gICAgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGxpbmtlZFVJRWxlbWVudHM7Ci0gICAgb2JqZWN0LmxpbmtlZFVJRWxl
bWVudHMobGlua2VkVUlFbGVtZW50cyk7Ci0gICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkxpbmtlZFVJRWxlbWVudHMsIGxpbmtlZFVJRWxlbWVudHMpOworICAgIHNl
dE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpMaW5rZWRPYmplY3RzLCBvYmpl
Y3QubGlua2VkT2JqZWN0cygpKTsKIAotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBh
cmlhQ29udHJvbHNFbGVtZW50czsKLSAgICBvYmplY3QuYXJpYUNvbnRyb2xzRWxlbWVudHMoYXJp
YUNvbnRyb2xzRWxlbWVudHMpOwotICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpBUklBQ29udHJvbHNFbGVtZW50cywgYXJpYUNvbnRyb2xzRWxlbWVudHMpOwotCi0g
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFEZXRhaWxzRWxlbWVudHM7Ci0gICAg
b2JqZWN0LmFyaWFEZXRhaWxzRWxlbWVudHMoYXJpYURldGFpbHNFbGVtZW50cyk7Ci0gICAgc2V0
T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFEZXRhaWxzRWxlbWVudHMs
IGFyaWFEZXRhaWxzRWxlbWVudHMpOwotCi0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50czsKLSAgICBvYmplY3QuYXJpYUVycm9yTWVzc2FnZUVs
ZW1lbnRzKGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyk7Ci0gICAgc2V0T2JqZWN0VmVjdG9yUHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFFcnJvck1lc3NhZ2VFbGVtZW50cywgYXJpYUVycm9y
TWVzc2FnZUVsZW1lbnRzKTsKLQotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlh
Rmxvd1RvRWxlbWVudHM7Ci0gICAgb2JqZWN0LmFyaWFGbG93VG9FbGVtZW50cyhhcmlhRmxvd1Rv
RWxlbWVudHMpOwotICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpB
UklBRmxvd1RvRWxlbWVudHMsIGFyaWFGbG93VG9FbGVtZW50cyk7Ci0KLSAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnNFbGVtZW50czsKLSAgICBvYmplY3QuYXJpYU93bnNF
bGVtZW50cyhhcmlhT3duc0VsZW1lbnRzKTsKLSAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6QVJJQU93bnNFbGVtZW50cywgYXJpYU93bnNFbGVtZW50cyk7CisgICAg
Ly8gUmVsYXRpb25zLgorICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpDb250cm9sbGVkT2JqZWN0cywgb2JqZWN0LmNvbnRyb2xsZWRPYmplY3RzKCkpOworICAgIHNl
dE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpEZXRhaWxlZEJ5T2JqZWN0cywg
b2JqZWN0LmRldGFpbGVkQnlPYmplY3RzKCkpOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpFcnJvck1lc3NhZ2VPYmplY3RzLCBvYmplY3QuZXJyb3JNZXNzYWdl
T2JqZWN0cygpKTsKKyAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
Rmxvd1RvT2JqZWN0cywgb2JqZWN0LmZsb3dUb09iamVjdHMoKSk7CisgICAgc2V0T2JqZWN0VmVj
dG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Ok93bmVkT2JqZWN0cywgb2JqZWN0Lm93bmVkT2Jq
ZWN0cygpKTsKIAogICAgIC8vIFNwaW4gYnV0dG9uIHN1cHBvcnQuCiAgICAgc2V0T2JqZWN0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OkRlY3JlbWVudEJ1dHRvbiwgb2JqZWN0LmRlY3JlbWVudEJ1
dHRvbigpKTsKQEAgLTE4NzQsNTQgKzE4NTksNjQgQEAgQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVk
T2JqZWN0OjpzZWxlY3RlZExpc3RJdGVtKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9p
ZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmFjdGl2ZURlc2NlbmRh
bnRPZk9iamVjdHMoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiB7IH07CiB9CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYUNvbnRyb2xzUmVmZXJl
bmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAorQVhDb3Jl
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRlZE9iamVjdDo6Y29u
dHJvbGxlcnMoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biB7IH07CiB9CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYURlc2NyaWJlZEJ5RWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmRlc2NyaWJlZEJ5T2Jq
ZWN0cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsg
fTsKIH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2lu
Z0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENvcmVPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0OjpkZXNjcmlw
dGlvbkZvck9iamVjdHMoKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiB7IH07CiB9CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYURldGFpbHNSZWZl
cmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENv
cmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0Ojpk
ZXRhaWxzRm9yT2JqZWN0cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhRXJyb3JNZXNz
YWdlUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRlZE9i
amVjdDo6ZXJyb3JNZXNzYWdlRm9yT2JqZWN0cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojph
cmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJc29s
YXRlZE9iamVjdDo6Zmxvd0Zyb21PYmplY3RzKCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFy
aWFMYWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QK
K0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFYSXNvbGF0ZWRPYmpl
Y3Q6OmxhYmVsbGVkQnlPYmplY3RzKCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFMYWJl
bGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRl
ZE9iamVjdDo6bGFiZWxGb3JPYmplY3RzKCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFP
d25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25z
dAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRlZE9i
amVjdDo6b3duZXJzKCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4geyB9OwogfQogCiBib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omhhc0RhdGFsaXN0KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCBkZWIxNGI2NTcxZmY5MGZlNGFiMDIwMmE4
OTQ5MDQ2NDUxOGVlZTI2Li4zNzc3NzQ2MmY0MjUxNTUyN2VkNzkxNDEzYWU0ODJkYjYzZDM5Njkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC0yMzAsMTEgKzIzMCw2IEBAIHByaXZhdGU6
CiAgICAgZG91YmxlIGxvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
ZWUoKS0+bG9hZGluZ1Byb2dyZXNzKCk7IH0KICAgICBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6
OlN1cHBvcnRzQVJJQU93bnMpOyB9CiAgICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3Vz
ZWRDb250YWluZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUo
QVhQcm9wZXJ0eU5hbWU6OklzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcik7IH0K
LSAgICB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgY2hpbGRyZW4pIGNvbnN0IG92ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OkFSSUFDb250cm9sc0VsZW1lbnRzLCBjaGlsZHJlbik7IH0KLSAg
ICB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBj
aGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6QVJJQURldGFpbHNFbGVtZW50cywgY2hpbGRyZW4pOyB9Ci0gICAgdm9p
ZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBj
aGlsZHJlbikgY29uc3Qgb3ZlcnJpZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6QVJJQUVycm9yTWVzc2FnZUVsZW1lbnRzLCBjaGlsZHJlbik7IH0KLSAg
ICB2b2lkIGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNo
aWxkcmVuKSBjb25zdCBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpBUklBRmxvd1RvRWxlbWVudHMsIGNoaWxkcmVuKTsgfQotICAgIHZvaWQg
YXJpYU93bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBj
b25zdCBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpBUklBT3duc0VsZW1lbnRzLCBjaGlsZHJlbik7IH0KICAgICBib29sIGhhc1BvcHVwKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1l
OjpIYXNQb3B1cCk7IH0KICAgICBTdHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHN0cmluZ0F0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpQb3B1cFZhbHVlKTsg
fQogICAgIGJvb2wgcHJlc3NlZElzUHJlc2VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJv
b2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6UHJlc3NlZElzUHJlc2VudCk7IH0KQEAg
LTI2Myw3ICsyNTgsNyBAQCBwcml2YXRlOgogICAgIEFYQ29yZU9iamVjdCogZm9jdXNlZFVJRWxl
bWVudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IH0KICAgICBB
WENvcmVPYmplY3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZvaWQgbGlua2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxk
cmVuKSBjb25zdCBvdmVycmlkZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpMaW5rZWRVSUVsZW1lbnRzLCBjaGlsZHJlbik7IH0KKyAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgbGlua2VkT2JqZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3Bl
cnR5TmFtZTo6TGlua2VkT2JqZWN0cykpOyB9CiAgICAgQVhDb3JlT2JqZWN0KiB0aXRsZVVJRWxl
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJv
cGVydHlOYW1lOjpUaXRsZVVJRWxlbWVudCk7IH0KICAgICBBWENvcmVPYmplY3QqIHNjcm9sbEJh
cihBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24pIG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlS
b2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QWNjZXNzaWJpbGl0eVJvbGU+KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpB
UklBUm9sZUF0dHJpYnV0ZSkpOyB9CkBAIC01NDUsMTYgKzU0MCwyMyBAQCBwcml2YXRlOgogICAg
IGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQVhDb3Jl
T2JqZWN0KiBzZWxlY3RlZExpc3RJdGVtKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhQWN0aXZl
RGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZv
aWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1l
bnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZv
aWQgYXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUVycm9yTWVzc2FnZVJlZmVyZW5j
aW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBhcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5RWxl
bWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBhcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5n
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisK
KyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYWN0aXZlRGVzY2VuZGFudE9mT2JqZWN0
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250
cm9sbGVkT2JqZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0Zv
cklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6Q29udHJvbGxl
ZE9iamVjdHMpKTsgfQorICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250cm9sbGVy
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXNj
cmliZWRCeU9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3IgZGVzY3JpcHRpb25Gb3JPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRldGFpbGVkQnlPYmplY3RzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFY
SUQ+KEFYUHJvcGVydHlOYW1lOjpEZXRhaWxlZEJ5T2JqZWN0cykpOyB9CisgICAgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGRldGFpbHNGb3JPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGVycm9yTWVzc2FnZU9iamVjdHMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRl
VmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OkVycm9yTWVzc2FnZU9iamVjdHMpKTsgfQorICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJvck1lc3NhZ2VGb3JPYmplY3RzKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGZsb3dUb09iamVj
dHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9y
QXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OkZsb3dUb09iamVjdHMpKTsgfQor
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBmbG93RnJvbU9iamVjdHMoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGFiZWxsZWRCeU9iamVj
dHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGFi
ZWxGb3JPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIG93bmVkT2JqZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+b2Jq
ZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6T3du
ZWRPYmplY3RzKSk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igb3duZXJzKCkg
Y29uc3Qgb3ZlcnJpZGU7CisKICAgICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBzdXBwb3J0c0hhc1BvcHVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBz
dXBwb3J0c1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4
IDdhYzAwZjI3ODhlYjdlYzQ0MmY2NTRlZTMwNTAzM2M3ZTMxNWM4ZTQuLjAzMzEwZWYxN2ZhNzBi
NDI5OGQ5M2MzNmQ2NWU0ZDI4NzFhZGRiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtNDks
MTcgKzQ5LDExIEBAIGVudW0gY2xhc3MgQVhTdHJlYW1PcHRpb25zIDogdWludDhfdDsKIHVzaW5n
IEFYSXNvbGF0ZWRUcmVlSUQgPSB1bnNpZ25lZDsKIAogZW51bSBjbGFzcyBBWFByb3BlcnR5TmFt
ZSA6IHVpbnQxNl90IHsKLSAgICBBUklBQ29udHJvbHNFbGVtZW50cywKLSAgICBBUklBRGV0YWls
c0VsZW1lbnRzLAotICAgIERyb3BFZmZlY3RzLAotICAgIEFSSUFFcnJvck1lc3NhZ2VFbGVtZW50
cywKICAgICBBUklBSXNNdWx0aWxpbmUsCi0gICAgQVJJQUZsb3dUb0VsZW1lbnRzLAogICAgIEFS
SUFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbiwKICAgICBBUklBVHJlZUl0ZW1Db250ZW50LAogICAg
IEFSSUFUcmVlUm93cywKICAgICBBUklBUm9sZUF0dHJpYnV0ZSwKLSAgICBBUklBT3duc0VsZW1l
bnRzLAogICAgIEFYQ29sdW1uQ291bnQsCiAgICAgQVhDb2x1bW5JbmRleCwKICAgICBBWFJvd0Nv
dW50LApAQCAtOTgsMjAgKzkyLDI1IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50
MTZfdCB7CiAgICAgQ29sdW1uSW5kZXhSYW5nZSwKICAgICBDb21wdXRlZFJvbGVTdHJpbmcsCiAg
ICAgQ29udGVudHMsCisgICAgQ29udHJvbGxlZE9iamVjdHMsCiAgICAgQ3VycmVudFN0YXRlLAog
ICAgIEN1cnJlbnRWYWx1ZSwKICAgICBEYXRldGltZUF0dHJpYnV0ZVZhbHVlLAogICAgIERlY3Jl
bWVudEJ1dHRvbiwKICAgICBEZXNjcmlwdGlvbiwKKyAgICBEZXRhaWxlZEJ5T2JqZWN0cywKICAg
ICBEaXNjbG9zZWRCeVJvdywKICAgICBEaXNjbG9zZWRSb3dzLAogICAgIERvY3VtZW50RW5jb2Rp
bmcsCiAgICAgRG9jdW1lbnRMaW5rcywKICAgICBEb2N1bWVudFVSSSwKKyAgICBEcm9wRWZmZWN0
cywKICAgICBFZGl0YWJsZUFuY2VzdG9yLAogICAgIEVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbiwK
KyAgICBFcnJvck1lc3NhZ2VPYmplY3RzLAogICAgIEV4cGFuZGVkVGV4dFZhbHVlLAogICAgIEZp
bGVVcGxvYWRCdXR0b25SZXR1cm5zVmFsdWVJblRpdGxlLAorICAgIEZsb3dUb09iamVjdHMsCiAg
ICAgRm9jdXNhYmxlQW5jZXN0b3IsCiAgICAgSGFzQVJJQVZhbHVlTm93LAogICAgIEhhc0FwcGxl
UERGQW5ub3RhdGlvbkF0dHJpYnV0ZSwKQEAgLTIyOSw3ICsyMjgsNyBAQCBlbnVtIGNsYXNzIEFY
UHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIExhbmd1YWdlLAogICAgIExheW91dENvdW50
LAogICAgIExpbmtSZWxWYWx1ZSwKLSAgICBMaW5rZWRVSUVsZW1lbnRzLAorICAgIExpbmtlZE9i
amVjdHMsCiAgICAgTGl2ZVJlZ2lvbkF0b21pYywKICAgICBMaXZlUmVnaW9uUmVsZXZhbnQsCiAg
ICAgTGl2ZVJlZ2lvblN0YXR1cywKQEAgLTI1MSw2ICsyNTAsNyBAQCBlbnVtIGNsYXNzIEFYUHJv
cGVydHlOYW1lIDogdWludDE2X3QgewogICAgIE1heFZhbHVlRm9yUmFuZ2UsCiAgICAgTWluVmFs
dWVGb3JSYW5nZSwKICAgICBOYW1lQXR0cmlidXRlLAorICAgIE93bmVkT2JqZWN0cywKICAgICBP
cmllbnRhdGlvbiwKICAgICBPdXRlckhUTUwsCiAgICAgUGF0aCwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggODE5ZmQxNDNhMGQ0MGVmMmEzYzA5YWM5MDdkODUw
MGIyZTJlZDIyNi4uYzI3ODFiNzhiMWExNTEzMjE1YWI3MzVmNDMzYmRlMDlhNWRmNzkxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTIzOTMsMTEgKzIzOTMs
OCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUYWJsZUxldmVsIl0pCiAgICAgICAgIHJldHVy
biBAKGJhY2tpbmdPYmplY3QtPnRhYmxlTGV2ZWwoKSk7CiAKLSAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmli
dXRlXSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3IgbGlua2VkVUlFbGVtZW50czsKLSAgICAgICAgYmFja2luZ09iamVjdC0+bGlua2Vk
VUlFbGVtZW50cyhsaW5rZWRVSUVsZW1lbnRzKTsKLSAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5
KGxpbmtlZFVJRWxlbWVudHMpOwotICAgIH0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlXSkKKyAg
ICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGJhY2tpbmdPYmplY3QtPmxpbmtlZE9iamVjdHMoKSk7
CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxp
dHlTZWxlY3RlZEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6YmFja2luZ09iamVjdC0+aXNTZWxlY3RlZCgpXTsKQEAgLTI0NjYsMTEgKzI0NjMsOCBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdKQog
ICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+aW52YWxpZFN0YXR1cygpOwogCi0gICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmli
dXRlXSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3IgYXJpYU93bnM7Ci0gICAgICAgIGJhY2tpbmdPYmplY3QtPmFyaWFPd25zRWxlbWVu
dHMoYXJpYU93bnMpOwotICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYXJpYU93bnMpOwotICAg
IH0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eU93bnNBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVj
dC0+b3duZWRPYmplY3RzKCkpOwogCiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBUG9zSW5TZXRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1
cm4gQChiYWNraW5nT2JqZWN0LT5wb3NJblNldCgpKTsKQEAgLTI2MjYsMTEgKzI2MjAsOCBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhJc0luQ2VsbCJdKQogICAgICAgICByZXR1cm4gW05TTnVt
YmVyIG51bWJlcldpdGhCb29sOmJhY2tpbmdPYmplY3QtPmlzSW5DZWxsKCldOwogCi0gICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYRGV0YWlsc0VsZW1lbnRzIl0pIHsK
LSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGRldGFpbHM7Ci0gICAgICAgIGJhY2tpbmdPYmplY3QtPmFyaWFEZXRhaWxzRWxlbWVudHMoZGV0
YWlscyk7Ci0gICAgICAgIHJldHVybiBtYWtlTlNBcnJheShkZXRhaWxzKTsKLSAgICB9CisgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYRGV0YWlsc0VsZW1lbnRzIl0p
CisgICAgICAgIHJldHVybiBtYWtlTlNBcnJheShiYWNraW5nT2JqZWN0LT5kZXRhaWxlZEJ5T2Jq
ZWN0cygpKTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5QnJhaWxsZUxhYmVsQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdP
YmplY3QtPmJyYWlsbGVMYWJlbCgpOwpAQCAtMjY0MSwxMSArMjYzMiw4IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UmVsYXRpdmVGcmFtZUF0dHJpYnV0ZV0pCiAgICAgICAg
IHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OihOU1JlY3QpYmFja2luZ09iamVjdC0+cmVs
YXRpdmVGcmFtZSgpXTsKIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
QCJBWEVycm9yTWVzc2FnZUVsZW1lbnRzIl0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGVycm9yTWVzc2FnZXM7Ci0gICAgICAgIGJh
Y2tpbmdPYmplY3QtPmFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhlcnJvck1lc3NhZ2VzKTsKLSAg
ICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGVycm9yTWVzc2FnZXMpOwotICAgIH0KKyAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhFcnJvck1lc3NhZ2VFbGVtZW50cyJd
KQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+ZXJyb3JNZXNzYWdl
T2JqZWN0cygpKTsKIAogICAgIC8vIE11bHRpLXNlbGVjdGFibGUKICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUlzTXVsdGlTZWxlY3RhYmxlQXR0
cmlidXRlXSkKQEAgLTI2NTksMTEgKzI2NDcsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPmRvY3VtZW50RW5jb2Rp
bmcoKTsKIAogICAgIC8vIEFyaWEgY29udHJvbHMgZWxlbWVudAotICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QXJpYUNvbnRyb2xzQXR0cmlidXRl
XSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgYXJpYUNvbnRyb2xzOwotICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhQ29udHJvbHNF
bGVtZW50cyhhcmlhQ29udHJvbHMpOwotICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYXJpYUNv
bnRyb2xzKTsKLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlBcmlhQ29udHJvbHNBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gbWFr
ZU5TQXJyYXkoYmFja2luZ09iamVjdC0+Y29udHJvbGxlZE9iamVjdHMoKSk7CiAKICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUZvY3VzYWJsZUFu
Y2VzdG9yQXR0cmlidXRlXSkgewogICAgICAgICBBWENvcmVPYmplY3QqIG9iamVjdCA9IGJhY2tp
bmdPYmplY3QtPmZvY3VzYWJsZUFuY2VzdG9yKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458639</attachid>
            <date>2022-04-30 13:37:11 -0700</date>
            <delta_ts>2022-04-30 19:44:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239848-20220430163710.patch</filename>
            <type>text/plain</type>
            <size>59119</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVlYjMzNmQ3NmFhMjlj
Yjk5YjRlMmFhZmE2YzU3ODRiZmU4YTcxNC4uOWNmODdlYWVmMTllMGExYzA3MmUzYTQyOTA3NmVk
NDBmNzQ5NDAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDIyLTA0LTI5ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBDb2RlIGNsZWFu
dXAgaW4gcHJlcGFyYXRpb24gZm9yIHJlZmFjdG9yaW5nIG9mIGNvbXB1dGluZyByZWxhdGlvbnNo
aXBzIGJldHdlZW4gQVhPYmplY3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM5ODQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85MjQ1NTU0ND4K
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaCBhbmQgVHlsZXIgV2lsY29jay4K
KworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKCkgYW5kCisgICAgICAgIGFyaWFFbGVt
ZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZSgpIGFyZSB0aGUgbWV0aG9kcyB0aGF0IGN1cnJlbnRs
eQorICAgICAgICBjb21wdXRlIHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gb2JqZWN0cy4gVGhl
c2UgbWV0aG9kcyBub3cgcmV0dXJuIGEKKyAgICAgICAgdmVjdG9yIG9mIHRoZSByZWxhdGVkIG9i
amVjdHMgaW5zdGVhZCBvZiB0YWtpbmcgYW4gb3V0IHBhcmFtZXRlci4KKyAgICAgICAgSW4gYWRk
aXRpb24sIGFsbCBhcmlhWFhYRWxlbWVudHMgYW5kIGFyaWFYWFhSZWZlcmVuY2luZ0VsZW1lbnRz
IG1ldGhvZHMKKyAgICAgICAgYXJlIHJlbmFtZWQgdG8gYmV0dGVyIHJlZmxlY3QgdGhlIHJlbGF0
aW9uc2hpcHMgdGhleSByZXRyaWV2ZS4gTm90ZSB0aGF0CisgICAgICAgIHRoZSBwcmVmaXggYXJp
YSBpcyByZW1vdmVkIGZyb20gYWxsIG1ldGhvZCBuYW1lcyBiZWNhdXNlIEFSSUEgaXMgb25lIHdh
eQorICAgICAgICBvZiBlc3RhYmxpc2hpbmcgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIG9iamVjdHMs
IGJ1dCBub3QgbmVjZXNzYXJpbHkgdGhlCisgICAgICAgIG9ubHkgd2F5LiBUaGVzZSBjaGFuZ2Vz
IG1ha2UgdGhlIGNvZGUgbW9yZSBjb25jaXNlIGFuZCBjbGVhcmVyLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCBjb25zdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFbGVtZW50c1Jl
ZmVyZW5jZWRCeUF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0Ojppc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWN0aXZlRGVzY2VuZGFudE9m
T2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
b250cm9sbGVkT2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0Ojpjb250cm9sbGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpkZXNjcmliZWRCeU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZGVzY3JpcHRpb25Gb3JPYmplY3RzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFpbGVkQnlPYmplY3RzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRldGFpbHNGb3JPYmpl
Y3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVycm9y
TWVzc2FnZU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6ZXJyb3JNZXNzYWdlRm9yT2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpmbG93VG9PYmplY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmZsb3dGcm9tT2JqZWN0cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYWJlbGxlZEJ5T2JqZWN0cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsYWJlbEZvck9iamVjdHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6b3duZWRPYmpl
Y3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Om93bmVy
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhQWN0
aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUNvbnRyb2xzRWxlbWVudHMgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJp
YUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojphcmlh
RGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXRhaWxzRWxlbWVudHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYURl
dGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRXJy
b3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRmxvd1RvRWxlbWVudHMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUZsb3dU
b1JlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxhYmVsbGVkQnlFbGVtZW50cyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhTGFiZWxsZWRC
eVJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYU93bnNFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhT3duc1JlZmVyZW5jaW5n
RWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpsaW5rZWRVSUVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnRhcmdldEVsZW1lbnRGb3JBY3RpdmVEZXNjZW5kYW50IGNvbnN0
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSGVhZGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjphcmlhT3duZWRCeVBh
cmVudCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVS
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGls
ZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0
QXRzcGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpy
ZWxhdGlvbk1hcCBjb25zdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojppbml0aWFsaXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphY3RpdmVEZXNjZW5kYW50T2ZPYmplY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmNvbnRyb2xsZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSXNvbGF0ZWRPYmplY3Q6OmRlc2NyaWJlZEJ5T2JqZWN0cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpkZXNjcmlwdGlvbkZvck9iamVjdHMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZGV0YWlsc0Zvck9iamVjdHMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6ZXJyb3JNZXNzYWdlRm9y
T2JqZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjpmbG93
RnJvbU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6
bGFiZWxsZWRCeU9iamVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9i
amVjdDo6bGFiZWxGb3JPYmplY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6Om93bmVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2Jq
ZWN0OjphcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6YXJpYUNvbnRyb2xzUmVm
ZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OmFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhRXJyb3JNZXNzYWdlUmVm
ZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkT2JqZWN0OjphcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhTGFiZWxsZWRCeUVs
ZW1lbnRzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmpl
Y3Q6OmFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0OjphcmlhT3duc1JlZmVyZW5jaW5nRWxl
bWVudHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6CisKIDIwMjIt
MDQtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxN
ZWRpYUVsZW1lbnQgY2FuIGdldCBtdWx0aXBsZSBpbnRlcnJ1cHRpb25zIGZvciBpbnZpc2libGUg
YXV0b3BsYXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKaW5kZXggZjQzOGM5YzVkNTI3MDE0Nzc1NDk2MjA2M2Rm
ZDk2NTMwNjMxYzcxNy4uYWFiYTdlZTliOGI4NmQ4YjFkMjZmY2RiYjBiZWI0NTVhN2YwZjA2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5jcHAKQEAgLTIwNTEsMTIgKzIwNTEsOCBAQCBTdHJpbmcgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OnRleHRVbmRlckVsZW1lbnQoQWNjZXNzaWJpbGl0eVRleHRVbmRlckVs
ZW1lbnRNbwogICAgIC8vIHJlZmVyZW5jZWQgYnkgYXJpYS1sYWJlbGxlZGJ5IG9yIGFyaWEtZGVz
Y3JpYmVkYnksIGFuZCBpcyBub3QgYSBob3N0IGxhbmd1YWdlIHRleHQKICAgICAvLyBhbHRlcm5h
dGl2ZSwgdGhlIGVtcHR5IHN0cmluZyBzaG91bGQgYmUgcmV0dXJuZWQuCiAgICAgaWYgKGlzRE9N
SGlkZGVuKCkgJiYgIWlzQXJpYVZpc2libGUgJiYgIWlzPEhUTUxMYWJlbEVsZW1lbnQ+KG5vZGUp
ICYmIChub2RlICYmICFhbmNlc3RvcnNPZlR5cGU8SFRNTENhbnZhc0VsZW1lbnQ+KCpub2RlKS5m
aXJzdCgpKSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgbGFiZWxGb3I7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXNjcmlwdGlvbkZvcjsKLSAgICAgICAgYXJpYUxhYmVs
bGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKGxhYmVsRm9yKTsKLSAgICAgICAgYXJpYURlc2NyaWJl
ZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhkZXNjcmlwdGlvbkZvcik7Ci0gICAgICAgIGlmICghbGFi
ZWxGb3Iuc2l6ZSgpICYmICFkZXNjcmlwdGlvbkZvci5zaXplKCkpCi0gICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgICAgIGlmIChsYWJlbEZvck9iamVjdHMoKS5pc0VtcHR5KCkgJiYg
ZGVzY3JpcHRpb25Gb3JPYmplY3RzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCAxODZm
Yzk5ZjZjOWZjYThiYjhkNTJlY2VhZTBkMmQwYzJmZGMzOGM4Li5kNzRkNWY4M2YyODZiYzUyNmIx
OWYzZmQ1Y2MxNWVlYTIyNTI2NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTE5NzgsOCArMTk3OCw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9y
Tm9kZShOb2RlKiBub2RlKQogCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJvd3MsIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgYW5jZXN0b3JzKQogewotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBh
cmlhT3duczsKLSAgICBhcmlhT3duc0VsZW1lbnRzKGFyaWFPd25zKTsKKyAgICBhdXRvIG93bmVk
T2JqZWN0cyA9IHRoaXMtPm93bmVkT2JqZWN0cygpOwogCiAgICAgYW5jZXN0b3JzLmFwcGVuZCh0
aGlzKTsKIApAQCAtMTk5MCw5ICsxOTg5LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojph
cmlhVHJlZVJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByb3dzLCBBY2Nlc3MKICAg
ICAgICAgaWYgKGNoaWxkLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0
ZW0pIHsKICAgICAgICAgICAgIC8vIENoaWxkIGFwcGVhcnMgYm90aCBhcyBhIGRpcmVjdCBjaGls
ZCBhbmQgYXJpYS1vd25zLCB3ZSBzaG91bGQgdXNlIHRoZSBvcmRlcmluZyBhcwogICAgICAgICAg
ICAgLy8gZGVzY3JpYmVkIGluIGFyaWEtb3ducyBmb3IgdGhpcyBjaGlsZC4KLSAgICAgICAgICAg
IGlmIChhcmlhT3ducy5jb250YWlucyhjaGlsZCkpCisgICAgICAgICAgICBpZiAob3duZWRPYmpl
Y3RzLmNvbnRhaW5zKGNoaWxkKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIAorCiAgICAgICAgICAgICAvLyBUaGUgcmVzdWx0IHNldCBtYXkgYWxyZWFkeSBjb250YWlu
IHRoZSBjaGlsZCB0aHJvdWdoIGFyaWEtb3ducy4gRm9yIGV4YW1wbGUsCiAgICAgICAgICAgICAv
LyBhIHRyZWVpdGVtIHNpdHRpbmcgdW5kZXIgdGhlIHRyZWUgcm9vdCwgd2hpY2ggaXMgb3duZWQg
ZWxzZXdoZXJlIGluIHRoZSB0cmVlLgogICAgICAgICAgICAgaWYgKHJvd3MuY29udGFpbnMoY2hp
bGQpKQpAQCAtMjAwNywxMyArMjAwNiwxMyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFy
aWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHJvd3MsIEFjY2VzcwogICAg
IH0KIAogICAgIC8vIE5vdyBnbyB0aHJvdWdoIHRoZSBhcmlhLW93bnMgZWxlbWVudHMuCi0gICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGFyaWFPd25zKSB7CisgICAgZm9yIChjb25zdCBhdXRv
JiBjaGlsZCA6IG93bmVkT2JqZWN0cykgewogICAgICAgICAvLyBBdm9pZCBhIGNpcmN1bGFyIHJl
ZmVyZW5jZSB2aWEgYXJpYS1vd25zIGJ5IGNoZWNraW5nIGlmIG91ciBwYXJlbnQKICAgICAgICAg
Ly8gcGF0aCBpbmNsdWRlcyB0aGlzIGNoaWxkLiBDdXJyZW50bHksIGxvb2tpbmcgdXAgdGhlIGFy
aWEtb3ducyBwYXJlbnQKICAgICAgICAgLy8gcGF0aCBpdHNlbGYgY291bGQgYmUgZXhwZW5zaXZl
LCBzbyB3ZSB0cmFjayBpdCBzZXBhcmF0ZWx5LgogICAgICAgICBpZiAoYW5jZXN0b3JzLmNvbnRh
aW5zKGNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICAv
LyBBZGQgdHJlZSBpdGVtcyBhcyB0aGUgcm93cy4KICAgICAgICAgaWYgKGNoaWxkLT5yb2xlVmFs
dWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VHJlZUl0ZW0pIHsKICAgICAgICAgICAgIC8vIEhv
cGVmdWxseSBhIGZsb3cgdGhhdCBkb2VzIG5vdCBvY2N1ciBvZnRlbiBpbiBwcmFjdGljZSwgYnV0
IGlmIHNvbWVvbmUgd2VyZSB0byBpbmNsdWRlCkBAIC0yMDIxLDcgKzIwMjAsNyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImIHJvd3MsIEFjY2VzcwogICAgICAgICAgICAgLy8gbW92ZSBpdCB0byB0aGUgcmlnaHQgcGxh
Y2UuCiAgICAgICAgICAgICBpZiAocm93cy5jb250YWlucyhjaGlsZCkpCiAgICAgICAgICAgICAg
ICAgcm93cy5yZW1vdmVGaXJzdChjaGlsZCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
cm93cy5hcHBlbmQoY2hpbGQpOwogICAgICAgICB9CiAKQEAgLTIwMjksNyArMjAyOCw3IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYgcm93cywgQWNjZXNzCiAgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5T2JqZWN0
PigqY2hpbGQpKQogICAgICAgICAgICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oKmNo
aWxkKS5hcmlhVHJlZVJvd3Mocm93cywgYW5jZXN0b3JzKTsKICAgICB9Ci0gICAgCisKICAgICBh
bmNlc3RvcnMucmVtb3ZlTGFzdCgpOwogfQogCkBAIC0zOTIwLDQyICszOTE5LDQzIEBAIEFYQ29y
ZU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRMaXN0SXRlbSgpCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRz
RnJvbUF0dHJpYnV0ZShBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVsZW1lbnRz
RnJvbUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0g
ICAgYXV0byBlbGVtZW50cyA9IGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsK
LSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKLSAgICBmb3IgKGNv
bnN0IGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50cykgewotICAgICAgICBpZiAoYXV0byogYXhPYmpl
Y3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCkpCi0gICAgICAgICAgICBjaGlsZHJlbi5h
cHBlbmQoYXhPYmplY3QpOwotICAgIH0KKyAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUo
KTsKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBlbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoYXR0cmlidXRlKS5tYXAoW2NhY2hlXSAoYXV0byogZWxlbWVudCkg
LT4gUmVmUHRyPEFYQ29yZU9iamVjdD4geworICAgICAgICByZXR1cm4gY2FjaGUtPmdldE9yQ3Jl
YXRlKGVsZW1lbnQpOworICAgIH0pOwogfQogCiAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpdGVy
YXRlcyB0aGUgd2hvbGUgRE9NIHRyZWUgYW5kIHRyaWVzIHRvIG1hdGNoIGV2ZXJ5IEVsZW1lbnQg
aW4gdGhlIHRyZWUsIHdoaWNoIGlzIHZlcnkgZXhwZW5zaXZlLgogLy8gV2Ugc2hvdWxkIGZpbmQg
YSBiZXR0ZXIgd2F5IHRvIGFjaGlldmUgdGhpcy4KLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6
YXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgZWxlbWVudHMsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3QKK0FY
Q29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OmFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGUpIGNvbnN0CiB7CiAgICAgYXV0byBpZCA9IGlkZW50aWZpZXJBdHRyaWJ1dGUo
KTsKICAgICBpZiAoaWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBhdXRvKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNh
Y2hlKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAKKyAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igb2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBk
ZXNjZW5kYW50c09mVHlwZTxFbGVtZW50Pihub2RlKCktPnRyZWVTY29wZSgpLnJvb3ROb2RlKCkp
KSB7CiAgICAgICAgIGF1dG8mIGlkTGlzdCA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihhdHRyaWJ1dGUpOwogICAgICAgICBpZiAoIVNwYWNlU3BsaXRTdHJpbmc6OnNw
YWNlU3BsaXRTdHJpbmdDb250YWluc1ZhbHVlKGlkTGlzdCwgaWQsIFNwYWNlU3BsaXRTdHJpbmc6
OlNob3VsZEZvbGRDYXNlOjpObykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBp
ZiAoYXV0byogYXhPYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoJmVsZW1lbnQpKQotICAgICAg
ICAgICAgZWxlbWVudHMuYXBwZW5kKGF4T2JqZWN0KTsKKyAgICAgICAgaWYgKGF1dG8qIG9iamVj
dCA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmZWxlbWVudCkpCisgICAgICAgICAgICBvYmplY3RzLmFw
cGVuZChvYmplY3QpOwogICAgIH0KKyAgICByZXR1cm4gb2JqZWN0czsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBj
b25zdAogewotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250YWluZXJzOwotICAg
IGFyaWFBY3RpdmVEZXNjZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhjb250YWluZXJzKTsKKyAg
ICBhdXRvIGNvbnRhaW5lcnMgPSBhY3RpdmVEZXNjZW5kYW50T2ZPYmplY3RzKCk7CiAgICAgZm9y
IChhdXRvJiBjb250YWluZXIgOiBjb250YWluZXJzKSB7CiAgICAgICAgIGlmIChjb250YWluZXIt
PmlzRm9jdXNlZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zOTY0LDgzICszOTY0
LDg1IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBY3RpdmVEZXNjZW5kYW50T2ZGb2N1
c2VkQ29udGFpbmVyKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YXJpYUFjdGl2ZURlc2NlbmRhbnRSZWZlcmVuY2luZ0VsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY29udGFpbmVycykgY29uc3QKK0FYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjdGl2
ZURlc2NlbmRhbnRPZk9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5j
ZWRCeUF0dHJpYnV0ZShjb250YWluZXJzLCBhcmlhX2FjdGl2ZWRlc2NlbmRhbnRBdHRyKTsKKyAg
ICByZXR1cm4gYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfYWN0aXZlZGVz
Y2VuZGFudEF0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDb250cm9s
c0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYXJpYUNvbnRyb2xzKSBjb25z
dAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0
eU9iamVjdDo6Y29udHJvbGxlZE9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c0Zy
b21BdHRyaWJ1dGUoYXJpYUNvbnRyb2xzLCBhcmlhX2NvbnRyb2xzQXR0cik7CisgICAgcmV0dXJu
IGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYV9jb250cm9sc0F0dHIpOwogfQogCi12b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjb250cm9sbGVycykgY29uc3QKK0FYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbnRy
b2xsZXJzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUo
Y29udHJvbGxlcnMsIGFyaWFfY29udHJvbHNBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRz
UmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfY29udHJvbHNBdHRyKTsKIH0KIAotdm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphcmlhRGVzY3JpYmVkQnlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGFyaWFEZXNjcmliZWRCeSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlc2NyaWJlZEJ5T2Jq
ZWN0cygpIGNvbnN0CiB7Ci0gICAgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhRGVzY3Jp
YmVkQnksIGFyaWFfZGVzY3JpYmVkYnlBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzRnJv
bUF0dHJpYnV0ZShhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImIGRlc2NyaWJlcnMpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXNjcmlwdGlvbkZvck9i
amVjdHMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShk
ZXNjcmliZXJzLCBhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CisgICAgcmV0dXJuIGFyaWFFbGVtZW50
c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShhcmlhX2Rlc2NyaWJlZGJ5QXR0cik7CiB9CiAKLXZvaWQg
QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGFyaWFEZXRhaWxzKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWlsZWRCeU9iamVjdHMo
KSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYURldGFpbHMsIGFy
aWFfZGV0YWlsc0F0dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGFy
aWFfZGV0YWlsc0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFEZXRh
aWxzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGRldGFp
bHNGb3IpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhaWxzRm9yT2JqZWN0cygpIGNvbnN0CiB7Ci0gICAgYXJp
YUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGRldGFpbHNGb3IsIGFyaWFfZGV0YWlsc0F0
dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUoYXJpYV9k
ZXRhaWxzQXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUVycm9yTWVz
c2FnZUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgYXJpYUVycm9yTWVzc2Fn
ZSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmVycm9yTWVzc2FnZU9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFF
bGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYUVycm9yTWVzc2FnZSwgYXJpYV9lcnJvcm1lc3NhZ2VB
dHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhX2Vycm9ybWVz
c2FnZUF0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFFcnJvck1lc3Nh
Z2VSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgZXJyb3JN
ZXNzYWdlRm9yKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZXJyb3JNZXNzYWdlRm9yT2JqZWN0cygpIGNvbnN0CiB7
Ci0gICAgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGVycm9yTWVzc2FnZUZvciwg
YXJpYV9lcnJvcm1lc3NhZ2VBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzUmVmZXJlbmNl
ZEJ5QXR0cmlidXRlKGFyaWFfZXJyb3JtZXNzYWdlQXR0cik7CiB9CiAKLXZvaWQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6YXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgZmxvd1RvKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmxvd1RvT2JqZWN0cygpIGNvbnN0CiB7Ci0gICAgYXJp
YUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShmbG93VG8sIGFyaWFfZmxvd3RvQXR0cik7CisgICAgcmV0
dXJuIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXJpYV9mbG93dG9BdHRyKTsKIH0KIAotdm9p
ZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGZsb3dGcm9tKSBjb25zdAorQVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6Zmxvd0Zyb21P
YmplY3RzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNSZWZlcmVuY2VkQnlBdHRyaWJ1dGUo
Zmxvd0Zyb20sIGFyaWFfZmxvd3RvQXR0cik7CisgICAgcmV0dXJuIGFyaWFFbGVtZW50c1JlZmVy
ZW5jZWRCeUF0dHJpYnV0ZShhcmlhX2Zsb3d0b0F0dHIpOwogfQogCi12b2lkIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OmFyaWFMYWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBhcmlhTGFiZWxsZWRCeSkgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmxhYmVsbGVkQnlPYmplY3RzKCkgY29u
c3QKIHsKLSAgICBhcmlhRWxlbWVudHNGcm9tQXR0cmlidXRlKGFyaWFMYWJlbGxlZEJ5LCBhcmlh
X2xhYmVsbGVkYnlBdHRyKTsKLSAgICBpZiAoIWFyaWFMYWJlbGxlZEJ5LnNpemUoKSkKLSAgICAg
ICAgYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhTGFiZWxsZWRCeSwgYXJpYV9sYWJlbGVk
YnlBdHRyKTsKKyAgICBhdXRvIGxhYmVsbGVkQnlPYmplY3RzID0gYXJpYUVsZW1lbnRzRnJvbUF0
dHJpYnV0ZShhcmlhX2xhYmVsbGVkYnlBdHRyKTsKKyAgICBpZiAobGFiZWxsZWRCeU9iamVjdHMu
aXNFbXB0eSgpKQorICAgICAgICBsYWJlbGxlZEJ5T2JqZWN0cyA9IGFyaWFFbGVtZW50c0Zyb21B
dHRyaWJ1dGUoYXJpYV9sYWJlbGVkYnlBdHRyKTsKKyAgICByZXR1cm4gbGFiZWxsZWRCeU9iamVj
dHM7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYUxhYmVsbGVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgbGFiZWxzKSBjb25zdAor
QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eU9i
amVjdDo6bGFiZWxGb3JPYmplY3RzKCkgY29uc3QKIHsKLSAgICBhcmlhRWxlbWVudHNSZWZlcmVu
Y2VkQnlBdHRyaWJ1dGUobGFiZWxzLCBhcmlhX2xhYmVsbGVkYnlBdHRyKTsKLSAgICBpZiAoIWxh
YmVscy5zaXplKCkpCi0gICAgICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShs
YWJlbHMsIGFyaWFfbGFiZWxlZGJ5QXR0cik7CisgICAgYXV0byBvYmplY3RzID0gYXJpYUVsZW1l
bnRzUmVmZXJlbmNlZEJ5QXR0cmlidXRlKGFyaWFfbGFiZWxsZWRieUF0dHIpOworICAgIGlmIChv
YmplY3RzLmlzRW1wdHkoKSkKKyAgICAgICAgb2JqZWN0cyA9IGFyaWFFbGVtZW50c1JlZmVyZW5j
ZWRCeUF0dHJpYnV0ZShhcmlhX2xhYmVsZWRieUF0dHIpOworICAgIHJldHVybiBvYmplY3RzOwog
fQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFPd25zRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiBheE9iamVjdHMpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpvd25lZE9iamVjdHMo
KSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXhPYmplY3RzLCBhcmlh
X293bnNBdHRyKTsKKyAgICByZXR1cm4gYXJpYUVsZW1lbnRzRnJvbUF0dHJpYnV0ZShhcmlhX293
bnNBdHRyKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhT3duc1JlZmVyZW5j
aW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBvd25lcnMpIGNvbnN0CitB
WENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Ojpvd25lcnMoKSBjb25zdAogewotICAgIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJp
YnV0ZShvd25lcnMsIGFyaWFfb3duc0F0dHIpOworICAgIHJldHVybiBhcmlhRWxlbWVudHNSZWZl
cmVuY2VkQnlBdHRyaWJ1dGUoYXJpYV9vd25zQXR0cik7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6c2V0SXNJZ25vcmVkRnJvbVBhcmVudERhdGFGb3JDaGlsZChBWENvcmVPYmplY3Qq
IGNoaWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAppbmRleCA0NmZlZDc2ZTRmYmY2YWE2OWYxMDc4YjZkNzk2Yjk3MmJjNjJhOWI3
Li4xNGNmOWMwOGZlY2RkMzUwMzBlY2U4ZDNjMGQ5YTM4ZmE5YzA4YzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMzAx
LDIxICszMDEsMjIgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNBUklBUm9sZURlc2NyaXB0
aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0FSSUFPd25zKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQWN0aXZlRGVzY2VuZGFudE9mRm9jdXNlZENv
bnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUFjdGl2ZURlc2NlbmRhbnRS
ZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgYXJpYURldGFpbHNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
b2lkIGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0Vs
ZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZvaWQgYXJpYUZsb3dUb0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlh
TGFiZWxsZWRCeUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZvaWQgYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYU93
bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2b2lkIGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBhY3RpdmVEZXNjZW5kYW50T2ZPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZWRPYmplY3RzKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZXJzKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRlc2NyaWJlZEJ5T2Jq
ZWN0cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBk
ZXNjcmlwdGlvbkZvck9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgZGV0YWlsZWRCeU9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGV0YWlsc0Zvck9iamVjdHMoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZXJyb3JNZXNzYWdlT2JqZWN0
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJv
ck1lc3NhZ2VGb3JPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGZsb3dUb09iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgZmxvd0Zyb21PYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsbGVkQnlPYmplY3RzKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsRm9yT2JqZWN0
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBvd25l
ZE9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3Igb3duZXJzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGhhc1BvcHVwKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICBTdHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlOwpAQCAtMzg0LDcgKzM4NSw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8U3RyaW5n
PiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiBjb25zdCYp
IG92ZXJyaWRlOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB2b2lkIGxpbmtlZFVJRWxl
bWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyB9Cisg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxpbmtlZE9iamVjdHMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB7IH07IH0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZVVJRWxl
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JyZXNwb25kaW5nTGFiZWxGb3JDb250cm9sRWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3Jy
ZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KQEAgLTgxMSw4ICs4MTIsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMg
Ym9vbCBpc0FSSUFJbnB1dChBY2Nlc3NpYmlsaXR5Um9sZSk7CiAKLSAgICB2b2lkIGFyaWFFbGVt
ZW50c0Zyb21BdHRyaWJ1dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiwgY29uc3QgUXVh
bGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIHZvaWQgYXJpYUVsZW1lbnRzUmVmZXJlbmNlZEJ5QXR0
cmlidXRlKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYsIGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUVsZW1lbnRzRnJv
bUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGFyaWFFbGVtZW50c1JlZmVyZW5jZWRCeUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGV4cG9zZXNUaXRsZVVJRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICBGbG9hdFJlY3QgdW5vYnNjdXJlZENv
bnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmFk
aW9Hcm91cEFuY2VzdG9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IDI2MTQ5
M2E3YzMwMDhhMjEwODhiZWJmMThiMTYyMGNiYzU5ZmU5MzIuLmI4YzdlYjFlZjEzZDc2M2JjYTUy
NTY4ZTZlNzc0MjM1NWFlOTBhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC0xMDQ4LDIx
ICsxMDQ4LDIzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFPd25z
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3Vz
ZWRDb250YWluZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFBY3RpdmVEZXNj
ZW5kYW50UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYUNv
bnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJp
YURlc2NyaWJlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFEZXRhaWxzRWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBh
cmlhRGV0YWlsc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBhcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFGbG93VG9FbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGFyaWFGbG93VG9SZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYUxhYmVsbGVkQnlFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3ImKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFyaWFPd25zRWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JikgY29uc3QgPSAwOworCisgICAgLy8gUmV0cmlldmFsIG9mIHJlbGF0ZWQgb2JqZWN0cy4KKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhY3RpdmVEZXNjZW5kYW50T2ZP
YmplY3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGNvbnRyb2xsZWRPYmplY3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRyb2xsZXJzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRlc2NyaWJlZEJ5T2JqZWN0cygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXNjcmlwdGlvbkZv
ck9iamVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgZGV0YWlsZWRCeU9iamVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGV0YWlsc0Zvck9iamVjdHMoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZXJyb3JNZXNzYWdlT2JqZWN0cygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJv
ck1lc3NhZ2VGb3JPYmplY3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGZsb3dUb09iamVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZmxvd0Zyb21PYmplY3RzKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxhYmVsbGVkQnlPYmplY3Rz
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxh
YmVsRm9yT2JqZWN0cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBvd25lZE9iamVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igb3duZXJzKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBi
b29sIGhhc1BvcHVwKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHBvcHVwVmFsdWUo
KSBjb25zdCA9IDA7CkBAIC0xMTI4LDcgKzExMzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBW
ZWN0b3I8U3RyaW5nPiBwZXJmb3JtVGV4dE9wZXJhdGlvbihBY2Nlc3NpYmlsaXR5VGV4dE9wZXJh
dGlvbiBjb25zdCYpID0gMDsKIAogICAgIHZpcnR1YWwgQVhDb3JlT2JqZWN0KiBvYnNlcnZhYmxl
T2JqZWN0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBsaW5rZWRPYmplY3RzKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgQVhDb3JlT2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIEFYQ29yZU9iamVjdCogY29ycmVzcG9uZGluZ0xhYmVsRm9yQ29udHJvbEVsZW1lbnQoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBBWENvcmVPYmplY3QqIGNvcnJlc3BvbmRpbmdDb250cm9s
Rm9yTGFiZWxFbGVtZW50KCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggMDQw
NGNiNzQxNDVkYTBiMjUxZmQwZWZjYWMyNDc3NGNkNjE0OTgzMi4uNjVkOWU1YjcyZWI5MDJjMGYz
ODQwM2FjOTc2ZTNiM2M5ZTdmMTZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xMDc2LDIx
ICsxMDc2LDIzIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkUmFkaW9CdXR0
b25Hcm91cE1lbWJlcnMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuCiAgICAgICAgIH0KICAgICB9CiB9
Ci0gICAgCi0vLyBsaW5rZWQgdWkgZWxlbWVudHMgY291bGQgYmUgYWxsIHRoZSByZWxhdGVkIHJh
ZGlvIGJ1dHRvbnMgaW4gYSBncm91cAotLy8gb3IgYW4gaW50ZXJuYWwgYW5jaG9yIGNvbm5lY3Rp
b24KLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6bGlua2VkVUlFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGxpbmtlZFVJRWxlbWVudHMpIGNvbnN0CisKKy8vIExp
bmtlZCB1aSBlbGVtZW50cyBjb3VsZCBiZSBhbGwgdGhlIHJlbGF0ZWQgcmFkaW8gYnV0dG9ucyBp
biBhIGdyb3VwCisvLyBvciBhbiBpbnRlcm5hbCBhbmNob3IgY29ubmVjdGlvbi4KK0FYQ29yZU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmxpbmtlZE9iamVjdHMoKSBjb25zdAogewotICAgIGFyaWFGbG93VG9FbGVtZW50cyhsaW5r
ZWRVSUVsZW1lbnRzKTsKKyAgICBhdXRvIGxpbmtlZE9iamVjdHMgPSBmbG93VG9PYmplY3RzKCk7
CiAKICAgICBpZiAoaXNMaW5rKCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlu
a2VkQVhFbGVtZW50ID0gaW50ZXJuYWxMaW5rRWxlbWVudCgpOworICAgICAgICBhdXRvKiBsaW5r
ZWRBWEVsZW1lbnQgPSBpbnRlcm5hbExpbmtFbGVtZW50KCk7CiAgICAgICAgIGlmIChsaW5rZWRB
WEVsZW1lbnQpCi0gICAgICAgICAgICBsaW5rZWRVSUVsZW1lbnRzLmFwcGVuZChsaW5rZWRBWEVs
ZW1lbnQpOworICAgICAgICAgICAgbGlua2VkT2JqZWN0cy5hcHBlbmQobGlua2VkQVhFbGVtZW50
KTsKICAgICB9CiAKICAgICBpZiAocm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJh
ZGlvQnV0dG9uKQotICAgICAgICBhZGRSYWRpb0J1dHRvbkdyb3VwTWVtYmVycyhsaW5rZWRVSUVs
ZW1lbnRzKTsKKyAgICAgICAgYWRkUmFkaW9CdXR0b25Hcm91cE1lbWJlcnMobGlua2VkT2JqZWN0
cyk7CisKKyAgICByZXR1cm4gbGlua2VkT2JqZWN0czsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpoYXNQb3B1cCgpIGNvbnN0CkBAIC0yNzE1LDExICsyNzE3LDEwIEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjdGl2ZURlc2Nl
bmRhbnQoKSBjb25zdAogCiBSZW5kZXJPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnRhcmdldEVsZW1lbnRGb3JBY3RpdmVEZXNjZW5kYW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjdGl2ZURlc2NlbmRhbnQpIGNvbnN0
CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGVsZW1lbnRzOwotICAgIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoZWxlbWVudHMsIGF0dHJp
YnV0ZU5hbWUpOwotICAgIGZvciAoY29uc3QgYXV0byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7Ci0g
ICAgICAgIGlmIChhY3RpdmVEZXNjZW5kYW50LT5pc0Rlc2NlbmRhbnRPZk9iamVjdChlbGVtZW50
LmdldCgpKSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50LT5yZW5kZXJlcigpOworICAgIGF1
dG8gb2JqZWN0cyA9IGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSk7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBvYmplY3QgOiBvYmplY3RzKSB7CisgICAgICAgIGlmIChhY3Rp
dmVEZXNjZW5kYW50LT5pc0Rlc2NlbmRhbnRPZk9iamVjdChvYmplY3QuZ2V0KCkpKQorICAgICAg
ICAgICAgcmV0dXJuIG9iamVjdC0+cmVuZGVyZXIoKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggZTcwODk5YzViZWFlYmU0MGYxODQyZjJhMjU1ZGJj
MTQxNzE4NzAxMC4uZTBiNGEzYWE4YWQ4ODQyNGYyNzkwOGU4MjQ0MGJlNzViNDNkMWNlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZvaWQgbGlua2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGlu
a2VkT2JqZWN0cygpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRp
dGxlVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQVJJQU93
bnMoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4IDYyM2E2MDI4ZTQyZTU0YmFl
YzMwNjMxYzc0OTM3NGYzMjhlODcwNjEuLmM5MTk0ZjJiZWUyYjAyODM5MjhjNzI0YzllNWY2ZGJh
ZjZhN2YxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAtMjM2LDE2ICsyMzYsMTUgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpzdXBwb3J0c0V4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gaXNUYWJsZUhlYWRlckNlbGwoKSAmJiBoYXNBdHRyaWJ1dGUoYWJickF0dHIp
OwogfQotICAgIAorCiBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5IZWFkZXJzKCkKIHsKLSAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgaGVhZGVyczsKLSAgICBBY2Nlc3NpYmlsaXR5VGFibGUqIHBhcmVu
dCA9IHBhcmVudFRhYmxlKCk7CisgICAgYXV0byogcGFyZW50ID0gcGFyZW50VGFibGUoKTsKICAg
ICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuIGhlYWRlcnM7CisgICAgICAgIHJldHVybiB7
IH07CiAKICAgICAvLyBDaG9vc2UgY29sdW1uSGVhZGVycyBhcyB0aGUgcGxhY2Ugd2hlcmUgdGhl
ICJoZWFkZXJzIiBhdHRyaWJ1dGUgaXMgcmVwb3J0ZWQuCi0gICAgYXJpYUVsZW1lbnRzRnJvbUF0
dHJpYnV0ZShoZWFkZXJzLCBoZWFkZXJzQXR0cik7CisgICAgYXV0byBoZWFkZXJzID0gYXJpYUVs
ZW1lbnRzRnJvbUF0dHJpYnV0ZShoZWFkZXJzQXR0cik7CiAgICAgLy8gSWYgdGhlIGhlYWRlcnMg
YXR0cmlidXRlIHJldHVybmVkIHZhbGlkIHZhbHVlcywgdGhlbiBkbyBub3QgZnVydGhlciBzZWFy
Y2ggZm9yIGNvbHVtbiBoZWFkZXJzLgogICAgIGlmICghaGVhZGVycy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBoZWFkZXJzOwpAQCAtMjY4LDcgKzI2Nyw3IEBAIEFYQ29yZU9iamVjdDo6QWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbHVtbkhl
YWRlcnMoCiAKICAgICByZXR1cm4gaGVhZGVyczsKIH0KLSAgICAKKwogQVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SGVh
ZGVycygpCiB7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGhlYWRlcnM7CkBAIC0y
OTYsMTEgKzI5NSw5IEBAIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0hlYWRlcnMoKQogCiBBY2Nlc3NpYmlsaXR5VGFi
bGVSb3cqIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmFyaWFPd25lZEJ5UGFyZW50KCkgY29uc3QK
IHsKLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bmVkQnk7Ci0gICAgYXJp
YU93bnNSZWZlcmVuY2luZ0VsZW1lbnRzKGFyaWFPd25lZEJ5KTsKLSAgICBpZiAoYXJpYU93bmVk
Qnkuc2l6ZSgpID09IDEgJiYgYXJpYU93bmVkQnlbMF0tPmlzVGFibGVSb3coKSkKLSAgICAgICAg
cmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oYXJpYU93bmVkQnlbMF0uZ2V0
KCkpOwotCisgICAgYXV0byBvd25lcnMgPSB0aGlzLT5vd25lcnMoKTsKKyAgICBpZiAob3duZXJz
LnNpemUoKSA9PSAxICYmIG93bmVyc1swXS0+aXNUYWJsZVJvdygpKQorICAgICAgICByZXR1cm4g
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pihvd25lcnNbMF0uZ2V0KCkpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKaW5kZXggMWRmOThjOGQ2MTljZGUwZjgzMzFk
YWY1OGVhZmFlYmY5ZGNlNmQ0YS4uMDg3ZGRlMDI1NDRhYzI4MWFkNzNjYTZkOGMzYzhkNjA3YWZj
ZDBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMTQ2LDE5ICsxNDYsMTggQEAgQVhDb3JlT2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVjdCgpCiAgICAgCiAgICAgcmV0dXJuIGNl
bGw7CiB9Ci0gICAgCisKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlUm93OjphZGRDaGlsZHJlbigp
CiB7CiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgc3BlY2lmaWVzIGl0cyBjZWxscyB0aHJvdWdoIGFy
aWEtb3ducywgcmV0dXJuIHRoYXQgZmlyc3QuCi0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGFyaWFPd25lZEVsZW1lbnRzOwotICAgIGFyaWFPd25zRWxlbWVudHMoYXJpYU93bmVkRWxl
bWVudHMpOwotICAgIGlmIChhcmlhT3duZWRFbGVtZW50cy5zaXplKCkpIHsKLSAgICAgICAgZm9y
IChhdXRvJiBhcmlhT3duZWRFbGVtZW50IDogYXJpYU93bmVkRWxlbWVudHMpCi0gICAgICAgICAg
ICBhZGRDaGlsZChhcmlhT3duZWRFbGVtZW50LmdldCgpLCBEZXNjZW5kSWZJZ25vcmVkOjpObyk7
CisgICAgYXV0byBvd25lZE9iamVjdHMgPSB0aGlzLT5vd25lZE9iamVjdHMoKTsKKyAgICBpZiAo
b3duZWRPYmplY3RzLnNpemUoKSkgeworICAgICAgICBmb3IgKGF1dG8mIG9iamVjdCA6IG93bmVk
T2JqZWN0cykKKyAgICAgICAgICAgIGFkZENoaWxkKG9iamVjdC5nZXQoKSwgRGVzY2VuZElmSWdu
b3JlZDo6Tm8pOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFkZENoaWxkcmVuKCk7Ci0gICAgCisKICAgICAvLyAiQVJJQSAxLjEsIElmIHRoZSBz
ZXQgb2YgY29sdW1ucyB3aGljaCBpcyBwcmVzZW50IGluIHRoZSBET00gaXMgY29udGlndW91cywg
YW5kIGlmIHRoZXJlIGFyZSBubyBjZWxscyB3aGljaCBzcGFuIG1vcmUgdGhhbiBvbmUgcm93IG9y
CiAgICAgLy8gY29sdW1uIGluIHRoYXQgc2V0LCB0aGVuIGF1dGhvcnMgbWF5IHBsYWNlIGFyaWEt
Y29saW5kZXggb24gZWFjaCByb3csIHNldHRpbmcgdGhlIHZhbHVlIHRvIHRoZSBpbmRleCBvZiB0
aGUgZmlyc3QgY29sdW1uIG9mIHRoZSBzZXQuIgogICAgIC8vIFVwZGF0ZSBjaGlsZCBjZWxscycg
YXhDb2xJbmRleCBpZiB0aGVyZSdzIGFuIGFyaWEtY29saW5kZXggdmFsdWUgc2V0IGZvciB0aGUg
cm93LiBTbyB0aGUgY2VsbCBkb2Vzbid0IGhhdmUgdG8gZ28gdGhyb3VnaCB0aGUgc2libGluZ3MK
QEAgLTE2Niw3ICsxNjUsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6YWRkQ2hpbGRy
ZW4oKQogICAgIGludCBjb2xJbmRleCA9IGF4Q29sdW1uSW5kZXgoKTsKICAgICBpZiAoY29sSW5k
ZXggPT0gLTEpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNlbGwgOiBjaGlsZHJlbigpKSB7CiAgICAgICAgIGlm
IChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2VsbCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaS5jcHAKaW5kZXggZGE5MmZkNDEzZjEwNzdjNzEyOTBlMTNhM2U1NDg2MjBiZTdjODk2Ny4u
ZmZmZmFlOGFiZmZjNjc4NGVkMGI5ZDIxZmFkMmMxZTc0NzhkMTZhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcApAQCAtMTA2NSw2MyArMTA2NSwzMyBAQCBIYXNoTWFwPHVpbnQzMl90
LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaT4+PiBBY2Nlc3NpYmlsaXR5
T2JqZWN0QQogICAgICAgICAgICAgICAgIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMuYXBwZW5kKG1f
Y29yZU9iamVjdC0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJGaWVsZHNldCkp
OwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghbV9jb3JlT2JqZWN0LT5jb3JyZXNwb25kaW5n
Q29udHJvbEZvckxhYmVsRWxlbWVudCgpKQotICAgICAgICBtX2NvcmVPYmplY3QtPmFyaWFMYWJl
bGxlZEJ5RWxlbWVudHMoYXJpYUxhYmVsbGVkQnlFbGVtZW50cyk7CisgICAgICAgIGFyaWFMYWJl
bGxlZEJ5RWxlbWVudHMgPSBtX2NvcmVPYmplY3QtPmxhYmVsbGVkQnlPYmplY3RzKCk7CiAgICAg
YWRkUmVsYXRpb24oQXRzcGk6OkxhYmVsbGVkQnksIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMpOwog
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFy
aWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50czsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGFiZWxGb3JPYmplY3RzOwogICAgIGlmIChh
dXRvKiBjb250cm9sID0gbV9jb3JlT2JqZWN0LT5jb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVs
RWxlbWVudCgpKQotICAgICAgICBhcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMuYXBw
ZW5kKGNvbnRyb2wpOworICAgICAgICBsYWJlbEZvck9iamVjdHMuYXBwZW5kKGNvbnRyb2wpOwog
ICAgIGVsc2UKLSAgICAgICAgbV9jb3JlT2JqZWN0LT5hcmlhTGFiZWxsZWRCeVJlZmVyZW5jaW5n
RWxlbWVudHMoYXJpYUxhYmVsbGVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKTsKLSAgICBhZGRSZWxh
dGlvbihBdHNwaTo6TGFiZWxGb3IsIGFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVtZW50cyk7
CisgICAgICAgIGxhYmVsRm9yT2JqZWN0cyA9IG1fY29yZU9iamVjdC0+bGFiZWxGb3JPYmplY3Rz
KCk7CisgICAgYWRkUmVsYXRpb24oQXRzcGk6OkxhYmVsRm9yLCBsYWJlbEZvck9iamVjdHMpOwog
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFy
aWFGbG93VG9FbGVtZW50czsKLSAgICBtX2NvcmVPYmplY3QtPmFyaWFGbG93VG9FbGVtZW50cyhh
cmlhRmxvd1RvRWxlbWVudHMpOwotICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpGbG93c1RvLCBhcmlh
Rmxvd1RvRWxlbWVudHMpOworICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpGbG93c1RvLCBtX2NvcmVP
YmplY3QtPmZsb3dUb09iamVjdHMoKSk7CisgICAgYWRkUmVsYXRpb24oQXRzcGk6OkZsb3dzRnJv
bSwgbV9jb3JlT2JqZWN0LT5mbG93RnJvbU9iamVjdHMoKSk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUZsb3dUb1JlZmVyZW5jaW5n
RWxlbWVudHM7Ci0gICAgbV9jb3JlT2JqZWN0LT5hcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50
cyhhcmlhRmxvd1RvUmVmZXJlbmNpbmdFbGVtZW50cyk7Ci0gICAgYWRkUmVsYXRpb24oQXRzcGk6
OkZsb3dzRnJvbSwgYXJpYUZsb3dUb1JlZmVyZW5jaW5nRWxlbWVudHMpOworICAgIGFkZFJlbGF0
aW9uKEF0c3BpOjpEZXNjcmliZWRCeSwgbV9jb3JlT2JqZWN0LT5kZXNjcmliZWRCeU9iamVjdHMo
KSk7CisgICAgYWRkUmVsYXRpb24oQXRzcGk6OkRlc2NyaXB0aW9uRm9yLCBtX2NvcmVPYmplY3Qt
PmRlc2NyaXB0aW9uRm9yT2JqZWN0cygpKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRGVzY3JpYmVkQnlFbGVtZW50czsKLSAgICBt
X2NvcmVPYmplY3QtPmFyaWFEZXNjcmliZWRCeUVsZW1lbnRzKGFyaWFEZXNjcmliZWRCeUVsZW1l
bnRzKTsKLSAgICBhZGRSZWxhdGlvbihBdHNwaTo6RGVzY3JpYmVkQnksIGFyaWFEZXNjcmliZWRC
eUVsZW1lbnRzKTsKKyAgICBhZGRSZWxhdGlvbihBdHNwaTo6Q29udHJvbGxlckZvciwgbV9jb3Jl
T2JqZWN0LT5jb250cm9sbGVkT2JqZWN0cygpKTsKKyAgICBhZGRSZWxhdGlvbihBdHNwaTo6Q29u
dHJvbGxlZEJ5LCBtX2NvcmVPYmplY3QtPmNvbnRyb2xsZXJzKCkpOwogCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFEZXNjcmliZWRCeVJl
ZmVyZW5jaW5nRWxlbWVudHM7Ci0gICAgbV9jb3JlT2JqZWN0LT5hcmlhRGVzY3JpYmVkQnlSZWZl
cmVuY2luZ0VsZW1lbnRzKGFyaWFEZXNjcmliZWRCeVJlZmVyZW5jaW5nRWxlbWVudHMpOwotICAg
IGFkZFJlbGF0aW9uKEF0c3BpOjpEZXNjcmlwdGlvbkZvciwgYXJpYURlc2NyaWJlZEJ5UmVmZXJl
bmNpbmdFbGVtZW50cyk7CisgICAgYWRkUmVsYXRpb24oQXRzcGk6Ok5vZGVQYXJlbnRPZiwgbV9j
b3JlT2JqZWN0LT5vd25lZE9iamVjdHMoKSk7CisgICAgYWRkUmVsYXRpb24oQXRzcGk6Ok5vZGVD
aGlsZE9mLCBtX2NvcmVPYmplY3QtPm93bmVycygpKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhQ29udHJvbHNFbGVtZW50czsKLSAg
ICBtX2NvcmVPYmplY3QtPmFyaWFDb250cm9sc0VsZW1lbnRzKGFyaWFDb250cm9sc0VsZW1lbnRz
KTsKLSAgICBhZGRSZWxhdGlvbihBdHNwaTo6Q29udHJvbGxlckZvciwgYXJpYUNvbnRyb2xzRWxl
bWVudHMpOworICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpEZXRhaWxzLCBtX2NvcmVPYmplY3QtPmRl
dGFpbGVkQnlPYmplY3RzKCkpOworICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpEZXRhaWxzRm9yLCBt
X2NvcmVPYmplY3QtPmRldGFpbHNGb3JPYmplY3RzKCkpOwogCi0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFDb250cm9sc1JlZmVyZW5jaW5n
RWxlbWVudHM7Ci0gICAgbV9jb3JlT2JqZWN0LT5hcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1l
bnRzKGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMpOwotICAgIGFkZFJlbGF0aW9uKEF0
c3BpOjpDb250cm9sbGVkQnksIGFyaWFDb250cm9sc1JlZmVyZW5jaW5nRWxlbWVudHMpOwotCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFP
d25zRWxlbWVudHM7Ci0gICAgbV9jb3JlT2JqZWN0LT5hcmlhT3duc0VsZW1lbnRzKGFyaWFPd25z
RWxlbWVudHMpOwotICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpOb2RlUGFyZW50T2YsIGFyaWFPd25z
RWxlbWVudHMpOwotCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50czsKLSAgICBtX2NvcmVPYmplY3Qt
PmFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50cyhhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMp
OwotICAgIGFkZFJlbGF0aW9uKEF0c3BpOjpOb2RlQ2hpbGRPZiwgYXJpYU93bnNSZWZlcmVuY2lu
Z0VsZW1lbnRzKTsKLQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBhcmlhRGV0YWlsc0VsZW1lbnRzOwotICAgIG1fY29yZU9iamVjdC0+YXJpYURl
dGFpbHNFbGVtZW50cyhhcmlhRGV0YWlsc0VsZW1lbnRzKTsKLSAgICBhZGRSZWxhdGlvbihBdHNw
aTo6RGV0YWlscywgYXJpYURldGFpbHNFbGVtZW50cyk7Ci0KLSAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYURldGFpbHNSZWZlcmVuY2luZ0Vs
ZW1lbnRzOwotICAgIG1fY29yZU9iamVjdC0+YXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRz
KGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyk7Ci0gICAgYWRkUmVsYXRpb24oQXRzcGk6
OkRldGFpbHNGb3IsIGFyaWFEZXRhaWxzUmVmZXJlbmNpbmdFbGVtZW50cyk7Ci0KLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUVycm9yTWVz
c2FnZUVsZW1lbnRzOwotICAgIG1fY29yZU9iamVjdC0+YXJpYUVycm9yTWVzc2FnZUVsZW1lbnRz
KGFyaWFFcnJvck1lc3NhZ2VFbGVtZW50cyk7Ci0gICAgYWRkUmVsYXRpb24oQXRzcGk6OkVycm9y
TWVzc2FnZSwgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKTsKLQotICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRXJyb3JNZXNzYWdlUmVmZXJl
bmNpbmdFbGVtZW50czsKLSAgICBtX2NvcmVPYmplY3QtPmFyaWFFcnJvck1lc3NhZ2VSZWZlcmVu
Y2luZ0VsZW1lbnRzKGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0VsZW1lbnRzKTsKLSAgICBh
ZGRSZWxhdGlvbihBdHNwaTo6RXJyb3JGb3IsIGFyaWFFcnJvck1lc3NhZ2VSZWZlcmVuY2luZ0Vs
ZW1lbnRzKTsKKyAgICBhZGRSZWxhdGlvbihBdHNwaTo6RXJyb3JNZXNzYWdlLCBtX2NvcmVPYmpl
Y3QtPmVycm9yTWVzc2FnZU9iamVjdHMoKSk7CisgICAgYWRkUmVsYXRpb24oQXRzcGk6OkVycm9y
Rm9yLCBtX2NvcmVPYmplY3QtPmVycm9yTWVzc2FnZUZvck9iamVjdHMoKSk7CiAKICAgICByZXR1
cm4gbWFwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBh
ZDMzNjZiMTk3MGZlMDZiZWQ2YjhhNTAxNmI3MTVmOTFiZWNmYzhhLi45NTE2ZDYyYTAyZGUzNzY0
ODU4NmQxMWYyMTJjMDJhZmQ0M2Q1NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbQpAQCAtMTQ2MCwxNCArMTQ2MCwxMyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTdHJp
bmdUb1Jlc3VsdChOU011dGFibGVTdHJpbmcgKnJlc3VsdCwgTlNTdHJpbmcgKnN0cmluZykKICAg
ICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogCiAgICAgaWYgKHNlbGYu
YXhCYWNraW5nT2JqZWN0LT5pc1JhZGlvQnV0dG9uKCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJhZGlvQnV0dG9uU2libGluZ3M7
Ci0gICAgICAgIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5saW5rZWRVSUVsZW1lbnRzKHJhZGlvQnV0
dG9uU2libGluZ3MpOworICAgICAgICBhdXRvIHJhZGlvQnV0dG9uU2libGluZ3MgPSBzZWxmLmF4
QmFja2luZ09iamVjdC0+bGlua2VkT2JqZWN0cygpOwogICAgICAgICBpZiAocmFkaW9CdXR0b25T
aWJsaW5ncy5zaXplKCkgPD0gMSkKICAgICAgICAgICAgIHJldHVybiBOU01ha2VSYW5nZShOU05v
dEZvdW5kLCAwKTsKLSAgICAgICAgCisKICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKHJhZGlv
QnV0dG9uU2libGluZ3MuZmluZChzZWxmLmF4QmFja2luZ09iamVjdCksIHJhZGlvQnV0dG9uU2li
bGluZ3Muc2l6ZSgpKTsKICAgICB9Ci0gICAgCisKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
KiB0YWJsZUNlbGwgPSBbc2VsZiB0YWJsZUNlbGxQYXJlbnRdOwogICAgIGlmICghdGFibGVDZWxs
KQogICAgICAgICByZXR1cm4gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CkBAIC0xOTA4LDEx
ICsxOTA3LDggQEAgc3RhdGljIHZvaWQgYXBwZW5kU3RyaW5nVG9SZXN1bHQoTlNNdXRhYmxlU3Ry
aW5nICpyZXN1bHQsIE5TU3RyaW5nICpzdHJpbmcpCiB7CiAgICAgaWYgKCFbc2VsZiBfcHJlcGFy
ZUFjY2Vzc2liaWxpdHlDYWxsXSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW47Ci0g
ICAgc2VsZi5heEJhY2tpbmdPYmplY3QtPmFyaWFGbG93VG9FbGVtZW50cyhjaGlsZHJlbik7Ci0g
ICAgCi0gICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoY2hpbGRyZW4sIFtdIChhdXRvJiBjaGlsZCkg
LT4gaWQgeworCisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoc2VsZi5heEJhY2tpbmdPYmplY3Qt
PmZsb3dUb09iamVjdHMoKSwgW10gKGF1dG8mIGNoaWxkKSAtPiBpZCB7CiAgICAgICAgIGF1dG8g
d3JhcHBlciA9IGNoaWxkLT53cmFwcGVyKCk7CiAgICAgICAgIEFTU0VSVCh3cmFwcGVyKTsKIApA
QCAtMTk0NSwyMCArMTk0MSwxNCBAQCBzdGF0aWMgTlNBcnJheSAqYWNjZXNzaWJsZUVsZW1lbnRz
Rm9yT2JqZWN0cyhjb25zdCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaAogewogICAgIGlm
ICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXRhaWxz
RWxlbWVudHM7Ci0gICAgc2VsZi5heEJhY2tpbmdPYmplY3QtPmFyaWFEZXRhaWxzRWxlbWVudHMo
ZGV0YWlsc0VsZW1lbnRzKTsKLSAgICByZXR1cm4gYWNjZXNzaWJsZUVsZW1lbnRzRm9yT2JqZWN0
cyhkZXRhaWxzRWxlbWVudHMpOworICAgIHJldHVybiBhY2Nlc3NpYmxlRWxlbWVudHNGb3JPYmpl
Y3RzKHNlbGYuYXhCYWNraW5nT2JqZWN0LT5kZXRhaWxlZEJ5T2JqZWN0cygpKTsKIH0KIAogLSAo
TlNBcnJheSAqKWFjY2Vzc2liaWxpdHlFcnJvck1lc3NhZ2VFbGVtZW50cwogewogICAgIGlmICgh
W3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBlcnJvckVsZW1l
bnRzOwotICAgIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5hcmlhRXJyb3JNZXNzYWdlRWxlbWVudHMo
ZXJyb3JFbGVtZW50cyk7Ci0gICAgcmV0dXJuIGFjY2Vzc2libGVFbGVtZW50c0Zvck9iamVjdHMo
ZXJyb3JFbGVtZW50cyk7CisgICAgcmV0dXJuIGFjY2Vzc2libGVFbGVtZW50c0Zvck9iamVjdHMo
c2VsZi5heEJhY2tpbmdPYmplY3QtPmVycm9yTWVzc2FnZU9iamVjdHMoKSk7CiB9CiAKIC0gKGlk
KWFjY2Vzc2liaWxpdHlMaW5rZWRFbGVtZW50CkBAIC0xOTY3LDIzICsxOTU3LDIwIEBAIHN0YXRp
YyBOU0FycmF5ICphY2Nlc3NpYmxlRWxlbWVudHNGb3JPYmplY3RzKGNvbnN0IEFYQ29yZU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBJZiB0aGlz
IHN0YXRpYyB0ZXh0IGluc2lkZSBvZiBhIGxpbmssIGl0IHNob3VsZCB1c2UgaXRzIHBhcmVudCdz
IGxpbmtlZCBlbGVtZW50LgotICAgIEFYQ29yZU9iamVjdCogZWxlbWVudCA9IHNlbGYuYXhCYWNr
aW5nT2JqZWN0OwotICAgIGlmIChzZWxmLmF4QmFja2luZ09iamVjdC0+cm9sZVZhbHVlKCkgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OlN0YXRpY1RleHQgJiYgc2VsZi5heEJhY2tpbmdPYmplY3QtPnBh
cmVudE9iamVjdFVuaWdub3JlZCgpLT5pc0xpbmsoKSkKLSAgICAgICAgZWxlbWVudCA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBhdXRvKiBiYWNr
aW5nT2JqZWN0ID0gc2VsZi5heEJhY2tpbmdPYmplY3Q7CisgICAgaWYgKGJhY2tpbmdPYmplY3Qt
PnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0ICYmIGJhY2tpbmdP
YmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpLT5pc0xpbmsoKSkKKyAgICAgICAgYmFja2lu
Z09iamVjdCA9IGJhY2tpbmdPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwogCi0gICAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxpbmtlZEVs
ZW1lbnRzOwotICAgIGVsZW1lbnQtPmxpbmtlZFVJRWxlbWVudHMobGlua2VkRWxlbWVudHMpOwot
ICAgIGlmICghbGlua2VkRWxlbWVudHMuc2l6ZSgpIHx8ICFsaW5rZWRFbGVtZW50c1swXSkKKyAg
ICBhdXRvIGxpbmtlZE9iamVjdHMgPSBiYWNraW5nT2JqZWN0LT5saW5rZWRPYmplY3RzKCk7Cisg
ICAgaWYgKGxpbmtlZE9iamVjdHMuaXNFbXB0eSgpIHx8ICFsaW5rZWRPYmplY3RzWzBdKQogICAg
ICAgICByZXR1cm4gbmlsOwogCi0gICAgLy8gQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlua2VkVUlF
bGVtZW50cyBtYXkgcmV0dXJuIGFuIG9iamVjdCB0aGF0IGlzCi0gICAgLy8gZXhwb3NlZCBpbiBv
dGhlciBwbGF0Zm9ybXMgYnV0IG5vdCBvbiBpT1MsIGkuZS4sIGdyb3VwaW5nIG9yIHN0cnVjdHVy
ZQotICAgIC8vIGVsZW1lbnRzIGxpa2UgPGRpdj4gb3IgPHA+LiBUaHVzIGZpbmQgdGhlIG5leHQg
YWNjZXNzaWJsZSBvYmplY3QgdGhhdCBpcwotICAgIC8vIGV4cG9zZWQgb24gaU9TLgotICAgIGF1
dG8gbGlua2VkRWxlbWVudCA9IGZpcnN0QWNjZXNzaWJsZU9iamVjdEZyb21Ob2RlKGxpbmtlZEVs
ZW1lbnRzWzBdLT5ub2RlKCksIFtdIChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0JiBhY2Nlc3Np
YmxlKSB7CisgICAgLy8gQVhDb3JlT2JqZWN0OjpsaW5rZWRPYmplY3QgbWF5IHJldHVybiBhbiBv
YmplY3QgdGhhdCBpcyBleHBvc2VkIGluIG90aGVyIHBsYXRmb3JtcyBidXQgbm90IG9uIGlPUywg
aS5lLiwgZ3JvdXBpbmcgb3Igc3RydWN0dXJlIGVsZW1lbnRzIGxpa2UgPGRpdj4gb3IgPHA+Lgor
ICAgIC8vIFRodXMgZmluZCB0aGUgbmV4dCBhY2Nlc3NpYmxlIG9iamVjdCB0aGF0IGlzIGV4cG9z
ZWQgb24gaU9TLgorICAgIGF1dG8gbGlua2VkT2JqZWN0ID0gZmlyc3RBY2Nlc3NpYmxlT2JqZWN0
RnJvbU5vZGUobGlua2VkT2JqZWN0c1swXS0+bm9kZSgpLCBbXSAoY29uc3QgYXV0byYgYWNjZXNz
aWJsZSkgewogICAgICAgICByZXR1cm4gYWNjZXNzaWJsZS53cmFwcGVyKCkuaXNBY2Nlc3NpYmls
aXR5RWxlbWVudDsKICAgICB9KTsKLSAgICByZXR1cm4gbGlua2VkRWxlbWVudCA/IGxpbmtlZEVs
ZW1lbnQtPndyYXBwZXIoKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGxpbmtlZE9iamVjdCA/IGxp
bmtlZE9iamVjdC0+d3JhcHBlcigpIDogbmlsOwogfQogCiAtIChCT09MKWlzQXR0YWNobWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCA2ZDk0NDBkM2ZiYjYwMGU5MTkzNmU5ZTQx
YjI1MzA1Y2MwY2FmNTk4Li4xMTkzYTdlMTlhNmQ0MTcyMWJmMjc4YTNjMzA1MDc3N2YxYTU3YzBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMzI5LDI5ICszMjksMTQgQEAgdm9p
ZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyhBWENvcmVPYmplY3QmIGNv
cmVPYmplY3QsIElzUm9vdCBpc1IKICAgICBvYmplY3QudGFiQ2hpbGRyZW4odGFiQ2hpbGRyZW4p
OwogICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpUYWJDaGlsZHJl
biwgdGFiQ2hpbGRyZW4pOwogCi0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxpbmtl
ZFVJRWxlbWVudHM7Ci0gICAgb2JqZWN0LmxpbmtlZFVJRWxlbWVudHMobGlua2VkVUlFbGVtZW50
cyk7Ci0gICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkxpbmtlZFVJ
RWxlbWVudHMsIGxpbmtlZFVJRWxlbWVudHMpOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpMaW5rZWRPYmplY3RzLCBvYmplY3QubGlua2VkT2JqZWN0cygpKTsK
IAotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhQ29udHJvbHNFbGVtZW50czsK
LSAgICBvYmplY3QuYXJpYUNvbnRyb2xzRWxlbWVudHMoYXJpYUNvbnRyb2xzRWxlbWVudHMpOwot
ICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBQ29udHJvbHNF
bGVtZW50cywgYXJpYUNvbnRyb2xzRWxlbWVudHMpOwotCi0gICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGFyaWFEZXRhaWxzRWxlbWVudHM7Ci0gICAgb2JqZWN0LmFyaWFEZXRhaWxzRWxl
bWVudHMoYXJpYURldGFpbHNFbGVtZW50cyk7Ci0gICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkFSSUFEZXRhaWxzRWxlbWVudHMsIGFyaWFEZXRhaWxzRWxlbWVudHMp
OwotCi0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGFyaWFFcnJvck1lc3NhZ2VFbGVt
ZW50czsKLSAgICBvYmplY3QuYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKGFyaWFFcnJvck1lc3Nh
Z2VFbGVtZW50cyk7Ci0gICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OkFSSUFFcnJvck1lc3NhZ2VFbGVtZW50cywgYXJpYUVycm9yTWVzc2FnZUVsZW1lbnRzKTsKLQot
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhcmlhRmxvd1RvRWxlbWVudHM7Ci0gICAg
b2JqZWN0LmFyaWFGbG93VG9FbGVtZW50cyhhcmlhRmxvd1RvRWxlbWVudHMpOwotICAgIHNldE9i
amVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBRmxvd1RvRWxlbWVudHMsIGFy
aWFGbG93VG9FbGVtZW50cyk7Ci0KLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJp
YU93bnNFbGVtZW50czsKLSAgICBvYmplY3QuYXJpYU93bnNFbGVtZW50cyhhcmlhT3duc0VsZW1l
bnRzKTsKLSAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQU93
bnNFbGVtZW50cywgYXJpYU93bnNFbGVtZW50cyk7CisgICAgLy8gUmVsYXRpb25zLgorICAgIHNl
dE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb250cm9sbGVkT2JqZWN0cywg
b2JqZWN0LmNvbnRyb2xsZWRPYmplY3RzKCkpOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpEZXRhaWxlZEJ5T2JqZWN0cywgb2JqZWN0LmRldGFpbGVkQnlPYmpl
Y3RzKCkpOworICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpFcnJv
ck1lc3NhZ2VPYmplY3RzLCBvYmplY3QuZXJyb3JNZXNzYWdlT2JqZWN0cygpKTsKKyAgICBzZXRP
YmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Rmxvd1RvT2JqZWN0cywgb2JqZWN0
LmZsb3dUb09iamVjdHMoKSk7CisgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6Ok93bmVkT2JqZWN0cywgb2JqZWN0Lm93bmVkT2JqZWN0cygpKTsKIAogICAgIC8vIFNw
aW4gYnV0dG9uIHN1cHBvcnQuCiAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OkRlY3JlbWVudEJ1dHRvbiwgb2JqZWN0LmRlY3JlbWVudEJ1dHRvbigpKTsKQEAgLTE4NzQsNTQg
KzE4NTksNjQgQEAgQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjpzZWxlY3RlZExpc3RJ
dGVtKCkKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojph
cmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmFjdGl2ZURlc2NlbmRhbnRPZk9iamVjdHMoKSBjb25zdAog
ewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQg
QVhJc29sYXRlZE9iamVjdDo6YXJpYUNvbnRyb2xzUmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRlZE9iamVjdDo6Y29udHJvbGxlcnMoKSBjb25zdAogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgQVhJ
c29sYXRlZE9iamVjdDo6YXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJikgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmRlc2NyaWJlZEJ5T2JqZWN0cygpIGNvbnN0CiB7CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBBWElzb2xh
dGVkT2JqZWN0OjphcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0OjpkZXNjcmlwdGlvbkZvck9iamVjdHMoKSBjb25z
dAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZv
aWQgQVhJc29sYXRlZE9iamVjdDo6YXJpYURldGFpbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0CitBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBBWElzb2xhdGVkT2JqZWN0OjpkZXRhaWxzRm9yT2JqZWN0cygpIGNv
bnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAot
dm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhRXJyb3JNZXNzYWdlUmVmZXJlbmNpbmdFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRlZE9iamVjdDo6ZXJyb3JNZXNzYWdlRm9y
T2JqZWN0cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IHsgfTsKIH0KIAotdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphcmlhRmxvd1RvUmVmZXJlbmNpbmdF
bGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAorQVhDb3JlT2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRlZE9iamVjdDo6Zmxvd0Zyb21P
YmplY3RzKCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
eyB9OwogfQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFMYWJlbGxlZEJ5RWxlbWVudHMo
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3QKK0FYQ29yZU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFYSXNvbGF0ZWRPYmplY3Q6OmxhYmVsbGVkQnlPYmplY3Rz
KCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9Owog
fQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFMYWJlbGxlZEJ5UmVmZXJlbmNpbmdFbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAorQVhDb3JlT2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRlZE9iamVjdDo6bGFiZWxGb3JPYmpl
Y3RzKCkgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9
OwogfQogCi12b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFyaWFPd25zUmVmZXJlbmNpbmdFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdAorQVhDb3JlT2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQVhJc29sYXRlZE9iamVjdDo6b3duZXJzKCkgY29uc3QK
IHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiBib29s
IEFYSXNvbGF0ZWRPYmplY3Q6Omhhc0RhdGFsaXN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuaAppbmRleCBkZWIxNGI2NTcxZmY5MGZlNGFiMDIwMmE4OTQ5MDQ2NDUxOGVlZTI2Li4zNzc3
NzQ2MmY0MjUxNTUyN2VkNzkxNDEzYWU0ODJkYjYzZDM5NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oCkBAIC0yMzAsMTEgKzIzMCw2IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIGxvYWRpbmdQ
cm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+bG9hZGluZ1Byb2dyZXNz
KCk7IH0KICAgICBib29sIHN1cHBvcnRzQVJJQU93bnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzQVJJQU93bnMpOyB9
CiAgICAgYm9vbCBpc0FjdGl2ZURlc2NlbmRhbnRPZkZvY3VzZWRDb250YWluZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzQWN0
aXZlRGVzY2VuZGFudE9mRm9jdXNlZENvbnRhaW5lcik7IH0KLSAgICB2b2lkIGFyaWFDb250cm9s
c0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4pIGNvbnN0IG92
ZXJyaWRlIHsgZmlsbENoaWxkcmVuVmVjdG9yRm9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFS
SUFDb250cm9sc0VsZW1lbnRzLCBjaGlsZHJlbik7IH0KLSAgICB2b2lkIGFyaWFEZXRhaWxzRWxl
bWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbikgY29uc3Qgb3ZlcnJp
ZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQURl
dGFpbHNFbGVtZW50cywgY2hpbGRyZW4pOyB9Ci0gICAgdm9pZCBhcmlhRXJyb3JNZXNzYWdlRWxl
bWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbikgY29uc3Qgb3ZlcnJp
ZGUgeyBmaWxsQ2hpbGRyZW5WZWN0b3JGb3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVJJQUVy
cm9yTWVzc2FnZUVsZW1lbnRzLCBjaGlsZHJlbik7IH0KLSAgICB2b2lkIGFyaWFGbG93VG9FbGVt
ZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdCBvdmVycmlk
ZSB7IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBRmxv
d1RvRWxlbWVudHMsIGNoaWxkcmVuKTsgfQotICAgIHZvaWQgYXJpYU93bnNFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdCBvdmVycmlkZSB7IGZpbGxD
aGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBUklBT3duc0VsZW1lbnRz
LCBjaGlsZHJlbik7IH0KICAgICBib29sIGhhc1BvcHVwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpIYXNQb3B1cCk7IH0KICAgICBT
dHJpbmcgcG9wdXBWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0cmluZ0F0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpQb3B1cFZhbHVlKTsgfQogICAgIGJvb2wgcHJlc3NlZElz
UHJlc2VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFBy
b3BlcnR5TmFtZTo6UHJlc3NlZElzUHJlc2VudCk7IH0KQEAgLTI2Myw3ICsyNTgsNyBAQCBwcml2
YXRlOgogICAgIEFYQ29yZU9iamVjdCogZm9jdXNlZFVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIEFYQ29yZU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IH0KICAgICBBWENvcmVPYmplY3QqIHBhcmVudE9i
amVjdFVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgbGlua2VkVUlFbGVtZW50
cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKSBjb25zdCBvdmVycmlkZSB7
IGZpbGxDaGlsZHJlblZlY3RvckZvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpMaW5rZWRVSUVs
ZW1lbnRzLCBjaGlsZHJlbik7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGlu
a2VkT2JqZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklE
cyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6TGlua2VkT2JqZWN0
cykpOyB9CiAgICAgQVhDb3JlT2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpUaXRsZVVJRWxl
bWVudCk7IH0KICAgICBBWENvcmVPYmplY3QqIHNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb24pIG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJvbGU+
KGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpBUklBUm9sZUF0dHJpYnV0ZSkpOyB9
CkBAIC01NDUsMTYgKzU0MCwyMyBAQCBwcml2YXRlOgogICAgIGJvb2wgYWNjZXNzaWJpbGl0eUlz
SWdub3JlZEJ5RGVmYXVsdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGZsb2F0IHN0ZXBWYWx1ZUZv
clJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQVhDb3JlT2JqZWN0KiBzZWxlY3RlZExpc3RJ
dGVtKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhQWN0aXZlRGVzY2VuZGFudFJlZmVyZW5jaW5n
RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBhcmlhQ29udHJvbHNSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxl
bWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBhcmlhRGVzY3JpYmVkQnlSZWZlcmVuY2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgYXJpYURldGFpbHNSZWZlcmVu
Y2luZ0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZvaWQgYXJpYUVycm9yTWVzc2FnZVJlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhRmxvd1Rv
UmVmZXJlbmNpbmdFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2b2lkIGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhcmlhTGFiZWxsZWRCeVJl
ZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBhcmlhT3duc1JlZmVyZW5jaW5nRWxlbWVudHMoQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgYWN0aXZlRGVzY2VuZGFudE9mT2JqZWN0cygpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250cm9sbGVkT2JqZWN0cygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVW
YWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6Q29udHJvbGxlZE9iamVjdHMpKTsgfQorICAgIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250cm9sbGVycygpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBkZXNjcmliZWRCeU9iamVjdHMoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZGVzY3JpcHRpb25G
b3JPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGRldGFpbGVkQnlPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5v
YmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpE
ZXRhaWxlZEJ5T2JqZWN0cykpOyB9CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRl
dGFpbHNGb3JPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGVycm9yTWVzc2FnZU9iamVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0
eU5hbWU6OkVycm9yTWVzc2FnZU9iamVjdHMpKTsgfQorICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBlcnJvck1lc3NhZ2VGb3JPYmplY3RzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGZsb3dUb09iamVjdHMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4o
QVhQcm9wZXJ0eU5hbWU6OkZsb3dUb09iamVjdHMpKTsgfQorICAgIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBmbG93RnJvbU9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGFiZWxsZWRCeU9iamVjdHMoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGFiZWxGb3JPYmplY3RzKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG93bmVkT2JqZWN0cygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRy
aWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6T3duZWRPYmplY3RzKSk7IH0KKyAgICBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igb3duZXJzKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAg
ICBib29sIGhhc0RhdGFsaXN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c0hh
c1BvcHVwKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1ByZXNzZWQoKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IDdhYzAwZjI3ODhlYjdlYzQ0MmY2
NTRlZTMwNTAzM2M3ZTMxNWM4ZTQuLjAzMzEwZWYxN2ZhNzBiNDI5OGQ5M2MzNmQ2NWU0ZDI4NzFh
ZGRiMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtNDksMTcgKzQ5LDExIEBAIGVudW0gY2xh
c3MgQVhTdHJlYW1PcHRpb25zIDogdWludDhfdDsKIHVzaW5nIEFYSXNvbGF0ZWRUcmVlSUQgPSB1
bnNpZ25lZDsKIAogZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKLSAgICBB
UklBQ29udHJvbHNFbGVtZW50cywKLSAgICBBUklBRGV0YWlsc0VsZW1lbnRzLAotICAgIERyb3BF
ZmZlY3RzLAotICAgIEFSSUFFcnJvck1lc3NhZ2VFbGVtZW50cywKICAgICBBUklBSXNNdWx0aWxp
bmUsCi0gICAgQVJJQUZsb3dUb0VsZW1lbnRzLAogICAgIEFSSUFMYW5kbWFya1JvbGVEZXNjcmlw
dGlvbiwKICAgICBBUklBVHJlZUl0ZW1Db250ZW50LAogICAgIEFSSUFUcmVlUm93cywKICAgICBB
UklBUm9sZUF0dHJpYnV0ZSwKLSAgICBBUklBT3duc0VsZW1lbnRzLAogICAgIEFYQ29sdW1uQ291
bnQsCiAgICAgQVhDb2x1bW5JbmRleCwKICAgICBBWFJvd0NvdW50LApAQCAtOTgsMjAgKzkyLDI1
IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgQ29sdW1uSW5k
ZXhSYW5nZSwKICAgICBDb21wdXRlZFJvbGVTdHJpbmcsCiAgICAgQ29udGVudHMsCisgICAgQ29u
dHJvbGxlZE9iamVjdHMsCiAgICAgQ3VycmVudFN0YXRlLAogICAgIEN1cnJlbnRWYWx1ZSwKICAg
ICBEYXRldGltZUF0dHJpYnV0ZVZhbHVlLAogICAgIERlY3JlbWVudEJ1dHRvbiwKICAgICBEZXNj
cmlwdGlvbiwKKyAgICBEZXRhaWxlZEJ5T2JqZWN0cywKICAgICBEaXNjbG9zZWRCeVJvdywKICAg
ICBEaXNjbG9zZWRSb3dzLAogICAgIERvY3VtZW50RW5jb2RpbmcsCiAgICAgRG9jdW1lbnRMaW5r
cywKICAgICBEb2N1bWVudFVSSSwKKyAgICBEcm9wRWZmZWN0cywKICAgICBFZGl0YWJsZUFuY2Vz
dG9yLAogICAgIEVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbiwKKyAgICBFcnJvck1lc3NhZ2VPYmpl
Y3RzLAogICAgIEV4cGFuZGVkVGV4dFZhbHVlLAogICAgIEZpbGVVcGxvYWRCdXR0b25SZXR1cm5z
VmFsdWVJblRpdGxlLAorICAgIEZsb3dUb09iamVjdHMsCiAgICAgRm9jdXNhYmxlQW5jZXN0b3Is
CiAgICAgSGFzQVJJQVZhbHVlTm93LAogICAgIEhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0
ZSwKQEAgLTIyOSw3ICsyMjgsNyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2
X3QgewogICAgIExhbmd1YWdlLAogICAgIExheW91dENvdW50LAogICAgIExpbmtSZWxWYWx1ZSwK
LSAgICBMaW5rZWRVSUVsZW1lbnRzLAorICAgIExpbmtlZE9iamVjdHMsCiAgICAgTGl2ZVJlZ2lv
bkF0b21pYywKICAgICBMaXZlUmVnaW9uUmVsZXZhbnQsCiAgICAgTGl2ZVJlZ2lvblN0YXR1cywK
QEAgLTI1MSw2ICsyNTAsNyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3Qg
ewogICAgIE1heFZhbHVlRm9yUmFuZ2UsCiAgICAgTWluVmFsdWVGb3JSYW5nZSwKICAgICBOYW1l
QXR0cmlidXRlLAorICAgIE93bmVkT2JqZWN0cywKICAgICBPcmllbnRhdGlvbiwKICAgICBPdXRl
ckhUTUwsCiAgICAgUGF0aCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
aW5kZXggODE5ZmQxNDNhMGQ0MGVmMmEzYzA5YWM5MDdkODUwMGIyZTJlZDIyNi4uYzI3ODFiNzhi
MWExNTEzMjE1YWI3MzVmNDMzYmRlMDlhNWRmNzkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0KQEAgLTIzOTMsMTEgKzIzOTMsOCBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhUYWJsZUxldmVsIl0pCiAgICAgICAgIHJldHVybiBAKGJhY2tpbmdPYmplY3QtPnRh
YmxlTGV2ZWwoKSk7CiAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBO
U0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlXSkgewotICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGlua2VkVUlFbGVt
ZW50czsKLSAgICAgICAgYmFja2luZ09iamVjdC0+bGlua2VkVUlFbGVtZW50cyhsaW5rZWRVSUVs
ZW1lbnRzKTsKLSAgICAgICAgcmV0dXJuIG1ha2VOU0FycmF5KGxpbmtlZFVJRWxlbWVudHMpOwot
ICAgIH0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2li
aWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGJhY2tpbmdPYmplY3QtPmxpbmtlZE9iamVjdHMoKSk7CiAKICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZEF0dHJpYnV0ZV0p
CiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6YmFja2luZ09iamVjdC0+
aXNTZWxlY3RlZCgpXTsKQEAgLTI0NjYsMTEgKzI0NjMsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gYmFja2lu
Z09iamVjdC0+aW52YWxpZFN0YXR1cygpOwogCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlXSkgewotICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnM7Ci0g
ICAgICAgIGJhY2tpbmdPYmplY3QtPmFyaWFPd25zRWxlbWVudHMoYXJpYU93bnMpOwotICAgICAg
ICByZXR1cm4gbWFrZU5TQXJyYXkoYXJpYU93bnMpOwotICAgIH0KKyAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGVdKQorICAg
ICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVjdC0+b3duZWRPYmplY3RzKCkpOwog
CiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlB
UklBUG9zSW5TZXRBdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gQChiYWNraW5nT2JqZWN0LT5w
b3NJblNldCgpKTsKQEAgLTI2MjYsMTEgKzI2MjAsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAi
QVhJc0luQ2VsbCJdKQogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOmJh
Y2tpbmdPYmplY3QtPmlzSW5DZWxsKCldOwogCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpAIkFYRGV0YWlsc0VsZW1lbnRzIl0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGRldGFpbHM7Ci0gICAgICAgIGJh
Y2tpbmdPYmplY3QtPmFyaWFEZXRhaWxzRWxlbWVudHMoZGV0YWlscyk7Ci0gICAgICAgIHJldHVy
biBtYWtlTlNBcnJheShkZXRhaWxzKTsKLSAgICB9CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpAIkFYRGV0YWlsc0VsZW1lbnRzIl0pCisgICAgICAgIHJldHVybiBtYWtl
TlNBcnJheShiYWNraW5nT2JqZWN0LT5kZXRhaWxlZEJ5T2JqZWN0cygpKTsKIAogICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QnJhaWxsZUxhYmVs
QXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3QtPmJyYWlsbGVMYWJlbCgp
OwpAQCAtMjY0MSwxMSArMjYzMiw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5UmVsYXRpdmVGcmFtZUF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1
ZVdpdGhSZWN0OihOU1JlY3QpYmFja2luZ09iamVjdC0+cmVsYXRpdmVGcmFtZSgpXTsKIAotICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEVycm9yTWVzc2FnZUVsZW1l
bnRzIl0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGVycm9yTWVzc2FnZXM7Ci0gICAgICAgIGJhY2tpbmdPYmplY3QtPmFyaWFFcnJv
ck1lc3NhZ2VFbGVtZW50cyhlcnJvck1lc3NhZ2VzKTsKLSAgICAgICAgcmV0dXJuIG1ha2VOU0Fy
cmF5KGVycm9yTWVzc2FnZXMpOwotICAgIH0KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOkAiQVhFcnJvck1lc3NhZ2VFbGVtZW50cyJdKQorICAgICAgICByZXR1cm4gbWFr
ZU5TQXJyYXkoYmFja2luZ09iamVjdC0+ZXJyb3JNZXNzYWdlT2JqZWN0cygpKTsKIAogICAgIC8v
IE11bHRpLXNlbGVjdGFibGUKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUlzTXVsdGlTZWxlY3RhYmxlQXR0cmlidXRlXSkKQEAgLTI2NTksMTEg
KzI2NDcsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
cmV0dXJuIGJhY2tpbmdPYmplY3QtPmRvY3VtZW50RW5jb2RpbmcoKTsKIAogICAgIC8vIEFyaWEg
Y29udHJvbHMgZWxlbWVudAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5QXJpYUNvbnRyb2xzQXR0cmlidXRlXSkgewotICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYUNvbnRyb2xzOwot
ICAgICAgICBiYWNraW5nT2JqZWN0LT5hcmlhQ29udHJvbHNFbGVtZW50cyhhcmlhQ29udHJvbHMp
OwotICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYXJpYUNvbnRyb2xzKTsKLSAgICB9CisgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBcmlhQ29u
dHJvbHNBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gbWFrZU5TQXJyYXkoYmFja2luZ09iamVj
dC0+Y29udHJvbGxlZE9iamVjdHMoKSk7CiAKICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUZvY3VzYWJsZUFuY2VzdG9yQXR0cmlidXRlXSkgewog
ICAgICAgICBBWENvcmVPYmplY3QqIG9iamVjdCA9IGJhY2tpbmdPYmplY3QtPmZvY3VzYWJsZUFu
Y2VzdG9yKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>