<?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>258223</bug_id>
          
          <creation_ts>2023-06-16 14:49:31 -0700</creation_ts>
          <short_desc>AX: Move NSAccessibilityCellForColumnAndRowParameterizedAttribute API off the main-thread</short_desc>
          <delta_ts>2023-06-23 19:39:43 -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>Other</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>
          
          <blocked>239479</blocked>
    
    <blocked>257458</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</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>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1962171</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-06-16 14:49:31 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1962172</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-06-16 14:49:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/110919883&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1962262</commentid>
    <comment_count>2</comment_count>
      <attachid>466732</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-06-17 10:02:34 -0700</bug_when>
    <thetext>Created attachment 466732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1962266</commentid>
    <comment_count>3</comment_count>
      <attachid>466735</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-06-17 10:10:25 -0700</bug_when>
    <thetext>Created attachment 466735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1962272</commentid>
    <comment_count>4</comment_count>
      <attachid>466738</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-06-17 10:19:45 -0700</bug_when>
    <thetext>Created attachment 466738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1962273</commentid>
    <comment_count>5</comment_count>
      <attachid>466739</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-06-17 10:35:16 -0700</bug_when>
    <thetext>Created attachment 466739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1962281</commentid>
    <comment_count>6</comment_count>
      <attachid>466739</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-06-17 12:25:15 -0700</bug_when>
    <thetext>Comment on attachment 466739
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:698
&gt; +    if (is&lt;RenderTableRow&gt;(renderer) || isAccessibilityTableRow(node))

do we get anonymous table rows too? or anonymous tables we need to handle?

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:1242
&gt; +void AXObjectCache::handleRecomputeSlotGrid(AccessibilityTable&amp; axTable)

is slot grid the best terminology for this? what do you mean with &quot;slot&quot; in this case?

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:171
&gt; +    if (!renderTable)

is this always going to be a data table? or will people use flex/contents on table and not be a data table?

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:303
&gt; +            if (renderTable-&gt;hBorderSpacing() &gt; 0 &amp;&amp; renderTable-&gt;vBorderSpacing() &gt; 0

is this a downgrade to use pointers here? is it possible that this pointer becomes nil during its usage?

&gt; Source/WebCore/accessibility/AccessibilityTable.cpp:527
&gt; +            // Step 17 and 18: Let current cell be the next td or th element child in the tr element being processed.

are these steps no implemented? what about step 16?

&gt; Source/WebCore/accessibility/AccessibilityTableCell.cpp:48
&gt; +    , m_axColIndexFromRow(-1)

do we need this initialization here if we set it in the .h file?

&gt; Source/WebCore/accessibility/AccessibilityTableCell.cpp:165
&gt; +        for (int i = 0; i &lt; 2 &amp;&amp; current; i++) {

can you have a comment for why the 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1962293</commentid>
    <comment_count>7</comment_count>
      <attachid>466740</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-06-17 15:30:35 -0700</bug_when>
    <thetext>Created attachment 466740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1962295</commentid>
    <comment_count>8</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-06-17 15:42:57 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #6)
&gt; Comment on attachment 466739 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=466739&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:698
&gt; &gt; +    if (is&lt;RenderTableRow&gt;(renderer) || isAccessibilityTableRow(node))
&gt; 
&gt; do we get anonymous table rows too? or anonymous tables we need to handle?
I think the answer is yes to both, but I&apos;m planning on handling those more comprehensively in a follow-up patch. I believe anonymous rows are messing up parent-child hierarchies, making non-standard-display-value tables inaccessible even with this patch.

&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:1242
&gt; &gt; +void AXObjectCache::handleRecomputeSlotGrid(AccessibilityTable&amp; axTable)
&gt; 
&gt; is slot grid the best terminology for this? what do you mean with &quot;slot&quot; in
&gt; this case?
I use &quot;slot&quot; as is defined here:

https://html.spec.whatwg.org/multipage/tables.html#concept-slots

What do you think about m_cellSlots? Any other ideas? I think I like m_cellSlots better than m_slotGrid, but open to other ideas if you have them.

&gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:171
&gt; &gt; +    if (!renderTable)
&gt; 
&gt; is this always going to be a data table? or will people use flex/contents on
&gt; table and not be a data table?
Yeah you&apos;re right, we should probably modify this &quot;is data table&quot; algorithm to not require render-tree structure, since I&apos;m guessing flex/contents/inline-block/etc tables can be layout tables too. That will take a bit more time investment, so will get to it first thing next week.

&gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:303
&gt; &gt; +            if (renderTable-&gt;hBorderSpacing() &gt; 0 &amp;&amp; renderTable-&gt;vBorderSpacing() &gt; 0
&gt; 
&gt; is this a downgrade to use pointers here? is it possible that this pointer
&gt; becomes nil during its usage?
Not a downgrade. `renderTable` used to be a raw reference (RenderTable&amp;), and now it is a WeakPtr. If the WeakPtr becomes nullptr because the RenderTable is destroyed, we will get a nullptr crash. But that same possibility exists prior to this patch, and it would be a use-after-free crash when accessing the RenderTable&amp;, not a nullptr crash. So this is an improvement.

&gt; &gt; Source/WebCore/accessibility/AccessibilityTable.cpp:527
&gt; &gt; +            // Step 17 and 18: Let current cell be the next td or th element child in the tr element being processed.
&gt; 
&gt; are these steps no implemented? what about step 16?
They are implemented by allowing the for-loop to spin. I added to the comment to clarify this. I also added a comment indicating that step 16 is handled below.

&gt; &gt; Source/WebCore/accessibility/AccessibilityTableCell.cpp:165
&gt; &gt; +        for (int i = 0; i &lt; 2 &amp;&amp; current; i++) {
&gt; 
&gt; can you have a comment for why the 2
Added!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1962986</commentid>
    <comment_count>9</comment_count>
      <attachid>466791</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-06-22 00:16:28 -0700</bug_when>
    <thetext>Created attachment 466791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1962992</commentid>
    <comment_count>10</comment_count>
      <attachid>466792</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-06-22 01:19:31 -0700</bug_when>
    <thetext>Created attachment 466792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1963060</commentid>
    <comment_count>11</comment_count>
      <attachid>466792</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-06-22 09:10:45 -0700</bug_when>
    <thetext>Comment on attachment 466792
Patch

Thanks for making those updates!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1963085</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-06-22 10:51:32 -0700</bug_when>
    <thetext>Committed 265411@main (0604c50219a2): &lt;https://commits.webkit.org/265411@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 466792.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466732</attachid>
            <date>2023-06-17 10:02:34 -0700</date>
            <delta_ts>2023-06-17 10:19:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-258223-20230617100233.patch</filename>
            <type>text/plain</type>
            <size>137376</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBlOTY0MWVjMDI2NjI1ZTA0OWZmMzZhZGYwYzMwMzYzZTA1MWI2MWFiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCAxNiBKdW4gMjAyMyAxNDo1MToxMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBN
b3ZlCiBOU0FjY2Vzc2liaWxpdHlDZWxsRm9yQ29sdW1uQW5kUm93UGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBBUEkgb2ZmIHRoZQogbWFpbi10aHJlYWQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI1ODIyMwogcmRhcjovL3Byb2JsZW0vMTEwOTE5ODgzCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCldpdGggdGhpcyBwYXRjaCwgd2UgcmVwbGFjZSB0aGUgZXhpc3Rp
bmcgcmVuZGVyLXRyZWUtYmFzZWQgY29sdW1uIGFuZApyb3cgY2VsbCBzbG90IGRldGVybWluYXRp
b24gYWxnb3JpdGhtIHdpdGggYSBjdXN0b20gb25lIGJhc2VkIG9uOgoKaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjZm9ybWluZy1hLXRhYmxlCgpXZSB1
c2UgdGhpcyBmb3JtaW5nLWEtdGFibGUgYWxnb3JpdGhtIHRvIGJ1aWxkIGEgbmV3IGRhdGEgc3Ry
dWN0dXJlCmluZGljYXRpbmcgdGhlIGNlbGwgQVhJRCBvY2N1cGllZCBieSBlYWNoICJzbG90IiBp
biB0aGUgdGFibGU6IGBBY2Nlc3NpYmlsaXR5VGFibGU6Om1fc2xvdEdyaWRgCgpUaGlzIGhhcyB0
d28gYmVuZWZpdHM6CiAgMS4gV2UgY2FuIChhbmQgZG8pIGNvcHkgdGhpcyBkYXRhIHN0cnVjdHVy
ZSB0byB0aGUgc2Vjb25kYXJ5IHRocmVhZCwKICAgICBhbmQgdXNlIGl0IHRvIHBlcmZvcm0gYEFY
SXNvbGF0ZWRPYmplY3Q6OmNlbGxGb3JDb2x1bW5BbmRSb3dgCiAgICAgd2l0aG91dCByZWx5aW5n
IG9uIHRoZSBtYWluLXRocmVhZC4KCiAgMi4gVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgYWxn
b3JpdGhtIGRvZXMgbm90IHJlbHkgb24gYW55IHNvcnQgb2YKICAgICByZW5kZXIgdHJlZSBzdHJ1
Y3R1cmUgZm9yIGNvcnJlY3RuZXNzLiBUaGlzIGlzIGtleSBiZWNhdXNlIGF1dGhvcnMKICAgICBl
eHBlY3QgdG8gYmUgYWJsZSB0byBwdXQgYW55IENTUyBgZGlzcGxheWAgdmFsdWUgKGZsZXgsIGNv
bnRlbnRzLCBibG9jaywgZXRjKQogICAgIG9uIHJvd3MsIGNlbGxzLCBhbmQgdGFibGVzLCBhbmQg
cHJlc2VydmUgYWNjZXNzaWJpbGl0eSBzZW1hbnRpY3MuCiAgICAgVGhpcyBkaWRuJ3Qgd29yayBi
ZWZvcmUgdGhpcyBwYXRjaCBiZWNhdXNlIGFueSBvZiB0aGVzZSBkaXNwbGF5CiAgICAgdmFsdWVz
IHByZXZlbnQgUmVuZGVyVGFibGUsIFJlbmRlclRhYmxlUm93LCBhbmQgUmVuZGVyVGFibGVDZWxs
cwogICAgIGZyb20gYmVpbmcgZ2VuZXJhdGVkLCB3aGljaCB0aGUgUmVuZGVyVGFibGUgY2VsbC1m
b3ItY29sdW1uLWFuZC1yb3cKICAgICBtZWNoYW5pc20gcmVsaWVzIG9uLgoKVGhpcyBwYXRjaCBk
b2VzIG5vdCBmdWxseSBmaXggbm9uLXN0YW5kYXJkLWRpc3BsYXkgdmFsdWUgdGFibGVzIGR1ZSB0
bwppc3N1ZXMgd2l0aCBwYXJlbnQtY2hpbGQgbWlzbWF0Y2hlcyBpbiB0YWJsZSBoaWVyYXJjaGll
cyB3aXRoIHRoZXNlCmRpc3BsYXkgdmFsdWVzLiBUaGF0IHdpbGwgYmUgZml4ZWQgaW4gYSBsYXRl
ciBwYXRjaC4KClRoaXMgcGF0Y2ggYWxzbyBmZWF0dXJlcyBzZXZlcmFsIG90aGVyIGltcHJvdmVt
ZW50cy4KCiAgMS4gQVhQcm9wZXJ0eU5hbWU6OlJvd0NvdW50IGFuZCBBWFByb3BlcnR5TmFtZTo6
Q29sdW1uQ291bnQgd2VyZQogICAgIHBvaW50bGVzc2x5IGNhY2hlZCByYXRoZXIgdGhhbiBzaW1w
bHkgY291bnRpbmcgQVhQcm9wZXJ0eU5hbWU6OlJvd3MKICAgICBhbmQgQVhQcm9wZXJ0eU5hbWU6
OkNvbHVtbnMgKGFzIHRoZSBsaXZlIHRyZWUgaW1wbGVtZW50YXRpb24gZG9lcykuCiAgICAgVGhl
c2UgcHJvcGVydGllcyBhcmUgcmVtb3ZlZCwgcmVkdWNpbmcgbWVtb3J5IGFuZCBDUFUgY29uc3Vt
cHRpb24uCgogIDIuIEZpeGVkIGEgYnVnIHdoZXJlIHN0YWxlIGRhdGEgd2FzIG5vdCB1cGRhdGVk
IGFmdGVyIGR5bmFtaWMKICAgICBhcmlhLWNvbHNwYW4gY2hhbmdlcy4KCiAgMy4gRml4ZWQgYSBi
dWcgd2hlcmUgdGFibGUncyBjb2x1bW5zIHdlcmUgbm90IHVwZGF0ZWQgYWZ0ZXIgaXRzCiAgICAg
cm93cyBjaGlsZHJlbiBjaGFuZ2VkICh3aGljaCBjYW4gZWZmZWN0IGNvbHVtbnMpLgoKICA0LiBG
aXhlZCBhIHBlcmZvcm1hbmNlIGlzc3VlIHdoZXJlIGBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpp
c1RhYmxlQ2VsbGAsCiAgICAgdXNlZCB0byB0eXBlY2hlY2sgaXM8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbD4sIGRpZCBhIGBwYXJlbnRUYWJsZSgpYAogICAgIHRyYXZlcnNhbC4gVGhpcyBpcyBjb25m
dXNpbmcgYW5kIHZlcnkgbm9uLXBlcmZvcm1hbnQuIEEgbmV3CiAgICAgYGlzRXhwb3NlZFRhYmxl
Q2VsbGAgZnVuY3Rpb24gaXMgYWRkZWQgbWFraW5nIHRoaXMgaW50ZW50IG1vcmUKICAgICBjbGVh
ciwgYW5kIGltcHJvdmluZyBwZXJmb3JtYW5jZSBpbiB0aGUgYXJlYXMgdGhhdCBkb24ndCBuZWVk
IHRoaXMKICAgICB0cmF2ZXJzYWwuCgogIDUuIEFsbG93IGNyZWF0aW5nIEFjY2Vzc2liaWxpdHlU
YWJsZSwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCwgYW5kCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxl
Um93IHdpdGggbm8gcmVuZGVyZXIsIHdoaWNoIGlzIGNydWNpYWwgZm9yCiAgICAgZGlzcGxheTpj
b250ZW50cyBzdXBwb3J0LgoKVGhyZWUgdGVzdHMgYXJlIGFkZGVkIHRvIGVuc3VyZSB0aGUgc2xv
dC1ncmlkIGlzIHVwZGF0ZWQgYWZ0ZXIgZHluYW1pYyBjaGFuZ2VzOgogIC0gYWNjZXNzaWJpbGl0
eS9keW5hbWljLWNvbHNwYW4uaHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4u
aHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKCiog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0
bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhw
ZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3Rh
YmxlLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29s
c3Bhbi5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93
c3Bhbi1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy1yb3dzcGFuLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy10YWJsZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy5odG1sOiBBZGRlZC4KKiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dDoKKiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLmh0bWw6CiogTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4cGVjdGVkLnR4
dDoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLW11bHRpcGxlLXRib2RpZXMtZXhw
ZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtdGhlYWQtdGZvb3Qt
ZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2dl
bmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQ6Ciog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHA6CihXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
OgooV2ViQ29yZTo6bm9kZUhhc0dyaWRSb2xlKToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRh
YmxlKToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRhYmxlUm93KToKKFdlYkNvcmU6OmlzQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjcmVhdGVPYmpl
Y3RGcm9tUmVuZGVyZXIpOgooV2ViQ29yZTo6Y3JlYXRlRnJvbU5vZGUpOgooV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6aGFuZGxlQ2hpbGRyZW5DaGFuZ2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OmhhbmRsZVJlY29tcHV0ZVNsb3RHcmlkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Omhh
bmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2UpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFu
ZGxlQXR0cmlidXRlQ2hhbmdlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZl
cnJlZENhY2hlVXBkYXRlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUlzb2xhdGVk
VHJlZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpkZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdy
aWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgooV2Vi
Q29yZTo6bm9kZUhhc0dyaWRSb2xlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmRlZmVyUmVj
b21wdXRlVGFibGVTbG90R3JpZCk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNv
bXB1dGVTbG90R3JpZCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWQuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJs
ZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFk
ZFJvd0Rlc2NlbmRhbnQpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlk
OjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpheFJvd1NwYW5XaXRoUm93SW5kZXggY29uc3QpOiBEZWxldGVk
LgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSBj
b25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVk
Q2VsbHMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2xvdEdyaWQpOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6QWNjZXNzaWJpbGl0eVRhYmxlKToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6
aXNEYXRhVGFibGUgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRl
SXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6cmVjb21wdXRlSXNFeHBvc2FibGUpOgooV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVRhYmxlOjpzbG90R3JpZCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnNl
dFNsb3RHcmlkRGlydHkpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNoaWxk
cmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZTo6ZW5zdXJlUm93QW5kQ29sdW1uKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNF
eHBvc2FibGUgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjph
ZGRUYWJsZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6
OmFkZENoaWxkcmVuRnJvbVNlY3Rpb24pOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmlzRXhwb3NlZFRhYmxlQ2VsbCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CihXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlSGVhZGVyQ2VsbCBjb25zdCk6CihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRSb3cgY29uc3QpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OnRpdGxlVUlFbGVtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uSW5kZXggY29uc3QpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93U3BhbiBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpjb2xTcGFuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGw6OmlzVGFibGVDZWxsIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmF4Q29sdW1uU3BhbiBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd1NwYW4gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oOgooV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6c2V0Um93SW5kZXgpOgooV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6c2V0Q29sdW1uSW5kZXgpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6Y29sdW1uSGVhZGVyKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
OjpoZWFkZXJPYmplY3RGb3JTZWN0aW9uKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oOgoqIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6QWNjZXNzaWJpbGl0eVRhYmxlUm93KToKKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6
aGVhZGVyT2JqZWN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZVJvdy5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcDoKKiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGFibGVDZWxsUGFyZW50XSk6
CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlIZWFkZXJFbGVt
ZW50c10pOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMpOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y2VsbEZvckNvbHVtbkFuZFJv
dyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc1RhYmxlQ2VsbCBjb25zdCk6CiogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyk6
CihXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZUFuZERlcGVuZGVudFByb3BlcnRp
ZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgooLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6Ci0tLQogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAgICAgIHwgICAzICsKIC4uLi9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8IDEwOSArKysrLQogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgICA5ICsKIC4uLi9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgICB8ICA4MiAtLS0tCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCAgICAgfCAgIDcgKy0KIC4uLi9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCAgICAgICAgICAgICB8IDEwNyAtLS0tLQogLi4u
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIHwgICA2IC0KIC4uLi9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwICAgICB8ICAgMiArLQogLi4uL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAgICAgIHwgICAyICsKIC4uLi9BY2Nl
c3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggICAgICAgICAgICB8ICAgMSArCiAuLi4vYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwICAgICAgfCA0MjAgKysrKysrKysrKysrLS0t
LS0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaCAgICAgICAgfCAgMzQg
Ky0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwICB8IDE0OSAr
KystLS0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmggICAgfCAg
MjIgKy0KIC4uLi9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwICAgICAgICAgICAgICB8IDEy
MyArLS0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmggIHwg
ICAzIC0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgICB8ICAy
OCArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmggICAgIHwgICAy
ICsKIC4uLi9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNwaS5jcHAgICB8ICAgMiAr
LQogLi4uL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNwaS5jcHAgICAgIHwgICAyICst
CiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tICAgfCAgIDQgKy0K
IC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgICAgICAgICB8ICAzNiArLQog
Li4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggICAgICAgICAgIHwgIDExICstCiAu
Li4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCAgICAgICAgICAgfCAgMjMgKy0KIC4u
Li9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAgNyArLQogLi4u
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAgIHwgICA0ICstCiAuLi4v
YXJpYS10YWJsZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgIDIgKy0KIC4uLi9h
Y2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy5odG1sICB8ICAgOCArLQogLi4uL2N1
c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQgICAgICAgIHwgICA0ICstCiAuLi4vYWNj
ZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUuaHRtbCAgfCAgIDQgKy0KIC4uLi9keW5h
bWljLWNvbHNwYW4tZXhwZWN0ZWQudHh0ICAgICAgICAgICAgICB8ICAyMiArCiAuLi4vYWNjZXNz
aWJpbGl0eS9keW5hbWljLWNvbHNwYW4uaHRtbCAgICAgICAgfCAgNjkgKysrCiAuLi4vZHluYW1p
Yy1yb3dzcGFuLWV4cGVjdGVkLnR4dCAgICAgICAgICAgICAgfCAgMjEgKwogLi4uL2FjY2Vzc2li
aWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwgICAgICAgIHwgIDY4ICsrKwogLi4uL2R5bmFtaWMt
dGFibGUtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0ICAgIHwgIDMzICsrCiAuLi4vZHluYW1pYy10
YWJsZS1kZXNjZW5kYW50cy5odG1sICAgICAgICAgICAgfCAxMDQgKysrKysKIC4uLi9hY2Nlc3Np
YmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dCB8ICAgMiArLQogTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi5odG1sIHwgICAyICstCiAuLi4vdGFibGUtaW5j
b3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQgfCAgMjYgKy0KIC4uLi90YWJsZS1tdWx0
aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dCAgICAgICB8ICAxNCArLQogLi4uL3RhYmxlLXRoZWFk
LXRmb290LWV4cGVjdGVkLnR4dCAgICAgICAgICAgIHwgICA2ICstCiAuLi50ZW50LXdpdGgtZGlz
cGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQgfCAgIDMgKy0KIDQyIGZpbGVzIGNoYW5nZWQs
IDkzMyBpbnNlcnRpb25zKCspLCA2NTMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhwZWN0ZWQudHh0CiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNw
YW4uaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy1yb3dzcGFuLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVzY2VuZGFudHMtZXhwZWN0
ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5h
bWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhMb2dnZXIuY3BwCmluZGV4IDFlNDdhNTUyN2MxZi4uZGNlYjNlOGI0NzRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApAQCAtNTQ0LDYgKzU0NCw5IEBAIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBBWE9iamVjdENhY2hlOjpB
WE5vdGlmaWNhdGlvbiBub3RpZmljCiAgICAgY2FzZSBBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNh
dGlvbjo6QVhTZXRTaXplQ2hhbmdlZDoKICAgICAgICAgc3RyZWFtIDw8ICJBWFNldFNpemVDaGFu
Z2VkIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNh
dGlvbjo6QVhTbG90R3JpZENoYW5nZWQ6CisgICAgICAgIHN0cmVhbSA8PCAiQVhTbG90R3JpZENo
YW5nZWQiOworICAgICAgICBicmVhazsKICAgICBjYXNlIEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZp
Y2F0aW9uOjpBWFRhYmxlSGVhZGVyc0NoYW5nZWQ6CiAgICAgICAgIHN0cmVhbSA8PCAiQVhUYWJs
ZUhlYWRlcnNDaGFuZ2VkIjsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmMmU4N2MzMmZhNTUuLmQ1MjViMDYz
NDM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUGFydEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5oIgogI2luY2x1ZGUgIklubGluZVJ1bkFuZE9mZnNldC5oIgpAQCAtNTc2LDYgKzU3NywxMSBA
QCBib29sIG5vZGVIYXNSb2xlKE5vZGUqIG5vZGUsIFN0cmluZ1ZpZXcgcm9sZSkKICAgICByZXR1
cm4gU3BhY2VTcGxpdFN0cmluZzo6c3BhY2VTcGxpdFN0cmluZ0NvbnRhaW5zVmFsdWUocm9sZVZh
bHVlLCByb2xlLCBTcGFjZVNwbGl0U3RyaW5nOjpTaG91bGRGb2xkQ2FzZTo6WWVzKTsKIH0KIAor
Ym9vbCBub2RlSGFzR3JpZFJvbGUoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZUhhc1Jv
bGUobm9kZSwgImdyaWQiX3MpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJ0YWJsZSJfcykgfHwgbm9k
ZUhhc1JvbGUobm9kZSwgInRyZWVncmlkIl9zKTsKK30KKwogc3RhdGljIGJvb2wgaXNTaW1wbGVJ
bWFnZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewogICAgIGlmICghaXM8UmVuZGVy
SW1hZ2U+KHJlbmRlcmVyKSkKQEAgLTYxOCw2ICs2MjQsMjEgQEAgc3RhdGljIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5VHJlZUl0ZW0oTm9kZSogbm9kZSkKICAgICByZXR1cm4gbm9kZUhhc1JvbGUobm9k
ZSwgInRyZWVpdGVtIl9zKTsKIH0KIAorc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFibGUo
Tm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gaXM8SFRNTFRhYmxlRWxlbWVudD4obm9kZSk7Cit9
CisKK3N0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRhYmxlUm93KE5vZGUqIG5vZGUpCit7Cisg
ICAgcmV0dXJuIGlzPEhUTUxUYWJsZVJvd0VsZW1lbnQ+KG5vZGUpOworfQorCitzdGF0aWMgYm9v
bCBpc0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gaXM8
SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+KG5vZGUpOworfQorCiBSZWY8QWNjZXNzaWJpbGl0eU9iamVj
dD4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlT2JqZWN0RnJvbVJlbmRlcmVyKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCiB7CiAgICAgLy8gRklYTUU6IEhvdyBjb3VsZCByZW5kZXJlci0+bm9kZSgpIGV2
ZXIgbm90IGJlIGFuIEVsZW1lbnQ/CkBAIC02MjcsNyArNjQ4LDcgQEAgUmVmPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZU9iamVjdEZyb21SZW5kZXJlcihSZW5kZXJP
YmplY3QqIHIKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlMaXN0OjpjcmVhdGUocmVuZGVy
ZXIpOwogCiAgICAgLy8gYXJpYSB0YWJsZXMKLSAgICBpZiAobm9kZUhhc1JvbGUobm9kZSwgImdy
aWQiX3MpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJ0cmVlZ3JpZCJfcykgfHwgbm9kZUhhc1JvbGUo
bm9kZSwgInRhYmxlIl9zKSkKKyAgICBpZiAobm9kZUhhc0dyaWRSb2xlKG5vZGUpKQogICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjcmVhdGUocmVuZGVyZXIpOwogICAgIGlm
IChub2RlSGFzUm9sZShub2RlLCAicm93Il9zKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlBUklBR3JpZFJvdzo6Y3JlYXRlKHJlbmRlcmVyKTsKQEAgLTY3MiwxMSArNjkzLDExIEBAIFJl
ZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBBWE9iamVjdENhY2hlOjpjcmVhdGVPYmplY3RGcm9tUmVu
ZGVyZXIoUmVuZGVyT2JqZWN0KiByCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TWVudUxp
c3Q6OmNyZWF0ZShkb3duY2FzdDxSZW5kZXJNZW51TGlzdD4ocmVuZGVyZXIpKTsKIAogICAgIC8v
IHN0YW5kYXJkIHRhYmxlcwotICAgIGlmIChpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpKQorICAg
IGlmIChpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpIHx8IGlzQWNjZXNzaWJpbGl0eVRhYmxlKG5v
ZGUpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUocmVuZGVyZXIp
OwotICAgIGlmIChpczxSZW5kZXJUYWJsZVJvdz4ocmVuZGVyZXIpKQorICAgIGlmIChpczxSZW5k
ZXJUYWJsZVJvdz4ocmVuZGVyZXIpIHx8IGlzQWNjZXNzaWJpbGl0eVRhYmxlUm93KG5vZGUpKQog
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVhdGUocmVuZGVyZXIpOwot
ICAgIGlmIChpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKSkKKyAgICBpZiAoKGlzPFJlbmRl
clRhYmxlQ2VsbD4ocmVuZGVyZXIpICYmICFyZW5kZXJlci0+aXNBbm9ueW1vdXMoKSkgfHwgaXNB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsKG5vZGUpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6Y3JlYXRlKHJlbmRlcmVyKTsKIAogICAgIC8vIHByb2dyZXNzIGJhcgpAQCAt
NzAyLDYgKzcyMywxMiBAQCBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGNyZWF0ZUZy
b21Ob2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eUxpc3QoJm5vZGUp
KQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUxpc3Q6OmNyZWF0ZShub2RlKTsKKyAgICBp
ZiAoaXNBY2Nlc3NpYmlsaXR5VGFibGUoJm5vZGUpKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRhYmxlOjpjcmVhdGUobm9kZSk7CisgICAgaWYgKGlzQWNjZXNzaWJpbGl0eVRhYmxlUm93
KCZub2RlKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6Y3JlYXRlKG5v
ZGUpOworICAgIGlmIChpc0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwoJm5vZGUpKQorICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKG5vZGUpOwogICAgIGlmIChpc0Fj
Y2Vzc2liaWxpdHlUcmVlKCZub2RlKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUcmVl
OjpjcmVhdGUobm9kZSk7CiAgICAgaWYgKGlzQWNjZXNzaWJpbGl0eVRyZWVJdGVtKCZub2RlKSkK
QEAgLTExNjQsNiArMTE5MSwxMSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUNoaWxkcmVu
Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCiAgICAgfSBlbHNlIGlmIChpczxB
Y2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cD4ob2JqZWN0KSkgewogICAgICAgICBkb3duY2FzdDxB
Y2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cD4ob2JqZWN0KS5oYW5kbGVDaGlsZHJlbkNoYW5nZWQo
KTsKICAgICAgICAgcmV0dXJuOworICAgIH0gZWxzZSBpZiAoYXV0byogYXhUYWJsZSA9IGR5bmFt
aWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KG9iamVjdCkpCisgICAgICAgIGRlZmVyUmVj
b21wdXRlVGFibGVTbG90R3JpZCgqYXhUYWJsZSk7CisgICAgZWxzZSBpZiAoYXV0byogYXhSb3cg
PSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93PihvYmplY3QpKSB7CisgICAg
ICAgIGlmIChhdXRvKiBwYXJlbnRUYWJsZSA9IGF4Um93LT5wYXJlbnRUYWJsZSgpKQorICAgICAg
ICAgICAgZGVmZXJSZWNvbXB1dGVUYWJsZVNsb3RHcmlkKCpwYXJlbnRUYWJsZSk7CiAgICAgfQog
CiAgICAgaWYgKCFvYmplY3Qubm9kZSgpICYmICFvYmplY3QucmVuZGVyZXIoKSkKQEAgLTEyMDcs
NiArMTIzOSwxNCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUNoaWxkcmVuQ2hhbmdlZChB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCiAgICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9u
KCZvYmplY3QsIEFYQ2hpbGRyZW5DaGFuZ2VkKTsKIH0KIAordm9pZCBBWE9iamVjdENhY2hlOjpo
YW5kbGVSZWNvbXB1dGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUmIGF4VGFibGUpCit7Cisg
ICAgYXhUYWJsZS5zZXRTbG90R3JpZERpcnR5KCk7CisjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlf
SVNPTEFURURfVFJFRSkKKyAgICB1cGRhdGVJc29sYXRlZFRyZWUoYXhUYWJsZSwgQVhTbG90R3Jp
ZENoYW5nZWQpOworI2VuZGlmCit9CisKIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlTWVudU9w
ZW5lZChOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cmVuZGVyZXIoKSB8
fCAhbm9kZUhhc1JvbGUobm9kZSwgIm1lbnUiX3MpKQpAQCAtMjEwNSw3ICsyMTQ1LDcgQEAgdm9p
ZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlKEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IEF0b21TdHIKICAgICAgICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKHRh
cmdldCwgQVhOb3RpZmljYXRpb246OkFYQWN0aXZlRGVzY2VuZGFudENoYW5nZWQpOwogCiAgICAg
ICAgIC8vIFRhYmxlIGNlbGwgYWN0aXZlIGRlc2NlbmRhbnQgY2hhbmdlcyBzaG91bGQgdHJpZ2dl
ciBzZWxlY3RlZCBjZWxsIGNoYW5nZXMuCi0gICAgICAgIGlmICh0YXJnZXQtPmlzVGFibGUoKSAm
JiBhY3RpdmVEZXNjZW5kYW50LT5pc1RhYmxlQ2VsbCgpKSB7CisgICAgICAgIGlmICh0YXJnZXQt
PmlzVGFibGUoKSAmJiBhY3RpdmVEZXNjZW5kYW50LT5pc0V4cG9zZWRUYWJsZUNlbGwoKSkgewog
I2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgICAgICAgICB1cGRh
dGVJc29sYXRlZFRyZWUodGFyZ2V0LCBBWE5vdGlmaWNhdGlvbjo6QVhTZWxlY3RlZENlbGxzQ2hh
bmdlZCk7CiAjZW5kaWYKQEAgLTIyMDMsNiArMjI0MywyNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJgogICAgIEFYTE9HKG1ha2VTdHJpbmcoImF0dHJpYnV0ZSAiLCBhdHRyTmFtZS5sb2NhbE5h
bWUoKSwgIiBmb3IgZWxlbWVudCAiLCBlbGVtZW50ID8gZWxlbWVudC0+ZGVidWdEZXNjcmlwdGlv
bigpIDogU3RyaW5nKCJudWxscHRyIl9zKSkpOwogICAgIEFYTE9HKG1ha2VTdHJpbmcoIm9sZCB2
YWx1ZTogIiwgb2xkVmFsdWUsICIgbmV3IHZhbHVlOiAiLCBuZXdWYWx1ZSkpOwogCisgICAgZW51
bSBjbGFzcyBUYWJsZVByb3BlcnR5IDogdWludDhfdCB7IEV4cG9zZWQgPSAxIDw8IDAsIFNsb3RH
cmlkID0gMSA8PCAxIH07CisgICAgYXV0byByZWNvbXB1dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMg
PSBbdGhpc10gKEVsZW1lbnQqIGVsZW1lbnQsIE9wdGlvblNldDxUYWJsZVByb3BlcnR5PiBwcm9w
ZXJ0aWVzKSB7CisgICAgICAgIEFTU0VSVCghcHJvcGVydGllcy5pc0VtcHR5KCkpOworCisgICAg
ICAgIGlmICghcHJvcGVydGllcy5jb250YWlucyhUYWJsZVByb3BlcnR5OjpTbG90R3JpZCkpIHsK
KyAgICAgICAgICAgIC8vIElmIHdlJ3JlIHJlLWNvbXB1dGluZyB0aGUgZXhwb3NlZCBzdGF0ZSBv
ZiB0aGUgdGFibGUsIHdlIG9ubHkgbmVlZCB0byBkbyB3b3JrIGZvciBub24tQVJJQSB0YWJsZXMs
IGFsbG93aW5nIHVzIHRvCisgICAgICAgICAgICAvLyBkbyBhIGNoZWFwIGR5bmFtaWNEb3duY2Fz
dCBjaGVjayBmb3IgYW4gSFRNTFRhYmxlUGFydEVsZW1lbnQgcmF0aGVyIHRoYW4gY2FsbGluZyBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRUYWJsZSgpLgorICAgICAgICAgICAgLy8gKEFS
SUEgdGFibGVzIGFyZSBpbmhlcmVudGx5IGFsd2F5cyBleHBvc2VkKS4KKyAgICAgICAgICAgIGlm
IChhdXRvKiB0YWJsZVBhcnRFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxUYWJsZVBhcnRF
bGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgICAgICAgICBkZWZlclJlY29tcHV0ZVRhYmxlSXNF
eHBvc2VkKGNvbnN0X2Nhc3Q8SFRNTFRhYmxlRWxlbWVudCo+KHRhYmxlUGFydEVsZW1lbnQtPmZp
bmRQYXJlbnRUYWJsZSgpLmdldCgpKSk7CisgICAgICAgIH0gZWxzZSBpZiAoYXV0byogYXhDZWxs
ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KGdldE9yQ3JlYXRlKGVs
ZW1lbnQpKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHBhcmVudFRhYmxlID0gYXhDZWxsLT5w
YXJlbnRUYWJsZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMuY29udGFpbnMo
VGFibGVQcm9wZXJ0eTo6RXhwb3NlZCkgJiYgIXBhcmVudFRhYmxlLT5pc0FyaWFUYWJsZSgpKQor
ICAgICAgICAgICAgICAgICAgICBkZWZlclJlY29tcHV0ZVRhYmxlSXNFeHBvc2VkKHBhcmVudFRh
YmxlLT5lbGVtZW50KCkpOworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmNvbnRhaW5z
KFRhYmxlUHJvcGVydHk6OlNsb3RHcmlkKSkKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJSZWNv
bXB1dGVUYWJsZVNsb3RHcmlkKCpwYXJlbnRUYWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9OworCiAgICAgaWYgKCFzaG91bGRQcm9jZXNzQXR0cmlidXRlQ2hhbmdlKGVsZW1l
bnQsIGF0dHJOYW1lKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjQ1LDE2ICsyMzA1LDE3IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlKEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gb3BlbkF0
dHIgJiYgaXM8SFRNTERpYWxvZ0VsZW1lbnQ+KCplbGVtZW50KSkgewogICAgICAgICBkZWZlck1v
ZGFsQ2hhbmdlKGVsZW1lbnQpOwogICAgICAgICByZWNvbXB1dGVJc0lnbm9yZWQoZWxlbWVudC0+
cGFyZW50Tm9kZSgpKTsKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IHJvd3NwYW5BdHRyKSB7
CisgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhSb3dTcGFuQ2hhbmdlZCk7Cisg
ICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlUHJvcGVydGllcyhlbGVtZW50LCBUYWJsZVByb3Bl
cnR5OjpTbG90R3JpZCk7CisgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBjb2xzcGFuQXR0cikg
eworICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYQ29sdW1uU3BhbkNoYW5nZWQp
OworICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgVGFibGVQ
cm9wZXJ0eTo6U2xvdEdyaWQpOwogICAgIH0KIAogICAgIGlmICghYXR0ck5hbWUubG9jYWxOYW1l
KCkuc3RyaW5nKCkuc3RhcnRzV2l0aCgiYXJpYS0iX3MpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIHJlY29tcHV0ZVBhcmVudFRhYmxlRXhwb3N1cmUgPSBbdGhpc10gKEVsZW1lbnQqIGVs
ZW1lbnQpIHsKLSAgICAgICAgaWYgKGF1dG8qIHRhYmxlUGFydEVsZW1lbnQgPSBkeW5hbWljRG93
bmNhc3Q8SFRNTFRhYmxlUGFydEVsZW1lbnQ+KGVsZW1lbnQpKQotICAgICAgICAgICAgZGVmZXJS
ZWNvbXB1dGVUYWJsZUlzRXhwb3NlZChjb25zdF9jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJs
ZVBhcnRFbGVtZW50LT5maW5kUGFyZW50VGFibGUoKS5nZXQoKSkpOwotICAgIH07Ci0KICAgICBp
ZiAoYXR0ck5hbWUgPT0gYXJpYV9hY3RpdmVkZXNjZW5kYW50QXR0cikKICAgICAgICAgaGFuZGxl
QWN0aXZlRGVzY2VuZGFudENoYW5nZSgqZWxlbWVudCwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKICAg
ICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2F0b21pY0F0dHIpCkBAIC0yMjc0LDEwICsyMzM1
LDEwIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlKEVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgICAgIGRlZmVyUmVjb21wdXRlVGFi
bGVJc0V4cG9zZWQoZHluYW1pY0Rvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KGVsZW1lbnQpKTsK
ICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfY29saW5kZXhBdHRyKSB7CiAgICAgICAg
IHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhDb2x1bW5JbmRleENoYW5nZWQpOwotICAgICAg
ICByZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlKGVsZW1lbnQpOworICAgICAgICByZWNvbXB1
dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgVGFibGVQcm9wZXJ0eTo6RXhwb3NlZCk7
CiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2NvbHNwYW5BdHRyKSB7CiAgICAgICAg
IHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhDb2x1bW5TcGFuQ2hhbmdlZCk7Ci0gICAgICAg
IHJlY29tcHV0ZVBhcmVudFRhYmxlRXhwb3N1cmUoZWxlbWVudCk7CisgICAgICAgIHJlY29tcHV0
ZVBhcmVudFRhYmxlUHJvcGVydGllcyhlbGVtZW50LCB7IFRhYmxlUHJvcGVydHk6OlNsb3RHcmlk
LCBUYWJsZVByb3BlcnR5OjpFeHBvc2VkIH0pOwogICAgIH0KICAgICBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBhcmlhX2Rlc2NyaWJlZGJ5QXR0cikKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVt
ZW50LCBBWERlc2NyaWJlZEJ5Q2hhbmdlZCk7CkBAIC0yMjk3LDcgKzIzNTgsNyBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBRdWFsaWZpZWROYW1lJgogICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYUGxh
Y2Vob2xkZXJDaGFuZ2VkKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3Jvd2luZGV4
QXR0cikgewogICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYUm93SW5kZXhDaGFu
Z2VkKTsKLSAgICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVFeHBvc3VyZShlbGVtZW50KTsKKyAg
ICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVQcm9wZXJ0aWVzKGVsZW1lbnQsIHsgVGFibGVQcm9w
ZXJ0eTo6U2xvdEdyaWQsIFRhYmxlUHJvcGVydHk6OkV4cG9zZWQgfSk7CiAgICAgfQogICAgIGVs
c2UgaWYgKGF0dHJOYW1lID09IGFyaWFfdmFsdWVtYXhBdHRyKQogICAgICAgICBwb3N0Tm90aWZp
Y2F0aW9uKGVsZW1lbnQsIEFYTWF4aW11bVZhbHVlQ2hhbmdlZCk7CkBAIC0yMzU1LDkgKzI0MTYs
OCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJgogICAgICAgICBoYW5kbGVSb3dDb3VudENoYW5n
ZWQoZ2V0KGVsZW1lbnQpLCBlbGVtZW50ID8gJmVsZW1lbnQtPmRvY3VtZW50KCkgOiBudWxscHRy
KTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3Jvd3NwYW5BdHRyKSB7CiAgICAgICAg
IHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhSb3dTcGFuQ2hhbmdlZCk7Ci0gICAgICAgIHJl
Y29tcHV0ZVBhcmVudFRhYmxlRXhwb3N1cmUoZWxlbWVudCk7Ci0gICAgfQotICAgIGVsc2UgaWYg
KGF0dHJOYW1lID09IGFyaWFfc29ydEF0dHIpCisgICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxl
UHJvcGVydGllcyhlbGVtZW50LCB7IFRhYmxlUHJvcGVydHk6OlNsb3RHcmlkLCBUYWJsZVByb3Bl
cnR5OjpFeHBvc2VkIH0pOworICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9zb3J0QXR0
cikKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWE9iamVjdENhY2hlOjpBWFNv
cnREaXJlY3Rpb25DaGFuZ2VkKTsKIH0KIApAQCAtMzY3Miw2ICszNzMyLDEyIEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6cGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKQogICAgICAgICBoYW5kbGVD
aGlsZHJlbkNoYW5nZWQoKmNoaWxkKTsKICAgICBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTGlz
dC5jbGVhcigpOwogCisgICAgQVhMT0dEZWZlcnJlZENvbGxlY3Rpb24oIlJlY29tcHV0ZVRhYmxl
U2xvdEdyaWRMaXN0Il9zLCBtX2RlZmVycmVkUmVjb21wdXRlVGFibGVTbG90R3JpZExpc3QpOwor
ICAgIG1fZGVmZXJyZWRSZWNvbXB1dGVUYWJsZVNsb3RHcmlkTGlzdC5mb3JFYWNoKFt0aGlzXSAo
YXV0byYgYXhUYWJsZSkgeworICAgICAgICBoYW5kbGVSZWNvbXB1dGVTbG90R3JpZChheFRhYmxl
KTsKKyAgICB9KTsKKyAgICBtX2RlZmVycmVkUmVjb21wdXRlVGFibGVTbG90R3JpZExpc3QuY2xl
YXIoKTsKKwogICAgIEFYTE9HRGVmZXJyZWRDb2xsZWN0aW9uKCJUZXh0Q2hhbmdlZExpc3QiX3Ms
IG1fZGVmZXJyZWRUZXh0Q2hhbmdlZExpc3QpOwogICAgIGZvciAoYXV0byogbm9kZSA6IG1fZGVm
ZXJyZWRUZXh0Q2hhbmdlZExpc3QpCiAgICAgICAgIGhhbmRsZVRleHRDaGFuZ2VkKGdldE9yQ3Jl
YXRlKG5vZGUpKTsKQEAgLTM4OTgsNiArMzk2NCwxMCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVw
ZGF0ZUlzb2xhdGVkVHJlZShjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxBY2Nlc3NpYmls
aQogICAgICAgICBjYXNlIEFYU2V0U2l6ZUNoYW5nZWQ6CiAgICAgICAgICAgICB0cmVlLT51cGRh
dGVOb2RlUHJvcGVydGllcygqbm90aWZpY2F0aW9uLmZpcnN0LCB7IEFYUHJvcGVydHlOYW1lOjpT
ZXRTaXplLCBBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNTZXRTaXplIH0pOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQVhTbG90R3JpZENoYW5nZWQ6CisgICAgICAgICAgICBBU1NF
UlQobm90aWZpY2F0aW9uLmZpcnN0LT5pc1RhYmxlKCkpOworICAgICAgICAgICAgdHJlZS0+dXBk
YXRlTm9kZVByb3BlcnR5KCpub3RpZmljYXRpb24uZmlyc3QsIEFYUHJvcGVydHlOYW1lOjpTbG90
R3JpZCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWFRhYmxlSGVhZGVyc0No
YW5nZWQ6CiAgICAgICAgICAgICB0cmVlLT51cGRhdGVOb2RlUHJvcGVydHkoKm5vdGlmaWNhdGlv
bi5maXJzdCwgQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbkhlYWRlcnMpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC00MDAyLDYgKzQwNzIsMTMgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpkZWZlclJlY29t
cHV0ZVRhYmxlSXNFeHBvc2VkKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIG1fcGVyZm9ybUNh
Y2hlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKK3ZvaWQgQVhPYmplY3RDYWNo
ZTo6ZGVmZXJSZWNvbXB1dGVUYWJsZVNsb3RHcmlkKEFjY2Vzc2liaWxpdHlUYWJsZSYgYXhUYWJs
ZSkKK3sKKyAgICBtX2RlZmVycmVkUmVjb21wdXRlVGFibGVTbG90R3JpZExpc3QuYWRkKGF4VGFi
bGUpOworICAgIGlmICghbV9wZXJmb3JtQ2FjaGVVcGRhdGVUaW1lci5pc0FjdGl2ZSgpKQorICAg
ICAgICBtX3BlcmZvcm1DYWNoZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworfQorCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyVGV4dENoYW5nZWRJZk5lZWRlZChOb2RlKiBub2RlKQog
ewogICAgIGlmICghbm9kZUFuZFJlbmRlcmVyQXJlVmFsaWQobm9kZSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IGY4NGE0YTFmYWZiMS4uMjgx
YWM2MzI3M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBUZXh0U3RyZWFtOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZTsKIGNsYXNzIERvY3VtZW50OwogY2xh
c3MgSFRNTEFyZWFFbGVtZW50OwogY2xhc3MgSFRNTFRhYmxlRWxlbWVudDsKQEAgLTM1Niw2ICsz
NTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQsCiAgICAgICAg
IEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCwKICAgICAgICAgQVhTZXRTaXplQ2hhbmdlZCwKKyAgICAg
ICAgQVhTbG90R3JpZENoYW5nZWQsCiAgICAgICAgIEFYVGFibGVIZWFkZXJzQ2hhbmdlZCwKICAg
ICAgICAgQVhVUkxDaGFuZ2VkLAogICAgICAgICBBWFZhbHVlQ2hhbmdlZCwKQEAgLTQzNyw2ICs0
MzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWZlclJlY29tcHV0ZUlzSWdub3JlZElmTmVlZGVk
KEVsZW1lbnQqKTsKICAgICB2b2lkIGRlZmVyUmVjb21wdXRlSXNJZ25vcmVkKEVsZW1lbnQqKTsK
ICAgICB2b2lkIGRlZmVyUmVjb21wdXRlVGFibGVJc0V4cG9zZWQoRWxlbWVudCopOworICAgIHZv
aWQgZGVmZXJSZWNvbXB1dGVUYWJsZVNsb3RHcmlkKEFjY2Vzc2liaWxpdHlUYWJsZSYpOwogICAg
IHZvaWQgZGVmZXJUZXh0Q2hhbmdlZElmTmVlZGVkKE5vZGUqKTsKICAgICB2b2lkIGRlZmVyU2Vs
ZWN0ZWRDaGlsZHJlbkNoYW5nZWRJZk5lZWRlZChFbGVtZW50Jik7CiAgICAgdm9pZCBwZXJmb3Jt
RGVmZXJyZWRDYWNoZVVwZGF0ZSgpOwpAQCAtNTY0LDYgKzU2Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChOb2RlKiBvbGRGb2N1c2VkTm9kZSwg
Tm9kZSogbmV3Rm9jdXNlZE5vZGUsIFVwZGF0ZU1vZGFsID0gVXBkYXRlTW9kYWw6Olllcyk7CiAg
ICAgdm9pZCBoYW5kbGVNZW51TGlzdFZhbHVlQ2hhbmdlZChFbGVtZW50Jik7CiAgICAgdm9pZCBo
YW5kbGVUZXh0Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CisgICAgdm9pZCBoYW5kbGVS
ZWNvbXB1dGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUmKTsKIAogICAgIC8vIGFyaWEtbW9k
YWwgb3IgbW9kYWwgPGRpYWxvZz4gcmVsYXRlZAogICAgIGJvb2wgaXNNb2RhbEVsZW1lbnQoRWxl
bWVudCYpIGNvbnN0OwpAQCAtNjM2LDYgKzY0MCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxB
WElEPiBtX2RlZmVycmVkUmVtb3ZlZE9iamVjdHM7CiAgICAgV2Vha0hhc2hTZXQ8RWxlbWVudCwg
V2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiBtX2RlZmVycmVkUmVjb21wdXRlSXNJZ25v
cmVkTGlzdDsKICAgICBXZWFrSGFzaFNldDxIVE1MVGFibGVFbGVtZW50LCBXZWFrUHRySW1wbFdp
dGhFdmVudFRhcmdldERhdGE+IG1fZGVmZXJyZWRSZWNvbXB1dGVUYWJsZUlzRXhwb3NlZExpc3Q7
CisgICAgV2Vha0hhc2hTZXQ8QWNjZXNzaWJpbGl0eVRhYmxlPiBtX2RlZmVycmVkUmVjb21wdXRl
VGFibGVTbG90R3JpZExpc3Q7CiAgICAgTGlzdEhhc2hTZXQ8Tm9kZSo+IG1fZGVmZXJyZWRUZXh0
Q2hhbmdlZExpc3Q7CiAgICAgV2Vha0hhc2hTZXQ8RWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZl
bnRUYXJnZXREYXRhPiBtX2RlZmVycmVkU2VsZWN0ZWRDaGlsZHJlZENoYW5nZWRMaXN0OwogICAg
IExpc3RIYXNoU2V0PFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gbV9kZWZlcnJlZENoaWxk
cmVuQ2hhbmdlZExpc3Q7CkBAIC02ODAsNiArNjg1LDcgQEAgcHJpdmF0ZToKIH07CiAKIGJvb2wg
bm9kZUhhc1JvbGUoTm9kZSosIFN0cmluZ1ZpZXcgcm9sZSk7Citib29sIG5vZGVIYXNHcmlkUm9s
ZShOb2RlKik7CiAvLyBUaGlzIHdpbGwgbGV0IHlvdSBrbm93IGlmIGFyaWEtaGlkZGVuIHdhcyBl
eHBsaWNpdGx5IHNldCB0byBmYWxzZS4KIGJvb2wgaXNOb2RlQXJpYVZpc2libGUoTm9kZSopOwog
ICAgIApAQCAtNzA1LDYgKzcxMSw3IEBAIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNldEZv
cmNlRGVmZXJyZWRTcGVsbENoZWNraW5nKGJvb2wpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RD
YWNoZTo6ZGlzYWJsZUFjY2Vzc2liaWxpdHkoKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OnNldEVuaGFuY2VkVXNlckludGVyZmFjZUFjY2Vzc2liaWxpdHkoYm9vbCkgeyB9CiBpbmxp
bmUgYm9vbCBub2RlSGFzUm9sZShOb2RlKiwgU3RyaW5nVmlldykgeyByZXR1cm4gZmFsc2U7IH0K
K2lubGluZSBib29sIG5vZGVIYXNHcmlkUm9sZShOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KIGlu
bGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0YXJ0Q2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmli
dXRlc1VudGlsVHJlZU11dGF0ZXMoKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0
b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCkgeyB9CiBpbmxpbmUgYm9vbCBpc05v
ZGVBcmlhVmlzaWJsZShOb2RlKikgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNzMxLDYgKzczOCw3IEBA
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyUmVjb21wdXRlSXNJZ25vcmVkKEVsZW1l
bnQqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyVGV4dENoYW5nZWRJZk5l
ZWRlZChOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkZWZlclNlbGVjdGVk
Q2hpbGRyZW5DaGFuZ2VkSWZOZWVkZWQoRWxlbWVudCYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6ZGVmZXJUZXh0UmVwbGFjZW1lbnROb3RpZmljYXRpb25Gb3JUZXh0Q29udHJvbChI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYsIGNvbnN0IFN0cmluZyYpIHsgfQoraW5saW5lIHZv
aWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJSZWNvbXB1dGVUYWJsZVNsb3RHcmlkKEFjY2Vzc2liaWxp
dHlUYWJsZSYpIHsgfQogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShBVFNQSSkKIGlubGlu
ZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRldGFjaFdyYXBwZXIoQVhDb3JlT2JqZWN0KiwgQWNjZXNz
aWJpbGl0eURldGFjaG1lbnRUeXBlKSB7IH0KICNlbmRpZgpAQCAtNzY0LDYgKzc3Miw3IEBAIGlu
bGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24o
Tm9kZSosIEFYVGV4dEVkaXRUeXBlCiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4
dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKE5vZGUqLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0
Q2FjaGU6OnJlY29tcHV0ZUlzSWdub3JlZChSZW5kZXJPYmplY3QqKSB7IH0KIGlubGluZSB2b2lk
IEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVRleHRDaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7
IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJlY29tcHV0ZVNsb3RHcmlkKEFj
Y2Vzc2liaWxpdHlUYWJsZSYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6b25SZW5k
ZXJlckNyZWF0ZWQoRWxlbWVudCYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6dXBk
YXRlTG9hZGluZ1Byb2dyZXNzKGRvdWJsZSkgeyB9CiBpbmxpbmUgU2ltcGxlUmFuZ2UgQVhPYmpl
Y3RDYWNoZTo6cmFuZ2VGb3JOb2RlQ29udGVudHMoTm9kZSYgbm9kZSkgeyByZXR1cm4gbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKG5vZGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKaW5kZXggZTRlNWY4
NWMyYjdlLi41YTQ4OTkyNjY5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKQEAgLTUxLDkyICs1MSwxMCBAQCBS
ZWY8QWNjZXNzaWJpbGl0eUFSSUFHcmlkPiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmNyZWF0ZShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2li
aWxpdHlBUklBR3JpZChyZW5kZXJlcikpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZDo6YWRkVGFibGVDZWxsQ2hpbGQoQVhDb3JlT2JqZWN0KiBjaGlsZCwgSGFzaFNldDxBY2Nlc3Np
YmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KQotewot
ICAgIGlmICghY2hpbGQgfHwgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpjaGlsZCkgJiYg
IWNoaWxkLT5pc0FSSUFUcmVlR3JpZFJvdygpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgYXV0byYgcm93ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqY2hpbGQpOwot
ICAgIGlmIChhcHBlbmRlZFJvd3MuY29udGFpbnMoJnJvdykpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIC8vIHN0b3JlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zCi0gICAgdW5z
aWduZWQgcm93Q2VsbENvdW50ID0gcm93LmNoaWxkcmVuKCkuc2l6ZSgpOwotICAgIGlmIChyb3dD
ZWxsQ291bnQgPiBjb2x1bW5Db3VudCkKLSAgICAgICAgY29sdW1uQ291bnQgPSByb3dDZWxsQ291
bnQ7Ci0KLSAgICByb3cuc2V0Um93SW5kZXgoKGludCltX3Jvd3Muc2l6ZSgpKTsKLSAgICBtX3Jv
d3MuYXBwZW5kKCZyb3cpOwotICAgIGFkZENoaWxkKCZyb3cpOwotICAgIGFwcGVuZGVkUm93cy5h
ZGQoJnJvdyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgQWNjZXNzaWJpbGl0eUFSSUFH
cmlkOjppc011bHRpU2VsZWN0YWJsZSgpIGNvbnN0CiB7CiAgICAgY29uc3QgQXRvbVN0cmluZyYg
YXJpYU11bHRpU2VsZWN0YWJsZSA9IGdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmFyaWFfbXVsdGlz
ZWxlY3RhYmxlQXR0cik7CiAgICAgcmV0dXJuICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShhcmlhTXVsdGlTZWxlY3RhYmxlLCAiZmFsc2UiX3MpOwogfQogCi12b2lkIEFjY2Vzc2liaWxp
dHlBUklBR3JpZDo6YWRkUm93RGVzY2VuZGFudChBWENvcmVPYmplY3QqIHJvd0NoaWxkLCBIYXNo
U2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1u
Q291bnQpCi17Ci0gICAgaWYgKCFyb3dDaGlsZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KCFyb3dDaGlsZC0+aXNUYWJsZVJvdygpIHx8ICFyb3dDaGlsZC0+bm9kZSgpKSB7Ci0gICAgICAg
IC8vIEFsdGhvdWdoIGEgImdyaWQiIHNob3VsZCBoYXZlIHJvd3MgYXMgaXRzIGRpcmVjdCBkZXNj
ZW5kYW50cywgaWYgdGhpcyBpcyBub3QgYSB0YWJsZSByb3csCi0gICAgICAgIC8vIG9yIHRoaXMg
cm93IGlzIGFub255bW91cywgZGl2ZSBkZWVwZXIgaW50byB0aGUgZGVzY2VuZGFudHMgdG8gdHJ5
IHRvIGZpbmQgYSB2YWxpZCByb3cuCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBy
b3dDaGlsZC0+Y2hpbGRyZW4oKSkKLSAgICAgICAgICAgIGFkZFJvd0Rlc2NlbmRhbnQoY2hpbGQu
Z2V0KCksIGFwcGVuZGVkUm93cywgY29sdW1uQ291bnQpOwotICAgIH0gZWxzZQotICAgICAgICBh
ZGRUYWJsZUNlbGxDaGlsZChyb3dDaGlsZCwgYXBwZW5kZWRSb3dzLCBjb2x1bW5Db3VudCk7Ci19
Ci0KLXZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbigpCi17Ci0gICAgQVNT
RVJUKCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOyAKLSAgICAKLSAgICBpZiAoIWlzRXhwb3NhYmxl
KCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBtX2NoaWxkcmVuSW5pdGlhbGl6ZWQg
PSB0cnVlOwotICAgIGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKLSAgICBhdXRv
KiBheENhY2hlID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpIDogbnVsbHB0
cjsKLQotICAgIC8vIEFkZCB0aGUgY2hpbGRyZW4gcm93cyBidXQgYmUgbWluZGZ1bCBpbiBjYXNl
IHRoZXJlIGFyZSBmb290ZXIgc2VjdGlvbnMgaW4gdGhpcyB0YWJsZS4KLSAgICBIYXNoU2V0PEFj
Y2Vzc2liaWxpdHlPYmplY3QqPiBhcHBlbmRlZFJvd3M7Ci0gICAgdW5zaWduZWQgY29sdW1uQ291
bnQgPSAwOwotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBmb290ZXJTZWN0aW9uczsK
LSAgICBmb3IgKFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjaGlsZCA9IGZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgYm9vbCBm
b290ZXJTZWN0aW9uID0gZmFsc2U7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGNoaWxkUmVu
ZGVyZXIgPSBjaGlsZC0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgaWYgKGlzPFJlbmRlclRh
YmxlU2VjdGlvbj4oKmNoaWxkUmVuZGVyZXIpKSB7Ci0gICAgICAgICAgICAgICAgUmVuZGVyVGFi
bGVTZWN0aW9uJiBjaGlsZFNlY3Rpb24gPSBkb3duY2FzdDxSZW5kZXJUYWJsZVNlY3Rpb24+KCpj
aGlsZFJlbmRlcmVyKTsKLSAgICAgICAgICAgICAgICBpZiAoJmNoaWxkU2VjdGlvbiA9PSBjaGls
ZFNlY3Rpb24udGFibGUoKS0+Zm9vdGVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9vdGVy
U2VjdGlvbnMuYXBwZW5kKGNoaWxkKTsKLSAgICAgICAgICAgICAgICAgICAgZm9vdGVyU2VjdGlv
biA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGlmICghZm9vdGVyU2VjdGlvbikKLSAgICAgICAgICAgIGFkZFJvd0Rlc2NlbmRhbnQo
Y2hpbGQuZ2V0KCksIGFwcGVuZGVkUm93cywgY29sdW1uQ291bnQpOwotICAgIH0KLSAgICAKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIGZvb3RlclNlY3Rpb24gOiBmb290ZXJTZWN0aW9ucykKLSAgICAg
ICAgYWRkUm93RGVzY2VuZGFudChmb290ZXJTZWN0aW9uLmdldCgpLCBhcHBlbmRlZFJvd3MsIGNv
bHVtbkNvdW50KTsKLSAgICAKLSAgICAvLyBtYWtlIHRoZSBjb2x1bW5zIGJhc2VkIG9uIHRoZSBu
dW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZmlyc3QgYm9keQotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjb2x1bW5Db3VudDsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmF4Q2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmls
aXR5Um9sZTo6Q29sdW1uKSk7Ci0gICAgICAgIGNvbHVtbi5zZXRDb2x1bW5JbmRleChpKTsKLSAg
ICAgICAgY29sdW1uLnNldFBhcmVudCh0aGlzKTsKLSAgICAgICAgbV9jb2x1bW5zLmFwcGVuZCgm
Y29sdW1uKTsKLSAgICAgICAgYWRkQ2hpbGQoJmNvbHVtbiwgRGVzY2VuZElmSWdub3JlZDo6Tm8p
OwotICAgIH0KLQotICAgIGFkZENoaWxkKGhlYWRlckNvbnRhaW5lcigpLCBEZXNjZW5kSWZJZ25v
cmVkOjpObyk7Ci19Ci0gICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaAppbmRleCBh
ZWNjOWE4YmJiNGUuLmUyOGJhOTZhM2IwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCkBAIC00MCw5ICs0MCw3IEBAIGNs
YXNzIEFjY2Vzc2liaWxpdHlBUklBR3JpZCBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5VGFi
bGUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eUFSSUFHcmlkPiBjcmVh
dGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eUFSSUFHcmlkKCk7
Ci0gICAgCi0gICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOwotICAgIAorCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlBUklBR3JpZChSZW5kZXJPYmplY3QqKTsKICAg
ICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFHcmlkSW5zdGFuY2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CkBAIC01Miw5ICs1MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc011
bHRpU2VsZWN0YWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY29tcHV0ZUlzVGFibGVF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KICAgICBib29sIGlzQXJpYVRhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIAotICAgIHZvaWQgYWRkUm93RGVzY2VuZGFudChBWENvcmVPYmplY3QqLCBIYXNo
U2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1u
Q291bnQpOwotICAgIGJvb2wgYWRkVGFibGVDZWxsQ2hpbGQoQVhDb3JlT2JqZWN0KiwgSGFzaFNl
dDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNv
dW50KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApp
bmRleCBhZmVhMWYzMmFkNjkuLmRlNDg2OTczYmQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCkBA
IC02MSwxMTMgKzYxLDYgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRDZWxsOjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgfSkpOwogfQogICAgIAotc3RkOjpwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4gQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93SW5kZXhS
YW5nZSgpIGNvbnN0Ci17Ci0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFu
Z2UgeyAwLCAxIH07Ci0gICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmln
bm9yZWQoKTsKLSAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuIHJvd1JhbmdlOwotCi0g
ICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVudCkpIHsKLSAgICAgICAgLy8g
V2UgYWxyZWFkeSBnb3QgYSB0YWJsZSByb3csIHVzZSBpdHMgQVBJLgotICAgICAgICByb3dSYW5n
ZS5maXJzdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVudCkucm93SW5k
ZXgoKTsKLSAgICB9IGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkgJiYg
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZSgpKSB7Ci0g
ICAgICAgIC8vIFdlIHJlYWNoZWQgdGhlIHBhcmVudCB0YWJsZSwgc28gd2UgbmVlZCB0byBpbnNw
ZWN0IGl0cwotICAgICAgICAvLyBjaGlsZHJlbiB0byBkZXRlcm1pbmUgdGhlIHJvdyBpbmRleCBm
b3IgdGhlIGNlbGwgaW4gaXQuCi0gICAgICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50ID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5jb2x1bW5Db3VudCgpOwotICAgICAgICBp
ZiAoIWNvbHVtbkNvdW50KQotICAgICAgICAgICAgcmV0dXJuIHJvd1JhbmdlOwotCi0gICAgICAg
IGNvbnN0IGF1dG8mIHNpYmxpbmdzID0gcGFyZW50LT5jaGlsZHJlbigpOwotICAgICAgICB1bnNp
Z25lZCBjaGlsZHJlblNpemUgPSBzaWJsaW5ncy5zaXplKCk7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgayA9IDA7IGsgPCBjaGlsZHJlblNpemU7ICsraykgewotICAgICAgICAgICAgaWYgKHNpYmxp
bmdzW2tdLmdldCgpID09IHRoaXMpIHsKLSAgICAgICAgICAgICAgICByb3dSYW5nZS5maXJzdCA9
IGsgLyBjb2x1bW5Db3VudDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEFSSUEgMS4xLCBhcmlhLXJvd3NwYW4gYXR0cmli
dXRlIGlzIGludGVuZGVkIGZvciBjZWxscyBhbmQgZ3JpZGNlbGxzIHdoaWNoIGFyZSBub3QgY29u
dGFpbmVkIGluIGEgbmF0aXZlIHRhYmxlLgotICAgIC8vIFNvIHdlIHNob3VsZCBjaGVjayBmb3Ig
dGhhdCBhdHRyaWJ1dGUgaGVyZS4KLSAgICByb3dSYW5nZS5zZWNvbmQgPSBheFJvd1NwYW5XaXRo
Um93SW5kZXgocm93UmFuZ2UuZmlyc3QpOwotCi0gICAgcmV0dXJuIHJvd1JhbmdlOwotfQotCi11
bnNpZ25lZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpheFJvd1NwYW5XaXRoUm93SW5kZXgo
dW5zaWduZWQgcm93SW5kZXgpIGNvbnN0Ci17Ci0gICAgaW50IHJvd1NwYW4gPSBBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpheFJvd1NwYW4oKTsKLSAgICBpZiAocm93U3BhbiA9PSAtMSkgewotICAg
ICAgICBhdXRvIHJhbmdlID0gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZSgp
OwotICAgICAgICByZXR1cm4gc3RkOjptYXgocmFuZ2Uuc2Vjb25kLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oMSkpOwotICAgIH0KLQotICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFwYXJlbnQpCi0gICAgICAgIHJldHVybiAxOwotICAg
IAotICAgIC8vIFNldHRpbmcgdGhlIHZhbHVlIHRvIDAgaW5kaWNhdGVzIHRoYXQgdGhlIGNlbGwg
b3IgZ3JpZGNlbGwgaXMgdG8gc3BhbiBhbGwgdGhlIHJlbWFpbmluZyByb3dzIGluIHRoZSByb3cg
Z3JvdXAuCi0gICAgaWYgKCFyb3dTcGFuKSB7Ci0gICAgICAgIC8vIHJvd1NwYW4gZGVmYXVsdHMg
dG8gMS4KLSAgICAgICAgcm93U3BhbiA9IDE7Ci0gICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnRSb3dHcm91cCA9IHRoaXMtPnBhcmVudFJvd0dyb3VwKCkpIHsKLSAgICAgICAg
ICAgIC8vIElmIHRoZSByb3cgZ3JvdXAgaXMgdGhlIHBhcmVudCB0YWJsZSwgd2UgdXNlIHRvdGFs
IHJvdyBjb3VudCB0byBjYWxjdWxhdGUgdGhlIHNwYW4uCi0gICAgICAgICAgICBpZiAoaXM8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50Um93R3JvdXApKQotICAgICAgICAgICAgICAgIHJvd1Nw
YW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnRSb3dHcm91cCkucm93Q291
bnQoKSAtIHJvd0luZGV4OwotICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBoYXZlIHRvIGdl
dCB0aGUgaW5kZXggZm9yIHRoZSBjdXJyZW50IHJvdyB3aXRoaW4gdGhlIHBhcmVudCByb3cgZ3Jv
dXAuCi0gICAgICAgICAgICBlbHNlIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpwYXJl
bnQpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgYXV0byYgc2libGluZ3MgPSBwYXJlbnRSb3dH
cm91cC0+Y2hpbGRyZW4oKTsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCByb3dDb3VudCA9IHNp
YmxpbmdzLnNpemUoKTsKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwg
cm93Q291bnQ7ICsraykgewotICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZ3Nba10uZ2V0
KCkgPT0gcGFyZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByb3dTcGFuID0gcm93Q291
bnQgLSBrOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gcm93U3BhbjsKLX0KLQotc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4gQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSgpIGNvbnN0Ci17
Ci0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2UgeyAwLCAxIH07
Ci0gICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKLSAg
ICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlOwotCi0gICAgaWYgKCFp
czxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpCi0gICAgICAgICYmICEoaXM8QWNjZXNz
aWJpbGl0eVRhYmxlPigqcGFyZW50KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpw
YXJlbnQpLmlzRXhwb3NhYmxlKCkpKQotICAgICAgICByZXR1cm4gY29sdW1uUmFuZ2U7Ci0KLSAg
ICBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIHNpYmxpbmdzID0gcGFyZW50LT5j
aGlsZHJlbigpOwotICAgIHVuc2lnbmVkIGNoaWxkcmVuU2l6ZSA9IHNpYmxpbmdzLnNpemUoKTsK
LSAgICB1bnNpZ25lZCBpbmRleFdpdGhTcGFuID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGsgPSAw
OyBrIDwgY2hpbGRyZW5TaXplOyArK2spIHsKLSAgICAgICAgYXV0byogY2hpbGQgPSBzaWJsaW5n
c1trXS5nZXQoKTsKLSAgICAgICAgaWYgKGNoaWxkID09IHRoaXMpIHsKLSAgICAgICAgICAgIGNv
bHVtblJhbmdlLmZpcnN0ID0gaW5kZXhXaXRoU3BhbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGluZGV4V2l0aFNwYW4gKz0gaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bD4oKmNoaWxkKSA/IHN0ZDo6bWF4KGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpj
aGlsZCkuYXhDb2x1bW5TcGFuKCksIDEpIDogMTsKLSAgICB9Ci0gICAgCi0gICAgLy8gQVJJQSAx
LjEsIGFyaWEtY29sc3BhbiBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgZm9yIGNlbGxzIGFuZCBncmlk
Y2VsbHMgd2hpY2ggYXJlIG5vdCBjb250YWluZWQgaW4gYSBuYXRpdmUgdGFibGUuCi0gICAgLy8g
U28gd2Ugc2hvdWxkIGNoZWNrIGZvciB0aGF0IGF0dHJpYnV0ZSBoZXJlLgotICAgIGludCBjb2x1
bW5TcGFuID0gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhDb2x1bW5TcGFuKCk7Ci0gICAgaWYg
KGNvbHVtblNwYW4gPT0gLTEpIHsKLSAgICAgICAgYXV0byByYW5nZSA9IEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmNvbHVtbkluZGV4UmFuZ2UoKTsKLSAgICAgICAgY29sdW1uU3BhbiA9IHJhbmdl
LnNlY29uZDsKLSAgICB9Ci0KLSAgICBjb2x1bW5SYW5nZS5zZWNvbmQgPSBzdGQ6Om1heChjb2x1
bW5TcGFuLCAxKTsKLQotICAgIHJldHVybiBjb2x1bW5SYW5nZTsKLX0KLQogQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50Um93R3JvdXAoKSBjb25z
dAogewogICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0
KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxs
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENl
bGwuaAppbmRleCA4YWNhYTliOTU1NjEuLjEwZjI0OTZjYjFlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgK
QEAgLTQxLDE0ICs0MSw4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbChSZW5kZXJPYmplY3QqKTsKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbEluc3RhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
Ly8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRoZSBjZWxsLgot
ICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd0luZGV4UmFuZ2UoKSBjb25zdCBv
dmVycmlkZTsKLSAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNw
YW4gb2YgdGhlIGNlbGwuCi0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1u
SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlKiBw
YXJlbnRUYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBh
cmVudFJvd0dyb3VwKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgYXhSb3dTcGFuV2l0aFJvd0luZGV4
KHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBTdHJpbmcgcmVhZE9ubHlWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlOwogfTsgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDlmNWE1ODE2YTlkZi4uMmE2YmZkN2QyOGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKQEAgLTMwODksNyArMzA4OSw3IEBAIEFYQ29yZU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkQ2VsbHMoKQog
ICAgIH0KIAogICAgIGlmIChhdXRvKiBhY3RpdmVEZXNjZW5kYW50ID0gdGhpcy0+YWN0aXZlRGVz
Y2VuZGFudCgpKSB7Ci0gICAgICAgIGlmIChhY3RpdmVEZXNjZW5kYW50LT5pc1RhYmxlQ2VsbCgp
ICYmICFzZWxlY3RlZENlbGxzLmNvbnRhaW5zKGFjdGl2ZURlc2NlbmRhbnQpKQorICAgICAgICBp
ZiAoYWN0aXZlRGVzY2VuZGFudC0+aXNFeHBvc2VkVGFibGVDZWxsKCkgJiYgIXNlbGVjdGVkQ2Vs
bHMuY29udGFpbnMoYWN0aXZlRGVzY2VuZGFudCkpCiAgICAgICAgICAgICBzZWxlY3RlZENlbGxz
LmFwcGVuZChhY3RpdmVEZXNjZW5kYW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggOGI0YTU4YTQ3MDA3
Li5mNjBmNDFhZjVkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0xNTQsOSArMTU0LDExIEBAIHB1YmxpYzoKICAgICBB
WENvcmVPYmplY3QqIGhlYWRlckNvbnRhaW5lcigpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICBpbnQgYXhDb2x1bW5Db3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0K
ICAgICBpbnQgYXhSb3dDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB2
aXJ0dWFsIFZlY3RvcjxWZWN0b3I8QVhJRD4+IHNsb3RHcmlkKCkgeyByZXR1cm4geyB9OyB9CiAK
ICAgICAvLyBUYWJsZSBjZWxsIHN1cHBvcnQuCiAgICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0V4cG9zZWRUYWJsZUNlbGwo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIC8vIFJldHVybnMgdGhlIHN0
YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0aGUgY2VsbC4KICAgICBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
eyAwLCAxIH07IH0KICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1u
IHNwYW4gb2YgdGhlIGNlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oCmluZGV4IDYxMGY3OTMwODdk
My4uMzQxMGU5YTEzZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaApAQCAtODg3LDYgKzg4Nyw3
IEBAIHB1YmxpYzoKIAogICAgIC8vIFRhYmxlIGNlbGwgc3VwcG9ydC4KICAgICB2aXJ0dWFsIGJv
b2wgaXNUYWJsZUNlbGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRXhwb3NlZFRh
YmxlQ2VsbCgpIGNvbnN0ID0gMDsKICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBh
bmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCiAgICAgdmlydHVhbCBzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29uc3QgPSAwOwogICAgIC8vIFJldHVybnMgdGhl
IHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiB0aGUgY2VsbC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCAz
YTdlZmJlNTkwYzcuLjdhYWMyMjhiNzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogCi0jaW5j
bHVkZSAiQVhMb2dnZXIuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbi5oIgpAQCAtMzcsMjEgKzM2LDE3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmgiCiAjaW5jbHVkZSAiRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3JJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VGFibGVDZWxsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJs
ZS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgotI2luY2x1ZGUgIlJlbmRlclRhYmxl
U2VjdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KIEFjY2Vzc2liaWxpdHlUYWJsZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0KHJlbmRlcmVyKQogICAgICwgbV9oZWFkZXJDb250YWluZXIobnVsbHB0
cikKQEAgLTU5LDYgKzU0LDEzIEBAIEFjY2Vzc2liaWxpdHlUYWJsZTo6QWNjZXNzaWJpbGl0eVRh
YmxlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiB9CiAKK0FjY2Vzc2liaWxpdHlUYWJsZTo6
QWNjZXNzaWJpbGl0eVRhYmxlKE5vZGUmIG5vZGUpCisgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0KG5vZGUpCisgICAgLCBtX2hlYWRlckNvbnRhaW5lcihudWxscHRyKQorICAgICwgbV9p
c0V4cG9zYWJsZSh0cnVlKQoreworfQorCiBBY2Nlc3NpYmlsaXR5VGFibGU6On5BY2Nlc3NpYmls
aXR5VGFibGUoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjppbml0KCkK
QEAgLTcyLDYgKzc0LDExIEBAIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGU+IEFjY2Vzc2liaWxpdHlU
YWJsZTo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzaWJpbGl0eVRhYmxlKHJlbmRlcmVyKSk7CiB9CiAKK1JlZjxBY2Nlc3NpYmls
aXR5VGFibGU+IEFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKE5vZGUmIG5vZGUpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVRhYmxlKG5vZGUpKTsKK30KKwogYm9v
bCBBY2Nlc3NpYmlsaXR5VGFibGU6Omhhc05vblRhYmxlQVJJQVJvbGUoKSBjb25zdAogewogICAg
IHN3aXRjaCAoYXJpYVJvbGVBdHRyaWJ1dGUoKSkgewpAQCAtODUsMTEgKzkyLDYgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5VGFibGU6Omhhc05vblRhYmxlQVJJQVJvbGUoKSBjb25zdAogICAgIH0KIH0K
IAotYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRXhwb3NhYmxlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9pc0V4cG9zYWJsZSAmJiAobV9yZW5kZXJlciB8fCBpczxIVE1MVGFibGVFbGVtZW50
Pihub2RlKCkpKTsKLX0KLQogSFRNTFRhYmxlRWxlbWVudCogQWNjZXNzaWJpbGl0eVRhYmxlOjp0
YWJsZUVsZW1lbnQoKSBjb25zdAogewogICAgIGlmIChhdXRvKiB0YWJsZUVsZW1lbnQgPSBkeW5h
bWljRG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4obm9kZSgpKSkKQEAgLTExMywxMSArMTE1LDgg
QEAgSFRNTFRhYmxlRWxlbWVudCogQWNjZXNzaWJpbGl0eVRhYmxlOjp0YWJsZUVsZW1lbnQoKSBj
b25zdAogCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogewot
ICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYXV0byog
b2JqZWN0Q2FjaGUgPSBheE9iamVjdENhY2hlKCk7Ci0gICAgaWYgKCFvYmplY3RDYWNoZSkKKyAg
ICBXZWFrUHRyIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIERvIG5vdCBjb25zaWRlciBpdCBhIGRhdGEgdGFi
bGUgaWYgaXQgaGFzIGEgbm9uLXRhYmxlIEFSSUEgcm9sZS4KQEAgLTEzMCwxNCArMTI5LDExIEBA
IGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgaWYgKG5v
ZGUoKSAmJiBub2RlKCktPmhhc0VkaXRhYmxlU3R5bGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBpZiAoIWlzPFJlbmRlclRhYmxlPigqbV9yZW5kZXJlcikpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQogICAgIC8vIFRoaXMgZW1wbG95cyBhIGhldXJpc3RpYyB0byBkZXRlcm1pbmUg
aWYgdGhpcyB0YWJsZSBzaG91bGQgYXBwZWFyLgogICAgIC8vIE9ubHkgImRhdGEiIHRhYmxlcyBz
aG91bGQgYmUgZXhwb3NlZCBhcyB0YWJsZXMuCiAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhlcmUg
aXMgbm8gZ29vZCB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBkaWZmZXJlbmNlCiAgICAgLy8gYmV0d2Vl
biBhICJsYXlvdXQiIHRhYmxlIGFuZCBhICJkYXRhIiB0YWJsZS4KLSAgICBpZiAoSFRNTFRhYmxl
RWxlbWVudCogdGFibGVFbGVtZW50ID0gdGhpcy0+dGFibGVFbGVtZW50KCkpIHsKKyAgICBpZiAo
V2Vha1B0ciB0YWJsZUVsZW1lbnQgPSB0aGlzLT50YWJsZUVsZW1lbnQoKSkgewogICAgICAgICAv
LyBJZiB0aGVyZSBpcyBhIGNhcHRpb24gZWxlbWVudCwgc3VtbWFyeSwgVEhFQUQsIG9yIFRGT09U
IHNlY3Rpb24sIGl0J3MgbW9zdCBjZXJ0YWlubHkgYSBkYXRhIHRhYmxlLgogICAgICAgICBpZiAo
IXRhYmxlRWxlbWVudC0+c3VtbWFyeSgpLmlzRW1wdHkoKQogICAgICAgICAgICAgfHwgKHRhYmxl
RWxlbWVudC0+dEhlYWQoKSAmJiB0YWJsZUVsZW1lbnQtPnRIZWFkKCktPnJlbmRlcmVyKCkpCkBA
IC0xNzAsMTYgKzE2NiwyMCBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUo
KSBjb25zdAogICAgIGlmIChheFJvd0NvdW50ID09IC0xIHx8IGF4Um93Q291bnQgPiAwKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlbmRlclRhYmxlJiB0YWJsZSA9IGRvd25jYXN0PFJl
bmRlclRhYmxlPigqbV9yZW5kZXJlcik7CisgICAgV2Vha1B0ciByZW5kZXJUYWJsZSA9IGR5bmFt
aWNEb3duY2FzdDxSZW5kZXJUYWJsZT4obV9yZW5kZXJlci5nZXQoKSk7CisgICAgLy8gVGhlIGZv
bGxvd2luZyBjaGVja3Mgb25seSBhcHBseSB0byBSZW5kZXJUYWJsZXMuIElmIHdlIGRvbid0IGhh
dmUgYSBSZW5kZXJUYWJsZSAoZS5nLiBiZWNhdXNlIGEgQ1NTIGRpc3BsYXkgdmFsdWUgY2F1c2Vk
IGEgZGlmZmVyZW50IHJlbmRlcmVyLCBvciBubyByZW5kZXJlciB0byBiZSBnZW5lcmF0ZWQpLCBh
c3N1bWUgdGhpcyBpcyBhIGRhdGEgdGFibGUuCisgICAgaWYgKCFyZW5kZXJUYWJsZSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKICAgICAvLyBnbyB0aHJvdWdoIHRoZSBjZWxsJ3MgYW5kIGNoZWNr
IGZvciB0ZWxsLXRhbGUgc2lnbnMgb2YgImRhdGEiIHRhYmxlIHN0YXR1cwogICAgIC8vIGNlbGxz
IGhhdmUgYm9yZGVycywgb3IgdXNlIGF0dHJpYnV0ZXMgbGlrZSBoZWFkZXJzLCBhYmJyLCBzY29w
ZSBvciBheGlzCi0gICAgdGFibGUucmVjYWxjU2VjdGlvbnNJZk5lZWRlZCgpOwotICAgIFJlbmRl
clRhYmxlU2VjdGlvbiogZmlyc3RCb2R5ID0gdGFibGUuZmlyc3RCb2R5KCk7CisgICAgcmVuZGVy
VGFibGUtPnJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKKyAgICBXZWFrUHRyIGZpcnN0Qm9keSA9
IHJlbmRlclRhYmxlLT5maXJzdEJvZHkoKTsKICAgICBpZiAoIWZpcnN0Qm9keSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgLy8gSWYgdGhlIHRib2R5IGhhcyBhbnkgbm9uLWdyb3VwIHJv
bGUsIHRoZW4gZG9uJ3QgbWFrZSB0aGlzIGEgZGF0YSB0YWJsZS4gVGhlIGF1dGhvciBwcm9iYWJs
eSB3YW50cyB0byB1c2UgdGhlIHJvbGUgaW5zaWRlIHRoZSA8dGJvZHk+LgotICAgIGlmIChhdXRv
KiB0b3BTZWN0aW9uID0gb2JqZWN0Q2FjaGUtPmdldE9yQ3JlYXRlKHRhYmxlLnRvcFNlY3Rpb24o
KSkpIHsKKyAgICBpZiAoYXV0byogdG9wU2VjdGlvbiA9IGNhY2hlLT5nZXRPckNyZWF0ZShyZW5k
ZXJUYWJsZS0+dG9wU2VjdGlvbigpKSkgewogICAgICAgICBhdXRvIHJvbGUgPSB0b3BTZWN0aW9u
LT5yb2xlVmFsdWUoKTsKICAgICAgICAgaWYgKCF0b3BTZWN0aW9uLT5pc0dyb3VwKCkgJiYgcm9s
ZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biAmJiByb2xlICE9IEFjY2Vzc2liaWxpdHlS
b2xlOjpJZ25vcmVkKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkzLDcgKzE5Myw3
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAogICAgIC8vIFN0b3JlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9m
IHRoZSB0YWJsZSB0byBjaGVjayBhZ2FpbnN0IGNlbGwncyBiYWNrZ3JvdW5kIGNvbG9ycy4KLSAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgdGFibGVTdHlsZSA9IHRhYmxlLnN0eWxlKCk7CisgICAgY29u
c3QgUmVuZGVyU3R5bGUmIHRhYmxlU3R5bGUgPSByZW5kZXJUYWJsZS0+c3R5bGUoKTsKICAgICBD
b2xvciB0YWJsZUJHQ29sb3IgPSB0YWJsZVN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgCiAgICAgLy8gY2hlY2sgZW5vdWdoIG9mIHRo
ZSBjZWxscyB0byBmaW5kIGlmIHRoZSB0YWJsZSBtYXRjaGVzIG91ciBjcml0ZXJpYQpAQCAtMzAw
LDcgKzMwMCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0
CiAgICAgICAgICAgICAvLyBJZiB0aGUgY2VsbCBoYXMgYSBkaWZmZXJlbnQgY29sb3IgZnJvbSB0
aGUgdGFibGUgYW5kIHRoZXJlIGlzIGNlbGwgc3BhY2luZywKICAgICAgICAgICAgIC8vIHRoZW4g
aXQgaXMgcHJvYmFibHkgYSBkYXRhIHRhYmxlIGNlbGwgKHNwYWNpbmcgYW5kIGNvbG9ycyB0YWtl
IHRoZSBwbGFjZSBvZiBib3JkZXJzKS4KICAgICAgICAgICAgIENvbG9yIGNlbGxDb2xvciA9IHJl
bmRlclN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cik7Ci0gICAgICAgICAgICBpZiAodGFibGUuaEJvcmRlclNwYWNpbmcoKSA+IDAgJiYgdGFibGUu
dkJvcmRlclNwYWNpbmcoKSA+IDAKKyAgICAgICAgICAgIGlmIChyZW5kZXJUYWJsZS0+aEJvcmRl
clNwYWNpbmcoKSA+IDAgJiYgcmVuZGVyVGFibGUtPnZCb3JkZXJTcGFjaW5nKCkgPiAwCiAgICAg
ICAgICAgICAgICAgJiYgdGFibGVCR0NvbG9yICE9IGNlbGxDb2xvciAmJiBjZWxsQ29sb3IuYWxw
aGFCeXRlKCkgIT0gMSkgLy8gRklYTUUgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTQ1MzcpOiBUaGlzIGNvbXBhcmlzb24gdG8gMSBpcyBsaWtlbHkgaW5jb3JyZWN0
LiBJdCBsaWtlbHkgc2hvdWxkIGJlIGNoZWNraW5nICFjZWxsQ29sb3IuaXNPcGFxdWUoKS4KICAg
ICAgICAgICAgICAgICArK2JhY2tncm91bmREaWZmZXJlbmNlQ2VsbENvdW50OwogICAgICAgICAg
ICAgCkBAIC0zNjEsMTUgKzM2MSwxMCBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRh
VGFibGUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorLy8gVGhlIGZvbGxvd2luZyBp
cyBhIGhldXJpc3RpYyB1c2VkIHRvIGRldGVybWluZSBpZiBhIDx0YWJsZT4gc2hvdWxkIGJlIGV4
cG9zZWQgYXMgYW4gQVhUYWJsZS4KKy8vIFRoZSBnb2FsIGlzIHRvIG9ubHkgc2hvdyAiZGF0YSIg
dGFibGVzLgogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVJc1RhYmxlRXhwb3NhYmxl
VGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdAogewotICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMg
YSBoZXVyaXN0aWMgdXNlZCB0byBkZXRlcm1pbmUgaWYgYQotICAgIC8vIDx0YWJsZT4gc2hvdWxk
IGJlIGV4cG9zZWQgYXMgYW4gQVhUYWJsZS4gVGhlIGdvYWwKLSAgICAvLyBpcyB0byBvbmx5IHNo
b3cgImRhdGEiIHRhYmxlcy4KLQotICAgIGlmICghbV9yZW5kZXJlciAmJiAhaXM8SFRNTFRhYmxl
RWxlbWVudD4obm9kZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgLy8gSWYgaXQg
aGFzIGEgbm9uLXRhYmxlIEFSSUEgcm9sZSwgaXQgc2hvdWxkbid0IGJlIGV4cG9zZWQgYXMgYSB0
YWJsZS4KICAgICBpZiAoaGFzTm9uVGFibGVBUklBUm9sZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0zNzcsOSArMzcyLDEyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRl
SXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3QKICAgICByZXR1cm4g
aXNEYXRhVGFibGUoKTsKIH0KIAotCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6cmVjb21wdXRl
SXNFeHBvc2FibGUoKQogeworICAgIC8vIE1ha2Ugc3VyZSBjaGlsZHJlbiBhcmUgdXAtdG8tZGF0
ZSwgYmVjYXVzZSBpZiB3ZSBkbyBlbmQgdXAgY2hhbmdpbmcgaXMtZXhwb3NlZCBzdGF0ZSwgd2Ug
d2FudCB0byBtYWtlCisgICAgLy8gc3VyZSB1cGRhdGVDaGlsZHJlblJvbGVzIGl0ZXJhdGVzIG92
ZXIgdGhvc2UgY2hpbGRyZW4gYmVmb3JlIHRoZXkgY2hhbmdlLgorICAgIHVwZGF0ZUNoaWxkcmVu
SWZOZWNlc3NhcnkoKTsKKwogICAgIGJvb2wgcHJldmlvdXNseUV4cG9zYWJsZSA9IG1faXNFeHBv
c2FibGU7CiAgICAgbV9pc0V4cG9zYWJsZSA9IGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3Vn
aEFjY2Vzc2liaWxpdHkoKTsKICAgICBpZiAocHJldmlvdXNseUV4cG9zYWJsZSAhPSBtX2lzRXhw
b3NhYmxlKSB7CkBAIC0zOTQsNiArMzkyLDI0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpy
ZWNvbXB1dGVJc0V4cG9zYWJsZSgpCiAgICAgfQogfQogCitWZWN0b3I8VmVjdG9yPEFYSUQ+PiBB
Y2Nlc3NpYmlsaXR5VGFibGU6OnNsb3RHcmlkKCkKK3sKKyAgICB1cGRhdGVDaGlsZHJlbklmTmVj
ZXNzYXJ5KCk7CisgICAgcmV0dXJuIG1fc2xvdEdyaWQ7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0
eVRhYmxlOjpzZXRTbG90R3JpZERpcnR5KCkKK3sKKyAgICAvLyBCZWNhdXNlIHRoZSBzbG90LWdy
aWQgaXMgKG5lY2Vzc2FyaWx5KSBjb21wdXRlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGNoaWxkcmVu
LCBtYXJrCisgICAgLy8gdGhlIGNoaWxkcmVuIGFzIGRpcnR5IGJ5IGNsZWFyaW5nIHRoZW0uCisg
ICAgLy8KKyAgICAvLyBJdCdzIG5lY2Vzc2FyeSB0byBjb21wdXRlIHRoZSBzbG90LWdyaWQgdG9n
ZXRoZXIgd2l0aCBjaGlsZHJlbiBiZWNhdXNlIHRoZXkgYXJlIGJvdGgKKyAgICAvLyBpbmZsdWVu
Y2VkIGJ5IHRoZSBzYW1lIGZhY3RvcnMuIEZvciBleGFtcGxlLCBpZiBgc2V0U2xvdEdyaWREaXJ0
eWAgaXMgY2FsbGVkIGJlY2F1c2UKKyAgICAvLyBhIGNoaWxkIGluY3JlYXNlZCBpbiBjb2x1bW4g
c3BhbiwgdGhhdCBtYXkgYWxzbyByZXN1bHQgaW4gbW9yZSBjb2x1bW4gY2hpbGRyZW4gYmVpbmcK
KyAgICAvLyBhZGRlZCBpZiB0aGF0IGNvbHVtbiBzcGFuIGNoYW5nZSBpbmNyZWFzZWQgdGhlICJ3
aWR0aCIgb2YgdGhlIHRhYmxlLgorICAgIGNsZWFyQ2hpbGRyZW4oKTsKK30KKwogdm9pZCBBY2Nl
c3NpYmlsaXR5VGFibGU6OnVwZGF0ZUNoaWxkcmVuUm9sZXMoKQogewogICAgIGZvciAoY29uc3Qg
YXV0byYgcm93IDogbV9yb3dzKSB7CkBAIC00MDgsNiArNDI0LDcgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5VGFibGU6OmNsZWFyQ2hpbGRyZW4oKQogICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmNsZWFyQ2hpbGRyZW4oKTsKICAgICBtX3Jvd3MuY2xlYXIoKTsKICAgICBtX2NvbHVtbnMuY2xl
YXIoKTsKKyAgICBtX3Nsb3RHcmlkLmNsZWFyKCk7CiAKICAgICBpZiAobV9oZWFkZXJDb250YWlu
ZXIpIHsKICAgICAgICAgbV9oZWFkZXJDb250YWluZXItPmRldGFjaEZyb21QYXJlbnQoKTsKQEAg
LTQyMSw0MiArNDM4LDIxNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4o
KQogICAgICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIEFTU0VSVCghbV9jaGlsZHJlbkluaXRpYWxp
emVkKTsgCi0gICAgCisKKyAgICBBU1NFUlQoIW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7CiAgICAg
bV9jaGlsZHJlbkluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICBpZiAoIWlzPFJlbmRlclRhYmxlPihy
ZW5kZXJlcigpKSkKKyAgICBXZWFrUHRyIGNhY2hlID0gYXhPYmplY3RDYWNoZSgpOworICAgIGlm
ICghY2FjaGUpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBSZW5kZXJUYWJsZSYgdGFibGUg
PSBkb3duY2FzdDxSZW5kZXJUYWJsZT4oKm1fcmVuZGVyZXIpOwotICAgIC8vIEdvIHRocm91Z2gg
YWxsIHRoZSBhdmFpbGFibGUgc2VjdGlvbnMgdG8gcHVsbCBvdXQgdGhlIHJvd3MgYW5kIGFkZCB0
aGVtIGFzIGNoaWxkcmVuLgotICAgIHRhYmxlLnJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKLSAg
ICAKLSAgICBpZiAoSFRNTFRhYmxlRWxlbWVudCogdGFibGVFbGVtZW50ID0gdGhpcy0+dGFibGVF
bGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gY2FwdGlvbiA9IHRhYmxlRWxlbWVudC0+Y2Fw
dGlvbigpKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheENhcHRpb24gPSBh
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGNhcHRpb24uZ2V0KCkpOwotICAgICAgICAgICAg
YWRkQ2hpbGQoYXhDYXB0aW9uLCBEZXNjZW5kSWZJZ25vcmVkOjpObyk7CisKKyAgICAvLyBUaGlz
IGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlICJmb3JtaW5nIGEgdGFibGUiIGFsZ29yaXRobSBmb3Ig
ZGV0ZXJtaW5pbmcKKyAgICAvLyB0aGUgY29ycmVjdCBjZWxsIHBvc2l0aW9ucyBhbmQgc3BhbnMg
KGFuZCBzdG9yaW5nIHRob3NlIGluIG1fc2xvdEdyaWQgZm9yIGxhdGVyIHVzZSkuCisgICAgLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjZm9ybWlu
Zy1hLXRhYmxlCisKKyAgICAvLyBTdGVwIDEuCisgICAgdW5zaWduZWQgeFdpZHRoID0gMDsKKyAg
ICAvLyBTdGVwIDIuCisgICAgdW5zaWduZWQgeUhlaWdodCA9IDA7CisgICAgLy8gU3RlcCAzOiBM
ZXQgcGVuZGluZyB0Zm9vdCBlbGVtZW50cyBiZSBhIGxpc3Qgb2YgdGZvb3QgZWxlbWVudHMsIGlu
aXRpYWxseSBlbXB0eS4KKyAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBwZW5kaW5nVGZvb3RFbGVt
ZW50czsKKyAgICAvLyBTdGVwIDEwLgorICAgIHVuc2lnbmVkIHlDdXJyZW50ID0gMDsKKyAgICBS
ZWZQdHI8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+IGNhcHRpb25FbGVtZW50OworCisgICAgSGFz
aFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4gYXBwZW5kZWRSb3dzOworICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RhYmxlcy5odG1sI2FsZ29yaXRobS1mb3It
cHJvY2Vzc2luZy1yb3dzCisgICAgYXV0byBwcm9jZXNzUm93ID0gWyYsIHRoaXNdIChBY2Nlc3Np
YmlsaXR5VGFibGVSb3cqIHJvdykgeworICAgICAgICBpZiAoIXJvdyB8fCBhcHBlbmRlZFJvd3Mu
Y29udGFpbnMocm93KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXBwZW5kZWRSb3dz
LmFkZChyb3cpOworICAgICAgICAvLyBTdGVwIDE6IElmIHloZWlnaHQgaXMgZXF1YWwgdG8geWN1
cnJlbnQsIHRoZW4gaW5jcmVhc2UgeWhlaWdodCBieSAxLiAoeWN1cnJlbnQgbXVzdCBuZXZlciBi
ZSBncmVhdGVyIHRoYW4geWhlaWdodC4pCisgICAgICAgIGlmICh5SGVpZ2h0IDw9IHlDdXJyZW50
KQorICAgICAgICAgICAgeUhlaWdodCA9IHlDdXJyZW50ICsgMTsKKworICAgICAgICAvLyBTdGVw
IDIuCisgICAgICAgIHVuc2lnbmVkIHhDdXJyZW50ID0gMDsKKyAgICAgICAgLy8gU3RlcCAzOiBS
dW4gdGhlIGFsZ29yaXRobSBmb3IgZ3Jvd2luZyBkb3dud2FyZC1ncm93aW5nIGNlbGxzIChub3Qg
aW1wbGVtZW50ZWQpLgorCisgICAgICAgIC8vIFN0ZXAgNDogSWYgdGhlIHRyIGVsZW1lbnQgYmVp
bmcgcHJvY2Vzc2VkIGhhcyBubyB0ZCBvciB0aCBlbGVtZW50IGNoaWxkcmVuLCB0aGVuIGluY3Jl
YXNlIHljdXJyZW50IGJ5IDEsIGFib3J0IHRoaXMgc2V0IG9mIHN0ZXBzLCBhbmQgcmV0dXJuIHRv
IHRoZSBhbGdvcml0aG0gYWJvdmUuCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBy
b3ctPmNoaWxkcmVuKCkpIHsKKyAgICAgICAgICAgIGF1dG8qIGN1cnJlbnRDZWxsID0gZHluYW1p
Y0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KGNoaWxkLmdldCgpKTsKKyAgICAgICAg
ICAgIGlmICghY3VycmVudENlbGwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgIC8vIFN0ZXAgNjogV2hpbGUgdGhlIHNsb3Qgd2l0aCBjb29yZGluYXRlICh4Y3VycmVu
dCwgeWN1cnJlbnQpIGFscmVhZHkgaGFzIGEgY2VsbCBhc3NpZ25lZCB0byBpdCwgaW5jcmVhc2Ug
eGN1cnJlbnQgYnkgMS4KKyAgICAgICAgICAgIGVuc3VyZVJvd0FuZENvbHVtbih5Q3VycmVudCwg
eEN1cnJlbnQpOworICAgICAgICAgICAgd2hpbGUgKG1fc2xvdEdyaWRbeUN1cnJlbnRdW3hDdXJy
ZW50XS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICB4Q3VycmVudCArPSAxOworICAgICAg
ICAgICAgICAgIGVuc3VyZVJvd0FuZENvbHVtbih5Q3VycmVudCwgeEN1cnJlbnQpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLy8gU3RlcCA3OiBJZiB4Y3VycmVudCBpcyBlcXVhbCB0byB4
d2lkdGgsIGluY3JlYXNlIHh3aWR0aCBieSAxLiAoeGN1cnJlbnQgaXMgbmV2ZXIgZ3JlYXRlciB0
aGFuIHh3aWR0aC4pCisgICAgICAgICAgICBpZiAoeEN1cnJlbnQgPj0geFdpZHRoKQorICAgICAg
ICAgICAgICAgIHhXaWR0aCA9IHhDdXJyZW50ICsgMTsKKyAgICAgICAgICAgIC8vIFN0ZXAgODog
SWYgdGhlIGN1cnJlbnQgY2VsbCBoYXMgYSBjb2xzcGFuIGF0dHJpYnV0ZSwgdGhlbiBwYXJzZSB0
aGF0IGF0dHJpYnV0ZSdzIHZhbHVlLCBhbmQgbGV0IGNvbHNwYW4gYmUgdGhlIHJlc3VsdC4KKyAg
ICAgICAgICAgIHVuc2lnbmVkIGNvbFNwYW4gPSBjdXJyZW50Q2VsbC0+Y29sU3BhbigpOworICAg
ICAgICAgICAgLy8gU3RlcCA5OiBJZiB0aGUgY3VycmVudCBjZWxsIGhhcyBhIHJvd3NwYW4gYXR0
cmlidXRlLCB0aGVuIHBhcnNlIHRoYXQgYXR0cmlidXRlJ3MgdmFsdWUsIGFuZCBsZXQgcm93c3Bh
biBiZSB0aGUgcmVzdWx0LgorICAgICAgICAgICAgdW5zaWduZWQgcm93U3BhbiA9IGN1cnJlbnRD
ZWxsLT5yb3dTcGFuKCk7CisKKyAgICAgICAgICAgIC8vIFN0ZXAgMTA6IElmIHJvd3NwYW4gaXMg
emVybyBhbmQgdGhlIHRhYmxlIGVsZW1lbnQncyBub2RlIGRvY3VtZW50IGlzIG5vdCBzZXQgdG8g
cXVpcmtzIG1vZGUsIHRoZW4gbGV0CisgICAgICAgICAgICAvLyBjZWxsIGdyb3dzIGRvd253YXJk
IGJlIHRydWUsIGFuZCBzZXQgcm93c3BhbiB0byAxLiBPdGhlcndpc2UsIGxldCBjZWxsIGdyb3dz
IGRvd253YXJkIGJlIGZhbHNlLgorICAgICAgICAgICAgLy8gTk9URTogV2UgaW50ZW50aW9uYWxs
eSBkb24ndCBpbXBsZW1lbnQgdGhpcyBzdGVwIGJlY2F1c2UgdGhlIHJlbmRlcmluZyBjb2RlIGRv
ZXNuJ3QsIHNvIGltcGxlbWVudGluZyBpdAorICAgICAgICAgICAgLy8gd291bGQgY2F1c2UgQVgg
dG8gbm90IG1hdGNoIHRoZSB2aXN1YWwgc3RhdGUgb2YgdGhlIHBhZ2UuCisKKyAgICAgICAgICAg
IC8vIFN0ZXAgMTE6IElmIHh3aWR0aCA8IHhjdXJyZW50K2NvbHNwYW4sIHRoZW4gbGV0IHh3aWR0
aCBiZSB4Y3VycmVudCtjb2xzcGFuLgorICAgICAgICAgICAgaWYgKHhXaWR0aCA8IHhDdXJyZW50
ICsgY29sU3BhbikKKyAgICAgICAgICAgICAgICB4V2lkdGggPSB4Q3VycmVudCArIGNvbFNwYW47
CisKKyAgICAgICAgICAgIC8vIFN0ZXAgMTI6IElmIHloZWlnaHQgPCB5Y3VycmVudCtyb3dzcGFu
LCB0aGVuIGxldCB5aGVpZ2h0IGJlIHljdXJyZW50K3Jvd3NwYW4uCisgICAgICAgICAgICBpZiAo
eUhlaWdodCA8IHlDdXJyZW50ICsgcm93U3BhbikKKyAgICAgICAgICAgICAgICB5SGVpZ2h0ID0g
eUN1cnJlbnQgKyByb3dTcGFuOworCisgICAgICAgICAgICAvLyBTdGVwIDEzOiBMZXQgdGhlIHNs
b3RzIHdpdGggY29vcmRpbmF0ZXMgKHgsIHkpIHN1Y2ggdGhhdCB4Y3VycmVudCDiiaQgeCA8IHhj
dXJyZW50K2NvbHNwYW4gYW5kCisgICAgICAgICAgICAvLyB5Y3VycmVudCDiiaQgeSA8IHljdXJy
ZW50K3Jvd3NwYW4gYmUgY292ZXJlZCBieSBhIG5ldyBjZWxsIGMsIGFuY2hvcmVkIGF0ICh4Y3Vy
cmVudCwgeWN1cnJlbnQpLAorICAgICAgICAgICAgLy8gd2hpY2ggaGFzIHdpZHRoIGNvbHNwYW4g
YW5kIGhlaWdodCByb3dzcGFuLCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjdXJyZW50IGNlbGwgZWxl
bWVudC4KKyAgICAgICAgICAgIGN1cnJlbnRDZWxsLT5zZXRDb2x1bW5JbmRleCh4Q3VycmVudCk7
CisgICAgICAgICAgICBjdXJyZW50Q2VsbC0+c2V0Um93SW5kZXgoeUN1cnJlbnQpOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCB5ID0geUN1cnJlbnQ7IHkgPCB5Q3VycmVudCArIHJvd1NwYW47
IHkrKykgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgeCA9IHhDdXJyZW50OyB4IDwg
eEN1cnJlbnQgKyBjb2xTcGFuOyB4KyspIHsKKyAgICAgICAgICAgICAgICAgICAgZW5zdXJlUm93
QW5kQ29sdW1uKHksIHgpOworICAgICAgICAgICAgICAgICAgICBtX3Nsb3RHcmlkW3ldW3hdID0g
Y3VycmVudENlbGwtPm9iamVjdElEKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBTdGVwIDE0OiBJZiBjZWxsIGdyb3dzIGRvd253YXJkIGlzIHRy
dWUsIHRoZW4gYWRkIHRoZSB0dXBsZSB7YywgeGN1cnJlbnQsIGNvbHNwYW59IHRvIHRoZQorICAg
ICAgICAgICAgLy8gbGlzdCBvZiBkb3dud2FyZC1ncm93aW5nIGNlbGxzLiBOb3QgaW1wbGVtZW50
ZWQuCisKKyAgICAgICAgICAgIC8vIFN0ZXAgMTUuCisgICAgICAgICAgICB4Q3VycmVudCArPSBj
b2xTcGFuOworCisgICAgICAgICAgICAvLyBTdGVwIDE3IGFuZCAxODogTGV0IGN1cnJlbnQgY2Vs
bCBiZSB0aGUgbmV4dCB0ZCBvciB0aCBlbGVtZW50IGNoaWxkIGluIHRoZSB0ciBlbGVtZW50IGJl
aW5nIHByb2Nlc3NlZC4KICAgICAgICAgfQotICAgIH0KIAotICAgIHVuc2lnbmVkIG1heENvbHVt
bkNvdW50ID0gMDsKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGZvb3RlciA9IHRhYmxlLmZvb3Rl
cigpOwotICAgIAotICAgIGZvciAoUmVuZGVyVGFibGVTZWN0aW9uKiB0YWJsZVNlY3Rpb24gPSB0
YWJsZS50b3BTZWN0aW9uKCk7IHRhYmxlU2VjdGlvbjsgdGFibGVTZWN0aW9uID0gdGFibGUuc2Vj
dGlvbkJlbG93KHRhYmxlU2VjdGlvbiwgU2tpcEVtcHR5U2VjdGlvbnMpKSB7Ci0gICAgICAgIGlm
ICh0YWJsZVNlY3Rpb24gPT0gZm9vdGVyKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGFkZENoaWxkcmVuRnJvbVNlY3Rpb24odGFibGVTZWN0aW9uLCBtYXhDb2x1bW5Db3VudCk7Cisg
ICAgICAgIC8vIE5vdCBzcGVjaWZpZWQ6IHVwZGF0ZSBzb21lIGludGVybmFsIGRhdGEgc3RydWN0
dXJlcy4KKyAgICAgICAgbV9yb3dzLmFwcGVuZChyb3cpOworICAgICAgICByb3ctPnNldFJvd0lu
ZGV4KHlDdXJyZW50KTsKKyAgICAgICAgYWRkQ2hpbGQocm93KTsKKworICAgICAgICAvLyBTdGVw
IDE2OiBJZiBjdXJyZW50IGNlbGwgaXMgdGhlIGxhc3QgdGQgb3IgdGggZWxlbWVudCBjaGlsZCBp
biB0aGUgdHIgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQsIHRoZW4gaW5jcmVhc2UgeWN1cnJlbnQg
YnkgMSwgYWJvcnQgdGhpcyBzZXQgb2Ygc3RlcHMsIGFuZCByZXR1cm4gdG8gdGhlIGFsZ29yaXRo
bSBhYm92ZS4KKyAgICAgICAgeUN1cnJlbnQgKz0gMTsKKyAgICB9OworICAgIGF1dG8gbmVlZHNU
b0Rlc2NlbmQgPSBbJmFwcGVuZGVkUm93c10gKEFYQ29yZU9iamVjdCYgYXhPYmplY3QpIHsKKyAg
ICAgICAgcmV0dXJuICghYXhPYmplY3QuaXNUYWJsZVJvdygpIHx8ICFheE9iamVjdC5ub2RlKCkp
CisgICAgICAgICAgICAmJiAhYXBwZW5kZWRSb3dzLmNvbnRhaW5zKGR5bmFtaWNEb3duY2FzdDxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PihheE9iamVjdCkpOworICAgIH07CisgICAgc3RkOjpmdW5jdGlv
bjx2b2lkKEFYQ29yZU9iamVjdCopPiBwcm9jZXNzUm93RGVzY2VuZGluZ0lmTmVlZGVkID0gWyZd
IChBWENvcmVPYmplY3QqIGF4T2JqZWN0KSB7CisgICAgICAgIGlmICghYXhPYmplY3QpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIC8vIERlc2NlbmQgcGFzdCBhbm9ueW1vdXMgcmVuZGVy
ZXJzIGFuZCBub24tcm93cy4KKyAgICAgICAgaWYgKG5lZWRzVG9EZXNjZW5kKCpheE9iamVjdCkp
IHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBheE9iamVjdC0+Y2hpbGRy
ZW4oKSkKKyAgICAgICAgICAgICAgICBwcm9jZXNzUm93RGVzY2VuZGluZ0lmTmVlZGVkKGNoaWxk
LmdldCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwcm9jZXNzUm93KGR5bmFtaWNE
b3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KGF4T2JqZWN0KSk7CisgICAgfTsKKyAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS90YWJsZXMuaHRtbCNhbGdv
cml0aG0tZm9yLWVuZGluZy1hLXJvdy1ncm91cAorICAgIGF1dG8gZW5kUm93R3JvdXAgPSBbJl0g
KCkgeworICAgICAgICBpZiAoeUN1cnJlbnQgPCB5SGVpZ2h0KQorICAgICAgICAgICAgeUN1cnJl
bnQgPSB5SGVpZ2h0OworICAgIH07CisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjYWxnb3JpdGhtLWZvci1wcm9jZXNzaW5nLXJvdy1ncm91
cHMKKyAgICBhdXRvIHByb2Nlc3NSb3dHcm91cCA9IFsmXSAoRWxlbWVudCYgc2VjdGlvbkVsZW1l
bnQpIHsKKyAgICAgICAgLy8gU3RlcCAxOiBMZXQgeXN0YXJ0IGhhdmUgdGhlIHZhbHVlIG9mIHlo
ZWlnaHQuIE5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgb25seSB1c2VmdWwgZm9yIHN0ZXAg
Mywgd2hpY2ggd2Ugc2tpcC4KKworICAgICAgICAvLyBTdGVwIDI6IEZvciBlYWNoIHRyIGVsZW1l
bnQgdGhhdCBpcyBhIGNoaWxkIG9mIHRoZSBlbGVtZW50IGJlaW5nIHByb2Nlc3NlZCwKKyAgICAg
ICAgLy8gaW4gdHJlZSBvcmRlciwgcnVuIHRoZSBhbGdvcml0aG0gZm9yIHByb2Nlc3Npbmcgcm93
cy4KKyAgICAgICAgaWYgKFJlZlB0ciB0YWJsZVNlY3Rpb24gPSBkeW5hbWljRG93bmNhc3Q8SFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQ+KHNlY3Rpb25FbGVtZW50KSkgeworICAgICAgICAgICAgZm9y
IChhdXRvJiByb3cgOiBjaGlsZHJlbk9mVHlwZTxIVE1MVGFibGVSb3dFbGVtZW50PigqdGFibGVT
ZWN0aW9uKSkgeworICAgICAgICAgICAgICAgIFJlZlB0ciB0YWJsZVJvdyA9IGR5bmFtaWNEb3du
Y2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KGNhY2hlLT5nZXRPckNyZWF0ZSgmcm93KSk7Cisg
ICAgICAgICAgICAgICAgcHJvY2Vzc1Jvdyh0YWJsZVJvdy5nZXQoKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSBpZiAoUmVmUHRyIHNlY3Rpb25BeE9iamVjdCA9IGNhY2hlLT5nZXRP
ckNyZWF0ZSgmc2VjdGlvbkVsZW1lbnQpKSB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKG5vZGVIYXNSb2xlKCZzZWN0aW9uRWxlbWVudCwgInJvd2dyb3VwIl9zKSwgInByb2Nlc3NS
b3dHcm91cCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCBuYXRpdmUgdGFibGUgc2VjdGlvbiBl
bGVtZW50cywgb3Igcm9sZT1yb3dncm91cCBlbGVtZW50cyIpOworICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBjaGlsZCA6IHNlY3Rpb25BeE9iamVjdC0+Y2hpbGRyZW4oKSkKKyAgICAgICAg
ICAgICAgICBwcm9jZXNzUm93RGVzY2VuZGluZ0lmTmVlZGVkKGNoaWxkLmdldCgpKTsKKyAgICAg
ICAgfQorICAgICAgICAvLyBTdGVwIDM6IElmIHloZWlnaHQgPiB5c3RhcnQsIHRoZW4gbGV0IGFs
bCB0aGUgbGFzdCByb3dzIGluIHRoZSB0YWJsZSBmcm9tIHk9eXN0YXJ0IHRvIHk9eWhlaWdodC0x
CisgICAgICAgIC8vIGZvcm0gYSBuZXcgcm93IGdyb3VwLCBhbmNob3JlZCBhdCB0aGUgc2xvdCB3
aXRoIGNvb3JkaW5hdGUgKDAsIHlzdGFydCksIHdpdGggaGVpZ2h0IHloZWlnaHQteXN0YXJ0LAor
ICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbGVtZW50IGJlaW5nIHByb2Nlc3NlZC4g
Tm90IGltcGxlbWVudGVkLgorCisgICAgICAgIC8vIFN0ZXAgNDogUnVuIHRoZSBhbGdvcml0aG0g
Zm9yIGVuZGluZyBhIHJvdyBncm91cC4KKyAgICAgICAgZW5kUm93R3JvdXAoKTsKKyAgICB9Owor
CisgICAgLy8gU3RlcCA0OiBMZXQgdGhlIHRhYmxlIGJlIHRoZSB0YWJsZSByZXByZXNlbnRlZCBi
eSB0aGUgdGFibGUgZWxlbWVudC4KKyAgICBSZWZQdHIgdGFibGVFbGVtZW50ID0gdGhpcy0+bm9k
ZSgpOworICAgIC8vIGBpc0FyaWFUYWJsZSgpYCB3aWxsIHJldHVybiB0cnVlIGZvciB0YWJsZS1s
aWtlIEFSSUEgc3RydWN0dXJlcyAoZ3JpZCwgdHJlZWdyaWQsIHRhYmxlKS4KKyAgICBpZiAoIWlz
PEhUTUxUYWJsZUVsZW1lbnQ+KHRhYmxlRWxlbWVudC5nZXQoKSkgJiYgIWlzQXJpYVRhYmxlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChOb2RlKik+IHByb2Nl
c3NUYWJsZURlc2NlbmRhbnQgPSBbJiwgdGhpc10gKE5vZGUqIG5vZGUpIHsKKyAgICAgICAgLy8g
U3RlcCA4OiBXaGlsZSB0aGUgY3VycmVudCBlbGVtZW50IGlzIG5vdCBvbmUgb2YgdGhlIGZvbGxv
d2luZyBlbGVtZW50cywgYWR2YW5jZSB0aGUKKyAgICAgICAgLy8gY3VycmVudCBlbGVtZW50IHRv
IHRoZSBuZXh0IGNoaWxkIG9mIHRoZSB0YWJsZS4KKyAgICAgICAgaWYgKGF1dG8qIGNhcHRpb24g
PSBkeW5hbWljRG93bmNhc3Q8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+KG5vZGUpKSB7CisgICAg
ICAgICAgICAvLyBTdGVwIDY6IEFzc29jaWF0ZSB0aGUgZmlyc3QgY2FwdGlvbiBlbGVtZW50IGNo
aWxkIG9mIHRoZSB0YWJsZSBlbGVtZW50IHdpdGggdGhlIHRhYmxlLgorICAgICAgICAgICAgaWYg
KCFjYXB0aW9uRWxlbWVudCkKKyAgICAgICAgICAgICAgICBjYXB0aW9uRWxlbWVudCA9IGNhcHRp
b247CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvKiBlbGVt
ZW50ID0gZHluYW1pY0Rvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOworICAgICAgICBib29sIGRlc2Nl
bmRhbnRJc1JvdyA9IGVsZW1lbnQgJiYgKGVsZW1lbnQtPmhhc1RhZ05hbWUodHJUYWcpIHx8IG5v
ZGVIYXNSb2xlKGVsZW1lbnQsICJyb3ciX3MpKTsKKyAgICAgICAgYm9vbCBkZXNjZW5kYW50SXNS
b3dHcm91cCA9IGVsZW1lbnQgJiYgIWRlc2NlbmRhbnRJc1JvdyAmJiAoZWxlbWVudC0+aGFzVGFn
TmFtZSh0aGVhZFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSh0Ym9keVRhZykgfHwgZWxlbWVu
dC0+aGFzVGFnTmFtZSh0Zm9vdFRhZykgfHwgbm9kZUhhc1JvbGUoZWxlbWVudCwgInJvd2dyb3Vw
Il9zKSk7CisKKyAgICAgICAgLy8gU3RlcCA5OiBIYW5kbGUgdGhlIGNvbGdyb3VwIGVsZW1lbnQu
IE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgLy8gU3RlcCAxMDogSGFuZGxlZCBhYm92ZS4KKyAg
ICAgICAgLy8gU3RlcCAxMTogU2tpcHBlZC4gTm90IGN1cnJlbnRseSBpbXBsZW1lbnRpbmcgImRv
d253YXJkLWdyb3dpbmcgY2VsbHMiIGFsZ29yaXRobS4KKyAgICAgICAgLy8gU3RlcCAxMjogV2hp
bGUgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBub3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgZWxlbWVu
dHMsIGFkdmFuY2UgdGhlIGN1cnJlbnQgZWxlbWVudCB0byB0aGUgbmV4dCBjaGlsZCBvZiB0aGUg
dGFibGUKKyAgICAgICAgaWYgKCFkZXNjZW5kYW50SXNSb3cgJiYgIWRlc2NlbmRhbnRJc1Jvd0dy
b3VwKSB7CisgICAgICAgICAgICBpZiAoaXNBcmlhVGFibGUoKSkgeworICAgICAgICAgICAgICAg
IC8vIFdlIGFyZSBmb3JnaXZpbmcgd2l0aCBBUklBIGdyaWQgbWFya3VwLCBkZXNjZW5kaW5nIHBh
c3QgZGlzYWxsb3dlZCBlbGVtZW50cyB0byBidWlsZCB0aGUgZ3JpZCBzdHJ1Y3R1cmUgKHRoaXMg
aXMgbm90IHNwZWNpZmllZCwgYnV0IGNvbnNpc3RlbnQgd2l0aCBvdGhlciBicm93c2VycykuCisg
ICAgICAgICAgICAgICAgaWYgKGF1dG8qIGF4T2JqZWN0ID0gY2FjaGUtPmdldE9yQ3JlYXRlKG5v
ZGUpOyBheE9iamVjdCAmJiBuZWVkc1RvRGVzY2VuZCgqYXhPYmplY3QpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBheE9iamVjdC0+Y2hpbGRyZW4oKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NUYWJsZURlc2NlbmRhbnQoY2hpbGQgPyBj
aGlsZC0+bm9kZSgpIDogbnVsbHB0cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gU3RlcCAxMzog
SWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBhIHRyLCB0aGVuIHJ1biB0aGUgYWxnb3JpdGhtIGZv
ciBwcm9jZXNzaW5nIHJvd3MsCisgICAgICAgIC8vIGFkdmFuY2UgdGhlIGN1cnJlbnQgZWxlbWVu
dCB0byB0aGUgbmV4dCBjaGlsZCBvZiB0aGUgdGFibGUsIGFuZCByZXR1cm4gdG8gdGhlIHN0ZXAg
bGFiZWxlZCByb3dzLgorICAgICAgICBpZiAoZGVzY2VuZGFudElzUm93KQorICAgICAgICAgICAg
cHJvY2Vzc1JvdyhkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93PihjYWNoZS0+
Z2V0T3JDcmVhdGUoZWxlbWVudCkpKTsKKworICAgICAgICAvLyBTdGVwIDE0OiBSdW4gdGhlIGFs
Z29yaXRobSBmb3IgZW5kaW5nIGEgcm93IGdyb3VwLgorICAgICAgICBlbmRSb3dHcm91cCgpOwor
CisgICAgICAgIC8vIFN0ZXAgMTU6IElmIHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgYSB0Zm9vdC4u
LgorICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0Zm9vdFRhZykpIHsKKyAgICAgICAg
ICAgIC8vIC4uLnRoZW4gYWRkIHRoYXQgZWxlbWVudCB0byB0aGUgbGlzdCBvZiBwZW5kaW5nIHRm
b290IGVsZW1lbnRzCisgICAgICAgICAgICBwZW5kaW5nVGZvb3RFbGVtZW50cy5hcHBlbmQoKmVs
ZW1lbnQpOworICAgICAgICAgICAgLy8gLi4uYWR2YW5jZSB0aGUgY3VycmVudCBlbGVtZW50IHRv
IHRoZSBuZXh0IGNoaWxkIG9mIHRoZSB0YWJsZS4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFN0ZXAgMTY6IElmIHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgZWl0
aGVyIGEgdGhlYWQgb3IgYSB0Ym9keSwgcnVuIHRoZSBhbGdvcml0aG0gZm9yIHByb2Nlc3Npbmcg
cm93IGdyb3Vwcy4gKE5vdCBzcGVjaWZpZWQ6IGluY2x1ZGUgcm9sZT0icm93Z3JvdXBzIikuCisg
ICAgICAgIGlmIChkZXNjZW5kYW50SXNSb3dHcm91cCkKKyAgICAgICAgICAgIHByb2Nlc3NSb3dH
cm91cCgqZWxlbWVudCk7CisgICAgfTsKKyAgICAvLyBTdGVwIDc6IExldCB0aGUgY3VycmVudCBl
bGVtZW50IGJlIHRoZSBmaXJzdCBlbGVtZW50IGNoaWxkIG9mIHRoZSB0YWJsZSBlbGVtZW50Lgor
ICAgIGZvciAoUmVmUHRyIGN1cnJlbnRFbGVtZW50ID0gdGFibGVFbGVtZW50LT5maXJzdENoaWxk
KCk7IGN1cnJlbnRFbGVtZW50OyBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LT5uZXh0
U2libGluZygpKSB7CisgICAgICAgIHByb2Nlc3NUYWJsZURlc2NlbmRhbnQoY3VycmVudEVsZW1l
bnQuZ2V0KCkpOworICAgICAgICAvLyBTdGVwIDE3ICsgMTg6IEFkdmFuY2UgdGhlIGN1cnJlbnQg
ZWxlbWVudCB0byB0aGUgbmV4dCBjaGlsZCBvZiB0aGUgdGFibGUuCiAgICAgfQotICAgIAotICAg
IC8vIFByb2Nlc3MgdGhlIGZvb3RlciBsYXN0LCBpbiBjYXNlIGl0IHdhcyBvcmRlcmVkIGVhcmxp
ZXIgaW4gdGhlIERPTS4KLSAgICBpZiAoZm9vdGVyKQotICAgICAgICBhZGRDaGlsZHJlbkZyb21T
ZWN0aW9uKGZvb3RlciwgbWF4Q29sdW1uQ291bnQpOwotICAgIAotICAgIGF1dG8qIGF4Q2FjaGUg
PSBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCk7Ci0gICAgLy8gbWFrZSB0aGUgY29sdW1ucyBi
YXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGZpcnN0IGJvZHkKLSAgICB1bnNp
Z25lZCBsZW5ndGggPSBtYXhDb2x1bW5Db3VudDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYXV0byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uPigqYXhDYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpD
b2x1bW4pKTsKKworICAgIC8vIFN0ZXAgMTk6IEZvciBlYWNoIHRmb290IGVsZW1lbnQgaW4gdGhl
IGxpc3Qgb2YgcGVuZGluZyB0Zm9vdCBlbGVtZW50cywgaW4gdHJlZSBvcmRlciwKKyAgICAvLyBy
dW4gdGhlIGFsZ29yaXRobSBmb3IgcHJvY2Vzc2luZyByb3cgZ3JvdXBzLgorICAgIGZvciAoY29u
c3QgYXV0byYgdGZvb3RFbGVtZW50IDogcGVuZGluZ1Rmb290RWxlbWVudHMpCisgICAgICAgIHBy
b2Nlc3NSb3dHcm91cCh0Zm9vdEVsZW1lbnQuZ2V0KCkpOworCisgICAgLy8gVGhlIHJlbWFpbmRl
ciBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVuc3BlY2lmaWVkIHVwZGF0aW5nIG9mIGludGVybmFsIGRh
dGEgc3RydWN0dXJlcy4KKyAgICBhZGRDaGlsZChjYWNoZS0+Z2V0T3JDcmVhdGUoY2FwdGlvbkVs
ZW1lbnQuZ2V0KCkpLCBEZXNjZW5kSWZJZ25vcmVkOjpObyk7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgeFdpZHRoOyArK2kpIHsKKyAgICAgICAgYXV0byYgY29sdW1uID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigqY2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5
Um9sZTo6Q29sdW1uKSk7CiAgICAgICAgIGNvbHVtbi5zZXRDb2x1bW5JbmRleChpKTsKICAgICAg
ICAgY29sdW1uLnNldFBhcmVudCh0aGlzKTsKICAgICAgICAgbV9jb2x1bW5zLmFwcGVuZCgmY29s
dW1uKTsKQEAgLTQ3MSw2NiArNjYzLDYgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENo
aWxkcmVuKCkKICAgICB1cGRhdGVDaGlsZHJlblJvbGVzKCk7CiB9CiAKLXZvaWQgQWNjZXNzaWJp
bGl0eVRhYmxlOjphZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3dPYmpl
Y3QsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVk
JiBjb2x1bW5Db3VudCkKLXsKLSAgICBpZiAoIXJvd09iamVjdCB8fCAhaXM8QWNjZXNzaWJpbGl0
eVRhYmxlUm93Pigqcm93T2JqZWN0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byYgcm93
ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigqcm93T2JqZWN0KTsKLSAgICAvLyBX
ZSBuZWVkIHRvIGNoZWNrIGV2ZXJ5IGNlbGwgZm9yIGEgbmV3IHJvdywgYmVjYXVzZSBjZWxsIHNw
YW5zCi0gICAgLy8gY2FuIGNhdXNlIHVzIHRvIG1pc3Mgcm93cyBpZiB3ZSBqdXN0IGNoZWNrIHRo
ZSBmaXJzdCBjb2x1bW4uCi0gICAgaWYgKGFwcGVuZGVkUm93cy5jb250YWlucygmcm93KSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIHJvdy5zZXRSb3dJbmRleChzdGF0aWNfY2FzdDxpbnQ+
KG1fcm93cy5zaXplKCkpKTsKLSAgICBtX3Jvd3MuYXBwZW5kKCZyb3cpOwotICAgIGFkZENoaWxk
KCZyb3csIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsKLSAgICBhcHBlbmRlZFJvd3MuYWRkKCZyb3cp
OwotICAgICAgICAKLSAgICAvLyBzdG9yZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucwot
ICAgIHVuc2lnbmVkIHJvd0NlbGxDb3VudCA9IHJvdy5jaGlsZHJlbigpLnNpemUoKTsKLSAgICBp
ZiAocm93Q2VsbENvdW50ID4gY29sdW1uQ291bnQpCi0gICAgICAgIGNvbHVtbkNvdW50ID0gcm93
Q2VsbENvdW50OwotfQotCi12b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW5Gcm9t
U2VjdGlvbihSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2VjdGlvbiwgdW5zaWduZWQmIG1heENv
bHVtbkNvdW50KQotewotICAgIEFTU0VSVCh0YWJsZVNlY3Rpb24pOwotICAgIGlmICghdGFibGVT
ZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byogYXhDYWNoZSA9IGRvY3Vt
ZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKLSAgICBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3Qq
PiBhcHBlbmRlZFJvd3M7Ci0gICAgdW5zaWduZWQgbnVtUm93cyA9IHRhYmxlU2VjdGlvbi0+bnVt
Um93cygpOwotICAgIGZvciAodW5zaWduZWQgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IG51bVJv
d3M7ICsrcm93SW5kZXgpIHsKLSAgICAgICAgCi0gICAgICAgIFJlbmRlclRhYmxlUm93KiByZW5k
ZXJSb3cgPSB0YWJsZVNlY3Rpb24tPnJvd1JlbmRlcmVyQXQocm93SW5kZXgpOwotICAgICAgICBp
ZiAoIXJlbmRlclJvdykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCYgcm93T2JqZWN0ID0gKmF4Q2FjaGUtPmdldE9yQ3JlYXRlKHJl
bmRlclJvdyk7Ci0gICAgICAgIAotICAgICAgICAvLyBJZiB0aGUgcm93IGlzIGFub255bW91cywg
d2Ugc2hvdWxkIGRpdmUgZGVlcGVyIGludG8gdGhlIGRlc2NlbmRhbnRzIHRvIHRyeSB0byBmaW5k
IGEgdmFsaWQgcm93LgotICAgICAgICBpZiAocmVuZGVyUm93LT5pc0Fub255bW91cygpKSB7Ci0g
ICAgICAgICAgICBEZXF1ZTxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4gcXVldWU7Ci0gICAgICAgICAg
ICBxdWV1ZS5hcHBlbmQoJnJvd09iamVjdCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHdo
aWxlICghcXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqID0gcXVldWUudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9iai0+
bm9kZSgpICYmIGlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKm9iaikpIHsKLSAgICAgICAgICAg
ICAgICAgICAgYWRkVGFibGVDZWxsQ2hpbGQob2JqLCBhcHBlbmRlZFJvd3MsIG1heENvbHVtbkNv
dW50KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGZvciAoYXV0byogY2hpbGQgPSBvYmotPmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgIHF1
ZXVlLmFwcGVuZChjaGlsZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgYWRkVGFibGVDZWxsQ2hpbGQoJnJvd09iamVjdCwgYXBwZW5kZWRSb3dzLCBtYXhDb2x1
bW5Db3VudCk7Ci0gICAgfQotICAgIAotICAgIG1heENvbHVtbkNvdW50ID0gc3RkOjptYXgodGFi
bGVTZWN0aW9uLT5udW1Db2x1bW5zKCksIG1heENvbHVtbkNvdW50KTsKLX0KLSAgICAKIEFYQ29y
ZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOjpoZWFkZXJDb250YWluZXIoKQogewogICAgIGlm
IChtX2hlYWRlckNvbnRhaW5lcikKQEAgLTY0MiwzMCArNzc0LDExIEBAIGludCBBY2Nlc3NpYmls
aXR5VGFibGU6OnRhYmxlTGV2ZWwoKSBjb25zdAogQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5
VGFibGU6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cp
CiB7CiAgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwotICAgIGlmIChjb2x1bW4gPj0g
Y29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93Q291bnQoKSkKKyAgICBpZiAocm93ID49IG1fc2xv
dEdyaWQuc2l6ZSgpIHx8IGNvbHVtbiA+PSBtX3Nsb3RHcmlkW3Jvd10uc2l6ZSgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICAvLyBJdGVyYXRlIGJhY2t3YXJkcyB0aHJvdWdo
IHRoZSByb3dzIGluIGNhc2UgdGhlIGRlc2lyZWQgY2VsbCBoYXMgYSByb3dzcGFuIGFuZCBleGlz
dHMgaW4gYSBwcmV2aW91cyByb3cuCi0gICAgZm9yICh1bnNpZ25lZCByb3dJbmRleENvdW50ZXIg
PSByb3cgKyAxOyByb3dJbmRleENvdW50ZXIgPiAwOyAtLXJvd0luZGV4Q291bnRlcikgewotICAg
ICAgICB1bnNpZ25lZCByb3dJbmRleCA9IHJvd0luZGV4Q291bnRlciAtIDE7Ci0gICAgICAgIGNv
bnN0IGF1dG8mIGNoaWxkcmVuID0gbV9yb3dzW3Jvd0luZGV4XS0+Y2hpbGRyZW4oKTsKLSAgICAg
ICAgLy8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywgd2UgaGF2ZSB0byBjaGVj
ayB0aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKLSAgICAgICAgLy8gY2VsbCB0byBkZXRlcm1pbmUg
d2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBjb2xJbmRleENv
dW50ZXIgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hpbGRyZW4uc2l6ZSgpKSwg
Y29sdW1uICsgMSk7IGNvbEluZGV4Q291bnRlciA+IDA7IC0tY29sSW5kZXhDb3VudGVyKSB7Ci0g
ICAgICAgICAgICB1bnNpZ25lZCBjb2xJbmRleCA9IGNvbEluZGV4Q291bnRlciAtIDE7Ci0gICAg
ICAgICAgICBBWENvcmVPYmplY3QqIGNoaWxkID0gY2hpbGRyZW5bY29sSW5kZXhdLmdldCgpOwot
ICAgICAgICAgICAgaWYgKCFjaGlsZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgICAgICAgYXV0byBjb2x1bW5SYW5nZSA9IGNoaWxkLT5jb2x1bW5JbmRleFJhbmdlKCk7Ci0g
ICAgICAgICAgICBhdXRvIHJvd1JhbmdlID0gY2hpbGQtPnJvd0luZGV4UmFuZ2UoKTsKLQotICAg
ICAgICAgICAgaWYgKChjb2x1bW4gPj0gY29sdW1uUmFuZ2UuZmlyc3QgJiYgY29sdW1uIDwgKGNv
bHVtblJhbmdlLmZpcnN0ICsgY29sdW1uUmFuZ2Uuc2Vjb25kKSkKLSAgICAgICAgICAgICAgICAm
JiAocm93ID49IHJvd1JhbmdlLmZpcnN0ICYmIHJvdyA8IChyb3dSYW5nZS5maXJzdCArIHJvd1Jh
bmdlLnNlY29uZCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDsKLSAgICAgICAgfQot
ICAgIH0KIAorICAgIGlmIChBWElEIGNlbGxJRCA9IG1fc2xvdEdyaWRbcm93XVtjb2x1bW5dKQor
ICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5vYmplY3RGb3JJRChjZWxsSUQpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCkBAIC03NDYsNCArODU5LDE3IEBAIGludCBBY2Nlc3NpYmls
aXR5VGFibGU6OmF4Um93Q291bnQoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCit2b2lkIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93KHVuc2lnbmVkIGluZGV4KQoreworICAgIGlmICht
X3Nsb3RHcmlkLnNpemUoKSA8IGluZGV4ICsgMSkKKyAgICAgICAgbV9zbG90R3JpZC5ncm93KGlu
ZGV4ICsgMSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjplbnN1cmVSb3dBbmRDb2x1
bW4odW5zaWduZWQgcm93SW5kZXgsIHVuc2lnbmVkIGNvbHVtbkluZGV4KQoreworICAgIGVuc3Vy
ZVJvdyhyb3dJbmRleCk7CisgICAgaWYgKG1fc2xvdEdyaWRbcm93SW5kZXhdLnNpemUoKSA8IGNv
bHVtbkluZGV4ICsgMSkKKyAgICAgICAgbV9zbG90R3JpZFtyb3dJbmRleF0uZ3Jvdyhjb2x1bW5J
bmRleCArIDEpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAppbmRleCAyNzQ2YmUzOTVh
MjkuLjQ5MmU5ZGQ4NjhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZS5oCkBAIC0yOSwxNyArMjksMTcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgotI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlUYWJsZUNlbGwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzsKIGNsYXNzIEhUTUxU
YWJsZUVsZW1lbnQ7Ci1jbGFzcyBSZW5kZXJUYWJsZVNlY3Rpb247Ci0gICAgCisKIGNsYXNzIEFj
Y2Vzc2liaWxpdHlUYWJsZSA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZT4gY3JlYXRlKFJlbmRlck9i
amVjdCopOworICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlPiBjcmVhdGUoTm9kZSYp
OwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZSgpOwogCiAgICAgdm9pZCBpbml0KCkg
ZmluYWw7CkBAIC00NywxNSArNDcsMTUgQEAgcHVibGljOgogICAgIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZpcnR1YWwgYm9vbCBpc0FyaWFUYWJsZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhZGRDaGlsZHJlbigpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJDaGlsZHJl
bigpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5Sb2xlcygpOwogCiAgICAgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbnMoKSBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3Igcm93cygpIG92ZXJyaWRlOwogCi0gICAgdW5zaWduZWQgY29sdW1u
Q291bnQoKSBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCByb3dDb3VudCgpIG92ZXJyaWRlOworICAg
IHVuc2lnbmVkIGNvbHVtbkNvdW50KCkgZmluYWw7CisgICAgdW5zaWduZWQgcm93Q291bnQoKSBm
aW5hbDsKICAgICBpbnQgdGFibGVMZXZlbCgpIGNvbnN0IGZpbmFsOwogCiAgICAgU3RyaW5nIHRp
dGxlKCkgY29uc3QgZmluYWw7CkBAIC03MSwxOSArNzEsMjYgQEAgcHVibGljOgogICAgIC8vIFJl
dHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMsIGFzIGNoaWxkcmVuLCBhbGwgdGhlIG9iamVj
dHMgdGhhdCBhY3QgYXMgaGVhZGVycy4KICAgICBBWENvcmVPYmplY3QqIGhlYWRlckNvbnRhaW5l
cigpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1RhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNUYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgaXQgaXMgZXhwb3NlZCBhcyBhbiBBY2Nlc3NpYmls
aXR5VGFibGUgdG8gdGhlIHBsYXRmb3JtLgotICAgIGJvb2wgaXNFeHBvc2FibGUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGlzRXhwb3NhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
c0V4cG9zYWJsZTsgfQogICAgIHZvaWQgcmVjb21wdXRlSXNFeHBvc2FibGUoKTsKIAotICAgIGlu
dCBheENvbHVtbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IGF4Um93Q291bnQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBpbnQgYXhDb2x1bW5Db3VudCgpIGNvbnN0IGZpbmFsOworICAg
IGludCBheFJvd0NvdW50KCkgY29uc3QgZmluYWw7CisKKyAgICBWZWN0b3I8VmVjdG9yPEFYSUQ+
PiBzbG90R3JpZCgpIGZpbmFsOworICAgIHZvaWQgc2V0U2xvdEdyaWREaXJ0eSgpOwogCiBwcm90
ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVRhYmxlKFJlbmRlck9iamVjdCopOwor
ICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUYWJsZShOb2RlJik7CiAKICAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgbV9yb3dzOwogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBtX2NvbHVtbnM7CisgICAgLy8gMkQgbWF0cml4IG9mIHRoZSBjZWxscyBhc3NpZ25lZCB0byBl
YWNoICJzbG90IiBpbiB0aGlzIHRhYmxlLgorICAgIC8vICgiU2xvdCIgYXMgZGVmaW5lZCBoZXJl
OiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS90YWJsZXMuaHRtbCNjb25j
ZXB0LXNsb3RzKQorICAgIFZlY3RvcjxWZWN0b3I8QVhJRD4+IG1fc2xvdEdyaWQ7CiAKICAgICBS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbV9oZWFkZXJDb250YWluZXI7CiAgICAgYm9vbCBt
X2lzRXhwb3NhYmxlOwpAQCAtOTMsMTIgKzEwMCwxNSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29s
IGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lk
IGFkZFJvdyhBY2Nlc3NpYmlsaXR5VGFibGVSb3cmLCB1bnNpZ25lZCwgdW5zaWduZWQmIG1heENv
bHVtbkNvdW50KTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUlzVGFibGVF
eHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0OwogICAgIHZvaWQgdGl0bGVFbGVt
ZW50VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JikgY29uc3QgZmluYWw7CiAgICAgSFRN
TFRhYmxlRWxlbWVudCogdGFibGVFbGVtZW50KCkgY29uc3Q7Ci0gICAgdm9pZCBhZGRDaGlsZHJl
bkZyb21TZWN0aW9uKFJlbmRlclRhYmxlU2VjdGlvbiosIHVuc2lnbmVkJiBtYXhDb2x1bW5Db3Vu
dCk7Ci0gICAgdm9pZCBhZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSGFz
aFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVt
bkNvdW50KTsKKworICAgIHZvaWQgZW5zdXJlUm93KHVuc2lnbmVkKTsKKyAgICB2b2lkIGVuc3Vy
ZVJvd0FuZENvbHVtbih1bnNpZ25lZCAvKiByb3dJbmRleCAqLywgdW5zaWduZWQgLyogY29sdW1u
SW5kZXggKi8pOwogCiAgICAgYm9vbCBoYXNOb25UYWJsZUFSSUFSb2xlKCkgY29uc3Q7CiAgICAg
Ly8gaXNEYXRhVGFibGUgaXMgd2hldGhlciBpdCBpcyBleHBvc2VkIGFzIGFuIEFjY2Vzc2liaWxp
dHlUYWJsZSBiZWNhdXNlIHRoZSBoZXVyaXN0aWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4IDAyNTlmZmE0
OWJiOC4uMzI4ZTg2MDc5YTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKQEAgLTI5LDE5ICsyOSwxMyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIK
IAotI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFi
bGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKLSNpbmNsdWRlICJFbGVt
ZW50SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MVGFi
bGVDZWxsRWxlbWVudC5oIgotI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGFibGVDZWxsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAKIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICA6IEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QocmVuZGVyZXIpCkBAIC00OSw2ICs0MywxMiBAQCBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7
CiB9CiAKK0FjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwoTm9k
ZSYgbm9kZSkKKyAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qobm9kZSkKKyAgICAsIG1f
YXhDb2xJbmRleEZyb21Sb3coLTEpCit7Cit9CisKIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6On5B
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsKCkgPSBkZWZhdWx0OwogCiBSZWY8QWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbD4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCkBAIC01Niw2ICs1NiwxMSBAQCBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4gQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZQogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwocmVuZGVyZXIpKTsKIH0K
IAorUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNy
ZWF0ZShOb2RlJiBub2RlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGwobm9kZSkpOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gZGVmYXVsdE9iamVjdEluY2x1c2lvbigpOwpAQCAt
NjYsMTEgKzcxLDExIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29tcHV0ZUFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIAogICAgIC8vIElnbm9yZSBhbm9ueW1vdXMg
dGFibGUgY2VsbHMgYXMgbG9uZyBhcyB0aGV5J3JlIG5vdCBpbiBhIHRhYmxlIChpZS4gd2hlbiBk
aXNwbGF5OnRhYmxlIGlzIHVzZWQpLgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyVGFibGUgPSBp
czxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpID8gZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxs
PigqbV9yZW5kZXJlcikudGFibGUoKSA6IG51bGxwdHI7Ci0gICAgYm9vbCBpblRhYmxlID0gcmVu
ZGVyVGFibGUgJiYgcmVuZGVyVGFibGUtPm5vZGUoKSAmJiAocmVuZGVyVGFibGUtPm5vZGUoKS0+
aGFzVGFnTmFtZSh0YWJsZVRhZykgfHwgbm9kZUhhc1JvbGUocmVuZGVyVGFibGUtPm5vZGUoKSwg
ImdyaWQiX3MpKTsKKyAgICBib29sIGluVGFibGUgPSByZW5kZXJUYWJsZSAmJiByZW5kZXJUYWJs
ZS0+bm9kZSgpICYmIChyZW5kZXJUYWJsZS0+bm9kZSgpLT5oYXNUYWdOYW1lKHRhYmxlVGFnKSB8
fCBub2RlSGFzR3JpZFJvbGUocmVuZGVyVGFibGUtPm5vZGUoKSkpOwogICAgIGlmICghbm9kZSgp
ICYmICFpblRhYmxlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCi0gICAgaWYgKCFp
c1RhYmxlQ2VsbCgpKQorICAgIGlmICghaXNFeHBvc2VkVGFibGVDZWxsKCkpCiAgICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpOwogICAgIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTExOCw3ICsxMjMsNyBAQCBBY2Nl
c3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFRhYmxlKCkgY29u
c3QKICAgICByZXR1cm4gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4odGFibGVG
cm9tUmVuZGVyVHJlZSk7CiB9CiAgICAgCi1ib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6Omlz
VGFibGVDZWxsKCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6aXNFeHBvc2Vk
VGFibGVDZWxsKCkgY29uc3QKIHsKICAgICAvLyBJZiB0aGUgcGFyZW50IHRhYmxlIGlzIGFuIGFj
Y2Vzc2liaWxpdHkgdGFibGUsIHRoZW4gd2UgYXJlIGEgdGFibGUgY2VsbC4KICAgICAvLyBUaGlz
IHVzZWQgdG8gY2hlY2sgaWYgdGhlIHVuaWdub3JlZFBhcmVudCB3YXMgYSByb3csIGJ1dCB0aGF0
IGV4cGxvZGVkIHBlcmZvcm1hbmNlIGlmCkBAIC0xMzYsNyArMTQxLDcgQEAgQWNjZXNzaWJpbGl0
eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUo
KQogICAgIGlmIChkZWZhdWx0Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVy
IHx8IGRlZmF1bHRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXIgfHwgZGVmYXVs
dFJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGwgfHwgZGVmYXVsdFJvbGUgPT0gQWNjZXNz
aWJpbGl0eVJvbGU6OkdyaWRDZWxsKQogICAgICAgICByZXR1cm4gZGVmYXVsdFJvbGU7CiAKLSAg
ICBpZiAoIWlzVGFibGVDZWxsKCkpCisgICAgaWYgKCFpc0V4cG9zZWRUYWJsZUNlbGwoKSkKICAg
ICAgICAgcmV0dXJuIGRlZmF1bHRSb2xlOwogICAgIGlmIChpc0NvbHVtbkhlYWRlckNlbGwoKSkK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXI7CkBAIC0xNDgs
NyArMTUzLDIyIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbDo6aXNUYWJsZUhlYWRlckNlbGwoKSBjb25zdAogewotICAgIHJldHVybiBub2RlKCkgJiYg
bm9kZSgpLT5oYXNUYWdOYW1lKHRoVGFnKTsKKyAgICBhdXRvKiBub2RlID0gdGhpcy0+bm9kZSgp
OworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUodGhUYWcpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChub2Rl
LT5oYXNUYWdOYW1lKHRkVGFnKSkgeworICAgICAgICBhdXRvKiBjdXJyZW50ID0gbm9kZS0+cGFy
ZW50Tm9kZSgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDIgJiYgY3VycmVudDsgaSsr
KSB7CisgICAgICAgICAgICBpZiAoY3VycmVudC0+aGFzVGFnTmFtZSh0aGVhZFRhZykpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+
cGFyZW50Tm9kZSgpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc0NvbHVtbkhlYWRlckNlbGwoKSBjb25zdApA
QCAtMzE3LDY4ICszMzcsMjUgQEAgQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsOjpwYXJlbnRSb3coKSBjb25zdAogewogICAgIGlmIChhdXRvIG93bmVyUGFyZW50
ID0gYXJpYU93bmVkQnlQYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIG93bmVyUGFyZW50OwotICAg
IAotICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0g
ICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pihw
YXJlbnQpOworICAgIHJldHVybiBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93
PihwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSk7CiB9CiAKIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5z
aWduZWQ+IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UoKSBjb25zdAogewot
ICAgIGF1dG8qIHBhcmVudFJvdyA9IHRoaXMtPnBhcmVudFJvdygpOwotICAgIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlIHsgcGFyZW50Um93ID8gcGFyZW50Um93LT5yb3dJ
bmRleCgpIDogMCwgMSB9OwotCi0gICAgLy8gQVJJQSAxLjEncyBhcmlhLXJvd3NwYW4gYXR0cmli
dXRlIGlzIGludGVuZGVkIGZvciBjZWxscyBhbmQgZ3JpZGNlbGxzIHdoaWNoIGFyZSBub3QgY29u
dGFpbmVkCi0gICAgLy8gaW4gYSBuYXRpdmUgdGFibGUuIEJ1dCBpZiB3ZSBoYXZlIGEgdmFsaWQg
YXV0aG9yLXByb3ZpZGVkIHZhbHVlIGFuZCBkbyBub3QgaGF2ZSBhbiBleHBsaWNpdAotICAgIC8v
IG5hdGl2ZSBob3N0IGxhbmd1YWdlIHZhbHVlIGZvciB0aGUgcm93c3BhbiwgZXhwb3NlIHRoZSBB
UklBIHZhbHVlLgotICAgIHJvd1JhbmdlLnNlY29uZCA9IGF4Um93U3BhbigpOwotICAgIGlmIChz
dGF0aWNfY2FzdDxpbnQ+KHJvd1JhbmdlLnNlY29uZCkgPT0gLTEpIHsKLSAgICAgICAgLy8gSXQn
cyBmYXN0ZXIgdG8gZ2V0IHJvd3NwYW4gZnJvbSBSZW5kZXJUYWJsZUNlbGwgYmVjYXVzZSBpdCBo
YXMgYnVpbHQgaW4gY2FjaGVzIHRvIGF2b2lkCi0gICAgICAgIC8vIHJlYWRpbmcgZnJvbSB0aGUg
RE9NLCBzbyB0cnkgdGhhdCBmaXJzdC4KLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlclRhYmxlQ2Vs
bCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpKQotICAgICAg
ICAgICAgcm93UmFuZ2Uuc2Vjb25kID0gcmVuZGVyVGFibGVDZWxsLT5yb3dTcGFuKCk7Ci0gICAg
ICAgIGVsc2UgaWYgKGF1dG8qIHRhYmxlQ2VsbEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRN
TFRhYmxlQ2VsbEVsZW1lbnQ+KG5vZGUoKSkpCi0gICAgICAgICAgICByb3dSYW5nZS5zZWNvbmQg
PSBzdGQ6Om1pbjx1bnNpZ25lZD4odGFibGVDZWxsRWxlbWVudC0+cm93U3BhbigpLCBtYXhSb3dJ
bmRleCk7Ci0jaWYgRU5BQkxFKE1BVEhNTCkKLSAgICAgICAgZWxzZSBpZiAoYXV0byogbWF0aE1M
RWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxNYXRoTUxFbGVtZW50Pihub2RlKCkpOyBtYXRoTUxF
bGVtZW50ICYmIG1hdGhNTEVsZW1lbnQtPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om10ZFRhZykp
Ci0gICAgICAgICAgICByb3dSYW5nZS5zZWNvbmQgPSBzdGQ6Om1pbjx1bnNpZ25lZD4obWF0aE1M
RWxlbWVudC0+cm93U3BhbigpLCBtYXhSb3dJbmRleCk7Ci0jZW5kaWYKLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAvLyBEZWZhdWx0IGJhY2sgdG8gMS4KLSAgICAgICAgICAgIHJvd1Jhbmdl
LnNlY29uZCA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJvd1JhbmdlOworICAg
IHJldHVybiB7IG1fcm93SW5kZXgsIHJvd1NwYW4oKSB9OwogfQogICAgIAogc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5n
ZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFu
Z2UgeyAwLCAxIH07Ci0gICAgaWYgKCFpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpKQot
ICAgICAgICByZXR1cm4gY29sdW1uUmFuZ2U7Ci0KLSAgICBjb25zdCBSZW5kZXJUYWJsZUNlbGwm
IGNlbGwgPSBkb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCptX3JlbmRlcmVyKTsKLSAgICBjb2x1
bW5SYW5nZS5maXJzdCA9IGNlbGwudGFibGUoKS0+Y29sVG9FZmZDb2woY2VsbC5jb2woKSk7Ci0K
LSAgICAvLyBBUklBIDEuMSdzIGFyaWEtY29sc3BhbiBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgZm9y
IGNlbGxzIGFuZCBncmlkY2VsbHMgd2hpY2ggYXJlIG5vdCBjb250YWluZWQKLSAgICAvLyBpbiBh
IG5hdGl2ZSB0YWJsZS4gQnV0IGlmIHdlIGhhdmUgYSB2YWxpZCBhdXRob3ItcHJvdmlkZWQgdmFs
dWUgYW5kIGRvIG5vdCBoYXZlIGFuIGV4cGxpY2l0Ci0gICAgLy8gbmF0aXZlIGhvc3QgbGFuZ3Vh
Z2UgdmFsdWUgZm9yIHRoZSBjb2xzcGFuLCBleHBvc2UgdGhlIEFSSUEgdmFsdWUuCi0gICAgY29s
dW1uUmFuZ2Uuc2Vjb25kID0gYXhDb2x1bW5TcGFuKCk7Ci0gICAgaWYgKHN0YXRpY19jYXN0PGlu
dD4oY29sdW1uUmFuZ2Uuc2Vjb25kKSAhPSAtMSkKLSAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdl
OwotCi0gICAgY29sdW1uUmFuZ2Uuc2Vjb25kID0gY2VsbC50YWJsZSgpLT5jb2xUb0VmZkNvbChj
ZWxsLmNvbCgpICsgY2VsbC5jb2xTcGFuKCkpIC0gY29sdW1uUmFuZ2UuZmlyc3Q7Ci0KLSAgICBy
ZXR1cm4gY29sdW1uUmFuZ2U7CisgICAgcmV0dXJuIHsgbV9jb2x1bW5JbmRleCwgY29sU3Bhbigp
IH07CiB9Ci0gICAgCisKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw6OnRpdGxlVUlFbGVtZW50KCkgY29uc3QKIHsKICAgICAvLyBUcnkgdG8gZmluZCBpZiB0aGUg
Zmlyc3QgY2VsbCBpbiB0aGlzIHJvdyBpcyBhIDx0aD4uIElmIGl0IGlzLAogICAgIC8vIHRoZW4g
aXQgY2FuIGFjdCBhcyB0aGUgdGl0bGUgdWkgZWxlbWVudC4gKFRoaXMgaXMgb25seSBpbiB0aGUK
ICAgICAvLyBjYXNlIHdoZW4gdGhlIHRhYmxlIGlzIG5vdCBhcHBlYXJpbmcgYXMgYW4gQVhUYWJs
ZS4pCi0gICAgaWYgKGlzVGFibGVDZWxsKCkgfHwgIWlzPFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVy
ZXIoKSkpCisgICAgaWYgKGlzRXhwb3NlZFRhYmxlQ2VsbCgpIHx8ICFpczxSZW5kZXJUYWJsZUNl
bGw+KHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIFRhYmxl
IGNlbGxzIHRoYXQgYXJlIHRoIGNhbm5vdCBoYXZlIHRpdGxlIHVpIGVsZW1lbnRzLCBzaW5jZSBi
eSBkZWZpbml0aW9uCkBAIC00MTgsMTAgKzM5NSw5IEBAIGludCBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjpheENvbHVtbkluZGV4KCkgY29uc3QKICAgICAvLyAiQVJJQSAxLjE6IElmIHRoZSBzZXQg
b2YgY29sdW1ucyB3aGljaCBpcyBwcmVzZW50IGluIHRoZSBET00gaXMgY29udGlndW91cywgYW5k
IGlmIHRoZXJlIGFyZSBubyBjZWxscyB3aGljaCBzcGFuIG1vcmUgdGhhbiBvbmUgcm93CiAgICAg
Ly8gb3IgY29sdW1uIGluIHRoYXQgc2V0LCB0aGVuIGF1dGhvcnMgbWF5IHBsYWNlIGFyaWEtY29s
aW5kZXggb24gZWFjaCByb3csIHNldHRpbmcgdGhlIHZhbHVlIHRvIHRoZSBpbmRleCBvZiB0aGUg
Zmlyc3QgY29sdW1uIG9mIHRoZSBzZXQuIgogICAgIC8vIEhlcmUsIHdlIGxldCBpdHMgcGFyZW50
IHJvdyB0byBzZXQgaXRzIGluZGV4IGJlZm9yZWhhbmQsIHNvIHdlIGRvbid0IGhhdmUgdG8gZ28g
dGhyb3VnaCB0aGUgc2libGluZ3MgdG8gY2FsY3VsYXRlIHRoZSBpbmRleC4KLSAgICBBY2Nlc3Np
YmlsaXR5VGFibGVSb3cqIHBhcmVudFJvdyA9IHRoaXMtPnBhcmVudFJvdygpOwotICAgIGlmIChw
YXJlbnRSb3cgJiYgbV9heENvbEluZGV4RnJvbVJvdyAhPSAtMSkKKyAgICBpZiAobV9heENvbElu
ZGV4RnJvbVJvdyAhPSAtMSAmJiBwYXJlbnRSb3coKSkKICAgICAgICAgcmV0dXJuIG1fYXhDb2xJ
bmRleEZyb21Sb3c7Ci0gICAgCisKICAgICByZXR1cm4gLTE7CiB9CiAgICAgCkBAIC00MzgsMzUg
KzQxNCwzMCBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dJbmRleCgpIGNvbnN0
CiAgICAgcmV0dXJuIC0xOwogfQogCi1pbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhDb2x1
bW5TcGFuKCkgY29uc3QKLXsKLSAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIEFSSUEgc3BlYywgIklm
IGFyaWEtY29scGFuIGlzIHVzZWQgb24gYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIGhvc3QgbGFu
Z3VhZ2UKLSAgICAvLyBwcm92aWRlcyBhbiBlcXVpdmFsZW50IGF0dHJpYnV0ZSwgdXNlciBhZ2Vu
dHMgbXVzdCBpZ25vcmUgdGhlIHZhbHVlIG9mIGFyaWEtY29sc3Bhbi4iCi0gICAgaWYgKGhhc0F0
dHJpYnV0ZShjb2xzcGFuQXR0cikpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIC8vIEFSSUEg
MS4xOiBBdXRob3JzIG11c3Qgc2V0IHRoZSB2YWx1ZSBvZiBhcmlhLWNvbHNwYW4gdG8gYW4gaW50
ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4KLSAgICBpZiAoaW50IHZhbHVlID0gZ2V0
SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9jb2xzcGFuQXR0cik7IHZhbHVlID49IDEpCi0gICAgICAg
IHJldHVybiB2YWx1ZTsKLQotICAgIHJldHVybiAtMTsKLX0KLQotaW50IEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmF4Um93U3BhbigpIGNvbnN0Cit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjpyb3dTcGFuKCkgY29uc3QKIHsKICAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIEFSSUEgc3Bl
YywgIklmIGFyaWEtcm93c3BhbiBpcyB1c2VkIG9uIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBo
b3N0IGxhbmd1YWdlCiAgICAgLy8gcHJvdmlkZXMgYW4gZXF1aXZhbGVudCBhdHRyaWJ1dGUsIHVz
ZXIgYWdlbnRzIG11c3QgaWdub3JlIHRoZSB2YWx1ZSBvZiBhcmlhLXJvd3NwYW4uIgotICAgIGlm
IChoYXNBdHRyaWJ1dGUocm93c3BhbkF0dHIpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAv
LyBBUklBIDEuMTogQXV0aG9ycyBtdXN0IHNldCB0aGUgdmFsdWUgb2YgYXJpYS1yb3dzcGFuIHRv
IGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAuCi0gICAgLy8gU2V0dGluZyB0
aGUgdmFsdWUgdG8gMCBpbmRpY2F0ZXMgdGhhdCB0aGUgY2VsbCBvciBncmlkY2VsbCBpcyB0byBz
cGFuIGFsbCB0aGUgcmVtYWluaW5nIHJvd3MgaW4gdGhlIHJvdyBncm91cC4KLSAgICBpZiAoZ2V0
QXR0cmlidXRlKGFyaWFfcm93c3BhbkF0dHIpID09ICIwIl9zKQotICAgICAgICByZXR1cm4gMDsK
LSAgICBpZiAoaW50IHZhbHVlID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9yb3dzcGFuQXR0
cik7IHZhbHVlID49IDEpCi0gICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICBpZiAoYXV0byByb3dT
cGFuID0gcGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUocm93c3BhbkF0dHIpKTsgcm93U3Bh
biAmJiAqcm93U3BhbiA+PSAxKSB7CisgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL3RhYmxlcy5odG1sCisgICAgICAgIC8vIElmIHJvd3NwYW4gaXMgZ3Jl
YXRlciB0aGFuIDY1NTM0LCBsZXQgaXQgYmUgNjU1MzQgaW5zdGVhZC4KKyAgICAgICAgcmV0dXJu
IHN0ZDo6bWluKHN0ZDo6bWF4KCpyb3dTcGFuLCAxKSwgNjU1MzQpOworICAgIH0KKyAgICBpZiAo
YXV0byBhcmlhUm93U3BhbiA9IHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGFyaWFfcm93
c3BhbkF0dHIpKTsgYXJpYVJvd1NwYW4gJiYgKmFyaWFSb3dTcGFuID49IDEpCisgICAgICAgIHJl
dHVybiBzdGQ6Om1pbihzdGQ6Om1heCgqYXJpYVJvd1NwYW4sIDEpLCA2NTUzNCk7CisgICAgcmV0
dXJuIDE7Cit9CiAKLSAgICByZXR1cm4gLTE7Cit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjpjb2xTcGFuKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byBjb2xTcGFuID0gcGFyc2VIVE1M
SW50ZWdlcihnZXRBdHRyaWJ1dGUoY29sc3BhbkF0dHIpKTsgY29sU3BhbiAmJiAqY29sU3BhbiA+
PSAxKSB7CisgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L3RhYmxlcy5odG1sCisgICAgICAgIC8vIElmIGNvbHNwYW4gaXMgZ3JlYXRlciB0aGFuIDEwMDAs
IGxldCBpdCBiZSAxMDAwIGluc3RlYWQuCisgICAgICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1h
eCgqY29sU3BhbiwgMSksIDEwMDApOworICAgIH0KKyAgICBpZiAoYXV0byBhcmlhQ29sU3BhbiA9
IHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGFyaWFfY29sc3BhbkF0dHIpKTsgYXJpYUNv
bFNwYW4gJiYgKmFyaWFDb2xTcGFuID49IDEpCisgICAgICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6
Om1heCgqYXJpYUNvbFNwYW4sIDEpLCAxMDAwKTsKKyAgICByZXR1cm4gMTsKIH0KLSAgICAKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAppbmRleCBmNDBiODJkYzE0YTIuLmZiZDhk
YWQ0YjczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDZWxsLmgKQEAgLTM4LDM2ICszOCw0NCBAQCBjbGFzcyBBY2Nlc3NpYmls
aXR5VGFibGVSb3c7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsIDogcHVibGljIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbD4gY3JlYXRlKFJlbmRlck9iamVjdCopOworICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbD4gY3JlYXRlKE5vZGUmKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3Np
YmlsaXR5VGFibGVDZWxsKCk7CisgICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KIAotICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIGlzRXhwb3NlZFRhYmxlQ2VsbCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNUYWJs
ZUhlYWRlckNlbGwoKSBjb25zdDsKICAgICBib29sIGlzQ29sdW1uSGVhZGVyQ2VsbCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIGJvb2wgaXNSb3dIZWFkZXJDZWxsKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
KyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZSogcGFyZW50VGFibGUoKSBjb25zdDsKKwog
ICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0aGUgY2Vs
bC4KLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5kZXhS
YW5nZSgpIGNvbnN0IGZpbmFsOwogICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFu
ZCBjb2x1bW4gc3BhbiBvZiB0aGUgY2VsbC4KLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiBjb2x1bW5JbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uSW5kZXhSYW5nZSgpIGNvbnN0IGZpbmFsOwogCiAgICAg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbkhlYWRlcnMoKSBvdmVycmlkZTsKICAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93SGVhZGVycygpIG92ZXJyaWRlOwogCiAg
ICAgaW50IGF4Q29sdW1uSW5kZXgoKSBjb25zdCBvdmVycmlkZTsKICAgICBpbnQgYXhSb3dJbmRl
eCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBheENvbHVtblNwYW4oKSBjb25zdDsKLSAgICBp
bnQgYXhSb3dTcGFuKCkgY29uc3Q7CisgICAgdW5zaWduZWQgY29sU3BhbigpIGNvbnN0OworICAg
IHVuc2lnbmVkIHJvd1NwYW4oKSBjb25zdDsKICAgICB2b2lkIHNldEFYQ29sSW5kZXhGcm9tUm93
KGludCBpbmRleCkgeyBtX2F4Q29sSW5kZXhGcm9tUm93ID0gaW5kZXg7IH0KIAorICAgIHZvaWQg
c2V0Um93SW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9yb3dJbmRleCA9IGluZGV4OyB9CisgICAg
dm9pZCBzZXRDb2x1bW5JbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2NvbHVtbkluZGV4ID0gaW5k
ZXg7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwo
UmVuZGVyT2JqZWN0Kik7CisgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChOb2Rl
Jik7CiAKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVSb3cqIHBhcmVudFJvdygpIGNvbnN0OwotICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRhYmxlKiBwYXJlbnRUYWJsZSgpIGNvbnN0OwogICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgZmluYWw7CiAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICBpbnQgbV9yb3dJbmRleDsKKyAgICB1bnNpZ25lZCBtX3Jvd0luZGV4IHsgMCB9
OworICAgIHVuc2lnbmVkIG1fY29sdW1uSW5kZXggeyAwIH07CiAgICAgaW50IG1fYXhDb2xJbmRl
eEZyb21Sb3c7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggYWM0MmFkMzA0YjBk
Li42ODZiMzY1ZDI5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKQEAgLTI5LDE3ICsyOSw5IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgi
CiAKLSNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbC5oIgotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKLSNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwu
aCIKLSNpbmNsdWRlICJSZW5kZXJUYWJsZVNlY3Rpb24uaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5VGFibGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpBY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4oKSA9IGRlZmF1bHQ7CiAKQEAgLTcxLDEwMiArNjMsMTcgQEAgTGF5b3V0UmVjdCBB
Y2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmVsZW1lbnRSZWN0KCkgY29uc3QKIAogQVhDb3JlT2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmNvbHVtbkhlYWRlcigpCiB7Ci0gICAgaWYg
KCFtX3BhcmVudCB8fCAhaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9wYXJlbnQpCi0gICAgICAg
IHx8ICFtX3BhcmVudC0+aXNFeHBvc2FibGUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9wYXJlbnQtPnJlbmRlcmVyKCk7Ci0gICAg
aWYgKCFyZW5kZXJlcikKKyAgICBhdXRvKiBwYXJlbnRUYWJsZSA9IGR5bmFtaWNEb3duY2FzdDxB
Y2Nlc3NpYmlsaXR5VGFibGU+KG1fcGFyZW50LmdldCgpKTsKKyAgICBpZiAoIXBhcmVudFRhYmxl
IHx8ICFwYXJlbnRUYWJsZS0+aXNFeHBvc2FibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvJiBwYXJlbnRUYWJsZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
Km1fcGFyZW50KTsKLQotICAgIGlmIChwYXJlbnRUYWJsZS5pc0FyaWFUYWJsZSgpKSB7Ci0gICAg
ICAgIGZvciAoY29uc3QgYXV0byYgY2VsbCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgICAgIGlm
IChjZWxsLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyKQot
ICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLmdldCgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChjb25zdCBhdXRvJiBjZWxsIDogY2hpbGRyZW4oKSkg
eworICAgICAgICBpZiAoY2VsbC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNv
bHVtbkhlYWRlcikKKyAgICAgICAgICAgIHJldHVybiBjZWxsLmdldCgpOwogICAgIH0KLQotICAg
IGlmICghaXM8UmVuZGVyVGFibGU+KCpyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIAotICAgIFJlbmRlclRhYmxlJiB0YWJsZSA9IGRvd25jYXN0PFJlbmRlclRhYmxlPigq
cmVuZGVyZXIpOwotCi0gICAgLy8gdHJ5IHRoZSA8dGhlYWQ+IHNlY3Rpb24gZmlyc3QuIHRoaXMg
ZG9lc24ndCByZXF1aXJlIHRoIHRhZ3MKLSAgICBpZiAoYXV0byogaGVhZGVyT2JqZWN0ID0gaGVh
ZGVyT2JqZWN0Rm9yU2VjdGlvbih0YWJsZS5oZWFkZXIoKSwgZmFsc2UpKQotICAgICAgICByZXR1
cm4gaGVhZGVyT2JqZWN0OwotICAgIAotICAgIFJlbmRlclRhYmxlU2VjdGlvbiogYm9keVNlY3Rp
b24gPSB0YWJsZS5maXJzdEJvZHkoKTsKLSAgICB3aGlsZSAoYm9keVNlY3Rpb24gJiYgYm9keVNl
Y3Rpb24tPmlzQW5vbnltb3VzKCkpCi0gICAgICAgIGJvZHlTZWN0aW9uID0gdGFibGUuc2VjdGlv
bkJlbG93KGJvZHlTZWN0aW9uLCBTa2lwRW1wdHlTZWN0aW9ucyk7Ci0gICAgCi0gICAgLy8gbm93
IHRyeSBmb3IgPHRoPiB0YWdzIGluIHRoZSBmaXJzdCBib2R5LiBJZiB0aGUgZmlyc3QgYm9keSBp
cyAKLSAgICByZXR1cm4gaGVhZGVyT2JqZWN0Rm9yU2VjdGlvbihib2R5U2VjdGlvbiwgdHJ1ZSk7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0Rm9yU2VjdGlvbihSZW5kZXJUYWJsZVNlY3Rp
b24qIHNlY3Rpb24sIGJvb2wgdGhUYWdSZXF1aXJlZCkKLXsKLSAgICBpZiAoIXNlY3Rpb24pCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIHVuc2lnbmVkIG51bUNvbHMgPSBzZWN0
aW9uLT5udW1Db2x1bW5zKCk7Ci0gICAgaWYgKG1fY29sdW1uSW5kZXggPj0gbnVtQ29scykKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKCFzZWN0aW9uLT5udW1Sb3dzKCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIFJlbmRlclRhYmxlQ2VsbCogY2Vs
bCA9IG51bGxwdHI7Ci0gICAgLy8gYWxzbyBhY2NvdW50IGZvciBjZWxscyB0aGF0IGhhdmUgYSBz
cGFuCi0gICAgZm9yIChpbnQgdGVzdENvbCA9IG1fY29sdW1uSW5kZXg7IHRlc3RDb2wgPj0gMDsg
LS10ZXN0Q29sKSB7Ci0gICAgICAgIAotICAgICAgICAvLyBSdW4gZG93biB0aGUgcm93cyBpbiBj
YXNlIGluaXRpYWwgcm93cyBhcmUgaW52YWxpZCAobGlrZSB3aGVuIGEgPGNhcHRpb24+IGlzIHVz
ZWQpLgotICAgICAgICB1bnNpZ25lZCByb3dDb3VudCA9IHNlY3Rpb24tPm51bVJvd3MoKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCB0ZXN0Um93ID0gMDsgdGVzdFJvdyA8IHJvd0NvdW50OyB0ZXN0
Um93KyspIHsKLSAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCogdGVzdENlbGwgPSBzZWN0aW9u
LT5wcmltYXJ5Q2VsbEF0KHRlc3RSb3csIHRlc3RDb2wpOwotICAgICAgICAgICAgLy8gTm8gY2Vs
bCBhdCB0aGlzIGluZGV4LCBrZWVwIGNoZWNraW5nIG1vcmUgcm93cyBhbmQgY29sdW1ucy4KLSAg
ICAgICAgICAgIGlmICghdGVzdENlbGwpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIC8vIElmIHdlJ3ZlIHJlYWNoZWQgYSBjZWxsIHRoYXQgZG9l
c24ndCBldmVuIG92ZXJsYXAgb3VyIGNvbHVtbiBpdCBjYW4ndCBiZSB0aGUgaGVhZGVyLgotICAg
ICAgICAgICAgaWYgKCh0ZXN0Q2VsbC0+Y29sKCkgKyAodGVzdENlbGwtPmNvbFNwYW4oKS0xKSkg
PCBtX2NvbHVtbkluZGV4KQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBOb2RlKiB0ZXN0Q2VsbE5vZGUgPSB0ZXN0Q2VsbC0+ZWxlbWVudCgpOwotICAg
ICAgICAgICAgLy8gSWYgdGhlIFJlbmRlclRhYmxlQ2VsbCBkb2Vzbid0IGhhdmUgYW4gZWxlbWVu
dCBiZWNhdXNlIGl0cyBhbm9ueW1vdXMsCi0gICAgICAgICAgICAvLyB0cnkgdG8gc2VlIGlmIHdl
IGNhbiBmaW5kIHRoZSBvcmlnaW5hbCBjZWxsIGVsZW1lbnQgdG8gY2hlY2sgaWYgaXQgaGFzIGEg
PHRoPiB0YWcuCi0gICAgICAgICAgICBpZiAoIXRlc3RDZWxsTm9kZSAmJiB0ZXN0Q2VsbC0+aXNB
bm9ueW1vdXMoKSkgewotICAgICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50
ID0gdGVzdENlbGwtPnBhcmVudCgpID8gdGVzdENlbGwtPnBhcmVudCgpLT5lbGVtZW50KCkgOiBu
dWxscHRyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50LT5oYXNUYWdO
YW1lKHRyVGFnKSAmJiB0ZXN0Q29sIDwgc3RhdGljX2Nhc3Q8aW50PihwYXJlbnRFbGVtZW50LT5j
b3VudENoaWxkTm9kZXMoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q2VsbE5vZGUg
PSBwYXJlbnRFbGVtZW50LT50cmF2ZXJzZVRvQ2hpbGRBdCh0ZXN0Q29sKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghdGVzdENlbGxOb2RlKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBJ
ZiB0aCBpcyByZXF1aXJlZCwgYnV0IHdlIGZvdW5kIGFuIGVsZW1lbnQgdGhhdCBkb2Vzbid0IGhh
dmUgYSB0aCB0YWcsIHdlIGNhbiBzdG9wIGxvb2tpbmcuCi0gICAgICAgICAgICBpZiAodGhUYWdS
ZXF1aXJlZCAmJiAhdGVzdENlbGxOb2RlLT5oYXNUYWdOYW1lKHRoVGFnKSkKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2VsbCA9IHRlc3RDZWxsOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKCFjZWxs
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8qIGNlbGxPYmplY3QgPSBheE9i
amVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGNlbGwpOwotICAgIGlmICghY2VsbE9iamVjdCB8fCBj
ZWxsT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICAKLSAgICByZXR1cm4gY2VsbE9iamVjdDsKLX0KLSAgICAKIGJvb2wgQWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3BhcmVudCkKQEAgLTE4MiwyMiArODksMTggQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW46OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJlbigpCiB7CiAgICAg
QVNTRVJUKCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOyAKLSAgICAKICAgICBtX2NoaWxkcmVuSW5p
dGlhbGl6ZWQgPSB0cnVlOwotICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPihtX3BhcmVu
dCkpCi0gICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHBhcmVudFRhYmxlID0gZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9wYXJlbnQpOwotICAgIGlmICghcGFyZW50VGFibGUuaXNF
eHBvc2FibGUoKSkKKyAgICBhdXRvKiBwYXJlbnRUYWJsZSA9IGR5bmFtaWNEb3duY2FzdDxBY2Nl
c3NpYmlsaXR5VGFibGU+KG1fcGFyZW50LmdldCgpKTsKKyAgICBpZiAoIXBhcmVudFRhYmxlIHx8
ICFwYXJlbnRUYWJsZS0+aXNFeHBvc2FibGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IGludCBudW1Sb3dzID0gcGFyZW50VGFibGUucm93Q291bnQoKTsKLSAgICAKKworICAgIGludCBu
dW1Sb3dzID0gcGFyZW50VGFibGUtPnJvd0NvdW50KCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1Sb3dzOyArK2kpIHsKLSAgICAgICAgYXV0byogY2VsbCA9IHBhcmVudFRhYmxlLmNlbGxG
b3JDb2x1bW5BbmRSb3cobV9jb2x1bW5JbmRleCwgaSk7CisgICAgICAgIGF1dG8qIGNlbGwgPSBw
YXJlbnRUYWJsZS0+Y2VsbEZvckNvbHVtbkFuZFJvdyhtX2NvbHVtbkluZGV4LCBpKTsKICAgICAg
ICAgaWYgKCFjZWxsKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAg
IC8vIG1ha2Ugc3VyZSB0aGUgbGFzdCBvbmUgaXNuJ3QgdGhlIHNhbWUgYXMgdGhpcyBvbmUgKHJv
d3NwYW4gY2VsbHMpCiAgICAgICAgIGlmIChtX2NoaWxkcmVuLnNpemUoKSA+IDAgJiYgbV9jaGls
ZHJlbi5sYXN0KCkgPT0gY2VsbCkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgK
aW5kZXggNmIxYWNjZDBmNTA2Li5iMDViMjkzOGU3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaApAQCAtMjks
OCArMjksNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TW9ja09i
amVjdC5oIgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgotI2luY2x1ZGUgIkludFJl
Y3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtNTYsNyArNTQsNiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbigpOwogICAgIAotICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdEZvclNlY3Rpb24oUmVuZGVyVGFibGVT
ZWN0aW9uKiwgYm9vbCB0aFRhZ1JlcXVpcmVkKTsKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1RhYmxlQ29sdW1uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKaW5kZXggNWUzYmFi
ZTM2NmMyLi4wYTNiYzM2MTJmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKQEAgLTI5LDI0ICsyOSwyNSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgog
Ci0jaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJs
ZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCi0jaW5jbHVkZSAiUmVu
ZGVyVGFibGVSb3cuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwotICAgIAorCiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OkFjY2Vzc2li
aWxpdHlUYWJsZVJvdyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIDogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdChyZW5kZXJlcikKIHsKIH0KIAorQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpB
Y2Nlc3NpYmlsaXR5VGFibGVSb3coTm9kZSYgbm9kZSkKKyAgICA6IEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Qobm9kZSkKK3sKK30KKwogQWNjZXNzaWJpbGl0eVRhYmxlUm93Ojp+QWNjZXNzaWJp
bGl0eVRhYmxlUm93KCkgPSBkZWZhdWx0OwogCiBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlUm93PiBB
Y2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpAQCAt
NTQsNiArNTUsMTEgQEAgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4gQWNjZXNzaWJpbGl0eVRh
YmxlUm93OjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGFibGVSb3cocmVuZGVyZXIpKTsKIH0KIAorUmVmPEFjY2Vz
c2liaWxpdHlUYWJsZVJvdz4gQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVhdGUoTm9kZSYgbm9k
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGFibGVSb3cobm9k
ZSkpOworfQorCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKIHsKICAgICBpZiAoIWlzVGFibGVSb3coKSkKQEAgLTEx
MywxOSArMTE5LDE5IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eVRhYmxlUm93
OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJv
dzo6aGVhZGVyT2JqZWN0KCkKIHsKICAgICBjb25zdCBhdXRvJiByb3dDaGlsZHJlbiA9IGNoaWxk
cmVuKCk7Ci0gICAgaWYgKCFyb3dDaGlsZHJlbi5zaXplKCkpCisgICAgaWYgKHJvd0NoaWxkcmVu
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgYXV0byogY2Vs
bCA9IHJvd0NoaWxkcmVuWzBdLmdldCgpOwotICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbD4oY2VsbCkgfHwgIWNlbGwtPm5vZGUoKSB8fCAhY2VsbC0+bm9kZSgpLT5oYXNUYWdOYW1l
KHRoVGFnKSkKKyAgICBhdXRvKiBmaXJzdENlbGwgPSByb3dDaGlsZHJlblswXS5nZXQoKTsKKyAg
ICBpZiAoIWZpcnN0Q2VsbCB8fCAhZmlyc3RDZWxsLT5ub2RlKCkgfHwgIWZpcnN0Q2VsbC0+bm9k
ZSgpLT5oYXNUYWdOYW1lKHRoVGFnKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisK
ICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgcm93IGhlYWRlciBpcyBub3QgcGFydCBvZiBhbiBlbnRp
cmUgcm93IG9mIGhlYWRlcnMuCiAgICAgLy8gSW4gdGhhdCBjYXNlLCBpdCBpcyB1bmxpa2VseSB0
aGlzIGlzIGEgcm93IGhlYWRlci4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcm93Q2hp
bGRyZW4pIHsKICAgICAgICAgLy8gV2UgZm91bmQgYSBub24taGVhZGVyIGNlbGwsIHNvIHRoaXMg
aXMgbm90IGFuIGVudGlyZSByb3cgb2YgaGVhZGVycyAtLSByZXR1cm4gdGhlIG9yaWdpbmFsIGhl
YWRlciBjZWxsLgogICAgICAgICBpZiAoY2hpbGQtPm5vZGUoKSAmJiAhY2hpbGQtPm5vZGUoKS0+
aGFzVGFnTmFtZSh0aFRhZykpCi0gICAgICAgICAgICByZXR1cm4gY2VsbDsKKyAgICAgICAgICAg
IHJldHVybiBmaXJzdENlbGw7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgK
aW5kZXggOTUzNThjZjIyNmE0Li5lZGJkYWM3ODVkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaApAQCAtMzcsNiArMzcs
NyBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVS
b3cgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAg
ICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4gY3JlYXRlKE5vZGUmKTsKICAgICB2
aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VGFibGVSb3coKTsKIAogICAgIC8vIHJldHJpZXZlcyB0aGUg
InJvdyIgaGVhZGVyIChhIHRoIHRhZyBpbiB0aGUgcmlnaHRtb3N0IGNvbHVtbikKQEAgLTU3LDYg
KzU4LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0
eVRhYmxlUm93KFJlbmRlck9iamVjdCopOworICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUYWJs
ZVJvdyhOb2RlJik7CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmls
aXR5Um9sZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0c3BpLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3Bw
CmluZGV4IDg1NWRhMGUzNzBmNy4uZDU1NjUzNTU2NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0c3BpLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlP
YmplY3RUYWJsZUF0c3BpLmNwcApAQCAtOTIsNyArOTIsNyBAQCBHREJ1c0ludGVyZmFjZVZUYWJs
ZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNfdGFibGVGdW5jdGlvbnMgPSB7CiAgICAgICAg
ICAgICBhdXRvIHJvdyA9IGF0c3BpT2JqZWN0LT5yb3dBdEluZGV4KGluZGV4KTsKICAgICAgICAg
ICAgIGF1dG8gY29sdW1uID0gYXRzcGlPYmplY3QtPmNvbHVtbkF0SW5kZXgoaW5kZXgpOwogICAg
ICAgICAgICAgYXV0byogY2VsbCA9IGF0c3BpT2JqZWN0LT5tX2NvcmVPYmplY3QgPyBhdHNwaU9i
amVjdC0+bV9jb3JlT2JqZWN0LT5jZWxsRm9yQ29sdW1uQW5kUm93KCpjb2x1bW4sICpyb3cpIDog
bnVsbHB0cjsKLSAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFs
dWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKGJpaWlpYikiLCBjZWxsICYmIGNlbGwtPmlz
VGFibGVDZWxsKCkgPyBUUlVFIDogRkFMU0UsCisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2lu
dm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihiaWlpaWIp
IiwgY2VsbCAmJiBjZWxsLT5pc0V4cG9zZWRUYWJsZUNlbGwoKSA/IFRSVUUgOiBGQUxTRSwKICAg
ICAgICAgICAgICAgICByb3cudmFsdWVfb3IoLTEpLCBjb2x1bW4udmFsdWVfb3IoLTEpLCByb3cg
JiYgY29sdW1uID8gYXRzcGlPYmplY3QtPnJvd0V4dGVudCgqcm93LCAqY29sdW1uKSA6IC0xLAog
ICAgICAgICAgICAgICAgIHJvdyAmJiBjb2x1bW4gPyBhdHNwaU9iamVjdC0+Y29sdW1uRXh0ZW50
KCpyb3csICpjb2x1bW4pIDogLTEsIEZBTFNFKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWdfc3Ry
Y21wMChtZXRob2ROYW1lLCAiR2V0U2VsZWN0ZWRSb3dzIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0
c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcAppbmRleCBkNGE0NTJiNWNiMGMuLjEwYTJlZTM5YmI0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0VGFibGVDZWxsQXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRz
cGk6OnNfdGFibGVDZWxsRnVuY3Rpb25zID0gewogICAgICAgICAgICAgcmV0dXJuIGdfdmFyaWFu
dF9uZXdfaW50MzIoYXRzcGlPYmplY3QtPnJvd1NwYW4oKSk7CiAgICAgICAgIGlmICghZ19zdHJj
bXAwKHByb3BlcnR5TmFtZSwgIlRhYmxlIikpIHsKICAgICAgICAgICAgIGF1dG8qIGF4T2JqZWN0
ID0gYXRzcGlPYmplY3QtPm1fY29yZU9iamVjdDsKLSAgICAgICAgICAgIGlmICghYXhPYmplY3Qg
fHwgIWF4T2JqZWN0LT5pc1RhYmxlQ2VsbCgpKQorICAgICAgICAgICAgaWYgKCFheE9iamVjdCB8
fCAhYXhPYmplY3QtPmlzRXhwb3NlZFRhYmxlQ2VsbCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLm51bGxSZWZlcmVuY2UoKTsKIAogICAg
ICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKiB3cmFwcGVyID0gYXRzcGlPYmplY3Qu
cHRyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGZhZDkx
MWU2NjJiNS4uOWNkNDBkOWZmOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQpAQCAtMTI4Niw3ICsxMjg2LDcgQEAgLSAoQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCop
dGFibGVDZWxsUGFyZW50CiB7CiAgICAgLy8gRmluZCBpZiB0aGlzIGVsZW1lbnQgaXMgaW4gYSB0
YWJsZSBjZWxsLgogICAgIGlmIChBWENvcmVPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHk6
OmZpbmRBbmNlc3RvcjxBWENvcmVPYmplY3Q+KCpzZWxmLmF4QmFja2luZ09iamVjdCwgdHJ1ZSwg
W10gKGNvbnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0KSB7Ci0gICAgICAgIHJldHVybiBvYmplY3Qu
aXNUYWJsZUNlbGwoKTsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5pc0V4cG9zZWRUYWJsZUNlbGwo
KTsKICAgICB9KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwqPihwYXJlbnQpOwogICAgIHJldHVybiBuaWw7CkBAIC0xMzQ3LDcgKzEzNDcsNyBAQCAt
IChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUhlYWRlckVsZW1lbnRzCiAgICAgLy8gV2Ugc2hvdWxk
IGNvbnNpZGVyIHRoZSBjYXNlcyB3aGVyZSB0aGUgcm93IG51bWJlciBkb2VzIE5PVCBtYXRjaCB0
aGUgaW5kZXggaW4KICAgICAvLyByb3dIZWFkZXJzLCB0aGUgbW9zdCBjb21tb24gY2FzZSBpcyB3
aGVuIHJvdzAvY29sMCBkb2VzIG5vdCBoYXZlIGEgaGVhZGVyLgogICAgIGZvciAoY29uc3QgYXV0
byYgcm93SGVhZGVyIDogcm93SGVhZGVycykgewotICAgICAgICBpZiAoIWlzPEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw+KCpyb3dIZWFkZXIpKQorICAgICAgICBpZiAoIXJvd0hlYWRlci0+aXNFeHBv
c2VkVGFibGVDZWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgYXV0byByb3dIZWFk
ZXJSYW5nZSA9IHJvd0hlYWRlci0+cm93SW5kZXhSYW5nZSgpOwogICAgICAgICBpZiAocm93UmFu
Z2VJbmRleCA+PSByb3dIZWFkZXJSYW5nZS5maXJzdCAmJiByb3dSYW5nZUluZGV4IDwgcm93SGVh
ZGVyUmFuZ2UuZmlyc3QgKyByb3dIZWFkZXJSYW5nZS5zZWNvbmQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHAKaW5kZXggNDY1ZDRlYmExMTU2Li4xZjU5MWRjMzFlNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0xOTcsMTcgKzE5NywxNiBAQCB2b2lkIEFYSXNvbGF0ZWRP
YmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PiYgYXhPYgogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNTZWxl
Y3RlZFJvd3MsIG9iamVjdC5zdXBwb3J0c1NlbGVjdGVkUm93cygpKTsKICAgICAgICAgc2V0T2Jq
ZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbnMsIG9iamVjdC5jb2x1bW5z
KCkpOwogICAgICAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Um93
cywgb2JqZWN0LnJvd3MoKSk7Ci0gICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpD
b2x1bW5Db3VudCwgb2JqZWN0LmNvbHVtbkNvdW50KCkpOwotICAgICAgICBzZXRQcm9wZXJ0eShB
WFByb3BlcnR5TmFtZTo6Um93Q291bnQsIG9iamVjdC5yb3dDb3VudCgpKTsKICAgICAgICAgc2V0
T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNlbGxzLCBvYmplY3QuY2VsbHMo
KSk7CiAgICAgICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpWaXNp
YmxlUm93cywgb2JqZWN0LnZpc2libGVSb3dzKCkpOwogICAgICAgICBzZXRPYmplY3RQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6SGVhZGVyQ29udGFpbmVyLCBvYmplY3QuaGVhZGVyQ29udGFpbmVy
KCkpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVhDb2x1bW5Db3VudCwg
b2JqZWN0LmF4Q29sdW1uQ291bnQoKSk7CiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpBWFJvd0NvdW50LCBvYmplY3QuYXhSb3dDb3VudCgpKTsKKyAgICAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OlNsb3RHcmlkLCBvYmplY3Quc2xvdEdyaWQoKSk7CiAgICAgfQog
Ci0gICAgaWYgKG9iamVjdC5pc1RhYmxlQ2VsbCgpKSB7Ci0gICAgICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpJc1RhYmxlQ2VsbCwgdHJ1ZSk7CisgICAgaWYgKG9iamVjdC5pc0V4cG9z
ZWRUYWJsZUNlbGwoKSkgeworICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNF
eHBvc2VkVGFibGVDZWxsLCB0cnVlKTsKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5h
bWU6OkNvbHVtbkluZGV4UmFuZ2UsIG9iamVjdC5jb2x1bW5JbmRleFJhbmdlKCkpOwogICAgICAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Um93SW5kZXhSYW5nZSwgb2JqZWN0LnJvd0lu
ZGV4UmFuZ2UoKSk7CiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBWENvbHVt
bkluZGV4LCBvYmplY3QuYXhDb2x1bW5JbmRleCgpKTsKQEAgLTQ5MSwxNSArNDkwLDIwIEBAIGJv
b2wgQVhJc29sYXRlZE9iamVjdDo6aXNEZXRhY2hlZEZyb21QYXJlbnQoKQogCiBBWENvcmVPYmpl
Y3QqIEFYSXNvbGF0ZWRPYmplY3Q6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1u
SW5kZXgsIHVuc2lnbmVkIHJvd0luZGV4KQogewotICAgIEFYSUQgY2VsbElEID0gQWNjZXNzaWJp
bGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPEFYSUQ+KFsmY29sdW1uSW5kZXgsICZy
b3dJbmRleCwgdGhpc10gKCkgLT4gQVhJRCB7Ci0gICAgICAgIGlmIChhdXRvKiBvYmplY3QgPSBh
c3NvY2lhdGVkQVhPYmplY3QoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gY2VsbCA9IG9iamVj
dC0+Y2VsbEZvckNvbHVtbkFuZFJvdyhjb2x1bW5JbmRleCwgcm93SW5kZXgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBjZWxsLT5vYmplY3RJRCgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB7IH07Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gdHJlZSgpLT5vYmplY3RGb3JJRChjZWxsSUQp
LmdldCgpOworICAgIC8vIEFYUHJvcGVydHlOYW1lOjpTbG90R3JpZCBjYW4gYmUgYmlnLCBzbyBt
YWtlIHN1cmUgbm90IHRvIGNvcHkgaXQuCisgICAgYXV0byBzbG90R3JpZEl0ZXJhdG9yID0gbV9w
cm9wZXJ0eU1hcC5maW5kKEFYUHJvcGVydHlOYW1lOjpTbG90R3JpZCk7CisgICAgaWYgKHNsb3RH
cmlkSXRlcmF0b3IgPT0gbV9wcm9wZXJ0eU1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBBWElEIGNlbGxJRCA9IFdURjo6c3dpdGNoT24oc2xvdEdyaWRJdGVyYXRvci0+
dmFsdWUsCisgICAgICAgIFsmXSAoVmVjdG9yPFZlY3RvcjxBWElEPj4mIHNsb3RHcmlkKSB7Cisg
ICAgICAgICAgICBpZiAocm93SW5kZXggPj0gc2xvdEdyaWQuc2l6ZSgpIHx8IGNvbHVtbkluZGV4
ID49IHNsb3RHcmlkW3Jvd0luZGV4XS5zaXplKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEFY
SUQoKTsKKyAgICAgICAgICAgIHJldHVybiBzbG90R3JpZFtyb3dJbmRleF1bY29sdW1uSW5kZXhd
OworICAgICAgICB9LAorICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIEFYSUQoKTsgfQorICAg
ICk7CisgICAgcmV0dXJuIGNlbGxJRCA/IHRyZWUoKS0+b2JqZWN0Rm9ySUQoY2VsbElEKS5nZXQo
KSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6YWNjZXNzaWJpbGl0eVRl
eHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dHMpIGNvbnN0CkBAIC0xNjU0LDYgKzE2
NTgsMTIgQEAgYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc01vZGFsTm9kZSgpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzVGFibGVDZWxsKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIEFYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCBlZWViNmQyMmZjNzAuLmM3OWM4MDBmYjJl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAtMTM5LDEwICsxMzksMTAgQEAgcHJpdmF0
ZToKICAgICBBWElzb2xhdGVkT2JqZWN0KiBleHBvc2VkVGFibGVBbmNlc3Rvcihib29sIGluY2x1
ZGVTZWxmID0gZmFsc2UpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OmV4cG9z
ZWRUYWJsZUFuY2VzdG9yKCp0aGlzLCBpbmNsdWRlU2VsZik7IH0KICAgICBpbnQgdGFibGVMZXZl
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlO
YW1lOjpUYWJsZUxldmVsKTsgfQogICAgIGJvb2wgc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1
cHBvcnRzU2VsZWN0ZWRSb3dzKTsgfQotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBj
b2x1bW5zKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0
dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpDb2x1bW5zKSk7IH0KLSAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+
b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6
Um93cykpOyB9Ci0gICAgdW5zaWduZWQgY29sdW1uQ291bnQoKSBvdmVycmlkZSB7IHJldHVybiB1
bnNpZ25lZEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDb2x1bW5Db3VudCk7IH0KLSAg
ICB1bnNpZ25lZCByb3dDb3VudCgpIG92ZXJyaWRlIHsgcmV0dXJuIHVuc2lnbmVkQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJvd0NvdW50KTsgfQorICAgIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBjb2x1bW5zKCkgZmluYWwgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURz
KHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpDb2x1bW5zKSk7IH0K
KyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93cygpIGZpbmFsIHsgcmV0dXJuIHRy
ZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5
TmFtZTo6Um93cykpOyB9CisgICAgdW5zaWduZWQgY29sdW1uQ291bnQoKSBmaW5hbCB7IHJldHVy
biBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29sdW1ucygpLnNpemUoKSk7IH0KKyAgICB1bnNpZ25l
ZCByb3dDb3VudCgpIGZpbmFsIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyb3dzKCku
c2l6ZSgpKTsgfQogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjZWxscygpIG92ZXJy
aWRlIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxB
WElEPihBWFByb3BlcnR5TmFtZTo6Q2VsbHMpKTsgfQogICAgIEFYQ29yZU9iamVjdCogY2VsbEZv
ckNvbHVtbkFuZFJvdyh1bnNpZ25lZCwgdW5zaWduZWQpIG92ZXJyaWRlOwogICAgIEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBjb2x1bW5IZWFkZXJzKCkgb3ZlcnJpZGU7CkBAIC0xNTMsNyAr
MTUzLDggQEAgcHJpdmF0ZToKICAgICBpbnQgYXhSb3dDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpBWFJvd0NvdW50KTsgfQog
CiAgICAgLy8gVGFibGUgY2VsbCBzdXBwb3J0LgotICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6Oklz
VGFibGVDZWxsKTsgfQorICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBmaW5hbDsKKyAgICBi
b29sIGlzRXhwb3NlZFRhYmxlQ2VsbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNFeHBvc2VkVGFibGVDZWxsKTsgfQogICAgIC8vIFJl
dHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0aGUgY2VsbC4KICAgICBz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gcGFpckF0dHJpYnV0ZVZhbHVlPHVuc2lnbmVkPihBWFByb3BlcnR5TmFtZTo6
Um93SW5kZXhSYW5nZSk7IH0KICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQg
Y29sdW1uIHNwYW4gb2YgdGhlIGNlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggYmM4
NTk1MmNiMmNhLi5iNGNmNDI0ZGE3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTU2
NCw2ICs1NjQsOSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyhB
WENvcmVPYmplY3QmIGF4T2JqZWN0LCBjb25zdCBWZWN0b3I8QQogICAgICAgICBjYXNlIEFYUHJv
cGVydHlOYW1lOjpTZXRTaXplOgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVy
dHlOYW1lOjpTZXRTaXplLCBheE9iamVjdC5zZXRTaXplKCkpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlNsb3RHcmlkOgorICAgICAgICAgICAgcHJv
cGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpTbG90R3JpZCwgZHluYW1pY0Rvd25jYXN0PEFj
Y2Vzc2liaWxpdHlPYmplY3Q+KGF4T2JqZWN0KS0+c2xvdEdyaWQoKSk7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6U29ydERpcmVjdGlvbjoKICAgICAg
ICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6U29ydERpcmVjdGlvbiwgc3Rh
dGljX2Nhc3Q8aW50PihheE9iamVjdC5zb3J0RGlyZWN0aW9uKCkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNjA4LDggKzYxMSwyNCBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2Rl
QW5kRGVwZW5kZW50UHJvcGVydGllcyhBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iagogCiAgICAg
dXBkYXRlTm9kZShheE9iamVjdCk7CiAKLSAgICBpZiAoYXV0byogdHJlZUFuY2VzdG9yID0gQWNj
ZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yKGF4T2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgYXV0byYg
b2JqZWN0KSB7IHJldHVybiBvYmplY3QuaXNUcmVlKCk7IH0pKQotICAgICAgICB1cGRhdGVOb2Rl
UHJvcGVydHkoKnRyZWVBbmNlc3RvciwgQVhQcm9wZXJ0eU5hbWU6OkFSSUFUcmVlUm93cyk7Cisg
ICAgLy8gV2hlbiBhIHJvdyBnYWlucyBvciBsb3NlcyBjZWxscywgdGhlIGNvbHVtbiBjb3VudCBv
ZiB0aGUgdGFibGUgY2FuIGNoYW5nZS4KKyAgICBib29sIHVwZGF0ZVRhYmxlQW5jZXN0b3JDb2x1
bW5zID0gaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PihheE9iamVjdCk7CisgICAgZm9yIChhdXRv
KiBhbmNlc3RvciA9IGF4T2JqZWN0LnBhcmVudE9iamVjdCgpOyBhbmNlc3RvcjsgYW5jZXN0b3Ig
PSBhbmNlc3Rvci0+cGFyZW50T2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGFuY2VzdG9yLT5pc1Ry
ZWUoKSkgeworICAgICAgICAgICAgdXBkYXRlTm9kZVByb3BlcnR5KCphbmNlc3RvciwgQVhQcm9w
ZXJ0eU5hbWU6OkFSSUFUcmVlUm93cyk7CisgICAgICAgICAgICBpZiAoIXVwZGF0ZVRhYmxlQW5j
ZXN0b3JDb2x1bW5zKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHVwZGF0ZVRhYmxlQW5jZXN0b3JDb2x1bW5zICYmIGFuY2VzdG9yLT5pc0FjY2Vzc2li
aWxpdHlUYWJsZUluc3RhbmNlKCkpIHsKKyAgICAgICAgICAgIC8vIE9ubHkgYHVwZGF0ZUNoaWxk
cmVuYCBpZiB0aGUgdGFibGUgaXMgdW5pZ25vcmVkLCBiZWNhdXNlIG90aGVyd2lzZSBgdXBkYXRl
Q2hpbGRyZW5gIHdpbGwgYXNjZW5kIGFuZCB1cGRhdGUgdGhlIG5leHQgaGlnaGVzdCB1bmlnbm9y
ZWQgYW5jZXN0b3IsIHdoaWNoIGRvZXNuJ3QgYWNjb21wbGlzaCBvdXIgZ29hbCBvZiB1cGRhdGlu
ZyB0YWJsZSBjb2x1bW5zLgorICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5hY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvLyBVc2Ug
YHVwZGF0ZUNoaWxkcmVuYCByYXRoZXIgdGhhbiBgdXBkYXRlTm9kZVByb3BlcnR5YCBiZWNhdXNl
IGB1cGRhdGVDaGlsZHJlbmAgd2lsbCBlbnN1cmUgdGhlIGNvbHVtbnMgKHdoaWNoIGFyZSBjaGls
ZHJlbikgd2lsbCBoYXZlIGFzc29jaWF0ZWQgaXNvbGF0ZWQgb2JqZWN0cyBjcmVhdGVkLgorICAg
ICAgICAgICAgdXBkYXRlQ2hpbGRyZW4oKmFuY2VzdG9yKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJl
bihBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVjdCwgUmVzb2x2ZU5vZGVDaGFuZ2VzIHJlc29s
dmVOb2RlQ2hhbmdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGJlZTQ5MjE3OTU0NC4uZjk1
OWUxYjgzZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTc5LDcgKzc5LDYgQEAgZW51bSBj
bGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBDZWxscywKICAgICBDb2xvclZh
bHVlLAogICAgIENvbHVtbnMsCi0gICAgQ29sdW1uQ291bnQsCiAgICAgQ29sdW1uSGVhZGVyLAog
ICAgIENvbHVtbkhlYWRlcnMsCiAgICAgQ29sdW1uSW5kZXgsCkBAIC0xMjIsNiArMTIxLDcgQEAg
ZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBJc0VuYWJsZWQsCiAg
ICAgSXNFeHBhbmRlZCwKICAgICBJc0V4cG9zYWJsZSwKKyAgICBJc0V4cG9zZWRUYWJsZUNlbGws
CiAgICAgSXNGaWVsZHNldCwKICAgICBJc0ZvY3VzZWQsCiAgICAgSXNJbmRldGVybWluYXRlLApA
QCAtMTUxLDcgKzE1MSw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7
CiAgICAgSXNTZWxlY3RlZCwKICAgICBJc1NlbGVjdGVkT3B0aW9uQWN0aXZlLAogICAgIElzVGFi
bGUsCi0gICAgSXNUYWJsZUNlbGwsCiAgICAgSXNUYWJsZUNvbHVtbiwKICAgICBJc1RhYmxlUm93
LAogICAgIElzVHJlZSwKQEAgLTE5Niw3ICsxOTUsNiBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlO
YW1lIDogdWludDE2X3QgewogICAgIFJvbGVQbGF0Zm9ybVN0cmluZywKICAgICBSb2xlRGVzY3Jp
cHRpb24sCiAgICAgUm93cywKLSAgICBSb3dDb3VudCwKICAgICBSb3dIZWFkZXJzLAogICAgIFJv
d0luZGV4LAogICAgIFJvd0luZGV4UmFuZ2UsCkBAIC0yMDYsNiArMjA0LDcgQEAgZW51bSBjbGFz
cyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBTZXNzaW9uSUQsCiAgICAgU2V0U2l6
ZSwKICAgICBTb3J0RGlyZWN0aW9uLAorICAgIFNsb3RHcmlkLAogICAgIFNwZWVjaEhpbnQsCiAg
ICAgU3RyaW5nVmFsdWUsCiAgICAgU3Vicm9sZVBsYXRmb3JtU3RyaW5nLApAQCAtMjQwLDcgKzIz
OSw3IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgVmlzaWJs
ZVJvd3MsCiB9OwogCi11c2luZyBBWFByb3BlcnR5VmFsdWVWYXJpYW50ID0gc3RkOjp2YXJpYW50
PHN0ZDo6bnVsbHB0cl90LCBBWElELCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJs
ZSwgZmxvYXQsIHVpbnQ2NF90LCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUsIENvbG9yLCBVUkws
IExheW91dFJlY3QsIEZsb2F0UG9pbnQsIEZsb2F0UmVjdCwgSW50UG9pbnQsIEludFJlY3QsIFBB
TDo6U2Vzc2lvbklELCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiwgVmVjdG9yPEFjY2Vz
c2liaWxpdHlUZXh0PiwgVmVjdG9yPEFYSUQ+LCBWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIEFYSUQ+
PiwgVmVjdG9yPFN0cmluZz4sIFBhdGgsIE9wdGlvblNldDxBWEFuY2VzdG9yRmxhZz4sIFJldGFp
blB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+LCBJbnNpZGVMaW5rLCBDaGFyYWN0ZXJSYW5nZT47Cit1
c2luZyBBWFByb3BlcnR5VmFsdWVWYXJpYW50ID0gc3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90
LCBBWElELCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJsZSwgZmxvYXQsIHVpbnQ2
NF90LCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUsIENvbG9yLCBVUkwsIExheW91dFJlY3QsIEZs
b2F0UG9pbnQsIEZsb2F0UmVjdCwgSW50UG9pbnQsIEludFJlY3QsIFBBTDo6U2Vzc2lvbklELCBz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0Piwg
VmVjdG9yPEFYSUQ+LCBWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIEFYSUQ+PiwgVmVjdG9yPFN0cmlu
Zz4sIFBhdGgsIE9wdGlvblNldDxBWEFuY2VzdG9yRmxhZz4sIFJldGFpblB0cjxOU0F0dHJpYnV0
ZWRTdHJpbmc+LCBJbnNpZGVMaW5rLCBWZWN0b3I8VmVjdG9yPEFYSUQ+PiwgQ2hhcmFjdGVyUmFu
Z2U+OwogdXNpbmcgQVhQcm9wZXJ0eU1hcCA9IEhhc2hNYXA8QVhQcm9wZXJ0eU5hbWUsIEFYUHJv
cGVydHlWYWx1ZVZhcmlhbnQsIEludEhhc2g8QVhQcm9wZXJ0eU5hbWU+LCBXVEY6OlN0cm9uZ0Vu
dW1IYXNoVHJhaXRzPEFYUHJvcGVydHlOYW1lPj47CiAKIHN0cnVjdCBBWFByb3BlcnR5Q2hhbmdl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNTVlNWVmMzI4
MmY4Li4zMGUxOTU2MmNhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCkBAIC0xMTg5LDcgKzExODksNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19FTkQKICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxlQXR0cnMuZ2V0KCkuZ2V0KCk7
CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZUNvbHVtbigpKQogICAgICAgICBv
YmplY3RBdHRyaWJ1dGVzID0gdGFibGVDb2xBdHRycy5nZXQoKS5nZXQoKTsKLSAgICBlbHNlIGlm
IChiYWNraW5nT2JqZWN0LT5pc1RhYmxlQ2VsbCgpKQorICAgIGVsc2UgaWYgKGJhY2tpbmdPYmpl
Y3QtPmlzRXhwb3NlZFRhYmxlQ2VsbCgpKQogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFi
bGVDZWxsQXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNU
YWJsZVJvdygpKSB7CiAgICAgICAgIC8vIEFuIEFSSUEgdGFibGUgcm93IGNhbiBiZSBjb2xsYXBz
ZWQgYW5kIGV4cGFuZGVkLCBzbyBpdCBuZWVkcyB0aGUgZXh0cmEgYXR0cmlidXRlcy4KQEAgLTE4
NDYsNyArMTg0Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAg
ICAgICB9CiAgICAgfQogCi0gICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFibGVDZWxsKCkpIHsK
KyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNFeHBvc2VkVGFibGVDZWxsKCkpIHsKICAgICAgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dJbmRl
eFJhbmdlQXR0cmlidXRlXSkgewogICAgICAgICAgICAgYXV0byByb3dSYW5nZSA9IGJhY2tpbmdP
YmplY3QtPnJvd0luZGV4UmFuZ2UoKTsKICAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1
ZVdpdGhSYW5nZTpOU01ha2VSYW5nZShyb3dSYW5nZS5maXJzdCwgcm93UmFuZ2Uuc2Vjb25kKV07
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmli
dXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUt
YXR0cmlidXRlcy1leHBlY3RlZC50eHQKaW5kZXggYWUzMWE1ODA1Y2E5Li44ODVkMTY2YmRjMmMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1
dGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFi
bGUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTExLDcgKzExLDcgQEAgUEFTUzogY2VsbDIu
bnVtYmVyQXR0cmlidXRlVmFsdWUoJ0FYQVJJQVJvd0luZGV4JykgPT09IDgKIFBBU1M6IGNlbGw0
Lm51bWJlckF0dHJpYnV0ZVZhbHVlKCdBWEFSSUFDb2x1bW5JbmRleCcpID09PSAzCiBQQVNTOiBj
ZWxsMi5yb3dJbmRleFJhbmdlKCkgPT09ICd7MSwgMn0nCiBQQVNTOiBjZWxsNS5jb2x1bW5JbmRl
eFJhbmdlKCkgPT09ICd7MiwgM30nCi1QQVNTOiBjZWxsMy5yb3dJbmRleFJhbmdlKCkgPT09ICd7
MSwgMn0nCitQQVNTOiBjZWxsMy5yb3dJbmRleFJhbmdlKCkgPT09ICd7MSwgM30nCiBQQVNTOiBj
ZWxsNi5yb3dJbmRleFJhbmdlKCkgPT09ICd7MCwgMn0nCiBQQVNTOiBjZWxsNy5yb3dJbmRleFJh
bmdlKCkgPT09ICd7MCwgMn0nCiBQQVNTOiAjZ3JpZCBBWEFSSUFSb3dDb3VudCBkeW5hbWljYWxs
eSBjaGFuZ2VkIHRvIDYwLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9h
cmlhLXRhYmxlLWF0dHJpYnV0ZXMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJp
YS10YWJsZS1hdHRyaWJ1dGVzLmh0bWwKaW5kZXggNmFjYWRjZWZjYzJhLi41YzM1MmFiMWI4ODQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1
dGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJp
YnV0ZXMuaHRtbApAQCAtMjAsNyArMjAsNyBAQAogICAgICAgPHNwYW4gcm9sZT0iZ3JpZGNlbGwi
IGFyaWEtY29saW5kZXg9IjIiIGFyaWEtcm93aW5kZXg9IjgiPkZyZWQ8L3NwYW4+CiAgICAgICA8
c3BhbiByb2xlPSJncmlkY2VsbCIgYXJpYS1jb2xpbmRleD0iMyIgYXJpYS1yb3dpbmRleD0iOCI+
SmFja3Nvbjwvc3Bhbj4KICAgICAgIDxzcGFuIGlkPSJjZWxsMiIgcm9sZT0iZ3JpZGNlbGwiIGFy
aWEtY29saW5kZXg9IjQiIGFyaWEtcm93aW5kZXg9IjgiIGFyaWEtcm93c3Bhbj0iMiI+QWNtZSwg
SW5jLjwvc3Bhbj4KLSAgICAgIDxzcGFuIGlkPSJjZWxsMyIgcm9sZT0iZ3JpZGNlbGwiIGFyaWEt
Y29saW5kZXg9IjUiIGFyaWEtcm93aW5kZXg9IjgiIGFyaWEtcm93c3Bhbj0iMCI+MTIzIEJyb2Fk
IFN0Ljwvc3Bhbj4KKyAgICAgIDxzcGFuIGlkPSJjZWxsMyIgcm9sZT0iZ3JpZGNlbGwiIGFyaWEt
Y29saW5kZXg9IjUiIGFyaWEtcm93aW5kZXg9IjgiIGFyaWEtcm93c3Bhbj0iMyI+MTIzIEJyb2Fk
IFN0Ljwvc3Bhbj4KICAgICA8L2Rpdj4KICAgICA8ZGl2IHJvbGU9InJvdyIgYXJpYS1yb3dpbmRl
eD0iOSI+CiAgICAgICA8c3BhbiByb2xlPSJncmlkY2VsbCIgYXJpYS1jb2xpbmRleD0iMiI+U2Fy
YTwvc3Bhbj4KQEAgLTQ5LDcgKzQ5LDcgQEAKIDxkaXYgaWQ9ImdyaWQzIiByb2xlPSJncmlkIj4K
ICAgPGRpdiByb2xlPSJyb3ciPgogICAgIDxzcGFuIHJvbGU9ImdyaWRjZWxsIj5DZWxsPC9zcGFu
PgotICAgIDxzcGFuIGlkPSJjZWxsNiIgcm9sZT0iZ3JpZGNlbGwiIGFyaWEtcm93c3Bhbj0iMCI+
U3BhbiBDZWxsPC9zcGFuPgorICAgIDxzcGFuIGlkPSJjZWxsNiIgcm9sZT0iZ3JpZGNlbGwiIGFy
aWEtcm93c3Bhbj0iMiI+U3BhbiBDZWxsPC9zcGFuPgogICA8L2Rpdj4KICAgPGRpdiByb2xlPSJy
b3ciPgogICAgIDxzcGFuIHJvbGU9ImdyaWRjZWxsIj5DZWxsPC9zcGFuPgpAQCAtOTMsMTAgKzkz
LDEwIEBACiAgICAgICAgIC8vIGFyaWEtY29saW5kZXggZnJvbSBwYXJlbnQgcm93CiAgICAgICAg
IHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJjZWxsNC5udW1iZXJBdHRyaWJ1dGVWYWx1ZSgnQVhBUklB
Q29sdW1uSW5kZXgnKSIsICIzIik7CiAKLSAgICAgICAgLy8gYXJpYS1jb2xzcGFuIGFuZCBhcmlh
LXJvd3NwYW4sIGluY2x1ZGluZyBhcmlhLXJvd3NwYW49IjAiCisgICAgICAgIC8vIGFyaWEtY29s
c3BhbiBhbmQgYXJpYS1yb3dzcGFuCiAgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJjZWxs
Mi5yb3dJbmRleFJhbmdlKCkiLCAiJ3sxLCAyfSciKTsKICAgICAgICAgdGVzdE91dHB1dCArPSBl
eHBlY3QoImNlbGw1LmNvbHVtbkluZGV4UmFuZ2UoKSIsICInezIsIDN9JyIpOwotICAgICAgICB0
ZXN0T3V0cHV0ICs9IGV4cGVjdCgiY2VsbDMucm93SW5kZXhSYW5nZSgpIiwgIid7MSwgMn0nIik7
CisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJjZWxsMy5yb3dJbmRleFJhbmdlKCkiLCAi
J3sxLCAzfSciKTsKIAogICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgiY2VsbDYucm93SW5k
ZXhSYW5nZSgpIiwgIid7MCwgMn0nIik7CiAgICAgICAgIC8vIHVzZSByb3dzcGFuIGZvciBuYXRp
dmUgdGFibGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVs
ZW1lbnRzL3RhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY3Vz
dG9tLWVsZW1lbnRzL3RhYmxlLWV4cGVjdGVkLnR4dAppbmRleCAxZTM2YjE4YjU4MDMuLjU3NThm
YjdmZTIwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxl
bWVudHMvdGFibGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
Y3VzdG9tLWVsZW1lbnRzL3RhYmxlLWV4cGVjdGVkLnR4dApAQCAtMzAsMTMgKzMwLDEzIEBAIFBB
U1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJyb3ctMiIp
LnJvbGUgaXMgIkFYUm9sZTogQVhSCiBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5yb2xlIGlzICJBWFJvbGU6IEFYQ2VsbCIKIFBBU1Mg
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLm51
bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFSb3dJbmRleCIpIGlzIDgKIFBBU1MgYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLm51bWJlckF0dHJp
YnV0ZVZhbHVlKCJBWEFSSUFDb2x1bW5JbmRleCIpIGlzIDIKLVBBU1MgYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLnJvd0luZGV4UmFuZ2UoKSBp
cyAiezIsIDF9IgorUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImNlbGw1Iikucm93SW5kZXhSYW5nZSgpIGlzICJ7NCwgMX0iCiBQQVNTIGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5jb2x1bW5JbmRl
eFJhbmdlKCkgaXMgInswLCAyfSIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJyb3ctMyIpLnJvbGUgaXMgIkFYUm9sZTogQVhSb3ciCiBQQVNTIGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5yb2xl
IGlzICJBWFJvbGU6IEFYQ2VsbCIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLm51bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFSb3dJ
bmRleCIpIGlzIDkKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJjZWxsNiIpLm51bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFDb2x1bW5JbmRleCIp
IGlzIDIKLVBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJjZWxsNiIpLnJvd0luZGV4UmFuZ2UoKSBpcyAiezMsIDF9IgorUEFTUyBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2Iikucm93SW5kZXhSYW5nZSgp
IGlzICJ7NSwgMX0iCiBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgiY2VsbDYiKS5jb2x1bW5JbmRleFJhbmdlKCkgaXMgInswLCAzfSIKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLmh0bWwKaW5kZXggMDY3OTZiOTQxOGFmLi5kNWI4
NWQ0ZmFmZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVs
ZW1lbnRzL3RhYmxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20t
ZWxlbWVudHMvdGFibGUuaHRtbApAQCAtMTExLDE0ICsxMTEsMTQgQEAgZWxzZSB7CiAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImNlbGw1Iikucm9sZScsICdBWFJvbGU6IEFYQ2VsbCcpOwogICAgIHNob3VsZEJl
KCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1Iiku
bnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQVJvd0luZGV4IiknLCAnOCcpOwogICAgIHNob3Vs
ZEJlKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1
IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQUNvbHVtbkluZGV4IiknLCAnMicpOwotICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJjZWxsNSIpLnJvd0luZGV4UmFuZ2UoKScsICd7MiwgMX0nKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgiY2VsbDUiKS5yb3dJbmRleFJhbmdlKCknLCAnezQsIDF9Jyk7CiAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImNlbGw1IikuY29sdW1uSW5kZXhSYW5nZSgpJywgJ3swLCAyfScpOwogCiAgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoInJvdy0zIikucm9sZScsICdBWFJvbGU6IEFYUm93Jyk7CiAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImNlbGw2Iikucm9sZScsICdBWFJvbGU6IEFYQ2VsbCcpOwogICAgIHNob3VsZEJlKCdh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2IikubnVt
YmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQVJvd0luZGV4IiknLCAnOScpOwogICAgIHNob3VsZEJl
KCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2Iiku
bnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQUNvbHVtbkluZGV4IiknLCAnMicpOwotICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjZWxsNiIpLnJvd0luZGV4UmFuZ2UoKScsICd7MywgMX0nKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgiY2VsbDYiKS5yb3dJbmRleFJhbmdlKCknLCAnezUsIDF9Jyk7CiAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImNlbGw2IikuY29sdW1uSW5kZXhSYW5nZSgpJywgJ3swLCAzfScpOwogCiB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMzhmZWM5NzNj
MjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMt
Y29sc3Bhbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGhpcyB0ZXN0IGVuc3VyZXMg
dGhhdCB0aGUgJ2NlbGwgZm9yIGNvbHVtbiBhbmQgcm93JyBBUEkgd29ya3MgY29ycmVjdGx5IGFm
dGVyIGR5bmFtaWMgY29sc3BhbiBjaGFuZ2VzLgorCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1u
QW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIgPT09ICdyMGMwJworUEFTUzogdGFibGUuY2VsbEZv
ckNvbHVtbkFuZFJvdygxLCAwKS5kb21JZGVudGlmaWVyID09PSAncjBjMScKK1BBU1M6IHRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCkgPT09IG51bGwgPT09IHRydWUKK1BBU1M6IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjBjMScpLmNvbHVtbklu
ZGV4UmFuZ2UoKSA9PT0gJ3sxLCAxfScKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMGMxJyku
c2V0QXR0cmlidXRlKCdjb2xzcGFuJywgJzInKQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFu
ZFJvdygyLCAwKS5kb21JZGVudGlmaWVyID09PSAncjBjMScKK1BBU1M6IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjBjMScpLmNvbHVtbkluZGV4UmFuZ2Uo
KSA9PT0gJ3sxLCAyfScKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMGMxJykucmVtb3ZlQXR0
cmlidXRlKCdjb2xzcGFuJykKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCkg
PT09IG51bGwgPT09IHRydWUKK1BBU1M6IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgncjBjMScpLmNvbHVtbkluZGV4UmFuZ2UoKSA9PT0gJ3sxLCAxfScKK2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMGMxJykuc2V0QXR0cmlidXRlKCdhcmlhLWNvbHNwYW4n
LCAnMicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApLmRvbUlkZW50aWZp
ZXIgPT09ICdyMGMxJworUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpID09PSAnezEsIDJ9JworCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0hlYWRlciAwCUhl
YWRlciAxCitSMUMwCVIxQzEJUjFDMgorUjJDMAlSMkMxCVIyQzIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLmh0bWwgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNzdhNGEyODcwZGU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4uaHRtbApAQCAtMCwwICsxLDY5IEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgordGQsIHRoIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHRhYmxlIGlkPSJ0YWJsZSI+Cis8dGhlYWQg
aWQ9InRoZWFkIj4KKyAgICA8dHIgaWQ9InIwIj4KKyAgICAgICAgPHRoIGlkPSJyMGMwIj5IZWFk
ZXIgMDwvdGg+CisgICAgICAgIDx0aCBpZD0icjBjMSI+SGVhZGVyIDE8L3RoPgorICAgIDwvdHI+
Cis8L3RoZWFkPgorPHRib2R5IGlkPSJ0Ym9keSI+CisgICAgPHRyIGlkPSJyMSI+CisgICAgICAg
IDx0ZCBpZD0icjFjMCI+UjFDMDwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjFjMSI+UjFDMTwvdGQ+
CisgICAgICAgIDx0ZCBpZD0icjFjMiI+UjFDMjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgaWQ9
InIyIj4KKyAgICAgICAgPHRkIGlkPSJyMmMwIj5SMkMwPC90ZD4KKyAgICAgICAgPHRkIGlkPSJy
MmMxIj5SMkMxPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyMmMxIj5SMkMyPC90ZD4KKyAgICA8L3Ry
PgorPC90Ym9keT4KKzwvdGFibGU+CisKKzxzY3JpcHQ+Cit2YXIgb3V0cHV0ID0gIlRoaXMgdGVz
dCBlbnN1cmVzIHRoYXQgdGhlICdjZWxsIGZvciBjb2x1bW4gYW5kIHJvdycgQVBJIHdvcmtzIGNv
cnJlY3RseSBhZnRlciBkeW5hbWljIGNvbHNwYW4gY2hhbmdlcy5cblxuIjsKKworaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgIHZhciB0YWJsZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgidGFibGUiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxs
Rm9yQ29sdW1uQW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIiLCAiJ3IwYzAnIik7CisgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygxLCAwKS5kb21JZGVudGlm
aWVyIiwgIidyMGMxJyIpOworICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1
bW5BbmRSb3coMiwgMCkgPT09IG51bGwiLCAidHJ1ZSIpOworICAgIG91dHB1dCArPSBleHBlY3Qo
ImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjBjMScpLmNv
bHVtbkluZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOworCisgICAgb3V0cHV0ICs9IGV2YWxBbmRS
ZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMGMxJykuc2V0QXR0cmlidXRlKCdjb2xz
cGFuJywgJzInKSIpOworICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rpb24oKSB7CisgICAgICAg
IGF3YWl0IHdhaXRGb3IoKCkgPT4gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKSAhPT0g
bnVsbCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRS
b3coMiwgMCkuZG9tSWRlbnRpZmllciIsICIncjBjMSciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMGMx
JykuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MSwgMn0nIik7CisKKyAgICAgICAgb3V0cHV0ICs9
IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMGMxJykucmVtb3ZlQXR0
cmlidXRlKCdjb2xzcGFuJykiKTsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5j
KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApID09PSBudWxsIiwgInRydWUiKTsKKyAg
ICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MSwgMX0nIik7CisK
KyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyMGMxJykuc2V0QXR0cmlidXRlKCdhcmlhLWNvbHNwYW4nLCAnMicpIik7CisgICAgICAgIGF3
YWl0IHdhaXRGb3IoKCkgPT4gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKSAhPT0gbnVs
bCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3co
MiwgMCkuZG9tSWRlbnRpZmllciIsICIncjBjMSciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVj
dCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMGMxJyku
Y29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MSwgMn0nIik7CisKKyAgICAgICAgZGVidWcob3V0cHV0
KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9k
eW5hbWljLXJvd3NwYW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9k
eW5hbWljLXJvd3NwYW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uMzFiNTMzZWI3ZjI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEg
QEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlICdjZWxsIGZvciBjb2x1bW4gYW5kIHJvdycg
QVBJIHdvcmtzIGNvcnJlY3RseSBhZnRlciBkeW5hbWljIHJvd3NwYW4gY2hhbmdlcy4KKworUEFT
UzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKS5kb21JZGVudGlmaWVyID09PSAncjBj
MCcKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikgPT09IG51bGwgPT09IHRy
dWUKK1BBU1M6IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgn
cjFjMicpLnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAxfScKK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyMWMyJykuc2V0QXR0cmlidXRlKCdyb3dzcGFuJywgJzInKQorUEFTUzogdGFibGUuY2Vs
bEZvckNvbHVtbkFuZFJvdygyLCAyKS5kb21JZGVudGlmaWVyID09PSAncjFjMicKK1BBU1M6IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjFjMicpLnJvd0lu
ZGV4UmFuZ2UoKSA9PT0gJ3sxLCAyfScKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMWMyJyku
cmVtb3ZlQXR0cmlidXRlKCdyb3dzcGFuJykKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRS
b3coMiwgMikgPT09IG51bGwgPT09IHRydWUKK1BBU1M6IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjFjMicpLnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAx
fScKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMWMyJykuc2V0QXR0cmlidXRlKCdhcmlhLXJv
d3NwYW4nLCAnMicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpLmRvbUlk
ZW50aWZpZXIgPT09ICdyMWMyJworUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpID09PSAnezEsIDJ9JworCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0hlYWRlciAw
CUhlYWRlciAxCUhlYWRlciAyCitSMUMwCVIxQzEJUjFDMgorUjJDMAlSMkMxCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi5odG1sIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUwOTkzMTVhOGI3YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwKQEAgLTAsMCAr
MSw2OCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzdHlsZT4KK3RkLCB0aCB7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxh
Y2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzx0YWJsZSBpZD0idGFibGUiPgor
PHRoZWFkIGlkPSJ0aGVhZCI+CisgICAgPHRyIGlkPSJyMCI+CisgICAgICAgIDx0aCBpZD0icjBj
MCI+SGVhZGVyIDA8L3RoPgorICAgICAgICA8dGggaWQ9InIwYzEiPkhlYWRlciAxPC90aD4KKyAg
ICAgICAgPHRoIGlkPSJyMGMyIj5IZWFkZXIgMjwvdGg+CisgICAgPC90cj4KKzwvdGhlYWQ+Cis8
dGJvZHkgaWQ9InRib2R5Ij4KKyAgICA8dHIgaWQ9InIxIj4KKyAgICAgICAgPHRkIGlkPSJyMWMw
Ij5SMUMwPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyMWMxIj5SMUMxPC90ZD4KKyAgICAgICAgPHRk
IGlkPSJyMWMyIj5SMUMyPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBpZD0icjIiPgorICAgICAg
ICA8dGQgaWQ9InIyYzAiPlIyQzA8L3RkPgorICAgICAgICA8dGQgaWQ9InIyYzEiPlIyQzE8L3Rk
PgorICAgIDwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT4KKworPHNjcmlwdD4KK3ZhciBvdXRwdXQg
PSAiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgJ2NlbGwgZm9yIGNvbHVtbiBhbmQgcm93JyBB
UEkgd29ya3MgY29ycmVjdGx5IGFmdGVyIGR5bmFtaWMgcm93c3BhbiBjaGFuZ2VzLlxuXG4iOwor
CitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgdmFyIHRhYmxlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsZSIpOworICAgIG91dHB1dCArPSBleHBlY3Qo
InRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkuZG9tSWRlbnRpZmllciIsICIncjBjMCci
KTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIp
ID09PSBudWxsIiwgInRydWUiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5yb3dJbmRleFJhbmdlKCki
LCAiJ3sxLCAxfSciKTsKKworICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJuKCJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncjFjMicpLnNldEF0dHJpYnV0ZSgncm93c3BhbicsICcyJykiKTsKKyAg
ICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICBhd2FpdCB3YWl0Rm9yKCgp
ID0+IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikgIT09IG51bGwpOworICAgICAgICBv
dXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpLmRvbUlkZW50
aWZpZXIiLCAiJ3IxYzInIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjFjMicpLnJvd0luZGV4UmFuZ2Uo
KSIsICInezEsIDJ9JyIpOworCisgICAgICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJuKCJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncjFjMicpLnJlbW92ZUF0dHJpYnV0ZSgncm93c3BhbicpIik7
CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUuY2VsbEZvckNvbHVt
bkFuZFJvdygyLCAyKSA9PT0gbnVsbCIsICJ0cnVlIik7CisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjFjMicp
LnJvd0luZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOworCisgICAgICAgIG91dHB1dCArPSBldmFs
QW5kUmV0dXJuKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjFjMicpLnNldEF0dHJpYnV0ZSgn
YXJpYS1yb3dzcGFuJywgJzInKSIpOworICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikgIT09IG51bGwpOworICAgICAgICBvdXRwdXQgKz0g
ZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpLmRvbUlkZW50aWZpZXIiLCAi
J3IxYzInIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjFjMicpLnJvd0luZGV4UmFuZ2UoKSIsICInezEs
IDJ9JyIpOworCisgICAgICAgIGRlYnVnKG91dHB1dCk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0sIDApOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVz
Y2VuZGFudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uYWYwNDU0MTBkMmMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMzIEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSAnY2VsbCBmb3IgY29sdW1uIGFuZCBy
b3cnIEFQSSB3b3JrcyBjb3JyZWN0bHkgYWZ0ZXIgZHluYW1pYyBET00gY2hpbGQgY2hhbmdlcy4K
KworUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKS5kb21JZGVudGlmaWVyID09
PSAncjBjMCcKK1BBU1M6IHRhYmxlLnJvd0NvdW50ID09PSAzCitQQVNTOiB0YWJsZS5jb2x1bW5D
b3VudCA9PT0gMgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKSA9PT0gbnVs
bCA9PT0gdHJ1ZQorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rib2R5JykuYXBwZW5kQ2hpbGQo
Y3JlYXRlRm91cnRoUm93KCkpCitQQVNTOiB0YWJsZS5yb3dDb3VudCA9PT0gNAorUEFTUzogdGFi
bGUuY29sdW1uQ291bnQgPT09IDMKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwg
MykuZG9tSWRlbnRpZmllciA9PT0gJ3IzYzAnCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjMn
KS5hcHBlbmRDaGlsZChkeW5hbWljQ2VsbCkKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRS
b3coMywgMykuZG9tSWRlbnRpZmllciA9PT0gJ2R5bmFtaWMtY2VsbCcKK1BBU1M6IHRhYmxlLmNv
bHVtbkNvdW50ID09PSA0Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHluYW1pYy1jZWxsJyku
cmVtb3ZlKCkKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgNCkgPT09IG51bGwg
PT09IHRydWUKK1BBU1M6IHRhYmxlLmNvbHVtbkNvdW50ID09PSAzCitkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncjMnKS5yZW1vdmUoKQorUEFTUzogdGFibGUucm93Q291bnQgPT09IDMKK1BBU1M6
IHRhYmxlLmNvbHVtbkNvdW50ID09PSAyCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93
KDAsIDMpID09PSBudWxsID09PSB0cnVlCituZXdUYm9keS5hcHBlbmRDaGlsZChjcmVhdGVGb3Vy
dGhSb3coKSkKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZScpLmFwcGVuZENoaWxkKG5l
d1Rib2R5KQorUEFTUzogdGFibGUucm93Q291bnQgPT09IDQKK1BBU1M6IHRhYmxlLmNvbHVtbkNv
dW50ID09PSAzCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMpLmRvbUlkZW50
aWZpZXIgPT09ICdyM2MwJworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKK0hlYWRlciAwCUhlYWRlciAxCitSMUMwCVIxQzEKK1IyQzAJUjJDMQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVzY2Vu
ZGFudHMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNj
ZW5kYW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2Vh
NGJlNzk1ZTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9k
eW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKQEAgLTAsMCArMSwxMDQgQEAKKzwhRE9DVFlQ
RSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3R5
bGU+Cit0ZCwgdGggeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorCis8dGFibGUgaWQ9InRhYmxlIj4KKzx0aGVhZCBpZD0idGhlYWQi
PgorICAgIDx0ciBpZD0icjAiPgorICAgICAgICA8dGggaWQ9InIwYzAiPkhlYWRlciAwPC90aD4K
KyAgICAgICAgPHRoIGlkPSJyMGMxIj5IZWFkZXIgMTwvdGg+CisgICAgPC90cj4KKzwvdGhlYWQ+
Cis8dGJvZHkgaWQ9InRib2R5Ij4KKyAgICA8dHIgaWQ9InIxIj4KKyAgICAgICAgPHRkIGlkPSJy
MWMwIj5SMUMwPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyMWMxIj5SMUMxPC90ZD4KKyAgICA8L3Ry
PgorICAgIDx0ciBpZD0icjIiPgorICAgICAgICA8dGQgaWQ9InIyYzAiPlIyQzA8L3RkPgorICAg
ICAgICA8dGQgaWQ9InIyYzEiPlIyQzE8L3RkPgorICAgIDwvdHI+Cis8L3Rib2R5PgorPC90YWJs
ZT4KKworPHNjcmlwdD4KK3ZhciBvdXRwdXQgPSAiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUg
J2NlbGwgZm9yIGNvbHVtbiBhbmQgcm93JyBBUEkgd29ya3MgY29ycmVjdGx5IGFmdGVyIGR5bmFt
aWMgRE9NIGNoaWxkIGNoYW5nZXMuXG5cbiI7CisKK2Z1bmN0aW9uIGNyZWF0ZUZvdXJ0aFJvdygp
IHsKKyAgICBjb25zdCB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CisgICAgdHIu
aWQgPSAicjMiOworCisgICAgY29uc3QgY2VsbE9uZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InRkIik7CisgICAgY2VsbE9uZS5pZCA9ICJyM2MwIjsKKyAgICBjb25zdCBjZWxsVHdvID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICBjZWxsVHdvLmlkID0gInIzYzEiOworICAg
IGNvbnN0IGNlbGxUaHJlZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgY2Vs
bFR3by5pZCA9ICJyM2MyIjsKKworICAgIHRyLmFwcGVuZENoaWxkKGNlbGxPbmUpOworICAgIHRy
LmFwcGVuZENoaWxkKGNlbGxUd28pOworICAgIHRyLmFwcGVuZENoaWxkKGNlbGxUaHJlZSk7Cisg
ICAgcmV0dXJuIHRyOworfQorCitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7
CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdmFyIG5ld1Rib2R5ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKTsKKyAgICB2YXIgZHluYW1pY0NlbGwgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgIGR5bmFtaWNDZWxsLmlkID0gImR5bmFt
aWMtY2VsbCI7CisKKyAgICB2YXIgdGFibGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUu
Y2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKS5kb21JZGVudGlmaWVyIiwgIidyMGMwJyIpOworICAg
IG91dHB1dCArPSBleHBlY3QoInRhYmxlLnJvd0NvdW50IiwgIjMiKTsKKyAgICBvdXRwdXQgKz0g
ZXhwZWN0KCJ0YWJsZS5jb2x1bW5Db3VudCIsICIyIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKSA9PT0gbnVsbCIsICJ0cnVlIik7CisKKyAg
ICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rib2R5
JykuYXBwZW5kQ2hpbGQoY3JlYXRlRm91cnRoUm93KCkpIik7CisgICAgc2V0VGltZW91dChhc3lu
YyBmdW5jdGlvbigpIHsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJs
ZS5yb3dDb3VudCIsICI0Iik7CisgICAgICAgIC8vIFRoZSBmb3VydGggcm93IGhhcyB0aHJlZSBj
ZWxscyBpbiBpdCAodnMuIHRoZSB0d28gY2VsbHMgaW4gZXZlcnkgb3RoZXIgcm93KS4KKyAgICAg
ICAgb3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5jb2x1bW5Db3VudCIsICIzIik7
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwg
MykuZG9tSWRlbnRpZmllciIsICIncjNjMCciKTsKKworICAgICAgICAvLyBOb3cgYXBwZW5kIGEg
Y2VsbCB0byBhIHJvdy4KKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyMycpLmFwcGVuZENoaWxkKGR5bmFtaWNDZWxsKSIpOworICAgICAg
ICBhd2FpdCB3YWl0Rm9yKCgpID0+IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMywgMykpOwor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDMsIDMp
LmRvbUlkZW50aWZpZXIiLCAiJ2R5bmFtaWMtY2VsbCciKTsKKyAgICAgICAgb3V0cHV0ICs9IGF3
YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5jb2x1bW5Db3VudCIsICI0Iik7CisKKyAgICAgICAgLy8g
QW5kIHJlbW92ZSBpdC4KKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkeW5hbWljLWNlbGwnKS5yZW1vdmUoKSIpOworICAgICAgICBvdXRw
dXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgNCkg
PT09IG51bGwiLCAidHJ1ZSIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMo
InRhYmxlLmNvbHVtbkNvdW50IiwgIjMiKTsKKworICAgICAgICAvLyBSZW1vdmUgdGhlIGR5bmFt
aWNhbGx5IGFkZGVkIGZvdXJ0aCByb3cuCisgICAgICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJu
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjMnKS5yZW1vdmUoKSIpOworICAgICAgICBvdXRw
dXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLnJvd0NvdW50IiwgIjMiKTsKKyAgICAgICAg
b3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5jb2x1bW5Db3VudCIsICIyIik7Cisg
ICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUuY2VsbEZvckNvbHVtbkFu
ZFJvdygwLCAzKSA9PT0gbnVsbCIsICJ0cnVlIik7CisKKyAgICAgICAgLy8gVGhlbiBhZGQgdGhl
IGZvdXJ0aCByb3cgYmFjayB0byB0aGUgbmV3IHRib2R5LgorICAgICAgICBvdXRwdXQgKz0gZXZh
bEFuZFJldHVybigibmV3VGJvZHkuYXBwZW5kQ2hpbGQoY3JlYXRlRm91cnRoUm93KCkpIik7Cisg
ICAgICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJuKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dGFibGUnKS5hcHBlbmRDaGlsZChuZXdUYm9keSkiKTsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0
IGV4cGVjdEFzeW5jKCJ0YWJsZS5yb3dDb3VudCIsICI0Iik7CisgICAgICAgIG91dHB1dCArPSBh
d2FpdCBleHBlY3RBc3luYygidGFibGUuY29sdW1uQ291bnQiLCAiMyIpOworICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMpLmRvbUlkZW50aWZp
ZXIiLCAiJ3IzYzAnIik7CisKKyAgICAgICAgZGVidWcob3V0cHV0KTsKKyAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgfSwgMCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVj
dGVkLnR4dAppbmRleCA0ZGY0NTA2YzBkYTAuLjgxMjZjNWUzOGM0YyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi1leHBlY3RlZC50eHQKQEAg
LTU2LDcgKzU2LDcgQEAgUEFTUyBheEVsZW1lbnQucm9sZSA9PSAnQVhSb2xlOiBBWExpc3QnIGlz
IHRydWUKIAogCiBJbmxpbmUgbGlzdCBlbGVtZW50cyB3aXRoIGFuIGFyaWEgcm9sZSBzaG91bGQg
YmUgYSBsaXN0Ci1QQVNTIGF4RWxlbWVudC5yb2xlID09ICdBWFJvbGU6IEFYTGlzdCcgaXMgdHJ1
ZQorUEFTUyBheEVsZW1lbnQucm9sZSA9PSAnQVhSb2xlOiBBWExpc3QnIGlzIGZhbHNlCiAKIAog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9saXN0LWRldGVjdGlvbi5odG1sCmluZGV4IDIwMGJlNTk2NDdjNi4uM2YxZTAwMTUwZjNl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi5odG1sCkBA
IC02Myw3ICs2Myw3IEBACiA8ZGl2Pml0ZW08L2Rpdj4KIDwvdWw+CiAKLTx1bCBpZD0ibGlzdDE0
IiByb2xlPSJsaXN0IiB0ZXN0LWRlc2NyaXB0aW9uPSJJbmxpbmUgbGlzdCBlbGVtZW50cyB3aXRo
IGFuIGFyaWEgcm9sZSBzaG91bGQgYmUgYSBsaXN0IiBpcy1saXN0PSJ0cnVlIiBzdHlsZT0iZGlz
cGxheTogdGFibGU7Ij4KKzx1bCBpZD0ibGlzdDE0IiByb2xlPSJsaXN0IiB0ZXN0LWRlc2NyaXB0
aW9uPSJJbmxpbmUgbGlzdCBlbGVtZW50cyB3aXRoIGFuIGFyaWEgcm9sZSBzaG91bGQgYmUgYSBs
aXN0IiBpcy1saXN0PSJmYWxzZSIgc3R5bGU9ImRpc3BsYXk6IHRhYmxlOyI+CiAgIDxsaSByb2xl
PSJsaXN0aXRlbSIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsiPkl0ZW0gMTwvbGk+CiAg
IDxsaSByb2xlPSJsaXN0aXRlbSIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsiPkl0ZW0g
MjwvbGk+CiAgIDxsaSByb2xlPSJsaXN0aXRlbSIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9j
azsiPkl0ZW0gMzwvbGk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rh
YmxlLWluY29ycmVjdC1jb2xzcGFuLWNlbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4cGVjdGVkLnR4dAppbmRl
eCAxYmRlMWJhOTAwZDEuLmY3NGVkNDVmMzg2NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWluY29ycmVjdC1jb2xzcGFuLWNlbGwt
ZXhwZWN0ZWQudHh0CkBAIC01LDE3ICs1LDM1IEBAIFRoaXMgdGVzdHMgdGhlIHJvd1JhbmdlIGFu
ZCBjb2x1bW5SYW5nZSBhdHRyaWJ1dGVzIG9mIHRhYmxlIGNlbGxzIGluIGEgdGFibGUgd2l0CiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotVGFibGU6IFJvd3M6IDIsIENvbHVtbnM6IDMK
K1RhYmxlOiBSb3dzOiAyLCBDb2x1bW5zOiA2CiBbVGFibGUgY2VsbCBhdCByb3c6IDAsIGNvbHVt
bjogMF0gUm93IHJhbmdlOiB7MCwgMX0sIENvbHVtbiByYW5nZTogezAsIDF9CiAJUEFTU0VEIENl
bGwgaXMgc2FtZSBjZWxsIGF0ICgwLCAwKQotW1RhYmxlIGNlbGwgYXQgcm93OiAxLCBjb2x1bW46
IDBdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6IHswLCAyfQorW1RhYmxlIGNlbGwg
YXQgcm93OiAxLCBjb2x1bW46IDBdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6IHsw
LCA0fQogCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMCkKIAlQQVNTRUQgQ2VsbCBp
cyBzYW1lIGNlbGwgYXQgKDEsIDEpCi1bVGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogMV0g
Um93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezAsIDJ9CisJUEFTU0VEIENlbGwgaXMg
c2FtZSBjZWxsIGF0ICgxLCAyKQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMykK
K1tUYWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1uOiAxXSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29s
dW1uIHJhbmdlOiB7MCwgNH0KKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDApCisJ
UEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAxKQorCVBBU1NFRCBDZWxsIGlzIHNhbWUg
Y2VsbCBhdCAoMSwgMikKKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDMpCitbVGFi
bGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogMl0gUm93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiBy
YW5nZTogezAsIDR9CisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAwKQorCVBBU1NF
RCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMSkKKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwg
YXQgKDEsIDIpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAzKQorW1RhYmxlIGNl
bGwgYXQgcm93OiAxLCBjb2x1bW46IDNdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6
IHswLCA0fQogCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMCkKIAlQQVNTRUQgQ2Vs
bCBpcyBzYW1lIGNlbGwgYXQgKDEsIDEpCi1bVGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjog
Ml0gUm93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezIsIDF9CiAJUEFTU0VEIENlbGwg
aXMgc2FtZSBjZWxsIGF0ICgxLCAyKQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwg
MykKK1tUYWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1uOiA0XSBSb3cgcmFuZ2U6IHsxLCAxfSwg
Q29sdW1uIHJhbmdlOiB7NCwgMn0KKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDQp
CisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCA1KQorW1RhYmxlIGNlbGwgYXQgcm93
OiAxLCBjb2x1bW46IDVdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6IHs0LCAyfQor
CVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgNCkKKwlQQVNTRUQgQ2VsbCBpcyBzYW1l
IGNlbGwgYXQgKDEsIDUpCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtbXVs
dGlwbGUtdGJvZGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rh
YmxlLW11bHRpcGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDJhZWQzNjY1YzFhZC4uNDgy
YjVlZjU4OTk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLW11
bHRpcGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvdGFibGUtbXVsdGlwbGUtdGJvZGllcy1leHBlY3RlZC50eHQKQEAgLTEwMTgsNyArMTAxOCw3
IEBAIEFYRWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9y
OiAobnVsbCkKIEFYUm93SW5kZXhSYW5nZTogTlNSYW5nZTogezEsIDF9CiBBWENvbHVtbkluZGV4
UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkg
b2Ygc2l6ZSAwPgorQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgog
QVhSb3dIZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhBUklBQ29sdW1uSW5k
ZXg6IC0xCiBBWEFSSUFSb3dJbmRleDogLTEKQEAgLTExMzgsNyArMTEzOCw3IEBAIEFYRWRpdGFi
bGVBbmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFY
Um93SW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6IE5TUmFu
Z2U6IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgor
QVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJV
SUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhBUklBQ29sdW1uSW5kZXg6IC0xCiBBWEFS
SUFSb3dJbmRleDogLTEKQEAgLTEyNTgsNyArMTI1OCw3IEBAIEFYRWRpdGFibGVBbmNlc3Rvcjog
KG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93SW5kZXhSYW5n
ZTogTlNSYW5nZTogezMsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQot
QVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDb2x1bW5IZWFk
ZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVsZW1lbnRzOiA8
YXJyYXkgb2Ygc2l6ZSAxPgogQVhBUklBQ29sdW1uSW5kZXg6IC0xCiBBWEFSSUFSb3dJbmRleDog
LTEKQEAgLTEzNzgsNyArMTM3OCw3IEBAIEFYRWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWEhp
Z2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93SW5kZXhSYW5nZTogTlNSYW5nZTog
ezQsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQotQVhDb2x1bW5IZWFk
ZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRz
OiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6
ZSAxPgogQVhBUklBQ29sdW1uSW5kZXg6IC0xCiBBWEFSSUFSb3dJbmRleDogLTEKQEAgLTE0OTgs
NyArMTQ5OCw3IEBAIEFYRWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJs
ZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93SW5kZXhSYW5nZTogTlNSYW5nZTogezUsIDF9CiBBWENv
bHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRz
OiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Yg
c2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhBUklB
Q29sdW1uSW5kZXg6IC0xCiBBWEFSSUFSb3dJbmRleDogLTEKQEAgLTE2MTgsNyArMTYxOCw3IEBA
IEFYRWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAo
bnVsbCkKIEFYUm93SW5kZXhSYW5nZTogTlNSYW5nZTogezYsIDF9CiBBWENvbHVtbkluZGV4UmFu
Z2U6IE5TUmFuZ2U6IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Yg
c2l6ZSAwPgorQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhS
b3dIZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhBUklBQ29sdW1uSW5kZXg6
IC0xCiBBWEFSSUFSb3dJbmRleDogLTEKQEAgLTE3MzgsNyArMTczOCw3IEBAIEFYRWRpdGFibGVB
bmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93
SW5kZXhSYW5nZTogTlNSYW5nZTogezcsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6
IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhD
b2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVs
ZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhBUklBQ29sdW1uSW5kZXg6IC0xCiBBWEFSSUFS
b3dJbmRleDogLTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUt
dGhlYWQtdGZvb3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJs
ZS10aGVhZC10Zm9vdC1leHBlY3RlZC50eHQKaW5kZXggZTQ0ODNmNDJiZTIwLi41ZmYxN2YyMjRj
OGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtdGhlYWQtdGZv
b3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtdGhl
YWQtdGZvb3QtZXhwZWN0ZWQudHh0CkBAIC03MjIsNyArNzIyLDcgQEAgQVhFZGl0YWJsZUFuY2Vz
dG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRl
eFJhbmdlOiBOU1JhbmdlOiB7MSwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIs
IDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVt
bkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVu
dHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0lu
ZGV4OiAtMQpAQCAtODQyLDcgKzg0Miw3IEBAIEFYRWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBB
WEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93SW5kZXhSYW5nZTogTlNSYW5n
ZTogezIsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQotQVhDb2x1bW5I
ZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDb2x1bW5IZWFkZXJVSUVsZW1l
bnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Yg
c2l6ZSAxPgogQVhBUklBQ29sdW1uSW5kZXg6IC0xCiBBWEFSSUFSb3dJbmRleDogLTEKQEAgLTk2
Miw3ICs5NjIsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhIaWdoZXN0RWRpdGFi
bGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6IHszLCAxfQogQVhD
b2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVhZGVyVUlFbGVtZW50
czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9m
IHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYQVJJ
QUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0xCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9nZW5lcmF0ZWQtY29udGVudC13aXRoLWRp
c3BsYXktdGFibGUtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvZ2VuZXJhdGVkLWNvbnRlbnQtd2l0aC1kaXNwbGF5LXRhYmxlLWNyYXNo
LWV4cGVjdGVkLnR4dAppbmRleCBmNTE4ODA0ZWEyNDMuLjdjYmE0MTc2NjcwOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZ2VuZXJhdGVkLWNvbnRl
bnQtd2l0aC1kaXNwbGF5LXRhYmxlLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9nZW5lcmF0ZWQtY29udGVudC13aXRoLWRpc3Bs
YXktdGFibGUtY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC03LDcgKzcsOCBAQCBBWFJvbGU6IEFYV2Vi
QXJlYSBBWFZhbHVlOgogICAgICAgICBBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiBmb28K
ICAgICAgICAgQVhSb2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1ZTogIQogICAgIEFYUm9sZTogQVhT
dGF0aWNUZXh0IEFYVmFsdWU6IGJhcgotICAgIEFYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6
ICEKKyAgICBBWFJvbGU6IEFYR3JvdXAgQVhWYWx1ZToKKyAgICAgICAgQVhSb2xlOiBBWFN0YXRp
Y1RleHQgQVhWYWx1ZTogIQogICAgIEFYUm9sZTogQVhHcm91cCBBWFZhbHVlOgogICAgICAgICBB
WFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiBiYXoKICAgICBBWFJvbGU6IEFYR3JvdXAgQVhW
YWx1ZToK
</data>
<flag name="commit-queue"
          id="494295"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466735</attachid>
            <date>2023-06-17 10:10:25 -0700</date>
            <delta_ts>2023-06-17 10:37:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-258223-20230617101024.patch</filename>
            <type>text/plain</type>
            <size>138557</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA5NzQzNjI5OWYxZGUzMTY3YjIzNjY2YmIyODE0YTE2NDZlNGJhMjVhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCAxNiBKdW4gMjAyMyAxNDo1MToxMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBN
b3ZlCiBOU0FjY2Vzc2liaWxpdHlDZWxsRm9yQ29sdW1uQW5kUm93UGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBBUEkgb2ZmIHRoZQogbWFpbi10aHJlYWQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI1ODIyMwogcmRhcjovL3Byb2JsZW0vMTEwOTE5ODgzCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCldpdGggdGhpcyBwYXRjaCwgd2UgcmVwbGFjZSB0aGUgZXhpc3Rp
bmcgcmVuZGVyLXRyZWUtYmFzZWQgY29sdW1uIGFuZApyb3cgY2VsbCBzbG90IGRldGVybWluYXRp
b24gYWxnb3JpdGhtIHdpdGggYSBjdXN0b20gb25lIGJhc2VkIG9uOgoKaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjZm9ybWluZy1hLXRhYmxlCgpXZSB1
c2UgdGhpcyBmb3JtaW5nLWEtdGFibGUgYWxnb3JpdGhtIHRvIGJ1aWxkIGEgbmV3IGRhdGEgc3Ry
dWN0dXJlCmluZGljYXRpbmcgdGhlIGNlbGwgQVhJRCBvY2N1cGllZCBieSBlYWNoICJzbG90IiBp
biB0aGUgdGFibGU6IGBBY2Nlc3NpYmlsaXR5VGFibGU6Om1fc2xvdEdyaWRgCgpUaGlzIGhhcyB0
d28gYmVuZWZpdHM6CiAgMS4gV2UgY2FuIChhbmQgZG8pIGNvcHkgdGhpcyBkYXRhIHN0cnVjdHVy
ZSB0byB0aGUgc2Vjb25kYXJ5IHRocmVhZCwKICAgICBhbmQgdXNlIGl0IHRvIHBlcmZvcm0gYEFY
SXNvbGF0ZWRPYmplY3Q6OmNlbGxGb3JDb2x1bW5BbmRSb3dgCiAgICAgd2l0aG91dCByZWx5aW5n
IG9uIHRoZSBtYWluLXRocmVhZC4KCiAgMi4gVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgYWxn
b3JpdGhtIGRvZXMgbm90IHJlbHkgb24gYW55IHNvcnQgb2YKICAgICByZW5kZXIgdHJlZSBzdHJ1
Y3R1cmUgZm9yIGNvcnJlY3RuZXNzLiBUaGlzIGlzIGtleSBiZWNhdXNlIGF1dGhvcnMKICAgICBl
eHBlY3QgdG8gYmUgYWJsZSB0byBwdXQgYW55IENTUyBgZGlzcGxheWAgdmFsdWUgKGZsZXgsIGNv
bnRlbnRzLCBibG9jaywgZXRjKQogICAgIG9uIHJvd3MsIGNlbGxzLCBhbmQgdGFibGVzLCBhbmQg
cHJlc2VydmUgYWNjZXNzaWJpbGl0eSBzZW1hbnRpY3MuCiAgICAgVGhpcyBkaWRuJ3Qgd29yayBi
ZWZvcmUgdGhpcyBwYXRjaCBiZWNhdXNlIGFueSBvZiB0aGVzZSBkaXNwbGF5CiAgICAgdmFsdWVz
IHByZXZlbnQgUmVuZGVyVGFibGUsIFJlbmRlclRhYmxlUm93LCBhbmQgUmVuZGVyVGFibGVDZWxs
cwogICAgIGZyb20gYmVpbmcgZ2VuZXJhdGVkLCB3aGljaCB0aGUgUmVuZGVyVGFibGUgY2VsbC1m
b3ItY29sdW1uLWFuZC1yb3cKICAgICBtZWNoYW5pc20gcmVsaWVzIG9uLgoKVGhpcyBwYXRjaCBk
b2VzIG5vdCBmdWxseSBmaXggbm9uLXN0YW5kYXJkLWRpc3BsYXkgdmFsdWUgdGFibGVzIGR1ZSB0
bwppc3N1ZXMgd2l0aCBwYXJlbnQtY2hpbGQgbWlzbWF0Y2hlcyBpbiB0YWJsZSBoaWVyYXJjaGll
cyB3aXRoIHRoZXNlCmRpc3BsYXkgdmFsdWVzLiBUaGF0IHdpbGwgYmUgZml4ZWQgaW4gYSBsYXRl
ciBwYXRjaC4KClRoaXMgcGF0Y2ggYWxzbyBmZWF0dXJlcyBzZXZlcmFsIG90aGVyIGltcHJvdmVt
ZW50cy4KCiAgMS4gQVhQcm9wZXJ0eU5hbWU6OlJvd0NvdW50IGFuZCBBWFByb3BlcnR5TmFtZTo6
Q29sdW1uQ291bnQgd2VyZQogICAgIHBvaW50bGVzc2x5IGNhY2hlZCByYXRoZXIgdGhhbiBzaW1w
bHkgY291bnRpbmcgQVhQcm9wZXJ0eU5hbWU6OlJvd3MKICAgICBhbmQgQVhQcm9wZXJ0eU5hbWU6
OkNvbHVtbnMgKGFzIHRoZSBsaXZlIHRyZWUgaW1wbGVtZW50YXRpb24gZG9lcykuCiAgICAgVGhl
c2UgcHJvcGVydGllcyBhcmUgcmVtb3ZlZCwgcmVkdWNpbmcgbWVtb3J5IGFuZCBDUFUgY29uc3Vt
cHRpb24uCgogIDIuIEZpeGVkIGEgYnVnIHdoZXJlIHN0YWxlIGRhdGEgd2FzIG5vdCB1cGRhdGVk
IGFmdGVyIGR5bmFtaWMKICAgICBhcmlhLWNvbHNwYW4gY2hhbmdlcy4KCiAgMy4gRml4ZWQgYSBi
dWcgd2hlcmUgdGFibGUncyBjb2x1bW5zIHdlcmUgbm90IHVwZGF0ZWQgYWZ0ZXIgaXRzCiAgICAg
cm93cyBjaGlsZHJlbiBjaGFuZ2VkICh3aGljaCBjYW4gZWZmZWN0IGNvbHVtbnMpLgoKICA0LiBG
aXhlZCBhIHBlcmZvcm1hbmNlIGlzc3VlIHdoZXJlIGBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpp
c1RhYmxlQ2VsbGAsCiAgICAgdXNlZCB0byB0eXBlY2hlY2sgaXM8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbD4sIGRpZCBhIGBwYXJlbnRUYWJsZSgpYAogICAgIHRyYXZlcnNhbC4gVGhpcyBpcyBjb25m
dXNpbmcgYW5kIHZlcnkgbm9uLXBlcmZvcm1hbnQuIEEgbmV3CiAgICAgYGlzRXhwb3NlZFRhYmxl
Q2VsbGAgZnVuY3Rpb24gaXMgYWRkZWQgbWFraW5nIHRoaXMgaW50ZW50IG1vcmUKICAgICBjbGVh
ciwgYW5kIGltcHJvdmluZyBwZXJmb3JtYW5jZSBpbiB0aGUgYXJlYXMgdGhhdCBkb24ndCBuZWVk
IHRoaXMKICAgICB0cmF2ZXJzYWwuCgogIDUuIEFsbG93IGNyZWF0aW5nIEFjY2Vzc2liaWxpdHlU
YWJsZSwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCwgYW5kCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxl
Um93IHdpdGggbm8gcmVuZGVyZXIsIHdoaWNoIGlzIGNydWNpYWwgZm9yCiAgICAgZGlzcGxheTpj
b250ZW50cyBzdXBwb3J0LgoKVGhyZWUgdGVzdHMgYXJlIGFkZGVkIHRvIGVuc3VyZSB0aGUgc2xv
dC1ncmlkIGlzIHVwZGF0ZWQgYWZ0ZXIgZHluYW1pYyBjaGFuZ2VzOgogIC0gYWNjZXNzaWJpbGl0
eS9keW5hbWljLWNvbHNwYW4uaHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4u
aHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKCiog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0
bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhw
ZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3Rh
YmxlLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29s
c3Bhbi5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93
c3Bhbi1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy1yb3dzcGFuLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy10YWJsZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy5odG1sOiBBZGRlZC4KKiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dDoKKiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLmh0bWw6CiogTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4cGVjdGVkLnR4
dDoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLW11bHRpcGxlLXRib2RpZXMtZXhw
ZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtdGhlYWQtdGZvb3Qt
ZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2dl
bmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQ6Ciog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHA6CihXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
OgooV2ViQ29yZTo6bm9kZUhhc0dyaWRSb2xlKToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRh
YmxlKToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRhYmxlUm93KToKKFdlYkNvcmU6OmlzQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjcmVhdGVPYmpl
Y3RGcm9tUmVuZGVyZXIpOgooV2ViQ29yZTo6Y3JlYXRlRnJvbU5vZGUpOgooV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6aGFuZGxlQ2hpbGRyZW5DaGFuZ2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OmhhbmRsZVJlY29tcHV0ZVNsb3RHcmlkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Omhh
bmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2UpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFu
ZGxlQXR0cmlidXRlQ2hhbmdlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZl
cnJlZENhY2hlVXBkYXRlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUlzb2xhdGVk
VHJlZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpkZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdy
aWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgooV2Vi
Q29yZTo6bm9kZUhhc0dyaWRSb2xlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmRlZmVyUmVj
b21wdXRlVGFibGVTbG90R3JpZCk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNv
bXB1dGVTbG90R3JpZCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWQuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJs
ZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFk
ZFJvd0Rlc2NlbmRhbnQpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlk
OjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpheFJvd1NwYW5XaXRoUm93SW5kZXggY29uc3QpOiBEZWxldGVk
LgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSBj
b25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVk
Q2VsbHMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2xvdEdyaWQpOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6QWNjZXNzaWJpbGl0eVRhYmxlKToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6
aXNEYXRhVGFibGUgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRl
SXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6cmVjb21wdXRlSXNFeHBvc2FibGUpOgooV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVRhYmxlOjpzbG90R3JpZCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnNl
dFNsb3RHcmlkRGlydHkpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNoaWxk
cmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZTo6ZW5zdXJlUm93QW5kQ29sdW1uKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNF
eHBvc2FibGUgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjph
ZGRUYWJsZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6
OmFkZENoaWxkcmVuRnJvbVNlY3Rpb24pOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmlzRXhwb3NlZFRhYmxlQ2VsbCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CihXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlSGVhZGVyQ2VsbCBjb25zdCk6CihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRSb3cgY29uc3QpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OnRpdGxlVUlFbGVtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uSW5kZXggY29uc3QpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93U3BhbiBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpjb2xTcGFuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGw6OmlzVGFibGVDZWxsIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmF4Q29sdW1uU3BhbiBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd1NwYW4gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oOgooV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6c2V0Um93SW5kZXgpOgooV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6c2V0Q29sdW1uSW5kZXgpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6Y29sdW1uSGVhZGVyKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
OjpoZWFkZXJPYmplY3RGb3JTZWN0aW9uKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oOgoqIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6QWNjZXNzaWJpbGl0eVRhYmxlUm93KToKKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6
aGVhZGVyT2JqZWN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZVJvdy5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcDoKKiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGFibGVDZWxsUGFyZW50XSk6
CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlIZWFkZXJFbGVt
ZW50c10pOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMpOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y2VsbEZvckNvbHVtbkFuZFJv
dyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc1RhYmxlQ2VsbCBjb25zdCk6CiogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyk6
CihXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZUFuZERlcGVuZGVudFByb3BlcnRp
ZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgooLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6Ci0tLQogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAgICAgIHwgICA0ICsKIC4uLi9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8IDEwOSArKysrLQogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDEyICstCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICAgfCAgODIgLS0tLQogLi4u
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmggICAgIHwgICA3ICstCiAuLi4v
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgICAgICAgICAgICAgfCAxMDcgLS0tLS0KIC4u
Li9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCB8ICAgNiAtCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAgICAgfCAgIDIgKy0KIC4uLi9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCAgICAgICB8ICAgMiArCiAuLi4vQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oICAgICAgICAgICAgfCAgIDEgKwogLi4uL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCAgICAgIHwgNDIwICsrKysrKysrKysrKy0t
LS0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggICAgICAgIHwgIDM0
ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCAgfCAxNDkg
KysrLS0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oICAgIHwg
IDIyICstCiAuLi4vQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcCAgICAgICAgICAgICAgfCAx
MjMgKy0tLS0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oICB8
ICAgMyAtCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwICAgfCAg
MjggKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oICAgICB8ICAg
MiArCiAuLi4vYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwICAgfCAgIDIg
Ky0KIC4uLi9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVDZWxsQXRzcGkuY3BwICAgICB8ICAgMiAr
LQogLi4uL2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSAgIHwgICA0ICst
CiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwICAgICAgICAgfCAgMzYgKy0K
IC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oICAgICAgICAgICB8ICAxMSArLQog
Li4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgICAgICAgICAgIHwgIDIzICstCiAu
Li4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAgIDcgKy0KIC4u
Li9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gICB8ICAgNCArLQogLi4u
L2FyaWEtdGFibGUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQgICAgICAgIHwgICAyICstCiAuLi4v
YWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMuaHRtbCAgfCAgIDggKy0KIC4uLi9j
dXN0b20tZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQudHh0ICAgICAgICB8ICAgNCArLQogLi4uL2Fj
Y2Vzc2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLmh0bWwgIHwgICA0ICstCiAuLi4vZHlu
YW1pYy1jb2xzcGFuLWV4cGVjdGVkLnR4dCAgICAgICAgICAgICAgfCAgMjIgKwogLi4uL2FjY2Vz
c2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLmh0bWwgICAgICAgIHwgIDY5ICsrKwogLi4uL2R5bmFt
aWMtcm93c3Bhbi1leHBlY3RlZC50eHQgICAgICAgICAgICAgIHwgIDIxICsKIC4uLi9hY2Nlc3Np
YmlsaXR5L2R5bmFtaWMtcm93c3Bhbi5odG1sICAgICAgICB8ICA2OCArKysKIC4uLi9keW5hbWlj
LXRhYmxlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dCAgICB8ICAzMyArKwogLi4uL2R5bmFtaWMt
dGFibGUtZGVzY2VuZGFudHMuaHRtbCAgICAgICAgICAgIHwgMTA0ICsrKysrCiAuLi4vYWNjZXNz
aWJpbGl0eS9saXN0LWRldGVjdGlvbi1leHBlY3RlZC50eHQgfCAgIDIgKy0KIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24uaHRtbCB8ICAgMiArLQogLi4uL3RhYmxlLWlu
Y29ycmVjdC1jb2xzcGFuLWNlbGwtZXhwZWN0ZWQudHh0IHwgIDI2ICstCiAuLi4vdGFibGUtbXVs
dGlwbGUtdGJvZGllcy1leHBlY3RlZC50eHQgICAgICAgfCAgMTQgKy0KIC4uLi90YWJsZS10aGVh
ZC10Zm9vdC1leHBlY3RlZC50eHQgICAgICAgICAgICB8ICAgNiArLQogLi4udGVudC13aXRoLWRp
c3BsYXktdGFibGUtY3Jhc2gtZXhwZWN0ZWQudHh0IHwgICAzICstCiA0MiBmaWxlcyBjaGFuZ2Vk
LCA5MzYgaW5zZXJ0aW9ucygrKSwgNjU0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLWV4cGVjdGVkLnR4dAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xz
cGFuLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5
bmFtaWMtcm93c3Bhbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLWV4cGVj
dGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy10YWJsZS1kZXNjZW5kYW50cy5odG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYTG9nZ2VyLmNwcAppbmRleCAxZTQ3YTU1MjdjMWYuLmY0N2ViZjUyZGYzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKQEAgLTIwMyw2ICsyMDMsNyBAQCB2
b2lkIEFYTG9nZ2VyOjpsb2coY29uc3QgU3RyaW5nJiBjb2xsZWN0aW9uTmFtZSwgY29uc3QgQVhP
YmplY3RDYWNoZTo6RGVmZXJyZWRDbwogICAgICAgICBbJnNpemVdIChjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPE5vZGUqLCBOb2RlKj4+JiB0eXBlZENvbGxlY3Rpb24pIHsgc2l6ZSA9IHR5cGVkQ29s
bGVjdGlvbi5zaXplKCk7IH0sCiAgICAgICAgIFsmc2l6ZV0gKGNvbnN0IFdlYWtIYXNoU2V0PEVs
ZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4mIHR5cGVkQ29sbGVjdGlvbikg
eyBzaXplID0gdHlwZWRDb2xsZWN0aW9uLmNvbXB1dGVTaXplKCk7IH0sCiAgICAgICAgIFsmc2l6
ZV0gKGNvbnN0IFdlYWtIYXNoU2V0PEhUTUxUYWJsZUVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2
ZW50VGFyZ2V0RGF0YT4mIHR5cGVkQ29sbGVjdGlvbikgeyBzaXplID0gdHlwZWRDb2xsZWN0aW9u
LmNvbXB1dGVTaXplKCk7IH0sCisgICAgICAgIFsmc2l6ZV0gKGNvbnN0IFdlYWtIYXNoU2V0PEFj
Y2Vzc2liaWxpdHlUYWJsZT4mIHR5cGVkQ29sbGVjdGlvbikgeyBzaXplID0gdHlwZWRDb2xsZWN0
aW9uLmNvbXB1dGVTaXplKCk7IH0sCiAgICAgICAgIFtdIChhdXRvJikgewogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC01NDQsNiArNTQ1
LDkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiBzdHJlYW0sIEFYT2JqZWN0
Q2FjaGU6OkFYTm90aWZpY2F0aW9uIG5vdGlmaWMKICAgICBjYXNlIEFYT2JqZWN0Q2FjaGU6OkFY
Tm90aWZpY2F0aW9uOjpBWFNldFNpemVDaGFuZ2VkOgogICAgICAgICBzdHJlYW0gPDwgIkFYU2V0
U2l6ZUNoYW5nZWQiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFYT2JqZWN0Q2FjaGU6OkFY
Tm90aWZpY2F0aW9uOjpBWFNsb3RHcmlkQ2hhbmdlZDoKKyAgICAgICAgc3RyZWFtIDw8ICJBWFNs
b3RHcmlkQ2hhbmdlZCI7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhPYmplY3RDYWNoZTo6
QVhOb3RpZmljYXRpb246OkFYVGFibGVIZWFkZXJzQ2hhbmdlZDoKICAgICAgICAgc3RyZWFtIDw8
ICJBWFRhYmxlSGVhZGVyc0NoYW5nZWQiOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGYyZTg3YzMyZmE1NS4u
ZDUyNWIwNjM0MzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAKQEAgLTg5LDYgKzg5LDcgQEAKICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVQ
YXJ0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0LmgiCkBAIC01NzYsNiAr
NTc3LDExIEBAIGJvb2wgbm9kZUhhc1JvbGUoTm9kZSogbm9kZSwgU3RyaW5nVmlldyByb2xlKQog
ICAgIHJldHVybiBTcGFjZVNwbGl0U3RyaW5nOjpzcGFjZVNwbGl0U3RyaW5nQ29udGFpbnNWYWx1
ZShyb2xlVmFsdWUsIHJvbGUsIFNwYWNlU3BsaXRTdHJpbmc6OlNob3VsZEZvbGRDYXNlOjpZZXMp
OwogfQogCitib29sIG5vZGVIYXNHcmlkUm9sZShOb2RlKiBub2RlKQoreworICAgIHJldHVybiBu
b2RlSGFzUm9sZShub2RlLCAiZ3JpZCJfcykgfHwgbm9kZUhhc1JvbGUobm9kZSwgInRhYmxlIl9z
KSB8fCBub2RlSGFzUm9sZShub2RlLCAidHJlZWdyaWQiX3MpOworfQorCiBzdGF0aWMgYm9vbCBp
c1NpbXBsZUltYWdlKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiB7CiAgICAgaWYgKCFp
czxSZW5kZXJJbWFnZT4ocmVuZGVyZXIpKQpAQCAtNjE4LDYgKzYyNCwyMSBAQCBzdGF0aWMgYm9v
bCBpc0FjY2Vzc2liaWxpdHlUcmVlSXRlbShOb2RlKiBub2RlKQogICAgIHJldHVybiBub2RlSGFz
Um9sZShub2RlLCAidHJlZWl0ZW0iX3MpOwogfQogCitzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxp
dHlUYWJsZShOb2RlKiBub2RlKQoreworICAgIHJldHVybiBpczxIVE1MVGFibGVFbGVtZW50Pihu
b2RlKTsKK30KKworc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFibGVSb3coTm9kZSogbm9k
ZSkKK3sKKyAgICByZXR1cm4gaXM8SFRNTFRhYmxlUm93RWxlbWVudD4obm9kZSk7Cit9CisKK3N0
YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChOb2RlKiBub2RlKQoreworICAgIHJl
dHVybiBpczxIVE1MVGFibGVDZWxsRWxlbWVudD4obm9kZSk7Cit9CisKIFJlZjxBY2Nlc3NpYmls
aXR5T2JqZWN0PiBBWE9iamVjdENhY2hlOjpjcmVhdGVPYmplY3RGcm9tUmVuZGVyZXIoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKIHsKICAgICAvLyBGSVhNRTogSG93IGNvdWxkIHJlbmRlcmVyLT5u
b2RlKCkgZXZlciBub3QgYmUgYW4gRWxlbWVudD8KQEAgLTYyNyw3ICs2NDgsNyBAQCBSZWY8QWNj
ZXNzaWJpbGl0eU9iamVjdD4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlT2JqZWN0RnJvbVJlbmRlcmVy
KFJlbmRlck9iamVjdCogcgogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUxpc3Q6OmNyZWF0
ZShyZW5kZXJlcik7CiAKICAgICAvLyBhcmlhIHRhYmxlcwotICAgIGlmIChub2RlSGFzUm9sZShu
b2RlLCAiZ3JpZCJfcykgfHwgbm9kZUhhc1JvbGUobm9kZSwgInRyZWVncmlkIl9zKSB8fCBub2Rl
SGFzUm9sZShub2RlLCAidGFibGUiX3MpKQorICAgIGlmIChub2RlSGFzR3JpZFJvbGUobm9kZSkp
CiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmNyZWF0ZShyZW5kZXJlcik7
CiAgICAgaWYgKG5vZGVIYXNSb2xlKG5vZGUsICJyb3ciX3MpKQogICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkUm93OjpjcmVhdGUocmVuZGVyZXIpOwpAQCAtNjcyLDExICs2OTMs
MTEgQEAgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZU9iamVj
dEZyb21SZW5kZXJlcihSZW5kZXJPYmplY3QqIHIKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlNZW51TGlzdDo6Y3JlYXRlKGRvd25jYXN0PFJlbmRlck1lbnVMaXN0PihyZW5kZXJlcikpOwog
CiAgICAgLy8gc3RhbmRhcmQgdGFibGVzCi0gICAgaWYgKGlzPFJlbmRlclRhYmxlPihyZW5kZXJl
cikpCisgICAgaWYgKGlzPFJlbmRlclRhYmxlPihyZW5kZXJlcikgfHwgaXNBY2Nlc3NpYmlsaXR5
VGFibGUobm9kZSkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGFibGU6OmNyZWF0ZShy
ZW5kZXJlcik7Ci0gICAgaWYgKGlzPFJlbmRlclRhYmxlUm93PihyZW5kZXJlcikpCisgICAgaWYg
KGlzPFJlbmRlclRhYmxlUm93PihyZW5kZXJlcikgfHwgaXNBY2Nlc3NpYmlsaXR5VGFibGVSb3co
bm9kZSkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZShyZW5k
ZXJlcik7Ci0gICAgaWYgKGlzPFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIpKQorICAgIGlmICgo
aXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcikgJiYgIXJlbmRlcmVyLT5pc0Fub255bW91cygp
KSB8fCBpc0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwobm9kZSkpCiAgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpjcmVhdGUocmVuZGVyZXIpOwogCiAgICAgLy8gcHJvZ3Jlc3Mg
YmFyCkBAIC03MDIsNiArNzIzLDEyIEBAIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4g
Y3JlYXRlRnJvbU5vZGUoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoaXNBY2Nlc3NpYmlsaXR5TGlz
dCgmbm9kZSkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TGlzdDo6Y3JlYXRlKG5vZGUp
OworICAgIGlmIChpc0FjY2Vzc2liaWxpdHlUYWJsZSgmbm9kZSkpCisgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5VGFibGU6OmNyZWF0ZShub2RlKTsKKyAgICBpZiAoaXNBY2Nlc3NpYmlsaXR5
VGFibGVSb3coJm5vZGUpKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRhYmxlUm93Ojpj
cmVhdGUobm9kZSk7CisgICAgaWYgKGlzQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCgmbm9kZSkpCisg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjcmVhdGUobm9kZSk7CiAgICAg
aWYgKGlzQWNjZXNzaWJpbGl0eVRyZWUoJm5vZGUpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVRyZWU6OmNyZWF0ZShub2RlKTsKICAgICBpZiAoaXNBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0o
Jm5vZGUpKQpAQCAtMTE2NCw2ICsxMTkxLDExIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxl
Q2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkKICAgICB9IGVsc2Ug
aWYgKGlzPEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwPihvYmplY3QpKSB7CiAgICAgICAgIGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwPihvYmplY3QpLmhhbmRsZUNoaWxkcmVu
Q2hhbmdlZCgpOwogICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChhdXRvKiBheFRhYmxl
ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4ob2JqZWN0KSkKKyAgICAgICAg
ZGVmZXJSZWNvbXB1dGVUYWJsZVNsb3RHcmlkKCpheFRhYmxlKTsKKyAgICBlbHNlIGlmIChhdXRv
KiBheFJvdyA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KG9iamVjdCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHBhcmVudFRhYmxlID0gYXhSb3ctPnBhcmVudFRhYmxlKCkp
CisgICAgICAgICAgICBkZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdyaWQoKnBhcmVudFRhYmxlKTsK
ICAgICB9CiAKICAgICBpZiAoIW9iamVjdC5ub2RlKCkgJiYgIW9iamVjdC5yZW5kZXJlcigpKQpA
QCAtMTIwNyw2ICsxMjM5LDE0IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQ2hpbGRyZW5D
aGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkKICAgICBwb3N0UGxhdGZvcm1Ob3Rp
ZmljYXRpb24oJm9iamVjdCwgQVhDaGlsZHJlbkNoYW5nZWQpOwogfQogCit2b2lkIEFYT2JqZWN0
Q2FjaGU6OmhhbmRsZVJlY29tcHV0ZVNsb3RHcmlkKEFjY2Vzc2liaWxpdHlUYWJsZSYgYXhUYWJs
ZSkKK3sKKyAgICBheFRhYmxlLnNldFNsb3RHcmlkRGlydHkoKTsKKyNpZiBFTkFCTEUoQUNDRVNT
SUJJTElUWV9JU09MQVRFRF9UUkVFKQorICAgIHVwZGF0ZUlzb2xhdGVkVHJlZShheFRhYmxlLCBB
WFNsb3RHcmlkQ2hhbmdlZCk7CisjZW5kaWYKK30KKwogdm9pZCBBWE9iamVjdENhY2hlOjpoYW5k
bGVNZW51T3BlbmVkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5yZW5k
ZXJlcigpIHx8ICFub2RlSGFzUm9sZShub2RlLCAibWVudSJfcykpCkBAIC0yMTA1LDcgKzIxNDUs
NyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2UoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cgogICAgICAgICBwb3N0UGxhdGZvcm1Ob3RpZmlj
YXRpb24odGFyZ2V0LCBBWE5vdGlmaWNhdGlvbjo6QVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCk7
CiAKICAgICAgICAgLy8gVGFibGUgY2VsbCBhY3RpdmUgZGVzY2VuZGFudCBjaGFuZ2VzIHNob3Vs
ZCB0cmlnZ2VyIHNlbGVjdGVkIGNlbGwgY2hhbmdlcy4KLSAgICAgICAgaWYgKHRhcmdldC0+aXNU
YWJsZSgpICYmIGFjdGl2ZURlc2NlbmRhbnQtPmlzVGFibGVDZWxsKCkpIHsKKyAgICAgICAgaWYg
KHRhcmdldC0+aXNUYWJsZSgpICYmIGFjdGl2ZURlc2NlbmRhbnQtPmlzRXhwb3NlZFRhYmxlQ2Vs
bCgpKSB7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICAgICAg
ICAgIHVwZGF0ZUlzb2xhdGVkVHJlZSh0YXJnZXQsIEFYTm90aWZpY2F0aW9uOjpBWFNlbGVjdGVk
Q2VsbHNDaGFuZ2VkKTsKICNlbmRpZgpAQCAtMjIwMyw2ICsyMjQzLDI2IEBAIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1
YWxpZmllZE5hbWUmCiAgICAgQVhMT0cobWFrZVN0cmluZygiYXR0cmlidXRlICIsIGF0dHJOYW1l
LmxvY2FsTmFtZSgpLCAiIGZvciBlbGVtZW50ICIsIGVsZW1lbnQgPyBlbGVtZW50LT5kZWJ1Z0Rl
c2NyaXB0aW9uKCkgOiBTdHJpbmcoIm51bGxwdHIiX3MpKSk7CiAgICAgQVhMT0cobWFrZVN0cmlu
Zygib2xkIHZhbHVlOiAiLCBvbGRWYWx1ZSwgIiBuZXcgdmFsdWU6ICIsIG5ld1ZhbHVlKSk7CiAK
KyAgICBlbnVtIGNsYXNzIFRhYmxlUHJvcGVydHkgOiB1aW50OF90IHsgRXhwb3NlZCA9IDEgPDwg
MCwgU2xvdEdyaWQgPSAxIDw8IDEgfTsKKyAgICBhdXRvIHJlY29tcHV0ZVBhcmVudFRhYmxlUHJv
cGVydGllcyA9IFt0aGlzXSAoRWxlbWVudCogZWxlbWVudCwgT3B0aW9uU2V0PFRhYmxlUHJvcGVy
dHk+IHByb3BlcnRpZXMpIHsKKyAgICAgICAgQVNTRVJUKCFwcm9wZXJ0aWVzLmlzRW1wdHkoKSk7
CisKKyAgICAgICAgaWYgKCFwcm9wZXJ0aWVzLmNvbnRhaW5zKFRhYmxlUHJvcGVydHk6OlNsb3RH
cmlkKSkgeworICAgICAgICAgICAgLy8gSWYgd2UncmUgcmUtY29tcHV0aW5nIHRoZSBleHBvc2Vk
IHN0YXRlIG9mIHRoZSB0YWJsZSwgd2Ugb25seSBuZWVkIHRvIGRvIHdvcmsgZm9yIG5vbi1BUklB
IHRhYmxlcywgYWxsb3dpbmcgdXMgdG8KKyAgICAgICAgICAgIC8vIGRvIGEgY2hlYXAgZHluYW1p
Y0Rvd25jYXN0IGNoZWNrIGZvciBhbiBIVE1MVGFibGVQYXJ0RWxlbWVudCByYXRoZXIgdGhhbiBj
YWxsaW5nIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFRhYmxlKCkuCisgICAgICAgICAg
ICAvLyAoQVJJQSB0YWJsZXMgYXJlIGluaGVyZW50bHkgYWx3YXlzIGV4cG9zZWQpLgorICAgICAg
ICAgICAgaWYgKGF1dG8qIHRhYmxlUGFydEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTFRh
YmxlUGFydEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgICAgIGRlZmVyUmVjb21wdXRl
VGFibGVJc0V4cG9zZWQoY29uc3RfY2FzdDxIVE1MVGFibGVFbGVtZW50Kj4odGFibGVQYXJ0RWxl
bWVudC0+ZmluZFBhcmVudFRhYmxlKCkuZ2V0KCkpKTsKKyAgICAgICAgfSBlbHNlIGlmIChhdXRv
KiBheENlbGwgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oZ2V0T3JD
cmVhdGUoZWxlbWVudCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogcGFyZW50VGFibGUgPSBh
eENlbGwtPnBhcmVudFRhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllcy5j
b250YWlucyhUYWJsZVByb3BlcnR5OjpFeHBvc2VkKSAmJiAhcGFyZW50VGFibGUtPmlzQXJpYVRh
YmxlKCkpCisgICAgICAgICAgICAgICAgICAgIGRlZmVyUmVjb21wdXRlVGFibGVJc0V4cG9zZWQo
cGFyZW50VGFibGUtPmVsZW1lbnQoKSk7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMu
Y29udGFpbnMoVGFibGVQcm9wZXJ0eTo6U2xvdEdyaWQpKQorICAgICAgICAgICAgICAgICAgICBk
ZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdyaWQoKnBhcmVudFRhYmxlKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH07CisKICAgICBpZiAoIXNob3VsZFByb2Nlc3NBdHRyaWJ1dGVDaGFu
Z2UoZWxlbWVudCwgYXR0ck5hbWUpKQogICAgICAgICByZXR1cm47CiAKQEAgLTIyNDUsMTYgKzIz
MDUsMTcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9
PSBvcGVuQXR0ciAmJiBpczxIVE1MRGlhbG9nRWxlbWVudD4oKmVsZW1lbnQpKSB7CiAgICAgICAg
IGRlZmVyTW9kYWxDaGFuZ2UoZWxlbWVudCk7CiAgICAgICAgIHJlY29tcHV0ZUlzSWdub3JlZChl
bGVtZW50LT5wYXJlbnROb2RlKCkpOworICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gcm93c3Bh
bkF0dHIpIHsKKyAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWFJvd1NwYW5DaGFu
Z2VkKTsKKyAgICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVQcm9wZXJ0aWVzKGVsZW1lbnQsIFRh
YmxlUHJvcGVydHk6OlNsb3RHcmlkKTsKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGNvbHNw
YW5BdHRyKSB7CisgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhDb2x1bW5TcGFu
Q2hhbmdlZCk7CisgICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlUHJvcGVydGllcyhlbGVtZW50
LCBUYWJsZVByb3BlcnR5OjpTbG90R3JpZCk7CiAgICAgfQogCiAgICAgaWYgKCFhdHRyTmFtZS5s
b2NhbE5hbWUoKS5zdHJpbmcoKS5zdGFydHNXaXRoKCJhcmlhLSJfcykpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gcmVjb21wdXRlUGFyZW50VGFibGVFeHBvc3VyZSA9IFt0aGlzXSAoRWxl
bWVudCogZWxlbWVudCkgewotICAgICAgICBpZiAoYXV0byogdGFibGVQYXJ0RWxlbWVudCA9IGR5
bmFtaWNEb3duY2FzdDxIVE1MVGFibGVQYXJ0RWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgICAg
ICBkZWZlclJlY29tcHV0ZVRhYmxlSXNFeHBvc2VkKGNvbnN0X2Nhc3Q8SFRNTFRhYmxlRWxlbWVu
dCo+KHRhYmxlUGFydEVsZW1lbnQtPmZpbmRQYXJlbnRUYWJsZSgpLmdldCgpKSk7Ci0gICAgfTsK
LQogICAgIGlmIChhdHRyTmFtZSA9PSBhcmlhX2FjdGl2ZWRlc2NlbmRhbnRBdHRyKQogICAgICAg
ICBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlKCplbGVtZW50LCBvbGRWYWx1ZSwgbmV3VmFs
dWUpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfYXRvbWljQXR0cikKQEAgLTIyNzQs
MTAgKzIzMzUsMTAgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2Uo
RWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICAgICAgZGVmZXJSZWNv
bXB1dGVUYWJsZUlzRXhwb3NlZChkeW5hbWljRG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4oZWxl
bWVudCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9jb2xpbmRleEF0dHIpIHsK
ICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWENvbHVtbkluZGV4Q2hhbmdlZCk7
Ci0gICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlRXhwb3N1cmUoZWxlbWVudCk7CisgICAgICAg
IHJlY29tcHV0ZVBhcmVudFRhYmxlUHJvcGVydGllcyhlbGVtZW50LCBUYWJsZVByb3BlcnR5OjpF
eHBvc2VkKTsKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfY29sc3BhbkF0dHIpIHsK
ICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWENvbHVtblNwYW5DaGFuZ2VkKTsK
LSAgICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVFeHBvc3VyZShlbGVtZW50KTsKKyAgICAgICAg
cmVjb21wdXRlUGFyZW50VGFibGVQcm9wZXJ0aWVzKGVsZW1lbnQsIHsgVGFibGVQcm9wZXJ0eTo6
U2xvdEdyaWQsIFRhYmxlUHJvcGVydHk6OkV4cG9zZWQgfSk7CiAgICAgfQogICAgIGVsc2UgaWYg
KGF0dHJOYW1lID09IGFyaWFfZGVzY3JpYmVkYnlBdHRyKQogICAgICAgICBwb3N0Tm90aWZpY2F0
aW9uKGVsZW1lbnQsIEFYRGVzY3JpYmVkQnlDaGFuZ2VkKTsKQEAgLTIyOTcsNyArMjM1OCw3IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlKEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVu
dCwgQVhQbGFjZWhvbGRlckNoYW5nZWQpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFf
cm93aW5kZXhBdHRyKSB7CiAgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhSb3dJ
bmRleENoYW5nZWQpOwotICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlKGVsZW1l
bnQpOworICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgeyBU
YWJsZVByb3BlcnR5OjpTbG90R3JpZCwgVGFibGVQcm9wZXJ0eTo6RXhwb3NlZCB9KTsKICAgICB9
CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV92YWx1ZW1heEF0dHIpCiAgICAgICAgIHBv
c3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhNYXhpbXVtVmFsdWVDaGFuZ2VkKTsKQEAgLTIzNTUs
OSArMjQxNiw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlKEVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgICAgIGhhbmRsZVJvd0Nv
dW50Q2hhbmdlZChnZXQoZWxlbWVudCksIGVsZW1lbnQgPyAmZWxlbWVudC0+ZG9jdW1lbnQoKSA6
IG51bGxwdHIpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfcm93c3BhbkF0dHIpIHsK
ICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWFJvd1NwYW5DaGFuZ2VkKTsKLSAg
ICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVFeHBvc3VyZShlbGVtZW50KTsKLSAgICB9Ci0gICAg
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9zb3J0QXR0cikKKyAgICAgICAgcmVjb21wdXRlUGFy
ZW50VGFibGVQcm9wZXJ0aWVzKGVsZW1lbnQsIHsgVGFibGVQcm9wZXJ0eTo6U2xvdEdyaWQsIFRh
YmxlUHJvcGVydHk6OkV4cG9zZWQgfSk7CisgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlh
X3NvcnRBdHRyKQogICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYT2JqZWN0Q2Fj
aGU6OkFYU29ydERpcmVjdGlvbkNoYW5nZWQpOwogfQogCkBAIC0zNjcyLDYgKzM3MzIsMTIgQEAg
dm9pZCBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpCiAgICAgICAg
IGhhbmRsZUNoaWxkcmVuQ2hhbmdlZCgqY2hpbGQpOwogICAgIG1fZGVmZXJyZWRDaGlsZHJlbkNo
YW5nZWRMaXN0LmNsZWFyKCk7CiAKKyAgICBBWExPR0RlZmVycmVkQ29sbGVjdGlvbigiUmVjb21w
dXRlVGFibGVTbG90R3JpZExpc3QiX3MsIG1fZGVmZXJyZWRSZWNvbXB1dGVUYWJsZVNsb3RHcmlk
TGlzdCk7CisgICAgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRMaXN0LmZvckVhY2go
W3RoaXNdIChhdXRvJiBheFRhYmxlKSB7CisgICAgICAgIGhhbmRsZVJlY29tcHV0ZVNsb3RHcmlk
KGF4VGFibGUpOworICAgIH0pOworICAgIG1fZGVmZXJyZWRSZWNvbXB1dGVUYWJsZVNsb3RHcmlk
TGlzdC5jbGVhcigpOworCiAgICAgQVhMT0dEZWZlcnJlZENvbGxlY3Rpb24oIlRleHRDaGFuZ2Vk
TGlzdCJfcywgbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdCk7CiAgICAgZm9yIChhdXRvKiBub2Rl
IDogbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdCkKICAgICAgICAgaGFuZGxlVGV4dENoYW5nZWQo
Z2V0T3JDcmVhdGUobm9kZSkpOwpAQCAtMzg5OCw2ICszOTY0LDEwIEBAIHZvaWQgQVhPYmplY3RD
YWNoZTo6dXBkYXRlSXNvbGF0ZWRUcmVlKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEFj
Y2Vzc2liaWxpCiAgICAgICAgIGNhc2UgQVhTZXRTaXplQ2hhbmdlZDoKICAgICAgICAgICAgIHRy
ZWUtPnVwZGF0ZU5vZGVQcm9wZXJ0aWVzKCpub3RpZmljYXRpb24uZmlyc3QsIHsgQVhQcm9wZXJ0
eU5hbWU6OlNldFNpemUsIEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c1NldFNpemUgfSk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBWFNsb3RHcmlkQ2hhbmdlZDoKKyAgICAgICAg
ICAgIEFTU0VSVChub3RpZmljYXRpb24uZmlyc3QtPmlzVGFibGUoKSk7CisgICAgICAgICAgICB0
cmVlLT51cGRhdGVOb2RlUHJvcGVydHkoKm5vdGlmaWNhdGlvbi5maXJzdCwgQVhQcm9wZXJ0eU5h
bWU6OlNsb3RHcmlkKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFYVGFibGVI
ZWFkZXJzQ2hhbmdlZDoKICAgICAgICAgICAgIHRyZWUtPnVwZGF0ZU5vZGVQcm9wZXJ0eSgqbm90
aWZpY2F0aW9uLmZpcnN0LCBBWFByb3BlcnR5TmFtZTo6Q29sdW1uSGVhZGVycyk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTQwMDIsNiArNDA3MiwxMyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRl
ZmVyUmVjb21wdXRlVGFibGVJc0V4cG9zZWQoRWxlbWVudCogZWxlbWVudCkKICAgICAgICAgbV9w
ZXJmb3JtQ2FjaGVVcGRhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIAordm9pZCBBWE9i
amVjdENhY2hlOjpkZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdyaWQoQWNjZXNzaWJpbGl0eVRhYmxl
JiBheFRhYmxlKQoreworICAgIG1fZGVmZXJyZWRSZWNvbXB1dGVUYWJsZVNsb3RHcmlkTGlzdC5h
ZGQoYXhUYWJsZSk7CisgICAgaWYgKCFtX3BlcmZvcm1DYWNoZVVwZGF0ZVRpbWVyLmlzQWN0aXZl
KCkpCisgICAgICAgIG1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7
Cit9CisKIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJUZXh0Q2hhbmdlZElmTmVlZGVkKE5vZGUq
IG5vZGUpCiB7CiAgICAgaWYgKCFub2RlQW5kUmVuZGVyZXJBcmVWYWxpZChub2RlKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggZjg0YTRhMWZh
ZmIxLi5mNDM4NjNhYTEzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlOwogY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBIVE1MQXJlYUVsZW1lbnQ7CiBjbGFzcyBIVE1MVGFibGVFbGVtZW50OwpAQCAt
MjIwLDcgKzIyMSw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBWZWN0b3I8QXR0cmlidXRlQ2hhbmdl
PgogICAgICAgICAsIFZlY3RvcjxzdGQ6OnBhaXI8Tm9kZSosIE5vZGUqPj4KICAgICAgICAgLCBX
ZWFrSGFzaFNldDxFbGVtZW50LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+Ci0gICAg
ICAgICwgV2Vha0hhc2hTZXQ8SFRNTFRhYmxlRWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRU
YXJnZXREYXRhPj47CisgICAgICAgICwgV2Vha0hhc2hTZXQ8SFRNTFRhYmxlRWxlbWVudCwgV2Vh
a1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPgorICAgICAgICAsIFdlYWtIYXNoU2V0PEFjY2Vz
c2liaWxpdHlUYWJsZT4+OwogICAgIHZvaWQgZGVmZXJNb2RhbENoYW5nZShFbGVtZW50Kik7CiAg
ICAgdm9pZCBkZWZlck1lbnVMaXN0VmFsdWVDaGFuZ2UoRWxlbWVudCopOwogICAgIHZvaWQgZGVm
ZXJOb2RlQWRkZWRPclJlbW92ZWQoTm9kZSopOwpAQCAtMzU2LDYgKzM1OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgQVhTZWxlY3RlZFN0YXRlQ2hhbmdlZCwKICAgICAgICAgQVhTZWxlY3RlZFRleHRD
aGFuZ2VkLAogICAgICAgICBBWFNldFNpemVDaGFuZ2VkLAorICAgICAgICBBWFNsb3RHcmlkQ2hh
bmdlZCwKICAgICAgICAgQVhUYWJsZUhlYWRlcnNDaGFuZ2VkLAogICAgICAgICBBWFVSTENoYW5n
ZWQsCiAgICAgICAgIEFYVmFsdWVDaGFuZ2VkLApAQCAtNDM3LDYgKzQ0MCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRlZmVyUmVjb21wdXRlSXNJZ25vcmVkSWZOZWVkZWQoRWxlbWVudCopOwogICAg
IHZvaWQgZGVmZXJSZWNvbXB1dGVJc0lnbm9yZWQoRWxlbWVudCopOwogICAgIHZvaWQgZGVmZXJS
ZWNvbXB1dGVUYWJsZUlzRXhwb3NlZChFbGVtZW50Kik7CisgICAgdm9pZCBkZWZlclJlY29tcHV0
ZVRhYmxlU2xvdEdyaWQoQWNjZXNzaWJpbGl0eVRhYmxlJik7CiAgICAgdm9pZCBkZWZlclRleHRD
aGFuZ2VkSWZOZWVkZWQoTm9kZSopOwogICAgIHZvaWQgZGVmZXJTZWxlY3RlZENoaWxkcmVuQ2hh
bmdlZElmTmVlZGVkKEVsZW1lbnQmKTsKICAgICB2b2lkIHBlcmZvcm1EZWZlcnJlZENhY2hlVXBk
YXRlKCk7CkBAIC01NjQsNiArNTY4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGhhbmRsZUZvY3Vz
ZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqIG9sZEZvY3VzZWROb2RlLCBOb2RlKiBuZXdGb2N1c2Vk
Tm9kZSwgVXBkYXRlTW9kYWwgPSBVcGRhdGVNb2RhbDo6WWVzKTsKICAgICB2b2lkIGhhbmRsZU1l
bnVMaXN0VmFsdWVDaGFuZ2VkKEVsZW1lbnQmKTsKICAgICB2b2lkIGhhbmRsZVRleHRDaGFuZ2Vk
KEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICB2b2lkIGhhbmRsZVJlY29tcHV0ZVNsb3RHcmlk
KEFjY2Vzc2liaWxpdHlUYWJsZSYpOwogCiAgICAgLy8gYXJpYS1tb2RhbCBvciBtb2RhbCA8ZGlh
bG9nPiByZWxhdGVkCiAgICAgYm9vbCBpc01vZGFsRWxlbWVudChFbGVtZW50JikgY29uc3Q7CkBA
IC02MzYsNiArNjQxLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PEFYSUQ+IG1fZGVmZXJyZWRS
ZW1vdmVkT2JqZWN0czsKICAgICBXZWFrSGFzaFNldDxFbGVtZW50LCBXZWFrUHRySW1wbFdpdGhF
dmVudFRhcmdldERhdGE+IG1fZGVmZXJyZWRSZWNvbXB1dGVJc0lnbm9yZWRMaXN0OwogICAgIFdl
YWtIYXNoU2V0PEhUTUxUYWJsZUVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0
YT4gbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlSXNFeHBvc2VkTGlzdDsKKyAgICBXZWFrSGFzaFNl
dDxBY2Nlc3NpYmlsaXR5VGFibGU+IG1fZGVmZXJyZWRSZWNvbXB1dGVUYWJsZVNsb3RHcmlkTGlz
dDsKICAgICBMaXN0SGFzaFNldDxOb2RlKj4gbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdDsKICAg
ICBXZWFrSGFzaFNldDxFbGVtZW50LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+IG1f
ZGVmZXJyZWRTZWxlY3RlZENoaWxkcmVkQ2hhbmdlZExpc3Q7CiAgICAgTGlzdEhhc2hTZXQ8UmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTGlzdDsK
QEAgLTY4MCw2ICs2ODYsNyBAQCBwcml2YXRlOgogfTsKIAogYm9vbCBub2RlSGFzUm9sZShOb2Rl
KiwgU3RyaW5nVmlldyByb2xlKTsKK2Jvb2wgbm9kZUhhc0dyaWRSb2xlKE5vZGUqKTsKIC8vIFRo
aXMgd2lsbCBsZXQgeW91IGtub3cgaWYgYXJpYS1oaWRkZW4gd2FzIGV4cGxpY2l0bHkgc2V0IHRv
IGZhbHNlLgogYm9vbCBpc05vZGVBcmlhVmlzaWJsZShOb2RlKik7CiAgICAgCkBAIC03MDUsNiAr
NzEyLDcgQEAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c2V0Rm9yY2VEZWZlcnJlZFNwZWxs
Q2hlY2tpbmcoYm9vbCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkaXNhYmxlQWNj
ZXNzaWJpbGl0eSgpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c2V0RW5oYW5jZWRV
c2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0eShib29sKSB7IH0KIGlubGluZSBib29sIG5vZGVIYXNS
b2xlKE5vZGUqLCBTdHJpbmdWaWV3KSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgbm9k
ZUhhc0dyaWRSb2xlKE5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVlTXV0
YXRlcygpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c3RvcENhY2hpbmdDb21wdXRl
ZE9iamVjdEF0dHJpYnV0ZXMoKSB7IH0KIGlubGluZSBib29sIGlzTm9kZUFyaWFWaXNpYmxlKE5v
ZGUqKSB7IHJldHVybiB0cnVlOyB9CkBAIC03MzEsNiArNzM5LDcgQEAgaW5saW5lIHZvaWQgQVhP
YmplY3RDYWNoZTo6ZGVmZXJSZWNvbXB1dGVJc0lnbm9yZWQoRWxlbWVudCopIHsgfQogaW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJUZXh0Q2hhbmdlZElmTmVlZGVkKE5vZGUqKSB7IH0K
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWRJ
Zk5lZWRlZChFbGVtZW50JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkZWZlclRl
eHRSZXBsYWNlbWVudE5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50JiwgY29uc3QgU3RyaW5nJikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hl
OjpkZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdyaWQoQWNjZXNzaWJpbGl0eVRhYmxlJikgeyB9CiAj
aWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEFUU1BJKQogaW5saW5lIHZvaWQgQVhPYmplY3RD
YWNoZTo6ZGV0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqLCBBY2Nlc3NpYmlsaXR5RGV0YWNobWVu
dFR5cGUpIHsgfQogI2VuZGlmCkBAIC03NjQsNiArNzczLDcgQEAgaW5saW5lIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihOb2RlKiwgQVhUZXh0RWRp
dFR5cGUKIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3Rp
ZmljYXRpb24oTm9kZSosIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVjb21wdXRl
SXNJZ25vcmVkKFJlbmRlck9iamVjdCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6
aGFuZGxlVGV4dENoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQoraW5saW5lIHZvaWQg
QVhPYmplY3RDYWNoZTo6aGFuZGxlUmVjb21wdXRlU2xvdEdyaWQoQWNjZXNzaWJpbGl0eVRhYmxl
JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpvblJlbmRlcmVyQ3JlYXRlZChFbGVt
ZW50JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVMb2FkaW5nUHJvZ3Jl
c3MoZG91YmxlKSB7IH0KIGlubGluZSBTaW1wbGVSYW5nZSBBWE9iamVjdENhY2hlOjpyYW5nZUZv
ck5vZGVDb250ZW50cyhOb2RlJiBub2RlKSB7IHJldHVybiBtYWtlUmFuZ2VTZWxlY3RpbmdOb2Rl
Q29udGVudHMobm9kZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAppbmRleCBlNGU1Zjg1YzJiN2UuLjVhNDg5OTI2
Njk4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmNwcApAQCAtNTEsOTIgKzUxLDEwIEBAIFJlZjxBY2Nlc3NpYmlsaXR5
QVJJQUdyaWQ+IEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eUFSSUFHcmlkKHJl
bmRlcmVyKSk7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxD
aGlsZChBWENvcmVPYmplY3QqIGNoaWxkLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYg
YXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpCi17Ci0gICAgaWYgKCFjaGlsZCB8
fCAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKmNoaWxkKSAmJiAhY2hpbGQtPmlzQVJJQVRy
ZWVHcmlkUm93KCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiByb3cgPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpjaGlsZCk7Ci0gICAgaWYgKGFwcGVuZGVk
Um93cy5jb250YWlucygmcm93KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gc3Rv
cmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbHVtbnMKLSAgICB1bnNpZ25lZCByb3dDZWxsQ291
bnQgPSByb3cuY2hpbGRyZW4oKS5zaXplKCk7Ci0gICAgaWYgKHJvd0NlbGxDb3VudCA+IGNvbHVt
bkNvdW50KQotICAgICAgICBjb2x1bW5Db3VudCA9IHJvd0NlbGxDb3VudDsKLQotICAgIHJvdy5z
ZXRSb3dJbmRleCgoaW50KW1fcm93cy5zaXplKCkpOwotICAgIG1fcm93cy5hcHBlbmQoJnJvdyk7
Ci0gICAgYWRkQ2hpbGQoJnJvdyk7Ci0gICAgYXBwZW5kZWRSb3dzLmFkZCgmcm93KTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQogYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmlzTXVsdGlTZWxl
Y3RhYmxlKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhTXVsdGlTZWxlY3Rh
YmxlID0gZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9tdWx0aXNlbGVjdGFibGVBdHRyKTsK
ICAgICByZXR1cm4gIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFNdWx0aVNlbGVj
dGFibGUsICJmYWxzZSJfcyk7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRS
b3dEZXNjZW5kYW50KEFYQ29yZU9iamVjdCogcm93Q2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0
eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKLXsKLSAgICBp
ZiAoIXJvd0NoaWxkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXJvd0NoaWxkLT5pc1Rh
YmxlUm93KCkgfHwgIXJvd0NoaWxkLT5ub2RlKCkpIHsKLSAgICAgICAgLy8gQWx0aG91Z2ggYSAi
Z3JpZCIgc2hvdWxkIGhhdmUgcm93cyBhcyBpdHMgZGlyZWN0IGRlc2NlbmRhbnRzLCBpZiB0aGlz
IGlzIG5vdCBhIHRhYmxlIHJvdywKLSAgICAgICAgLy8gb3IgdGhpcyByb3cgaXMgYW5vbnltb3Vz
LCBkaXZlIGRlZXBlciBpbnRvIHRoZSBkZXNjZW5kYW50cyB0byB0cnkgdG8gZmluZCBhIHZhbGlk
IHJvdy4KLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHJvd0NoaWxkLT5jaGlsZHJl
bigpKQotICAgICAgICAgICAgYWRkUm93RGVzY2VuZGFudChjaGlsZC5nZXQoKSwgYXBwZW5kZWRS
b3dzLCBjb2x1bW5Db3VudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGFkZFRhYmxlQ2VsbENoaWxk
KHJvd0NoaWxkLCBhcHBlbmRlZFJvd3MsIGNvbHVtbkNvdW50KTsKLX0KLQotdm9pZCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmFkZENoaWxkcmVuKCkKLXsKLSAgICBBU1NFUlQoIW1fY2hpbGRyZW5J
bml0aWFsaXplZCk7IAotICAgIAotICAgIGlmICghaXNFeHBvc2FibGUoKSkgewotICAgICAgICBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbigpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIAotICAgIG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9IHRydWU7Ci0gICAgYXV0
byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwotICAgIGF1dG8qIGF4Q2FjaGUgPSBkb2N1
bWVudCA/IGRvY3VtZW50LT5heE9iamVjdENhY2hlKCkgOiBudWxscHRyOwotCi0gICAgLy8gQWRk
IHRoZSBjaGlsZHJlbiByb3dzIGJ1dCBiZSBtaW5kZnVsIGluIGNhc2UgdGhlcmUgYXJlIGZvb3Rl
ciBzZWN0aW9ucyBpbiB0aGlzIHRhYmxlLgotICAgIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVj
dCo+IGFwcGVuZGVkUm93czsKLSAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IDA7Ci0gICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGZvb3RlclNlY3Rpb25zOwotICAgIGZvciAoUmVmUHRy
PEFjY2Vzc2liaWxpdHlPYmplY3Q+IGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBib29sIGZvb3RlclNlY3Rpb24gPSBm
YWxzZTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogY2hpbGRSZW5kZXJlciA9IGNoaWxkLT5y
ZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hp
bGRSZW5kZXJlcikpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb24mIGNoaWxk
U2VjdGlvbiA9IGRvd25jYXN0PFJlbmRlclRhYmxlU2VjdGlvbj4oKmNoaWxkUmVuZGVyZXIpOwot
ICAgICAgICAgICAgICAgIGlmICgmY2hpbGRTZWN0aW9uID09IGNoaWxkU2VjdGlvbi50YWJsZSgp
LT5mb290ZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBmb290ZXJTZWN0aW9ucy5hcHBlbmQo
Y2hpbGQpOwotICAgICAgICAgICAgICAgICAgICBmb290ZXJTZWN0aW9uID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFmb290
ZXJTZWN0aW9uKQotICAgICAgICAgICAgYWRkUm93RGVzY2VuZGFudChjaGlsZC5nZXQoKSwgYXBw
ZW5kZWRSb3dzLCBjb2x1bW5Db3VudCk7Ci0gICAgfQotICAgIAotICAgIGZvciAoY29uc3QgYXV0
byYgZm9vdGVyU2VjdGlvbiA6IGZvb3RlclNlY3Rpb25zKQotICAgICAgICBhZGRSb3dEZXNjZW5k
YW50KGZvb3RlclNlY3Rpb24uZ2V0KCksIGFwcGVuZGVkUm93cywgY29sdW1uQ291bnQpOwotICAg
IAotICAgIC8vIG1ha2UgdGhlIGNvbHVtbnMgYmFzZWQgb24gdGhlIG51bWJlciBvZiBjb2x1bW5z
IGluIHRoZSBmaXJzdCBib2R5Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbHVtbkNv
dW50OyArK2kpIHsKLSAgICAgICAgYXV0byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uPigqYXhDYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4p
KTsKLSAgICAgICAgY29sdW1uLnNldENvbHVtbkluZGV4KGkpOwotICAgICAgICBjb2x1bW4uc2V0
UGFyZW50KHRoaXMpOwotICAgICAgICBtX2NvbHVtbnMuYXBwZW5kKCZjb2x1bW4pOwotICAgICAg
ICBhZGRDaGlsZCgmY29sdW1uLCBEZXNjZW5kSWZJZ25vcmVkOjpObyk7Ci0gICAgfQotCi0gICAg
YWRkQ2hpbGQoaGVhZGVyQ29udGFpbmVyKCksIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsKLX0KLSAg
ICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCmluZGV4IGFlY2M5YThiYmI0ZS4uZTI4
YmE5NmEzYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmgKQEAgLTQwLDkgKzQwLDcgQEAgY2xhc3MgQWNjZXNzaWJpbGl0
eUFSSUFHcmlkIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlUYWJsZSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ+IGNyZWF0ZShSZW5kZXJPYmplY3Qq
KTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWQoKTsKLSAgICAKLSAgICB2b2lk
IGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7Ci0gICAgCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
QWNjZXNzaWJpbGl0eUFSSUFHcmlkKFJlbmRlck9iamVjdCopOwogICAgIGJvb2wgaXNBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRJbnN0YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
QEAgLTUyLDkgKzUwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wg
aXNBcmlhVGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgCi0gICAg
dm9pZCBhZGRSb3dEZXNjZW5kYW50KEFYQ29yZU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0
eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7Ci0gICAgYm9v
bCBhZGRUYWJsZUNlbGxDaGlsZChBWENvcmVPYmplY3QqLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlP
YmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCmluZGV4IGFmZWExZjMyYWQ2
OS4uZGU0ODY5NzNiZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKQEAgLTYxLDExMyArNjEsNiBA
QCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnBhcmVudFRh
YmxlKCkgY29uc3QKICAgICB9KSk7CiB9CiAgICAgCi1zdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKCkgY29uc3QKLXsK
LSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZSB7IDAsIDEgfTsKLSAg
ICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlm
ICghcGFyZW50KQotICAgICAgICByZXR1cm4gcm93UmFuZ2U7Ci0KLSAgICBpZiAoaXM8QWNjZXNz
aWJpbGl0eVRhYmxlUm93PigqcGFyZW50KSkgewotICAgICAgICAvLyBXZSBhbHJlYWR5IGdvdCBh
IHRhYmxlIHJvdywgdXNlIGl0cyBBUEkuCi0gICAgICAgIHJvd1JhbmdlLmZpcnN0ID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50KS5yb3dJbmRleCgpOwotICAgIH0gZWxz
ZSBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KSAmJiBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGU+KCpwYXJlbnQpLmlzRXhwb3NhYmxlKCkpIHsKLSAgICAgICAgLy8gV2UgcmVh
Y2hlZCB0aGUgcGFyZW50IHRhYmxlLCBzbyB3ZSBuZWVkIHRvIGluc3BlY3QgaXRzCi0gICAgICAg
IC8vIGNoaWxkcmVuIHRvIGRldGVybWluZSB0aGUgcm93IGluZGV4IGZvciB0aGUgY2VsbCBpbiBp
dC4KLSAgICAgICAgdW5zaWduZWQgY29sdW1uQ291bnQgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGU+KCpwYXJlbnQpLmNvbHVtbkNvdW50KCk7Ci0gICAgICAgIGlmICghY29sdW1uQ291bnQp
Ci0gICAgICAgICAgICByZXR1cm4gcm93UmFuZ2U7Ci0KLSAgICAgICAgY29uc3QgYXV0byYgc2li
bGluZ3MgPSBwYXJlbnQtPmNoaWxkcmVuKCk7Ci0gICAgICAgIHVuc2lnbmVkIGNoaWxkcmVuU2l6
ZSA9IHNpYmxpbmdzLnNpemUoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNo
aWxkcmVuU2l6ZTsgKytrKSB7Ci0gICAgICAgICAgICBpZiAoc2libGluZ3Nba10uZ2V0KCkgPT0g
dGhpcykgewotICAgICAgICAgICAgICAgIHJvd1JhbmdlLmZpcnN0ID0gayAvIGNvbHVtbkNvdW50
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gQVJJQSAxLjEsIGFyaWEtcm93c3BhbiBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQg
Zm9yIGNlbGxzIGFuZCBncmlkY2VsbHMgd2hpY2ggYXJlIG5vdCBjb250YWluZWQgaW4gYSBuYXRp
dmUgdGFibGUuCi0gICAgLy8gU28gd2Ugc2hvdWxkIGNoZWNrIGZvciB0aGF0IGF0dHJpYnV0ZSBo
ZXJlLgotICAgIHJvd1JhbmdlLnNlY29uZCA9IGF4Um93U3BhbldpdGhSb3dJbmRleChyb3dSYW5n
ZS5maXJzdCk7Ci0KLSAgICByZXR1cm4gcm93UmFuZ2U7Ci19Ci0KLXVuc2lnbmVkIEFjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGw6OmF4Um93U3BhbldpdGhSb3dJbmRleCh1bnNpZ25lZCByb3dJbmRl
eCkgY29uc3QKLXsKLSAgICBpbnQgcm93U3BhbiA9IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4
Um93U3BhbigpOwotICAgIGlmIChyb3dTcGFuID09IC0xKSB7Ci0gICAgICAgIGF1dG8gcmFuZ2Ug
PSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKCk7Ci0gICAgICAgIHJldHVy
biBzdGQ6Om1heChyYW5nZS5zZWNvbmQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7Ci0gICAg
fQotCi0gICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsK
LSAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgCi0gICAgLy8gU2V0dGlu
ZyB0aGUgdmFsdWUgdG8gMCBpbmRpY2F0ZXMgdGhhdCB0aGUgY2VsbCBvciBncmlkY2VsbCBpcyB0
byBzcGFuIGFsbCB0aGUgcmVtYWluaW5nIHJvd3MgaW4gdGhlIHJvdyBncm91cC4KLSAgICBpZiAo
IXJvd1NwYW4pIHsKLSAgICAgICAgLy8gcm93U3BhbiBkZWZhdWx0cyB0byAxLgotICAgICAgICBy
b3dTcGFuID0gMTsKLSAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFJvd0dy
b3VwID0gdGhpcy0+cGFyZW50Um93R3JvdXAoKSkgewotICAgICAgICAgICAgLy8gSWYgdGhlIHJv
dyBncm91cCBpcyB0aGUgcGFyZW50IHRhYmxlLCB3ZSB1c2UgdG90YWwgcm93IGNvdW50IHRvIGNh
bGN1bGF0ZSB0aGUgc3Bhbi4KLSAgICAgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+
KCpwYXJlbnRSb3dHcm91cCkpCi0gICAgICAgICAgICAgICAgcm93U3BhbiA9IGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudFJvd0dyb3VwKS5yb3dDb3VudCgpIC0gcm93SW5kZXg7
Ci0gICAgICAgICAgICAvLyBPdGhlcndpc2UsIHdlIGhhdmUgdG8gZ2V0IHRoZSBpbmRleCBmb3Ig
dGhlIGN1cnJlbnQgcm93IHdpdGhpbiB0aGUgcGFyZW50IHJvdyBncm91cC4KLSAgICAgICAgICAg
IGVsc2UgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVudCkpIHsKLSAgICAgICAg
ICAgICAgICBjb25zdCBhdXRvJiBzaWJsaW5ncyA9IHBhcmVudFJvd0dyb3VwLT5jaGlsZHJlbigp
OwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJvd0NvdW50ID0gc2libGluZ3Muc2l6ZSgpOwot
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCByb3dDb3VudDsgKytrKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5nc1trXS5nZXQoKSA9PSBwYXJlbnQpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJvd1NwYW4gPSByb3dDb3VudCAtIGs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBy
b3dTcGFuOwotfQotCi1zdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRDZWxsOjpjb2x1bW5JbmRleFJhbmdlKCkgY29uc3QKLXsKLSAgICBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZSB7IDAsIDEgfTsKLSAgICBBWENvcmVPYmpl
Y3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlmICghcGFyZW50KQot
ICAgICAgICByZXR1cm4gY29sdW1uUmFuZ2U7Ci0KLSAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlU
YWJsZVJvdz4oKnBhcmVudCkKLSAgICAgICAgJiYgIShpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpw
YXJlbnQpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2Fi
bGUoKSkpCi0gICAgICAgIHJldHVybiBjb2x1bW5SYW5nZTsKLQotICAgIGNvbnN0IEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYgc2libGluZ3MgPSBwYXJlbnQtPmNoaWxkcmVuKCk7Ci0gICAg
dW5zaWduZWQgY2hpbGRyZW5TaXplID0gc2libGluZ3Muc2l6ZSgpOwotICAgIHVuc2lnbmVkIGlu
ZGV4V2l0aFNwYW4gPSAwOwotICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBjaGlsZHJlblNp
emU7ICsraykgewotICAgICAgICBhdXRvKiBjaGlsZCA9IHNpYmxpbmdzW2tdLmdldCgpOwotICAg
ICAgICBpZiAoY2hpbGQgPT0gdGhpcykgewotICAgICAgICAgICAgY29sdW1uUmFuZ2UuZmlyc3Qg
PSBpbmRleFdpdGhTcGFuOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
aW5kZXhXaXRoU3BhbiArPSBpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hpbGQpID8gc3Rk
OjptYXgoZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmNoaWxkKS5heENvbHVtblNw
YW4oKSwgMSkgOiAxOwotICAgIH0KLSAgICAKLSAgICAvLyBBUklBIDEuMSwgYXJpYS1jb2xzcGFu
IGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCBmb3IgY2VsbHMgYW5kIGdyaWRjZWxscyB3aGljaCBhcmUg
bm90IGNvbnRhaW5lZCBpbiBhIG5hdGl2ZSB0YWJsZS4KLSAgICAvLyBTbyB3ZSBzaG91bGQgY2hl
Y2sgZm9yIHRoYXQgYXR0cmlidXRlIGhlcmUuCi0gICAgaW50IGNvbHVtblNwYW4gPSBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4oKTsKLSAgICBpZiAoY29sdW1uU3BhbiA9PSAt
MSkgewotICAgICAgICBhdXRvIHJhbmdlID0gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1u
SW5kZXhSYW5nZSgpOwotICAgICAgICBjb2x1bW5TcGFuID0gcmFuZ2Uuc2Vjb25kOwotICAgIH0K
LQotICAgIGNvbHVtblJhbmdlLnNlY29uZCA9IHN0ZDo6bWF4KGNvbHVtblNwYW4sIDEpOwotCi0g
ICAgcmV0dXJuIGNvbHVtblJhbmdlOwotfQotCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpwYXJlbnRSb3dHcm91cCgpIGNvbnN0CiB7CiAgICAgZm9yIChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJl
bnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCmluZGV4IDhhY2Fh
OWI5NTU2MS4uMTBmMjQ5NmNiMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaApAQCAtNDEsMTQgKzQxLDgg
QEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsKFJlbmRl
ck9iamVjdCopOwogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsSW5zdGFuY2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAvLyBSZXR1cm5zIHRoZSBz
dGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCi0gICAgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIC8v
IFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiB0aGUgY2VsbC4K
LSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5JbmRleFJhbmdlKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0KICAgICBBY2Nlc3NpYmlsaXR5VGFibGUqIHBhcmVudFRhYmxlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50Um93R3JvdXAoKSBj
b25zdDsKLSAgICB1bnNpZ25lZCBheFJvd1NwYW5XaXRoUm93SW5kZXgodW5zaWduZWQgaW5kZXgp
IGNvbnN0OwogICAgIFN0cmluZyByZWFkT25seVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OyAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKaW5kZXggOWY1YTU4MTZhOWRmLi4yYTZiZmQ3ZDI4YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAt
MzA4OSw3ICszMDg5LDcgQEAgQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0ZWRDZWxscygpCiAgICAgfQogCiAgICAgaWYg
KGF1dG8qIGFjdGl2ZURlc2NlbmRhbnQgPSB0aGlzLT5hY3RpdmVEZXNjZW5kYW50KCkpIHsKLSAg
ICAgICAgaWYgKGFjdGl2ZURlc2NlbmRhbnQtPmlzVGFibGVDZWxsKCkgJiYgIXNlbGVjdGVkQ2Vs
bHMuY29udGFpbnMoYWN0aXZlRGVzY2VuZGFudCkpCisgICAgICAgIGlmIChhY3RpdmVEZXNjZW5k
YW50LT5pc0V4cG9zZWRUYWJsZUNlbGwoKSAmJiAhc2VsZWN0ZWRDZWxscy5jb250YWlucyhhY3Rp
dmVEZXNjZW5kYW50KSkKICAgICAgICAgICAgIHNlbGVjdGVkQ2VsbHMuYXBwZW5kKGFjdGl2ZURl
c2NlbmRhbnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA4YjRhNThhNDcwMDcuLmY2MGY0MWFmNWRhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgKQEAgLTE1NCw5ICsxNTQsMTEgQEAgcHVibGljOgogICAgIEFYQ29yZU9iamVjdCogaGVh
ZGVyQ29udGFpbmVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIGludCBheENv
bHVtbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGludCBheFJvd0Nv
dW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgVmVjdG9yPFZl
Y3RvcjxBWElEPj4gc2xvdEdyaWQoKSB7IHJldHVybiB7IH07IH0KIAogICAgIC8vIFRhYmxlIGNl
bGwgc3VwcG9ydC4KICAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRXhwb3NlZFRhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5k
IHJvdyBzcGFuIG9mIHRoZSBjZWxsLgogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IHJvd0luZGV4UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7IDAsIDEgfTsgfQogICAg
IC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiB0aGUgY2Vs
bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggNjEwZjc5MzA4N2QzLi4zNDEwZTlhMTNlMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oCkBAIC04ODcsNiArODg3LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gVGFibGUgY2VsbCBzdXBwb3J0LgogICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ2VsbCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFeHBvc2VkVGFibGVDZWxsKCkgY29uc3Qg
PSAwOwogICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0
aGUgY2VsbC4KICAgICB2aXJ0dWFsIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd0lu
ZGV4UmFuZ2UoKSBjb25zdCA9IDA7CiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24g
YW5kIGNvbHVtbiBzcGFuIG9mIHRoZSBjZWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCmluZGV4IDNhN2VmYmU1OTBjNy4uN2Fh
YzIyOGI3MWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGUuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAKLSNpbmNsdWRlICJBWExvZ2dlci5o
IgogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgiCkBAIC0zNywy
MSArMzYsMTcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKICNpbmNsdWRl
ICJFbGVtZW50QW5jZXN0b3JJdGVyYXRvcklubGluZXMuaCIKICNpbmNsdWRlICJFbGVtZW50Q2hp
bGRJdGVyYXRvcklubGluZXMuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZVJv
d0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgogI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGFibGVDZWxsLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGFibGVTZWN0aW9uLmgiCi0jaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKLQogQWNjZXNzaWJpbGl0eVRhYmxlOjpBY2Nlc3NpYmlsaXR5VGFibGUo
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qo
cmVuZGVyZXIpCiAgICAgLCBtX2hlYWRlckNvbnRhaW5lcihudWxscHRyKQpAQCAtNTksNiArNTQs
MTMgQEAgQWNjZXNzaWJpbGl0eVRhYmxlOjpBY2Nlc3NpYmlsaXR5VGFibGUoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKIHsKIH0KIAorQWNjZXNzaWJpbGl0eVRhYmxlOjpBY2Nlc3NpYmlsaXR5VGFi
bGUoTm9kZSYgbm9kZSkKKyAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qobm9kZSkKKyAg
ICAsIG1faGVhZGVyQ29udGFpbmVyKG51bGxwdHIpCisgICAgLCBtX2lzRXhwb3NhYmxlKHRydWUp
Cit7Cit9CisKIEFjY2Vzc2liaWxpdHlUYWJsZTo6fkFjY2Vzc2liaWxpdHlUYWJsZSgpID0gZGVm
YXVsdDsKIAogdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmluaXQoKQpAQCAtNzIsNiArNzQsMTEg
QEAgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZT4gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmls
aXR5VGFibGUocmVuZGVyZXIpKTsKIH0KIAorUmVmPEFjY2Vzc2liaWxpdHlUYWJsZT4gQWNjZXNz
aWJpbGl0eVRhYmxlOjpjcmVhdGUoTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBY2Nlc3NpYmlsaXR5VGFibGUobm9kZSkpOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlU
YWJsZTo6aGFzTm9uVGFibGVBUklBUm9sZSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChhcmlhUm9s
ZUF0dHJpYnV0ZSgpKSB7CkBAIC04NSwxMSArOTIsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6aGFzTm9uVGFibGVBUklBUm9sZSgpIGNvbnN0CiAgICAgfQogfQogCi1ib29sIEFjY2Vzc2li
aWxpdHlUYWJsZTo6aXNFeHBvc2FibGUoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzRXhwb3Nh
YmxlICYmIChtX3JlbmRlcmVyIHx8IGlzPEhUTUxUYWJsZUVsZW1lbnQ+KG5vZGUoKSkpOwotfQot
CiBIVE1MVGFibGVFbGVtZW50KiBBY2Nlc3NpYmlsaXR5VGFibGU6OnRhYmxlRWxlbWVudCgpIGNv
bnN0CiB7CiAgICAgaWYgKGF1dG8qIHRhYmxlRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1M
VGFibGVFbGVtZW50Pihub2RlKCkpKQpAQCAtMTEzLDExICsxMTUsOCBAQCBIVE1MVGFibGVFbGVt
ZW50KiBBY2Nlc3NpYmlsaXR5VGFibGU6OnRhYmxlRWxlbWVudCgpIGNvbnN0CiAKIGJvb2wgQWNj
ZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3JlbmRl
cmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvKiBvYmplY3RDYWNoZSA9IGF4
T2JqZWN0Q2FjaGUoKTsKLSAgICBpZiAoIW9iamVjdENhY2hlKQorICAgIFdlYWtQdHIgY2FjaGUg
PSBheE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gRG8gbm90IGNvbnNpZGVyIGl0IGEgZGF0YSB0YWJsZSBpZiBpdCBoYXMgYSBu
b24tdGFibGUgQVJJQSByb2xlLgpAQCAtMTMwLDE0ICsxMjksMTEgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICBpZiAobm9kZSgpICYmIG5vZGUoKS0+
aGFzRWRpdGFibGVTdHlsZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghaXM8
UmVuZGVyVGFibGU+KCptX3JlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAg
Ly8gVGhpcyBlbXBsb3lzIGEgaGV1cmlzdGljIHRvIGRldGVybWluZSBpZiB0aGlzIHRhYmxlIHNo
b3VsZCBhcHBlYXIuCiAgICAgLy8gT25seSAiZGF0YSIgdGFibGVzIHNob3VsZCBiZSBleHBvc2Vk
IGFzIHRhYmxlcy4KICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0aGVyZSBpcyBubyBnb29kIHdheSB0
byBkZXRlcm1pbmUgdGhlIGRpZmZlcmVuY2UKICAgICAvLyBiZXR3ZWVuIGEgImxheW91dCIgdGFi
bGUgYW5kIGEgImRhdGEiIHRhYmxlLgotICAgIGlmIChIVE1MVGFibGVFbGVtZW50KiB0YWJsZUVs
ZW1lbnQgPSB0aGlzLT50YWJsZUVsZW1lbnQoKSkgeworICAgIGlmIChXZWFrUHRyIHRhYmxlRWxl
bWVudCA9IHRoaXMtPnRhYmxlRWxlbWVudCgpKSB7CiAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEg
Y2FwdGlvbiBlbGVtZW50LCBzdW1tYXJ5LCBUSEVBRCwgb3IgVEZPT1Qgc2VjdGlvbiwgaXQncyBt
b3N0IGNlcnRhaW5seSBhIGRhdGEgdGFibGUuCiAgICAgICAgIGlmICghdGFibGVFbGVtZW50LT5z
dW1tYXJ5KCkuaXNFbXB0eSgpCiAgICAgICAgICAgICB8fCAodGFibGVFbGVtZW50LT50SGVhZCgp
ICYmIHRhYmxlRWxlbWVudC0+dEhlYWQoKS0+cmVuZGVyZXIoKSkKQEAgLTE3MCwxNiArMTY2LDIw
IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgaWYg
KGF4Um93Q291bnQgPT0gLTEgfHwgYXhSb3dDb3VudCA+IDApCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgUmVuZGVyVGFibGUmIHRhYmxlID0gZG93bmNhc3Q8UmVuZGVyVGFibGU+KCptX3Jl
bmRlcmVyKTsKKyAgICBXZWFrUHRyIHJlbmRlclRhYmxlID0gZHluYW1pY0Rvd25jYXN0PFJlbmRl
clRhYmxlPihtX3JlbmRlcmVyLmdldCgpKTsKKyAgICAvLyBUaGUgZm9sbG93aW5nIGNoZWNrcyBv
bmx5IGFwcGx5IHRvIFJlbmRlclRhYmxlcy4gSWYgd2UgZG9uJ3QgaGF2ZSBhIFJlbmRlclRhYmxl
IChlLmcuIGJlY2F1c2UgYSBDU1MgZGlzcGxheSB2YWx1ZSBjYXVzZWQgYSBkaWZmZXJlbnQgcmVu
ZGVyZXIsIG9yIG5vIHJlbmRlcmVyIHRvIGJlIGdlbmVyYXRlZCksIGFzc3VtZSB0aGlzIGlzIGEg
ZGF0YSB0YWJsZS4KKyAgICBpZiAoIXJlbmRlclRhYmxlKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KwogICAgIC8vIGdvIHRocm91Z2ggdGhlIGNlbGwncyBhbmQgY2hlY2sgZm9yIHRlbGwtdGFsZSBz
aWducyBvZiAiZGF0YSIgdGFibGUgc3RhdHVzCiAgICAgLy8gY2VsbHMgaGF2ZSBib3JkZXJzLCBv
ciB1c2UgYXR0cmlidXRlcyBsaWtlIGhlYWRlcnMsIGFiYnIsIHNjb3BlIG9yIGF4aXMKLSAgICB0
YWJsZS5yZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7Ci0gICAgUmVuZGVyVGFibGVTZWN0aW9uKiBm
aXJzdEJvZHkgPSB0YWJsZS5maXJzdEJvZHkoKTsKKyAgICByZW5kZXJUYWJsZS0+cmVjYWxjU2Vj
dGlvbnNJZk5lZWRlZCgpOworICAgIFdlYWtQdHIgZmlyc3RCb2R5ID0gcmVuZGVyVGFibGUtPmZp
cnN0Qm9keSgpOwogICAgIGlmICghZmlyc3RCb2R5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBJZiB0aGUgdGJvZHkgaGFzIGFueSBub24tZ3JvdXAgcm9sZSwgdGhlbiBkb24ndCBt
YWtlIHRoaXMgYSBkYXRhIHRhYmxlLiBUaGUgYXV0aG9yIHByb2JhYmx5IHdhbnRzIHRvIHVzZSB0
aGUgcm9sZSBpbnNpZGUgdGhlIDx0Ym9keT4uCi0gICAgaWYgKGF1dG8qIHRvcFNlY3Rpb24gPSBv
YmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUodGFibGUudG9wU2VjdGlvbigpKSkgeworICAgIGlmIChh
dXRvKiB0b3BTZWN0aW9uID0gY2FjaGUtPmdldE9yQ3JlYXRlKHJlbmRlclRhYmxlLT50b3BTZWN0
aW9uKCkpKSB7CiAgICAgICAgIGF1dG8gcm9sZSA9IHRvcFNlY3Rpb24tPnJvbGVWYWx1ZSgpOwog
ICAgICAgICBpZiAoIXRvcFNlY3Rpb24tPmlzR3JvdXAoKSAmJiByb2xlICE9IEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9yZWQpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgCiAgICAgLy8gU3RvcmUgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHRhYmxlIHRvIGNo
ZWNrIGFnYWluc3QgY2VsbCdzIGJhY2tncm91bmQgY29sb3JzLgotICAgIGNvbnN0IFJlbmRlclN0
eWxlJiB0YWJsZVN0eWxlID0gdGFibGUuc3R5bGUoKTsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSYg
dGFibGVTdHlsZSA9IHJlbmRlclRhYmxlLT5zdHlsZSgpOwogICAgIENvbG9yIHRhYmxlQkdDb2xv
ciA9IHRhYmxlU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKTsKICAgICAKICAgICAvLyBjaGVjayBlbm91Z2ggb2YgdGhlIGNlbGxzIHRvIGZpbmQg
aWYgdGhlIHRhYmxlIG1hdGNoZXMgb3VyIGNyaXRlcmlhCkBAIC0zMDAsNyArMzAwLDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICAgICAgICAgIC8v
IElmIHRoZSBjZWxsIGhhcyBhIGRpZmZlcmVudCBjb2xvciBmcm9tIHRoZSB0YWJsZSBhbmQgdGhl
cmUgaXMgY2VsbCBzcGFjaW5nLAogICAgICAgICAgICAgLy8gdGhlbiBpdCBpcyBwcm9iYWJseSBh
IGRhdGEgdGFibGUgY2VsbCAoc3BhY2luZyBhbmQgY29sb3JzIHRha2UgdGhlIHBsYWNlIG9mIGJv
cmRlcnMpLgogICAgICAgICAgICAgQ29sb3IgY2VsbENvbG9yID0gcmVuZGVyU3R5bGUudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICAgICAgICAg
IGlmICh0YWJsZS5oQm9yZGVyU3BhY2luZygpID4gMCAmJiB0YWJsZS52Qm9yZGVyU3BhY2luZygp
ID4gMAorICAgICAgICAgICAgaWYgKHJlbmRlclRhYmxlLT5oQm9yZGVyU3BhY2luZygpID4gMCAm
JiByZW5kZXJUYWJsZS0+dkJvcmRlclNwYWNpbmcoKSA+IDAKICAgICAgICAgICAgICAgICAmJiB0
YWJsZUJHQ29sb3IgIT0gY2VsbENvbG9yICYmIGNlbGxDb2xvci5hbHBoYUJ5dGUoKSAhPSAxKSAv
LyBGSVhNRSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUzNyk6
IFRoaXMgY29tcGFyaXNvbiB0byAxIGlzIGxpa2VseSBpbmNvcnJlY3QuIEl0IGxpa2VseSBzaG91
bGQgYmUgY2hlY2tpbmcgIWNlbGxDb2xvci5pc09wYXF1ZSgpLgogICAgICAgICAgICAgICAgICsr
YmFja2dyb3VuZERpZmZlcmVuY2VDZWxsQ291bnQ7CiAgICAgICAgICAgICAKQEAgLTM2MSwxNSAr
MzYxLDEwIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0RhdGFUYWJsZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCisvLyBUaGUgZm9sbG93aW5nIGlzIGEgaGV1cmlzdGljIHVz
ZWQgdG8gZGV0ZXJtaW5lIGlmIGEgPHRhYmxlPiBzaG91bGQgYmUgZXhwb3NlZCBhcyBhbiBBWFRh
YmxlLgorLy8gVGhlIGdvYWwgaXMgdG8gb25seSBzaG93ICJkYXRhIiB0YWJsZXMuCiBib29sIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJp
bGl0eSgpIGNvbnN0CiB7Ci0gICAgLy8gVGhlIGZvbGxvd2luZyBpcyBhIGhldXJpc3RpYyB1c2Vk
IHRvIGRldGVybWluZSBpZiBhCi0gICAgLy8gPHRhYmxlPiBzaG91bGQgYmUgZXhwb3NlZCBhcyBh
biBBWFRhYmxlLiBUaGUgZ29hbAotICAgIC8vIGlzIHRvIG9ubHkgc2hvdyAiZGF0YSIgdGFibGVz
LgotCi0gICAgaWYgKCFtX3JlbmRlcmVyICYmICFpczxIVE1MVGFibGVFbGVtZW50Pihub2RlKCkp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAvLyBJZiBpdCBoYXMgYSBub24tdGFibGUg
QVJJQSByb2xlLCBpdCBzaG91bGRuJ3QgYmUgZXhwb3NlZCBhcyBhIHRhYmxlLgogICAgIGlmICho
YXNOb25UYWJsZUFSSUFSb2xlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3Nyw5ICsz
NzIsMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVJc1RhYmxlRXhwb3NhYmxl
VGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdAogICAgIHJldHVybiBpc0RhdGFUYWJsZSgpOwog
fQogCi0KIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpyZWNvbXB1dGVJc0V4cG9zYWJsZSgpCiB7
CisgICAgLy8gTWFrZSBzdXJlIGNoaWxkcmVuIGFyZSB1cC10by1kYXRlLCBiZWNhdXNlIGlmIHdl
IGRvIGVuZCB1cCBjaGFuZ2luZyBpcy1leHBvc2VkIHN0YXRlLCB3ZSB3YW50IHRvIG1ha2UKKyAg
ICAvLyBzdXJlIHVwZGF0ZUNoaWxkcmVuUm9sZXMgaXRlcmF0ZXMgb3ZlciB0aG9zZSBjaGlsZHJl
biBiZWZvcmUgdGhleSBjaGFuZ2UuCisgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwor
CiAgICAgYm9vbCBwcmV2aW91c2x5RXhwb3NhYmxlID0gbV9pc0V4cG9zYWJsZTsKICAgICBtX2lz
RXhwb3NhYmxlID0gY29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgp
OwogICAgIGlmIChwcmV2aW91c2x5RXhwb3NhYmxlICE9IG1faXNFeHBvc2FibGUpIHsKQEAgLTM5
NCw2ICszOTIsMjQgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OnJlY29tcHV0ZUlzRXhwb3Nh
YmxlKCkKICAgICB9CiB9CiAKK1ZlY3RvcjxWZWN0b3I8QVhJRD4+IEFjY2Vzc2liaWxpdHlUYWJs
ZTo6c2xvdEdyaWQoKQoreworICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKKyAgICBy
ZXR1cm4gbV9zbG90R3JpZDsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OnNldFNsb3RH
cmlkRGlydHkoKQoreworICAgIC8vIEJlY2F1c2UgdGhlIHNsb3QtZ3JpZCBpcyAobmVjZXNzYXJp
bHkpIGNvbXB1dGVkIGluIGNvbmp1bmN0aW9uIHdpdGggY2hpbGRyZW4sIG1hcmsKKyAgICAvLyB0
aGUgY2hpbGRyZW4gYXMgZGlydHkgYnkgY2xlYXJpbmcgdGhlbS4KKyAgICAvLworICAgIC8vIEl0
J3MgbmVjZXNzYXJ5IHRvIGNvbXB1dGUgdGhlIHNsb3QtZ3JpZCB0b2dldGhlciB3aXRoIGNoaWxk
cmVuIGJlY2F1c2UgdGhleSBhcmUgYm90aAorICAgIC8vIGluZmx1ZW5jZWQgYnkgdGhlIHNhbWUg
ZmFjdG9ycy4gRm9yIGV4YW1wbGUsIGlmIGBzZXRTbG90R3JpZERpcnR5YCBpcyBjYWxsZWQgYmVj
YXVzZQorICAgIC8vIGEgY2hpbGQgaW5jcmVhc2VkIGluIGNvbHVtbiBzcGFuLCB0aGF0IG1heSBh
bHNvIHJlc3VsdCBpbiBtb3JlIGNvbHVtbiBjaGlsZHJlbiBiZWluZworICAgIC8vIGFkZGVkIGlm
IHRoYXQgY29sdW1uIHNwYW4gY2hhbmdlIGluY3JlYXNlZCB0aGUgIndpZHRoIiBvZiB0aGUgdGFi
bGUuCisgICAgY2xlYXJDaGlsZHJlbigpOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6
dXBkYXRlQ2hpbGRyZW5Sb2xlcygpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiByb3cgOiBtX3Jv
d3MpIHsKQEAgLTQwOCw2ICs0MjQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2xlYXJD
aGlsZHJlbigpCiAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2xlYXJDaGlsZHJlbigp
OwogICAgIG1fcm93cy5jbGVhcigpOwogICAgIG1fY29sdW1ucy5jbGVhcigpOworICAgIG1fc2xv
dEdyaWQuY2xlYXIoKTsKIAogICAgIGlmIChtX2hlYWRlckNvbnRhaW5lcikgewogICAgICAgICBt
X2hlYWRlckNvbnRhaW5lci0+ZGV0YWNoRnJvbVBhcmVudCgpOwpAQCAtNDIxLDQyICs0MzgsMjE3
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgICAgIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgCi0gICAgQVNTRVJUKCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOyAKLSAgICAKKwor
ICAgIEFTU0VSVCghbV9jaGlsZHJlbkluaXRpYWxpemVkKTsKICAgICBtX2NoaWxkcmVuSW5pdGlh
bGl6ZWQgPSB0cnVlOwotICAgIGlmICghaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKCkpKQorICAg
IFdlYWtQdHIgY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIFJlbmRlclRhYmxlJiB0YWJsZSA9IGRvd25jYXN0PFJlbmRl
clRhYmxlPigqbV9yZW5kZXJlcik7Ci0gICAgLy8gR28gdGhyb3VnaCBhbGwgdGhlIGF2YWlsYWJs
ZSBzZWN0aW9ucyB0byBwdWxsIG91dCB0aGUgcm93cyBhbmQgYWRkIHRoZW0gYXMgY2hpbGRyZW4u
Ci0gICAgdGFibGUucmVjYWxjU2VjdGlvbnNJZk5lZWRlZCgpOwotICAgIAotICAgIGlmIChIVE1M
VGFibGVFbGVtZW50KiB0YWJsZUVsZW1lbnQgPSB0aGlzLT50YWJsZUVsZW1lbnQoKSkgewotICAg
ICAgICBpZiAoYXV0byBjYXB0aW9uID0gdGFibGVFbGVtZW50LT5jYXB0aW9uKCkpIHsKLSAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4Q2FwdGlvbiA9IGF4T2JqZWN0Q2FjaGUoKS0+
Z2V0T3JDcmVhdGUoY2FwdGlvbi5nZXQoKSk7Ci0gICAgICAgICAgICBhZGRDaGlsZChheENhcHRp
b24sIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsKKworICAgIC8vIFRoaXMgZnVuY3Rpb24gaW1wbGVt
ZW50cyB0aGUgImZvcm1pbmcgYSB0YWJsZSIgYWxnb3JpdGhtIGZvciBkZXRlcm1pbmluZworICAg
IC8vIHRoZSBjb3JyZWN0IGNlbGwgcG9zaXRpb25zIGFuZCBzcGFucyAoYW5kIHN0b3JpbmcgdGhv
c2UgaW4gbV9zbG90R3JpZCBmb3IgbGF0ZXIgdXNlKS4KKyAgICAvLyBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS90YWJsZXMuaHRtbCNmb3JtaW5nLWEtdGFibGUKKworICAg
IC8vIFN0ZXAgMS4KKyAgICB1bnNpZ25lZCB4V2lkdGggPSAwOworICAgIC8vIFN0ZXAgMi4KKyAg
ICB1bnNpZ25lZCB5SGVpZ2h0ID0gMDsKKyAgICAvLyBTdGVwIDM6IExldCBwZW5kaW5nIHRmb290
IGVsZW1lbnRzIGJlIGEgbGlzdCBvZiB0Zm9vdCBlbGVtZW50cywgaW5pdGlhbGx5IGVtcHR5Lgor
ICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IHBlbmRpbmdUZm9vdEVsZW1lbnRzOworICAgIC8vIFN0
ZXAgMTAuCisgICAgdW5zaWduZWQgeUN1cnJlbnQgPSAwOworICAgIFJlZlB0cjxIVE1MVGFibGVD
YXB0aW9uRWxlbWVudD4gY2FwdGlvbkVsZW1lbnQ7CisKKyAgICBIYXNoU2V0PEFjY2Vzc2liaWxp
dHlPYmplY3QqPiBhcHBlbmRlZFJvd3M7CisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjYWxnb3JpdGhtLWZvci1wcm9jZXNzaW5nLXJvd3MK
KyAgICBhdXRvIHByb2Nlc3NSb3cgPSBbJiwgdGhpc10gKEFjY2Vzc2liaWxpdHlUYWJsZVJvdyog
cm93KSB7CisgICAgICAgIGlmICghcm93IHx8IGFwcGVuZGVkUm93cy5jb250YWlucyhyb3cpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7CisgICAg
ICAgIC8vIFN0ZXAgMTogSWYgeWhlaWdodCBpcyBlcXVhbCB0byB5Y3VycmVudCwgdGhlbiBpbmNy
ZWFzZSB5aGVpZ2h0IGJ5IDEuICh5Y3VycmVudCBtdXN0IG5ldmVyIGJlIGdyZWF0ZXIgdGhhbiB5
aGVpZ2h0LikKKyAgICAgICAgaWYgKHlIZWlnaHQgPD0geUN1cnJlbnQpCisgICAgICAgICAgICB5
SGVpZ2h0ID0geUN1cnJlbnQgKyAxOworCisgICAgICAgIC8vIFN0ZXAgMi4KKyAgICAgICAgdW5z
aWduZWQgeEN1cnJlbnQgPSAwOworICAgICAgICAvLyBTdGVwIDM6IFJ1biB0aGUgYWxnb3JpdGht
IGZvciBncm93aW5nIGRvd253YXJkLWdyb3dpbmcgY2VsbHMgKG5vdCBpbXBsZW1lbnRlZCkuCisK
KyAgICAgICAgLy8gU3RlcCA0OiBJZiB0aGUgdHIgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQgaGFz
IG5vIHRkIG9yIHRoIGVsZW1lbnQgY2hpbGRyZW4sIHRoZW4gaW5jcmVhc2UgeWN1cnJlbnQgYnkg
MSwgYWJvcnQgdGhpcyBzZXQgb2Ygc3RlcHMsIGFuZCByZXR1cm4gdG8gdGhlIGFsZ29yaXRobSBh
Ym92ZS4KKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHJvdy0+Y2hpbGRyZW4oKSkg
eworICAgICAgICAgICAgYXV0byogY3VycmVudENlbGwgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbD4oY2hpbGQuZ2V0KCkpOworICAgICAgICAgICAgaWYgKCFjdXJyZW50
Q2VsbCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gU3RlcCA2
OiBXaGlsZSB0aGUgc2xvdCB3aXRoIGNvb3JkaW5hdGUgKHhjdXJyZW50LCB5Y3VycmVudCkgYWxy
ZWFkeSBoYXMgYSBjZWxsIGFzc2lnbmVkIHRvIGl0LCBpbmNyZWFzZSB4Y3VycmVudCBieSAxLgor
ICAgICAgICAgICAgZW5zdXJlUm93QW5kQ29sdW1uKHlDdXJyZW50LCB4Q3VycmVudCk7CisgICAg
ICAgICAgICB3aGlsZSAobV9zbG90R3JpZFt5Q3VycmVudF1beEN1cnJlbnRdLmlzVmFsaWQoKSkg
eworICAgICAgICAgICAgICAgIHhDdXJyZW50ICs9IDE7CisgICAgICAgICAgICAgICAgZW5zdXJl
Um93QW5kQ29sdW1uKHlDdXJyZW50LCB4Q3VycmVudCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAvLyBTdGVwIDc6IElmIHhjdXJyZW50IGlzIGVxdWFsIHRvIHh3aWR0aCwgaW5jcmVhc2Ug
eHdpZHRoIGJ5IDEuICh4Y3VycmVudCBpcyBuZXZlciBncmVhdGVyIHRoYW4geHdpZHRoLikKKyAg
ICAgICAgICAgIGlmICh4Q3VycmVudCA+PSB4V2lkdGgpCisgICAgICAgICAgICAgICAgeFdpZHRo
ID0geEN1cnJlbnQgKyAxOworICAgICAgICAgICAgLy8gU3RlcCA4OiBJZiB0aGUgY3VycmVudCBj
ZWxsIGhhcyBhIGNvbHNwYW4gYXR0cmlidXRlLCB0aGVuIHBhcnNlIHRoYXQgYXR0cmlidXRlJ3Mg
dmFsdWUsIGFuZCBsZXQgY29sc3BhbiBiZSB0aGUgcmVzdWx0LgorICAgICAgICAgICAgdW5zaWdu
ZWQgY29sU3BhbiA9IGN1cnJlbnRDZWxsLT5jb2xTcGFuKCk7CisgICAgICAgICAgICAvLyBTdGVw
IDk6IElmIHRoZSBjdXJyZW50IGNlbGwgaGFzIGEgcm93c3BhbiBhdHRyaWJ1dGUsIHRoZW4gcGFy
c2UgdGhhdCBhdHRyaWJ1dGUncyB2YWx1ZSwgYW5kIGxldCByb3dzcGFuIGJlIHRoZSByZXN1bHQu
CisgICAgICAgICAgICB1bnNpZ25lZCByb3dTcGFuID0gY3VycmVudENlbGwtPnJvd1NwYW4oKTsK
KworICAgICAgICAgICAgLy8gU3RlcCAxMDogSWYgcm93c3BhbiBpcyB6ZXJvIGFuZCB0aGUgdGFi
bGUgZWxlbWVudCdzIG5vZGUgZG9jdW1lbnQgaXMgbm90IHNldCB0byBxdWlya3MgbW9kZSwgdGhl
biBsZXQKKyAgICAgICAgICAgIC8vIGNlbGwgZ3Jvd3MgZG93bndhcmQgYmUgdHJ1ZSwgYW5kIHNl
dCByb3dzcGFuIHRvIDEuIE90aGVyd2lzZSwgbGV0IGNlbGwgZ3Jvd3MgZG93bndhcmQgYmUgZmFs
c2UuCisgICAgICAgICAgICAvLyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGRvbid0IGltcGxlbWVu
dCB0aGlzIHN0ZXAgYmVjYXVzZSB0aGUgcmVuZGVyaW5nIGNvZGUgZG9lc24ndCwgc28gaW1wbGVt
ZW50aW5nIGl0CisgICAgICAgICAgICAvLyB3b3VsZCBjYXVzZSBBWCB0byBub3QgbWF0Y2ggdGhl
IHZpc3VhbCBzdGF0ZSBvZiB0aGUgcGFnZS4KKworICAgICAgICAgICAgLy8gU3RlcCAxMTogSWYg
eHdpZHRoIDwgeGN1cnJlbnQrY29sc3BhbiwgdGhlbiBsZXQgeHdpZHRoIGJlIHhjdXJyZW50K2Nv
bHNwYW4uCisgICAgICAgICAgICBpZiAoeFdpZHRoIDwgeEN1cnJlbnQgKyBjb2xTcGFuKQorICAg
ICAgICAgICAgICAgIHhXaWR0aCA9IHhDdXJyZW50ICsgY29sU3BhbjsKKworICAgICAgICAgICAg
Ly8gU3RlcCAxMjogSWYgeWhlaWdodCA8IHljdXJyZW50K3Jvd3NwYW4sIHRoZW4gbGV0IHloZWln
aHQgYmUgeWN1cnJlbnQrcm93c3Bhbi4KKyAgICAgICAgICAgIGlmICh5SGVpZ2h0IDwgeUN1cnJl
bnQgKyByb3dTcGFuKQorICAgICAgICAgICAgICAgIHlIZWlnaHQgPSB5Q3VycmVudCArIHJvd1Nw
YW47CisKKyAgICAgICAgICAgIC8vIFN0ZXAgMTM6IExldCB0aGUgc2xvdHMgd2l0aCBjb29yZGlu
YXRlcyAoeCwgeSkgc3VjaCB0aGF0IHhjdXJyZW50IOKJpCB4IDwgeGN1cnJlbnQrY29sc3BhbiBh
bmQKKyAgICAgICAgICAgIC8vIHljdXJyZW50IOKJpCB5IDwgeWN1cnJlbnQrcm93c3BhbiBiZSBj
b3ZlcmVkIGJ5IGEgbmV3IGNlbGwgYywgYW5jaG9yZWQgYXQgKHhjdXJyZW50LCB5Y3VycmVudCks
CisgICAgICAgICAgICAvLyB3aGljaCBoYXMgd2lkdGggY29sc3BhbiBhbmQgaGVpZ2h0IHJvd3Nw
YW4sIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGN1cnJlbnQgY2VsbCBlbGVtZW50LgorICAgICAgICAg
ICAgY3VycmVudENlbGwtPnNldENvbHVtbkluZGV4KHhDdXJyZW50KTsKKyAgICAgICAgICAgIGN1
cnJlbnRDZWxsLT5zZXRSb3dJbmRleCh5Q3VycmVudCk7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIHkgPSB5Q3VycmVudDsgeSA8IHlDdXJyZW50ICsgcm93U3BhbjsgeSsrKSB7CisgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCB4ID0geEN1cnJlbnQ7IHggPCB4Q3VycmVudCArIGNvbFNw
YW47IHgrKykgeworICAgICAgICAgICAgICAgICAgICBlbnN1cmVSb3dBbmRDb2x1bW4oeSwgeCk7
CisgICAgICAgICAgICAgICAgICAgIG1fc2xvdEdyaWRbeV1beF0gPSBjdXJyZW50Q2VsbC0+b2Jq
ZWN0SUQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFN0ZXAgMTQ6IElmIGNlbGwgZ3Jvd3MgZG93bndhcmQgaXMgdHJ1ZSwgdGhlbiBhZGQgdGhl
IHR1cGxlIHtjLCB4Y3VycmVudCwgY29sc3Bhbn0gdG8gdGhlCisgICAgICAgICAgICAvLyBsaXN0
IG9mIGRvd253YXJkLWdyb3dpbmcgY2VsbHMuIE5vdCBpbXBsZW1lbnRlZC4KKworICAgICAgICAg
ICAgLy8gU3RlcCAxNS4KKyAgICAgICAgICAgIHhDdXJyZW50ICs9IGNvbFNwYW47CisKKyAgICAg
ICAgICAgIC8vIFN0ZXAgMTcgYW5kIDE4OiBMZXQgY3VycmVudCBjZWxsIGJlIHRoZSBuZXh0IHRk
IG9yIHRoIGVsZW1lbnQgY2hpbGQgaW4gdGhlIHRyIGVsZW1lbnQgYmVpbmcgcHJvY2Vzc2VkLgog
ICAgICAgICB9Ci0gICAgfQogCi0gICAgdW5zaWduZWQgbWF4Q29sdW1uQ291bnQgPSAwOwotICAg
IFJlbmRlclRhYmxlU2VjdGlvbiogZm9vdGVyID0gdGFibGUuZm9vdGVyKCk7Ci0gICAgCi0gICAg
Zm9yIChSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2VjdGlvbiA9IHRhYmxlLnRvcFNlY3Rpb24o
KTsgdGFibGVTZWN0aW9uOyB0YWJsZVNlY3Rpb24gPSB0YWJsZS5zZWN0aW9uQmVsb3codGFibGVT
ZWN0aW9uLCBTa2lwRW1wdHlTZWN0aW9ucykpIHsKLSAgICAgICAgaWYgKHRhYmxlU2VjdGlvbiA9
PSBmb290ZXIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYWRkQ2hpbGRyZW5Gcm9t
U2VjdGlvbih0YWJsZVNlY3Rpb24sIG1heENvbHVtbkNvdW50KTsKKyAgICAgICAgLy8gTm90IHNw
ZWNpZmllZDogdXBkYXRlIHNvbWUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLgorICAgICAgICBt
X3Jvd3MuYXBwZW5kKHJvdyk7CisgICAgICAgIHJvdy0+c2V0Um93SW5kZXgoeUN1cnJlbnQpOwor
ICAgICAgICBhZGRDaGlsZChyb3cpOworCisgICAgICAgIC8vIFN0ZXAgMTY6IElmIGN1cnJlbnQg
Y2VsbCBpcyB0aGUgbGFzdCB0ZCBvciB0aCBlbGVtZW50IGNoaWxkIGluIHRoZSB0ciBlbGVtZW50
IGJlaW5nIHByb2Nlc3NlZCwgdGhlbiBpbmNyZWFzZSB5Y3VycmVudCBieSAxLCBhYm9ydCB0aGlz
IHNldCBvZiBzdGVwcywgYW5kIHJldHVybiB0byB0aGUgYWxnb3JpdGhtIGFib3ZlLgorICAgICAg
ICB5Q3VycmVudCArPSAxOworICAgIH07CisgICAgYXV0byBuZWVkc1RvRGVzY2VuZCA9IFsmYXBw
ZW5kZWRSb3dzXSAoQVhDb3JlT2JqZWN0JiBheE9iamVjdCkgeworICAgICAgICByZXR1cm4gKCFh
eE9iamVjdC5pc1RhYmxlUm93KCkgfHwgIWF4T2JqZWN0Lm5vZGUoKSkKKyAgICAgICAgICAgICYm
ICFhcHBlbmRlZFJvd3MuY29udGFpbnMoZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+KGF4T2JqZWN0KSk7CisgICAgfTsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoQVhDb3JlT2Jq
ZWN0Kik+IHByb2Nlc3NSb3dEZXNjZW5kaW5nSWZOZWVkZWQgPSBbJl0gKEFYQ29yZU9iamVjdCog
YXhPYmplY3QpIHsKKyAgICAgICAgaWYgKCFheE9iamVjdCkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgLy8gRGVzY2VuZCBwYXN0IGFub255bW91cyByZW5kZXJlcnMgYW5kIG5vbi1yb3dz
LgorICAgICAgICBpZiAobmVlZHNUb0Rlc2NlbmQoKmF4T2JqZWN0KSkgeworICAgICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGF4T2JqZWN0LT5jaGlsZHJlbigpKQorICAgICAgICAg
ICAgICAgIHByb2Nlc3NSb3dEZXNjZW5kaW5nSWZOZWVkZWQoY2hpbGQuZ2V0KCkpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIHByb2Nlc3NSb3coZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZVJvdz4oYXhPYmplY3QpKTsKKyAgICB9OworICAgIC8vIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RhYmxlcy5odG1sI2FsZ29yaXRobS1mb3ItZW5kaW5n
LWEtcm93LWdyb3VwCisgICAgYXV0byBlbmRSb3dHcm91cCA9IFsmXSAoKSB7CisgICAgICAgIGlm
ICh5Q3VycmVudCA8IHlIZWlnaHQpCisgICAgICAgICAgICB5Q3VycmVudCA9IHlIZWlnaHQ7Cisg
ICAgfTsKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS90YWJs
ZXMuaHRtbCNhbGdvcml0aG0tZm9yLXByb2Nlc3Npbmctcm93LWdyb3VwcworICAgIGF1dG8gcHJv
Y2Vzc1Jvd0dyb3VwID0gWyZdIChFbGVtZW50JiBzZWN0aW9uRWxlbWVudCkgeworICAgICAgICAv
LyBTdGVwIDE6IExldCB5c3RhcnQgaGF2ZSB0aGUgdmFsdWUgb2YgeWhlaWdodC4gTm90IGltcGxl
bWVudGVkIGJlY2F1c2UgaXQncyBvbmx5IHVzZWZ1bCBmb3Igc3RlcCAzLCB3aGljaCB3ZSBza2lw
LgorCisgICAgICAgIC8vIFN0ZXAgMjogRm9yIGVhY2ggdHIgZWxlbWVudCB0aGF0IGlzIGEgY2hp
bGQgb2YgdGhlIGVsZW1lbnQgYmVpbmcgcHJvY2Vzc2VkLAorICAgICAgICAvLyBpbiB0cmVlIG9y
ZGVyLCBydW4gdGhlIGFsZ29yaXRobSBmb3IgcHJvY2Vzc2luZyByb3dzLgorICAgICAgICBpZiAo
UmVmUHRyIHRhYmxlU2VjdGlvbiA9IGR5bmFtaWNEb3duY2FzdDxIVE1MVGFibGVTZWN0aW9uRWxl
bWVudD4oc2VjdGlvbkVsZW1lbnQpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHJvdyA6IGNo
aWxkcmVuT2ZUeXBlPEhUTUxUYWJsZVJvd0VsZW1lbnQ+KCp0YWJsZVNlY3Rpb24pKSB7CisgICAg
ICAgICAgICAgICAgUmVmUHRyIHRhYmxlUm93ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZVJvdz4oY2FjaGUtPmdldE9yQ3JlYXRlKCZyb3cpKTsKKyAgICAgICAgICAgICAgICBw
cm9jZXNzUm93KHRhYmxlUm93LmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNl
IGlmIChSZWZQdHIgc2VjdGlvbkF4T2JqZWN0ID0gY2FjaGUtPmdldE9yQ3JlYXRlKCZzZWN0aW9u
RWxlbWVudCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uobm9kZUhhc1JvbGUo
JnNlY3Rpb25FbGVtZW50LCAicm93Z3JvdXAiX3MpLCAicHJvY2Vzc1Jvd0dyb3VwIHNob3VsZCBv
bmx5IGJlIGNhbGxlZCB3aXRoIG5hdGl2ZSB0YWJsZSBzZWN0aW9uIGVsZW1lbnRzLCBvciByb2xl
PXJvd2dyb3VwIGVsZW1lbnRzIik7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxk
IDogc2VjdGlvbkF4T2JqZWN0LT5jaGlsZHJlbigpKQorICAgICAgICAgICAgICAgIHByb2Nlc3NS
b3dEZXNjZW5kaW5nSWZOZWVkZWQoY2hpbGQuZ2V0KCkpOworICAgICAgICB9CisgICAgICAgIC8v
IFN0ZXAgMzogSWYgeWhlaWdodCA+IHlzdGFydCwgdGhlbiBsZXQgYWxsIHRoZSBsYXN0IHJvd3Mg
aW4gdGhlIHRhYmxlIGZyb20geT15c3RhcnQgdG8geT15aGVpZ2h0LTEKKyAgICAgICAgLy8gZm9y
bSBhIG5ldyByb3cgZ3JvdXAsIGFuY2hvcmVkIGF0IHRoZSBzbG90IHdpdGggY29vcmRpbmF0ZSAo
MCwgeXN0YXJ0KSwgd2l0aCBoZWlnaHQgeWhlaWdodC15c3RhcnQsCisgICAgICAgIC8vIGNvcnJl
c3BvbmRpbmcgdG8gdGhlIGVsZW1lbnQgYmVpbmcgcHJvY2Vzc2VkLiBOb3QgaW1wbGVtZW50ZWQu
CisKKyAgICAgICAgLy8gU3RlcCA0OiBSdW4gdGhlIGFsZ29yaXRobSBmb3IgZW5kaW5nIGEgcm93
IGdyb3VwLgorICAgICAgICBlbmRSb3dHcm91cCgpOworICAgIH07CisKKyAgICAvLyBTdGVwIDQ6
IExldCB0aGUgdGFibGUgYmUgdGhlIHRhYmxlIHJlcHJlc2VudGVkIGJ5IHRoZSB0YWJsZSBlbGVt
ZW50LgorICAgIFJlZlB0ciB0YWJsZUVsZW1lbnQgPSB0aGlzLT5ub2RlKCk7CisgICAgLy8gYGlz
QXJpYVRhYmxlKClgIHdpbGwgcmV0dXJuIHRydWUgZm9yIHRhYmxlLWxpa2UgQVJJQSBzdHJ1Y3R1
cmVzIChncmlkLCB0cmVlZ3JpZCwgdGFibGUpLgorICAgIGlmICghaXM8SFRNTFRhYmxlRWxlbWVu
dD4odGFibGVFbGVtZW50LmdldCgpKSAmJiAhaXNBcmlhVGFibGUoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKE5vZGUqKT4gcHJvY2Vzc1RhYmxlRGVzY2VuZGFu
dCA9IFsmLCB0aGlzXSAoTm9kZSogbm9kZSkgeworICAgICAgICAvLyBTdGVwIDg6IFdoaWxlIHRo
ZSBjdXJyZW50IGVsZW1lbnQgaXMgbm90IG9uZSBvZiB0aGUgZm9sbG93aW5nIGVsZW1lbnRzLCBh
ZHZhbmNlIHRoZQorICAgICAgICAvLyBjdXJyZW50IGVsZW1lbnQgdG8gdGhlIG5leHQgY2hpbGQg
b2YgdGhlIHRhYmxlLgorICAgICAgICBpZiAoYXV0byogY2FwdGlvbiA9IGR5bmFtaWNEb3duY2Fz
dDxIVE1MVGFibGVDYXB0aW9uRWxlbWVudD4obm9kZSkpIHsKKyAgICAgICAgICAgIC8vIFN0ZXAg
NjogQXNzb2NpYXRlIHRoZSBmaXJzdCBjYXB0aW9uIGVsZW1lbnQgY2hpbGQgb2YgdGhlIHRhYmxl
IGVsZW1lbnQgd2l0aCB0aGUgdGFibGUuCisgICAgICAgICAgICBpZiAoIWNhcHRpb25FbGVtZW50
KQorICAgICAgICAgICAgICAgIGNhcHRpb25FbGVtZW50ID0gY2FwdGlvbjsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBkeW5hbWljRG93
bmNhc3Q8RWxlbWVudD4obm9kZSk7CisgICAgICAgIGJvb2wgZGVzY2VuZGFudElzUm93ID0gZWxl
bWVudCAmJiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0clRhZykgfHwgbm9kZUhhc1JvbGUoZWxlbWVu
dCwgInJvdyJfcykpOworICAgICAgICBib29sIGRlc2NlbmRhbnRJc1Jvd0dyb3VwID0gZWxlbWVu
dCAmJiAhZGVzY2VuZGFudElzUm93ICYmIChlbGVtZW50LT5oYXNUYWdOYW1lKHRoZWFkVGFnKSB8
fCBlbGVtZW50LT5oYXNUYWdOYW1lKHRib2R5VGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKHRm
b290VGFnKSB8fCBub2RlSGFzUm9sZShlbGVtZW50LCAicm93Z3JvdXAiX3MpKTsKKworICAgICAg
ICAvLyBTdGVwIDk6IEhhbmRsZSB0aGUgY29sZ3JvdXAgZWxlbWVudC4gTm90IGltcGxlbWVudGVk
LgorICAgICAgICAvLyBTdGVwIDEwOiBIYW5kbGVkIGFib3ZlLgorICAgICAgICAvLyBTdGVwIDEx
OiBTa2lwcGVkLiBOb3QgY3VycmVudGx5IGltcGxlbWVudGluZyAiZG93bndhcmQtZ3Jvd2luZyBj
ZWxscyIgYWxnb3JpdGhtLgorICAgICAgICAvLyBTdGVwIDEyOiBXaGlsZSB0aGUgY3VycmVudCBl
bGVtZW50IGlzIG5vdCBvbmUgb2YgdGhlIGZvbGxvd2luZyBlbGVtZW50cywgYWR2YW5jZSB0aGUg
Y3VycmVudCBlbGVtZW50IHRvIHRoZSBuZXh0IGNoaWxkIG9mIHRoZSB0YWJsZQorICAgICAgICBp
ZiAoIWRlc2NlbmRhbnRJc1JvdyAmJiAhZGVzY2VuZGFudElzUm93R3JvdXApIHsKKyAgICAgICAg
ICAgIGlmIChpc0FyaWFUYWJsZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGZvcmdp
dmluZyB3aXRoIEFSSUEgZ3JpZCBtYXJrdXAsIGRlc2NlbmRpbmcgcGFzdCBkaXNhbGxvd2VkIGVs
ZW1lbnRzIHRvIGJ1aWxkIHRoZSBncmlkIHN0cnVjdHVyZSAodGhpcyBpcyBub3Qgc3BlY2lmaWVk
LCBidXQgY29uc2lzdGVudCB3aXRoIG90aGVyIGJyb3dzZXJzKS4KKyAgICAgICAgICAgICAgICBp
ZiAoYXV0byogYXhPYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUobm9kZSk7IGF4T2JqZWN0ICYm
IG5lZWRzVG9EZXNjZW5kKCpheE9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBjaGlsZCA6IGF4T2JqZWN0LT5jaGlsZHJlbigpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc1RhYmxlRGVzY2VuZGFudChjaGlsZCA/IGNoaWxkLT5ub2RlKCkgOiBu
dWxscHRyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBTdGVwIDEzOiBJZiB0aGUgY3VycmVudCBl
bGVtZW50IGlzIGEgdHIsIHRoZW4gcnVuIHRoZSBhbGdvcml0aG0gZm9yIHByb2Nlc3Npbmcgcm93
cywKKyAgICAgICAgLy8gYWR2YW5jZSB0aGUgY3VycmVudCBlbGVtZW50IHRvIHRoZSBuZXh0IGNo
aWxkIG9mIHRoZSB0YWJsZSwgYW5kIHJldHVybiB0byB0aGUgc3RlcCBsYWJlbGVkIHJvd3MuCisg
ICAgICAgIGlmIChkZXNjZW5kYW50SXNSb3cpCisgICAgICAgICAgICBwcm9jZXNzUm93KGR5bmFt
aWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KGNhY2hlLT5nZXRPckNyZWF0ZShlbGVt
ZW50KSkpOworCisgICAgICAgIC8vIFN0ZXAgMTQ6IFJ1biB0aGUgYWxnb3JpdGhtIGZvciBlbmRp
bmcgYSByb3cgZ3JvdXAuCisgICAgICAgIGVuZFJvd0dyb3VwKCk7CisKKyAgICAgICAgLy8gU3Rl
cCAxNTogSWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBhIHRmb290Li4uCisgICAgICAgIGlmIChl
bGVtZW50LT5oYXNUYWdOYW1lKHRmb290VGFnKSkgeworICAgICAgICAgICAgLy8gLi4udGhlbiBh
ZGQgdGhhdCBlbGVtZW50IHRvIHRoZSBsaXN0IG9mIHBlbmRpbmcgdGZvb3QgZWxlbWVudHMKKyAg
ICAgICAgICAgIHBlbmRpbmdUZm9vdEVsZW1lbnRzLmFwcGVuZCgqZWxlbWVudCk7CisgICAgICAg
ICAgICAvLyAuLi5hZHZhbmNlIHRoZSBjdXJyZW50IGVsZW1lbnQgdG8gdGhlIG5leHQgY2hpbGQg
b2YgdGhlIHRhYmxlLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gU3RlcCAxNjogSWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBlaXRoZXIgYSB0aGVhZCBvciBh
IHRib2R5LCBydW4gdGhlIGFsZ29yaXRobSBmb3IgcHJvY2Vzc2luZyByb3cgZ3JvdXBzLiAoTm90
IHNwZWNpZmllZDogaW5jbHVkZSByb2xlPSJyb3dncm91cHMiKS4KKyAgICAgICAgaWYgKGRlc2Nl
bmRhbnRJc1Jvd0dyb3VwKQorICAgICAgICAgICAgcHJvY2Vzc1Jvd0dyb3VwKCplbGVtZW50KTsK
KyAgICB9OworICAgIC8vIFN0ZXAgNzogTGV0IHRoZSBjdXJyZW50IGVsZW1lbnQgYmUgdGhlIGZp
cnN0IGVsZW1lbnQgY2hpbGQgb2YgdGhlIHRhYmxlIGVsZW1lbnQuCisgICAgZm9yIChSZWZQdHIg
Y3VycmVudEVsZW1lbnQgPSB0YWJsZUVsZW1lbnQtPmZpcnN0Q2hpbGQoKTsgY3VycmVudEVsZW1l
bnQ7IGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQtPm5leHRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgcHJvY2Vzc1RhYmxlRGVzY2VuZGFudChjdXJyZW50RWxlbWVudC5nZXQoKSk7CisgICAg
ICAgIC8vIFN0ZXAgMTcgKyAxODogQWR2YW5jZSB0aGUgY3VycmVudCBlbGVtZW50IHRvIHRoZSBu
ZXh0IGNoaWxkIG9mIHRoZSB0YWJsZS4KICAgICB9Ci0gICAgCi0gICAgLy8gUHJvY2VzcyB0aGUg
Zm9vdGVyIGxhc3QsIGluIGNhc2UgaXQgd2FzIG9yZGVyZWQgZWFybGllciBpbiB0aGUgRE9NLgot
ICAgIGlmIChmb290ZXIpCi0gICAgICAgIGFkZENoaWxkcmVuRnJvbVNlY3Rpb24oZm9vdGVyLCBt
YXhDb2x1bW5Db3VudCk7Ci0gICAgCi0gICAgYXV0byogYXhDYWNoZSA9IGRvY3VtZW50KCktPmF4
T2JqZWN0Q2FjaGUoKTsKLSAgICAvLyBtYWtlIHRoZSBjb2x1bW5zIGJhc2VkIG9uIHRoZSBudW1i
ZXIgb2YgY29sdW1ucyBpbiB0aGUgZmlyc3QgYm9keQotICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1h
eENvbHVtbkNvdW50OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewotICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW4+KCpheENhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbikpOworCisgICAg
Ly8gU3RlcCAxOTogRm9yIGVhY2ggdGZvb3QgZWxlbWVudCBpbiB0aGUgbGlzdCBvZiBwZW5kaW5n
IHRmb290IGVsZW1lbnRzLCBpbiB0cmVlIG9yZGVyLAorICAgIC8vIHJ1biB0aGUgYWxnb3JpdGht
IGZvciBwcm9jZXNzaW5nIHJvdyBncm91cHMuCisgICAgZm9yIChjb25zdCBhdXRvJiB0Zm9vdEVs
ZW1lbnQgOiBwZW5kaW5nVGZvb3RFbGVtZW50cykKKyAgICAgICAgcHJvY2Vzc1Jvd0dyb3VwKHRm
b290RWxlbWVudC5nZXQoKSk7CisKKyAgICAvLyBUaGUgcmVtYWluZGVyIG9mIHRoaXMgZnVuY3Rp
b24gaXMgdW5zcGVjaWZpZWQgdXBkYXRpbmcgb2YgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLgor
ICAgIGFkZENoaWxkKGNhY2hlLT5nZXRPckNyZWF0ZShjYXB0aW9uRWxlbWVudC5nZXQoKSksIERl
c2NlbmRJZklnbm9yZWQ6Ok5vKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB4V2lk
dGg7ICsraSkgeworICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4+KCpjYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4pKTsK
ICAgICAgICAgY29sdW1uLnNldENvbHVtbkluZGV4KGkpOwogICAgICAgICBjb2x1bW4uc2V0UGFy
ZW50KHRoaXMpOwogICAgICAgICBtX2NvbHVtbnMuYXBwZW5kKCZjb2x1bW4pOwpAQCAtNDcxLDY2
ICs2NjMsNiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4oKQogICAgIHVw
ZGF0ZUNoaWxkcmVuUm9sZXMoKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZFRh
YmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvd09iamVjdCwgSGFzaFNldDxBY2Nl
c3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KQot
ewotICAgIGlmICghcm93T2JqZWN0IHx8ICFpczxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpyb3dP
YmplY3QpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvJiByb3cgPSBkb3duY2FzdDxBY2Nl
c3NpYmlsaXR5VGFibGVSb3c+KCpyb3dPYmplY3QpOwotICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sg
ZXZlcnkgY2VsbCBmb3IgYSBuZXcgcm93LCBiZWNhdXNlIGNlbGwgc3BhbnMKLSAgICAvLyBjYW4g
Y2F1c2UgdXMgdG8gbWlzcyByb3dzIGlmIHdlIGp1c3QgY2hlY2sgdGhlIGZpcnN0IGNvbHVtbi4K
LSAgICBpZiAoYXBwZW5kZWRSb3dzLmNvbnRhaW5zKCZyb3cpKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgcm93LnNldFJvd0luZGV4KHN0YXRpY19jYXN0PGludD4obV9yb3dzLnNpemUoKSkp
OwotICAgIG1fcm93cy5hcHBlbmQoJnJvdyk7Ci0gICAgYWRkQ2hpbGQoJnJvdywgRGVzY2VuZElm
SWdub3JlZDo6Tm8pOwotICAgIGFwcGVuZGVkUm93cy5hZGQoJnJvdyk7Ci0gICAgICAgIAotICAg
IC8vIHN0b3JlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zCi0gICAgdW5zaWduZWQgcm93
Q2VsbENvdW50ID0gcm93LmNoaWxkcmVuKCkuc2l6ZSgpOwotICAgIGlmIChyb3dDZWxsQ291bnQg
PiBjb2x1bW5Db3VudCkKLSAgICAgICAgY29sdW1uQ291bnQgPSByb3dDZWxsQ291bnQ7Ci19Ci0K
LXZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbkZyb21TZWN0aW9uKFJlbmRlclRh
YmxlU2VjdGlvbiogdGFibGVTZWN0aW9uLCB1bnNpZ25lZCYgbWF4Q29sdW1uQ291bnQpCi17Ci0g
ICAgQVNTRVJUKHRhYmxlU2VjdGlvbik7Ci0gICAgaWYgKCF0YWJsZVNlY3Rpb24pCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBhdXRvKiBheENhY2hlID0gZG9jdW1lbnQoKS0+YXhPYmplY3RD
YWNoZSgpOwotICAgIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+IGFwcGVuZGVkUm93czsK
LSAgICB1bnNpZ25lZCBudW1Sb3dzID0gdGFibGVTZWN0aW9uLT5udW1Sb3dzKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgbnVtUm93czsgKytyb3dJbmRleCkg
ewotICAgICAgICAKLSAgICAgICAgUmVuZGVyVGFibGVSb3cqIHJlbmRlclJvdyA9IHRhYmxlU2Vj
dGlvbi0+cm93UmVuZGVyZXJBdChyb3dJbmRleCk7Ci0gICAgICAgIGlmICghcmVuZGVyUm93KQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0JiByb3dPYmplY3QgPSAqYXhDYWNoZS0+Z2V0T3JDcmVhdGUocmVuZGVyUm93KTsKLSAgICAg
ICAgCi0gICAgICAgIC8vIElmIHRoZSByb3cgaXMgYW5vbnltb3VzLCB3ZSBzaG91bGQgZGl2ZSBk
ZWVwZXIgaW50byB0aGUgZGVzY2VuZGFudHMgdG8gdHJ5IHRvIGZpbmQgYSB2YWxpZCByb3cuCi0g
ICAgICAgIGlmIChyZW5kZXJSb3ctPmlzQW5vbnltb3VzKCkpIHsKLSAgICAgICAgICAgIERlcXVl
PEFjY2Vzc2liaWxpdHlPYmplY3QqPiBxdWV1ZTsKLSAgICAgICAgICAgIHF1ZXVlLmFwcGVuZCgm
cm93T2JqZWN0KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgd2hpbGUgKCFxdWV1ZS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBxdWV1
ZS50YWtlRmlyc3QoKTsKLSAgICAgICAgICAgICAgICBpZiAob2JqLT5ub2RlKCkgJiYgaXM8QWNj
ZXNzaWJpbGl0eVRhYmxlUm93Pigqb2JqKSkgewotICAgICAgICAgICAgICAgICAgICBhZGRUYWJs
ZUNlbGxDaGlsZChvYmosIGFwcGVuZGVkUm93cywgbWF4Q29sdW1uQ291bnQpOwotICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
Zm9yIChhdXRvKiBjaGlsZCA9IG9iai0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgcXVldWUuYXBwZW5kKGNoaWxk
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBhZGRUYWJsZUNl
bGxDaGlsZCgmcm93T2JqZWN0LCBhcHBlbmRlZFJvd3MsIG1heENvbHVtbkNvdW50KTsKLSAgICB9
Ci0gICAgCi0gICAgbWF4Q29sdW1uQ291bnQgPSBzdGQ6Om1heCh0YWJsZVNlY3Rpb24tPm51bUNv
bHVtbnMoKSwgbWF4Q29sdW1uQ291bnQpOwotfQotICAgIAogQVhDb3JlT2JqZWN0KiBBY2Nlc3Np
YmlsaXR5VGFibGU6OmhlYWRlckNvbnRhaW5lcigpCiB7CiAgICAgaWYgKG1faGVhZGVyQ29udGFp
bmVyKQpAQCAtNjQyLDMwICs3NzQsMTEgQEAgaW50IEFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVM
ZXZlbCgpIGNvbnN0CiBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbEZvckNv
bHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW4sIHVuc2lnbmVkIHJvdykKIHsKICAgICB1cGRhdGVD
aGlsZHJlbklmTmVjZXNzYXJ5KCk7Ci0gICAgaWYgKGNvbHVtbiA+PSBjb2x1bW5Db3VudCgpIHx8
IHJvdyA+PSByb3dDb3VudCgpKQorICAgIGlmIChyb3cgPj0gbV9zbG90R3JpZC5zaXplKCkgfHwg
Y29sdW1uID49IG1fc2xvdEdyaWRbcm93XS5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIAotICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRocm91Z2ggdGhlIHJvd3MgaW4gY2Fz
ZSB0aGUgZGVzaXJlZCBjZWxsIGhhcyBhIHJvd3NwYW4gYW5kIGV4aXN0cyBpbiBhIHByZXZpb3Vz
IHJvdy4KLSAgICBmb3IgKHVuc2lnbmVkIHJvd0luZGV4Q291bnRlciA9IHJvdyArIDE7IHJvd0lu
ZGV4Q291bnRlciA+IDA7IC0tcm93SW5kZXhDb3VudGVyKSB7Ci0gICAgICAgIHVuc2lnbmVkIHJv
d0luZGV4ID0gcm93SW5kZXhDb3VudGVyIC0gMTsKLSAgICAgICAgY29uc3QgYXV0byYgY2hpbGRy
ZW4gPSBtX3Jvd3Nbcm93SW5kZXhdLT5jaGlsZHJlbigpOwotICAgICAgICAvLyBTaW5jZSBzb21l
IGNlbGxzIG1heSBoYXZlIGNvbHNwYW5zLCB3ZSBoYXZlIHRvIGNoZWNrIHRoZSBhY3R1YWwgcmFu
Z2Ugb2YgZWFjaAotICAgICAgICAvLyBjZWxsIHRvIGRldGVybWluZSB3aGljaCBpcyB0aGUgcmln
aHQgb25lLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGNvbEluZGV4Q291bnRlciA9IHN0ZDo6bWlu
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihjaGlsZHJlbi5zaXplKCkpLCBjb2x1bW4gKyAxKTsgY29s
SW5kZXhDb3VudGVyID4gMDsgLS1jb2xJbmRleENvdW50ZXIpIHsKLSAgICAgICAgICAgIHVuc2ln
bmVkIGNvbEluZGV4ID0gY29sSW5kZXhDb3VudGVyIC0gMTsKLSAgICAgICAgICAgIEFYQ29yZU9i
amVjdCogY2hpbGQgPSBjaGlsZHJlbltjb2xJbmRleF0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAo
IWNoaWxkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBhdXRvIGNv
bHVtblJhbmdlID0gY2hpbGQtPmNvbHVtbkluZGV4UmFuZ2UoKTsKLSAgICAgICAgICAgIGF1dG8g
cm93UmFuZ2UgPSBjaGlsZC0+cm93SW5kZXhSYW5nZSgpOwotCi0gICAgICAgICAgICBpZiAoKGNv
bHVtbiA+PSBjb2x1bW5SYW5nZS5maXJzdCAmJiBjb2x1bW4gPCAoY29sdW1uUmFuZ2UuZmlyc3Qg
KyBjb2x1bW5SYW5nZS5zZWNvbmQpKQotICAgICAgICAgICAgICAgICYmIChyb3cgPj0gcm93UmFu
Z2UuZmlyc3QgJiYgcm93IDwgKHJvd1JhbmdlLmZpcnN0ICsgcm93UmFuZ2Uuc2Vjb25kKSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkOwotICAgICAgICB9Ci0gICAgfQogCisgICAgaWYg
KEFYSUQgY2VsbElEID0gbV9zbG90R3JpZFtyb3ddW2NvbHVtbl0pCisgICAgICAgIHJldHVybiBh
eE9iamVjdENhY2hlKCktPm9iamVjdEZvcklEKGNlbGxJRCk7CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKQEAgLTc0Niw0ICs4NTksMTcgQEAgaW50IEFjY2Vzc2liaWxpdHlUYWJsZTo6YXhSb3dD
b3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
OjplbnN1cmVSb3codW5zaWduZWQgaW5kZXgpCit7CisgICAgaWYgKG1fc2xvdEdyaWQuc2l6ZSgp
IDwgaW5kZXggKyAxKQorICAgICAgICBtX3Nsb3RHcmlkLmdyb3coaW5kZXggKyAxKTsKK30KKwor
dm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmVuc3VyZVJvd0FuZENvbHVtbih1bnNpZ25lZCByb3dJ
bmRleCwgdW5zaWduZWQgY29sdW1uSW5kZXgpCit7CisgICAgZW5zdXJlUm93KHJvd0luZGV4KTsK
KyAgICBpZiAobV9zbG90R3JpZFtyb3dJbmRleF0uc2l6ZSgpIDwgY29sdW1uSW5kZXggKyAxKQor
ICAgICAgICBtX3Nsb3RHcmlkW3Jvd0luZGV4XS5ncm93KGNvbHVtbkluZGV4ICsgMSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCmluZGV4IDI3NDZiZTM5NWEyOS4uNDkyZTlkZDg2OGE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmgKQEAgLTI5LDE3ICsyOSwxNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlUm93OwogY2xhc3MgSFRNTFRhYmxlRWxlbWVudDsKLWNs
YXNzIFJlbmRlclRhYmxlU2VjdGlvbjsKLSAgICAKKwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxl
IDogcHVibGljIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgc3Rh
dGljIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGU+IGNyZWF0ZShOb2RlJik7CiAgICAgdmlydHVhbCB+
QWNjZXNzaWJpbGl0eVRhYmxlKCk7CiAKICAgICB2b2lkIGluaXQoKSBmaW5hbDsKQEAgLTQ3LDE1
ICs0NywxNSBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3QgZmluYWw7CiAgICAgdmlydHVhbCBib29sIGlzQXJpYVRhYmxlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAotICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIGFk
ZENoaWxkcmVuKCkgZmluYWw7CiAgICAgdm9pZCBjbGVhckNoaWxkcmVuKCkgZmluYWw7CiAgICAg
dm9pZCB1cGRhdGVDaGlsZHJlblJvbGVzKCk7CiAKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgY29sdW1ucygpIG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciByb3dzKCkgb3ZlcnJpZGU7CiAKLSAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCgpIG92ZXJyaWRl
OwotICAgIHVuc2lnbmVkIHJvd0NvdW50KCkgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgY29sdW1u
Q291bnQoKSBmaW5hbDsKKyAgICB1bnNpZ25lZCByb3dDb3VudCgpIGZpbmFsOwogICAgIGludCB0
YWJsZUxldmVsKCkgY29uc3QgZmluYWw7CiAKICAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCBmaW5h
bDsKQEAgLTcxLDE5ICs3MSwyNiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBhbiBvYmplY3Qg
dGhhdCBjb250YWlucywgYXMgY2hpbGRyZW4sIGFsbCB0aGUgb2JqZWN0cyB0aGF0IGFjdCBhcyBo
ZWFkZXJzLgogICAgIEFYQ29yZU9iamVjdCogaGVhZGVyQ29udGFpbmVyKCkgb3ZlcnJpZGU7CiAK
LSAgICBib29sIGlzVGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
Ym9vbCBpc1RhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIC8vIFJldHVy
bnMgd2hldGhlciBpdCBpcyBleHBvc2VkIGFzIGFuIEFjY2Vzc2liaWxpdHlUYWJsZSB0byB0aGUg
cGxhdGZvcm0uCi0gICAgYm9vbCBpc0V4cG9zYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaXNFeHBvc2FibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzRXhwb3NhYmxlOyB9CiAg
ICAgdm9pZCByZWNvbXB1dGVJc0V4cG9zYWJsZSgpOwogCi0gICAgaW50IGF4Q29sdW1uQ291bnQo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQgYXhSb3dDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGludCBheENvbHVtbkNvdW50KCkgY29uc3QgZmluYWw7CisgICAgaW50IGF4Um93Q291bnQo
KSBjb25zdCBmaW5hbDsKKworICAgIFZlY3RvcjxWZWN0b3I8QVhJRD4+IHNsb3RHcmlkKCkgZmlu
YWw7CisgICAgdm9pZCBzZXRTbG90R3JpZERpcnR5KCk7CiAKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBBY2Nlc3NpYmlsaXR5VGFibGUoUmVuZGVyT2JqZWN0Kik7CisgICAgZXhwbGljaXQgQWNj
ZXNzaWJpbGl0eVRhYmxlKE5vZGUmKTsKIAogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBtX3Jvd3M7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG1fY29sdW1uczsKKyAg
ICAvLyAyRCBtYXRyaXggb2YgdGhlIGNlbGxzIGFzc2lnbmVkIHRvIGVhY2ggInNsb3QiIGluIHRo
aXMgdGFibGUuCisgICAgLy8gKCJTbG90IiBhcyBkZWZpbmVkIGhlcmU6IGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RhYmxlcy5odG1sI2NvbmNlcHQtc2xvdHMpCisgICAg
VmVjdG9yPFZlY3RvcjxBWElEPj4gbV9zbG90R3JpZDsKIAogICAgIFJlZlB0cjxBY2Nlc3NpYmls
aXR5T2JqZWN0PiBtX2hlYWRlckNvbnRhaW5lcjsKICAgICBib29sIG1faXNFeHBvc2FibGU7CkBA
IC05MywxMiArMTAwLDE1IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSBjb25zdCBmaW5hbDsKIAorICAgIHZvaWQgYWRkUm93KEFjY2Vzc2li
aWxpdHlUYWJsZVJvdyYsIHVuc2lnbmVkLCB1bnNpZ25lZCYgbWF4Q29sdW1uQ291bnQpOworCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hB
Y2Nlc3NpYmlsaXR5KCkgY29uc3Q7CiAgICAgdm9pZCB0aXRsZUVsZW1lbnRUZXh0KFZlY3RvcjxB
Y2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdCBmaW5hbDsKICAgICBIVE1MVGFibGVFbGVtZW50KiB0
YWJsZUVsZW1lbnQoKSBjb25zdDsKLSAgICB2b2lkIGFkZENoaWxkcmVuRnJvbVNlY3Rpb24oUmVu
ZGVyVGFibGVTZWN0aW9uKiwgdW5zaWduZWQmIG1heENvbHVtbkNvdW50KTsKLSAgICB2b2lkIGFk
ZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBIYXNoU2V0PEFjY2Vzc2liaWxp
dHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpOworCisgICAg
dm9pZCBlbnN1cmVSb3codW5zaWduZWQpOworICAgIHZvaWQgZW5zdXJlUm93QW5kQ29sdW1uKHVu
c2lnbmVkIC8qIHJvd0luZGV4ICovLCB1bnNpZ25lZCAvKiBjb2x1bW5JbmRleCAqLyk7CiAKICAg
ICBib29sIGhhc05vblRhYmxlQVJJQVJvbGUoKSBjb25zdDsKICAgICAvLyBpc0RhdGFUYWJsZSBp
cyB3aGV0aGVyIGl0IGlzIGV4cG9zZWQgYXMgYW4gQWNjZXNzaWJpbGl0eVRhYmxlIGJlY2F1c2Ug
dGhlIGhldXJpc3RpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKaW5kZXggMDI1OWZmYTQ5YmI4Li4zMjhlODYwNzlh
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDZWxsLmNwcApAQCAtMjksMTkgKzI5LDEzIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgogCi0jaW5jbHVkZSAiQVhP
YmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgotI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgot
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiTWF0aE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5k
ZXJlcikKQEAgLTQ5LDYgKzQzLDEyIEBAIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OkFjY2Vzc2li
aWxpdHlUYWJsZUNlbGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKIH0KIAorQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChOb2RlJiBub2RlKQorICAgIDog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChub2RlKQorICAgICwgbV9heENvbEluZGV4RnJvbVJv
dygtMSkKK3sKK30KKwogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6fkFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwoKSA9IGRlZmF1bHQ7CiAKIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPiBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTU2LDYg
KzU2LDExIEBAIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPiBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChyZW5kZXJlcikpOwogfQogCitSZWY8QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbD4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKE5vZGUmIG5vZGUp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChub2Rl
KSk7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24g
ZGVjaXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7CkBAIC02NiwxMSArNzEsMTEgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpIGNvbnN0CiAgICAgCiAgICAgLy8gSWdub3JlIGFub255bW91cyB0YWJsZSBjZWxscyBhcyBs
b25nIGFzIHRoZXkncmUgbm90IGluIGEgdGFibGUgKGllLiB3aGVuIGRpc3BsYXk6dGFibGUgaXMg
dXNlZCkuCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJUYWJsZSA9IGlzPFJlbmRlclRhYmxlQ2Vs
bD4ocmVuZGVyZXIoKSkgPyBkb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCptX3JlbmRlcmVyKS50
YWJsZSgpIDogbnVsbHB0cjsKLSAgICBib29sIGluVGFibGUgPSByZW5kZXJUYWJsZSAmJiByZW5k
ZXJUYWJsZS0+bm9kZSgpICYmIChyZW5kZXJUYWJsZS0+bm9kZSgpLT5oYXNUYWdOYW1lKHRhYmxl
VGFnKSB8fCBub2RlSGFzUm9sZShyZW5kZXJUYWJsZS0+bm9kZSgpLCAiZ3JpZCJfcykpOworICAg
IGJvb2wgaW5UYWJsZSA9IHJlbmRlclRhYmxlICYmIHJlbmRlclRhYmxlLT5ub2RlKCkgJiYgKHJl
bmRlclRhYmxlLT5ub2RlKCktPmhhc1RhZ05hbWUodGFibGVUYWcpIHx8IG5vZGVIYXNHcmlkUm9s
ZShyZW5kZXJUYWJsZS0+bm9kZSgpKSk7CiAgICAgaWYgKCFub2RlKCkgJiYgIWluVGFibGUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKLSAgICBpZiAoIWlzVGFibGVDZWxsKCkpCisg
ICAgaWYgKCFpc0V4cG9zZWRUYWJsZUNlbGwoKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CiAgICAgCiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE4LDcgKzEyMyw3IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSog
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIHJldHVybiBk
eW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPih0YWJsZUZyb21SZW5kZXJUcmVlKTsK
IH0KICAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6aXNUYWJsZUNlbGwoKSBjb25z
dAorYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc0V4cG9zZWRUYWJsZUNlbGwoKSBjb25z
dAogewogICAgIC8vIElmIHRoZSBwYXJlbnQgdGFibGUgaXMgYW4gYWNjZXNzaWJpbGl0eSB0YWJs
ZSwgdGhlbiB3ZSBhcmUgYSB0YWJsZSBjZWxsLgogICAgIC8vIFRoaXMgdXNlZCB0byBjaGVjayBp
ZiB0aGUgdW5pZ25vcmVkUGFyZW50IHdhcyBhIHJvdywgYnV0IHRoYXQgZXhwbG9kZWQgcGVyZm9y
bWFuY2UgaWYKQEAgLTEzNiw3ICsxNDEsNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAgaWYgKGRlZmF1
bHRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIgfHwgZGVmYXVsdFJvbGUg
PT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciB8fCBkZWZhdWx0Um9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6Q2VsbCB8fCBkZWZhdWx0Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6R3Jp
ZENlbGwpCiAgICAgICAgIHJldHVybiBkZWZhdWx0Um9sZTsKIAotICAgIGlmICghaXNUYWJsZUNl
bGwoKSkKKyAgICBpZiAoIWlzRXhwb3NlZFRhYmxlQ2VsbCgpKQogICAgICAgICByZXR1cm4gZGVm
YXVsdFJvbGU7CiAgICAgaWYgKGlzQ29sdW1uSGVhZGVyQ2VsbCgpKQogICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlcjsKQEAgLTE0OCw3ICsxNTMsMjIgQEAgQWNj
ZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6ZGV0ZXJtaW5lQWNjZXNzaWJp
bGl0eVJvbGUoKQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlSGVh
ZGVyQ2VsbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1RhZ05h
bWUodGhUYWcpOworICAgIGF1dG8qIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYgKCFub2Rl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0aFRh
ZykpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodGRU
YWcpKSB7CisgICAgICAgIGF1dG8qIGN1cnJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMiAmJiBjdXJyZW50OyBpKyspIHsKKyAgICAgICAgICAg
IGlmIChjdXJyZW50LT5oYXNUYWdOYW1lKHRoZWFkVGFnKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnROb2RlKCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmlzQ29sdW1uSGVhZGVyQ2VsbCgpIGNvbnN0CkBAIC0zMTcsNjggKzMzNywy
NSBAQCBBY2Nlc3NpYmlsaXR5VGFibGVSb3cqIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVu
dFJvdygpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8gb3duZXJQYXJlbnQgPSBhcmlhT3duZWRCeVBh
cmVudCgpKQogICAgICAgICByZXR1cm4gb3duZXJQYXJlbnQ7Ci0gICAgCi0gICAgQVhDb3JlT2Jq
ZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKLSAgICBpZiAoIWlzPEFjY2Vz
c2liaWxpdHlUYWJsZVJvdz4oKnBhcmVudCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KHBhcmVudCk7CisgICAgcmV0
dXJuIGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KHBhcmVudE9iamVjdFVu
aWdub3JlZCgpKTsKIH0KIAogc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZSgpIGNvbnN0CiB7Ci0gICAgYXV0byogcGFyZW50
Um93ID0gdGhpcy0+cGFyZW50Um93KCk7Ci0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4gcm93UmFuZ2UgeyBwYXJlbnRSb3cgPyBwYXJlbnRSb3ctPnJvd0luZGV4KCkgOiAwLCAxIH07
Ci0KLSAgICAvLyBBUklBIDEuMSdzIGFyaWEtcm93c3BhbiBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQg
Zm9yIGNlbGxzIGFuZCBncmlkY2VsbHMgd2hpY2ggYXJlIG5vdCBjb250YWluZWQKLSAgICAvLyBp
biBhIG5hdGl2ZSB0YWJsZS4gQnV0IGlmIHdlIGhhdmUgYSB2YWxpZCBhdXRob3ItcHJvdmlkZWQg
dmFsdWUgYW5kIGRvIG5vdCBoYXZlIGFuIGV4cGxpY2l0Ci0gICAgLy8gbmF0aXZlIGhvc3QgbGFu
Z3VhZ2UgdmFsdWUgZm9yIHRoZSByb3dzcGFuLCBleHBvc2UgdGhlIEFSSUEgdmFsdWUuCi0gICAg
cm93UmFuZ2Uuc2Vjb25kID0gYXhSb3dTcGFuKCk7Ci0gICAgaWYgKHN0YXRpY19jYXN0PGludD4o
cm93UmFuZ2Uuc2Vjb25kKSA9PSAtMSkgewotICAgICAgICAvLyBJdCdzIGZhc3RlciB0byBnZXQg
cm93c3BhbiBmcm9tIFJlbmRlclRhYmxlQ2VsbCBiZWNhdXNlIGl0IGhhcyBidWlsdCBpbiBjYWNo
ZXMgdG8gYXZvaWQKLSAgICAgICAgLy8gcmVhZGluZyBmcm9tIHRoZSBET00sIHNvIHRyeSB0aGF0
IGZpcnN0LgotICAgICAgICBpZiAoYXV0byogcmVuZGVyVGFibGVDZWxsID0gZHluYW1pY0Rvd25j
YXN0PFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIoKSkpCi0gICAgICAgICAgICByb3dSYW5nZS5z
ZWNvbmQgPSByZW5kZXJUYWJsZUNlbGwtPnJvd1NwYW4oKTsKLSAgICAgICAgZWxzZSBpZiAoYXV0
byogdGFibGVDZWxsRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MVGFibGVDZWxsRWxlbWVu
dD4obm9kZSgpKSkKLSAgICAgICAgICAgIHJvd1JhbmdlLnNlY29uZCA9IHN0ZDo6bWluPHVuc2ln
bmVkPih0YWJsZUNlbGxFbGVtZW50LT5yb3dTcGFuKCksIG1heFJvd0luZGV4KTsKLSNpZiBFTkFC
TEUoTUFUSE1MKQotICAgICAgICBlbHNlIGlmIChhdXRvKiBtYXRoTUxFbGVtZW50ID0gZHluYW1p
Y0Rvd25jYXN0PE1hdGhNTEVsZW1lbnQ+KG5vZGUoKSk7IG1hdGhNTEVsZW1lbnQgJiYgbWF0aE1M
RWxlbWVudC0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXRkVGFnKSkKLSAgICAgICAgICAgIHJv
d1JhbmdlLnNlY29uZCA9IHN0ZDo6bWluPHVuc2lnbmVkPihtYXRoTUxFbGVtZW50LT5yb3dTcGFu
KCksIG1heFJvd0luZGV4KTsKLSNlbmRpZgotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8v
IERlZmF1bHQgYmFjayB0byAxLgotICAgICAgICAgICAgcm93UmFuZ2Uuc2Vjb25kID0gMTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcm93UmFuZ2U7CisgICAgcmV0dXJuIHsgbV9yb3dJ
bmRleCwgcm93U3BhbigpIH07CiB9CiAgICAgCiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlKCkgY29uc3QKIHsKLSAg
ICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZSB7IDAsIDEgfTsKLSAg
ICBpZiAoIWlzPFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIoKSkpCi0gICAgICAgIHJldHVybiBj
b2x1bW5SYW5nZTsKLQotICAgIGNvbnN0IFJlbmRlclRhYmxlQ2VsbCYgY2VsbCA9IGRvd25jYXN0
PFJlbmRlclRhYmxlQ2VsbD4oKm1fcmVuZGVyZXIpOwotICAgIGNvbHVtblJhbmdlLmZpcnN0ID0g
Y2VsbC50YWJsZSgpLT5jb2xUb0VmZkNvbChjZWxsLmNvbCgpKTsKLQotICAgIC8vIEFSSUEgMS4x
J3MgYXJpYS1jb2xzcGFuIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCBmb3IgY2VsbHMgYW5kIGdyaWRj
ZWxscyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZAotICAgIC8vIGluIGEgbmF0aXZlIHRhYmxlLiBC
dXQgaWYgd2UgaGF2ZSBhIHZhbGlkIGF1dGhvci1wcm92aWRlZCB2YWx1ZSBhbmQgZG8gbm90IGhh
dmUgYW4gZXhwbGljaXQKLSAgICAvLyBuYXRpdmUgaG9zdCBsYW5ndWFnZSB2YWx1ZSBmb3IgdGhl
IGNvbHNwYW4sIGV4cG9zZSB0aGUgQVJJQSB2YWx1ZS4KLSAgICBjb2x1bW5SYW5nZS5zZWNvbmQg
PSBheENvbHVtblNwYW4oKTsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pihjb2x1bW5SYW5nZS5z
ZWNvbmQpICE9IC0xKQotICAgICAgICByZXR1cm4gY29sdW1uUmFuZ2U7Ci0KLSAgICBjb2x1bW5S
YW5nZS5zZWNvbmQgPSBjZWxsLnRhYmxlKCktPmNvbFRvRWZmQ29sKGNlbGwuY29sKCkgKyBjZWxs
LmNvbFNwYW4oKSkgLSBjb2x1bW5SYW5nZS5maXJzdDsKLQotICAgIHJldHVybiBjb2x1bW5SYW5n
ZTsKKyAgICByZXR1cm4geyBtX2NvbHVtbkluZGV4LCBjb2xTcGFuKCkgfTsKIH0KLSAgICAKKwog
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6dGl0bGVVSUVsZW1l
bnQoKSBjb25zdAogewogICAgIC8vIFRyeSB0byBmaW5kIGlmIHRoZSBmaXJzdCBjZWxsIGluIHRo
aXMgcm93IGlzIGEgPHRoPi4gSWYgaXQgaXMsCiAgICAgLy8gdGhlbiBpdCBjYW4gYWN0IGFzIHRo
ZSB0aXRsZSB1aSBlbGVtZW50LiAoVGhpcyBpcyBvbmx5IGluIHRoZQogICAgIC8vIGNhc2Ugd2hl
biB0aGUgdGFibGUgaXMgbm90IGFwcGVhcmluZyBhcyBhbiBBWFRhYmxlLikKLSAgICBpZiAoaXNU
YWJsZUNlbGwoKSB8fCAhaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkKKyAgICBpZiAo
aXNFeHBvc2VkVGFibGVDZWxsKCkgfHwgIWlzPFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIoKSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gVGFibGUgY2VsbHMgdGhhdCBhcmUg
dGggY2Fubm90IGhhdmUgdGl0bGUgdWkgZWxlbWVudHMsIHNpbmNlIGJ5IGRlZmluaXRpb24KQEAg
LTQxOCwxMCArMzk1LDkgQEAgaW50IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uSW5k
ZXgoKSBjb25zdAogICAgIC8vICJBUklBIDEuMTogSWYgdGhlIHNldCBvZiBjb2x1bW5zIHdoaWNo
IGlzIHByZXNlbnQgaW4gdGhlIERPTSBpcyBjb250aWd1b3VzLCBhbmQgaWYgdGhlcmUgYXJlIG5v
IGNlbGxzIHdoaWNoIHNwYW4gbW9yZSB0aGFuIG9uZSByb3cKICAgICAvLyBvciBjb2x1bW4gaW4g
dGhhdCBzZXQsIHRoZW4gYXV0aG9ycyBtYXkgcGxhY2UgYXJpYS1jb2xpbmRleCBvbiBlYWNoIHJv
dywgc2V0dGluZyB0aGUgdmFsdWUgdG8gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjb2x1bW4gb2Yg
dGhlIHNldC4iCiAgICAgLy8gSGVyZSwgd2UgbGV0IGl0cyBwYXJlbnQgcm93IHRvIHNldCBpdHMg
aW5kZXggYmVmb3JlaGFuZCwgc28gd2UgZG9uJ3QgaGF2ZSB0byBnbyB0aHJvdWdoIHRoZSBzaWJs
aW5ncyB0byBjYWxjdWxhdGUgdGhlIGluZGV4LgotICAgIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyog
cGFyZW50Um93ID0gdGhpcy0+cGFyZW50Um93KCk7Ci0gICAgaWYgKHBhcmVudFJvdyAmJiBtX2F4
Q29sSW5kZXhGcm9tUm93ICE9IC0xKQorICAgIGlmIChtX2F4Q29sSW5kZXhGcm9tUm93ICE9IC0x
ICYmIHBhcmVudFJvdygpKQogICAgICAgICByZXR1cm4gbV9heENvbEluZGV4RnJvbVJvdzsKLSAg
ICAKKwogICAgIHJldHVybiAtMTsKIH0KICAgICAKQEAgLTQzOCwzNSArNDE0LDMwIEBAIGludCBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd0luZGV4KCkgY29uc3QKICAgICByZXR1cm4gLTE7
CiB9CiAKLWludCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4oKSBjb25zdAot
ewotICAgIC8vIEFjY29yZGluZyB0byB0aGUgQVJJQSBzcGVjLCAiSWYgYXJpYS1jb2xwYW4gaXMg
dXNlZCBvbiBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgaG9zdCBsYW5ndWFnZQotICAgIC8vIHBy
b3ZpZGVzIGFuIGVxdWl2YWxlbnQgYXR0cmlidXRlLCB1c2VyIGFnZW50cyBtdXN0IGlnbm9yZSB0
aGUgdmFsdWUgb2YgYXJpYS1jb2xzcGFuLiIKLSAgICBpZiAoaGFzQXR0cmlidXRlKGNvbHNwYW5B
dHRyKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgLy8gQVJJQSAxLjE6IEF1dGhvcnMgbXVz
dCBzZXQgdGhlIHZhbHVlIG9mIGFyaWEtY29sc3BhbiB0byBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhh
biBvciBlcXVhbCB0byAxLgotICAgIGlmIChpbnQgdmFsdWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0
ZShhcmlhX2NvbHNwYW5BdHRyKTsgdmFsdWUgPj0gMSkKLSAgICAgICAgcmV0dXJuIHZhbHVlOwot
Ci0gICAgcmV0dXJuIC0xOwotfQotCi1pbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dT
cGFuKCkgY29uc3QKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd1NwYW4oKSBj
b25zdAogewogICAgIC8vIEFjY29yZGluZyB0byB0aGUgQVJJQSBzcGVjLCAiSWYgYXJpYS1yb3dz
cGFuIGlzIHVzZWQgb24gYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIGhvc3QgbGFuZ3VhZ2UKICAg
ICAvLyBwcm92aWRlcyBhbiBlcXVpdmFsZW50IGF0dHJpYnV0ZSwgdXNlciBhZ2VudHMgbXVzdCBp
Z25vcmUgdGhlIHZhbHVlIG9mIGFyaWEtcm93c3Bhbi4iCi0gICAgaWYgKGhhc0F0dHJpYnV0ZShy
b3dzcGFuQXR0cikpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIC8vIEFSSUEgMS4xOiBBdXRo
b3JzIG11c3Qgc2V0IHRoZSB2YWx1ZSBvZiBhcmlhLXJvd3NwYW4gdG8gYW4gaW50ZWdlciBncmVh
dGVyIHRoYW4gb3IgZXF1YWwgdG8gMC4KLSAgICAvLyBTZXR0aW5nIHRoZSB2YWx1ZSB0byAwIGlu
ZGljYXRlcyB0aGF0IHRoZSBjZWxsIG9yIGdyaWRjZWxsIGlzIHRvIHNwYW4gYWxsIHRoZSByZW1h
aW5pbmcgcm93cyBpbiB0aGUgcm93IGdyb3VwLgotICAgIGlmIChnZXRBdHRyaWJ1dGUoYXJpYV9y
b3dzcGFuQXR0cikgPT0gIjAiX3MpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChpbnQgdmFs
dWUgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd3NwYW5BdHRyKTsgdmFsdWUgPj0gMSkK
LSAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIGlmIChhdXRvIHJvd1NwYW4gPSBwYXJzZUhUTUxJ
bnRlZ2VyKGdldEF0dHJpYnV0ZShyb3dzcGFuQXR0cikpOyByb3dTcGFuICYmICpyb3dTcGFuID49
IDEpIHsKKyAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
dGFibGVzLmh0bWwKKyAgICAgICAgLy8gSWYgcm93c3BhbiBpcyBncmVhdGVyIHRoYW4gNjU1MzQs
IGxldCBpdCBiZSA2NTUzNCBpbnN0ZWFkLgorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjpt
YXgoKnJvd1NwYW4sIDEpLCA2NTUzNCk7CisgICAgfQorICAgIGlmIChhdXRvIGFyaWFSb3dTcGFu
ID0gcGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXJpYV9yb3dzcGFuQXR0cikpOyBhcmlh
Um93U3BhbiAmJiAqYXJpYVJvd1NwYW4gPj0gMSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0
ZDo6bWF4KCphcmlhUm93U3BhbiwgMSksIDY1NTM0KTsKKyAgICByZXR1cm4gMTsKK30KIAotICAg
IHJldHVybiAtMTsKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbFNwYW4oKSBj
b25zdAoreworICAgIGlmIChhdXRvIGNvbFNwYW4gPSBwYXJzZUhUTUxJbnRlZ2VyKGdldEF0dHJp
YnV0ZShjb2xzcGFuQXR0cikpOyBjb2xTcGFuICYmICpjb2xTcGFuID49IDEpIHsKKyAgICAgICAg
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwKKyAg
ICAgICAgLy8gSWYgY29sc3BhbiBpcyBncmVhdGVyIHRoYW4gMTAwMCwgbGV0IGl0IGJlIDEwMDAg
aW5zdGVhZC4KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KCpjb2xTcGFuLCAxKSwg
MTAwMCk7CisgICAgfQorICAgIGlmIChhdXRvIGFyaWFDb2xTcGFuID0gcGFyc2VIVE1MSW50ZWdl
cihnZXRBdHRyaWJ1dGUoYXJpYV9jb2xzcGFuQXR0cikpOyBhcmlhQ29sU3BhbiAmJiAqYXJpYUNv
bFNwYW4gPj0gMSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KCphcmlhQ29sU3Bh
biwgMSksIDEwMDApOworICAgIHJldHVybiAxOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5oCmluZGV4IGY0MGI4MmRjMTRhMi4uZmJkOGRhZDRiNzNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuaApAQCAtMzgsMzYgKzM4LDQ0IEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzsKIGNs
YXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPiBj
cmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPiBjcmVhdGUoTm9kZSYpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwo
KTsKKyAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNFeHBvc2Vk
VGFibGVDZWxsKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc1RhYmxlSGVhZGVyQ2VsbCgpIGNv
bnN0OwogICAgIGJvb2wgaXNDb2x1bW5IZWFkZXJDZWxsKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBpc1Jvd0hlYWRlckNlbGwoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eVRhYmxlKiBwYXJlbnRUYWJsZSgpIGNvbnN0OworCiAgICAgLy8gUmV0dXJucyB0
aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRoZSBjZWxsLgotICAgIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd0luZGV4UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29uc3QgZmlu
YWw7CiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9m
IHRoZSBjZWxsLgotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtbkluZGV4
UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBjb2x1bW5JbmRleFJhbmdlKCkgY29uc3QgZmluYWw7CiAKICAgICBBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3IgY29sdW1uSGVhZGVycygpIG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciByb3dIZWFkZXJzKCkgb3ZlcnJpZGU7CiAKICAgICBpbnQgYXhDb2x1bW5J
bmRleCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGludCBheFJvd0luZGV4KCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgaW50IGF4Q29sdW1uU3BhbigpIGNvbnN0OwotICAgIGludCBheFJvd1NwYW4oKSBj
b25zdDsKKyAgICB1bnNpZ25lZCBjb2xTcGFuKCkgY29uc3Q7CisgICAgdW5zaWduZWQgcm93U3Bh
bigpIGNvbnN0OwogICAgIHZvaWQgc2V0QVhDb2xJbmRleEZyb21Sb3coaW50IGluZGV4KSB7IG1f
YXhDb2xJbmRleEZyb21Sb3cgPSBpbmRleDsgfQogCisgICAgdm9pZCBzZXRSb3dJbmRleCh1bnNp
Z25lZCBpbmRleCkgeyBtX3Jvd0luZGV4ID0gaW5kZXg7IH0KKyAgICB2b2lkIHNldENvbHVtbklu
ZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fY29sdW1uSW5kZXggPSBpbmRleDsgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChSZW5kZXJPYmplY3QqKTsK
KyAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKE5vZGUmKTsKIAogICAgIEFjY2Vz
c2liaWxpdHlUYWJsZVJvdyogcGFyZW50Um93KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5VGFibGUqIHBhcmVudFRhYmxlKCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUg
ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBmaW5hbDsKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGludCBt
X3Jvd0luZGV4OworICAgIHVuc2lnbmVkIG1fcm93SW5kZXggeyAwIH07CisgICAgdW5zaWduZWQg
bV9jb2x1bW5JbmRleCB7IDAgfTsKICAgICBpbnQgbV9heENvbEluZGV4RnJvbVJvdzsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uLmNwcAppbmRleCBhYzQyYWQzMDRiMGQuLjY4NmIzNjVkMjkwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtMjksMTcgKzI5LDkgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCIKIAotI2luY2x1ZGUgIkFY
T2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCi0jaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJS
ZW5kZXJUYWJsZS5oIgotI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgotI2luY2x1ZGUgIlJl
bmRlclRhYmxlU2VjdGlvbi5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBB
Y2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbigpID0gZGVm
YXVsdDsKIApAQCAtNzEsMTAyICs2MywxNyBAQCBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbjo6ZWxlbWVudFJlY3QoKSBjb25zdAogCiBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6Y29sdW1uSGVhZGVyKCkKIHsKLSAgICBpZiAoIW1fcGFyZW50IHx8ICFp
czxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX3BhcmVudCkKLSAgICAgICAgfHwgIW1fcGFyZW50LT5p
c0V4cG9zYWJsZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBtX3BhcmVudC0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQor
ICAgIGF1dG8qIHBhcmVudFRhYmxlID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZT4obV9wYXJlbnQuZ2V0KCkpOworICAgIGlmICghcGFyZW50VGFibGUgfHwgIXBhcmVudFRhYmxl
LT5pc0V4cG9zYWJsZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8mIHBh
cmVudFRhYmxlID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9wYXJlbnQpOwotCi0g
ICAgaWYgKHBhcmVudFRhYmxlLmlzQXJpYVRhYmxlKCkpIHsKLSAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBjZWxsIDogY2hpbGRyZW4oKSkgewotICAgICAgICAgICAgaWYgKGNlbGwtPnJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGNlbGwuZ2V0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGNlbGwgOiBjaGlsZHJlbigpKSB7CisgICAgICAgIGlmIChj
ZWxsLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyKQorICAg
ICAgICAgICAgcmV0dXJuIGNlbGwuZ2V0KCk7CiAgICAgfQotCi0gICAgaWYgKCFpczxSZW5kZXJU
YWJsZT4oKnJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgUmVu
ZGVyVGFibGUmIHRhYmxlID0gZG93bmNhc3Q8UmVuZGVyVGFibGU+KCpyZW5kZXJlcik7Ci0KLSAg
ICAvLyB0cnkgdGhlIDx0aGVhZD4gc2VjdGlvbiBmaXJzdC4gdGhpcyBkb2Vzbid0IHJlcXVpcmUg
dGggdGFncwotICAgIGlmIChhdXRvKiBoZWFkZXJPYmplY3QgPSBoZWFkZXJPYmplY3RGb3JTZWN0
aW9uKHRhYmxlLmhlYWRlcigpLCBmYWxzZSkpCi0gICAgICAgIHJldHVybiBoZWFkZXJPYmplY3Q7
Ci0gICAgCi0gICAgUmVuZGVyVGFibGVTZWN0aW9uKiBib2R5U2VjdGlvbiA9IHRhYmxlLmZpcnN0
Qm9keSgpOwotICAgIHdoaWxlIChib2R5U2VjdGlvbiAmJiBib2R5U2VjdGlvbi0+aXNBbm9ueW1v
dXMoKSkKLSAgICAgICAgYm9keVNlY3Rpb24gPSB0YWJsZS5zZWN0aW9uQmVsb3coYm9keVNlY3Rp
b24sIFNraXBFbXB0eVNlY3Rpb25zKTsKLSAgICAKLSAgICAvLyBub3cgdHJ5IGZvciA8dGg+IHRh
Z3MgaW4gdGhlIGZpcnN0IGJvZHkuIElmIHRoZSBmaXJzdCBib2R5IGlzIAotICAgIHJldHVybiBo
ZWFkZXJPYmplY3RGb3JTZWN0aW9uKGJvZHlTZWN0aW9uLCB0cnVlKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
OjpoZWFkZXJPYmplY3RGb3JTZWN0aW9uKFJlbmRlclRhYmxlU2VjdGlvbiogc2VjdGlvbiwgYm9v
bCB0aFRhZ1JlcXVpcmVkKQotewotICAgIGlmICghc2VjdGlvbikKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgCi0gICAgdW5zaWduZWQgbnVtQ29scyA9IHNlY3Rpb24tPm51bUNvbHVtbnMo
KTsKLSAgICBpZiAobV9jb2x1bW5JbmRleCA+PSBudW1Db2xzKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAKLSAgICBpZiAoIXNlY3Rpb24tPm51bVJvd3MoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgCi0gICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gbnVsbHB0cjsKLSAg
ICAvLyBhbHNvIGFjY291bnQgZm9yIGNlbGxzIHRoYXQgaGF2ZSBhIHNwYW4KLSAgICBmb3IgKGlu
dCB0ZXN0Q29sID0gbV9jb2x1bW5JbmRleDsgdGVzdENvbCA+PSAwOyAtLXRlc3RDb2wpIHsKLSAg
ICAgICAgCi0gICAgICAgIC8vIFJ1biBkb3duIHRoZSByb3dzIGluIGNhc2UgaW5pdGlhbCByb3dz
IGFyZSBpbnZhbGlkIChsaWtlIHdoZW4gYSA8Y2FwdGlvbj4gaXMgdXNlZCkuCi0gICAgICAgIHVu
c2lnbmVkIHJvd0NvdW50ID0gc2VjdGlvbi0+bnVtUm93cygpOwotICAgICAgICBmb3IgKHVuc2ln
bmVkIHRlc3RSb3cgPSAwOyB0ZXN0Um93IDwgcm93Q291bnQ7IHRlc3RSb3crKykgewotICAgICAg
ICAgICAgUmVuZGVyVGFibGVDZWxsKiB0ZXN0Q2VsbCA9IHNlY3Rpb24tPnByaW1hcnlDZWxsQXQo
dGVzdFJvdywgdGVzdENvbCk7Ci0gICAgICAgICAgICAvLyBObyBjZWxsIGF0IHRoaXMgaW5kZXgs
IGtlZXAgY2hlY2tpbmcgbW9yZSByb3dzIGFuZCBjb2x1bW5zLgotICAgICAgICAgICAgaWYgKCF0
ZXN0Q2VsbCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgLy8gSWYgd2UndmUgcmVhY2hlZCBhIGNlbGwgdGhhdCBkb2Vzbid0IGV2ZW4gb3Zlcmxh
cCBvdXIgY29sdW1uIGl0IGNhbid0IGJlIHRoZSBoZWFkZXIuCi0gICAgICAgICAgICBpZiAoKHRl
c3RDZWxsLT5jb2woKSArICh0ZXN0Q2VsbC0+Y29sU3BhbigpLTEpKSA8IG1fY29sdW1uSW5kZXgp
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE5vZGUq
IHRlc3RDZWxsTm9kZSA9IHRlc3RDZWxsLT5lbGVtZW50KCk7Ci0gICAgICAgICAgICAvLyBJZiB0
aGUgUmVuZGVyVGFibGVDZWxsIGRvZXNuJ3QgaGF2ZSBhbiBlbGVtZW50IGJlY2F1c2UgaXRzIGFu
b255bW91cywKLSAgICAgICAgICAgIC8vIHRyeSB0byBzZWUgaWYgd2UgY2FuIGZpbmQgdGhlIG9y
aWdpbmFsIGNlbGwgZWxlbWVudCB0byBjaGVjayBpZiBpdCBoYXMgYSA8dGg+IHRhZy4KLSAgICAg
ICAgICAgIGlmICghdGVzdENlbGxOb2RlICYmIHRlc3RDZWxsLT5pc0Fub255bW91cygpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSB0ZXN0Q2VsbC0+cGFy
ZW50KCkgPyB0ZXN0Q2VsbC0+cGFyZW50KCktPmVsZW1lbnQoKSA6IG51bGxwdHIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQtPmhhc1RhZ05hbWUodHJUYWcpICYmIHRl
c3RDb2wgPCBzdGF0aWNfY2FzdDxpbnQ+KHBhcmVudEVsZW1lbnQtPmNvdW50Q2hpbGROb2Rlcygp
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDZWxsTm9kZSA9IHBhcmVudEVsZW1lbnQt
PnRyYXZlcnNlVG9DaGlsZEF0KHRlc3RDb2wpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKCF0ZXN0Q2VsbE5vZGUpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIElmIHRoIGlzIHJlcXVpcmVk
LCBidXQgd2UgZm91bmQgYW4gZWxlbWVudCB0aGF0IGRvZXNuJ3QgaGF2ZSBhIHRoIHRhZywgd2Ug
Y2FuIHN0b3AgbG9va2luZy4KLSAgICAgICAgICAgIGlmICh0aFRhZ1JlcXVpcmVkICYmICF0ZXN0
Q2VsbE5vZGUtPmhhc1RhZ05hbWUodGhUYWcpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBjZWxsID0gdGVzdENlbGw7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAoIWNlbGwpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgYXV0byogY2VsbE9iamVjdCA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUoY2VsbCk7Ci0gICAgaWYgKCFjZWxsT2JqZWN0IHx8IGNlbGxPYmplY3QtPmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAot
ICAgIHJldHVybiBjZWxsT2JqZWN0OwotfQotICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVD
b2x1bW46OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fcGFyZW50KQpAQCAtMTgyLDIyICs4OSwxOCBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbjo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogdm9pZCBBY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW46OmFkZENoaWxkcmVuKCkKIHsKICAgICBBU1NFUlQoIW1fY2hpbGRy
ZW5Jbml0aWFsaXplZCk7IAotICAgIAogICAgIG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9IHRydWU7
Ci0gICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGU+KG1fcGFyZW50KSkKLSAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byYgcGFyZW50VGFibGUgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFi
bGU+KCptX3BhcmVudCk7Ci0gICAgaWYgKCFwYXJlbnRUYWJsZS5pc0V4cG9zYWJsZSgpKQorICAg
IGF1dG8qIHBhcmVudFRhYmxlID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
bV9wYXJlbnQuZ2V0KCkpOworICAgIGlmICghcGFyZW50VGFibGUgfHwgIXBhcmVudFRhYmxlLT5p
c0V4cG9zYWJsZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaW50IG51bVJvd3MgPSBw
YXJlbnRUYWJsZS5yb3dDb3VudCgpOwotICAgIAorCisgICAgaW50IG51bVJvd3MgPSBwYXJlbnRU
YWJsZS0+cm93Q291bnQoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVJvd3M7ICsraSkg
ewotICAgICAgICBhdXRvKiBjZWxsID0gcGFyZW50VGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdyht
X2NvbHVtbkluZGV4LCBpKTsKKyAgICAgICAgYXV0byogY2VsbCA9IHBhcmVudFRhYmxlLT5jZWxs
Rm9yQ29sdW1uQW5kUm93KG1fY29sdW1uSW5kZXgsIGkpOwogICAgICAgICBpZiAoIWNlbGwpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgLy8gbWFrZSBzdXJlIHRo
ZSBsYXN0IG9uZSBpc24ndCB0aGUgc2FtZSBhcyB0aGlzIG9uZSAocm93c3BhbiBjZWxscykKICAg
ICAgICAgaWYgKG1fY2hpbGRyZW4uc2l6ZSgpID4gMCAmJiBtX2NoaWxkcmVuLmxhc3QoKSA9PSBj
ZWxsKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAppbmRleCA2YjFhY2NkMGY1
MDYuLmIwNWIyOTM4ZTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCkBAIC0yOSw4ICsyOSw2IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgiCi0jaW5jbHVk
ZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCkBAIC01Niw3ICs1NCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKCk7CiAgICAgCi0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogaGVhZGVyT2JqZWN0Rm9yU2VjdGlvbihSZW5kZXJUYWJsZVNlY3Rpb24qLCBib29sIHRo
VGFnUmVxdWlyZWQpOwogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBj
b25zdCBvdmVycmlkZTsKICAgICBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAppbmRleCA1ZTNiYWJlMzY2YzIuLjBhM2JjMzYx
MmZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMjksMjQgKzI5LDI1IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCiAKLSNpbmNsdWRlICJBWE9i
amVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1
ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKLSNp
bmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKLSNpbmNsdWRlICJSZW5kZXJUYWJsZVJvdy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
Ci0gICAgCisKIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6QWNjZXNzaWJpbGl0eVRhYmxlUm93KFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJl
bmRlcmVyKQogewogfQogCitBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OkFjY2Vzc2liaWxpdHlUYWJs
ZVJvdyhOb2RlJiBub2RlKQorICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChub2RlKQor
eworfQorCiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6On5BY2Nlc3NpYmlsaXR5VGFibGVSb3coKSA9
IGRlZmF1bHQ7CiAKIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+IEFjY2Vzc2liaWxpdHlUYWJs
ZVJvdzo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkBAIC01NCw2ICs1NSwxMSBAQCBS
ZWY8QWNjZXNzaWJpbGl0eVRhYmxlUm93PiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2li
aWxpdHlUYWJsZVJvdyhyZW5kZXJlcikpOwogfQogCitSZWY8QWNjZXNzaWJpbGl0eVRhYmxlUm93
PiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZShOb2RlJiBub2RlKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlUYWJsZVJvdyhub2RlKSk7Cit9CisKIEFjY2Vz
c2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0
eVJvbGUoKQogewogICAgIGlmICghaXNUYWJsZVJvdygpKQpAQCAtMTEzLDE5ICsxMTksMTkgQEAg
QWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OnBhcmVudFRhYmxlKCkg
Y29uc3QKIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFkZXJPYmplY3Qo
KQogewogICAgIGNvbnN0IGF1dG8mIHJvd0NoaWxkcmVuID0gY2hpbGRyZW4oKTsKLSAgICBpZiAo
IXJvd0NoaWxkcmVuLnNpemUoKSkKKyAgICBpZiAocm93Q2hpbGRyZW4uaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBhdXRvKiBjZWxsID0gcm93Q2hpbGRyZW5b
MF0uZ2V0KCk7Ci0gICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihjZWxsKSB8fCAh
Y2VsbC0+bm9kZSgpIHx8ICFjZWxsLT5ub2RlKCktPmhhc1RhZ05hbWUodGhUYWcpKQorICAgIGF1
dG8qIGZpcnN0Q2VsbCA9IHJvd0NoaWxkcmVuWzBdLmdldCgpOworICAgIGlmICghZmlyc3RDZWxs
IHx8ICFmaXJzdENlbGwtPm5vZGUoKSB8fCAhZmlyc3RDZWxsLT5ub2RlKCktPmhhc1RhZ05hbWUo
dGhUYWcpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIC8vIFZlcmlmeSB0
aGF0IHRoZSByb3cgaGVhZGVyIGlzIG5vdCBwYXJ0IG9mIGFuIGVudGlyZSByb3cgb2YgaGVhZGVy
cy4KICAgICAvLyBJbiB0aGF0IGNhc2UsIGl0IGlzIHVubGlrZWx5IHRoaXMgaXMgYSByb3cgaGVh
ZGVyLgogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiByb3dDaGlsZHJlbikgewogICAgICAg
ICAvLyBXZSBmb3VuZCBhIG5vbi1oZWFkZXIgY2VsbCwgc28gdGhpcyBpcyBub3QgYW4gZW50aXJl
IHJvdyBvZiBoZWFkZXJzIC0tIHJldHVybiB0aGUgb3JpZ2luYWwgaGVhZGVyIGNlbGwuCiAgICAg
ICAgIGlmIChjaGlsZC0+bm9kZSgpICYmICFjaGlsZC0+bm9kZSgpLT5oYXNUYWdOYW1lKHRoVGFn
KSkKLSAgICAgICAgICAgIHJldHVybiBjZWxsOworICAgICAgICAgICAgcmV0dXJuIGZpcnN0Q2Vs
bDsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAppbmRleCA5NTM1OGNmMjI2
YTQuLmVkYmRhYzc4NWQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIEFjY2Vz
c2liaWxpdHlUYWJsZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyA6IHB1YmxpYyBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2li
aWxpdHlUYWJsZVJvdz4gY3JlYXRlKFJlbmRlck9iamVjdCopOworICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eVRhYmxlUm93PiBjcmVhdGUoTm9kZSYpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2li
aWxpdHlUYWJsZVJvdygpOwogCiAgICAgLy8gcmV0cmlldmVzIHRoZSAicm93IiBoZWFkZXIgKGEg
dGggdGFnIGluIHRoZSByaWdodG1vc3QgY29sdW1uKQpAQCAtNTcsNiArNTgsNyBAQCBwdWJsaWM6
CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VGFibGVSb3coUmVuZGVy
T2JqZWN0Kik7CisgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVRhYmxlUm93KE5vZGUmKTsKIAog
ICAgIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNwaS5jcHAKaW5kZXggODU1ZGEwZTM3
MGY3Li5kNTU2NTM1NTY2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQXRzcGku
Y3BwCkBAIC05Miw3ICs5Miw3IEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6c190YWJsZUZ1bmN0aW9ucyA9IHsKICAgICAgICAgICAgIGF1dG8gcm93ID0g
YXRzcGlPYmplY3QtPnJvd0F0SW5kZXgoaW5kZXgpOwogICAgICAgICAgICAgYXV0byBjb2x1bW4g
PSBhdHNwaU9iamVjdC0+Y29sdW1uQXRJbmRleChpbmRleCk7CiAgICAgICAgICAgICBhdXRvKiBj
ZWxsID0gYXRzcGlPYmplY3QtPm1fY29yZU9iamVjdCA/IGF0c3BpT2JqZWN0LT5tX2NvcmVPYmpl
Y3QtPmNlbGxGb3JDb2x1bW5BbmRSb3coKmNvbHVtbiwgKnJvdykgOiBudWxscHRyOwotICAgICAg
ICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBn
X3ZhcmlhbnRfbmV3KCIoYmlpaWliKSIsIGNlbGwgJiYgY2VsbC0+aXNUYWJsZUNlbGwoKSA/IFRS
VUUgOiBGQUxTRSwKKyAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5f
dmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKGJpaWlpYikiLCBjZWxsICYmIGNlbGwt
PmlzRXhwb3NlZFRhYmxlQ2VsbCgpID8gVFJVRSA6IEZBTFNFLAogICAgICAgICAgICAgICAgIHJv
dy52YWx1ZV9vcigtMSksIGNvbHVtbi52YWx1ZV9vcigtMSksIHJvdyAmJiBjb2x1bW4gPyBhdHNw
aU9iamVjdC0+cm93RXh0ZW50KCpyb3csICpjb2x1bW4pIDogLTEsCiAgICAgICAgICAgICAgICAg
cm93ICYmIGNvbHVtbiA/IGF0c3BpT2JqZWN0LT5jb2x1bW5FeHRlbnQoKnJvdywgKmNvbHVtbikg
OiAtMSwgRkFMU0UpKTsKICAgICAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1ldGhvZE5hbWUs
ICJHZXRTZWxlY3RlZFJvd3MiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVDZWxsQXRzcGkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVDZWxs
QXRzcGkuY3BwCmluZGV4IGQ0YTQ1MmI1Y2IwYy4uMTBhMmVlMzliYjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJs
ZUNlbGxBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVDZWxsQXRzcGkuY3BwCkBAIC02NCw3ICs2NCw3IEBAIEdE
QnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c190YWJsZUNlbGxG
dW5jdGlvbnMgPSB7CiAgICAgICAgICAgICByZXR1cm4gZ192YXJpYW50X25ld19pbnQzMihhdHNw
aU9iamVjdC0+cm93U3BhbigpKTsKICAgICAgICAgaWYgKCFnX3N0cmNtcDAocHJvcGVydHlOYW1l
LCAiVGFibGUiKSkgewogICAgICAgICAgICAgYXV0byogYXhPYmplY3QgPSBhdHNwaU9iamVjdC0+
bV9jb3JlT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmlz
VGFibGVDZWxsKCkpCisgICAgICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+aXNF
eHBvc2VkVGFibGVDZWxsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlB
dHNwaTo6c2luZ2xldG9uKCkubnVsbFJlZmVyZW5jZSgpOwogCiAgICAgICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGkqIHdyYXBwZXIgPSBhdHNwaU9iamVjdC5wdHIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggZmFkOTExZTY2MmI1Li45Y2Q0MGQ5
ZmY5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xMjg2
LDcgKzEyODYsNyBAQCAtIChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKil0YWJsZUNlbGxQYXJlbnQK
IHsKICAgICAvLyBGaW5kIGlmIHRoaXMgZWxlbWVudCBpcyBpbiBhIHRhYmxlIGNlbGwuCiAgICAg
aWYgKEFYQ29yZU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yPEFY
Q29yZU9iamVjdD4oKnNlbGYuYXhCYWNraW5nT2JqZWN0LCB0cnVlLCBbXSAoY29uc3QgQVhDb3Jl
T2JqZWN0JiBvYmplY3QpIHsKLSAgICAgICAgcmV0dXJuIG9iamVjdC5pc1RhYmxlQ2VsbCgpOwor
ICAgICAgICByZXR1cm4gb2JqZWN0LmlzRXhwb3NlZFRhYmxlQ2VsbCgpOwogICAgIH0pKQogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KHBhcmVudCk7
CiAgICAgcmV0dXJuIG5pbDsKQEAgLTEzNDcsNyArMTM0Nyw3IEBAIC0gKE5TQXJyYXkgKilhY2Nl
c3NpYmlsaXR5SGVhZGVyRWxlbWVudHMKICAgICAvLyBXZSBzaG91bGQgY29uc2lkZXIgdGhlIGNh
c2VzIHdoZXJlIHRoZSByb3cgbnVtYmVyIGRvZXMgTk9UIG1hdGNoIHRoZSBpbmRleCBpbgogICAg
IC8vIHJvd0hlYWRlcnMsIHRoZSBtb3N0IGNvbW1vbiBjYXNlIGlzIHdoZW4gcm93MC9jb2wwIGRv
ZXMgbm90IGhhdmUgYSBoZWFkZXIuCiAgICAgZm9yIChjb25zdCBhdXRvJiByb3dIZWFkZXIgOiBy
b3dIZWFkZXJzKSB7Ci0gICAgICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKnJv
d0hlYWRlcikpCisgICAgICAgIGlmICghcm93SGVhZGVyLT5pc0V4cG9zZWRUYWJsZUNlbGwoKSkK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBhdXRvIHJvd0hlYWRlclJhbmdlID0gcm93SGVh
ZGVyLT5yb3dJbmRleFJhbmdlKCk7CiAgICAgICAgIGlmIChyb3dSYW5nZUluZGV4ID49IHJvd0hl
YWRlclJhbmdlLmZpcnN0ICYmIHJvd1JhbmdlSW5kZXggPCByb3dIZWFkZXJSYW5nZS5maXJzdCAr
IHJvd0hlYWRlclJhbmdlLnNlY29uZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRl
eCA0NjVkNGViYTExNTYuLjFmNTkxZGMzMWU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5j
cHAKQEAgLTE5NywxNyArMTk3LDE2IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAgICAgICAg
IHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c1NlbGVjdGVkUm93cywgb2JqZWN0
LnN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkpOwogICAgICAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0
eShBWFByb3BlcnR5TmFtZTo6Q29sdW1ucywgb2JqZWN0LmNvbHVtbnMoKSk7CiAgICAgICAgIHNl
dE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSb3dzLCBvYmplY3Qucm93cygp
KTsKLSAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbkNvdW50LCBvYmpl
Y3QuY29sdW1uQ291bnQoKSk7Ci0gICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpS
b3dDb3VudCwgb2JqZWN0LnJvd0NvdW50KCkpOwogICAgICAgICBzZXRPYmplY3RWZWN0b3JQcm9w
ZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2VsbHMsIG9iamVjdC5jZWxscygpKTsKICAgICAgICAgc2V0
T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZpc2libGVSb3dzLCBvYmplY3Qu
dmlzaWJsZVJvd3MoKSk7CiAgICAgICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpIZWFkZXJDb250YWluZXIsIG9iamVjdC5oZWFkZXJDb250YWluZXIoKSk7CiAgICAgICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBWENvbHVtbkNvdW50LCBvYmplY3QuYXhDb2x1bW5D
b3VudCgpKTsKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFYUm93Q291bnQs
IG9iamVjdC5heFJvd0NvdW50KCkpOworICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6U2xvdEdyaWQsIG9iamVjdC5zbG90R3JpZCgpKTsKICAgICB9CiAKLSAgICBpZiAob2JqZWN0
LmlzVGFibGVDZWxsKCkpIHsKLSAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6Oklz
VGFibGVDZWxsLCB0cnVlKTsKKyAgICBpZiAob2JqZWN0LmlzRXhwb3NlZFRhYmxlQ2VsbCgpKSB7
CisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0V4cG9zZWRUYWJsZUNlbGws
IHRydWUpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29sdW1uSW5kZXhS
YW5nZSwgb2JqZWN0LmNvbHVtbkluZGV4UmFuZ2UoKSk7CiAgICAgICAgIHNldFByb3BlcnR5KEFY
UHJvcGVydHlOYW1lOjpSb3dJbmRleFJhbmdlLCBvYmplY3Qucm93SW5kZXhSYW5nZSgpKTsKICAg
ICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFYQ29sdW1uSW5kZXgsIG9iamVjdC5h
eENvbHVtbkluZGV4KCkpOwpAQCAtNDkxLDE1ICs0OTAsMjAgQEAgYm9vbCBBWElzb2xhdGVkT2Jq
ZWN0Ojppc0RldGFjaGVkRnJvbVBhcmVudCgpCiAKIEFYQ29yZU9iamVjdCogQVhJc29sYXRlZE9i
amVjdDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW5JbmRleCwgdW5zaWduZWQg
cm93SW5kZXgpCiB7Ci0gICAgQVhJRCBjZWxsSUQgPSBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZh
bHVlRnJvbU1haW5UaHJlYWQ8QVhJRD4oWyZjb2x1bW5JbmRleCwgJnJvd0luZGV4LCB0aGlzXSAo
KSAtPiBBWElEIHsKLSAgICAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGFzc29jaWF0ZWRBWE9iamVj
dCgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBjZWxsID0gb2JqZWN0LT5jZWxsRm9yQ29sdW1u
QW5kUm93KGNvbHVtbkluZGV4LCByb3dJbmRleCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNl
bGwtPm9iamVjdElEKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9KTsK
LQotICAgIHJldHVybiB0cmVlKCktPm9iamVjdEZvcklEKGNlbGxJRCkuZ2V0KCk7CisgICAgLy8g
QVhQcm9wZXJ0eU5hbWU6OlNsb3RHcmlkIGNhbiBiZSBiaWcsIHNvIG1ha2Ugc3VyZSBub3QgdG8g
Y29weSBpdC4KKyAgICBhdXRvIHNsb3RHcmlkSXRlcmF0b3IgPSBtX3Byb3BlcnR5TWFwLmZpbmQo
QVhQcm9wZXJ0eU5hbWU6OlNsb3RHcmlkKTsKKyAgICBpZiAoc2xvdEdyaWRJdGVyYXRvciA9PSBt
X3Byb3BlcnR5TWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFYSUQg
Y2VsbElEID0gV1RGOjpzd2l0Y2hPbihzbG90R3JpZEl0ZXJhdG9yLT52YWx1ZSwKKyAgICAgICAg
WyZdIChWZWN0b3I8VmVjdG9yPEFYSUQ+PiYgc2xvdEdyaWQpIHsKKyAgICAgICAgICAgIGlmIChy
b3dJbmRleCA+PSBzbG90R3JpZC5zaXplKCkgfHwgY29sdW1uSW5kZXggPj0gc2xvdEdyaWRbcm93
SW5kZXhdLnNpemUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQVhJRCgpOworICAgICAgICAg
ICAgcmV0dXJuIHNsb3RHcmlkW3Jvd0luZGV4XVtjb2x1bW5JbmRleF07CisgICAgICAgIH0sCisg
ICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gQVhJRCgpOyB9CisgICAgKTsKKyAgICByZXR1cm4g
Y2VsbElEID8gdHJlZSgpLT5vYmplY3RGb3JJRChjZWxsSUQpLmdldCgpIDogbnVsbHB0cjsKIH0K
IAogdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphY2Nlc3NpYmlsaXR5VGV4dChWZWN0b3I8QWNjZXNz
aWJpbGl0eVRleHQ+JiB0ZXh0cykgY29uc3QKQEAgLTE2NTQsNiArMTY1OCwxMiBAQCBib29sIEFY
SXNvbGF0ZWRPYmplY3Q6OmlzTW9kYWxOb2RlKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNUYWJsZUNlbGwoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogQVhDb3JlT2JqZWN0
KiBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50
UG9pbnQmKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oCmluZGV4IGVlZWI2ZDIyZmM3MC4uYzc5YzgwMGZiMmU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oCkBAIC0xMzksMTAgKzEzOSwxMCBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0
ZWRPYmplY3QqIGV4cG9zZWRUYWJsZUFuY2VzdG9yKGJvb2wgaW5jbHVkZVNlbGYgPSBmYWxzZSkg
Y29uc3QgZmluYWwgeyByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZXhwb3NlZFRhYmxlQW5jZXN0b3Io
KnRoaXMsIGluY2x1ZGVTZWxmKTsgfQogICAgIGludCB0YWJsZUxldmVsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gaW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlRhYmxlTGV2ZWwp
OyB9CiAgICAgYm9vbCBzdXBwb3J0c1NlbGVjdGVkUm93cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNTZWxlY3RlZFJv
d3MpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbnMoKSBvdmVycmlk
ZSB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJ
RD4oQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbnMpKTsgfQotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciByb3dzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZl
Y3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpSb3dzKSk7IH0KLSAgICB1
bnNpZ25lZCBjb2x1bW5Db3VudCgpIG92ZXJyaWRlIHsgcmV0dXJuIHVuc2lnbmVkQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbkNvdW50KTsgfQotICAgIHVuc2lnbmVkIHJvd0Nv
dW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gdW5zaWduZWRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5
TmFtZTo6Um93Q291bnQpOyB9CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVt
bnMoKSBmaW5hbCB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRl
VmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbnMpKTsgfQorICAgIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciByb3dzKCkgZmluYWwgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9y
SURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpSb3dzKSk7IH0K
KyAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCgpIGZpbmFsIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihjb2x1bW5zKCkuc2l6ZSgpKTsgfQorICAgIHVuc2lnbmVkIHJvd0NvdW50KCkgZmlu
YWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJvd3MoKS5zaXplKCkpOyB9CiAgICAg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNlbGxzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJl
ZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlO
YW1lOjpDZWxscykpOyB9CiAgICAgQVhDb3JlT2JqZWN0KiBjZWxsRm9yQ29sdW1uQW5kUm93KHVu
c2lnbmVkLCB1bnNpZ25lZCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGNvbHVtbkhlYWRlcnMoKSBvdmVycmlkZTsKQEAgLTE1Myw3ICsxNTMsOCBAQCBwcml2YXRl
OgogICAgIGludCBheFJvd0NvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaW50QXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFYUm93Q291bnQpOyB9CiAKICAgICAvLyBUYWJsZSBj
ZWxsIHN1cHBvcnQuCi0gICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNUYWJsZUNlbGwpOyB9Cisg
ICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNFeHBvc2VkVGFi
bGVDZWxsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVy
dHlOYW1lOjpJc0V4cG9zZWRUYWJsZUNlbGwpOyB9CiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQg
bG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRoZSBjZWxsLgogICAgIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IHJvd0luZGV4UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwYWly
QXR0cmlidXRlVmFsdWU8dW5zaWduZWQ+KEFYUHJvcGVydHlOYW1lOjpSb3dJbmRleFJhbmdlKTsg
fQogICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiB0
aGUgY2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCBiYzg1OTUyY2IyY2EuLmI0Y2Y0
MjRkYTc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtNTY0LDYgKzU2NCw5IEBAIHZv
aWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0aWVzKEFYQ29yZU9iamVjdCYgYXhP
YmplY3QsIGNvbnN0IFZlY3RvcjxBCiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlNldFNp
emU6CiAgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlNldFNpemUs
IGF4T2JqZWN0LnNldFNpemUoKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBB
WFByb3BlcnR5TmFtZTo6U2xvdEdyaWQ6CisgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQ
cm9wZXJ0eU5hbWU6OlNsb3RHcmlkLCBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVj
dD4oYXhPYmplY3QpLT5zbG90R3JpZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEFYUHJvcGVydHlOYW1lOjpTb3J0RGlyZWN0aW9uOgogICAgICAgICAgICAgcHJvcGVydHlN
YXAuc2V0KEFYUHJvcGVydHlOYW1lOjpTb3J0RGlyZWN0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KGF4
T2JqZWN0LnNvcnREaXJlY3Rpb24oKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02MDgsOCAr
NjExLDI0IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVBbmREZXBlbmRlbnRQcm9w
ZXJ0aWVzKEFjY2Vzc2liaWxpdHlPYmplY3QmIGF4T2JqCiAKICAgICB1cGRhdGVOb2RlKGF4T2Jq
ZWN0KTsKIAotICAgIGlmIChhdXRvKiB0cmVlQW5jZXN0b3IgPSBBY2Nlc3NpYmlsaXR5OjpmaW5k
QW5jZXN0b3IoYXhPYmplY3QsIHRydWUsIFtdIChjb25zdCBhdXRvJiBvYmplY3QpIHsgcmV0dXJu
IG9iamVjdC5pc1RyZWUoKTsgfSkpCi0gICAgICAgIHVwZGF0ZU5vZGVQcm9wZXJ0eSgqdHJlZUFu
Y2VzdG9yLCBBWFByb3BlcnR5TmFtZTo6QVJJQVRyZWVSb3dzKTsKKyAgICAvLyBXaGVuIGEgcm93
IGdhaW5zIG9yIGxvc2VzIGNlbGxzLCB0aGUgY29sdW1uIGNvdW50IG9mIHRoZSB0YWJsZSBjYW4g
Y2hhbmdlLgorICAgIGJvb2wgdXBkYXRlVGFibGVBbmNlc3RvckNvbHVtbnMgPSBpczxBY2Nlc3Np
YmlsaXR5VGFibGVSb3c+KGF4T2JqZWN0KTsKKyAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gYXhP
YmplY3QucGFyZW50T2JqZWN0KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJl
bnRPYmplY3QoKSkgeworICAgICAgICBpZiAoYW5jZXN0b3ItPmlzVHJlZSgpKSB7CisgICAgICAg
ICAgICB1cGRhdGVOb2RlUHJvcGVydHkoKmFuY2VzdG9yLCBBWFByb3BlcnR5TmFtZTo6QVJJQVRy
ZWVSb3dzKTsKKyAgICAgICAgICAgIGlmICghdXBkYXRlVGFibGVBbmNlc3RvckNvbHVtbnMpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAodXBkYXRlVGFi
bGVBbmNlc3RvckNvbHVtbnMgJiYgYW5jZXN0b3ItPmlzQWNjZXNzaWJpbGl0eVRhYmxlSW5zdGFu
Y2UoKSkgeworICAgICAgICAgICAgLy8gT25seSBgdXBkYXRlQ2hpbGRyZW5gIGlmIHRoZSB0YWJs
ZSBpcyB1bmlnbm9yZWQsIGJlY2F1c2Ugb3RoZXJ3aXNlIGB1cGRhdGVDaGlsZHJlbmAgd2lsbCBh
c2NlbmQgYW5kIHVwZGF0ZSB0aGUgbmV4dCBoaWdoZXN0IHVuaWdub3JlZCBhbmNlc3Rvciwgd2hp
Y2ggZG9lc24ndCBhY2NvbXBsaXNoIG91ciBnb2FsIG9mIHVwZGF0aW5nIHRhYmxlIGNvbHVtbnMu
CisgICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIFVzZSBgdXBkYXRlQ2hpbGRyZW5g
IHJhdGhlciB0aGFuIGB1cGRhdGVOb2RlUHJvcGVydHlgIGJlY2F1c2UgYHVwZGF0ZUNoaWxkcmVu
YCB3aWxsIGVuc3VyZSB0aGUgY29sdW1ucyAod2hpY2ggYXJlIGNoaWxkcmVuKSB3aWxsIGhhdmUg
YXNzb2NpYXRlZCBpc29sYXRlZCBvYmplY3RzIGNyZWF0ZWQuCisgICAgICAgICAgICB1cGRhdGVD
aGlsZHJlbigqYW5jZXN0b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CiB9CiAKIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlP
YmplY3QmIGF4T2JqZWN0LCBSZXNvbHZlTm9kZUNoYW5nZXMgcmVzb2x2ZU5vZGVDaGFuZ2VzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggYmVlNDkyMTc5NTQ0Li5mOTU5ZTFiODNkZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaApAQCAtNzksNyArNzksNiBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlO
YW1lIDogdWludDE2X3QgewogICAgIENlbGxzLAogICAgIENvbG9yVmFsdWUsCiAgICAgQ29sdW1u
cywKLSAgICBDb2x1bW5Db3VudCwKICAgICBDb2x1bW5IZWFkZXIsCiAgICAgQ29sdW1uSGVhZGVy
cywKICAgICBDb2x1bW5JbmRleCwKQEAgLTEyMiw2ICsxMjEsNyBAQCBlbnVtIGNsYXNzIEFYUHJv
cGVydHlOYW1lIDogdWludDE2X3QgewogICAgIElzRW5hYmxlZCwKICAgICBJc0V4cGFuZGVkLAog
ICAgIElzRXhwb3NhYmxlLAorICAgIElzRXhwb3NlZFRhYmxlQ2VsbCwKICAgICBJc0ZpZWxkc2V0
LAogICAgIElzRm9jdXNlZCwKICAgICBJc0luZGV0ZXJtaW5hdGUsCkBAIC0xNTEsNyArMTUxLDYg
QEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBJc1NlbGVjdGVk
LAogICAgIElzU2VsZWN0ZWRPcHRpb25BY3RpdmUsCiAgICAgSXNUYWJsZSwKLSAgICBJc1RhYmxl
Q2VsbCwKICAgICBJc1RhYmxlQ29sdW1uLAogICAgIElzVGFibGVSb3csCiAgICAgSXNUcmVlLApA
QCAtMTk2LDcgKzE5NSw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7
CiAgICAgUm9sZVBsYXRmb3JtU3RyaW5nLAogICAgIFJvbGVEZXNjcmlwdGlvbiwKICAgICBSb3dz
LAotICAgIFJvd0NvdW50LAogICAgIFJvd0hlYWRlcnMsCiAgICAgUm93SW5kZXgsCiAgICAgUm93
SW5kZXhSYW5nZSwKQEAgLTIwNiw2ICsyMDQsNyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1l
IDogdWludDE2X3QgewogICAgIFNlc3Npb25JRCwKICAgICBTZXRTaXplLAogICAgIFNvcnREaXJl
Y3Rpb24sCisgICAgU2xvdEdyaWQsCiAgICAgU3BlZWNoSGludCwKICAgICBTdHJpbmdWYWx1ZSwK
ICAgICBTdWJyb2xlUGxhdGZvcm1TdHJpbmcsCkBAIC0yNDAsNyArMjM5LDcgQEAgZW51bSBjbGFz
cyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBWaXNpYmxlUm93cywKIH07CiAKLXVz
aW5nIEFYUHJvcGVydHlWYWx1ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3Qs
IEFYSUQsIFN0cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91YmxlLCBmbG9hdCwgdWludDY0
X3QsIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgRmxv
YXRQb2ludCwgRmxvYXRSZWN0LCBJbnRQb2ludCwgSW50UmVjdCwgUEFMOjpTZXNzaW9uSUQsIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+LCBW
ZWN0b3I8QVhJRD4sIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+LCBWZWN0b3I8U3RyaW5n
PiwgUGF0aCwgT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiwgUmV0YWluUHRyPE5TQXR0cmlidXRl
ZFN0cmluZz4sIEluc2lkZUxpbmssIENoYXJhY3RlclJhbmdlPjsKK3VzaW5nIEFYUHJvcGVydHlW
YWx1ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIEFYSUQsIFN0cmluZywg
Ym9vbCwgaW50LCB1bnNpZ25lZCwgZG91YmxlLCBmbG9hdCwgdWludDY0X3QsIEFjY2Vzc2liaWxp
dHlCdXR0b25TdGF0ZSwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgRmxvYXRQb2ludCwgRmxvYXRS
ZWN0LCBJbnRQb2ludCwgSW50UmVjdCwgUEFMOjpTZXNzaW9uSUQsIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+LCBWZWN0b3I8QVhJRD4sIFZl
Y3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+LCBWZWN0b3I8U3RyaW5nPiwgUGF0aCwgT3B0aW9u
U2V0PEFYQW5jZXN0b3JGbGFnPiwgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4sIEluc2lk
ZUxpbmssIFZlY3RvcjxWZWN0b3I8QVhJRD4+LCBDaGFyYWN0ZXJSYW5nZT47CiB1c2luZyBBWFBy
b3BlcnR5TWFwID0gSGFzaE1hcDxBWFByb3BlcnR5TmFtZSwgQVhQcm9wZXJ0eVZhbHVlVmFyaWFu
dCwgSW50SGFzaDxBWFByb3BlcnR5TmFtZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8QVhQ
cm9wZXJ0eU5hbWU+PjsKIAogc3RydWN0IEFYUHJvcGVydHlDaGFuZ2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA1NWU1ZWYzMjgyZjguLjMwZTE5NTYyY2Fi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTExODksNyAr
MTE4OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBv
YmplY3RBdHRyaWJ1dGVzID0gdGFibGVBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChi
YWNraW5nT2JqZWN0LT5pc1RhYmxlQ29sdW1uKCkpCiAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMg
PSB0YWJsZUNvbEF0dHJzLmdldCgpLmdldCgpOwotICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3Qt
PmlzVGFibGVDZWxsKCkpCisgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNFeHBvc2VkVGFi
bGVDZWxsKCkpCiAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJsZUNlbGxBdHRycy5nZXQo
KS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYmxlUm93KCkpIHsKICAg
ICAgICAgLy8gQW4gQVJJQSB0YWJsZSByb3cgY2FuIGJlIGNvbGxhcHNlZCBhbmQgZXhwYW5kZWQs
IHNvIGl0IG5lZWRzIHRoZSBleHRyYSBhdHRyaWJ1dGVzLgpAQCAtMTg0Niw3ICsxODQ2LDcgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZUNlbGwoKSkgeworICAgIGlmIChiYWNraW5n
T2JqZWN0LT5pc0V4cG9zZWRUYWJsZUNlbGwoKSkgewogICAgICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd0luZGV4UmFuZ2VBdHRyaWJ1dGVd
KSB7CiAgICAgICAgICAgICBhdXRvIHJvd1JhbmdlID0gYmFja2luZ09iamVjdC0+cm93SW5kZXhS
YW5nZSgpOwogICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFr
ZVJhbmdlKHJvd1JhbmdlLmZpcnN0LCByb3dSYW5nZS5zZWNvbmQpXTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLWV4cGVj
dGVkLnR4dAppbmRleCBhZTMxYTU4MDVjYTkuLjg4NWQxNjZiZGMyYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLWV4
cGVjdGVkLnR4dApAQCAtMTEsNyArMTEsNyBAQCBQQVNTOiBjZWxsMi5udW1iZXJBdHRyaWJ1dGVW
YWx1ZSgnQVhBUklBUm93SW5kZXgnKSA9PT0gOAogUEFTUzogY2VsbDQubnVtYmVyQXR0cmlidXRl
VmFsdWUoJ0FYQVJJQUNvbHVtbkluZGV4JykgPT09IDMKIFBBU1M6IGNlbGwyLnJvd0luZGV4UmFu
Z2UoKSA9PT0gJ3sxLCAyfScKIFBBU1M6IGNlbGw1LmNvbHVtbkluZGV4UmFuZ2UoKSA9PT0gJ3sy
LCAzfScKLVBBU1M6IGNlbGwzLnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAyfScKK1BBU1M6IGNl
bGwzLnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAzfScKIFBBU1M6IGNlbGw2LnJvd0luZGV4UmFu
Z2UoKSA9PT0gJ3swLCAyfScKIFBBU1M6IGNlbGw3LnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3swLCAy
fScKIFBBU1M6ICNncmlkIEFYQVJJQVJvd0NvdW50IGR5bmFtaWNhbGx5IGNoYW5nZWQgdG8gNjAu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmli
dXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0
ZXMuaHRtbAppbmRleCA2YWNhZGNlZmNjMmEuLjVjMzUyYWIxYjg4NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy5odG1sCkBAIC0y
MCw3ICsyMCw3IEBACiAgICAgICA8c3BhbiByb2xlPSJncmlkY2VsbCIgYXJpYS1jb2xpbmRleD0i
MiIgYXJpYS1yb3dpbmRleD0iOCI+RnJlZDwvc3Bhbj4KICAgICAgIDxzcGFuIHJvbGU9ImdyaWRj
ZWxsIiBhcmlhLWNvbGluZGV4PSIzIiBhcmlhLXJvd2luZGV4PSI4Ij5KYWNrc29uPC9zcGFuPgog
ICAgICAgPHNwYW4gaWQ9ImNlbGwyIiByb2xlPSJncmlkY2VsbCIgYXJpYS1jb2xpbmRleD0iNCIg
YXJpYS1yb3dpbmRleD0iOCIgYXJpYS1yb3dzcGFuPSIyIj5BY21lLCBJbmMuPC9zcGFuPgotICAg
ICAgPHNwYW4gaWQ9ImNlbGwzIiByb2xlPSJncmlkY2VsbCIgYXJpYS1jb2xpbmRleD0iNSIgYXJp
YS1yb3dpbmRleD0iOCIgYXJpYS1yb3dzcGFuPSIwIj4xMjMgQnJvYWQgU3QuPC9zcGFuPgorICAg
ICAgPHNwYW4gaWQ9ImNlbGwzIiByb2xlPSJncmlkY2VsbCIgYXJpYS1jb2xpbmRleD0iNSIgYXJp
YS1yb3dpbmRleD0iOCIgYXJpYS1yb3dzcGFuPSIzIj4xMjMgQnJvYWQgU3QuPC9zcGFuPgogICAg
IDwvZGl2PgogICAgIDxkaXYgcm9sZT0icm93IiBhcmlhLXJvd2luZGV4PSI5Ij4KICAgICAgIDxz
cGFuIHJvbGU9ImdyaWRjZWxsIiBhcmlhLWNvbGluZGV4PSIyIj5TYXJhPC9zcGFuPgpAQCAtNDks
NyArNDksNyBAQAogPGRpdiBpZD0iZ3JpZDMiIHJvbGU9ImdyaWQiPgogICA8ZGl2IHJvbGU9InJv
dyI+CiAgICAgPHNwYW4gcm9sZT0iZ3JpZGNlbGwiPkNlbGw8L3NwYW4+Ci0gICAgPHNwYW4gaWQ9
ImNlbGw2IiByb2xlPSJncmlkY2VsbCIgYXJpYS1yb3dzcGFuPSIwIj5TcGFuIENlbGw8L3NwYW4+
CisgICAgPHNwYW4gaWQ9ImNlbGw2IiByb2xlPSJncmlkY2VsbCIgYXJpYS1yb3dzcGFuPSIyIj5T
cGFuIENlbGw8L3NwYW4+CiAgIDwvZGl2PgogICA8ZGl2IHJvbGU9InJvdyI+CiAgICAgPHNwYW4g
cm9sZT0iZ3JpZGNlbGwiPkNlbGw8L3NwYW4+CkBAIC05MywxMCArOTMsMTAgQEAKICAgICAgICAg
Ly8gYXJpYS1jb2xpbmRleCBmcm9tIHBhcmVudCByb3cKICAgICAgICAgdGVzdE91dHB1dCArPSBl
eHBlY3QoImNlbGw0Lm51bWJlckF0dHJpYnV0ZVZhbHVlKCdBWEFSSUFDb2x1bW5JbmRleCcpIiwg
IjMiKTsKIAotICAgICAgICAvLyBhcmlhLWNvbHNwYW4gYW5kIGFyaWEtcm93c3BhbiwgaW5jbHVk
aW5nIGFyaWEtcm93c3Bhbj0iMCIKKyAgICAgICAgLy8gYXJpYS1jb2xzcGFuIGFuZCBhcmlhLXJv
d3NwYW4KICAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoImNlbGwyLnJvd0luZGV4UmFuZ2Uo
KSIsICInezEsIDJ9JyIpOwogICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgiY2VsbDUuY29s
dW1uSW5kZXhSYW5nZSgpIiwgIid7MiwgM30nIik7Ci0gICAgICAgIHRlc3RPdXRwdXQgKz0gZXhw
ZWN0KCJjZWxsMy5yb3dJbmRleFJhbmdlKCkiLCAiJ3sxLCAyfSciKTsKKyAgICAgICAgdGVzdE91
dHB1dCArPSBleHBlY3QoImNlbGwzLnJvd0luZGV4UmFuZ2UoKSIsICInezEsIDN9JyIpOwogCiAg
ICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJjZWxsNi5yb3dJbmRleFJhbmdlKCkiLCAiJ3sw
LCAyfSciKTsKICAgICAgICAgLy8gdXNlIHJvd3NwYW4gZm9yIG5hdGl2ZSB0YWJsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFi
bGUtZXhwZWN0ZWQudHh0CmluZGV4IDFlMzZiMThiNTgwMy4uNTc1OGZiN2ZlMjAwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50cy90YWJsZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMv
dGFibGUtZXhwZWN0ZWQudHh0CkBAIC0zMCwxMyArMzAsMTMgQEAgUEFTUyBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJvdy0yIikucm9sZSBpcyAiQVhSb2xl
OiBBWFIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJjZWxsNSIpLnJvbGUgaXMgIkFYUm9sZTogQVhDZWxsIgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1IikubnVtYmVyQXR0cmlidXRlVmFs
dWUoIkFYQVJJQVJvd0luZGV4IikgaXMgOAogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJ
QUNvbHVtbkluZGV4IikgaXMgMgotUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoImNlbGw1Iikucm93SW5kZXhSYW5nZSgpIGlzICJ7MiwgMX0iCitQQVNT
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5y
b3dJbmRleFJhbmdlKCkgaXMgIns0LCAxfSIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLmNvbHVtbkluZGV4UmFuZ2UoKSBpcyAiezAs
IDJ9IgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
InJvdy0zIikucm9sZSBpcyAiQVhSb2xlOiBBWFJvdyIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLnJvbGUgaXMgIkFYUm9sZTogQVhD
ZWxsIgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
ImNlbGw2IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQVJvd0luZGV4IikgaXMgOQogUEFT
UyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2Iiku
bnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQUNvbHVtbkluZGV4IikgaXMgMgotUEFTUyBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2Iikucm93SW5k
ZXhSYW5nZSgpIGlzICJ7MywgMX0iCitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5yb3dJbmRleFJhbmdlKCkgaXMgIns1LCAxfSIKIFBB
U1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIp
LmNvbHVtbkluZGV4UmFuZ2UoKSBpcyAiezAsIDN9IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1l
bGVtZW50cy90YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxl
bWVudHMvdGFibGUuaHRtbAppbmRleCAwNjc5NmI5NDE4YWYuLmQ1Yjg1ZDRmYWZmNiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50cy90YWJsZS5o
dG1sCkBAIC0xMTEsMTQgKzExMSwxNCBAQCBlbHNlIHsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUi
KS5yb2xlJywgJ0FYUm9sZTogQVhDZWxsJyk7CiAgICAgc2hvdWxkQmUoJ2FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5udW1iZXJBdHRyaWJ1dGVW
YWx1ZSgiQVhBUklBUm93SW5kZXgiKScsICc4Jyk7CiAgICAgc2hvdWxkQmUoJ2FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5udW1iZXJBdHRyaWJ1
dGVWYWx1ZSgiQVhBUklBQ29sdW1uSW5kZXgiKScsICcyJyk7Ci0gICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNl
bGw1Iikucm93SW5kZXhSYW5nZSgpJywgJ3syLCAxfScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxs
NSIpLnJvd0luZGV4UmFuZ2UoKScsICd7NCwgMX0nKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUi
KS5jb2x1bW5JbmRleFJhbmdlKCknLCAnezAsIDJ9Jyk7CiAKICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgicm93
LTMiKS5yb2xlJywgJ0FYUm9sZTogQVhSb3cnKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5y
b2xlJywgJ0FYUm9sZTogQVhDZWxsJyk7CiAgICAgc2hvdWxkQmUoJ2FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5udW1iZXJBdHRyaWJ1dGVWYWx1
ZSgiQVhBUklBUm93SW5kZXgiKScsICc5Jyk7CiAgICAgc2hvdWxkQmUoJ2FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5udW1iZXJBdHRyaWJ1dGVW
YWx1ZSgiQVhBUklBQ29sdW1uSW5kZXgiKScsICcyJyk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2
Iikucm93SW5kZXhSYW5nZSgpJywgJ3szLCAxfScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIp
LnJvd0luZGV4UmFuZ2UoKScsICd7NSwgMX0nKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5j
b2x1bW5JbmRleFJhbmdlKCknLCAnezAsIDN9Jyk7CiAKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUzOGZlYzk3M2MyMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIyIEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSAnY2VsbCBm
b3IgY29sdW1uIGFuZCByb3cnIEFQSSB3b3JrcyBjb3JyZWN0bHkgYWZ0ZXIgZHluYW1pYyBjb2xz
cGFuIGNoYW5nZXMuCisKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkuZG9t
SWRlbnRpZmllciA9PT0gJ3IwYzAnCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDEs
IDApLmRvbUlkZW50aWZpZXIgPT09ICdyMGMxJworUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFu
ZFJvdygyLCAwKSA9PT0gbnVsbCA9PT0gdHJ1ZQorUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpID09PSAn
ezEsIDF9JworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5zZXRBdHRyaWJ1dGUoJ2Nv
bHNwYW4nLCAnMicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApLmRvbUlk
ZW50aWZpZXIgPT09ICdyMGMxJworUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpID09PSAnezEsIDJ9Jwor
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5yZW1vdmVBdHRyaWJ1dGUoJ2NvbHNwYW4n
KQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKSA9PT0gbnVsbCA9PT0gdHJ1
ZQorUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdy
MGMxJykuY29sdW1uSW5kZXhSYW5nZSgpID09PSAnezEsIDF9JworZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3IwYzEnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29sc3BhbicsICcyJykKK1BBU1M6IHRh
YmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCkuZG9tSWRlbnRpZmllciA9PT0gJ3IwYzEnCitQ
QVNTOiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEn
KS5jb2x1bW5JbmRleFJhbmdlKCkgPT09ICd7MSwgMn0nCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSGVhZGVyIDAJSGVhZGVyIDEKK1IxQzAJUjFD
MQlSMUMyCitSMkMwCVIyQzEJUjJDMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9keW5hbWljLWNvbHNwYW4uaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy1jb2xzcGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li43N2E0YTI4NzBkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2R5bmFtaWMtY29sc3Bhbi5odG1sCkBAIC0wLDAgKzEsNjkgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cit0
ZCwgdGggeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorCis8dGFibGUgaWQ9InRhYmxlIj4KKzx0aGVhZCBpZD0idGhlYWQiPgorICAg
IDx0ciBpZD0icjAiPgorICAgICAgICA8dGggaWQ9InIwYzAiPkhlYWRlciAwPC90aD4KKyAgICAg
ICAgPHRoIGlkPSJyMGMxIj5IZWFkZXIgMTwvdGg+CisgICAgPC90cj4KKzwvdGhlYWQ+Cis8dGJv
ZHkgaWQ9InRib2R5Ij4KKyAgICA8dHIgaWQ9InIxIj4KKyAgICAgICAgPHRkIGlkPSJyMWMwIj5S
MUMwPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyMWMxIj5SMUMxPC90ZD4KKyAgICAgICAgPHRkIGlk
PSJyMWMyIj5SMUMyPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBpZD0icjIiPgorICAgICAgICA8
dGQgaWQ9InIyYzAiPlIyQzA8L3RkPgorICAgICAgICA8dGQgaWQ9InIyYzEiPlIyQzE8L3RkPgor
ICAgICAgICA8dGQgaWQ9InIyYzEiPlIyQzI8L3RkPgorICAgIDwvdHI+Cis8L3Rib2R5PgorPC90
YWJsZT4KKworPHNjcmlwdD4KK3ZhciBvdXRwdXQgPSAiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0
aGUgJ2NlbGwgZm9yIGNvbHVtbiBhbmQgcm93JyBBUEkgd29ya3MgY29ycmVjdGx5IGFmdGVyIGR5
bmFtaWMgY29sc3BhbiBjaGFuZ2VzLlxuXG4iOworCitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdmFy
IHRhYmxlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0
YWJsZSIpOworICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3co
MCwgMCkuZG9tSWRlbnRpZmllciIsICIncjBjMCciKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDEsIDApLmRvbUlkZW50aWZpZXIiLCAiJ3IwYzEnIik7
CisgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKSA9
PT0gbnVsbCIsICJ0cnVlIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgp
IiwgIid7MSwgMX0nIik7CisKKyAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCAnMicpIik7Cisg
ICAgc2V0VGltZW91dChhc3luYyBmdW5jdGlvbigpIHsKKyAgICAgICAgYXdhaXQgd2FpdEZvcigo
KSA9PiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApICE9PSBudWxsKTsKKyAgICAgICAg
b3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKS5kb21JZGVu
dGlmaWVyIiwgIidyMGMxJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5JbmRleFJh
bmdlKCkiLCAiJ3sxLCAyfSciKTsKKworICAgICAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigi
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5yZW1vdmVBdHRyaWJ1dGUoJ2NvbHNwYW4n
KSIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLmNlbGxGb3JD
b2x1bW5BbmRSb3coMiwgMCkgPT09IG51bGwiLCAidHJ1ZSIpOworICAgICAgICBvdXRwdXQgKz0g
ZXhwZWN0KCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3Iw
YzEnKS5jb2x1bW5JbmRleFJhbmdlKCkiLCAiJ3sxLCAxfSciKTsKKworICAgICAgICBvdXRwdXQg
Kz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5zZXRBdHRy
aWJ1dGUoJ2FyaWEtY29sc3BhbicsICcyJykiKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9
PiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApICE9PSBudWxsKTsKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKS5kb21JZGVudGlm
aWVyIiwgIidyMGMxJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5JbmRleFJhbmdl
KCkiLCAiJ3sxLCAyfSciKTsKKworICAgICAgICBkZWJ1ZyhvdXRwdXQpOworICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMWI1
MzNlYjdmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5
bmFtaWMtcm93c3Bhbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorVGhpcyB0ZXN0IGVu
c3VyZXMgdGhhdCB0aGUgJ2NlbGwgZm9yIGNvbHVtbiBhbmQgcm93JyBBUEkgd29ya3MgY29ycmVj
dGx5IGFmdGVyIGR5bmFtaWMgcm93c3BhbiBjaGFuZ2VzLgorCitQQVNTOiB0YWJsZS5jZWxsRm9y
Q29sdW1uQW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIgPT09ICdyMGMwJworUEFTUzogdGFibGUu
Y2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKSA9PT0gbnVsbCA9PT0gdHJ1ZQorUEFTUzogYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhS
YW5nZSgpID09PSAnezEsIDF9JworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IxYzInKS5zZXRB
dHRyaWJ1dGUoJ3Jvd3NwYW4nLCAnMicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93
KDIsIDIpLmRvbUlkZW50aWZpZXIgPT09ICdyMWMyJworUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpID09PSAn
ezEsIDJ9JworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IxYzInKS5yZW1vdmVBdHRyaWJ1dGUo
J3Jvd3NwYW4nKQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKSA9PT0gbnVs
bCA9PT0gdHJ1ZQorUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpID09PSAnezEsIDF9JworZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3IxYzInKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtcm93c3BhbicsICcyJykKK1BB
U1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikuZG9tSWRlbnRpZmllciA9PT0gJ3Ix
YzInCitQQVNTOiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
J3IxYzInKS5yb3dJbmRleFJhbmdlKCkgPT09ICd7MSwgMn0nCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSGVhZGVyIDAJSGVhZGVyIDEJSGVhZGVy
IDIKK1IxQzAJUjFDMQlSMUMyCitSMkMwCVIyQzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2R5bmFtaWMtcm93c3Bhbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uZTA5OTMxNWE4YjdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4uaHRtbApAQCAtMCwwICsxLDY4IEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHN0
eWxlPgordGQsIHRoIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKworPHRhYmxlIGlkPSJ0YWJsZSI+Cis8dGhlYWQgaWQ9InRoZWFk
Ij4KKyAgICA8dHIgaWQ9InIwIj4KKyAgICAgICAgPHRoIGlkPSJyMGMwIj5IZWFkZXIgMDwvdGg+
CisgICAgICAgIDx0aCBpZD0icjBjMSI+SGVhZGVyIDE8L3RoPgorICAgICAgICA8dGggaWQ9InIw
YzIiPkhlYWRlciAyPC90aD4KKyAgICA8L3RyPgorPC90aGVhZD4KKzx0Ym9keSBpZD0idGJvZHki
PgorICAgIDx0ciBpZD0icjEiPgorICAgICAgICA8dGQgaWQ9InIxYzAiPlIxQzA8L3RkPgorICAg
ICAgICA8dGQgaWQ9InIxYzEiPlIxQzE8L3RkPgorICAgICAgICA8dGQgaWQ9InIxYzIiPlIxQzI8
L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGlkPSJyMiI+CisgICAgICAgIDx0ZCBpZD0icjJjMCI+
UjJDMDwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjJjMSI+UjJDMTwvdGQ+CisgICAgPC90cj4KKzwv
dGJvZHk+Cis8L3RhYmxlPgorCis8c2NyaXB0PgordmFyIG91dHB1dCA9ICJUaGlzIHRlc3QgZW5z
dXJlcyB0aGF0IHRoZSAnY2VsbCBmb3IgY29sdW1uIGFuZCByb3cnIEFQSSB3b3JrcyBjb3JyZWN0
bHkgYWZ0ZXIgZHluYW1pYyByb3dzcGFuIGNoYW5nZXMuXG5cbiI7CisKK2lmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICB2YXIgdGFibGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoInRhYmxlIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNv
bHVtbkFuZFJvdygwLCAwKS5kb21JZGVudGlmaWVyIiwgIidyMGMwJyIpOworICAgIG91dHB1dCAr
PSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikgPT09IG51bGwiLCAidHJ1
ZSIpOworICAgIG91dHB1dCArPSBleHBlY3QoImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgncjFjMicpLnJvd0luZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOwor
CisgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
MWMyJykuc2V0QXR0cmlidXRlKCdyb3dzcGFuJywgJzInKSIpOworICAgIHNldFRpbWVvdXQoYXN5
bmMgZnVuY3Rpb24oKSB7CisgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gdGFibGUuY2VsbEZv
ckNvbHVtbkFuZFJvdygyLCAyKSAhPT0gbnVsbCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
InRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikuZG9tSWRlbnRpZmllciIsICIncjFjMici
KTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpIiwgIid7MSwgMn0nIik7
CisKKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyMWMyJykucmVtb3ZlQXR0cmlidXRlKCdyb3dzcGFuJykiKTsKKyAgICAgICAgb3V0cHV0
ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpID09
PSBudWxsIiwgInRydWUiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgp
IiwgIid7MSwgMX0nIik7CisKKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyMWMyJykuc2V0QXR0cmlidXRlKCdhcmlhLXJvd3NwYW4nLCAn
MicpIik7CisgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gdGFibGUuY2VsbEZvckNvbHVtbkFu
ZFJvdygyLCAyKSAhPT0gbnVsbCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNl
bGxGb3JDb2x1bW5BbmRSb3coMiwgMikuZG9tSWRlbnRpZmllciIsICIncjFjMiciKTsKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpIiwgIid7MSwgMn0nIik7CisKKyAgICAg
ICAgZGVidWcob3V0cHV0KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZjA0NTQxMGQy
YzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMt
dGFibGUtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1RoaXMgdGVz
dCBlbnN1cmVzIHRoYXQgdGhlICdjZWxsIGZvciBjb2x1bW4gYW5kIHJvdycgQVBJIHdvcmtzIGNv
cnJlY3RseSBhZnRlciBkeW5hbWljIERPTSBjaGlsZCBjaGFuZ2VzLgorCitQQVNTOiB0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIgPT09ICdyMGMwJworUEFTUzog
dGFibGUucm93Q291bnQgPT09IDMKK1BBU1M6IHRhYmxlLmNvbHVtbkNvdW50ID09PSAyCitQQVNT
OiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMpID09PSBudWxsID09PSB0cnVlCitkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGJvZHknKS5hcHBlbmRDaGlsZChjcmVhdGVGb3VydGhSb3co
KSkKK1BBU1M6IHRhYmxlLnJvd0NvdW50ID09PSA0CitQQVNTOiB0YWJsZS5jb2x1bW5Db3VudCA9
PT0gMworUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKS5kb21JZGVudGlmaWVy
ID09PSAncjNjMCcKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMycpLmFwcGVuZENoaWxkKGR5
bmFtaWNDZWxsKQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCAzKS5kb21JZGVu
dGlmaWVyID09PSAnZHluYW1pYy1jZWxsJworUEFTUzogdGFibGUuY29sdW1uQ291bnQgPT09IDQK
K2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkeW5hbWljLWNlbGwnKS5yZW1vdmUoKQorUEFTUzog
dGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCA0KSA9PT0gbnVsbCA9PT0gdHJ1ZQorUEFTUzog
dGFibGUuY29sdW1uQ291bnQgPT09IDMKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMycpLnJl
bW92ZSgpCitQQVNTOiB0YWJsZS5yb3dDb3VudCA9PT0gMworUEFTUzogdGFibGUuY29sdW1uQ291
bnQgPT09IDIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykgPT09IG51bGwg
PT09IHRydWUKK25ld1Rib2R5LmFwcGVuZENoaWxkKGNyZWF0ZUZvdXJ0aFJvdygpKQorZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlJykuYXBwZW5kQ2hpbGQobmV3VGJvZHkpCitQQVNTOiB0
YWJsZS5yb3dDb3VudCA9PT0gNAorUEFTUzogdGFibGUuY29sdW1uQ291bnQgPT09IDMKK1BBU1M6
IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykuZG9tSWRlbnRpZmllciA9PT0gJ3IzYzAn
CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSGVh
ZGVyIDAJSGVhZGVyIDEKK1IxQzAJUjFDMQorUjJDMAlSMkMxCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy5odG1sIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jZWE0YmU3OTVlNmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVz
Y2VuZGFudHMuaHRtbApAQCAtMCwwICsxLDEwNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK3RkLCB0aCB7Cisg
ICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
CisKKzx0YWJsZSBpZD0idGFibGUiPgorPHRoZWFkIGlkPSJ0aGVhZCI+CisgICAgPHRyIGlkPSJy
MCI+CisgICAgICAgIDx0aCBpZD0icjBjMCI+SGVhZGVyIDA8L3RoPgorICAgICAgICA8dGggaWQ9
InIwYzEiPkhlYWRlciAxPC90aD4KKyAgICA8L3RyPgorPC90aGVhZD4KKzx0Ym9keSBpZD0idGJv
ZHkiPgorICAgIDx0ciBpZD0icjEiPgorICAgICAgICA8dGQgaWQ9InIxYzAiPlIxQzA8L3RkPgor
ICAgICAgICA8dGQgaWQ9InIxYzEiPlIxQzE8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGlkPSJy
MiI+CisgICAgICAgIDx0ZCBpZD0icjJjMCI+UjJDMDwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjJj
MSI+UjJDMTwvdGQ+CisgICAgPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPgorCis8c2NyaXB0Pgor
dmFyIG91dHB1dCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSAnY2VsbCBmb3IgY29sdW1u
IGFuZCByb3cnIEFQSSB3b3JrcyBjb3JyZWN0bHkgYWZ0ZXIgZHluYW1pYyBET00gY2hpbGQgY2hh
bmdlcy5cblxuIjsKKworZnVuY3Rpb24gY3JlYXRlRm91cnRoUm93KCkgeworICAgIGNvbnN0IHRy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICB0ci5pZCA9ICJyMyI7CisKKyAg
ICBjb25zdCBjZWxsT25lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICBjZWxs
T25lLmlkID0gInIzYzAiOworICAgIGNvbnN0IGNlbGxUd28gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0ZCIpOworICAgIGNlbGxUd28uaWQgPSAicjNjMSI7CisgICAgY29uc3QgY2VsbFRocmVl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICBjZWxsVHdvLmlkID0gInIzYzIi
OworCisgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbE9uZSk7CisgICAgdHIuYXBwZW5kQ2hpbGQoY2Vs
bFR3byk7CisgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbFRocmVlKTsKKyAgICByZXR1cm4gdHI7Cit9
CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIgbmV3VGJvZHkgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ0Ym9keSIpOworICAgIHZhciBkeW5hbWljQ2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRkIik7CisgICAgZHluYW1pY0NlbGwuaWQgPSAiZHluYW1pYy1jZWxsIjsKKworICAg
IHZhciB0YWJsZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgidGFibGUiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5k
Um93KDAsIDApLmRvbUlkZW50aWZpZXIiLCAiJ3IwYzAnIik7CisgICAgb3V0cHV0ICs9IGV4cGVj
dCgidGFibGUucm93Q291bnQiLCAiMyIpOworICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNv
bHVtbkNvdW50IiwgIjIiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29s
dW1uQW5kUm93KDAsIDMpID09PSBudWxsIiwgInRydWUiKTsKKworICAgIG91dHB1dCArPSBldmFs
QW5kUmV0dXJuKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGJvZHknKS5hcHBlbmRDaGlsZChj
cmVhdGVGb3VydGhSb3coKSkiKTsKKyAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgewor
ICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLnJvd0NvdW50IiwgIjQi
KTsKKyAgICAgICAgLy8gVGhlIGZvdXJ0aCByb3cgaGFzIHRocmVlIGNlbGxzIGluIGl0ICh2cy4g
dGhlIHR3byBjZWxscyBpbiBldmVyeSBvdGhlciByb3cpLgorICAgICAgICBvdXRwdXQgKz0gYXdh
aXQgZXhwZWN0QXN5bmMoInRhYmxlLmNvbHVtbkNvdW50IiwgIjMiKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKS5kb21JZGVudGlmaWVy
IiwgIidyM2MwJyIpOworCisgICAgICAgIC8vIE5vdyBhcHBlbmQgYSBjZWxsIHRvIGEgcm93Lgor
ICAgICAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3IzJykuYXBwZW5kQ2hpbGQoZHluYW1pY0NlbGwpIik7CisgICAgICAgIGF3YWl0IHdhaXRGb3Io
KCkgPT4gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCAzKSk7CisgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMywgMykuZG9tSWRlbnRpZmllciIs
ICInZHluYW1pYy1jZWxsJyIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMo
InRhYmxlLmNvbHVtbkNvdW50IiwgIjQiKTsKKworICAgICAgICAvLyBBbmQgcmVtb3ZlIGl0Lgor
ICAgICAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2R5bmFtaWMtY2VsbCcpLnJlbW92ZSgpIik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBl
Y3RBc3luYygidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCA0KSA9PT0gbnVsbCIsICJ0cnVl
Iik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUuY29sdW1uQ291
bnQiLCAiMyIpOworCisgICAgICAgIC8vIFJlbW92ZSB0aGUgZHluYW1pY2FsbHkgYWRkZWQgZm91
cnRoIHJvdy4KKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyMycpLnJlbW92ZSgpIik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBl
Y3RBc3luYygidGFibGUucm93Q291bnQiLCAiMyIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQg
ZXhwZWN0QXN5bmMoInRhYmxlLmNvbHVtbkNvdW50IiwgIjIiKTsKKyAgICAgICAgb3V0cHV0ICs9
IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMpID09PSBu
dWxsIiwgInRydWUiKTsKKworICAgICAgICAvLyBUaGVuIGFkZCB0aGUgZm91cnRoIHJvdyBiYWNr
IHRvIHRoZSBuZXcgdGJvZHkuCisgICAgICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJuKCJuZXdU
Ym9keS5hcHBlbmRDaGlsZChjcmVhdGVGb3VydGhSb3coKSkiKTsKKyAgICAgICAgb3V0cHV0ICs9
IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZScpLmFwcGVuZENo
aWxkKG5ld1Rib2R5KSIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRh
YmxlLnJvd0NvdW50IiwgIjQiKTsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5j
KCJ0YWJsZS5jb2x1bW5Db3VudCIsICIzIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRh
YmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykuZG9tSWRlbnRpZmllciIsICIncjNjMCciKTsK
KworICAgICAgICBkZWJ1ZyhvdXRwdXQpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9
LCAwKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24tZXhwZWN0ZWQudHh0CmluZGV4IDRk
ZjQ1MDZjMGRhMC4uODEyNmM1ZTM4YzRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtNTYsNyArNTYsNyBAQCBQ
QVNTIGF4RWxlbWVudC5yb2xlID09ICdBWFJvbGU6IEFYTGlzdCcgaXMgdHJ1ZQogCiAKIElubGlu
ZSBsaXN0IGVsZW1lbnRzIHdpdGggYW4gYXJpYSByb2xlIHNob3VsZCBiZSBhIGxpc3QKLVBBU1Mg
YXhFbGVtZW50LnJvbGUgPT0gJ0FYUm9sZTogQVhMaXN0JyBpcyB0cnVlCitQQVNTIGF4RWxlbWVu
dC5yb2xlID09ICdBWFJvbGU6IEFYTGlzdCcgaXMgZmFsc2UKIAogCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xp
c3QtZGV0ZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0
aW9uLmh0bWwKaW5kZXggMjAwYmU1OTY0N2M2Li4zZjFlMDAxNTBmM2UgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24uaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLmh0bWwKQEAgLTYzLDcgKzYzLDcgQEAK
IDxkaXY+aXRlbTwvZGl2PgogPC91bD4KIAotPHVsIGlkPSJsaXN0MTQiIHJvbGU9Imxpc3QiIHRl
c3QtZGVzY3JpcHRpb249IklubGluZSBsaXN0IGVsZW1lbnRzIHdpdGggYW4gYXJpYSByb2xlIHNo
b3VsZCBiZSBhIGxpc3QiIGlzLWxpc3Q9InRydWUiIHN0eWxlPSJkaXNwbGF5OiB0YWJsZTsiPgor
PHVsIGlkPSJsaXN0MTQiIHJvbGU9Imxpc3QiIHRlc3QtZGVzY3JpcHRpb249IklubGluZSBsaXN0
IGVsZW1lbnRzIHdpdGggYW4gYXJpYSByb2xlIHNob3VsZCBiZSBhIGxpc3QiIGlzLWxpc3Q9ImZh
bHNlIiBzdHlsZT0iZGlzcGxheTogdGFibGU7Ij4KICAgPGxpIHJvbGU9Imxpc3RpdGVtIiBzdHls
ZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI+SXRlbSAxPC9saT4KICAgPGxpIHJvbGU9Imxpc3Rp
dGVtIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI+SXRlbSAyPC9saT4KICAgPGxpIHJv
bGU9Imxpc3RpdGVtIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI+SXRlbSAzPC9saT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtaW5jb3JyZWN0LWNv
bHNwYW4tY2VsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxl
LWluY29ycmVjdC1jb2xzcGFuLWNlbGwtZXhwZWN0ZWQudHh0CmluZGV4IDFiZGUxYmE5MDBkMS4u
Zjc0ZWQ0NWYzODY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxl
LWluY29ycmVjdC1jb2xzcGFuLWNlbGwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvdGFibGUtaW5jb3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQKQEAg
LTUsMTcgKzUsMzUgQEAgVGhpcyB0ZXN0cyB0aGUgcm93UmFuZ2UgYW5kIGNvbHVtblJhbmdlIGF0
dHJpYnV0ZXMgb2YgdGFibGUgY2VsbHMgaW4gYSB0YWJsZSB3aXQKIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KIAogCi1UYWJsZTogUm93czogMiwgQ29sdW1uczogMworVGFibGU6IFJvd3M6IDIs
IENvbHVtbnM6IDYKIFtUYWJsZSBjZWxsIGF0IHJvdzogMCwgY29sdW1uOiAwXSBSb3cgcmFuZ2U6
IHswLCAxfSwgQ29sdW1uIHJhbmdlOiB7MCwgMX0KIAlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwg
YXQgKDAsIDApCi1bVGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogMF0gUm93IHJhbmdlOiB7
MSwgMX0sIENvbHVtbiByYW5nZTogezAsIDJ9CitbVGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVt
bjogMF0gUm93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezAsIDR9CiAJUEFTU0VEIENl
bGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAwKQogCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAo
MSwgMSkKLVtUYWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1uOiAxXSBSb3cgcmFuZ2U6IHsxLCAx
fSwgQ29sdW1uIHJhbmdlOiB7MCwgMn0KKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEs
IDIpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAzKQorW1RhYmxlIGNlbGwgYXQg
cm93OiAxLCBjb2x1bW46IDFdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6IHswLCA0
fQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMCkKKwlQQVNTRUQgQ2VsbCBpcyBz
YW1lIGNlbGwgYXQgKDEsIDEpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAyKQor
CVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMykKK1tUYWJsZSBjZWxsIGF0IHJvdzog
MSwgY29sdW1uOiAyXSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7MCwgNH0KKwlQ
QVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDApCisJUEFTU0VEIENlbGwgaXMgc2FtZSBj
ZWxsIGF0ICgxLCAxKQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMikKKwlQQVNT
RUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDMpCitbVGFibGUgY2VsbCBhdCByb3c6IDEsIGNv
bHVtbjogM10gUm93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezAsIDR9CiAJUEFTU0VE
IENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAwKQogCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBh
dCAoMSwgMSkKLVtUYWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1uOiAyXSBSb3cgcmFuZ2U6IHsx
LCAxfSwgQ29sdW1uIHJhbmdlOiB7MiwgMX0KIAlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQg
KDEsIDIpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAzKQorW1RhYmxlIGNlbGwg
YXQgcm93OiAxLCBjb2x1bW46IDRdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6IHs0
LCAyfQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgNCkKKwlQQVNTRUQgQ2VsbCBp
cyBzYW1lIGNlbGwgYXQgKDEsIDUpCitbVGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogNV0g
Um93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezQsIDJ9CisJUEFTU0VEIENlbGwgaXMg
c2FtZSBjZWxsIGF0ICgxLCA0KQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgNSkK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1tdWx0aXBsZS10Ym9kaWVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtbXVsdGlwbGUtdGJv
ZGllcy1leHBlY3RlZC50eHQKaW5kZXggMmFlZDM2NjVjMWFkLi40ODJiNWVmNTg5OTYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtbXVsdGlwbGUtdGJvZGllcy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1tdWx0aXBs
ZS10Ym9kaWVzLWV4cGVjdGVkLnR4dApAQCAtMTAxOCw3ICsxMDE4LDcgQEAgQVhFZGl0YWJsZUFu
Y2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJ
bmRleFJhbmdlOiBOU1JhbmdlOiB7MSwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTog
ezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENv
bHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxl
bWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJv
d0luZGV4OiAtMQpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVs
bCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBO
U1JhbmdlOiB7MiwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENv
bHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJ
RWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJh
eSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpA
QCAtMTI1OCw3ICsxMjU4LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVz
dEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7Mywg
MX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJ
RWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxh
cnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+
CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtMTM3OCw3ICsx
Mzc4LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5j
ZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7NCwgMX0KIEFYQ29sdW1u
SW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxh
cnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXpl
IDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1
bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgQVhF
ZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxs
KQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7NSwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTog
TlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXpl
IDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hl
YWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEK
IEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgQVhFZGl0YWJsZUFuY2Vz
dG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRl
eFJhbmdlOiBOU1JhbmdlOiB7NiwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIs
IDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVt
bkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVu
dHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0lu
ZGV4OiAtMQpAQCAtMTczOCw3ICsxNzM4LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkK
IEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1Jh
bmdlOiB7NywgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVt
bkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxl
bWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBv
ZiBzaXplIDA+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS10aGVhZC10Zm9vdC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXRoZWFkLXRmb290LWV4
cGVjdGVkLnR4dAppbmRleCBlNDQ4M2Y0MmJlMjAuLjVmZjE3ZjIyNGM4ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS10aGVhZC10Zm9vdC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS10aGVhZC10Zm9vdC1leHBlY3Rl
ZC50eHQKQEAgLTcyMiw3ICs3MjIsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhI
aWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6
IHsxLCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVh
ZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50
czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNp
emUgMT4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0xCkBAIC04NDIs
NyArODQyLDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxl
QW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KIEFYQ29s
dW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6
IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBz
aXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFD
b2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtOTYyLDcgKzk2Miw3IEBAIEFY
RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVs
bCkKIEFYUm93SW5kZXhSYW5nZTogTlNSYW5nZTogezMsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6
IE5TUmFuZ2U6IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6
ZSAwPgorQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dI
ZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhBUklBQ29sdW1uSW5kZXg6IC0x
CiBBWEFSSUFSb3dJbmRleDogLTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L2dlbmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10YWJsZS1jcmFz
aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9n
ZW5lcmF0ZWQtY29udGVudC13aXRoLWRpc3BsYXktdGFibGUtY3Jhc2gtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGY1MTg4MDRlYTI0My4uN2NiYTQxNzY2NzA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9nZW5lcmF0ZWQtY29udGVudC13aXRoLWRpc3BsYXkt
dGFibGUtY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L2dlbmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10YWJsZS1jcmFzaC1l
eHBlY3RlZC50eHQKQEAgLTcsNyArNyw4IEBAIEFYUm9sZTogQVhXZWJBcmVhIEFYVmFsdWU6CiAg
ICAgICAgIEFYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IGZvbwogICAgICAgICBBWFJvbGU6
IEFYU3RhdGljVGV4dCBBWFZhbHVlOiAhCiAgICAgQVhSb2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1
ZTogYmFyCi0gICAgQVhSb2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1ZTogIQorICAgIEFYUm9sZTog
QVhHcm91cCBBWFZhbHVlOgorICAgICAgICBBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiAh
CiAgICAgQVhSb2xlOiBBWEdyb3VwIEFYVmFsdWU6CiAgICAgICAgIEFYUm9sZTogQVhTdGF0aWNU
ZXh0IEFYVmFsdWU6IGJhegogICAgIEFYUm9sZTogQVhHcm91cCBBWFZhbHVlOgo=
</data>
<flag name="commit-queue"
          id="494296"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466738</attachid>
            <date>2023-06-17 10:19:45 -0700</date>
            <delta_ts>2023-06-17 10:35:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-258223-20230617101944.patch</filename>
            <type>text/plain</type>
            <size>137887</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSAxNmU0ZTVlMDY1YzZkMmRhMDk1Y2JmNTk1YTM2OGZjZDk3MWQ3MTUwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCAxNiBKdW4gMjAyMyAxNDo1MToxMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBN
b3ZlCiBOU0FjY2Vzc2liaWxpdHlDZWxsRm9yQ29sdW1uQW5kUm93UGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBBUEkgb2ZmIHRoZQogbWFpbi10aHJlYWQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI1ODIyMwogcmRhcjovL3Byb2JsZW0vMTEwOTE5ODgzCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCldpdGggdGhpcyBwYXRjaCwgd2UgcmVwbGFjZSB0aGUgZXhpc3Rp
bmcgcmVuZGVyLXRyZWUtYmFzZWQgY29sdW1uIGFuZApyb3cgY2VsbCBzbG90IGRldGVybWluYXRp
b24gYWxnb3JpdGhtIHdpdGggYSBjdXN0b20gb25lIGJhc2VkIG9uOgoKaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjZm9ybWluZy1hLXRhYmxlCgpXZSB1
c2UgdGhpcyBmb3JtaW5nLWEtdGFibGUgYWxnb3JpdGhtIHRvIGJ1aWxkIGEgbmV3IGRhdGEgc3Ry
dWN0dXJlCmluZGljYXRpbmcgdGhlIGNlbGwgQVhJRCBvY2N1cGllZCBieSBlYWNoICJzbG90IiBp
biB0aGUgdGFibGU6IGBBY2Nlc3NpYmlsaXR5VGFibGU6Om1fc2xvdEdyaWRgCgpUaGlzIGhhcyB0
d28gYmVuZWZpdHM6CiAgMS4gV2UgY2FuIChhbmQgZG8pIGNvcHkgdGhpcyBkYXRhIHN0cnVjdHVy
ZSB0byB0aGUgc2Vjb25kYXJ5IHRocmVhZCwKICAgICBhbmQgdXNlIGl0IHRvIHBlcmZvcm0gYEFY
SXNvbGF0ZWRPYmplY3Q6OmNlbGxGb3JDb2x1bW5BbmRSb3dgCiAgICAgd2l0aG91dCByZWx5aW5n
IG9uIHRoZSBtYWluLXRocmVhZC4KCiAgMi4gVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgYWxn
b3JpdGhtIGRvZXMgbm90IHJlbHkgb24gYW55IHNvcnQgb2YKICAgICByZW5kZXIgdHJlZSBzdHJ1
Y3R1cmUgZm9yIGNvcnJlY3RuZXNzLiBUaGlzIGlzIGtleSBiZWNhdXNlIGF1dGhvcnMKICAgICBl
eHBlY3QgdG8gYmUgYWJsZSB0byBwdXQgYW55IENTUyBgZGlzcGxheWAgdmFsdWUgKGZsZXgsIGNv
bnRlbnRzLCBibG9jaywgZXRjKQogICAgIG9uIHJvd3MsIGNlbGxzLCBhbmQgdGFibGVzLCBhbmQg
cHJlc2VydmUgYWNjZXNzaWJpbGl0eSBzZW1hbnRpY3MuCiAgICAgVGhpcyBkaWRuJ3Qgd29yayBi
ZWZvcmUgdGhpcyBwYXRjaCBiZWNhdXNlIGFueSBvZiB0aGVzZSBkaXNwbGF5CiAgICAgdmFsdWVz
IHByZXZlbnQgUmVuZGVyVGFibGUsIFJlbmRlclRhYmxlUm93LCBhbmQgUmVuZGVyVGFibGVDZWxs
cwogICAgIGZyb20gYmVpbmcgZ2VuZXJhdGVkLCB3aGljaCB0aGUgUmVuZGVyVGFibGUgY2VsbC1m
b3ItY29sdW1uLWFuZC1yb3cKICAgICBtZWNoYW5pc20gcmVsaWVzIG9uLgoKVGhpcyBwYXRjaCBk
b2VzIG5vdCBmdWxseSBmaXggbm9uLXN0YW5kYXJkLWRpc3BsYXkgdmFsdWUgdGFibGVzIGR1ZSB0
bwppc3N1ZXMgd2l0aCBwYXJlbnQtY2hpbGQgbWlzbWF0Y2hlcyBpbiB0YWJsZSBoaWVyYXJjaGll
cyB3aXRoIHRoZXNlCmRpc3BsYXkgdmFsdWVzLiBUaGF0IHdpbGwgYmUgZml4ZWQgaW4gYSBsYXRl
ciBwYXRjaC4KClRoaXMgcGF0Y2ggYWxzbyBmZWF0dXJlcyBzZXZlcmFsIG90aGVyIGltcHJvdmVt
ZW50cy4KCiAgMS4gQVhQcm9wZXJ0eU5hbWU6OlJvd0NvdW50IGFuZCBBWFByb3BlcnR5TmFtZTo6
Q29sdW1uQ291bnQgd2VyZQogICAgIHBvaW50bGVzc2x5IGNhY2hlZCByYXRoZXIgdGhhbiBzaW1w
bHkgY291bnRpbmcgQVhQcm9wZXJ0eU5hbWU6OlJvd3MKICAgICBhbmQgQVhQcm9wZXJ0eU5hbWU6
OkNvbHVtbnMgKGFzIHRoZSBsaXZlIHRyZWUgaW1wbGVtZW50YXRpb24gZG9lcykuCiAgICAgVGhl
c2UgcHJvcGVydGllcyBhcmUgcmVtb3ZlZCwgcmVkdWNpbmcgbWVtb3J5IGFuZCBDUFUgY29uc3Vt
cHRpb24uCgogIDIuIEZpeGVkIGEgYnVnIHdoZXJlIHN0YWxlIGRhdGEgd2FzIG5vdCB1cGRhdGVk
IGFmdGVyIGR5bmFtaWMKICAgICBhcmlhLWNvbHNwYW4gY2hhbmdlcy4KCiAgMy4gRml4ZWQgYSBi
dWcgd2hlcmUgdGFibGUncyBjb2x1bW5zIHdlcmUgbm90IHVwZGF0ZWQgYWZ0ZXIgaXRzCiAgICAg
cm93cyBjaGlsZHJlbiBjaGFuZ2VkICh3aGljaCBjYW4gZWZmZWN0IGNvbHVtbnMpLgoKICA0LiBG
aXhlZCBhIHBlcmZvcm1hbmNlIGlzc3VlIHdoZXJlIGBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpp
c1RhYmxlQ2VsbGAsCiAgICAgdXNlZCB0byB0eXBlY2hlY2sgaXM8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbD4sIGRpZCBhIGBwYXJlbnRUYWJsZSgpYAogICAgIHRyYXZlcnNhbC4gVGhpcyBpcyBjb25m
dXNpbmcgYW5kIHZlcnkgbm9uLXBlcmZvcm1hbnQuIEEgbmV3CiAgICAgYGlzRXhwb3NlZFRhYmxl
Q2VsbGAgZnVuY3Rpb24gaXMgYWRkZWQgbWFraW5nIHRoaXMgaW50ZW50IG1vcmUKICAgICBjbGVh
ciwgYW5kIGltcHJvdmluZyBwZXJmb3JtYW5jZSBpbiB0aGUgYXJlYXMgdGhhdCBkb24ndCBuZWVk
IHRoaXMKICAgICB0cmF2ZXJzYWwuCgogIDUuIEFsbG93IGNyZWF0aW5nIEFjY2Vzc2liaWxpdHlU
YWJsZSwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCwgYW5kCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxl
Um93IHdpdGggbm8gcmVuZGVyZXIsIHdoaWNoIGlzIGNydWNpYWwgZm9yCiAgICAgZGlzcGxheTpj
b250ZW50cyBzdXBwb3J0LgoKVGhyZWUgdGVzdHMgYXJlIGFkZGVkIHRvIGVuc3VyZSB0aGUgc2xv
dC1ncmlkIGlzIHVwZGF0ZWQgYWZ0ZXIgZHluYW1pYyBjaGFuZ2VzOgogIC0gYWNjZXNzaWJpbGl0
eS9keW5hbWljLWNvbHNwYW4uaHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4u
aHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKCiog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0
bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhw
ZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3Rh
YmxlLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29s
c3Bhbi5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93
c3Bhbi1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy1yb3dzcGFuLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy10YWJsZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy5odG1sOiBBZGRlZC4KKiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dDoKKiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLmh0bWw6CiogTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4cGVjdGVkLnR4
dDoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLW11bHRpcGxlLXRib2RpZXMtZXhw
ZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtdGhlYWQtdGZvb3Qt
ZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2dl
bmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQ6Ciog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHA6CihXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
OgooV2ViQ29yZTo6bm9kZUhhc0dyaWRSb2xlKToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRh
YmxlKToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRhYmxlUm93KToKKFdlYkNvcmU6OmlzQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjcmVhdGVPYmpl
Y3RGcm9tUmVuZGVyZXIpOgooV2ViQ29yZTo6Y3JlYXRlRnJvbU5vZGUpOgooV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6aGFuZGxlQ2hpbGRyZW5DaGFuZ2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OmhhbmRsZVJlY29tcHV0ZVNsb3RHcmlkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Omhh
bmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2UpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFu
ZGxlQXR0cmlidXRlQ2hhbmdlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZl
cnJlZENhY2hlVXBkYXRlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUlzb2xhdGVk
VHJlZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpkZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdy
aWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgooV2Vi
Q29yZTo6bm9kZUhhc0dyaWRSb2xlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmRlZmVyUmVj
b21wdXRlVGFibGVTbG90R3JpZCk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNv
bXB1dGVTbG90R3JpZCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWQuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJs
ZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFk
ZFJvd0Rlc2NlbmRhbnQpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlk
OjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpheFJvd1NwYW5XaXRoUm93SW5kZXggY29uc3QpOiBEZWxldGVk
LgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSBj
b25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVk
Q2VsbHMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2xvdEdyaWQpOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6QWNjZXNzaWJpbGl0eVRhYmxlKToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6
aXNEYXRhVGFibGUgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRl
SXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6cmVjb21wdXRlSXNFeHBvc2FibGUpOgooV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVRhYmxlOjpzbG90R3JpZCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnNl
dFNsb3RHcmlkRGlydHkpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNoaWxk
cmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZTo6ZW5zdXJlUm93QW5kQ29sdW1uKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNF
eHBvc2FibGUgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjph
ZGRUYWJsZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6
OmFkZENoaWxkcmVuRnJvbVNlY3Rpb24pOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmlzRXhwb3NlZFRhYmxlQ2VsbCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CihXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlSGVhZGVyQ2VsbCBjb25zdCk6CihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRSb3cgY29uc3QpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OnRpdGxlVUlFbGVtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uSW5kZXggY29uc3QpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93U3BhbiBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpjb2xTcGFuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGw6OmlzVGFibGVDZWxsIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmF4Q29sdW1uU3BhbiBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd1NwYW4gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oOgooV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6c2V0Um93SW5kZXgpOgooV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6c2V0Q29sdW1uSW5kZXgpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6Y29sdW1uSGVhZGVyKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
OjpoZWFkZXJPYmplY3RGb3JTZWN0aW9uKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oOgoqIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6QWNjZXNzaWJpbGl0eVRhYmxlUm93KToKKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6
aGVhZGVyT2JqZWN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZVJvdy5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcDoKKiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGFibGVDZWxsUGFyZW50XSk6
CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlIZWFkZXJFbGVt
ZW50c10pOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMpOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y2VsbEZvckNvbHVtbkFuZFJv
dyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc1RhYmxlQ2VsbCBjb25zdCk6CiogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyk6
CihXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZUFuZERlcGVuZGVudFByb3BlcnRp
ZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgooLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6Ci0tLQogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAgICAgIHwgICA0ICsKIC4uLi9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8IDEwOSArKysrLQogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDEyICstCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICAgfCAgODIgLS0tLQogLi4u
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmggICAgIHwgICA3ICstCiAuLi4v
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgICAgICAgICAgICAgfCAxMDcgLS0tLS0KIC4u
Li9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCB8ICAgNiAtCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAgICAgfCAgIDIgKy0KIC4uLi9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCAgICAgICB8ICAgMiArCiAuLi4vQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oICAgICAgICAgICAgfCAgIDEgKwogLi4uL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCAgICAgIHwgNDIwICsrKysrKysrKysrKy0t
LS0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggICAgICAgIHwgIDM0
ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCAgfCAxMzIg
KysrLS0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmggICAgfCAg
MjUgKy0KIC4uLi9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwICAgICAgICAgICAgICB8IDEy
MyArLS0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmggIHwg
ICAzIC0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgICB8ICAy
OCArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmggICAgIHwgICAy
ICsKIC4uLi9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNwaS5jcHAgICB8ICAgMiAr
LQogLi4uL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNwaS5jcHAgICAgIHwgICAyICst
CiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tICAgfCAgIDQgKy0K
IC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgICAgICAgICB8ICAzNiArLQog
Li4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggICAgICAgICAgIHwgIDExICstCiAu
Li4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCAgICAgICAgICAgfCAgMjMgKy0KIC4u
Li9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAgNyArLQogLi4u
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAgIHwgICA0ICstCiAuLi4v
YXJpYS10YWJsZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgIDIgKy0KIC4uLi9h
Y2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy5odG1sICB8ICAgOCArLQogLi4uL2N1
c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQgICAgICAgIHwgICA0ICstCiAuLi4vYWNj
ZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUuaHRtbCAgfCAgIDQgKy0KIC4uLi9keW5h
bWljLWNvbHNwYW4tZXhwZWN0ZWQudHh0ICAgICAgICAgICAgICB8ICAyMiArCiAuLi4vYWNjZXNz
aWJpbGl0eS9keW5hbWljLWNvbHNwYW4uaHRtbCAgICAgICAgfCAgNjkgKysrCiAuLi4vZHluYW1p
Yy1yb3dzcGFuLWV4cGVjdGVkLnR4dCAgICAgICAgICAgICAgfCAgMjEgKwogLi4uL2FjY2Vzc2li
aWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwgICAgICAgIHwgIDY4ICsrKwogLi4uL2R5bmFtaWMt
dGFibGUtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0ICAgIHwgIDMzICsrCiAuLi4vZHluYW1pYy10
YWJsZS1kZXNjZW5kYW50cy5odG1sICAgICAgICAgICAgfCAxMDQgKysrKysKIC4uLi9hY2Nlc3Np
YmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dCB8ICAgMiArLQogTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi5odG1sIHwgICAyICstCiAuLi4vdGFibGUtaW5j
b3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQgfCAgMjYgKy0KIC4uLi90YWJsZS1tdWx0
aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dCAgICAgICB8ICAxNCArLQogLi4uL3RhYmxlLXRoZWFk
LXRmb290LWV4cGVjdGVkLnR4dCAgICAgICAgICAgIHwgICA2ICstCiAuLi50ZW50LXdpdGgtZGlz
cGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQgfCAgIDMgKy0KIDQyIGZpbGVzIGNoYW5nZWQs
IDk0OCBpbnNlcnRpb25zKCspLCA2MjggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhwZWN0ZWQudHh0CiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNw
YW4uaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy1yb3dzcGFuLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVzY2VuZGFudHMtZXhwZWN0
ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5h
bWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhMb2dnZXIuY3BwCmluZGV4IDFlNDdhNTUyN2MxZi4uZjQ3ZWJmNTJkZjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApAQCAtMjAzLDYgKzIwMyw3IEBAIHZv
aWQgQVhMb2dnZXI6OmxvZyhjb25zdCBTdHJpbmcmIGNvbGxlY3Rpb25OYW1lLCBjb25zdCBBWE9i
amVjdENhY2hlOjpEZWZlcnJlZENvCiAgICAgICAgIFsmc2l6ZV0gKGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8Tm9kZSosIE5vZGUqPj4mIHR5cGVkQ29sbGVjdGlvbikgeyBzaXplID0gdHlwZWRDb2xs
ZWN0aW9uLnNpemUoKTsgfSwKICAgICAgICAgWyZzaXplXSAoY29uc3QgV2Vha0hhc2hTZXQ8RWxl
bWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiYgdHlwZWRDb2xsZWN0aW9uKSB7
IHNpemUgPSB0eXBlZENvbGxlY3Rpb24uY29tcHV0ZVNpemUoKTsgfSwKICAgICAgICAgWyZzaXpl
XSAoY29uc3QgV2Vha0hhc2hTZXQ8SFRNTFRhYmxlRWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZl
bnRUYXJnZXREYXRhPiYgdHlwZWRDb2xsZWN0aW9uKSB7IHNpemUgPSB0eXBlZENvbGxlY3Rpb24u
Y29tcHV0ZVNpemUoKTsgfSwKKyAgICAgICAgWyZzaXplXSAoY29uc3QgV2Vha0hhc2hTZXQ8QWNj
ZXNzaWJpbGl0eVRhYmxlPiYgdHlwZWRDb2xsZWN0aW9uKSB7IHNpemUgPSB0eXBlZENvbGxlY3Rp
b24uY29tcHV0ZVNpemUoKTsgfSwKICAgICAgICAgW10gKGF1dG8mKSB7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU0NCw2ICs1NDUs
OSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgQVhPYmplY3RD
YWNoZTo6QVhOb3RpZmljYXRpb24gbm90aWZpYwogICAgIGNhc2UgQVhPYmplY3RDYWNoZTo6QVhO
b3RpZmljYXRpb246OkFYU2V0U2l6ZUNoYW5nZWQ6CiAgICAgICAgIHN0cmVhbSA8PCAiQVhTZXRT
aXplQ2hhbmdlZCI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVhPYmplY3RDYWNoZTo6QVhO
b3RpZmljYXRpb246OkFYU2xvdEdyaWRDaGFuZ2VkOgorICAgICAgICBzdHJlYW0gPDwgIkFYU2xv
dEdyaWRDaGFuZ2VkIjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWE9iamVjdENhY2hlOjpB
WE5vdGlmaWNhdGlvbjo6QVhUYWJsZUhlYWRlcnNDaGFuZ2VkOgogICAgICAgICBzdHJlYW0gPDwg
IkFYVGFibGVIZWFkZXJzQ2hhbmdlZCI7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggZjJlODdjMzJmYTU1Li5k
NTI1YjA2MzQzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcApAQCAtODksNiArODksNyBAQAogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVBh
cnRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlUm93RWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKQEAgLTU3Niw2ICs1
NzcsMTEgQEAgYm9vbCBub2RlSGFzUm9sZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHJvbGUpCiAg
ICAgcmV0dXJuIFNwYWNlU3BsaXRTdHJpbmc6OnNwYWNlU3BsaXRTdHJpbmdDb250YWluc1ZhbHVl
KHJvbGVWYWx1ZSwgcm9sZSwgU3BhY2VTcGxpdFN0cmluZzo6U2hvdWxkRm9sZENhc2U6Olllcyk7
CiB9CiAKK2Jvb2wgbm9kZUhhc0dyaWRSb2xlKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5v
ZGVIYXNSb2xlKG5vZGUsICJncmlkIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAidGFibGUiX3Mp
IHx8IG5vZGVIYXNSb2xlKG5vZGUsICJ0cmVlZ3JpZCJfcyk7Cit9CisKIHN0YXRpYyBib29sIGlz
U2ltcGxlSW1hZ2UoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKICAgICBpZiAoIWlz
PFJlbmRlckltYWdlPihyZW5kZXJlcikpCkBAIC02MTgsNiArNjI0LDIxIEBAIHN0YXRpYyBib29s
IGlzQWNjZXNzaWJpbGl0eVRyZWVJdGVtKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGVIYXNS
b2xlKG5vZGUsICJ0cmVlaXRlbSJfcyk7CiB9CiAKK3N0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0
eVRhYmxlKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIGlzPEhUTUxUYWJsZUVsZW1lbnQ+KG5v
ZGUpOworfQorCitzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlUYWJsZVJvdyhOb2RlKiBub2Rl
KQoreworICAgIHJldHVybiBpczxIVE1MVGFibGVSb3dFbGVtZW50Pihub2RlKTsKK30KKworc3Rh
dGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKE5vZGUqIG5vZGUpCit7CisgICAgcmV0
dXJuIGlzPEhUTUxUYWJsZUNlbGxFbGVtZW50Pihub2RlKTsKK30KKwogUmVmPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZU9iamVjdEZyb21SZW5kZXJlcihSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogewogICAgIC8vIEZJWE1FOiBIb3cgY291bGQgcmVuZGVyZXItPm5v
ZGUoKSBldmVyIG5vdCBiZSBhbiBFbGVtZW50PwpAQCAtNjI3LDcgKzY0OCw3IEBAIFJlZjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiBBWE9iamVjdENhY2hlOjpjcmVhdGVPYmplY3RGcm9tUmVuZGVyZXIo
UmVuZGVyT2JqZWN0KiByCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TGlzdDo6Y3JlYXRl
KHJlbmRlcmVyKTsKIAogICAgIC8vIGFyaWEgdGFibGVzCi0gICAgaWYgKG5vZGVIYXNSb2xlKG5v
ZGUsICJncmlkIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAidHJlZWdyaWQiX3MpIHx8IG5vZGVI
YXNSb2xlKG5vZGUsICJ0YWJsZSJfcykpCisgICAgaWYgKG5vZGVIYXNHcmlkUm9sZShub2RlKSkK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6Y3JlYXRlKHJlbmRlcmVyKTsK
ICAgICBpZiAobm9kZUhhc1JvbGUobm9kZSwgInJvdyJfcykpCiAgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5QVJJQUdyaWRSb3c6OmNyZWF0ZShyZW5kZXJlcik7CkBAIC02NzIsMTEgKzY5Mywx
MSBAQCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlT2JqZWN0
RnJvbVJlbmRlcmVyKFJlbmRlck9iamVjdCogcgogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU1lbnVMaXN0OjpjcmVhdGUoZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KHJlbmRlcmVyKSk7CiAK
ICAgICAvLyBzdGFuZGFyZCB0YWJsZXMKLSAgICBpZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVy
KSkKKyAgICBpZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKSB8fCBpc0FjY2Vzc2liaWxpdHlU
YWJsZShub2RlKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKHJl
bmRlcmVyKTsKLSAgICBpZiAoaXM8UmVuZGVyVGFibGVSb3c+KHJlbmRlcmVyKSkKKyAgICBpZiAo
aXM8UmVuZGVyVGFibGVSb3c+KHJlbmRlcmVyKSB8fCBpc0FjY2Vzc2liaWxpdHlUYWJsZVJvdyhu
b2RlKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6Y3JlYXRlKHJlbmRl
cmVyKTsKLSAgICBpZiAoaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcikpCisgICAgaWYgKChp
czxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKSAmJiAhcmVuZGVyZXItPmlzQW5vbnltb3VzKCkp
IHx8IGlzQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChub2RlKSkKICAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShyZW5kZXJlcik7CiAKICAgICAvLyBwcm9ncmVzcyBi
YXIKQEAgLTcwMiw2ICs3MjMsMTIgQEAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBj
cmVhdGVGcm9tTm9kZShOb2RlJiBub2RlKQogewogICAgIGlmIChpc0FjY2Vzc2liaWxpdHlMaXN0
KCZub2RlKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlMaXN0OjpjcmVhdGUobm9kZSk7
CisgICAgaWYgKGlzQWNjZXNzaWJpbGl0eVRhYmxlKCZub2RlKSkKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKG5vZGUpOworICAgIGlmIChpc0FjY2Vzc2liaWxpdHlU
YWJsZVJvdygmbm9kZSkpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNy
ZWF0ZShub2RlKTsKKyAgICBpZiAoaXNBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKCZub2RlKSkKKyAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShub2RlKTsKICAgICBp
ZiAoaXNBY2Nlc3NpYmlsaXR5VHJlZSgmbm9kZSkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VHJlZTo6Y3JlYXRlKG5vZGUpOwogICAgIGlmIChpc0FjY2Vzc2liaWxpdHlUcmVlSXRlbSgm
bm9kZSkpCkBAIC0xMTY0LDYgKzExOTEsMTEgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVD
aGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQogICAgIH0gZWxzZSBp
ZiAoaXM8QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+KG9iamVjdCkpIHsKICAgICAgICAgZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+KG9iamVjdCkuaGFuZGxlQ2hpbGRyZW5D
aGFuZ2VkKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKGF1dG8qIGF4VGFibGUg
PSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihvYmplY3QpKQorICAgICAgICBk
ZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdyaWQoKmF4VGFibGUpOworICAgIGVsc2UgaWYgKGF1dG8q
IGF4Um93ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ob2JqZWN0KSkg
eworICAgICAgICBpZiAoYXV0byogcGFyZW50VGFibGUgPSBheFJvdy0+cGFyZW50VGFibGUoKSkK
KyAgICAgICAgICAgIGRlZmVyUmVjb21wdXRlVGFibGVTbG90R3JpZCgqcGFyZW50VGFibGUpOwog
ICAgIH0KIAogICAgIGlmICghb2JqZWN0Lm5vZGUoKSAmJiAhb2JqZWN0LnJlbmRlcmVyKCkpCkBA
IC0xMjA3LDYgKzEyMzksMTQgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVDaGlsZHJlbkNo
YW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQogICAgIHBvc3RQbGF0Zm9ybU5vdGlm
aWNhdGlvbigmb2JqZWN0LCBBWENoaWxkcmVuQ2hhbmdlZCk7CiB9CiAKK3ZvaWQgQVhPYmplY3RD
YWNoZTo6aGFuZGxlUmVjb21wdXRlU2xvdEdyaWQoQWNjZXNzaWJpbGl0eVRhYmxlJiBheFRhYmxl
KQoreworICAgIGF4VGFibGUuc2V0U2xvdEdyaWREaXJ0eSgpOworI2lmIEVOQUJMRShBQ0NFU1NJ
QklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAgdXBkYXRlSXNvbGF0ZWRUcmVlKGF4VGFibGUsIEFY
U2xvdEdyaWRDaGFuZ2VkKTsKKyNlbmRpZgorfQorCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRs
ZU1lbnVPcGVuZWQoTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPnJlbmRl
cmVyKCkgfHwgIW5vZGVIYXNSb2xlKG5vZGUsICJtZW51Il9zKSkKQEAgLTIxMDUsNyArMjE0NSw3
IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZShFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyCiAgICAgICAgIHBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbih0YXJnZXQsIEFYTm90aWZpY2F0aW9uOjpBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKTsK
IAogICAgICAgICAvLyBUYWJsZSBjZWxsIGFjdGl2ZSBkZXNjZW5kYW50IGNoYW5nZXMgc2hvdWxk
IHRyaWdnZXIgc2VsZWN0ZWQgY2VsbCBjaGFuZ2VzLgotICAgICAgICBpZiAodGFyZ2V0LT5pc1Rh
YmxlKCkgJiYgYWN0aXZlRGVzY2VuZGFudC0+aXNUYWJsZUNlbGwoKSkgeworICAgICAgICBpZiAo
dGFyZ2V0LT5pc1RhYmxlKCkgJiYgYWN0aXZlRGVzY2VuZGFudC0+aXNFeHBvc2VkVGFibGVDZWxs
KCkpIHsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgICAgICAg
ICAgdXBkYXRlSXNvbGF0ZWRUcmVlKHRhcmdldCwgQVhOb3RpZmljYXRpb246OkFYU2VsZWN0ZWRD
ZWxsc0NoYW5nZWQpOwogI2VuZGlmCkBAIC0yMjAzLDYgKzIyNDMsMjYgQEAgdm9pZCBBWE9iamVj
dENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYKICAgICBBWExPRyhtYWtlU3RyaW5nKCJhdHRyaWJ1dGUgIiwgYXR0ck5hbWUu
bG9jYWxOYW1lKCksICIgZm9yIGVsZW1lbnQgIiwgZWxlbWVudCA/IGVsZW1lbnQtPmRlYnVnRGVz
Y3JpcHRpb24oKSA6IFN0cmluZygibnVsbHB0ciJfcykpKTsKICAgICBBWExPRyhtYWtlU3RyaW5n
KCJvbGQgdmFsdWU6ICIsIG9sZFZhbHVlLCAiIG5ldyB2YWx1ZTogIiwgbmV3VmFsdWUpKTsKIAor
ICAgIGVudW0gY2xhc3MgVGFibGVQcm9wZXJ0eSA6IHVpbnQ4X3QgeyBFeHBvc2VkID0gMSA8PCAw
LCBTbG90R3JpZCA9IDEgPDwgMSB9OworICAgIGF1dG8gcmVjb21wdXRlUGFyZW50VGFibGVQcm9w
ZXJ0aWVzID0gW3RoaXNdIChFbGVtZW50KiBlbGVtZW50LCBPcHRpb25TZXQ8VGFibGVQcm9wZXJ0
eT4gcHJvcGVydGllcykgeworICAgICAgICBBU1NFUlQoIXByb3BlcnRpZXMuaXNFbXB0eSgpKTsK
KworICAgICAgICBpZiAoIXByb3BlcnRpZXMuY29udGFpbnMoVGFibGVQcm9wZXJ0eTo6U2xvdEdy
aWQpKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSdyZSByZS1jb21wdXRpbmcgdGhlIGV4cG9zZWQg
c3RhdGUgb2YgdGhlIHRhYmxlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gd29yayBmb3Igbm9uLUFSSUEg
dGFibGVzLCBhbGxvd2luZyB1cyB0bworICAgICAgICAgICAgLy8gZG8gYSBjaGVhcCBkeW5hbWlj
RG93bmNhc3QgY2hlY2sgZm9yIGFuIEhUTUxUYWJsZVBhcnRFbGVtZW50IHJhdGhlciB0aGFuIGNh
bGxpbmcgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cGFyZW50VGFibGUoKS4KKyAgICAgICAgICAg
IC8vIChBUklBIHRhYmxlcyBhcmUgaW5oZXJlbnRseSBhbHdheXMgZXhwb3NlZCkuCisgICAgICAg
ICAgICBpZiAoYXV0byogdGFibGVQYXJ0RWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MVGFi
bGVQYXJ0RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICAgICAgZGVmZXJSZWNvbXB1dGVU
YWJsZUlzRXhwb3NlZChjb25zdF9jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJsZVBhcnRFbGVt
ZW50LT5maW5kUGFyZW50VGFibGUoKS5nZXQoKSkpOworICAgICAgICB9IGVsc2UgaWYgKGF1dG8q
IGF4Q2VsbCA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihnZXRPckNy
ZWF0ZShlbGVtZW50KSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBwYXJlbnRUYWJsZSA9IGF4
Q2VsbC0+cGFyZW50VGFibGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmNv
bnRhaW5zKFRhYmxlUHJvcGVydHk6OkV4cG9zZWQpICYmICFwYXJlbnRUYWJsZS0+aXNBcmlhVGFi
bGUoKSkKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJSZWNvbXB1dGVUYWJsZUlzRXhwb3NlZChw
YXJlbnRUYWJsZS0+ZWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllcy5j
b250YWlucyhUYWJsZVByb3BlcnR5OjpTbG90R3JpZCkpCisgICAgICAgICAgICAgICAgICAgIGRl
ZmVyUmVjb21wdXRlVGFibGVTbG90R3JpZCgqcGFyZW50VGFibGUpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfTsKKwogICAgIGlmICghc2hvdWxkUHJvY2Vzc0F0dHJpYnV0ZUNoYW5n
ZShlbGVtZW50LCBhdHRyTmFtZSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjI0NSwxNiArMjMw
NSwxNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09
IG9wZW5BdHRyICYmIGlzPEhUTUxEaWFsb2dFbGVtZW50PigqZWxlbWVudCkpIHsKICAgICAgICAg
ZGVmZXJNb2RhbENoYW5nZShlbGVtZW50KTsKICAgICAgICAgcmVjb21wdXRlSXNJZ25vcmVkKGVs
ZW1lbnQtPnBhcmVudE5vZGUoKSk7CisgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSByb3dzcGFu
QXR0cikgeworICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYUm93U3BhbkNoYW5n
ZWQpOworICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgVGFi
bGVQcm9wZXJ0eTo6U2xvdEdyaWQpOworICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gY29sc3Bh
bkF0dHIpIHsKKyAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWENvbHVtblNwYW5D
aGFuZ2VkKTsKKyAgICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVQcm9wZXJ0aWVzKGVsZW1lbnQs
IFRhYmxlUHJvcGVydHk6OlNsb3RHcmlkKTsKICAgICB9CiAKICAgICBpZiAoIWF0dHJOYW1lLmxv
Y2FsTmFtZSgpLnN0cmluZygpLnN0YXJ0c1dpdGgoImFyaWEtIl9zKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byByZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlID0gW3RoaXNdIChFbGVt
ZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGlmIChhdXRvKiB0YWJsZVBhcnRFbGVtZW50ID0gZHlu
YW1pY0Rvd25jYXN0PEhUTUxUYWJsZVBhcnRFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgICAg
IGRlZmVyUmVjb21wdXRlVGFibGVJc0V4cG9zZWQoY29uc3RfY2FzdDxIVE1MVGFibGVFbGVtZW50
Kj4odGFibGVQYXJ0RWxlbWVudC0+ZmluZFBhcmVudFRhYmxlKCkuZ2V0KCkpKTsKLSAgICB9Owot
CiAgICAgaWYgKGF0dHJOYW1lID09IGFyaWFfYWN0aXZlZGVzY2VuZGFudEF0dHIpCiAgICAgICAg
IGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2UoKmVsZW1lbnQsIG9sZFZhbHVlLCBuZXdWYWx1
ZSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9hdG9taWNBdHRyKQpAQCAtMjI3NCwx
MCArMjMzNSwxMCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJgogICAgICAgICBkZWZlclJlY29t
cHV0ZVRhYmxlSXNFeHBvc2VkKGR5bmFtaWNEb3duY2FzdDxIVE1MVGFibGVFbGVtZW50PihlbGVt
ZW50KSk7CiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2NvbGluZGV4QXR0cikgewog
ICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYQ29sdW1uSW5kZXhDaGFuZ2VkKTsK
LSAgICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVFeHBvc3VyZShlbGVtZW50KTsKKyAgICAgICAg
cmVjb21wdXRlUGFyZW50VGFibGVQcm9wZXJ0aWVzKGVsZW1lbnQsIFRhYmxlUHJvcGVydHk6OkV4
cG9zZWQpOwogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9jb2xzcGFuQXR0cikgewog
ICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYQ29sdW1uU3BhbkNoYW5nZWQpOwot
ICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlKGVsZW1lbnQpOworICAgICAgICBy
ZWNvbXB1dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgeyBUYWJsZVByb3BlcnR5OjpT
bG90R3JpZCwgVGFibGVQcm9wZXJ0eTo6RXhwb3NlZCB9KTsKICAgICB9CiAgICAgZWxzZSBpZiAo
YXR0ck5hbWUgPT0gYXJpYV9kZXNjcmliZWRieUF0dHIpCiAgICAgICAgIHBvc3ROb3RpZmljYXRp
b24oZWxlbWVudCwgQVhEZXNjcmliZWRCeUNoYW5nZWQpOwpAQCAtMjI5Nyw3ICsyMzU4LDcgQEAg
dm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50
LCBBWFBsYWNlaG9sZGVyQ2hhbmdlZCk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9y
b3dpbmRleEF0dHIpIHsKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWFJvd0lu
ZGV4Q2hhbmdlZCk7Ci0gICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlRXhwb3N1cmUoZWxlbWVu
dCk7CisgICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlUHJvcGVydGllcyhlbGVtZW50LCB7IFRh
YmxlUHJvcGVydHk6OlNsb3RHcmlkLCBUYWJsZVByb3BlcnR5OjpFeHBvc2VkIH0pOwogICAgIH0K
ICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3ZhbHVlbWF4QXR0cikKICAgICAgICAgcG9z
dE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWE1heGltdW1WYWx1ZUNoYW5nZWQpOwpAQCAtMjM1NSw5
ICsyNDE2LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoRWxl
bWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICAgICAgaGFuZGxlUm93Q291
bnRDaGFuZ2VkKGdldChlbGVtZW50KSwgZWxlbWVudCA/ICZlbGVtZW50LT5kb2N1bWVudCgpIDog
bnVsbHB0cik7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9yb3dzcGFuQXR0cikgewog
ICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYUm93U3BhbkNoYW5nZWQpOwotICAg
ICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlKGVsZW1lbnQpOwotICAgIH0KLSAgICBl
bHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3NvcnRBdHRyKQorICAgICAgICByZWNvbXB1dGVQYXJl
bnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgeyBUYWJsZVByb3BlcnR5OjpTbG90R3JpZCwgVGFi
bGVQcm9wZXJ0eTo6RXhwb3NlZCB9KTsKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFf
c29ydEF0dHIpCiAgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhPYmplY3RDYWNo
ZTo6QVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCk7CiB9CiAKQEAgLTM2NzIsNiArMzczMiwxMiBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCkKICAgICAgICAg
aGFuZGxlQ2hpbGRyZW5DaGFuZ2VkKCpjaGlsZCk7CiAgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hh
bmdlZExpc3QuY2xlYXIoKTsKIAorICAgIEFYTE9HRGVmZXJyZWRDb2xsZWN0aW9uKCJSZWNvbXB1
dGVUYWJsZVNsb3RHcmlkTGlzdCJfcywgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRM
aXN0KTsKKyAgICBtX2RlZmVycmVkUmVjb21wdXRlVGFibGVTbG90R3JpZExpc3QuZm9yRWFjaChb
dGhpc10gKGF1dG8mIGF4VGFibGUpIHsKKyAgICAgICAgaGFuZGxlUmVjb21wdXRlU2xvdEdyaWQo
YXhUYWJsZSk7CisgICAgfSk7CisgICAgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRM
aXN0LmNsZWFyKCk7CisKICAgICBBWExPR0RlZmVycmVkQ29sbGVjdGlvbigiVGV4dENoYW5nZWRM
aXN0Il9zLCBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0KTsKICAgICBmb3IgKGF1dG8qIG5vZGUg
OiBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0KQogICAgICAgICBoYW5kbGVUZXh0Q2hhbmdlZChn
ZXRPckNyZWF0ZShub2RlKSk7CkBAIC0zODk4LDYgKzM5NjQsMTAgQEAgdm9pZCBBWE9iamVjdENh
Y2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QWNj
ZXNzaWJpbGkKICAgICAgICAgY2FzZSBBWFNldFNpemVDaGFuZ2VkOgogICAgICAgICAgICAgdHJl
ZS0+dXBkYXRlTm9kZVByb3BlcnRpZXMoKm5vdGlmaWNhdGlvbi5maXJzdCwgeyBBWFByb3BlcnR5
TmFtZTo6U2V0U2l6ZSwgQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzU2V0U2l6ZSB9KTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYU2xvdEdyaWRDaGFuZ2VkOgorICAgICAgICAg
ICAgQVNTRVJUKG5vdGlmaWNhdGlvbi5maXJzdC0+aXNUYWJsZSgpKTsKKyAgICAgICAgICAgIHRy
ZWUtPnVwZGF0ZU5vZGVQcm9wZXJ0eSgqbm90aWZpY2F0aW9uLmZpcnN0LCBBWFByb3BlcnR5TmFt
ZTo6U2xvdEdyaWQpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhUYWJsZUhl
YWRlcnNDaGFuZ2VkOgogICAgICAgICAgICAgdHJlZS0+dXBkYXRlTm9kZVByb3BlcnR5KCpub3Rp
ZmljYXRpb24uZmlyc3QsIEFYUHJvcGVydHlOYW1lOjpDb2x1bW5IZWFkZXJzKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNDAwMiw2ICs0MDcyLDEzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVm
ZXJSZWNvbXB1dGVUYWJsZUlzRXhwb3NlZChFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBtX3Bl
cmZvcm1DYWNoZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCit2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmRlZmVyUmVjb21wdXRlVGFibGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUm
IGF4VGFibGUpCit7CisgICAgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRMaXN0LmFk
ZChheFRhYmxlKTsKKyAgICBpZiAoIW1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgbV9wZXJmb3JtQ2FjaGVVcGRhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsK
K30KKwogdm9pZCBBWE9iamVjdENhY2hlOjpkZWZlclRleHRDaGFuZ2VkSWZOZWVkZWQoTm9kZSog
bm9kZSkKIHsKICAgICBpZiAoIW5vZGVBbmRSZW5kZXJlckFyZVZhbGlkKG5vZGUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBmODRhNGExZmFm
YjEuLmY0Mzg2M2FhMTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIEhUTUxBcmVhRWxlbWVudDsKIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQ7CkBAIC0y
MjAsNyArMjIxLDggQEAgcHVibGljOgogICAgICAgICAsIFZlY3RvcjxBdHRyaWJ1dGVDaGFuZ2U+
CiAgICAgICAgICwgVmVjdG9yPHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+PgogICAgICAgICAsIFdl
YWtIYXNoU2V0PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4KLSAgICAg
ICAgLCBXZWFrSGFzaFNldDxIVE1MVGFibGVFbGVtZW50LCBXZWFrUHRySW1wbFdpdGhFdmVudFRh
cmdldERhdGE+PjsKKyAgICAgICAgLCBXZWFrSGFzaFNldDxIVE1MVGFibGVFbGVtZW50LCBXZWFr
UHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+CisgICAgICAgICwgV2Vha0hhc2hTZXQ8QWNjZXNz
aWJpbGl0eVRhYmxlPj47CiAgICAgdm9pZCBkZWZlck1vZGFsQ2hhbmdlKEVsZW1lbnQqKTsKICAg
ICB2b2lkIGRlZmVyTWVudUxpc3RWYWx1ZUNoYW5nZShFbGVtZW50Kik7CiAgICAgdm9pZCBkZWZl
ck5vZGVBZGRlZE9yUmVtb3ZlZChOb2RlKik7CkBAIC0zNTYsNiArMzU4LDcgQEAgcHVibGljOgog
ICAgICAgICBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkLAogICAgICAgICBBWFNlbGVjdGVkVGV4dENo
YW5nZWQsCiAgICAgICAgIEFYU2V0U2l6ZUNoYW5nZWQsCisgICAgICAgIEFYU2xvdEdyaWRDaGFu
Z2VkLAogICAgICAgICBBWFRhYmxlSGVhZGVyc0NoYW5nZWQsCiAgICAgICAgIEFYVVJMQ2hhbmdl
ZCwKICAgICAgICAgQVhWYWx1ZUNoYW5nZWQsCkBAIC00MzcsNiArNDQwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGVmZXJSZWNvbXB1dGVJc0lnbm9yZWRJZk5lZWRlZChFbGVtZW50Kik7CiAgICAg
dm9pZCBkZWZlclJlY29tcHV0ZUlzSWdub3JlZChFbGVtZW50Kik7CiAgICAgdm9pZCBkZWZlclJl
Y29tcHV0ZVRhYmxlSXNFeHBvc2VkKEVsZW1lbnQqKTsKKyAgICB2b2lkIGRlZmVyUmVjb21wdXRl
VGFibGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUmKTsKICAgICB2b2lkIGRlZmVyVGV4dENo
YW5nZWRJZk5lZWRlZChOb2RlKik7CiAgICAgdm9pZCBkZWZlclNlbGVjdGVkQ2hpbGRyZW5DaGFu
Z2VkSWZOZWVkZWQoRWxlbWVudCYpOwogICAgIHZvaWQgcGVyZm9ybURlZmVycmVkQ2FjaGVVcGRh
dGUoKTsKQEAgLTU2NCw2ICs1NjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlRm9jdXNl
ZFVJRWxlbWVudENoYW5nZWQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWRO
b2RlLCBVcGRhdGVNb2RhbCA9IFVwZGF0ZU1vZGFsOjpZZXMpOwogICAgIHZvaWQgaGFuZGxlTWVu
dUxpc3RWYWx1ZUNoYW5nZWQoRWxlbWVudCYpOwogICAgIHZvaWQgaGFuZGxlVGV4dENoYW5nZWQo
QWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIHZvaWQgaGFuZGxlUmVjb21wdXRlU2xvdEdyaWQo
QWNjZXNzaWJpbGl0eVRhYmxlJik7CiAKICAgICAvLyBhcmlhLW1vZGFsIG9yIG1vZGFsIDxkaWFs
b2c+IHJlbGF0ZWQKICAgICBib29sIGlzTW9kYWxFbGVtZW50KEVsZW1lbnQmKSBjb25zdDsKQEAg
LTYzNiw2ICs2NDEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8QVhJRD4gbV9kZWZlcnJlZFJl
bW92ZWRPYmplY3RzOwogICAgIFdlYWtIYXNoU2V0PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2
ZW50VGFyZ2V0RGF0YT4gbV9kZWZlcnJlZFJlY29tcHV0ZUlzSWdub3JlZExpc3Q7CiAgICAgV2Vh
a0hhc2hTZXQ8SFRNTFRhYmxlRWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRh
PiBtX2RlZmVycmVkUmVjb21wdXRlVGFibGVJc0V4cG9zZWRMaXN0OworICAgIFdlYWtIYXNoU2V0
PEFjY2Vzc2liaWxpdHlUYWJsZT4gbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRMaXN0
OwogICAgIExpc3RIYXNoU2V0PE5vZGUqPiBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0OwogICAg
IFdlYWtIYXNoU2V0PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4gbV9k
ZWZlcnJlZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2VkTGlzdDsKICAgICBMaXN0SGFzaFNldDxSZWZQ
dHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0OwpA
QCAtNjgwLDYgKzY4Niw3IEBAIHByaXZhdGU6CiB9OwogCiBib29sIG5vZGVIYXNSb2xlKE5vZGUq
LCBTdHJpbmdWaWV3IHJvbGUpOworYm9vbCBub2RlSGFzR3JpZFJvbGUoTm9kZSopOwogLy8gVGhp
cyB3aWxsIGxldCB5b3Uga25vdyBpZiBhcmlhLWhpZGRlbiB3YXMgZXhwbGljaXRseSBzZXQgdG8g
ZmFsc2UuCiBib29sIGlzTm9kZUFyaWFWaXNpYmxlKE5vZGUqKTsKICAgICAKQEAgLTcwNSw2ICs3
MTIsNyBAQCBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRGb3JjZURlZmVycmVkU3BlbGxD
aGVja2luZyhib29sKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRpc2FibGVBY2Nl
c3NpYmlsaXR5KCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRFbmhhbmNlZFVz
ZXJJbnRlcmZhY2VBY2Nlc3NpYmlsaXR5KGJvb2wpIHsgfQogaW5saW5lIGJvb2wgbm9kZUhhc1Jv
bGUoTm9kZSosIFN0cmluZ1ZpZXcpIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBub2Rl
SGFzR3JpZFJvbGUoTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CiBpbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpzdGFydENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRh
dGVzKCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzdG9wQ2FjaGluZ0NvbXB1dGVk
T2JqZWN0QXR0cmlidXRlcygpIHsgfQogaW5saW5lIGJvb2wgaXNOb2RlQXJpYVZpc2libGUoTm9k
ZSopIHsgcmV0dXJuIHRydWU7IH0KQEAgLTczMSw2ICs3MzksNyBAQCBpbmxpbmUgdm9pZCBBWE9i
amVjdENhY2hlOjpkZWZlclJlY29tcHV0ZUlzSWdub3JlZChFbGVtZW50KikgeyB9CiBpbmxpbmUg
dm9pZCBBWE9iamVjdENhY2hlOjpkZWZlclRleHRDaGFuZ2VkSWZOZWVkZWQoTm9kZSopIHsgfQog
aW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZElm
TmVlZGVkKEVsZW1lbnQmKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyVGV4
dFJlcGxhY2VtZW50Tm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6
OmRlZmVyUmVjb21wdXRlVGFibGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUmKSB7IH0KICNp
ZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQVRTUEkpCiBpbmxpbmUgdm9pZCBBWE9iamVjdENh
Y2hlOjpkZXRhY2hXcmFwcGVyKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50
VHlwZSkgeyB9CiAjZW5kaWYKQEAgLTc2NCw2ICs3NzMsNyBAQCBpbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKE5vZGUqLCBBWFRleHRFZGl0
VHlwZQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlm
aWNhdGlvbihOb2RlKiwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJ
c0lnbm9yZWQoUmVuZGVyT2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpo
YW5kbGVUZXh0Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KikgeyB9CitpbmxpbmUgdm9pZCBB
WE9iamVjdENhY2hlOjpoYW5kbGVSZWNvbXB1dGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUm
KSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUmVuZGVyZXJDcmVhdGVkKEVsZW1l
bnQmKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVz
cyhkb3VibGUpIHsgfQogaW5saW5lIFNpbXBsZVJhbmdlIEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9y
Tm9kZUNvbnRlbnRzKE5vZGUmIG5vZGUpIHsgcmV0dXJuIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cyhub2RlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IGU0ZTVmODVjMmI3ZS4uNWE0ODk5MjY2
OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBUklBR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWQuY3BwCkBAIC01MSw5MiArNTEsMTAgQEAgUmVmPEFjY2Vzc2liaWxpdHlB
UklBR3JpZD4gQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQocmVu
ZGVyZXIpKTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENo
aWxkKEFYQ29yZU9iamVjdCogY2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBh
cHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKLXsKLSAgICBpZiAoIWNoaWxkIHx8
ICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqY2hpbGQpICYmICFjaGlsZC0+aXNBUklBVHJl
ZUdyaWRSb3coKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHJvdyA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKmNoaWxkKTsKLSAgICBpZiAoYXBwZW5kZWRS
b3dzLmNvbnRhaW5zKCZyb3cpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBzdG9y
ZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucwotICAgIHVuc2lnbmVkIHJvd0NlbGxDb3Vu
dCA9IHJvdy5jaGlsZHJlbigpLnNpemUoKTsKLSAgICBpZiAocm93Q2VsbENvdW50ID4gY29sdW1u
Q291bnQpCi0gICAgICAgIGNvbHVtbkNvdW50ID0gcm93Q2VsbENvdW50OwotCi0gICAgcm93LnNl
dFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7Ci0gICAgbV9yb3dzLmFwcGVuZCgmcm93KTsK
LSAgICBhZGRDaGlsZCgmcm93KTsKLSAgICBhcHBlbmRlZFJvd3MuYWRkKCZyb3cpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCiBib29sIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6aXNNdWx0aVNlbGVj
dGFibGUoKSBjb25zdAogewogICAgIGNvbnN0IEF0b21TdHJpbmcmIGFyaWFNdWx0aVNlbGVjdGFi
bGUgPSBnZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX211bHRpc2VsZWN0YWJsZUF0dHIpOwog
ICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYU11bHRpU2VsZWN0
YWJsZSwgImZhbHNlIl9zKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFJv
d0Rlc2NlbmRhbnQoQVhDb3JlT2JqZWN0KiByb3dDaGlsZCwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KQotewotICAgIGlm
ICghcm93Q2hpbGQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghcm93Q2hpbGQtPmlzVGFi
bGVSb3coKSB8fCAhcm93Q2hpbGQtPm5vZGUoKSkgewotICAgICAgICAvLyBBbHRob3VnaCBhICJn
cmlkIiBzaG91bGQgaGF2ZSByb3dzIGFzIGl0cyBkaXJlY3QgZGVzY2VuZGFudHMsIGlmIHRoaXMg
aXMgbm90IGEgdGFibGUgcm93LAotICAgICAgICAvLyBvciB0aGlzIHJvdyBpcyBhbm9ueW1vdXMs
IGRpdmUgZGVlcGVyIGludG8gdGhlIGRlc2NlbmRhbnRzIHRvIHRyeSB0byBmaW5kIGEgdmFsaWQg
cm93LgotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcm93Q2hpbGQtPmNoaWxkcmVu
KCkpCi0gICAgICAgICAgICBhZGRSb3dEZXNjZW5kYW50KGNoaWxkLmdldCgpLCBhcHBlbmRlZFJv
d3MsIGNvbHVtbkNvdW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgYWRkVGFibGVDZWxsQ2hpbGQo
cm93Q2hpbGQsIGFwcGVuZGVkUm93cywgY29sdW1uQ291bnQpOwotfQotCi12b2lkIEFjY2Vzc2li
aWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4oKQotewotICAgIEFTU0VSVCghbV9jaGlsZHJlbklu
aXRpYWxpemVkKTsgCi0gICAgCi0gICAgaWYgKCFpc0V4cG9zYWJsZSgpKSB7Ci0gICAgICAgIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgbV9jaGlsZHJlbkluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICBhdXRv
KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgYXV0byogYXhDYWNoZSA9IGRvY3Vt
ZW50ID8gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7Ci0KLSAgICAvLyBBZGQg
dGhlIGNoaWxkcmVuIHJvd3MgYnV0IGJlIG1pbmRmdWwgaW4gY2FzZSB0aGVyZSBhcmUgZm9vdGVy
IHNlY3Rpb25zIGluIHRoaXMgdGFibGUuCi0gICAgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0
Kj4gYXBwZW5kZWRSb3dzOwotICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50ID0gMDsKLSAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZm9vdGVyU2VjdGlvbnM7Ci0gICAgZm9yIChSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4gY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGJvb2wgZm9vdGVyU2VjdGlvbiA9IGZh
bHNlOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBjaGlsZFJlbmRlcmVyID0gY2hpbGQtPnJl
bmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChpczxSZW5kZXJUYWJsZVNlY3Rpb24+KCpjaGls
ZFJlbmRlcmVyKSkgewotICAgICAgICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlvbiYgY2hpbGRT
ZWN0aW9uID0gZG93bmNhc3Q8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hpbGRSZW5kZXJlcik7Ci0g
ICAgICAgICAgICAgICAgaWYgKCZjaGlsZFNlY3Rpb24gPT0gY2hpbGRTZWN0aW9uLnRhYmxlKCkt
PmZvb3RlcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvb3RlclNlY3Rpb25zLmFwcGVuZChj
aGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvb3RlclNlY3Rpb24gPSB0cnVlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWZvb3Rl
clNlY3Rpb24pCi0gICAgICAgICAgICBhZGRSb3dEZXNjZW5kYW50KGNoaWxkLmdldCgpLCBhcHBl
bmRlZFJvd3MsIGNvbHVtbkNvdW50KTsKLSAgICB9Ci0gICAgCi0gICAgZm9yIChjb25zdCBhdXRv
JiBmb290ZXJTZWN0aW9uIDogZm9vdGVyU2VjdGlvbnMpCi0gICAgICAgIGFkZFJvd0Rlc2NlbmRh
bnQoZm9vdGVyU2VjdGlvbi5nZXQoKSwgYXBwZW5kZWRSb3dzLCBjb2x1bW5Db3VudCk7Ci0gICAg
Ci0gICAgLy8gbWFrZSB0aGUgY29sdW1ucyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMg
aW4gdGhlIGZpcnN0IGJvZHkKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sdW1uQ291
bnQ7ICsraSkgewotICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4+KCpheENhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbikp
OwotICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7Ci0gICAgICAgIGNvbHVtbi5zZXRQ
YXJlbnQodGhpcyk7Ci0gICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7Ci0gICAgICAg
IGFkZENoaWxkKCZjb2x1bW4sIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsKLSAgICB9Ci0KLSAgICBh
ZGRDaGlsZChoZWFkZXJDb250YWluZXIoKSwgRGVzY2VuZElmSWdub3JlZDo6Tm8pOwotfQotICAg
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKaW5kZXggYWVjYzlhOGJiYjRlLi5lMjhi
YTk2YTNiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWQuaApAQCAtNDAsOSArNDAsNyBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5
QVJJQUdyaWQgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVRhYmxlIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZD4gY3JlYXRlKFJlbmRlck9iamVjdCop
OwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlBUklBR3JpZCgpOwotICAgIAotICAgIHZvaWQg
YWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKLSAgICAKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQoUmVuZGVyT2JqZWN0Kik7CiAgICAgYm9vbCBpc0FjY2Vzc2li
aWxpdHlBUklBR3JpZEluc3RhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtNTIsOSArNTAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICBib29sIGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFj
Y2Vzc2liaWxpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBp
c0FyaWFUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAKLSAgICB2
b2lkIGFkZFJvd0Rlc2NlbmRhbnQoQVhDb3JlT2JqZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KTsKLSAgICBib29s
IGFkZFRhYmxlQ2VsbENoaWxkKEFYQ29yZU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9i
amVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKaW5kZXggYWZlYTFmMzJhZDY5
Li5kZTQ4Njk3M2JkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApAQCAtNjEsMTEzICs2MSw2IEBA
IEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50VGFi
bGUoKSBjb25zdAogICAgIH0pKTsKIH0KICAgICAKLXN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2UoKSBjb25zdAotewot
ICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlIHsgMCwgMSB9OwotICAg
IEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYg
KCFwYXJlbnQpCi0gICAgICAgIHJldHVybiByb3dSYW5nZTsKLQotICAgIGlmIChpczxBY2Nlc3Np
YmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpKSB7Ci0gICAgICAgIC8vIFdlIGFscmVhZHkgZ290IGEg
dGFibGUgcm93LCB1c2UgaXRzIEFQSS4KLSAgICAgICAgcm93UmFuZ2UuZmlyc3QgPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpLnJvd0luZGV4KCk7Ci0gICAgfSBlbHNl
IGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpICYmIGRvd25jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGUoKSkgewotICAgICAgICAvLyBXZSByZWFj
aGVkIHRoZSBwYXJlbnQgdGFibGUsIHNvIHdlIG5lZWQgdG8gaW5zcGVjdCBpdHMKLSAgICAgICAg
Ly8gY2hpbGRyZW4gdG8gZGV0ZXJtaW5lIHRoZSByb3cgaW5kZXggZm9yIHRoZSBjZWxsIGluIGl0
LgotICAgICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZT4oKnBhcmVudCkuY29sdW1uQ291bnQoKTsKLSAgICAgICAgaWYgKCFjb2x1bW5Db3VudCkK
LSAgICAgICAgICAgIHJldHVybiByb3dSYW5nZTsKLQotICAgICAgICBjb25zdCBhdXRvJiBzaWJs
aW5ncyA9IHBhcmVudC0+Y2hpbGRyZW4oKTsKLSAgICAgICAgdW5zaWduZWQgY2hpbGRyZW5TaXpl
ID0gc2libGluZ3Muc2l6ZSgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY2hp
bGRyZW5TaXplOyArK2spIHsKLSAgICAgICAgICAgIGlmIChzaWJsaW5nc1trXS5nZXQoKSA9PSB0
aGlzKSB7Ci0gICAgICAgICAgICAgICAgcm93UmFuZ2UuZmlyc3QgPSBrIC8gY29sdW1uQ291bnQ7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBBUklBIDEuMSwgYXJpYS1yb3dzcGFuIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCBm
b3IgY2VsbHMgYW5kIGdyaWRjZWxscyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZCBpbiBhIG5hdGl2
ZSB0YWJsZS4KLSAgICAvLyBTbyB3ZSBzaG91bGQgY2hlY2sgZm9yIHRoYXQgYXR0cmlidXRlIGhl
cmUuCi0gICAgcm93UmFuZ2Uuc2Vjb25kID0gYXhSb3dTcGFuV2l0aFJvd0luZGV4KHJvd1Jhbmdl
LmZpcnN0KTsKLQotICAgIHJldHVybiByb3dSYW5nZTsKLX0KLQotdW5zaWduZWQgQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbDo6YXhSb3dTcGFuV2l0aFJvd0luZGV4KHVuc2lnbmVkIHJvd0luZGV4
KSBjb25zdAotewotICAgIGludCByb3dTcGFuID0gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhS
b3dTcGFuKCk7Ci0gICAgaWYgKHJvd1NwYW4gPT0gLTEpIHsKLSAgICAgICAgYXV0byByYW5nZSA9
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UoKTsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWF4KHJhbmdlLnNlY29uZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpKTsKLSAgICB9
Ci0KLSAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwot
ICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm4gMTsKLSAgICAKLSAgICAvLyBTZXR0aW5n
IHRoZSB2YWx1ZSB0byAwIGluZGljYXRlcyB0aGF0IHRoZSBjZWxsIG9yIGdyaWRjZWxsIGlzIHRv
IHNwYW4gYWxsIHRoZSByZW1haW5pbmcgcm93cyBpbiB0aGUgcm93IGdyb3VwLgotICAgIGlmICgh
cm93U3BhbikgewotICAgICAgICAvLyByb3dTcGFuIGRlZmF1bHRzIHRvIDEuCi0gICAgICAgIHJv
d1NwYW4gPSAxOwotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50Um93R3Jv
dXAgPSB0aGlzLT5wYXJlbnRSb3dHcm91cCgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgcm93
IGdyb3VwIGlzIHRoZSBwYXJlbnQgdGFibGUsIHdlIHVzZSB0b3RhbCByb3cgY291bnQgdG8gY2Fs
Y3VsYXRlIHRoZSBzcGFuLgotICAgICAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4o
KnBhcmVudFJvd0dyb3VwKSkKLSAgICAgICAgICAgICAgICByb3dTcGFuID0gZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50Um93R3JvdXApLnJvd0NvdW50KCkgLSByb3dJbmRleDsK
LSAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgaGF2ZSB0byBnZXQgdGhlIGluZGV4IGZvciB0
aGUgY3VycmVudCByb3cgd2l0aGluIHRoZSBwYXJlbnQgcm93IGdyb3VwLgotICAgICAgICAgICAg
ZWxzZSBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50KSkgewotICAgICAgICAg
ICAgICAgIGNvbnN0IGF1dG8mIHNpYmxpbmdzID0gcGFyZW50Um93R3JvdXAtPmNoaWxkcmVuKCk7
Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgcm93Q291bnQgPSBzaWJsaW5ncy5zaXplKCk7Ci0g
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IHJvd0NvdW50OyArK2spIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmdzW2tdLmdldCgpID09IHBhcmVudCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgcm93U3BhbiA9IHJvd0NvdW50IC0gazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJv
d1NwYW47Ci19Ci0KLXN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IEFjY2Vzc2liaWxpdHlB
UklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdAotewotICAgIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlIHsgMCwgMSB9OwotICAgIEFYQ29yZU9iamVj
dCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFwYXJlbnQpCi0g
ICAgICAgIHJldHVybiBjb2x1bW5SYW5nZTsKLQotICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRh
YmxlUm93PigqcGFyZW50KQotICAgICAgICAmJiAhKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBh
cmVudCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJs
ZSgpKSkKLSAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlOwotCi0gICAgY29uc3QgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiBzaWJsaW5ncyA9IHBhcmVudC0+Y2hpbGRyZW4oKTsKLSAgICB1
bnNpZ25lZCBjaGlsZHJlblNpemUgPSBzaWJsaW5ncy5zaXplKCk7Ci0gICAgdW5zaWduZWQgaW5k
ZXhXaXRoU3BhbiA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNoaWxkcmVuU2l6
ZTsgKytrKSB7Ci0gICAgICAgIGF1dG8qIGNoaWxkID0gc2libGluZ3Nba10uZ2V0KCk7Ci0gICAg
ICAgIGlmIChjaGlsZCA9PSB0aGlzKSB7Ci0gICAgICAgICAgICBjb2x1bW5SYW5nZS5maXJzdCA9
IGluZGV4V2l0aFNwYW47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBp
bmRleFdpdGhTcGFuICs9IGlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpjaGlsZCkgPyBzdGQ6
Om1heChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hpbGQpLmF4Q29sdW1uU3Bh
bigpLCAxKSA6IDE7Ci0gICAgfQotICAgIAotICAgIC8vIEFSSUEgMS4xLCBhcmlhLWNvbHNwYW4g
YXR0cmlidXRlIGlzIGludGVuZGVkIGZvciBjZWxscyBhbmQgZ3JpZGNlbGxzIHdoaWNoIGFyZSBu
b3QgY29udGFpbmVkIGluIGEgbmF0aXZlIHRhYmxlLgotICAgIC8vIFNvIHdlIHNob3VsZCBjaGVj
ayBmb3IgdGhhdCBhdHRyaWJ1dGUgaGVyZS4KLSAgICBpbnQgY29sdW1uU3BhbiA9IEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uU3BhbigpOwotICAgIGlmIChjb2x1bW5TcGFuID09IC0x
KSB7Ci0gICAgICAgIGF1dG8gcmFuZ2UgPSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5J
bmRleFJhbmdlKCk7Ci0gICAgICAgIGNvbHVtblNwYW4gPSByYW5nZS5zZWNvbmQ7Ci0gICAgfQot
Ci0gICAgY29sdW1uUmFuZ2Uuc2Vjb25kID0gc3RkOjptYXgoY29sdW1uU3BhbiwgMSk7Ci0KLSAg
ICByZXR1cm4gY29sdW1uUmFuZ2U7Ci19Ci0KIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGw6OnBhcmVudFJvd0dyb3VwKCkgY29uc3QKIHsKICAgICBmb3IgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVu
dCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgKaW5kZXggOGFjYWE5
Yjk1NTYxLi4xMGYyNDk2Y2IxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCkBAIC00MSwxNCArNDEsOCBA
QCBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwoUmVuZGVy
T2JqZWN0Kik7CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGxJbnN0YW5jZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIC8vIFJldHVybnMgdGhlIHN0
YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0aGUgY2VsbC4KLSAgICBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgLy8g
UmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIHRoZSBjZWxsLgot
ICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtbkluZGV4UmFuZ2UoKSBjb25z
dCBvdmVycmlkZTsKLQogICAgIEFjY2Vzc2liaWxpdHlUYWJsZSogcGFyZW50VGFibGUoKSBjb25z
dCBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRSb3dHcm91cCgpIGNv
bnN0OwotICAgIHVuc2lnbmVkIGF4Um93U3BhbldpdGhSb3dJbmRleCh1bnNpZ25lZCBpbmRleCkg
Y29uc3Q7CiAgICAgU3RyaW5nIHJlYWRPbmx5VmFsdWUoKSBjb25zdCBvdmVycmlkZTsKIH07IAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAppbmRleCA5ZjVhNTgxNmE5ZGYuLjJhNmJmZDdkMjhiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0z
MDg5LDcgKzMwODksNyBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RlZENlbGxzKCkKICAgICB9CiAKICAgICBpZiAo
YXV0byogYWN0aXZlRGVzY2VuZGFudCA9IHRoaXMtPmFjdGl2ZURlc2NlbmRhbnQoKSkgewotICAg
ICAgICBpZiAoYWN0aXZlRGVzY2VuZGFudC0+aXNUYWJsZUNlbGwoKSAmJiAhc2VsZWN0ZWRDZWxs
cy5jb250YWlucyhhY3RpdmVEZXNjZW5kYW50KSkKKyAgICAgICAgaWYgKGFjdGl2ZURlc2NlbmRh
bnQtPmlzRXhwb3NlZFRhYmxlQ2VsbCgpICYmICFzZWxlY3RlZENlbGxzLmNvbnRhaW5zKGFjdGl2
ZURlc2NlbmRhbnQpKQogICAgICAgICAgICAgc2VsZWN0ZWRDZWxscy5hcHBlbmQoYWN0aXZlRGVz
Y2VuZGFudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDhiNGE1OGE0NzAwNy4uZjYwZjQxYWY1ZGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaApAQCAtMTU0LDkgKzE1NCwxMSBAQCBwdWJsaWM6CiAgICAgQVhDb3JlT2JqZWN0KiBoZWFk
ZXJDb250YWluZXIoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgaW50IGF4Q29s
dW1uQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgaW50IGF4Um93Q291
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBWZWN0b3I8VmVj
dG9yPEFYSUQ+PiBzbG90R3JpZCgpIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgLy8gVGFibGUgY2Vs
bCBzdXBwb3J0LgogICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNFeHBvc2VkVGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQg
cm93IHNwYW4gb2YgdGhlIGNlbGwuCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
cm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgMCwgMSB9OyB9CiAgICAg
Ly8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIHRoZSBjZWxs
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCA2MTBmNzkzMDg3ZDMuLjM0MTBlOWExM2UyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTg4Nyw2ICs4ODcsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBUYWJsZSBjZWxsIHN1cHBvcnQuCiAgICAgdmlydHVhbCBib29sIGlzVGFibGVDZWxsKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0V4cG9zZWRUYWJsZUNlbGwoKSBjb25zdCA9
IDA7CiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRo
ZSBjZWxsLgogICAgIHZpcnR1YWwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5k
ZXhSYW5nZSgpIGNvbnN0ID0gMDsKICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBh
bmQgY29sdW1uIHNwYW4gb2YgdGhlIGNlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXggM2E3ZWZiZTU5MGM3Li43YWFj
MjI4YjcxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKIAotI2luY2x1ZGUgIkFYTG9nZ2VyLmgi
CiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCIKQEAgLTM3LDIx
ICszNiwxNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgogI2luY2x1ZGUg
IkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkVsZW1lbnRDaGls
ZEl0ZXJhdG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZUNhcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlUm93
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKICNpbmNsdWRlICJS
ZW5kZXJUYWJsZUNlbGwuaCIKLSNpbmNsdWRlICJSZW5kZXJUYWJsZVNlY3Rpb24uaCIKLSNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwotCiBBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChy
ZW5kZXJlcikKICAgICAsIG1faGVhZGVyQ29udGFpbmVyKG51bGxwdHIpCkBAIC01OSw2ICs1NCwx
MyBAQCBBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZShSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogewogfQogCitBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJs
ZShOb2RlJiBub2RlKQorICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChub2RlKQorICAg
ICwgbV9oZWFkZXJDb250YWluZXIobnVsbHB0cikKKyAgICAsIG1faXNFeHBvc2FibGUodHJ1ZSkK
K3sKK30KKwogQWNjZXNzaWJpbGl0eVRhYmxlOjp+QWNjZXNzaWJpbGl0eVRhYmxlKCkgPSBkZWZh
dWx0OwogCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6aW5pdCgpCkBAIC03Miw2ICs3NCwxMSBA
QCBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlPiBBY2Nlc3NpYmlsaXR5VGFibGU6OmNyZWF0ZShSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxp
dHlUYWJsZShyZW5kZXJlcikpOwogfQogCitSZWY8QWNjZXNzaWJpbGl0eVRhYmxlPiBBY2Nlc3Np
YmlsaXR5VGFibGU6OmNyZWF0ZShOb2RlJiBub2RlKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFjY2Vzc2liaWxpdHlUYWJsZShub2RlKSk7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVRh
YmxlOjpoYXNOb25UYWJsZUFSSUFSb2xlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGFyaWFSb2xl
QXR0cmlidXRlKCkpIHsKQEAgLTg1LDExICs5Miw2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxl
OjpoYXNOb25UYWJsZUFSSUFSb2xlKCkgY29uc3QKICAgICB9CiB9CiAKLWJvb2wgQWNjZXNzaWJp
bGl0eVRhYmxlOjppc0V4cG9zYWJsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faXNFeHBvc2Fi
bGUgJiYgKG1fcmVuZGVyZXIgfHwgaXM8SFRNTFRhYmxlRWxlbWVudD4obm9kZSgpKSk7Ci19Ci0K
IEhUTUxUYWJsZUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVFbGVtZW50KCkgY29u
c3QKIHsKICAgICBpZiAoYXV0byogdGFibGVFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxU
YWJsZUVsZW1lbnQ+KG5vZGUoKSkpCkBAIC0xMTMsMTEgKzExNSw4IEBAIEhUTUxUYWJsZUVsZW1l
bnQqIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVFbGVtZW50KCkgY29uc3QKIAogYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcmVuZGVy
ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8qIG9iamVjdENhY2hlID0gYXhP
YmplY3RDYWNoZSgpOwotICAgIGlmICghb2JqZWN0Q2FjaGUpCisgICAgV2Vha1B0ciBjYWNoZSA9
IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBEbyBub3QgY29uc2lkZXIgaXQgYSBkYXRhIHRhYmxlIGlmIGl0IGhhcyBhIG5v
bi10YWJsZSBBUklBIHJvbGUuCkBAIC0xMzAsMTQgKzEyOSwxMSBAQCBib29sIEFjY2Vzc2liaWxp
dHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgIGlmIChub2RlKCkgJiYgbm9kZSgpLT5o
YXNFZGl0YWJsZVN0eWxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFpczxS
ZW5kZXJUYWJsZT4oKm1fcmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAv
LyBUaGlzIGVtcGxveXMgYSBoZXVyaXN0aWMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgdGFibGUgc2hv
dWxkIGFwcGVhci4KICAgICAvLyBPbmx5ICJkYXRhIiB0YWJsZXMgc2hvdWxkIGJlIGV4cG9zZWQg
YXMgdGFibGVzLgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoZXJlIGlzIG5vIGdvb2Qgd2F5IHRv
IGRldGVybWluZSB0aGUgZGlmZmVyZW5jZQogICAgIC8vIGJldHdlZW4gYSAibGF5b3V0IiB0YWJs
ZSBhbmQgYSAiZGF0YSIgdGFibGUuCi0gICAgaWYgKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlRWxl
bWVudCA9IHRoaXMtPnRhYmxlRWxlbWVudCgpKSB7CisgICAgaWYgKFdlYWtQdHIgdGFibGVFbGVt
ZW50ID0gdGhpcy0+dGFibGVFbGVtZW50KCkpIHsKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBj
YXB0aW9uIGVsZW1lbnQsIHN1bW1hcnksIFRIRUFELCBvciBURk9PVCBzZWN0aW9uLCBpdCdzIG1v
c3QgY2VydGFpbmx5IGEgZGF0YSB0YWJsZS4KICAgICAgICAgaWYgKCF0YWJsZUVsZW1lbnQtPnN1
bW1hcnkoKS5pc0VtcHR5KCkKICAgICAgICAgICAgIHx8ICh0YWJsZUVsZW1lbnQtPnRIZWFkKCkg
JiYgdGFibGVFbGVtZW50LT50SGVhZCgpLT5yZW5kZXJlcigpKQpAQCAtMTcwLDE2ICsxNjYsMjAg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICBpZiAo
YXhSb3dDb3VudCA9PSAtMSB8fCBheFJvd0NvdW50ID4gMCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBSZW5kZXJUYWJsZSYgdGFibGUgPSBkb3duY2FzdDxSZW5kZXJUYWJsZT4oKm1fcmVu
ZGVyZXIpOworICAgIFdlYWtQdHIgcmVuZGVyVGFibGUgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVy
VGFibGU+KG1fcmVuZGVyZXIuZ2V0KCkpOworICAgIC8vIFRoZSBmb2xsb3dpbmcgY2hlY2tzIG9u
bHkgYXBwbHkgdG8gUmVuZGVyVGFibGVzLiBJZiB3ZSBkb24ndCBoYXZlIGEgUmVuZGVyVGFibGUg
KGUuZy4gYmVjYXVzZSBhIENTUyBkaXNwbGF5IHZhbHVlIGNhdXNlZCBhIGRpZmZlcmVudCByZW5k
ZXJlciwgb3Igbm8gcmVuZGVyZXIgdG8gYmUgZ2VuZXJhdGVkKSwgYXNzdW1lIHRoaXMgaXMgYSBk
YXRhIHRhYmxlLgorICAgIGlmICghcmVuZGVyVGFibGUpCisgICAgICAgIHJldHVybiB0cnVlOwor
CiAgICAgLy8gZ28gdGhyb3VnaCB0aGUgY2VsbCdzIGFuZCBjaGVjayBmb3IgdGVsbC10YWxlIHNp
Z25zIG9mICJkYXRhIiB0YWJsZSBzdGF0dXMKICAgICAvLyBjZWxscyBoYXZlIGJvcmRlcnMsIG9y
IHVzZSBhdHRyaWJ1dGVzIGxpa2UgaGVhZGVycywgYWJiciwgc2NvcGUgb3IgYXhpcwotICAgIHRh
YmxlLnJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGZp
cnN0Qm9keSA9IHRhYmxlLmZpcnN0Qm9keSgpOworICAgIHJlbmRlclRhYmxlLT5yZWNhbGNTZWN0
aW9uc0lmTmVlZGVkKCk7CisgICAgV2Vha1B0ciBmaXJzdEJvZHkgPSByZW5kZXJUYWJsZS0+Zmly
c3RCb2R5KCk7CiAgICAgaWYgKCFmaXJzdEJvZHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIElmIHRoZSB0Ym9keSBoYXMgYW55IG5vbi1ncm91cCByb2xlLCB0aGVuIGRvbid0IG1h
a2UgdGhpcyBhIGRhdGEgdGFibGUuIFRoZSBhdXRob3IgcHJvYmFibHkgd2FudHMgdG8gdXNlIHRo
ZSByb2xlIGluc2lkZSB0aGUgPHRib2R5Pi4KLSAgICBpZiAoYXV0byogdG9wU2VjdGlvbiA9IG9i
amVjdENhY2hlLT5nZXRPckNyZWF0ZSh0YWJsZS50b3BTZWN0aW9uKCkpKSB7CisgICAgaWYgKGF1
dG8qIHRvcFNlY3Rpb24gPSBjYWNoZS0+Z2V0T3JDcmVhdGUocmVuZGVyVGFibGUtPnRvcFNlY3Rp
b24oKSkpIHsKICAgICAgICAgYXV0byByb2xlID0gdG9wU2VjdGlvbi0+cm9sZVZhbHVlKCk7CiAg
ICAgICAgIGlmICghdG9wU2VjdGlvbi0+aXNHcm91cCgpICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlVua25vd24gJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZCkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAKICAgICAvLyBTdG9yZSB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdGFibGUgdG8gY2hl
Y2sgYWdhaW5zdCBjZWxsJ3MgYmFja2dyb3VuZCBjb2xvcnMuCi0gICAgY29uc3QgUmVuZGVyU3R5
bGUmIHRhYmxlU3R5bGUgPSB0YWJsZS5zdHlsZSgpOworICAgIGNvbnN0IFJlbmRlclN0eWxlJiB0
YWJsZVN0eWxlID0gcmVuZGVyVGFibGUtPnN0eWxlKCk7CiAgICAgQ29sb3IgdGFibGVCR0NvbG9y
ID0gdGFibGVTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOwogICAgIAogICAgIC8vIGNoZWNrIGVub3VnaCBvZiB0aGUgY2VsbHMgdG8gZmluZCBp
ZiB0aGUgdGFibGUgbWF0Y2hlcyBvdXIgY3JpdGVyaWEKQEAgLTMwMCw3ICszMDAsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgICAgICAgICAgLy8g
SWYgdGhlIGNlbGwgaGFzIGEgZGlmZmVyZW50IGNvbG9yIGZyb20gdGhlIHRhYmxlIGFuZCB0aGVy
ZSBpcyBjZWxsIHNwYWNpbmcsCiAgICAgICAgICAgICAvLyB0aGVuIGl0IGlzIHByb2JhYmx5IGEg
ZGF0YSB0YWJsZSBjZWxsIChzcGFjaW5nIGFuZCBjb2xvcnMgdGFrZSB0aGUgcGxhY2Ugb2YgYm9y
ZGVycykuCiAgICAgICAgICAgICBDb2xvciBjZWxsQ29sb3IgPSByZW5kZXJTdHlsZS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgICAgICAgICAg
aWYgKHRhYmxlLmhCb3JkZXJTcGFjaW5nKCkgPiAwICYmIHRhYmxlLnZCb3JkZXJTcGFjaW5nKCkg
PiAwCisgICAgICAgICAgICBpZiAocmVuZGVyVGFibGUtPmhCb3JkZXJTcGFjaW5nKCkgPiAwICYm
IHJlbmRlclRhYmxlLT52Qm9yZGVyU3BhY2luZygpID4gMAogICAgICAgICAgICAgICAgICYmIHRh
YmxlQkdDb2xvciAhPSBjZWxsQ29sb3IgJiYgY2VsbENvbG9yLmFscGhhQnl0ZSgpICE9IDEpIC8v
IEZJWE1FIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTM3KTog
VGhpcyBjb21wYXJpc29uIHRvIDEgaXMgbGlrZWx5IGluY29ycmVjdC4gSXQgbGlrZWx5IHNob3Vs
ZCBiZSBjaGVja2luZyAhY2VsbENvbG9yLmlzT3BhcXVlKCkuCiAgICAgICAgICAgICAgICAgKyti
YWNrZ3JvdW5kRGlmZmVyZW5jZUNlbGxDb3VudDsKICAgICAgICAgICAgIApAQCAtMzYxLDE1ICsz
NjEsMTAgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKKy8vIFRoZSBmb2xsb3dpbmcgaXMgYSBoZXVyaXN0aWMgdXNl
ZCB0byBkZXRlcm1pbmUgaWYgYSA8dGFibGU+IHNob3VsZCBiZSBleHBvc2VkIGFzIGFuIEFYVGFi
bGUuCisvLyBUaGUgZ29hbCBpcyB0byBvbmx5IHNob3cgImRhdGEiIHRhYmxlcy4KIGJvb2wgQWNj
ZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmls
aXR5KCkgY29uc3QKIHsKLSAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGEgaGV1cmlzdGljIHVzZWQg
dG8gZGV0ZXJtaW5lIGlmIGEKLSAgICAvLyA8dGFibGU+IHNob3VsZCBiZSBleHBvc2VkIGFzIGFu
IEFYVGFibGUuIFRoZSBnb2FsCi0gICAgLy8gaXMgdG8gb25seSBzaG93ICJkYXRhIiB0YWJsZXMu
Ci0KLSAgICBpZiAoIW1fcmVuZGVyZXIgJiYgIWlzPEhUTUxUYWJsZUVsZW1lbnQ+KG5vZGUoKSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIC8vIElmIGl0IGhhcyBhIG5vbi10YWJsZSBB
UklBIHJvbGUsIGl0IHNob3VsZG4ndCBiZSBleHBvc2VkIGFzIGEgdGFibGUuCiAgICAgaWYgKGhh
c05vblRhYmxlQVJJQVJvbGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzc3LDkgKzM3
MiwxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlzVGFibGVFeHBvc2FibGVU
aHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0CiAgICAgcmV0dXJuIGlzRGF0YVRhYmxlKCk7CiB9
CiAKLQogdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OnJlY29tcHV0ZUlzRXhwb3NhYmxlKCkKIHsK
KyAgICAvLyBNYWtlIHN1cmUgY2hpbGRyZW4gYXJlIHVwLXRvLWRhdGUsIGJlY2F1c2UgaWYgd2Ug
ZG8gZW5kIHVwIGNoYW5naW5nIGlzLWV4cG9zZWQgc3RhdGUsIHdlIHdhbnQgdG8gbWFrZQorICAg
IC8vIHN1cmUgdXBkYXRlQ2hpbGRyZW5Sb2xlcyBpdGVyYXRlcyBvdmVyIHRob3NlIGNoaWxkcmVu
IGJlZm9yZSB0aGV5IGNoYW5nZS4KKyAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CisK
ICAgICBib29sIHByZXZpb3VzbHlFeHBvc2FibGUgPSBtX2lzRXhwb3NhYmxlOwogICAgIG1faXNF
eHBvc2FibGUgPSBjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCk7
CiAgICAgaWYgKHByZXZpb3VzbHlFeHBvc2FibGUgIT0gbV9pc0V4cG9zYWJsZSkgewpAQCAtMzk0
LDYgKzM5MiwyNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6cmVjb21wdXRlSXNFeHBvc2Fi
bGUoKQogICAgIH0KIH0KIAorVmVjdG9yPFZlY3RvcjxBWElEPj4gQWNjZXNzaWJpbGl0eVRhYmxl
OjpzbG90R3JpZCgpCit7CisgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOworICAgIHJl
dHVybiBtX3Nsb3RHcmlkOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6c2V0U2xvdEdy
aWREaXJ0eSgpCit7CisgICAgLy8gQmVjYXVzZSB0aGUgc2xvdC1ncmlkIGlzIChuZWNlc3Nhcmls
eSkgY29tcHV0ZWQgaW4gY29uanVuY3Rpb24gd2l0aCBjaGlsZHJlbiwgbWFyaworICAgIC8vIHRo
ZSBjaGlsZHJlbiBhcyBkaXJ0eSBieSBjbGVhcmluZyB0aGVtLgorICAgIC8vCisgICAgLy8gSXQn
cyBuZWNlc3NhcnkgdG8gY29tcHV0ZSB0aGUgc2xvdC1ncmlkIHRvZ2V0aGVyIHdpdGggY2hpbGRy
ZW4gYmVjYXVzZSB0aGV5IGFyZSBib3RoCisgICAgLy8gaW5mbHVlbmNlZCBieSB0aGUgc2FtZSBm
YWN0b3JzLiBGb3IgZXhhbXBsZSwgaWYgYHNldFNsb3RHcmlkRGlydHlgIGlzIGNhbGxlZCBiZWNh
dXNlCisgICAgLy8gYSBjaGlsZCBpbmNyZWFzZWQgaW4gY29sdW1uIHNwYW4sIHRoYXQgbWF5IGFs
c28gcmVzdWx0IGluIG1vcmUgY29sdW1uIGNoaWxkcmVuIGJlaW5nCisgICAgLy8gYWRkZWQgaWYg
dGhhdCBjb2x1bW4gc3BhbiBjaGFuZ2UgaW5jcmVhc2VkIHRoZSAid2lkdGgiIG9mIHRoZSB0YWJs
ZS4KKyAgICBjbGVhckNoaWxkcmVuKCk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjp1
cGRhdGVDaGlsZHJlblJvbGVzKCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHJvdyA6IG1fcm93
cykgewpAQCAtNDA4LDYgKzQyNCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNo
aWxkcmVuKCkKICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjbGVhckNoaWxkcmVuKCk7
CiAgICAgbV9yb3dzLmNsZWFyKCk7CiAgICAgbV9jb2x1bW5zLmNsZWFyKCk7CisgICAgbV9zbG90
R3JpZC5jbGVhcigpOwogCiAgICAgaWYgKG1faGVhZGVyQ29udGFpbmVyKSB7CiAgICAgICAgIG1f
aGVhZGVyQ29udGFpbmVyLT5kZXRhY2hGcm9tUGFyZW50KCk7CkBAIC00MjEsNDIgKzQzOCwyMTcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKICAgICAgICAgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKLSAgICBBU1NFUlQoIW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7IAotICAgIAorCisg
ICAgQVNTRVJUKCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOwogICAgIG1fY2hpbGRyZW5Jbml0aWFs
aXplZCA9IHRydWU7Ci0gICAgaWYgKCFpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIoKSkpCisgICAg
V2Vha1B0ciBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQogICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgUmVuZGVyVGFibGUmIHRhYmxlID0gZG93bmNhc3Q8UmVuZGVy
VGFibGU+KCptX3JlbmRlcmVyKTsKLSAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgYXZhaWxhYmxl
IHNlY3Rpb25zIHRvIHB1bGwgb3V0IHRoZSByb3dzIGFuZCBhZGQgdGhlbSBhcyBjaGlsZHJlbi4K
LSAgICB0YWJsZS5yZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7Ci0gICAgCi0gICAgaWYgKEhUTUxU
YWJsZUVsZW1lbnQqIHRhYmxlRWxlbWVudCA9IHRoaXMtPnRhYmxlRWxlbWVudCgpKSB7Ci0gICAg
ICAgIGlmIChhdXRvIGNhcHRpb24gPSB0YWJsZUVsZW1lbnQtPmNhcHRpb24oKSkgewotICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhDYXB0aW9uID0gYXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShjYXB0aW9uLmdldCgpKTsKLSAgICAgICAgICAgIGFkZENoaWxkKGF4Q2FwdGlv
biwgRGVzY2VuZElmSWdub3JlZDo6Tm8pOworCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpbXBsZW1l
bnRzIHRoZSAiZm9ybWluZyBhIHRhYmxlIiBhbGdvcml0aG0gZm9yIGRldGVybWluaW5nCisgICAg
Ly8gdGhlIGNvcnJlY3QgY2VsbCBwb3NpdGlvbnMgYW5kIHNwYW5zIChhbmQgc3RvcmluZyB0aG9z
ZSBpbiBtX3Nsb3RHcmlkIGZvciBsYXRlciB1c2UpLgorICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RhYmxlcy5odG1sI2Zvcm1pbmctYS10YWJsZQorCisgICAg
Ly8gU3RlcCAxLgorICAgIHVuc2lnbmVkIHhXaWR0aCA9IDA7CisgICAgLy8gU3RlcCAyLgorICAg
IHVuc2lnbmVkIHlIZWlnaHQgPSAwOworICAgIC8vIFN0ZXAgMzogTGV0IHBlbmRpbmcgdGZvb3Qg
ZWxlbWVudHMgYmUgYSBsaXN0IG9mIHRmb290IGVsZW1lbnRzLCBpbml0aWFsbHkgZW1wdHkuCisg
ICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gcGVuZGluZ1Rmb290RWxlbWVudHM7CisgICAgLy8gU3Rl
cCAxMC4KKyAgICB1bnNpZ25lZCB5Q3VycmVudCA9IDA7CisgICAgUmVmUHRyPEhUTUxUYWJsZUNh
cHRpb25FbGVtZW50PiBjYXB0aW9uRWxlbWVudDsKKworICAgIEhhc2hTZXQ8QWNjZXNzaWJpbGl0
eU9iamVjdCo+IGFwcGVuZGVkUm93czsKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS90YWJsZXMuaHRtbCNhbGdvcml0aG0tZm9yLXByb2Nlc3Npbmctcm93cwor
ICAgIGF1dG8gcHJvY2Vzc1JvdyA9IFsmLCB0aGlzXSAoQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBy
b3cpIHsKKyAgICAgICAgaWYgKCFyb3cgfHwgYXBwZW5kZWRSb3dzLmNvbnRhaW5zKHJvdykpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGFwcGVuZGVkUm93cy5hZGQocm93KTsKKyAgICAg
ICAgLy8gU3RlcCAxOiBJZiB5aGVpZ2h0IGlzIGVxdWFsIHRvIHljdXJyZW50LCB0aGVuIGluY3Jl
YXNlIHloZWlnaHQgYnkgMS4gKHljdXJyZW50IG11c3QgbmV2ZXIgYmUgZ3JlYXRlciB0aGFuIHlo
ZWlnaHQuKQorICAgICAgICBpZiAoeUhlaWdodCA8PSB5Q3VycmVudCkKKyAgICAgICAgICAgIHlI
ZWlnaHQgPSB5Q3VycmVudCArIDE7CisKKyAgICAgICAgLy8gU3RlcCAyLgorICAgICAgICB1bnNp
Z25lZCB4Q3VycmVudCA9IDA7CisgICAgICAgIC8vIFN0ZXAgMzogUnVuIHRoZSBhbGdvcml0aG0g
Zm9yIGdyb3dpbmcgZG93bndhcmQtZ3Jvd2luZyBjZWxscyAobm90IGltcGxlbWVudGVkKS4KKwor
ICAgICAgICAvLyBTdGVwIDQ6IElmIHRoZSB0ciBlbGVtZW50IGJlaW5nIHByb2Nlc3NlZCBoYXMg
bm8gdGQgb3IgdGggZWxlbWVudCBjaGlsZHJlbiwgdGhlbiBpbmNyZWFzZSB5Y3VycmVudCBieSAx
LCBhYm9ydCB0aGlzIHNldCBvZiBzdGVwcywgYW5kIHJldHVybiB0byB0aGUgYWxnb3JpdGhtIGFi
b3ZlLgorICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcm93LT5jaGlsZHJlbigpKSB7
CisgICAgICAgICAgICBhdXRvKiBjdXJyZW50Q2VsbCA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsPihjaGlsZC5nZXQoKSk7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRD
ZWxsKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvLyBTdGVwIDY6
IFdoaWxlIHRoZSBzbG90IHdpdGggY29vcmRpbmF0ZSAoeGN1cnJlbnQsIHljdXJyZW50KSBhbHJl
YWR5IGhhcyBhIGNlbGwgYXNzaWduZWQgdG8gaXQsIGluY3JlYXNlIHhjdXJyZW50IGJ5IDEuCisg
ICAgICAgICAgICBlbnN1cmVSb3dBbmRDb2x1bW4oeUN1cnJlbnQsIHhDdXJyZW50KTsKKyAgICAg
ICAgICAgIHdoaWxlIChtX3Nsb3RHcmlkW3lDdXJyZW50XVt4Q3VycmVudF0uaXNWYWxpZCgpKSB7
CisgICAgICAgICAgICAgICAgeEN1cnJlbnQgKz0gMTsKKyAgICAgICAgICAgICAgICBlbnN1cmVS
b3dBbmRDb2x1bW4oeUN1cnJlbnQsIHhDdXJyZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC8vIFN0ZXAgNzogSWYgeGN1cnJlbnQgaXMgZXF1YWwgdG8geHdpZHRoLCBpbmNyZWFzZSB4
d2lkdGggYnkgMS4gKHhjdXJyZW50IGlzIG5ldmVyIGdyZWF0ZXIgdGhhbiB4d2lkdGguKQorICAg
ICAgICAgICAgaWYgKHhDdXJyZW50ID49IHhXaWR0aCkKKyAgICAgICAgICAgICAgICB4V2lkdGgg
PSB4Q3VycmVudCArIDE7CisgICAgICAgICAgICAvLyBTdGVwIDg6IElmIHRoZSBjdXJyZW50IGNl
bGwgaGFzIGEgY29sc3BhbiBhdHRyaWJ1dGUsIHRoZW4gcGFyc2UgdGhhdCBhdHRyaWJ1dGUncyB2
YWx1ZSwgYW5kIGxldCBjb2xzcGFuIGJlIHRoZSByZXN1bHQuCisgICAgICAgICAgICB1bnNpZ25l
ZCBjb2xTcGFuID0gY3VycmVudENlbGwtPmNvbFNwYW4oKTsKKyAgICAgICAgICAgIC8vIFN0ZXAg
OTogSWYgdGhlIGN1cnJlbnQgY2VsbCBoYXMgYSByb3dzcGFuIGF0dHJpYnV0ZSwgdGhlbiBwYXJz
ZSB0aGF0IGF0dHJpYnV0ZSdzIHZhbHVlLCBhbmQgbGV0IHJvd3NwYW4gYmUgdGhlIHJlc3VsdC4K
KyAgICAgICAgICAgIHVuc2lnbmVkIHJvd1NwYW4gPSBjdXJyZW50Q2VsbC0+cm93U3BhbigpOwor
CisgICAgICAgICAgICAvLyBTdGVwIDEwOiBJZiByb3dzcGFuIGlzIHplcm8gYW5kIHRoZSB0YWJs
ZSBlbGVtZW50J3Mgbm9kZSBkb2N1bWVudCBpcyBub3Qgc2V0IHRvIHF1aXJrcyBtb2RlLCB0aGVu
IGxldAorICAgICAgICAgICAgLy8gY2VsbCBncm93cyBkb3dud2FyZCBiZSB0cnVlLCBhbmQgc2V0
IHJvd3NwYW4gdG8gMS4gT3RoZXJ3aXNlLCBsZXQgY2VsbCBncm93cyBkb3dud2FyZCBiZSBmYWxz
ZS4KKyAgICAgICAgICAgIC8vIE5PVEU6IFdlIGludGVudGlvbmFsbHkgZG9uJ3QgaW1wbGVtZW50
IHRoaXMgc3RlcCBiZWNhdXNlIHRoZSByZW5kZXJpbmcgY29kZSBkb2Vzbid0LCBzbyBpbXBsZW1l
bnRpbmcgaXQKKyAgICAgICAgICAgIC8vIHdvdWxkIGNhdXNlIEFYIHRvIG5vdCBtYXRjaCB0aGUg
dmlzdWFsIHN0YXRlIG9mIHRoZSBwYWdlLgorCisgICAgICAgICAgICAvLyBTdGVwIDExOiBJZiB4
d2lkdGggPCB4Y3VycmVudCtjb2xzcGFuLCB0aGVuIGxldCB4d2lkdGggYmUgeGN1cnJlbnQrY29s
c3Bhbi4KKyAgICAgICAgICAgIGlmICh4V2lkdGggPCB4Q3VycmVudCArIGNvbFNwYW4pCisgICAg
ICAgICAgICAgICAgeFdpZHRoID0geEN1cnJlbnQgKyBjb2xTcGFuOworCisgICAgICAgICAgICAv
LyBTdGVwIDEyOiBJZiB5aGVpZ2h0IDwgeWN1cnJlbnQrcm93c3BhbiwgdGhlbiBsZXQgeWhlaWdo
dCBiZSB5Y3VycmVudCtyb3dzcGFuLgorICAgICAgICAgICAgaWYgKHlIZWlnaHQgPCB5Q3VycmVu
dCArIHJvd1NwYW4pCisgICAgICAgICAgICAgICAgeUhlaWdodCA9IHlDdXJyZW50ICsgcm93U3Bh
bjsKKworICAgICAgICAgICAgLy8gU3RlcCAxMzogTGV0IHRoZSBzbG90cyB3aXRoIGNvb3JkaW5h
dGVzICh4LCB5KSBzdWNoIHRoYXQgeGN1cnJlbnQg4omkIHggPCB4Y3VycmVudCtjb2xzcGFuIGFu
ZAorICAgICAgICAgICAgLy8geWN1cnJlbnQg4omkIHkgPCB5Y3VycmVudCtyb3dzcGFuIGJlIGNv
dmVyZWQgYnkgYSBuZXcgY2VsbCBjLCBhbmNob3JlZCBhdCAoeGN1cnJlbnQsIHljdXJyZW50KSwK
KyAgICAgICAgICAgIC8vIHdoaWNoIGhhcyB3aWR0aCBjb2xzcGFuIGFuZCBoZWlnaHQgcm93c3Bh
biwgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVudCBjZWxsIGVsZW1lbnQuCisgICAgICAgICAg
ICBjdXJyZW50Q2VsbC0+c2V0Q29sdW1uSW5kZXgoeEN1cnJlbnQpOworICAgICAgICAgICAgY3Vy
cmVudENlbGwtPnNldFJvd0luZGV4KHlDdXJyZW50KTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgeSA9IHlDdXJyZW50OyB5IDwgeUN1cnJlbnQgKyByb3dTcGFuOyB5KyspIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIHggPSB4Q3VycmVudDsgeCA8IHhDdXJyZW50ICsgY29sU3Bh
bjsgeCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGVuc3VyZVJvd0FuZENvbHVtbih5LCB4KTsK
KyAgICAgICAgICAgICAgICAgICAgbV9zbG90R3JpZFt5XVt4XSA9IGN1cnJlbnRDZWxsLT5vYmpl
Y3RJRCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gU3RlcCAxNDogSWYgY2VsbCBncm93cyBkb3dud2FyZCBpcyB0cnVlLCB0aGVuIGFkZCB0aGUg
dHVwbGUge2MsIHhjdXJyZW50LCBjb2xzcGFufSB0byB0aGUKKyAgICAgICAgICAgIC8vIGxpc3Qg
b2YgZG93bndhcmQtZ3Jvd2luZyBjZWxscy4gTm90IGltcGxlbWVudGVkLgorCisgICAgICAgICAg
ICAvLyBTdGVwIDE1LgorICAgICAgICAgICAgeEN1cnJlbnQgKz0gY29sU3BhbjsKKworICAgICAg
ICAgICAgLy8gU3RlcCAxNyBhbmQgMTg6IExldCBjdXJyZW50IGNlbGwgYmUgdGhlIG5leHQgdGQg
b3IgdGggZWxlbWVudCBjaGlsZCBpbiB0aGUgdHIgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQuCiAg
ICAgICAgIH0KLSAgICB9CiAKLSAgICB1bnNpZ25lZCBtYXhDb2x1bW5Db3VudCA9IDA7Ci0gICAg
UmVuZGVyVGFibGVTZWN0aW9uKiBmb290ZXIgPSB0YWJsZS5mb290ZXIoKTsKLSAgICAKLSAgICBm
b3IgKFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUudG9wU2VjdGlvbigp
OyB0YWJsZVNlY3Rpb247IHRhYmxlU2VjdGlvbiA9IHRhYmxlLnNlY3Rpb25CZWxvdyh0YWJsZVNl
Y3Rpb24sIFNraXBFbXB0eVNlY3Rpb25zKSkgewotICAgICAgICBpZiAodGFibGVTZWN0aW9uID09
IGZvb3RlcikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhZGRDaGlsZHJlbkZyb21T
ZWN0aW9uKHRhYmxlU2VjdGlvbiwgbWF4Q29sdW1uQ291bnQpOworICAgICAgICAvLyBOb3Qgc3Bl
Y2lmaWVkOiB1cGRhdGUgc29tZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuCisgICAgICAgIG1f
cm93cy5hcHBlbmQocm93KTsKKyAgICAgICAgcm93LT5zZXRSb3dJbmRleCh5Q3VycmVudCk7Cisg
ICAgICAgIGFkZENoaWxkKHJvdyk7CisKKyAgICAgICAgLy8gU3RlcCAxNjogSWYgY3VycmVudCBj
ZWxsIGlzIHRoZSBsYXN0IHRkIG9yIHRoIGVsZW1lbnQgY2hpbGQgaW4gdGhlIHRyIGVsZW1lbnQg
YmVpbmcgcHJvY2Vzc2VkLCB0aGVuIGluY3JlYXNlIHljdXJyZW50IGJ5IDEsIGFib3J0IHRoaXMg
c2V0IG9mIHN0ZXBzLCBhbmQgcmV0dXJuIHRvIHRoZSBhbGdvcml0aG0gYWJvdmUuCisgICAgICAg
IHlDdXJyZW50ICs9IDE7CisgICAgfTsKKyAgICBhdXRvIG5lZWRzVG9EZXNjZW5kID0gWyZhcHBl
bmRlZFJvd3NdIChBWENvcmVPYmplY3QmIGF4T2JqZWN0KSB7CisgICAgICAgIHJldHVybiAoIWF4
T2JqZWN0LmlzVGFibGVSb3coKSB8fCAhYXhPYmplY3Qubm9kZSgpKQorICAgICAgICAgICAgJiYg
IWFwcGVuZGVkUm93cy5jb250YWlucyhkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVj
dD4oYXhPYmplY3QpKTsKKyAgICB9OworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChBWENvcmVPYmpl
Y3QqKT4gcHJvY2Vzc1Jvd0Rlc2NlbmRpbmdJZk5lZWRlZCA9IFsmXSAoQVhDb3JlT2JqZWN0KiBh
eE9iamVjdCkgeworICAgICAgICBpZiAoIWF4T2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAvLyBEZXNjZW5kIHBhc3QgYW5vbnltb3VzIHJlbmRlcmVycyBhbmQgbm9uLXJvd3Mu
CisgICAgICAgIGlmIChuZWVkc1RvRGVzY2VuZCgqYXhPYmplY3QpKSB7CisgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogYXhPYmplY3QtPmNoaWxkcmVuKCkpCisgICAgICAgICAg
ICAgICAgcHJvY2Vzc1Jvd0Rlc2NlbmRpbmdJZk5lZWRlZChjaGlsZC5nZXQoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgcHJvY2Vzc1JvdyhkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJp
bGl0eVRhYmxlUm93PihheE9iamVjdCkpOworICAgIH07CisgICAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjYWxnb3JpdGhtLWZvci1lbmRpbmct
YS1yb3ctZ3JvdXAKKyAgICBhdXRvIGVuZFJvd0dyb3VwID0gWyZdICgpIHsKKyAgICAgICAgaWYg
KHlDdXJyZW50IDwgeUhlaWdodCkKKyAgICAgICAgICAgIHlDdXJyZW50ID0geUhlaWdodDsKKyAg
ICB9OworICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RhYmxl
cy5odG1sI2FsZ29yaXRobS1mb3ItcHJvY2Vzc2luZy1yb3ctZ3JvdXBzCisgICAgYXV0byBwcm9j
ZXNzUm93R3JvdXAgPSBbJl0gKEVsZW1lbnQmIHNlY3Rpb25FbGVtZW50KSB7CisgICAgICAgIC8v
IFN0ZXAgMTogTGV0IHlzdGFydCBoYXZlIHRoZSB2YWx1ZSBvZiB5aGVpZ2h0LiBOb3QgaW1wbGVt
ZW50ZWQgYmVjYXVzZSBpdCdzIG9ubHkgdXNlZnVsIGZvciBzdGVwIDMsIHdoaWNoIHdlIHNraXAu
CisKKyAgICAgICAgLy8gU3RlcCAyOiBGb3IgZWFjaCB0ciBlbGVtZW50IHRoYXQgaXMgYSBjaGls
ZCBvZiB0aGUgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQsCisgICAgICAgIC8vIGluIHRyZWUgb3Jk
ZXIsIHJ1biB0aGUgYWxnb3JpdGhtIGZvciBwcm9jZXNzaW5nIHJvd3MuCisgICAgICAgIGlmIChS
ZWZQdHIgdGFibGVTZWN0aW9uID0gZHluYW1pY0Rvd25jYXN0PEhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50PihzZWN0aW9uRWxlbWVudCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcm93IDogY2hp
bGRyZW5PZlR5cGU8SFRNTFRhYmxlUm93RWxlbWVudD4oKnRhYmxlU2VjdGlvbikpIHsKKyAgICAg
ICAgICAgICAgICBSZWZQdHIgdGFibGVSb3cgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlUm93PihjYWNoZS0+Z2V0T3JDcmVhdGUoJnJvdykpOworICAgICAgICAgICAgICAgIHBy
b2Nlc3NSb3codGFibGVSb3cuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKFJlZlB0ciBzZWN0aW9uQXhPYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoJnNlY3Rpb25F
bGVtZW50KSkgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShub2RlSGFzUm9sZSgm
c2VjdGlvbkVsZW1lbnQsICJyb3dncm91cCJfcyksICJwcm9jZXNzUm93R3JvdXAgc2hvdWxkIG9u
bHkgYmUgY2FsbGVkIHdpdGggbmF0aXZlIHRhYmxlIHNlY3Rpb24gZWxlbWVudHMsIG9yIHJvbGU9
cm93Z3JvdXAgZWxlbWVudHMiKTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQg
OiBzZWN0aW9uQXhPYmplY3QtPmNoaWxkcmVuKCkpCisgICAgICAgICAgICAgICAgcHJvY2Vzc1Jv
d0Rlc2NlbmRpbmdJZk5lZWRlZChjaGlsZC5nZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgLy8g
U3RlcCAzOiBJZiB5aGVpZ2h0ID4geXN0YXJ0LCB0aGVuIGxldCBhbGwgdGhlIGxhc3Qgcm93cyBp
biB0aGUgdGFibGUgZnJvbSB5PXlzdGFydCB0byB5PXloZWlnaHQtMQorICAgICAgICAvLyBmb3Jt
IGEgbmV3IHJvdyBncm91cCwgYW5jaG9yZWQgYXQgdGhlIHNsb3Qgd2l0aCBjb29yZGluYXRlICgw
LCB5c3RhcnQpLCB3aXRoIGhlaWdodCB5aGVpZ2h0LXlzdGFydCwKKyAgICAgICAgLy8gY29ycmVz
cG9uZGluZyB0byB0aGUgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQuIE5vdCBpbXBsZW1lbnRlZC4K
KworICAgICAgICAvLyBTdGVwIDQ6IFJ1biB0aGUgYWxnb3JpdGhtIGZvciBlbmRpbmcgYSByb3cg
Z3JvdXAuCisgICAgICAgIGVuZFJvd0dyb3VwKCk7CisgICAgfTsKKworICAgIC8vIFN0ZXAgNDog
TGV0IHRoZSB0YWJsZSBiZSB0aGUgdGFibGUgcmVwcmVzZW50ZWQgYnkgdGhlIHRhYmxlIGVsZW1l
bnQuCisgICAgUmVmUHRyIHRhYmxlRWxlbWVudCA9IHRoaXMtPm5vZGUoKTsKKyAgICAvLyBgaXNB
cmlhVGFibGUoKWAgd2lsbCByZXR1cm4gdHJ1ZSBmb3IgdGFibGUtbGlrZSBBUklBIHN0cnVjdHVy
ZXMgKGdyaWQsIHRyZWVncmlkLCB0YWJsZSkuCisgICAgaWYgKCFpczxIVE1MVGFibGVFbGVtZW50
Pih0YWJsZUVsZW1lbnQuZ2V0KCkpICYmICFpc0FyaWFUYWJsZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoTm9kZSopPiBwcm9jZXNzVGFibGVEZXNjZW5kYW50
ID0gWyYsIHRoaXNdIChOb2RlKiBub2RlKSB7CisgICAgICAgIC8vIFN0ZXAgODogV2hpbGUgdGhl
IGN1cnJlbnQgZWxlbWVudCBpcyBub3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgZWxlbWVudHMsIGFk
dmFuY2UgdGhlCisgICAgICAgIC8vIGN1cnJlbnQgZWxlbWVudCB0byB0aGUgbmV4dCBjaGlsZCBv
ZiB0aGUgdGFibGUuCisgICAgICAgIGlmIChhdXRvKiBjYXB0aW9uID0gZHluYW1pY0Rvd25jYXN0
PEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Pihub2RlKSkgeworICAgICAgICAgICAgLy8gU3RlcCA2
OiBBc3NvY2lhdGUgdGhlIGZpcnN0IGNhcHRpb24gZWxlbWVudCBjaGlsZCBvZiB0aGUgdGFibGUg
ZWxlbWVudCB3aXRoIHRoZSB0YWJsZS4KKyAgICAgICAgICAgIGlmICghY2FwdGlvbkVsZW1lbnQp
CisgICAgICAgICAgICAgICAgY2FwdGlvbkVsZW1lbnQgPSBjYXB0aW9uOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byogZWxlbWVudCA9IGR5bmFtaWNEb3du
Y2FzdDxFbGVtZW50Pihub2RlKTsKKyAgICAgICAgYm9vbCBkZXNjZW5kYW50SXNSb3cgPSBlbGVt
ZW50ICYmIChlbGVtZW50LT5oYXNUYWdOYW1lKHRyVGFnKSB8fCBub2RlSGFzUm9sZShlbGVtZW50
LCAicm93Il9zKSk7CisgICAgICAgIGJvb2wgZGVzY2VuZGFudElzUm93R3JvdXAgPSBlbGVtZW50
ICYmICFkZXNjZW5kYW50SXNSb3cgJiYgKGVsZW1lbnQtPmhhc1RhZ05hbWUodGhlYWRUYWcpIHx8
IGVsZW1lbnQtPmhhc1RhZ05hbWUodGJvZHlUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUodGZv
b3RUYWcpIHx8IG5vZGVIYXNSb2xlKGVsZW1lbnQsICJyb3dncm91cCJfcykpOworCisgICAgICAg
IC8vIFN0ZXAgOTogSGFuZGxlIHRoZSBjb2xncm91cCBlbGVtZW50LiBOb3QgaW1wbGVtZW50ZWQu
CisgICAgICAgIC8vIFN0ZXAgMTA6IEhhbmRsZWQgYWJvdmUuCisgICAgICAgIC8vIFN0ZXAgMTE6
IFNraXBwZWQuIE5vdCBjdXJyZW50bHkgaW1wbGVtZW50aW5nICJkb3dud2FyZC1ncm93aW5nIGNl
bGxzIiBhbGdvcml0aG0uCisgICAgICAgIC8vIFN0ZXAgMTI6IFdoaWxlIHRoZSBjdXJyZW50IGVs
ZW1lbnQgaXMgbm90IG9uZSBvZiB0aGUgZm9sbG93aW5nIGVsZW1lbnRzLCBhZHZhbmNlIHRoZSBj
dXJyZW50IGVsZW1lbnQgdG8gdGhlIG5leHQgY2hpbGQgb2YgdGhlIHRhYmxlCisgICAgICAgIGlm
ICghZGVzY2VuZGFudElzUm93ICYmICFkZXNjZW5kYW50SXNSb3dHcm91cCkgeworICAgICAgICAg
ICAgaWYgKGlzQXJpYVRhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUgZm9yZ2l2
aW5nIHdpdGggQVJJQSBncmlkIG1hcmt1cCwgZGVzY2VuZGluZyBwYXN0IGRpc2FsbG93ZWQgZWxl
bWVudHMgdG8gYnVpbGQgdGhlIGdyaWQgc3RydWN0dXJlICh0aGlzIGlzIG5vdCBzcGVjaWZpZWQs
IGJ1dCBjb25zaXN0ZW50IHdpdGggb3RoZXIgYnJvd3NlcnMpLgorICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBheE9iamVjdCA9IGNhY2hlLT5nZXRPckNyZWF0ZShub2RlKTsgYXhPYmplY3QgJiYg
bmVlZHNUb0Rlc2NlbmQoKmF4T2JqZWN0KSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGNoaWxkIDogYXhPYmplY3QtPmNoaWxkcmVuKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9jZXNzVGFibGVEZXNjZW5kYW50KGNoaWxkID8gY2hpbGQtPm5vZGUoKSA6IG51
bGxwdHIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0ZXAgMTM6IElmIHRoZSBjdXJyZW50IGVs
ZW1lbnQgaXMgYSB0ciwgdGhlbiBydW4gdGhlIGFsZ29yaXRobSBmb3IgcHJvY2Vzc2luZyByb3dz
LAorICAgICAgICAvLyBhZHZhbmNlIHRoZSBjdXJyZW50IGVsZW1lbnQgdG8gdGhlIG5leHQgY2hp
bGQgb2YgdGhlIHRhYmxlLCBhbmQgcmV0dXJuIHRvIHRoZSBzdGVwIGxhYmVsZWQgcm93cy4KKyAg
ICAgICAgaWYgKGRlc2NlbmRhbnRJc1JvdykKKyAgICAgICAgICAgIHByb2Nlc3NSb3coZHluYW1p
Y0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oY2FjaGUtPmdldE9yQ3JlYXRlKGVsZW1l
bnQpKSk7CisKKyAgICAgICAgLy8gU3RlcCAxNDogUnVuIHRoZSBhbGdvcml0aG0gZm9yIGVuZGlu
ZyBhIHJvdyBncm91cC4KKyAgICAgICAgZW5kUm93R3JvdXAoKTsKKworICAgICAgICAvLyBTdGVw
IDE1OiBJZiB0aGUgY3VycmVudCBlbGVtZW50IGlzIGEgdGZvb3QuLi4KKyAgICAgICAgaWYgKGVs
ZW1lbnQtPmhhc1RhZ05hbWUodGZvb3RUYWcpKSB7CisgICAgICAgICAgICAvLyAuLi50aGVuIGFk
ZCB0aGF0IGVsZW1lbnQgdG8gdGhlIGxpc3Qgb2YgcGVuZGluZyB0Zm9vdCBlbGVtZW50cworICAg
ICAgICAgICAgcGVuZGluZ1Rmb290RWxlbWVudHMuYXBwZW5kKCplbGVtZW50KTsKKyAgICAgICAg
ICAgIC8vIC4uLmFkdmFuY2UgdGhlIGN1cnJlbnQgZWxlbWVudCB0byB0aGUgbmV4dCBjaGlsZCBv
ZiB0aGUgdGFibGUuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAv
LyBTdGVwIDE2OiBJZiB0aGUgY3VycmVudCBlbGVtZW50IGlzIGVpdGhlciBhIHRoZWFkIG9yIGEg
dGJvZHksIHJ1biB0aGUgYWxnb3JpdGhtIGZvciBwcm9jZXNzaW5nIHJvdyBncm91cHMuIChOb3Qg
c3BlY2lmaWVkOiBpbmNsdWRlIHJvbGU9InJvd2dyb3VwcyIpLgorICAgICAgICBpZiAoZGVzY2Vu
ZGFudElzUm93R3JvdXApCisgICAgICAgICAgICBwcm9jZXNzUm93R3JvdXAoKmVsZW1lbnQpOwor
ICAgIH07CisgICAgLy8gU3RlcCA3OiBMZXQgdGhlIGN1cnJlbnQgZWxlbWVudCBiZSB0aGUgZmly
c3QgZWxlbWVudCBjaGlsZCBvZiB0aGUgdGFibGUgZWxlbWVudC4KKyAgICBmb3IgKFJlZlB0ciBj
dXJyZW50RWxlbWVudCA9IHRhYmxlRWxlbWVudC0+Zmlyc3RDaGlsZCgpOyBjdXJyZW50RWxlbWVu
dDsgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICBwcm9jZXNzVGFibGVEZXNjZW5kYW50KGN1cnJlbnRFbGVtZW50LmdldCgpKTsKKyAgICAg
ICAgLy8gU3RlcCAxNyArIDE4OiBBZHZhbmNlIHRoZSBjdXJyZW50IGVsZW1lbnQgdG8gdGhlIG5l
eHQgY2hpbGQgb2YgdGhlIHRhYmxlLgogICAgIH0KLSAgICAKLSAgICAvLyBQcm9jZXNzIHRoZSBm
b290ZXIgbGFzdCwgaW4gY2FzZSBpdCB3YXMgb3JkZXJlZCBlYXJsaWVyIGluIHRoZSBET00uCi0g
ICAgaWYgKGZvb3RlcikKLSAgICAgICAgYWRkQ2hpbGRyZW5Gcm9tU2VjdGlvbihmb290ZXIsIG1h
eENvbHVtbkNvdW50KTsKLSAgICAKLSAgICBhdXRvKiBheENhY2hlID0gZG9jdW1lbnQoKS0+YXhP
YmplY3RDYWNoZSgpOwotICAgIC8vIG1ha2UgdGhlIGNvbHVtbnMgYmFzZWQgb24gdGhlIG51bWJl
ciBvZiBjb2x1bW5zIGluIHRoZSBmaXJzdCBib2R5Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gbWF4
Q29sdW1uQ291bnQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bj4oKmF4Q2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uKSk7CisKKyAgICAv
LyBTdGVwIDE5OiBGb3IgZWFjaCB0Zm9vdCBlbGVtZW50IGluIHRoZSBsaXN0IG9mIHBlbmRpbmcg
dGZvb3QgZWxlbWVudHMsIGluIHRyZWUgb3JkZXIsCisgICAgLy8gcnVuIHRoZSBhbGdvcml0aG0g
Zm9yIHByb2Nlc3Npbmcgcm93IGdyb3Vwcy4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRmb290RWxl
bWVudCA6IHBlbmRpbmdUZm9vdEVsZW1lbnRzKQorICAgICAgICBwcm9jZXNzUm93R3JvdXAodGZv
b3RFbGVtZW50LmdldCgpKTsKKworICAgIC8vIFRoZSByZW1haW5kZXIgb2YgdGhpcyBmdW5jdGlv
biBpcyB1bnNwZWNpZmllZCB1cGRhdGluZyBvZiBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuCisg
ICAgYWRkQ2hpbGQoY2FjaGUtPmdldE9yQ3JlYXRlKGNhcHRpb25FbGVtZW50LmdldCgpKSwgRGVz
Y2VuZElmSWdub3JlZDo6Tm8pOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHhXaWR0
aDsgKytpKSB7CisgICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbj4oKmNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbikpOwog
ICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7CiAgICAgICAgIGNvbHVtbi5zZXRQYXJl
bnQodGhpcyk7CiAgICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7CkBAIC00NzEsNjYg
KzY2Myw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgdXBk
YXRlQ2hpbGRyZW5Sb2xlcygpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkVGFi
bGVDZWxsQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCogcm93T2JqZWN0LCBIYXNoU2V0PEFjY2Vz
c2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpCi17
Ci0gICAgaWYgKCFyb3dPYmplY3QgfHwgIWlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnJvd09i
amVjdCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIHJvdyA9IGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZVJvdz4oKnJvd09iamVjdCk7Ci0gICAgLy8gV2UgbmVlZCB0byBjaGVjayBl
dmVyeSBjZWxsIGZvciBhIG5ldyByb3csIGJlY2F1c2UgY2VsbCBzcGFucwotICAgIC8vIGNhbiBj
YXVzZSB1cyB0byBtaXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUgZmlyc3QgY29sdW1uLgot
ICAgIGlmIChhcHBlbmRlZFJvd3MuY29udGFpbnMoJnJvdykpCi0gICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICByb3cuc2V0Um93SW5kZXgoc3RhdGljX2Nhc3Q8aW50PihtX3Jvd3Muc2l6ZSgpKSk7
Ci0gICAgbV9yb3dzLmFwcGVuZCgmcm93KTsKLSAgICBhZGRDaGlsZCgmcm93LCBEZXNjZW5kSWZJ
Z25vcmVkOjpObyk7Ci0gICAgYXBwZW5kZWRSb3dzLmFkZCgmcm93KTsKLSAgICAgICAgCi0gICAg
Ly8gc3RvcmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbHVtbnMKLSAgICB1bnNpZ25lZCByb3dD
ZWxsQ291bnQgPSByb3cuY2hpbGRyZW4oKS5zaXplKCk7Ci0gICAgaWYgKHJvd0NlbGxDb3VudCA+
IGNvbHVtbkNvdW50KQotICAgICAgICBjb2x1bW5Db3VudCA9IHJvd0NlbGxDb3VudDsKLX0KLQot
dm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuRnJvbVNlY3Rpb24oUmVuZGVyVGFi
bGVTZWN0aW9uKiB0YWJsZVNlY3Rpb24sIHVuc2lnbmVkJiBtYXhDb2x1bW5Db3VudCkKLXsKLSAg
ICBBU1NFUlQodGFibGVTZWN0aW9uKTsKLSAgICBpZiAoIXRhYmxlU2VjdGlvbikKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIGF1dG8qIGF4Q2FjaGUgPSBkb2N1bWVudCgpLT5heE9iamVjdENh
Y2hlKCk7Ci0gICAgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4gYXBwZW5kZWRSb3dzOwot
ICAgIHVuc2lnbmVkIG51bVJvd3MgPSB0YWJsZVNlY3Rpb24tPm51bVJvd3MoKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBudW1Sb3dzOyArK3Jvd0luZGV4KSB7
Ci0gICAgICAgIAotICAgICAgICBSZW5kZXJUYWJsZVJvdyogcmVuZGVyUm93ID0gdGFibGVTZWN0
aW9uLT5yb3dSZW5kZXJlckF0KHJvd0luZGV4KTsKLSAgICAgICAgaWYgKCFyZW5kZXJSb3cpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QmIHJvd09iamVjdCA9ICpheENhY2hlLT5nZXRPckNyZWF0ZShyZW5kZXJSb3cpOwotICAgICAg
ICAKLSAgICAgICAgLy8gSWYgdGhlIHJvdyBpcyBhbm9ueW1vdXMsIHdlIHNob3VsZCBkaXZlIGRl
ZXBlciBpbnRvIHRoZSBkZXNjZW5kYW50cyB0byB0cnkgdG8gZmluZCBhIHZhbGlkIHJvdy4KLSAg
ICAgICAgaWYgKHJlbmRlclJvdy0+aXNBbm9ueW1vdXMoKSkgewotICAgICAgICAgICAgRGVxdWU8
QWNjZXNzaWJpbGl0eU9iamVjdCo+IHF1ZXVlOwotICAgICAgICAgICAgcXVldWUuYXBwZW5kKCZy
b3dPYmplY3QpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB3aGlsZSAoIXF1ZXVlLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IHF1ZXVl
LnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGlmIChvYmotPm5vZGUoKSAmJiBpczxBY2Nl
c3NpYmlsaXR5VGFibGVSb3c+KCpvYmopKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRhYmxl
Q2VsbENoaWxkKG9iaiwgYXBwZW5kZWRSb3dzLCBtYXhDb2x1bW5Db3VudCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBm
b3IgKGF1dG8qIGNoaWxkID0gb2JqLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKQotICAgICAgICAgICAgICAgICAgICBxdWV1ZS5hcHBlbmQoY2hpbGQp
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFkZFRhYmxlQ2Vs
bENoaWxkKCZyb3dPYmplY3QsIGFwcGVuZGVkUm93cywgbWF4Q29sdW1uQ291bnQpOwotICAgIH0K
LSAgICAKLSAgICBtYXhDb2x1bW5Db3VudCA9IHN0ZDo6bWF4KHRhYmxlU2VjdGlvbi0+bnVtQ29s
dW1ucygpLCBtYXhDb2x1bW5Db3VudCk7Ci19Ci0gICAgCiBBWENvcmVPYmplY3QqIEFjY2Vzc2li
aWxpdHlUYWJsZTo6aGVhZGVyQ29udGFpbmVyKCkKIHsKICAgICBpZiAobV9oZWFkZXJDb250YWlu
ZXIpCkBAIC02NDIsMzAgKzc3NCwxMSBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlOjp0YWJsZUxl
dmVsKCkgY29uc3QKIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29s
dW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQogewogICAgIHVwZGF0ZUNo
aWxkcmVuSWZOZWNlc3NhcnkoKTsKLSAgICBpZiAoY29sdW1uID49IGNvbHVtbkNvdW50KCkgfHwg
cm93ID49IHJvd0NvdW50KCkpCisgICAgaWYgKHJvdyA+PSBtX3Nsb3RHcmlkLnNpemUoKSB8fCBj
b2x1bW4gPj0gbV9zbG90R3JpZFtyb3ddLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgCi0gICAgLy8gSXRlcmF0ZSBiYWNrd2FyZHMgdGhyb3VnaCB0aGUgcm93cyBpbiBjYXNl
IHRoZSBkZXNpcmVkIGNlbGwgaGFzIGEgcm93c3BhbiBhbmQgZXhpc3RzIGluIGEgcHJldmlvdXMg
cm93LgotICAgIGZvciAodW5zaWduZWQgcm93SW5kZXhDb3VudGVyID0gcm93ICsgMTsgcm93SW5k
ZXhDb3VudGVyID4gMDsgLS1yb3dJbmRleENvdW50ZXIpIHsKLSAgICAgICAgdW5zaWduZWQgcm93
SW5kZXggPSByb3dJbmRleENvdW50ZXIgLSAxOwotICAgICAgICBjb25zdCBhdXRvJiBjaGlsZHJl
biA9IG1fcm93c1tyb3dJbmRleF0tPmNoaWxkcmVuKCk7Ci0gICAgICAgIC8vIFNpbmNlIHNvbWUg
Y2VsbHMgbWF5IGhhdmUgY29sc3BhbnMsIHdlIGhhdmUgdG8gY2hlY2sgdGhlIGFjdHVhbCByYW5n
ZSBvZiBlYWNoCi0gICAgICAgIC8vIGNlbGwgdG8gZGV0ZXJtaW5lIHdoaWNoIGlzIHRoZSByaWdo
dCBvbmUuCi0gICAgICAgIGZvciAodW5zaWduZWQgY29sSW5kZXhDb3VudGVyID0gc3RkOjptaW4o
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoaWxkcmVuLnNpemUoKSksIGNvbHVtbiArIDEpOyBjb2xJ
bmRleENvdW50ZXIgPiAwOyAtLWNvbEluZGV4Q291bnRlcikgewotICAgICAgICAgICAgdW5zaWdu
ZWQgY29sSW5kZXggPSBjb2xJbmRleENvdW50ZXIgLSAxOwotICAgICAgICAgICAgQVhDb3JlT2Jq
ZWN0KiBjaGlsZCA9IGNoaWxkcmVuW2NvbEluZGV4XS5nZXQoKTsKLSAgICAgICAgICAgIGlmICgh
Y2hpbGQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGF1dG8gY29s
dW1uUmFuZ2UgPSBjaGlsZC0+Y29sdW1uSW5kZXhSYW5nZSgpOwotICAgICAgICAgICAgYXV0byBy
b3dSYW5nZSA9IGNoaWxkLT5yb3dJbmRleFJhbmdlKCk7Ci0KLSAgICAgICAgICAgIGlmICgoY29s
dW1uID49IGNvbHVtblJhbmdlLmZpcnN0ICYmIGNvbHVtbiA8IChjb2x1bW5SYW5nZS5maXJzdCAr
IGNvbHVtblJhbmdlLnNlY29uZCkpCi0gICAgICAgICAgICAgICAgJiYgKHJvdyA+PSByb3dSYW5n
ZS5maXJzdCAmJiByb3cgPCAocm93UmFuZ2UuZmlyc3QgKyByb3dSYW5nZS5zZWNvbmQpKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7Ci0gICAgICAgIH0KLSAgICB9CiAKKyAgICBpZiAo
QVhJRCBjZWxsSUQgPSBtX3Nsb3RHcmlkW3Jvd11bY29sdW1uXSkKKyAgICAgICAgcmV0dXJuIGF4
T2JqZWN0Q2FjaGUoKS0+b2JqZWN0Rm9ySUQoY2VsbElEKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApAQCAtNzQ2LDQgKzg1OSwxNyBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlOjpheFJvd0Nv
dW50KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6
OmVuc3VyZVJvdyh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBpZiAobV9zbG90R3JpZC5zaXplKCkg
PCBpbmRleCArIDEpCisgICAgICAgIG1fc2xvdEdyaWQuZ3JvdyhpbmRleCArIDEpOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93QW5kQ29sdW1uKHVuc2lnbmVkIHJvd0lu
ZGV4LCB1bnNpZ25lZCBjb2x1bW5JbmRleCkKK3sKKyAgICBlbnN1cmVSb3cocm93SW5kZXgpOwor
ICAgIGlmIChtX3Nsb3RHcmlkW3Jvd0luZGV4XS5zaXplKCkgPCBjb2x1bW5JbmRleCArIDEpCisg
ICAgICAgIG1fc2xvdEdyaWRbcm93SW5kZXhdLmdyb3coY29sdW1uSW5kZXggKyAxKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKaW5kZXggMjc0NmJlMzk1YTI5Li40OTJlOWRkODY4YTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuaApAQCAtMjksMTcgKzI5LDE3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVSb3c7CiBjbGFzcyBIVE1MVGFibGVFbGVtZW50OwotY2xh
c3MgUmVuZGVyVGFibGVTZWN0aW9uOwotICAgIAorCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGUg
OiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxBY2Nlc3NpYmlsaXR5VGFibGU+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0
aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZT4gY3JlYXRlKE5vZGUmKTsKICAgICB2aXJ0dWFsIH5B
Y2Nlc3NpYmlsaXR5VGFibGUoKTsKIAogICAgIHZvaWQgaW5pdCgpIGZpbmFsOwpAQCAtNDcsMTUg
KzQ3LDE1IEBAIHB1YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25z
dCBmaW5hbDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBcmlhVGFibGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZvaWQgYWRk
Q2hpbGRyZW4oKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKSBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZUNoaWxkcmVuUm9sZXMoKTsKIAogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBjb2x1bW5zKCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IHJvd3MoKSBvdmVycmlkZTsKIAotICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50KCkgb3ZlcnJpZGU7
Ci0gICAgdW5zaWduZWQgcm93Q291bnQoKSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBjb2x1bW5D
b3VudCgpIGZpbmFsOworICAgIHVuc2lnbmVkIHJvd0NvdW50KCkgZmluYWw7CiAgICAgaW50IHRh
YmxlTGV2ZWwoKSBjb25zdCBmaW5hbDsKIAogICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IGZpbmFs
OwpAQCAtNzEsMTkgKzcxLDI2IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGFuIG9iamVjdCB0
aGF0IGNvbnRhaW5zLCBhcyBjaGlsZHJlbiwgYWxsIHRoZSBvYmplY3RzIHRoYXQgYWN0IGFzIGhl
YWRlcnMuCiAgICAgQVhDb3JlT2JqZWN0KiBoZWFkZXJDb250YWluZXIoKSBvdmVycmlkZTsKIAot
ICAgIGJvb2wgaXNUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBi
b29sIGlzVGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgLy8gUmV0dXJu
cyB3aGV0aGVyIGl0IGlzIGV4cG9zZWQgYXMgYW4gQWNjZXNzaWJpbGl0eVRhYmxlIHRvIHRoZSBw
bGF0Zm9ybS4KLSAgICBib29sIGlzRXhwb3NhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0V4cG9zYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNFeHBvc2FibGU7IH0KICAg
ICB2b2lkIHJlY29tcHV0ZUlzRXhwb3NhYmxlKCk7CiAKLSAgICBpbnQgYXhDb2x1bW5Db3VudCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBheFJvd0NvdW50KCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgaW50IGF4Q29sdW1uQ291bnQoKSBjb25zdCBmaW5hbDsKKyAgICBpbnQgYXhSb3dDb3VudCgp
IGNvbnN0IGZpbmFsOworCisgICAgVmVjdG9yPFZlY3RvcjxBWElEPj4gc2xvdEdyaWQoKSBmaW5h
bDsKKyAgICB2b2lkIHNldFNsb3RHcmlkRGlydHkoKTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxp
Y2l0IEFjY2Vzc2liaWxpdHlUYWJsZShSZW5kZXJPYmplY3QqKTsKKyAgICBleHBsaWNpdCBBY2Nl
c3NpYmlsaXR5VGFibGUoTm9kZSYpOwogCiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IG1fcm93czsKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9jb2x1bW5zOworICAg
IC8vIDJEIG1hdHJpeCBvZiB0aGUgY2VsbHMgYXNzaWduZWQgdG8gZWFjaCAic2xvdCIgaW4gdGhp
cyB0YWJsZS4KKyAgICAvLyAoIlNsb3QiIGFzIGRlZmluZWQgaGVyZTogaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjY29uY2VwdC1zbG90cykKKyAgICBW
ZWN0b3I8VmVjdG9yPEFYSUQ+PiBtX3Nsb3RHcmlkOwogCiAgICAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IG1faGVhZGVyQ29udGFpbmVyOwogICAgIGJvb2wgbV9pc0V4cG9zYWJsZTsKQEAg
LTkzLDEyICsxMDAsMTUgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBhZGRSb3coQWNjZXNzaWJp
bGl0eVRhYmxlUm93JiwgdW5zaWduZWQsIHVuc2lnbmVkJiBtYXhDb2x1bW5Db3VudCk7CisKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFj
Y2Vzc2liaWxpdHkoKSBjb25zdDsKICAgICB2b2lkIHRpdGxlRWxlbWVudFRleHQoVmVjdG9yPEFj
Y2Vzc2liaWxpdHlUZXh0PiYpIGNvbnN0IGZpbmFsOwogICAgIEhUTUxUYWJsZUVsZW1lbnQqIHRh
YmxlRWxlbWVudCgpIGNvbnN0OwotICAgIHZvaWQgYWRkQ2hpbGRyZW5Gcm9tU2VjdGlvbihSZW5k
ZXJUYWJsZVNlY3Rpb24qLCB1bnNpZ25lZCYgbWF4Q29sdW1uQ291bnQpOwotICAgIHZvaWQgYWRk
VGFibGVDZWxsQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0
eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CisKKyAgICB2
b2lkIGVuc3VyZVJvdyh1bnNpZ25lZCk7CisgICAgdm9pZCBlbnN1cmVSb3dBbmRDb2x1bW4odW5z
aWduZWQgLyogcm93SW5kZXggKi8sIHVuc2lnbmVkIC8qIGNvbHVtbkluZGV4ICovKTsKIAogICAg
IGJvb2wgaGFzTm9uVGFibGVBUklBUm9sZSgpIGNvbnN0OwogICAgIC8vIGlzRGF0YVRhYmxlIGlz
IHdoZXRoZXIgaXQgaXMgZXhwb3NlZCBhcyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgYmVjYXVzZSB0
aGUgaGV1cmlzdGljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAppbmRleCAwMjU5ZmZhNDliYjguLjI4NTAzYTk1ZDA1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNlbGwuY3BwCkBAIC0yOSwxOSArMjksMTMgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCiAKLSNpbmNsdWRlICJBWE9i
amVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCi0jaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCi0j
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIK
LSNpbmNsdWRlICJNYXRoTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5o
IgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJlbmRl
cmVyKQpAQCAtNDksNiArNDMsMTIgQEAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogfQogCitBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKE5vZGUmIG5vZGUpCisgICAgOiBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KG5vZGUpCisgICAgLCBtX2F4Q29sSW5kZXhGcm9tUm93
KC0xKQoreworfQorCiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjp+QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbCgpID0gZGVmYXVsdDsKIAogUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpAQCAtNTYsNiAr
NTYsMTEgQEAgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKHJlbmRlcmVyKSk7CiB9CiAKK1JlZjxBY2Nlc3NpYmls
aXR5VGFibGVDZWxsPiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjcmVhdGUoTm9kZSYgbm9kZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKG5vZGUp
KTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBk
ZWNpc2lvbiA9IGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKTsKQEAgLTY2LDExICs3MSwxMSBAQCBi
b29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkgY29uc3QKICAgICAKICAgICAvLyBJZ25vcmUgYW5vbnltb3VzIHRhYmxlIGNlbGxzIGFzIGxv
bmcgYXMgdGhleSdyZSBub3QgaW4gYSB0YWJsZSAoaWUuIHdoZW4gZGlzcGxheTp0YWJsZSBpcyB1
c2VkKS4KICAgICBSZW5kZXJPYmplY3QqIHJlbmRlclRhYmxlID0gaXM8UmVuZGVyVGFibGVDZWxs
PihyZW5kZXJlcigpKSA/IGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4oKm1fcmVuZGVyZXIpLnRh
YmxlKCkgOiBudWxscHRyOwotICAgIGJvb2wgaW5UYWJsZSA9IHJlbmRlclRhYmxlICYmIHJlbmRl
clRhYmxlLT5ub2RlKCkgJiYgKHJlbmRlclRhYmxlLT5ub2RlKCktPmhhc1RhZ05hbWUodGFibGVU
YWcpIHx8IG5vZGVIYXNSb2xlKHJlbmRlclRhYmxlLT5ub2RlKCksICJncmlkIl9zKSk7CisgICAg
Ym9vbCBpblRhYmxlID0gcmVuZGVyVGFibGUgJiYgcmVuZGVyVGFibGUtPm5vZGUoKSAmJiAocmVu
ZGVyVGFibGUtPm5vZGUoKS0+aGFzVGFnTmFtZSh0YWJsZVRhZykgfHwgbm9kZUhhc0dyaWRSb2xl
KHJlbmRlclRhYmxlLT5ub2RlKCkpKTsKICAgICBpZiAoIW5vZGUoKSAmJiAhaW5UYWJsZSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAotICAgIGlmICghaXNUYWJsZUNlbGwoKSkKKyAg
ICBpZiAoIWlzRXhwb3NlZFRhYmxlQ2VsbCgpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKICAgICAKICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMTgsNyArMTIzLDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGR5
bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHRhYmxlRnJvbVJlbmRlclRyZWUpOwog
fQogICAgIAotYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlQ2VsbCgpIGNvbnN0
Citib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzRXhwb3NlZFRhYmxlQ2VsbCgpIGNvbnN0
CiB7CiAgICAgLy8gSWYgdGhlIHBhcmVudCB0YWJsZSBpcyBhbiBhY2Nlc3NpYmlsaXR5IHRhYmxl
LCB0aGVuIHdlIGFyZSBhIHRhYmxlIGNlbGwuCiAgICAgLy8gVGhpcyB1c2VkIHRvIGNoZWNrIGlm
IHRoZSB1bmlnbm9yZWRQYXJlbnQgd2FzIGEgcm93LCBidXQgdGhhdCBleHBsb2RlZCBwZXJmb3Jt
YW5jZSBpZgpAQCAtMTM2LDcgKzE0MSw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKICAgICBpZiAoZGVmYXVs
dFJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlciB8fCBkZWZhdWx0Um9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyIHx8IGRlZmF1bHRSb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpDZWxsIHx8IGRlZmF1bHRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlk
Q2VsbCkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRSb2xlOwogCi0gICAgaWYgKCFpc1RhYmxlQ2Vs
bCgpKQorICAgIGlmICghaXNFeHBvc2VkVGFibGVDZWxsKCkpCiAgICAgICAgIHJldHVybiBkZWZh
dWx0Um9sZTsKICAgICBpZiAoaXNDb2x1bW5IZWFkZXJDZWxsKCkpCiAgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyOwpAQCAtMTQ4LDcgKzE1MywyMiBAQCBBY2Nl
c3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nlc3NpYmls
aXR5Um9sZSgpCiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzVGFibGVIZWFk
ZXJDZWxsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFt
ZSh0aFRhZyk7CisgICAgYXV0byogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRoVGFn
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0ZFRh
ZykpIHsKKyAgICAgICAgYXV0byogY3VycmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyICYmIGN1cnJlbnQ7IGkrKykgeworICAgICAgICAgICAg
aWYgKGN1cnJlbnQtPmhhc1RhZ05hbWUodGhlYWRUYWcpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE5vZGUoKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNDb2x1bW5IZWFkZXJDZWxsKCkgY29uc3QKQEAgLTMxNyw2OCArMzM3LDI1
IEBAIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cGFyZW50
Um93KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBvd25lclBhcmVudCA9IGFyaWFPd25lZEJ5UGFy
ZW50KCkpCiAgICAgICAgIHJldHVybiBvd25lclBhcmVudDsKLSAgICAKLSAgICBBWENvcmVPYmpl
Y3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlmICghaXM8QWNjZXNz
aWJpbGl0eVRhYmxlUm93PigqcGFyZW50KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ocGFyZW50KTsKKyAgICByZXR1
cm4gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ocGFyZW50T2JqZWN0VW5p
Z25vcmVkKCkpOwogfQogCiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKCkgY29uc3QKIHsKLSAgICBhdXRvKiBwYXJlbnRS
b3cgPSB0aGlzLT5wYXJlbnRSb3coKTsKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiByb3dSYW5nZSB7IHBhcmVudFJvdyA/IHBhcmVudFJvdy0+cm93SW5kZXgoKSA6IDAsIDEgfTsK
LQotICAgIC8vIEFSSUEgMS4xJ3MgYXJpYS1yb3dzcGFuIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCBm
b3IgY2VsbHMgYW5kIGdyaWRjZWxscyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZAotICAgIC8vIGlu
IGEgbmF0aXZlIHRhYmxlLiBCdXQgaWYgd2UgaGF2ZSBhIHZhbGlkIGF1dGhvci1wcm92aWRlZCB2
YWx1ZSBhbmQgZG8gbm90IGhhdmUgYW4gZXhwbGljaXQKLSAgICAvLyBuYXRpdmUgaG9zdCBsYW5n
dWFnZSB2YWx1ZSBmb3IgdGhlIHJvd3NwYW4sIGV4cG9zZSB0aGUgQVJJQSB2YWx1ZS4KLSAgICBy
b3dSYW5nZS5zZWNvbmQgPSBheFJvd1NwYW4oKTsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pihy
b3dSYW5nZS5zZWNvbmQpID09IC0xKSB7Ci0gICAgICAgIC8vIEl0J3MgZmFzdGVyIHRvIGdldCBy
b3dzcGFuIGZyb20gUmVuZGVyVGFibGVDZWxsIGJlY2F1c2UgaXQgaGFzIGJ1aWx0IGluIGNhY2hl
cyB0byBhdm9pZAotICAgICAgICAvLyByZWFkaW5nIGZyb20gdGhlIERPTSwgc28gdHJ5IHRoYXQg
Zmlyc3QuCi0gICAgICAgIGlmIChhdXRvKiByZW5kZXJUYWJsZUNlbGwgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkKLSAgICAgICAgICAgIHJvd1JhbmdlLnNl
Y29uZCA9IHJlbmRlclRhYmxlQ2VsbC0+cm93U3BhbigpOwotICAgICAgICBlbHNlIGlmIChhdXRv
KiB0YWJsZUNlbGxFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxUYWJsZUNlbGxFbGVtZW50
Pihub2RlKCkpKQotICAgICAgICAgICAgcm93UmFuZ2Uuc2Vjb25kID0gc3RkOjptaW48dW5zaWdu
ZWQ+KHRhYmxlQ2VsbEVsZW1lbnQtPnJvd1NwYW4oKSwgbWF4Um93SW5kZXgpOwotI2lmIEVOQUJM
RShNQVRITUwpCi0gICAgICAgIGVsc2UgaWYgKGF1dG8qIG1hdGhNTEVsZW1lbnQgPSBkeW5hbWlj
RG93bmNhc3Q8TWF0aE1MRWxlbWVudD4obm9kZSgpKTsgbWF0aE1MRWxlbWVudCAmJiBtYXRoTUxF
bGVtZW50LT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptdGRUYWcpKQotICAgICAgICAgICAgcm93
UmFuZ2Uuc2Vjb25kID0gc3RkOjptaW48dW5zaWduZWQ+KG1hdGhNTEVsZW1lbnQtPnJvd1NwYW4o
KSwgbWF4Um93SW5kZXgpOwotI2VuZGlmCi0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8g
RGVmYXVsdCBiYWNrIHRvIDEuCi0gICAgICAgICAgICByb3dSYW5nZS5zZWNvbmQgPSAxOwotICAg
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiByb3dSYW5nZTsKKyAgICByZXR1cm4geyBtX3Jvd0lu
ZGV4LCByb3dTcGFuKCkgfTsKIH0KICAgICAKIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdAogewotICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlIHsgMCwgMSB9OwotICAg
IGlmICghaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuIGNv
bHVtblJhbmdlOwotCi0gICAgY29uc3QgUmVuZGVyVGFibGVDZWxsJiBjZWxsID0gZG93bmNhc3Q8
UmVuZGVyVGFibGVDZWxsPigqbV9yZW5kZXJlcik7Ci0gICAgY29sdW1uUmFuZ2UuZmlyc3QgPSBj
ZWxsLnRhYmxlKCktPmNvbFRvRWZmQ29sKGNlbGwuY29sKCkpOwotCi0gICAgLy8gQVJJQSAxLjEn
cyBhcmlhLWNvbHNwYW4gYXR0cmlidXRlIGlzIGludGVuZGVkIGZvciBjZWxscyBhbmQgZ3JpZGNl
bGxzIHdoaWNoIGFyZSBub3QgY29udGFpbmVkCi0gICAgLy8gaW4gYSBuYXRpdmUgdGFibGUuIEJ1
dCBpZiB3ZSBoYXZlIGEgdmFsaWQgYXV0aG9yLXByb3ZpZGVkIHZhbHVlIGFuZCBkbyBub3QgaGF2
ZSBhbiBleHBsaWNpdAotICAgIC8vIG5hdGl2ZSBob3N0IGxhbmd1YWdlIHZhbHVlIGZvciB0aGUg
Y29sc3BhbiwgZXhwb3NlIHRoZSBBUklBIHZhbHVlLgotICAgIGNvbHVtblJhbmdlLnNlY29uZCA9
IGF4Q29sdW1uU3BhbigpOwotICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGNvbHVtblJhbmdlLnNl
Y29uZCkgIT0gLTEpCi0gICAgICAgIHJldHVybiBjb2x1bW5SYW5nZTsKLQotICAgIGNvbHVtblJh
bmdlLnNlY29uZCA9IGNlbGwudGFibGUoKS0+Y29sVG9FZmZDb2woY2VsbC5jb2woKSArIGNlbGwu
Y29sU3BhbigpKSAtIGNvbHVtblJhbmdlLmZpcnN0OwotCi0gICAgcmV0dXJuIGNvbHVtblJhbmdl
OworICAgIHJldHVybiB7IG1fY29sdW1uSW5kZXgsIGNvbFNwYW4oKSB9OwogfQotICAgIAorCiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjp0aXRsZVVJRWxlbWVu
dCgpIGNvbnN0CiB7CiAgICAgLy8gVHJ5IHRvIGZpbmQgaWYgdGhlIGZpcnN0IGNlbGwgaW4gdGhp
cyByb3cgaXMgYSA8dGg+LiBJZiBpdCBpcywKICAgICAvLyB0aGVuIGl0IGNhbiBhY3QgYXMgdGhl
IHRpdGxlIHVpIGVsZW1lbnQuIChUaGlzIGlzIG9ubHkgaW4gdGhlCiAgICAgLy8gY2FzZSB3aGVu
IHRoZSB0YWJsZSBpcyBub3QgYXBwZWFyaW5nIGFzIGFuIEFYVGFibGUuKQotICAgIGlmIChpc1Rh
YmxlQ2VsbCgpIHx8ICFpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpKQorICAgIGlmIChp
c0V4cG9zZWRUYWJsZUNlbGwoKSB8fCAhaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBUYWJsZSBjZWxscyB0aGF0IGFyZSB0
aCBjYW5ub3QgaGF2ZSB0aXRsZSB1aSBlbGVtZW50cywgc2luY2UgYnkgZGVmaW5pdGlvbgpAQCAt
NDE4LDEwICszOTUsOSBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhDb2x1bW5JbmRl
eCgpIGNvbnN0CiAgICAgLy8gIkFSSUEgMS4xOiBJZiB0aGUgc2V0IG9mIGNvbHVtbnMgd2hpY2gg
aXMgcHJlc2VudCBpbiB0aGUgRE9NIGlzIGNvbnRpZ3VvdXMsIGFuZCBpZiB0aGVyZSBhcmUgbm8g
Y2VsbHMgd2hpY2ggc3BhbiBtb3JlIHRoYW4gb25lIHJvdwogICAgIC8vIG9yIGNvbHVtbiBpbiB0
aGF0IHNldCwgdGhlbiBhdXRob3JzIG1heSBwbGFjZSBhcmlhLWNvbGluZGV4IG9uIGVhY2ggcm93
LCBzZXR0aW5nIHRoZSB2YWx1ZSB0byB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNvbHVtbiBvZiB0
aGUgc2V0LiIKICAgICAvLyBIZXJlLCB3ZSBsZXQgaXRzIHBhcmVudCByb3cgdG8gc2V0IGl0cyBp
bmRleCBiZWZvcmVoYW5kLCBzbyB3ZSBkb24ndCBoYXZlIHRvIGdvIHRocm91Z2ggdGhlIHNpYmxp
bmdzIHRvIGNhbGN1bGF0ZSB0aGUgaW5kZXguCi0gICAgQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBw
YXJlbnRSb3cgPSB0aGlzLT5wYXJlbnRSb3coKTsKLSAgICBpZiAocGFyZW50Um93ICYmIG1fYXhD
b2xJbmRleEZyb21Sb3cgIT0gLTEpCisgICAgaWYgKG1fYXhDb2xJbmRleEZyb21Sb3cgIT0gLTEg
JiYgcGFyZW50Um93KCkpCiAgICAgICAgIHJldHVybiBtX2F4Q29sSW5kZXhGcm9tUm93OwotICAg
IAorCiAgICAgcmV0dXJuIC0xOwogfQogICAgIApAQCAtNDM4LDYgKzQxNCwzMyBAQCBpbnQgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dJbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIC0xOwog
fQogCit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dTcGFuKCkgY29uc3QKK3sK
KyAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIEFSSUEgc3BlYywgIklmIGFyaWEtcm93c3BhbiBpcyB1
c2VkIG9uIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBob3N0IGxhbmd1YWdlCisgICAgLy8gcHJv
dmlkZXMgYW4gZXF1aXZhbGVudCBhdHRyaWJ1dGUsIHVzZXIgYWdlbnRzIG11c3QgaWdub3JlIHRo
ZSB2YWx1ZSBvZiBhcmlhLXJvd3NwYW4uIgorICAgIGlmIChhdXRvIHJvd1NwYW4gPSBwYXJzZUhU
TUxJbnRlZ2VyKGdldEF0dHJpYnV0ZShyb3dzcGFuQXR0cikpOyByb3dTcGFuICYmICpyb3dTcGFu
ID49IDEpIHsKKyAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2UvdGFibGVzLmh0bWwKKyAgICAgICAgLy8gSWYgcm93c3BhbiBpcyBncmVhdGVyIHRoYW4gNjU1
MzQsIGxldCBpdCBiZSA2NTUzNCBpbnN0ZWFkLgorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3Rk
OjptYXgoKnJvd1NwYW4sIDEpLCA2NTUzNCk7CisgICAgfQorICAgIGlmIChhdXRvIGFyaWFSb3dT
cGFuID0gcGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXJpYV9yb3dzcGFuQXR0cikpOyBh
cmlhUm93U3BhbiAmJiAqYXJpYVJvd1NwYW4gPj0gMSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWlu
KHN0ZDo6bWF4KCphcmlhUm93U3BhbiwgMSksIDY1NTM0KTsKKyAgICByZXR1cm4gMTsKK30KKwor
dW5zaWduZWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sU3BhbigpIGNvbnN0Cit7CisgICAg
aWYgKGF1dG8gY29sU3BhbiA9IHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGNvbHNwYW5B
dHRyKSk7IGNvbFNwYW4gJiYgKmNvbFNwYW4gPj0gMSkgeworICAgICAgICAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS90YWJsZXMuaHRtbAorICAgICAgICAvLyBJZiBj
b2xzcGFuIGlzIGdyZWF0ZXIgdGhhbiAxMDAwLCBsZXQgaXQgYmUgMTAwMCBpbnN0ZWFkLgorICAg
ICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgoKmNvbFNwYW4sIDEpLCAxMDAwKTsKKyAgICB9
CisgICAgaWYgKGF1dG8gYXJpYUNvbFNwYW4gPSBwYXJzZUhUTUxJbnRlZ2VyKGdldEF0dHJpYnV0
ZShhcmlhX2NvbHNwYW5BdHRyKSk7IGFyaWFDb2xTcGFuICYmICphcmlhQ29sU3BhbiA+PSAxKQor
ICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgoKmFyaWFDb2xTcGFuLCAxKSwgMTAwMCk7
CisgICAgcmV0dXJuIDE7Cit9CisKKyNpZiBVU0UoQVRTUEkpCiBpbnQgQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6YXhDb2x1bW5TcGFuKCkgY29uc3QKIHsKICAgICAvLyBBY2NvcmRpbmcgdG8gdGhl
IEFSSUEgc3BlYywgIklmIGFyaWEtY29scGFuIGlzIHVzZWQgb24gYW4gZWxlbWVudCBmb3Igd2hp
Y2ggdGhlIGhvc3QgbGFuZ3VhZ2UKQEAgLTQ2OCw1ICs0NzEsNiBAQCBpbnQgQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6YXhSb3dTcGFuKCkgY29uc3QKIAogICAgIHJldHVybiAtMTsKIH0KLSAgICAK
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCmluZGV4IGY0MGI4MmRj
MTRhMi4uNmYwYjJhZWQ4M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaApAQCAtMzgsMzYgKzM4LDQ5IEBAIGNsYXNz
IEFjY2Vzc2liaWxpdHlUYWJsZVJvdzsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwgOiBw
dWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgc3Rh
dGljIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPiBjcmVhdGUoTm9kZSYpOwogICAgIHZpcnR1
YWwgfkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwoKTsKKyAgICBib29sIGlzVGFibGVDZWxsKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgaXNFeHBvc2VkVGFibGVDZWxsKCkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBpc1RhYmxlSGVhZGVyQ2VsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNDb2x1bW5IZWFkZXJD
ZWxsKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1Jvd0hlYWRlckNlbGwoKSBjb25zdCBv
dmVycmlkZTsKIAorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRhYmxlKiBwYXJlbnRUYWJsZSgp
IGNvbnN0OworCiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFu
IG9mIHRoZSBjZWxsLgotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd0luZGV4
UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiByb3dJbmRleFJhbmdlKCkgY29uc3QgZmluYWw7CiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQg
bG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIHRoZSBjZWxsLgotICAgIHN0ZDo6cGFpcjx1bnNp
Z25lZCwgdW5zaWduZWQ+IGNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5JbmRleFJhbmdlKCkgY29uc3QgZmlu
YWw7CiAKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29sdW1uSGVhZGVycygpIG92
ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dIZWFkZXJzKCkgb3Zl
cnJpZGU7CiAKICAgICBpbnQgYXhDb2x1bW5JbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGlu
dCBheFJvd0luZGV4KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgY29sU3BhbigpIGNv
bnN0OworICAgIHVuc2lnbmVkIHJvd1NwYW4oKSBjb25zdDsKKyAgICB2b2lkIHNldEFYQ29sSW5k
ZXhGcm9tUm93KGludCBpbmRleCkgeyBtX2F4Q29sSW5kZXhGcm9tUm93ID0gaW5kZXg7IH0KKwor
ICAgIHZvaWQgc2V0Um93SW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9yb3dJbmRleCA9IGluZGV4
OyB9CisgICAgdm9pZCBzZXRDb2x1bW5JbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2NvbHVtbklu
ZGV4ID0gaW5kZXg7IH0KKworI2lmIFVTRShBVFNQSSkKICAgICBpbnQgYXhDb2x1bW5TcGFuKCkg
Y29uc3Q7CiAgICAgaW50IGF4Um93U3BhbigpIGNvbnN0OwotICAgIHZvaWQgc2V0QVhDb2xJbmRl
eEZyb21Sb3coaW50IGluZGV4KSB7IG1fYXhDb2xJbmRleEZyb21Sb3cgPSBpbmRleDsgfQorI2Vu
ZGlmCiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKFJl
bmRlck9iamVjdCopOworICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwoTm9kZSYp
OwogCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBwYXJlbnRSb3coKSBjb25zdDsKLSAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZSogcGFyZW50VGFibGUoKSBjb25zdDsKICAgICBBY2Nl
c3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIGZpbmFsOwogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgaW50IG1fcm93SW5kZXg7CisgICAgdW5zaWduZWQgbV9yb3dJbmRleCB7IDAgfTsK
KyAgICB1bnNpZ25lZCBtX2NvbHVtbkluZGV4IHsgMCB9OwogICAgIGludCBtX2F4Q29sSW5kZXhG
cm9tUm93OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCmluZGV4IGFjNDJhZDMwNGIwZC4u
Njg2YjM2NWQyOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCkBAIC0yOSwxNyArMjksOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIgog
Ci0jaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwuaCIKLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgotI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgi
Ci0jaW5jbHVkZSAiUmVuZGVyVGFibGVTZWN0aW9uLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRhYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6QWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uKCkgPSBkZWZhdWx0OwogCkBAIC03MSwxMDIgKzYzLDE3IEBAIExheW91dFJlY3QgQWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjplbGVtZW50UmVjdCgpIGNvbnN0CiAKIEFYQ29yZU9iamVj
dCogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpjb2x1bW5IZWFkZXIoKQogewotICAgIGlmICgh
bV9wYXJlbnQgfHwgIWlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KQotICAgICAgICB8
fCAhbV9wYXJlbnQtPmlzRXhwb3NhYmxlKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fcGFyZW50LT5yZW5kZXJlcigpOwotICAgIGlm
ICghcmVuZGVyZXIpCisgICAgYXV0byogcGFyZW50VGFibGUgPSBkeW5hbWljRG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlPihtX3BhcmVudC5nZXQoKSk7CisgICAgaWYgKCFwYXJlbnRUYWJsZSB8
fCAhcGFyZW50VGFibGUtPmlzRXhwb3NhYmxlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgYXV0byYgcGFyZW50VGFibGUgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpt
X3BhcmVudCk7Ci0KLSAgICBpZiAocGFyZW50VGFibGUuaXNBcmlhVGFibGUoKSkgewotICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNlbGwgOiBjaGlsZHJlbigpKSB7Ci0gICAgICAgICAgICBpZiAo
Y2VsbC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlcikKLSAg
ICAgICAgICAgICAgICByZXR1cm4gY2VsbC5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGZvciAoY29uc3QgYXV0byYgY2VsbCA6IGNoaWxkcmVuKCkpIHsK
KyAgICAgICAgaWYgKGNlbGwtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1
bW5IZWFkZXIpCisgICAgICAgICAgICByZXR1cm4gY2VsbC5nZXQoKTsKICAgICB9Ci0KLSAgICBp
ZiAoIWlzPFJlbmRlclRhYmxlPigqcmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAKLSAgICBSZW5kZXJUYWJsZSYgdGFibGUgPSBkb3duY2FzdDxSZW5kZXJUYWJsZT4oKnJl
bmRlcmVyKTsKLQotICAgIC8vIHRyeSB0aGUgPHRoZWFkPiBzZWN0aW9uIGZpcnN0LiB0aGlzIGRv
ZXNuJ3QgcmVxdWlyZSB0aCB0YWdzCi0gICAgaWYgKGF1dG8qIGhlYWRlck9iamVjdCA9IGhlYWRl
ck9iamVjdEZvclNlY3Rpb24odGFibGUuaGVhZGVyKCksIGZhbHNlKSkKLSAgICAgICAgcmV0dXJu
IGhlYWRlck9iamVjdDsKLSAgICAKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGJvZHlTZWN0aW9u
ID0gdGFibGUuZmlyc3RCb2R5KCk7Ci0gICAgd2hpbGUgKGJvZHlTZWN0aW9uICYmIGJvZHlTZWN0
aW9uLT5pc0Fub255bW91cygpKQotICAgICAgICBib2R5U2VjdGlvbiA9IHRhYmxlLnNlY3Rpb25C
ZWxvdyhib2R5U2VjdGlvbiwgU2tpcEVtcHR5U2VjdGlvbnMpOwotICAgIAotICAgIC8vIG5vdyB0
cnkgZm9yIDx0aD4gdGFncyBpbiB0aGUgZmlyc3QgYm9keS4gSWYgdGhlIGZpcnN0IGJvZHkgaXMg
Ci0gICAgcmV0dXJuIGhlYWRlck9iamVjdEZvclNlY3Rpb24oYm9keVNlY3Rpb24sIHRydWUpOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5VGFibGVDb2x1bW46OmhlYWRlck9iamVjdEZvclNlY3Rpb24oUmVuZGVyVGFibGVTZWN0aW9u
KiBzZWN0aW9uLCBib29sIHRoVGFnUmVxdWlyZWQpCi17Ci0gICAgaWYgKCFzZWN0aW9uKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICB1bnNpZ25lZCBudW1Db2xzID0gc2VjdGlv
bi0+bnVtQ29sdW1ucygpOwotICAgIGlmIChtX2NvbHVtbkluZGV4ID49IG51bUNvbHMpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIGlmICghc2VjdGlvbi0+bnVtUm93cygpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwg
PSBudWxscHRyOwotICAgIC8vIGFsc28gYWNjb3VudCBmb3IgY2VsbHMgdGhhdCBoYXZlIGEgc3Bh
bgotICAgIGZvciAoaW50IHRlc3RDb2wgPSBtX2NvbHVtbkluZGV4OyB0ZXN0Q29sID49IDA7IC0t
dGVzdENvbCkgewotICAgICAgICAKLSAgICAgICAgLy8gUnVuIGRvd24gdGhlIHJvd3MgaW4gY2Fz
ZSBpbml0aWFsIHJvd3MgYXJlIGludmFsaWQgKGxpa2Ugd2hlbiBhIDxjYXB0aW9uPiBpcyB1c2Vk
KS4KLSAgICAgICAgdW5zaWduZWQgcm93Q291bnQgPSBzZWN0aW9uLT5udW1Sb3dzKCk7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgdGVzdFJvdyA9IDA7IHRlc3RSb3cgPCByb3dDb3VudDsgdGVzdFJv
dysrKSB7Ci0gICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwqIHRlc3RDZWxsID0gc2VjdGlvbi0+
cHJpbWFyeUNlbGxBdCh0ZXN0Um93LCB0ZXN0Q29sKTsKLSAgICAgICAgICAgIC8vIE5vIGNlbGwg
YXQgdGhpcyBpbmRleCwga2VlcCBjaGVja2luZyBtb3JlIHJvd3MgYW5kIGNvbHVtbnMuCi0gICAg
ICAgICAgICBpZiAoIXRlc3RDZWxsKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICAvLyBJZiB3ZSd2ZSByZWFjaGVkIGEgY2VsbCB0aGF0IGRvZXNu
J3QgZXZlbiBvdmVybGFwIG91ciBjb2x1bW4gaXQgY2FuJ3QgYmUgdGhlIGhlYWRlci4KLSAgICAg
ICAgICAgIGlmICgodGVzdENlbGwtPmNvbCgpICsgKHRlc3RDZWxsLT5jb2xTcGFuKCktMSkpIDwg
bV9jb2x1bW5JbmRleCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgTm9kZSogdGVzdENlbGxOb2RlID0gdGVzdENlbGwtPmVsZW1lbnQoKTsKLSAgICAg
ICAgICAgIC8vIElmIHRoZSBSZW5kZXJUYWJsZUNlbGwgZG9lc24ndCBoYXZlIGFuIGVsZW1lbnQg
YmVjYXVzZSBpdHMgYW5vbnltb3VzLAotICAgICAgICAgICAgLy8gdHJ5IHRvIHNlZSBpZiB3ZSBj
YW4gZmluZCB0aGUgb3JpZ2luYWwgY2VsbCBlbGVtZW50IHRvIGNoZWNrIGlmIGl0IGhhcyBhIDx0
aD4gdGFnLgotICAgICAgICAgICAgaWYgKCF0ZXN0Q2VsbE5vZGUgJiYgdGVzdENlbGwtPmlzQW5v
bnltb3VzKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9
IHRlc3RDZWxsLT5wYXJlbnQoKSA/IHRlc3RDZWxsLT5wYXJlbnQoKS0+ZWxlbWVudCgpIDogbnVs
bHB0cikgewotICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50RWxlbWVudC0+aGFzVGFnTmFt
ZSh0clRhZykgJiYgdGVzdENvbCA8IHN0YXRpY19jYXN0PGludD4ocGFyZW50RWxlbWVudC0+Y291
bnRDaGlsZE5vZGVzKCkpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENlbGxOb2RlID0g
cGFyZW50RWxlbWVudC0+dHJhdmVyc2VUb0NoaWxkQXQodGVzdENvbCk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIXRlc3RDZWxsTm9kZSkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gSWYg
dGggaXMgcmVxdWlyZWQsIGJ1dCB3ZSBmb3VuZCBhbiBlbGVtZW50IHRoYXQgZG9lc24ndCBoYXZl
IGEgdGggdGFnLCB3ZSBjYW4gc3RvcCBsb29raW5nLgotICAgICAgICAgICAgaWYgKHRoVGFnUmVx
dWlyZWQgJiYgIXRlc3RDZWxsTm9kZS0+aGFzVGFnTmFtZSh0aFRhZykpCi0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNlbGwgPSB0ZXN0Q2VsbDsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmICghY2VsbCkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvKiBjZWxsT2JqZWN0ID0gYXhPYmpl
Y3RDYWNoZSgpLT5nZXRPckNyZWF0ZShjZWxsKTsKLSAgICBpZiAoIWNlbGxPYmplY3QgfHwgY2Vs
bE9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgCi0gICAgcmV0dXJuIGNlbGxPYmplY3Q7Ci19Ci0gICAgCiBib29sIEFjY2Vz
c2liaWxpdHlUYWJsZUNvbHVtbjo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dAogewogICAgIGlmICghbV9wYXJlbnQpCkBAIC0xODIsMjIgKzg5LDE4IEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
CiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6YWRkQ2hpbGRyZW4oKQogewogICAgIEFT
U0VSVCghbV9jaGlsZHJlbkluaXRpYWxpemVkKTsgCi0gICAgCiAgICAgbV9jaGlsZHJlbkluaXRp
YWxpemVkID0gdHJ1ZTsKLSAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZT4obV9wYXJlbnQp
KQotICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBwYXJlbnRUYWJsZSA9IGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFyZW50KTsKLSAgICBpZiAoIXBhcmVudFRhYmxlLmlzRXhw
b3NhYmxlKCkpCisgICAgYXV0byogcGFyZW50VGFibGUgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlPihtX3BhcmVudC5nZXQoKSk7CisgICAgaWYgKCFwYXJlbnRUYWJsZSB8fCAh
cGFyZW50VGFibGUtPmlzRXhwb3NhYmxlKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBp
bnQgbnVtUm93cyA9IHBhcmVudFRhYmxlLnJvd0NvdW50KCk7Ci0gICAgCisKKyAgICBpbnQgbnVt
Um93cyA9IHBhcmVudFRhYmxlLT5yb3dDb3VudCgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtUm93czsgKytpKSB7Ci0gICAgICAgIGF1dG8qIGNlbGwgPSBwYXJlbnRUYWJsZS5jZWxsRm9y
Q29sdW1uQW5kUm93KG1fY29sdW1uSW5kZXgsIGkpOworICAgICAgICBhdXRvKiBjZWxsID0gcGFy
ZW50VGFibGUtPmNlbGxGb3JDb2x1bW5BbmRSb3cobV9jb2x1bW5JbmRleCwgaSk7CiAgICAgICAg
IGlmICghY2VsbCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICAv
LyBtYWtlIHN1cmUgdGhlIGxhc3Qgb25lIGlzbid0IHRoZSBzYW1lIGFzIHRoaXMgb25lIChyb3dz
cGFuIGNlbGxzKQogICAgICAgICBpZiAobV9jaGlsZHJlbi5zaXplKCkgPiAwICYmIG1fY2hpbGRy
ZW4ubGFzdCgpID09IGNlbGwpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCmlu
ZGV4IDZiMWFjY2QwZjUwNi4uYjA1YjI5MzhlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKQEAgLTI5LDgg
KzI5LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU1vY2tPYmpl
Y3QuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKLSNpbmNsdWRlICJJbnRSZWN0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKQEAgLTU2LDcgKzU0LDYgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4oKTsKICAgICAKLSAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJPYmplY3RGb3JTZWN0aW9uKFJlbmRlclRhYmxlU2Vj
dGlvbiosIGJvb2wgdGhUYWdSZXF1aXJlZCk7CiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCmluZGV4IDVlM2JhYmUz
NjZjMi4uMGEzYmMzNjEyZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCkBAIC0yOSwyNCArMjksMjUgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKIAot
I2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCi0jaW5jbHVkZSAiSFRNTFRhYmxlUm93RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgotI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgotI2luY2x1ZGUgIlJlbmRl
clRhYmxlUm93LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKLSAgICAKKwogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpBY2Nlc3NpYmls
aXR5VGFibGVSb3coUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICA6IEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QocmVuZGVyZXIpCiB7CiB9CiAKK0FjY2Vzc2liaWxpdHlUYWJsZVJvdzo6QWNj
ZXNzaWJpbGl0eVRhYmxlUm93KE5vZGUmIG5vZGUpCisgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0KG5vZGUpCit7Cit9CisKIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6fkFjY2Vzc2liaWxp
dHlUYWJsZVJvdygpID0gZGVmYXVsdDsKIAogUmVmPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4gQWNj
ZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTU0
LDYgKzU1LDExIEBAIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+IEFjY2Vzc2liaWxpdHlUYWJs
ZVJvdzo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzaWJpbGl0eVRhYmxlUm93KHJlbmRlcmVyKSk7CiB9CiAKK1JlZjxBY2Nlc3Np
YmlsaXR5VGFibGVSb3c+IEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6Y3JlYXRlKE5vZGUmIG5vZGUp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVRhYmxlUm93KG5vZGUp
KTsKK30KKwogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpkZXRlcm1p
bmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiB7CiAgICAgaWYgKCFpc1RhYmxlUm93KCkpCkBAIC0xMTMs
MTkgKzExOSwxOSBAQCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6
cGFyZW50VGFibGUoKSBjb25zdAogQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OmhlYWRlck9iamVjdCgpCiB7CiAgICAgY29uc3QgYXV0byYgcm93Q2hpbGRyZW4gPSBjaGlsZHJl
bigpOwotICAgIGlmICghcm93Q2hpbGRyZW4uc2l6ZSgpKQorICAgIGlmIChyb3dDaGlsZHJlbi5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8qIGNlbGwg
PSByb3dDaGlsZHJlblswXS5nZXQoKTsKLSAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw+KGNlbGwpIHx8ICFjZWxsLT5ub2RlKCkgfHwgIWNlbGwtPm5vZGUoKS0+aGFzVGFnTmFtZSh0
aFRhZykpCisgICAgYXV0byogZmlyc3RDZWxsID0gcm93Q2hpbGRyZW5bMF0uZ2V0KCk7CisgICAg
aWYgKCFmaXJzdENlbGwgfHwgIWZpcnN0Q2VsbC0+bm9kZSgpIHx8ICFmaXJzdENlbGwtPm5vZGUo
KS0+aGFzVGFnTmFtZSh0aFRhZykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAg
ICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHJvdyBoZWFkZXIgaXMgbm90IHBhcnQgb2YgYW4gZW50aXJl
IHJvdyBvZiBoZWFkZXJzLgogICAgIC8vIEluIHRoYXQgY2FzZSwgaXQgaXMgdW5saWtlbHkgdGhp
cyBpcyBhIHJvdyBoZWFkZXIuCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHJvd0NoaWxk
cmVuKSB7CiAgICAgICAgIC8vIFdlIGZvdW5kIGEgbm9uLWhlYWRlciBjZWxsLCBzbyB0aGlzIGlz
IG5vdCBhbiBlbnRpcmUgcm93IG9mIGhlYWRlcnMgLS0gcmV0dXJuIHRoZSBvcmlnaW5hbCBoZWFk
ZXIgY2VsbC4KICAgICAgICAgaWYgKGNoaWxkLT5ub2RlKCkgJiYgIWNoaWxkLT5ub2RlKCktPmhh
c1RhZ05hbWUodGhUYWcpKQotICAgICAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgICAgICAgICBy
ZXR1cm4gZmlyc3RDZWxsOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCmlu
ZGV4IDk1MzU4Y2YyMjZhNC4uZWRiZGFjNzg1ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKQEAgLTM3LDYgKzM3LDcg
QEAgY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlUm93
IDogcHVibGljIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlUm93PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAg
c3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+IGNyZWF0ZShOb2RlJik7CiAgICAgdmly
dHVhbCB+QWNjZXNzaWJpbGl0eVRhYmxlUm93KCk7CiAKICAgICAvLyByZXRyaWV2ZXMgdGhlICJy
b3ciIGhlYWRlciAoYSB0aCB0YWcgaW4gdGhlIHJpZ2h0bW9zdCBjb2x1bW4pCkBAIC01Nyw2ICs1
OCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlU
YWJsZVJvdyhSZW5kZXJPYmplY3QqKTsKKyAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VGFibGVS
b3coTm9kZSYpOwogCiAgICAgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0
eVJvbGUoKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0c3BpLmNwcApp
bmRleCA4NTVkYTBlMzcwZjcuLmQ1NTY1MzU1NjY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNwaS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0VGFibGVBdHNwaS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgR0RCdXNJbnRlcmZhY2VWVGFibGUg
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzX3RhYmxlRnVuY3Rpb25zID0gewogICAgICAgICAg
ICAgYXV0byByb3cgPSBhdHNwaU9iamVjdC0+cm93QXRJbmRleChpbmRleCk7CiAgICAgICAgICAg
ICBhdXRvIGNvbHVtbiA9IGF0c3BpT2JqZWN0LT5jb2x1bW5BdEluZGV4KGluZGV4KTsKICAgICAg
ICAgICAgIGF1dG8qIGNlbGwgPSBhdHNwaU9iamVjdC0+bV9jb3JlT2JqZWN0ID8gYXRzcGlPYmpl
Y3QtPm1fY29yZU9iamVjdC0+Y2VsbEZvckNvbHVtbkFuZFJvdygqY29sdW1uLCAqcm93KSA6IG51
bGxwdHI7Ci0gICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVl
KGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihiaWlpaWIpIiwgY2VsbCAmJiBjZWxsLT5pc1Rh
YmxlQ2VsbCgpID8gVFJVRSA6IEZBTFNFLAorICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZv
Y2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIoYmlpaWliKSIs
IGNlbGwgJiYgY2VsbC0+aXNFeHBvc2VkVGFibGVDZWxsKCkgPyBUUlVFIDogRkFMU0UsCiAgICAg
ICAgICAgICAgICAgcm93LnZhbHVlX29yKC0xKSwgY29sdW1uLnZhbHVlX29yKC0xKSwgcm93ICYm
IGNvbHVtbiA/IGF0c3BpT2JqZWN0LT5yb3dFeHRlbnQoKnJvdywgKmNvbHVtbikgOiAtMSwKICAg
ICAgICAgICAgICAgICByb3cgJiYgY29sdW1uID8gYXRzcGlPYmplY3QtPmNvbHVtbkV4dGVudCgq
cm93LCAqY29sdW1uKSA6IC0xLCBGQUxTRSkpOwogICAgICAgICB9IGVsc2UgaWYgKCFnX3N0cmNt
cDAobWV0aG9kTmFtZSwgIkdldFNlbGVjdGVkUm93cyIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNw
aS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlP
YmplY3RUYWJsZUNlbGxBdHNwaS5jcHAKaW5kZXggZDRhNDUyYjVjYjBjLi4xMGEyZWUzOWJiNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJp
bGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNwaS5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgR0RCdXNJbnRlcmZhY2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
OjpzX3RhYmxlQ2VsbEZ1bmN0aW9ucyA9IHsKICAgICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRf
bmV3X2ludDMyKGF0c3BpT2JqZWN0LT5yb3dTcGFuKCkpOwogICAgICAgICBpZiAoIWdfc3RyY21w
MChwcm9wZXJ0eU5hbWUsICJUYWJsZSIpKSB7CiAgICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9
IGF0c3BpT2JqZWN0LT5tX2NvcmVPYmplY3Q7Ci0gICAgICAgICAgICBpZiAoIWF4T2JqZWN0IHx8
ICFheE9iamVjdC0+aXNUYWJsZUNlbGwoKSkKKyAgICAgICAgICAgIGlmICghYXhPYmplY3QgfHwg
IWF4T2JqZWN0LT5pc0V4cG9zZWRUYWJsZUNlbGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5udWxsUmVmZXJlbmNlKCk7CiAKICAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSogd3JhcHBlciA9IGF0c3BpT2JqZWN0LnB0
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBmYWQ5MTFl
NjYyYjUuLjljZDQwZDlmZjkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KQEAgLTEyODYsNyArMTI4Niw3IEBAIC0gKEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqKXRh
YmxlQ2VsbFBhcmVudAogewogICAgIC8vIEZpbmQgaWYgdGhpcyBlbGVtZW50IGlzIGluIGEgdGFi
bGUgY2VsbC4KICAgICBpZiAoQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5Ojpm
aW5kQW5jZXN0b3I8QVhDb3JlT2JqZWN0Pigqc2VsZi5heEJhY2tpbmdPYmplY3QsIHRydWUsIFtd
IChjb25zdCBBWENvcmVPYmplY3QmIG9iamVjdCkgewotICAgICAgICByZXR1cm4gb2JqZWN0Lmlz
VGFibGVDZWxsKCk7CisgICAgICAgIHJldHVybiBvYmplY3QuaXNFeHBvc2VkVGFibGVDZWxsKCk7
CiAgICAgfSkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsKj4ocGFyZW50KTsKICAgICByZXR1cm4gbmlsOwpAQCAtMTM0Nyw3ICsxMzQ3LDcgQEAgLSAo
TlNBcnJheSAqKWFjY2Vzc2liaWxpdHlIZWFkZXJFbGVtZW50cwogICAgIC8vIFdlIHNob3VsZCBj
b25zaWRlciB0aGUgY2FzZXMgd2hlcmUgdGhlIHJvdyBudW1iZXIgZG9lcyBOT1QgbWF0Y2ggdGhl
IGluZGV4IGluCiAgICAgLy8gcm93SGVhZGVycywgdGhlIG1vc3QgY29tbW9uIGNhc2UgaXMgd2hl
biByb3cwL2NvbDAgZG9lcyBub3QgaGF2ZSBhIGhlYWRlci4KICAgICBmb3IgKGNvbnN0IGF1dG8m
IHJvd0hlYWRlciA6IHJvd0hlYWRlcnMpIHsKLSAgICAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsPigqcm93SGVhZGVyKSkKKyAgICAgICAgaWYgKCFyb3dIZWFkZXItPmlzRXhwb3Nl
ZFRhYmxlQ2VsbCgpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGF1dG8gcm93SGVhZGVy
UmFuZ2UgPSByb3dIZWFkZXItPnJvd0luZGV4UmFuZ2UoKTsKICAgICAgICAgaWYgKHJvd1Jhbmdl
SW5kZXggPj0gcm93SGVhZGVyUmFuZ2UuZmlyc3QgJiYgcm93UmFuZ2VJbmRleCA8IHJvd0hlYWRl
clJhbmdlLmZpcnN0ICsgcm93SGVhZGVyUmFuZ2Uuc2Vjb25kKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwCmluZGV4IDQ2NWQ0ZWJhMTE1Ni4uMWY1OTFkYzMxZTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmNwcApAQCAtMTk3LDE3ICsxOTcsMTYgQEAgdm9pZCBBWElzb2xhdGVkT2Jq
ZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4m
IGF4T2IKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzU2VsZWN0
ZWRSb3dzLCBvYmplY3Quc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSk7CiAgICAgICAgIHNldE9iamVj
dFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb2x1bW5zLCBvYmplY3QuY29sdW1ucygp
KTsKICAgICAgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJvd3Ms
IG9iamVjdC5yb3dzKCkpOwotICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29s
dW1uQ291bnQsIG9iamVjdC5jb2x1bW5Db3VudCgpKTsKLSAgICAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OlJvd0NvdW50LCBvYmplY3Qucm93Q291bnQoKSk7CiAgICAgICAgIHNldE9i
amVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDZWxscywgb2JqZWN0LmNlbGxzKCkp
OwogICAgICAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VmlzaWJs
ZVJvd3MsIG9iamVjdC52aXNpYmxlUm93cygpKTsKICAgICAgICAgc2V0T2JqZWN0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkhlYWRlckNvbnRhaW5lciwgb2JqZWN0LmhlYWRlckNvbnRhaW5lcigp
KTsKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFYQ29sdW1uQ291bnQsIG9i
amVjdC5heENvbHVtbkNvdW50KCkpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFt
ZTo6QVhSb3dDb3VudCwgb2JqZWN0LmF4Um93Q291bnQoKSk7CisgICAgICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpTbG90R3JpZCwgb2JqZWN0LnNsb3RHcmlkKCkpOwogICAgIH0KIAot
ICAgIGlmIChvYmplY3QuaXNUYWJsZUNlbGwoKSkgewotICAgICAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6SXNUYWJsZUNlbGwsIHRydWUpOworICAgIGlmIChvYmplY3QuaXNFeHBvc2Vk
VGFibGVDZWxsKCkpIHsKKyAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OklzRXhw
b3NlZFRhYmxlQ2VsbCwgdHJ1ZSk7CiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1l
OjpDb2x1bW5JbmRleFJhbmdlLCBvYmplY3QuY29sdW1uSW5kZXhSYW5nZSgpKTsKICAgICAgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJvd0luZGV4UmFuZ2UsIG9iamVjdC5yb3dJbmRl
eFJhbmdlKCkpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVhDb2x1bW5J
bmRleCwgb2JqZWN0LmF4Q29sdW1uSW5kZXgoKSk7CkBAIC00OTEsMTUgKzQ5MCwyMCBAQCBib29s
IEFYSXNvbGF0ZWRPYmplY3Q6OmlzRGV0YWNoZWRGcm9tUGFyZW50KCkKIAogQVhDb3JlT2JqZWN0
KiBBWElzb2xhdGVkT2JqZWN0OjpjZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbklu
ZGV4LCB1bnNpZ25lZCByb3dJbmRleCkKIHsKLSAgICBBWElEIGNlbGxJRCA9IEFjY2Vzc2liaWxp
dHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVhZDxBWElEPihbJmNvbHVtbkluZGV4LCAmcm93
SW5kZXgsIHRoaXNdICgpIC0+IEFYSUQgewotICAgICAgICBpZiAoYXV0byogb2JqZWN0ID0gYXNz
b2NpYXRlZEFYT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGNlbGwgPSBvYmplY3Qt
PmNlbGxGb3JDb2x1bW5BbmRSb3coY29sdW1uSW5kZXgsIHJvd0luZGV4KSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gY2VsbC0+b2JqZWN0SUQoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
eyB9OwotICAgIH0pOwotCi0gICAgcmV0dXJuIHRyZWUoKS0+b2JqZWN0Rm9ySUQoY2VsbElEKS5n
ZXQoKTsKKyAgICAvLyBBWFByb3BlcnR5TmFtZTo6U2xvdEdyaWQgY2FuIGJlIGJpZywgc28gbWFr
ZSBzdXJlIG5vdCB0byBjb3B5IGl0LgorICAgIGF1dG8gc2xvdEdyaWRJdGVyYXRvciA9IG1fcHJv
cGVydHlNYXAuZmluZChBWFByb3BlcnR5TmFtZTo6U2xvdEdyaWQpOworICAgIGlmIChzbG90R3Jp
ZEl0ZXJhdG9yID09IG1fcHJvcGVydHlNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgQVhJRCBjZWxsSUQgPSBXVEY6OnN3aXRjaE9uKHNsb3RHcmlkSXRlcmF0b3ItPnZh
bHVlLAorICAgICAgICBbJl0gKFZlY3RvcjxWZWN0b3I8QVhJRD4+JiBzbG90R3JpZCkgeworICAg
ICAgICAgICAgaWYgKHJvd0luZGV4ID49IHNsb3RHcmlkLnNpemUoKSB8fCBjb2x1bW5JbmRleCA+
PSBzbG90R3JpZFtyb3dJbmRleF0uc2l6ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBBWElE
KCk7CisgICAgICAgICAgICByZXR1cm4gc2xvdEdyaWRbcm93SW5kZXhdW2NvbHVtbkluZGV4XTsK
KyAgICAgICAgfSwKKyAgICAgICAgW10gKGF1dG8mKSB7IHJldHVybiBBWElEKCk7IH0KKyAgICAp
OworICAgIHJldHVybiBjZWxsSUQgPyB0cmVlKCktPm9iamVjdEZvcklEKGNlbGxJRCkuZ2V0KCkg
OiBudWxscHRyOwogfQogCiB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmFjY2Vzc2liaWxpdHlUZXh0
KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mIHRleHRzKSBjb25zdApAQCAtMTY1NCw2ICsxNjU4
LDEyIEBAIGJvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNNb2RhbE5vZGUoKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc1RhYmxlQ2VsbCgpIGNv
bnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiBBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKaW5kZXggZWVlYjZkMjJmYzcwLi5jNzljODAwZmIyZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTEzOSwxMCArMTM5LDEwIEBAIHByaXZhdGU6
CiAgICAgQVhJc29sYXRlZE9iamVjdCogZXhwb3NlZFRhYmxlQW5jZXN0b3IoYm9vbCBpbmNsdWRl
U2VsZiA9IGZhbHNlKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY2Nlc3NpYmlsaXR5OjpleHBvc2Vk
VGFibGVBbmNlc3RvcigqdGhpcywgaW5jbHVkZVNlbGYpOyB9CiAgICAgaW50IHRhYmxlTGV2ZWwo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6VGFibGVMZXZlbCk7IH0KICAgICBib29sIHN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpTdXBw
b3J0c1NlbGVjdGVkUm93cyk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29s
dW1ucygpIG92ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRy
aWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6Q29sdW1ucykpOyB9Ci0gICAgQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd3MoKSBvdmVycmlkZSB7IHJldHVybiB0cmVlKCktPm9i
amVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OlJv
d3MpKTsgfQotICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gdW5z
aWduZWRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Q29sdW1uQ291bnQpOyB9Ci0gICAg
dW5zaWduZWQgcm93Q291bnQoKSBvdmVycmlkZSB7IHJldHVybiB1bnNpZ25lZEF0dHJpYnV0ZVZh
bHVlKEFYUHJvcGVydHlOYW1lOjpSb3dDb3VudCk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3IgY29sdW1ucygpIGZpbmFsIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2
ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6Q29sdW1ucykpOyB9Cisg
ICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd3MoKSBmaW5hbCB7IHJldHVybiB0cmVl
KCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5h
bWU6OlJvd3MpKTsgfQorICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50KCkgZmluYWwgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNvbHVtbnMoKS5zaXplKCkpOyB9CisgICAgdW5zaWduZWQg
cm93Q291bnQoKSBmaW5hbCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocm93cygpLnNp
emUoKSk7IH0KICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2VsbHMoKSBvdmVycmlk
ZSB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJ
RD4oQVhQcm9wZXJ0eU5hbWU6OkNlbGxzKSk7IH0KICAgICBBWENvcmVPYmplY3QqIGNlbGxGb3JD
b2x1bW5BbmRSb3codW5zaWduZWQsIHVuc2lnbmVkKSBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgY29sdW1uSGVhZGVycygpIG92ZXJyaWRlOwpAQCAtMTUzLDcgKzE1
Myw4IEBAIHByaXZhdGU6CiAgICAgaW50IGF4Um93Q291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBpbnRBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6QVhSb3dDb3VudCk7IH0KIAog
ICAgIC8vIFRhYmxlIGNlbGwgc3VwcG9ydC4KLSAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc1Rh
YmxlQ2VsbCk7IH0KKyAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgZmluYWw7CisgICAgYm9v
bCBpc0V4cG9zZWRUYWJsZUNlbGwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRl
VmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzRXhwb3NlZFRhYmxlQ2VsbCk7IH0KICAgICAvLyBSZXR1
cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCiAgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHBhaXJBdHRyaWJ1dGVWYWx1ZTx1bnNpZ25lZD4oQVhQcm9wZXJ0eU5hbWU6OlJv
d0luZGV4UmFuZ2UpOyB9CiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNv
bHVtbiBzcGFuIG9mIHRoZSBjZWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IGJjODU5
NTJjYjJjYS4uYjRjZjQyNGRhNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCkBAIC01NjQs
NiArNTY0LDkgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZVByb3BlcnRpZXMoQVhD
b3JlT2JqZWN0JiBheE9iamVjdCwgY29uc3QgVmVjdG9yPEEKICAgICAgICAgY2FzZSBBWFByb3Bl
cnR5TmFtZTo6U2V0U2l6ZToKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5
TmFtZTo6U2V0U2l6ZSwgYXhPYmplY3Quc2V0U2l6ZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpTbG90R3JpZDoKKyAgICAgICAgICAgIHByb3Bl
cnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6U2xvdEdyaWQsIGR5bmFtaWNEb3duY2FzdDxBY2Nl
c3NpYmlsaXR5T2JqZWN0PihheE9iamVjdCktPnNsb3RHcmlkKCkpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlNvcnREaXJlY3Rpb246CiAgICAgICAg
ICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlNvcnREaXJlY3Rpb24sIHN0YXRp
Y19jYXN0PGludD4oYXhPYmplY3Quc29ydERpcmVjdGlvbigpKSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTYwOCw4ICs2MTEsMjQgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZUFu
ZERlcGVuZGVudFByb3BlcnRpZXMoQWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmoKIAogICAgIHVw
ZGF0ZU5vZGUoYXhPYmplY3QpOwogCi0gICAgaWYgKGF1dG8qIHRyZWVBbmNlc3RvciA9IEFjY2Vz
c2liaWxpdHk6OmZpbmRBbmNlc3RvcihheE9iamVjdCwgdHJ1ZSwgW10gKGNvbnN0IGF1dG8mIG9i
amVjdCkgeyByZXR1cm4gb2JqZWN0LmlzVHJlZSgpOyB9KSkKLSAgICAgICAgdXBkYXRlTm9kZVBy
b3BlcnR5KCp0cmVlQW5jZXN0b3IsIEFYUHJvcGVydHlOYW1lOjpBUklBVHJlZVJvd3MpOworICAg
IC8vIFdoZW4gYSByb3cgZ2FpbnMgb3IgbG9zZXMgY2VsbHMsIHRoZSBjb2x1bW4gY291bnQgb2Yg
dGhlIHRhYmxlIGNhbiBjaGFuZ2UuCisgICAgYm9vbCB1cGRhdGVUYWJsZUFuY2VzdG9yQ29sdW1u
cyA9IGlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oYXhPYmplY3QpOworICAgIGZvciAoYXV0byog
YW5jZXN0b3IgPSBheE9iamVjdC5wYXJlbnRPYmplY3QoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0g
YW5jZXN0b3ItPnBhcmVudE9iamVjdCgpKSB7CisgICAgICAgIGlmIChhbmNlc3Rvci0+aXNUcmVl
KCkpIHsKKyAgICAgICAgICAgIHVwZGF0ZU5vZGVQcm9wZXJ0eSgqYW5jZXN0b3IsIEFYUHJvcGVy
dHlOYW1lOjpBUklBVHJlZVJvd3MpOworICAgICAgICAgICAgaWYgKCF1cGRhdGVUYWJsZUFuY2Vz
dG9yQ29sdW1ucykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICh1cGRhdGVUYWJsZUFuY2VzdG9yQ29sdW1ucyAmJiBhbmNlc3Rvci0+aXNBY2Nlc3NpYmls
aXR5VGFibGVJbnN0YW5jZSgpKSB7CisgICAgICAgICAgICAvLyBPbmx5IGB1cGRhdGVDaGlsZHJl
bmAgaWYgdGhlIHRhYmxlIGlzIHVuaWdub3JlZCwgYmVjYXVzZSBvdGhlcndpc2UgYHVwZGF0ZUNo
aWxkcmVuYCB3aWxsIGFzY2VuZCBhbmQgdXBkYXRlIHRoZSBuZXh0IGhpZ2hlc3QgdW5pZ25vcmVk
IGFuY2VzdG9yLCB3aGljaCBkb2Vzbid0IGFjY29tcGxpc2ggb3VyIGdvYWwgb2YgdXBkYXRpbmcg
dGFibGUgY29sdW1ucy4KKyAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+YWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8gVXNlIGB1
cGRhdGVDaGlsZHJlbmAgcmF0aGVyIHRoYW4gYHVwZGF0ZU5vZGVQcm9wZXJ0eWAgYmVjYXVzZSBg
dXBkYXRlQ2hpbGRyZW5gIHdpbGwgZW5zdXJlIHRoZSBjb2x1bW5zICh3aGljaCBhcmUgY2hpbGRy
ZW4pIHdpbGwgaGF2ZSBhc3NvY2lhdGVkIGlzb2xhdGVkIG9iamVjdHMgY3JlYXRlZC4KKyAgICAg
ICAgICAgIHVwZGF0ZUNoaWxkcmVuKCphbmNlc3Rvcik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlQ2hpbGRyZW4o
QWNjZXNzaWJpbGl0eU9iamVjdCYgYXhPYmplY3QsIFJlc29sdmVOb2RlQ2hhbmdlcyByZXNvbHZl
Tm9kZUNoYW5nZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCBiZWU0OTIxNzk1NDQuLmY5NTll
MWI4M2RlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC03OSw3ICs3OSw2IEBAIGVudW0gY2xh
c3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgQ2VsbHMsCiAgICAgQ29sb3JWYWx1
ZSwKICAgICBDb2x1bW5zLAotICAgIENvbHVtbkNvdW50LAogICAgIENvbHVtbkhlYWRlciwKICAg
ICBDb2x1bW5IZWFkZXJzLAogICAgIENvbHVtbkluZGV4LApAQCAtMTIyLDYgKzEyMSw3IEBAIGVu
dW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgSXNFbmFibGVkLAogICAg
IElzRXhwYW5kZWQsCiAgICAgSXNFeHBvc2FibGUsCisgICAgSXNFeHBvc2VkVGFibGVDZWxsLAog
ICAgIElzRmllbGRzZXQsCiAgICAgSXNGb2N1c2VkLAogICAgIElzSW5kZXRlcm1pbmF0ZSwKQEAg
LTE1MSw3ICsxNTEsNiBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3Qgewog
ICAgIElzU2VsZWN0ZWQsCiAgICAgSXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSwKICAgICBJc1RhYmxl
LAotICAgIElzVGFibGVDZWxsLAogICAgIElzVGFibGVDb2x1bW4sCiAgICAgSXNUYWJsZVJvdywK
ICAgICBJc1RyZWUsCkBAIC0xOTYsNyArMTk1LDYgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFt
ZSA6IHVpbnQxNl90IHsKICAgICBSb2xlUGxhdGZvcm1TdHJpbmcsCiAgICAgUm9sZURlc2NyaXB0
aW9uLAogICAgIFJvd3MsCi0gICAgUm93Q291bnQsCiAgICAgUm93SGVhZGVycywKICAgICBSb3dJ
bmRleCwKICAgICBSb3dJbmRleFJhbmdlLApAQCAtMjA2LDYgKzIwNCw3IEBAIGVudW0gY2xhc3Mg
QVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgU2Vzc2lvbklELAogICAgIFNldFNpemUs
CiAgICAgU29ydERpcmVjdGlvbiwKKyAgICBTbG90R3JpZCwKICAgICBTcGVlY2hIaW50LAogICAg
IFN0cmluZ1ZhbHVlLAogICAgIFN1YnJvbGVQbGF0Zm9ybVN0cmluZywKQEAgLTI0MCw3ICsyMzks
NyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIFZpc2libGVS
b3dzLAogfTsKIAotdXNpbmcgQVhQcm9wZXJ0eVZhbHVlVmFyaWFudCA9IHN0ZDo6dmFyaWFudDxz
dGQ6Om51bGxwdHJfdCwgQVhJRCwgU3RyaW5nLCBib29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUs
IGZsb2F0LCB1aW50NjRfdCwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlLCBDb2xvciwgVVJMLCBM
YXlvdXRSZWN0LCBGbG9hdFBvaW50LCBGbG9hdFJlY3QsIEludFBvaW50LCBJbnRSZWN0LCBQQUw6
OlNlc3Npb25JRCwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4sIFZlY3RvcjxBY2Nlc3Np
YmlsaXR5VGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBBWElEPj4s
IFZlY3RvcjxTdHJpbmc+LCBQYXRoLCBPcHRpb25TZXQ8QVhBbmNlc3RvckZsYWc+LCBSZXRhaW5Q
dHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiwgSW5zaWRlTGluaywgQ2hhcmFjdGVyUmFuZ2U+OwordXNp
bmcgQVhQcm9wZXJ0eVZhbHVlVmFyaWFudCA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwg
QVhJRCwgU3RyaW5nLCBib29sLCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1aW50NjRf
dCwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlLCBDb2xvciwgVVJMLCBMYXlvdXRSZWN0LCBGbG9h
dFBvaW50LCBGbG9hdFJlY3QsIEludFBvaW50LCBJbnRSZWN0LCBQQUw6OlNlc3Npb25JRCwgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4sIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4sIFZl
Y3RvcjxBWElEPiwgVmVjdG9yPHN0ZDo6cGFpcjxBWElELCBBWElEPj4sIFZlY3RvcjxTdHJpbmc+
LCBQYXRoLCBPcHRpb25TZXQ8QVhBbmNlc3RvckZsYWc+LCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVk
U3RyaW5nPiwgSW5zaWRlTGluaywgVmVjdG9yPFZlY3RvcjxBWElEPj4sIENoYXJhY3RlclJhbmdl
PjsKIHVzaW5nIEFYUHJvcGVydHlNYXAgPSBIYXNoTWFwPEFYUHJvcGVydHlOYW1lLCBBWFByb3Bl
cnR5VmFsdWVWYXJpYW50LCBJbnRIYXNoPEFYUHJvcGVydHlOYW1lPiwgV1RGOjpTdHJvbmdFbnVt
SGFzaFRyYWl0czxBWFByb3BlcnR5TmFtZT4+OwogCiBzdHJ1Y3QgQVhQcm9wZXJ0eUNoYW5nZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDU1ZTVlZjMyODJm
OC4uMzBlMTk1NjJjYWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQpAQCAtMTE4OSw3ICsxMTg5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJsZUF0dHJzLmdldCgpLmdldCgpOwog
ICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFibGVDb2x1bW4oKSkKICAgICAgICAgb2Jq
ZWN0QXR0cmlidXRlcyA9IHRhYmxlQ29sQXR0cnMuZ2V0KCkuZ2V0KCk7Ci0gICAgZWxzZSBpZiAo
YmFja2luZ09iamVjdC0+aXNUYWJsZUNlbGwoKSkKKyAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0
LT5pc0V4cG9zZWRUYWJsZUNlbGwoKSkKICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxl
Q2VsbEF0dHJzLmdldCgpLmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFi
bGVSb3coKSkgewogICAgICAgICAvLyBBbiBBUklBIHRhYmxlIHJvdyBjYW4gYmUgY29sbGFwc2Vk
IGFuZCBleHBhbmRlZCwgc28gaXQgbmVlZHMgdGhlIGV4dHJhIGF0dHJpYnV0ZXMuCkBAIC0xODQ2
LDcgKzE4NDYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYmxlQ2VsbCgpKSB7Cisg
ICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzRXhwb3NlZFRhYmxlQ2VsbCgpKSB7CiAgICAgICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93SW5kZXhS
YW5nZUF0dHJpYnV0ZV0pIHsKICAgICAgICAgICAgIGF1dG8gcm93UmFuZ2UgPSBiYWNraW5nT2Jq
ZWN0LT5yb3dJbmRleFJhbmdlKCk7CiAgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVX
aXRoUmFuZ2U6TlNNYWtlUmFuZ2Uocm93UmFuZ2UuZmlyc3QsIHJvd1JhbmdlLnNlY29uZCldOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0
ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0
dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4IGFlMzFhNTgwNWNhOS4uODg1ZDE2NmJkYzJjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmlidXRl
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxl
LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CkBAIC0xMSw3ICsxMSw3IEBAIFBBU1M6IGNlbGwyLm51
bWJlckF0dHJpYnV0ZVZhbHVlKCdBWEFSSUFSb3dJbmRleCcpID09PSA4CiBQQVNTOiBjZWxsNC5u
dW1iZXJBdHRyaWJ1dGVWYWx1ZSgnQVhBUklBQ29sdW1uSW5kZXgnKSA9PT0gMwogUEFTUzogY2Vs
bDIucm93SW5kZXhSYW5nZSgpID09PSAnezEsIDJ9JwogUEFTUzogY2VsbDUuY29sdW1uSW5kZXhS
YW5nZSgpID09PSAnezIsIDN9JwotUEFTUzogY2VsbDMucm93SW5kZXhSYW5nZSgpID09PSAnezEs
IDJ9JworUEFTUzogY2VsbDMucm93SW5kZXhSYW5nZSgpID09PSAnezEsIDN9JwogUEFTUzogY2Vs
bDYucm93SW5kZXhSYW5nZSgpID09PSAnezAsIDJ9JwogUEFTUzogY2VsbDcucm93SW5kZXhSYW5n
ZSgpID09PSAnezAsIDJ9JwogUEFTUzogI2dyaWQgQVhBUklBUm93Q291bnQgZHluYW1pY2FsbHkg
Y2hhbmdlZCB0byA2MC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJp
YS10YWJsZS1hdHRyaWJ1dGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
dGFibGUtYXR0cmlidXRlcy5odG1sCmluZGV4IDZhY2FkY2VmY2MyYS4uNWMzNTJhYjFiODg0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmlidXRl
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1
dGVzLmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgIDxzcGFuIHJvbGU9ImdyaWRjZWxsIiBh
cmlhLWNvbGluZGV4PSIyIiBhcmlhLXJvd2luZGV4PSI4Ij5GcmVkPC9zcGFuPgogICAgICAgPHNw
YW4gcm9sZT0iZ3JpZGNlbGwiIGFyaWEtY29saW5kZXg9IjMiIGFyaWEtcm93aW5kZXg9IjgiPkph
Y2tzb248L3NwYW4+CiAgICAgICA8c3BhbiBpZD0iY2VsbDIiIHJvbGU9ImdyaWRjZWxsIiBhcmlh
LWNvbGluZGV4PSI0IiBhcmlhLXJvd2luZGV4PSI4IiBhcmlhLXJvd3NwYW49IjIiPkFjbWUsIElu
Yy48L3NwYW4+Ci0gICAgICA8c3BhbiBpZD0iY2VsbDMiIHJvbGU9ImdyaWRjZWxsIiBhcmlhLWNv
bGluZGV4PSI1IiBhcmlhLXJvd2luZGV4PSI4IiBhcmlhLXJvd3NwYW49IjAiPjEyMyBCcm9hZCBT
dC48L3NwYW4+CisgICAgICA8c3BhbiBpZD0iY2VsbDMiIHJvbGU9ImdyaWRjZWxsIiBhcmlhLWNv
bGluZGV4PSI1IiBhcmlhLXJvd2luZGV4PSI4IiBhcmlhLXJvd3NwYW49IjMiPjEyMyBCcm9hZCBT
dC48L3NwYW4+CiAgICAgPC9kaXY+CiAgICAgPGRpdiByb2xlPSJyb3ciIGFyaWEtcm93aW5kZXg9
IjkiPgogICAgICAgPHNwYW4gcm9sZT0iZ3JpZGNlbGwiIGFyaWEtY29saW5kZXg9IjIiPlNhcmE8
L3NwYW4+CkBAIC00OSw3ICs0OSw3IEBACiA8ZGl2IGlkPSJncmlkMyIgcm9sZT0iZ3JpZCI+CiAg
IDxkaXYgcm9sZT0icm93Ij4KICAgICA8c3BhbiByb2xlPSJncmlkY2VsbCI+Q2VsbDwvc3Bhbj4K
LSAgICA8c3BhbiBpZD0iY2VsbDYiIHJvbGU9ImdyaWRjZWxsIiBhcmlhLXJvd3NwYW49IjAiPlNw
YW4gQ2VsbDwvc3Bhbj4KKyAgICA8c3BhbiBpZD0iY2VsbDYiIHJvbGU9ImdyaWRjZWxsIiBhcmlh
LXJvd3NwYW49IjIiPlNwYW4gQ2VsbDwvc3Bhbj4KICAgPC9kaXY+CiAgIDxkaXYgcm9sZT0icm93
Ij4KICAgICA8c3BhbiByb2xlPSJncmlkY2VsbCI+Q2VsbDwvc3Bhbj4KQEAgLTkzLDEwICs5Mywx
MCBAQAogICAgICAgICAvLyBhcmlhLWNvbGluZGV4IGZyb20gcGFyZW50IHJvdwogICAgICAgICB0
ZXN0T3V0cHV0ICs9IGV4cGVjdCgiY2VsbDQubnVtYmVyQXR0cmlidXRlVmFsdWUoJ0FYQVJJQUNv
bHVtbkluZGV4JykiLCAiMyIpOwogCi0gICAgICAgIC8vIGFyaWEtY29sc3BhbiBhbmQgYXJpYS1y
b3dzcGFuLCBpbmNsdWRpbmcgYXJpYS1yb3dzcGFuPSIwIgorICAgICAgICAvLyBhcmlhLWNvbHNw
YW4gYW5kIGFyaWEtcm93c3BhbgogICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgiY2VsbDIu
cm93SW5kZXhSYW5nZSgpIiwgIid7MSwgMn0nIik7CiAgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhw
ZWN0KCJjZWxsNS5jb2x1bW5JbmRleFJhbmdlKCkiLCAiJ3syLCAzfSciKTsKLSAgICAgICAgdGVz
dE91dHB1dCArPSBleHBlY3QoImNlbGwzLnJvd0luZGV4UmFuZ2UoKSIsICInezEsIDJ9JyIpOwor
ICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgiY2VsbDMucm93SW5kZXhSYW5nZSgpIiwgIid7
MSwgM30nIik7CiAKICAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoImNlbGw2LnJvd0luZGV4
UmFuZ2UoKSIsICInezAsIDJ9JyIpOwogICAgICAgICAvLyB1c2Ugcm93c3BhbiBmb3IgbmF0aXZl
IHRhYmxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVt
ZW50cy90YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3Rv
bS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQKaW5kZXggMWUzNmIxOGI1ODAzLi41NzU4ZmI3
ZmUyMDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVsZW1l
bnRzL3RhYmxlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1
c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQKQEAgLTMwLDEzICszMCwxMyBAQCBQQVNT
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgicm93LTIiKS5y
b2xlIGlzICJBWFJvbGU6IEFYUgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoImNlbGw1Iikucm9sZSBpcyAiQVhSb2xlOiBBWENlbGwiCiBQQVNTIGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5udW1i
ZXJBdHRyaWJ1dGVWYWx1ZSgiQVhBUklBUm93SW5kZXgiKSBpcyA4CiBQQVNTIGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5udW1iZXJBdHRyaWJ1
dGVWYWx1ZSgiQVhBUklBQ29sdW1uSW5kZXgiKSBpcyAyCi1QQVNTIGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5yb3dJbmRleFJhbmdlKCkgaXMg
InsyLCAxfSIKK1BBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJjZWxsNSIpLnJvd0luZGV4UmFuZ2UoKSBpcyAiezQsIDF9IgogUEFTUyBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1IikuY29sdW1uSW5kZXhS
YW5nZSgpIGlzICJ7MCwgMn0iCiBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgicm93LTMiKS5yb2xlIGlzICJBWFJvbGU6IEFYUm93IgogUEFTUyBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2Iikucm9sZSBp
cyAiQVhSb2xlOiBBWENlbGwiCiBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgiY2VsbDYiKS5udW1iZXJBdHRyaWJ1dGVWYWx1ZSgiQVhBUklBUm93SW5k
ZXgiKSBpcyA5CiBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgiY2VsbDYiKS5udW1iZXJBdHRyaWJ1dGVWYWx1ZSgiQVhBUklBQ29sdW1uSW5kZXgiKSBp
cyAyCi1QQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
Y2VsbDYiKS5yb3dJbmRleFJhbmdlKCkgaXMgInszLCAxfSIKK1BBU1MgYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLnJvd0luZGV4UmFuZ2UoKSBp
cyAiezUsIDF9IgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImNlbGw2IikuY29sdW1uSW5kZXhSYW5nZSgpIGlzICJ7MCwgM30iCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2N1c3RvbS1lbGVtZW50cy90YWJsZS5odG1sCmluZGV4IDA2Nzk2Yjk0MThhZi4uZDViODVk
NGZhZmY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVt
ZW50cy90YWJsZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVs
ZW1lbnRzL3RhYmxlLmh0bWwKQEAgLTExMSwxNCArMTExLDE0IEBAIGVsc2UgewogICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJjZWxsNSIpLnJvbGUnLCAnQVhSb2xlOiBBWENlbGwnKTsKICAgICBzaG91bGRCZSgn
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLm51
bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFSb3dJbmRleCIpJywgJzgnKTsKICAgICBzaG91bGRC
ZSgnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIp
Lm51bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFDb2x1bW5JbmRleCIpJywgJzInKTsKLSAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgiY2VsbDUiKS5yb3dJbmRleFJhbmdlKCknLCAnezIsIDF9Jyk7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImNlbGw1Iikucm93SW5kZXhSYW5nZSgpJywgJ3s0LCAxfScpOwogICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJjZWxsNSIpLmNvbHVtbkluZGV4UmFuZ2UoKScsICd7MCwgMn0nKTsKIAogICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJyb3ctMyIpLnJvbGUnLCAnQVhSb2xlOiBBWFJvdycpOwogICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJjZWxsNiIpLnJvbGUnLCAnQVhSb2xlOiBBWENlbGwnKTsKICAgICBzaG91bGRCZSgnYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLm51bWJl
ckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFSb3dJbmRleCIpJywgJzknKTsKICAgICBzaG91bGRCZSgn
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLm51
bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFDb2x1bW5JbmRleCIpJywgJzInKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgiY2VsbDYiKS5yb3dJbmRleFJhbmdlKCknLCAnezMsIDF9Jyk7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImNlbGw2Iikucm93SW5kZXhSYW5nZSgpJywgJ3s1LCAxfScpOwogICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJjZWxsNiIpLmNvbHVtbkluZGV4UmFuZ2UoKScsICd7MCwgM30nKTsKIAogfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTM4ZmVjOTczYzIz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNv
bHNwYW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRo
YXQgdGhlICdjZWxsIGZvciBjb2x1bW4gYW5kIHJvdycgQVBJIHdvcmtzIGNvcnJlY3RseSBhZnRl
ciBkeW5hbWljIGNvbHNwYW4gY2hhbmdlcy4KKworUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFu
ZFJvdygwLCAwKS5kb21JZGVudGlmaWVyID09PSAncjBjMCcKK1BBU1M6IHRhYmxlLmNlbGxGb3JD
b2x1bW5BbmRSb3coMSwgMCkuZG9tSWRlbnRpZmllciA9PT0gJ3IwYzEnCitQQVNTOiB0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApID09PSBudWxsID09PSB0cnVlCitQQVNTOiBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5JbmRl
eFJhbmdlKCkgPT09ICd7MSwgMX0nCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjBjMScpLnNl
dEF0dHJpYnV0ZSgnY29sc3BhbicsICcyJykKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRS
b3coMiwgMCkuZG9tSWRlbnRpZmllciA9PT0gJ3IwYzEnCitQQVNTOiBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5JbmRleFJhbmdlKCkg
PT09ICd7MSwgMn0nCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjBjMScpLnJlbW92ZUF0dHJp
YnV0ZSgnY29sc3BhbicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApID09
PSBudWxsID09PSB0cnVlCitQQVNTOiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5JbmRleFJhbmdlKCkgPT09ICd7MSwgMX0nCitkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncjBjMScpLnNldEF0dHJpYnV0ZSgnYXJpYS1jb2xzcGFuJywg
JzInKQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKS5kb21JZGVudGlmaWVy
ID09PSAncjBjMScKK1BBU1M6IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgncjBjMScpLmNvbHVtbkluZGV4UmFuZ2UoKSA9PT0gJ3sxLCAyfScKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitIZWFkZXIgMAlIZWFk
ZXIgMQorUjFDMAlSMUMxCVIxQzIKK1IyQzAJUjJDMQlSMkMyCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjc3YTRhMjg3MGRlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLmh0bWwKQEAgLTAsMCArMSw2OSBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KK3RkLCB0aCB7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Cit9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzx0YWJsZSBpZD0idGFibGUiPgorPHRoZWFkIGlk
PSJ0aGVhZCI+CisgICAgPHRyIGlkPSJyMCI+CisgICAgICAgIDx0aCBpZD0icjBjMCI+SGVhZGVy
IDA8L3RoPgorICAgICAgICA8dGggaWQ9InIwYzEiPkhlYWRlciAxPC90aD4KKyAgICA8L3RyPgor
PC90aGVhZD4KKzx0Ym9keSBpZD0idGJvZHkiPgorICAgIDx0ciBpZD0icjEiPgorICAgICAgICA8
dGQgaWQ9InIxYzAiPlIxQzA8L3RkPgorICAgICAgICA8dGQgaWQ9InIxYzEiPlIxQzE8L3RkPgor
ICAgICAgICA8dGQgaWQ9InIxYzIiPlIxQzI8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGlkPSJy
MiI+CisgICAgICAgIDx0ZCBpZD0icjJjMCI+UjJDMDwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjJj
MSI+UjJDMTwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjJjMSI+UjJDMjwvdGQ+CisgICAgPC90cj4K
KzwvdGJvZHk+Cis8L3RhYmxlPgorCis8c2NyaXB0PgordmFyIG91dHB1dCA9ICJUaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IHRoZSAnY2VsbCBmb3IgY29sdW1uIGFuZCByb3cnIEFQSSB3b3JrcyBjb3Jy
ZWN0bHkgYWZ0ZXIgZHluYW1pYyBjb2xzcGFuIGNoYW5nZXMuXG5cbiI7CisKK2lmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICB2YXIgdGFibGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoInRhYmxlIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZv
ckNvbHVtbkFuZFJvdygwLCAwKS5kb21JZGVudGlmaWVyIiwgIidyMGMwJyIpOworICAgIG91dHB1
dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMCkuZG9tSWRlbnRpZmll
ciIsICIncjBjMSciKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1u
QW5kUm93KDIsIDApID09PSBudWxsIiwgInRydWUiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1
bW5JbmRleFJhbmdlKCkiLCAiJ3sxLCAxfSciKTsKKworICAgIG91dHB1dCArPSBldmFsQW5kUmV0
dXJuKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjBjMScpLnNldEF0dHJpYnV0ZSgnY29sc3Bh
bicsICcyJykiKTsKKyAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICBh
d2FpdCB3YWl0Rm9yKCgpID0+IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCkgIT09IG51
bGwpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93
KDIsIDApLmRvbUlkZW50aWZpZXIiLCAiJ3IwYzEnIik7CisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjBjMScp
LmNvbHVtbkluZGV4UmFuZ2UoKSIsICInezEsIDJ9JyIpOworCisgICAgICAgIG91dHB1dCArPSBl
dmFsQW5kUmV0dXJuKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjBjMScpLnJlbW92ZUF0dHJp
YnV0ZSgnY29sc3BhbicpIik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygi
dGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKSA9PT0gbnVsbCIsICJ0cnVlIik7CisgICAg
ICAgIG91dHB1dCArPSBleHBlY3QoImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgncjBjMScpLmNvbHVtbkluZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOworCisg
ICAgICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJuKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cjBjMScpLnNldEF0dHJpYnV0ZSgnYXJpYS1jb2xzcGFuJywgJzInKSIpOworICAgICAgICBhd2Fp
dCB3YWl0Rm9yKCgpID0+IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCkgIT09IG51bGwp
OworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIs
IDApLmRvbUlkZW50aWZpZXIiLCAiJ3IwYzEnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
ImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjBjMScpLmNv
bHVtbkluZGV4UmFuZ2UoKSIsICInezEsIDJ9JyIpOworCisgICAgICAgIGRlYnVnKG91dHB1dCk7
CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy1yb3dzcGFuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy1yb3dzcGFuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjMxYjUzM2ViN2YyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBA
CitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSAnY2VsbCBmb3IgY29sdW1uIGFuZCByb3cnIEFQ
SSB3b3JrcyBjb3JyZWN0bHkgYWZ0ZXIgZHluYW1pYyByb3dzcGFuIGNoYW5nZXMuCisKK1BBU1M6
IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkuZG9tSWRlbnRpZmllciA9PT0gJ3IwYzAn
CitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpID09PSBudWxsID09PSB0cnVl
CitQQVNTOiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3Ix
YzInKS5yb3dJbmRleFJhbmdlKCkgPT09ICd7MSwgMX0nCitkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncjFjMicpLnNldEF0dHJpYnV0ZSgncm93c3BhbicsICcyJykKK1BBU1M6IHRhYmxlLmNlbGxG
b3JDb2x1bW5BbmRSb3coMiwgMikuZG9tSWRlbnRpZmllciA9PT0gJ3IxYzInCitQQVNTOiBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5yb3dJbmRl
eFJhbmdlKCkgPT09ICd7MSwgMn0nCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjFjMicpLnJl
bW92ZUF0dHJpYnV0ZSgncm93c3BhbicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93
KDIsIDIpID09PSBudWxsID09PSB0cnVlCitQQVNTOiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5yb3dJbmRleFJhbmdlKCkgPT09ICd7MSwgMX0n
Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjFjMicpLnNldEF0dHJpYnV0ZSgnYXJpYS1yb3dz
cGFuJywgJzInKQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKS5kb21JZGVu
dGlmaWVyID09PSAncjFjMicKK1BBU1M6IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgncjFjMicpLnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAyfScKKworUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitIZWFkZXIgMAlI
ZWFkZXIgMQlIZWFkZXIgMgorUjFDMAlSMUMxCVIxQzIKK1IyQzAJUjJDMQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4uaHRtbCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMDk5MzE1YThiN2IKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi5odG1sCkBAIC0wLDAgKzEs
NjggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVs
cGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c3R5bGU+Cit0ZCwgdGggeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNr
OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCis8dGFibGUgaWQ9InRhYmxlIj4KKzx0
aGVhZCBpZD0idGhlYWQiPgorICAgIDx0ciBpZD0icjAiPgorICAgICAgICA8dGggaWQ9InIwYzAi
PkhlYWRlciAwPC90aD4KKyAgICAgICAgPHRoIGlkPSJyMGMxIj5IZWFkZXIgMTwvdGg+CisgICAg
ICAgIDx0aCBpZD0icjBjMiI+SGVhZGVyIDI8L3RoPgorICAgIDwvdHI+Cis8L3RoZWFkPgorPHRi
b2R5IGlkPSJ0Ym9keSI+CisgICAgPHRyIGlkPSJyMSI+CisgICAgICAgIDx0ZCBpZD0icjFjMCI+
UjFDMDwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjFjMSI+UjFDMTwvdGQ+CisgICAgICAgIDx0ZCBp
ZD0icjFjMiI+UjFDMjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgaWQ9InIyIj4KKyAgICAgICAg
PHRkIGlkPSJyMmMwIj5SMkMwPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyMmMxIj5SMkMxPC90ZD4K
KyAgICA8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+CisKKzxzY3JpcHQ+Cit2YXIgb3V0cHV0ID0g
IlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlICdjZWxsIGZvciBjb2x1bW4gYW5kIHJvdycgQVBJ
IHdvcmtzIGNvcnJlY3RseSBhZnRlciBkeW5hbWljIHJvd3NwYW4gY2hhbmdlcy5cblxuIjsKKwor
aWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgIHZhciB0YWJsZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGFibGUiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIiLCAiJ3IwYzAnIik7
CisgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKSA9
PT0gbnVsbCIsICJ0cnVlIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpIiwg
Iid7MSwgMX0nIik7CisKKyAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3IxYzInKS5zZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nLCAnMicpIik7CisgICAg
c2V0VGltZW91dChhc3luYyBmdW5jdGlvbigpIHsKKyAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9
PiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpICE9PSBudWxsKTsKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKS5kb21JZGVudGlm
aWVyIiwgIidyMWMyJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5yb3dJbmRleFJhbmdlKCki
LCAiJ3sxLCAyfSciKTsKKworICAgICAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3IxYzInKS5yZW1vdmVBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSIpOwor
ICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLmNlbGxGb3JDb2x1bW5B
bmRSb3coMiwgMikgPT09IG51bGwiLCAidHJ1ZSIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5y
b3dJbmRleFJhbmdlKCkiLCAiJ3sxLCAxfSciKTsKKworICAgICAgICBvdXRwdXQgKz0gZXZhbEFu
ZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IxYzInKS5zZXRBdHRyaWJ1dGUoJ2Fy
aWEtcm93c3BhbicsICcyJykiKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiB0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpICE9PSBudWxsKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKS5kb21JZGVudGlmaWVyIiwgIidy
MWMyJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5yb3dJbmRleFJhbmdlKCkiLCAiJ3sxLCAy
fSciKTsKKworICAgICAgICBkZWJ1ZyhvdXRwdXQpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICB9LCAwKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVzY2VuZGFudHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2Nl
bmRhbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmFmMDQ1NDEwZDJjMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
MyBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgJ2NlbGwgZm9yIGNvbHVtbiBhbmQgcm93
JyBBUEkgd29ya3MgY29ycmVjdGx5IGFmdGVyIGR5bmFtaWMgRE9NIGNoaWxkIGNoYW5nZXMuCisK
K1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkuZG9tSWRlbnRpZmllciA9PT0g
J3IwYzAnCitQQVNTOiB0YWJsZS5yb3dDb3VudCA9PT0gMworUEFTUzogdGFibGUuY29sdW1uQ291
bnQgPT09IDIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykgPT09IG51bGwg
PT09IHRydWUKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0Ym9keScpLmFwcGVuZENoaWxkKGNy
ZWF0ZUZvdXJ0aFJvdygpKQorUEFTUzogdGFibGUucm93Q291bnQgPT09IDQKK1BBU1M6IHRhYmxl
LmNvbHVtbkNvdW50ID09PSAzCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMp
LmRvbUlkZW50aWZpZXIgPT09ICdyM2MwJworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IzJyku
YXBwZW5kQ2hpbGQoZHluYW1pY0NlbGwpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93
KDMsIDMpLmRvbUlkZW50aWZpZXIgPT09ICdkeW5hbWljLWNlbGwnCitQQVNTOiB0YWJsZS5jb2x1
bW5Db3VudCA9PT0gNAorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R5bmFtaWMtY2VsbCcpLnJl
bW92ZSgpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDQpID09PSBudWxsID09
PSB0cnVlCitQQVNTOiB0YWJsZS5jb2x1bW5Db3VudCA9PT0gMworZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3IzJykucmVtb3ZlKCkKK1BBU1M6IHRhYmxlLnJvd0NvdW50ID09PSAzCitQQVNTOiB0
YWJsZS5jb2x1bW5Db3VudCA9PT0gMgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygw
LCAzKSA9PT0gbnVsbCA9PT0gdHJ1ZQorbmV3VGJvZHkuYXBwZW5kQ2hpbGQoY3JlYXRlRm91cnRo
Um93KCkpCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGUnKS5hcHBlbmRDaGlsZChuZXdU
Ym9keSkKK1BBU1M6IHRhYmxlLnJvd0NvdW50ID09PSA0CitQQVNTOiB0YWJsZS5jb2x1bW5Db3Vu
dCA9PT0gMworUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKS5kb21JZGVudGlm
aWVyID09PSAncjNjMCcKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCitIZWFkZXIgMAlIZWFkZXIgMQorUjFDMAlSMUMxCitSMkMwCVIyQzEKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRh
bnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVzY2Vu
ZGFudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNlYTRi
ZTc5NWU2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy10YWJsZS1kZXNjZW5kYW50cy5odG1sCkBAIC0wLDAgKzEsMTA0IEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHN0eWxl
PgordGQsIHRoIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKworPHRhYmxlIGlkPSJ0YWJsZSI+Cis8dGhlYWQgaWQ9InRoZWFkIj4K
KyAgICA8dHIgaWQ9InIwIj4KKyAgICAgICAgPHRoIGlkPSJyMGMwIj5IZWFkZXIgMDwvdGg+Cisg
ICAgICAgIDx0aCBpZD0icjBjMSI+SGVhZGVyIDE8L3RoPgorICAgIDwvdHI+Cis8L3RoZWFkPgor
PHRib2R5IGlkPSJ0Ym9keSI+CisgICAgPHRyIGlkPSJyMSI+CisgICAgICAgIDx0ZCBpZD0icjFj
MCI+UjFDMDwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjFjMSI+UjFDMTwvdGQ+CisgICAgPC90cj4K
KyAgICA8dHIgaWQ9InIyIj4KKyAgICAgICAgPHRkIGlkPSJyMmMwIj5SMkMwPC90ZD4KKyAgICAg
ICAgPHRkIGlkPSJyMmMxIj5SMkMxPC90ZD4KKyAgICA8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+
CisKKzxzY3JpcHQ+Cit2YXIgb3V0cHV0ID0gIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlICdj
ZWxsIGZvciBjb2x1bW4gYW5kIHJvdycgQVBJIHdvcmtzIGNvcnJlY3RseSBhZnRlciBkeW5hbWlj
IERPTSBjaGlsZCBjaGFuZ2VzLlxuXG4iOworCitmdW5jdGlvbiBjcmVhdGVGb3VydGhSb3coKSB7
CisgICAgY29uc3QgdHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAgIHRyLmlk
ID0gInIzIjsKKworICAgIGNvbnN0IGNlbGxPbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
ZCIpOworICAgIGNlbGxPbmUuaWQgPSAicjNjMCI7CisgICAgY29uc3QgY2VsbFR3byA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgY2VsbFR3by5pZCA9ICJyM2MxIjsKKyAgICBj
b25zdCBjZWxsVGhyZWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgIGNlbGxU
d28uaWQgPSAicjNjMiI7CisKKyAgICB0ci5hcHBlbmRDaGlsZChjZWxsT25lKTsKKyAgICB0ci5h
cHBlbmRDaGlsZChjZWxsVHdvKTsKKyAgICB0ci5hcHBlbmRDaGlsZChjZWxsVGhyZWUpOworICAg
IHJldHVybiB0cjsKK30KKworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewor
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHZhciBuZXdUYm9keSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5Iik7CisgICAgdmFyIGR5bmFtaWNDZWxsID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICBkeW5hbWljQ2VsbC5pZCA9ICJkeW5hbWlj
LWNlbGwiOworCisgICAgdmFyIHRhYmxlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJ0YWJsZSIpOworICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNl
bGxGb3JDb2x1bW5BbmRSb3coMCwgMCkuZG9tSWRlbnRpZmllciIsICIncjBjMCciKTsKKyAgICBv
dXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5yb3dDb3VudCIsICIzIik7CisgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGFibGUuY29sdW1uQ291bnQiLCAiMiIpOworICAgIG91dHB1dCArPSBleHBlY3QoInRh
YmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykgPT09IG51bGwiLCAidHJ1ZSIpOworCisgICAg
b3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0Ym9keScp
LmFwcGVuZENoaWxkKGNyZWF0ZUZvdXJ0aFJvdygpKSIpOworICAgIHNldFRpbWVvdXQoYXN5bmMg
ZnVuY3Rpb24oKSB7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUu
cm93Q291bnQiLCAiNCIpOworICAgICAgICAvLyBUaGUgZm91cnRoIHJvdyBoYXMgdGhyZWUgY2Vs
bHMgaW4gaXQgKHZzLiB0aGUgdHdvIGNlbGxzIGluIGV2ZXJ5IG90aGVyIHJvdykuCisgICAgICAg
IG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUuY29sdW1uQ291bnQiLCAiMyIpOwor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMp
LmRvbUlkZW50aWZpZXIiLCAiJ3IzYzAnIik7CisKKyAgICAgICAgLy8gTm93IGFwcGVuZCBhIGNl
bGwgdG8gYSByb3cuCisgICAgICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJuKCJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncjMnKS5hcHBlbmRDaGlsZChkeW5hbWljQ2VsbCkiKTsKKyAgICAgICAg
YXdhaXQgd2FpdEZvcigoKSA9PiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDMsIDMpKTsKKyAg
ICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCAzKS5k
b21JZGVudGlmaWVyIiwgIidkeW5hbWljLWNlbGwnIik7CisgICAgICAgIG91dHB1dCArPSBhd2Fp
dCBleHBlY3RBc3luYygidGFibGUuY29sdW1uQ291bnQiLCAiNCIpOworCisgICAgICAgIC8vIEFu
ZCByZW1vdmUgaXQuCisgICAgICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJuKCJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZHluYW1pYy1jZWxsJykucmVtb3ZlKCkiKTsKKyAgICAgICAgb3V0cHV0
ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDQpID09
PSBudWxsIiwgInRydWUiKTsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0
YWJsZS5jb2x1bW5Db3VudCIsICIzIik7CisKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBkeW5hbWlj
YWxseSBhZGRlZCBmb3VydGggcm93LgorICAgICAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigi
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IzJykucmVtb3ZlKCkiKTsKKyAgICAgICAgb3V0cHV0
ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5yb3dDb3VudCIsICIzIik7CisgICAgICAgIG91
dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUuY29sdW1uQ291bnQiLCAiMiIpOworICAg
ICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRS
b3coMCwgMykgPT09IG51bGwiLCAidHJ1ZSIpOworCisgICAgICAgIC8vIFRoZW4gYWRkIHRoZSBm
b3VydGggcm93IGJhY2sgdG8gdGhlIG5ldyB0Ym9keS4KKyAgICAgICAgb3V0cHV0ICs9IGV2YWxB
bmRSZXR1cm4oIm5ld1Rib2R5LmFwcGVuZENoaWxkKGNyZWF0ZUZvdXJ0aFJvdygpKSIpOworICAg
ICAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rh
YmxlJykuYXBwZW5kQ2hpbGQobmV3VGJvZHkpIik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBl
eHBlY3RBc3luYygidGFibGUucm93Q291bnQiLCAiNCIpOworICAgICAgICBvdXRwdXQgKz0gYXdh
aXQgZXhwZWN0QXN5bmMoInRhYmxlLmNvbHVtbkNvdW50IiwgIjMiKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKS5kb21JZGVudGlmaWVy
IiwgIidyM2MwJyIpOworCisgICAgICAgIGRlYnVnKG91dHB1dCk7CisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi1leHBlY3Rl
ZC50eHQKaW5kZXggNGRmNDUwNmMwZGEwLi44MTI2YzVlMzhjNGMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC01
Niw3ICs1Niw3IEBAIFBBU1MgYXhFbGVtZW50LnJvbGUgPT0gJ0FYUm9sZTogQVhMaXN0JyBpcyB0
cnVlCiAKIAogSW5saW5lIGxpc3QgZWxlbWVudHMgd2l0aCBhbiBhcmlhIHJvbGUgc2hvdWxkIGJl
IGEgbGlzdAotUEFTUyBheEVsZW1lbnQucm9sZSA9PSAnQVhSb2xlOiBBWExpc3QnIGlzIHRydWUK
K1BBU1MgYXhFbGVtZW50LnJvbGUgPT0gJ0FYUm9sZTogQVhMaXN0JyBpcyBmYWxzZQogCiAKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbGlzdC1kZXRlY3Rpb24uaHRtbAppbmRleCAyMDBiZTU5NjQ3YzYuLjNmMWUwMDE1MGYzZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24uaHRtbApAQCAt
NjMsNyArNjMsNyBAQAogPGRpdj5pdGVtPC9kaXY+CiA8L3VsPgogCi08dWwgaWQ9Imxpc3QxNCIg
cm9sZT0ibGlzdCIgdGVzdC1kZXNjcmlwdGlvbj0iSW5saW5lIGxpc3QgZWxlbWVudHMgd2l0aCBh
biBhcmlhIHJvbGUgc2hvdWxkIGJlIGEgbGlzdCIgaXMtbGlzdD0idHJ1ZSIgc3R5bGU9ImRpc3Bs
YXk6IHRhYmxlOyI+Cis8dWwgaWQ9Imxpc3QxNCIgcm9sZT0ibGlzdCIgdGVzdC1kZXNjcmlwdGlv
bj0iSW5saW5lIGxpc3QgZWxlbWVudHMgd2l0aCBhbiBhcmlhIHJvbGUgc2hvdWxkIGJlIGEgbGlz
dCIgaXMtbGlzdD0iZmFsc2UiIHN0eWxlPSJkaXNwbGF5OiB0YWJsZTsiPgogICA8bGkgcm9sZT0i
bGlzdGl0ZW0iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij5JdGVtIDE8L2xpPgogICA8
bGkgcm9sZT0ibGlzdGl0ZW0iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij5JdGVtIDI8
L2xpPgogICA8bGkgcm9sZT0ibGlzdGl0ZW0iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
Ij5JdGVtIDM8L2xpPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJs
ZS1pbmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvdGFibGUtaW5jb3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQKaW5kZXgg
MWJkZTFiYTkwMGQxLi5mNzRlZDQ1ZjM4NjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvdGFibGUtaW5jb3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4
cGVjdGVkLnR4dApAQCAtNSwxNyArNSwzNSBAQCBUaGlzIHRlc3RzIHRoZSByb3dSYW5nZSBhbmQg
Y29sdW1uUmFuZ2UgYXR0cmlidXRlcyBvZiB0YWJsZSBjZWxscyBpbiBhIHRhYmxlIHdpdAogT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVRhYmxlOiBSb3dzOiAyLCBDb2x1bW5zOiAzCitU
YWJsZTogUm93czogMiwgQ29sdW1uczogNgogW1RhYmxlIGNlbGwgYXQgcm93OiAwLCBjb2x1bW46
IDBdIFJvdyByYW5nZTogezAsIDF9LCBDb2x1bW4gcmFuZ2U6IHswLCAxfQogCVBBU1NFRCBDZWxs
IGlzIHNhbWUgY2VsbCBhdCAoMCwgMCkKLVtUYWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1uOiAw
XSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7MCwgMn0KK1tUYWJsZSBjZWxsIGF0
IHJvdzogMSwgY29sdW1uOiAwXSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7MCwg
NH0KIAlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDApCiAJUEFTU0VEIENlbGwgaXMg
c2FtZSBjZWxsIGF0ICgxLCAxKQotW1RhYmxlIGNlbGwgYXQgcm93OiAxLCBjb2x1bW46IDFdIFJv
dyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6IHswLCAyfQorCVBBU1NFRCBDZWxsIGlzIHNh
bWUgY2VsbCBhdCAoMSwgMikKKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDMpCitb
VGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogMV0gUm93IHJhbmdlOiB7MSwgMX0sIENvbHVt
biByYW5nZTogezAsIDR9CisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAwKQorCVBB
U1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMSkKKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNl
bGwgYXQgKDEsIDIpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAzKQorW1RhYmxl
IGNlbGwgYXQgcm93OiAxLCBjb2x1bW46IDJdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFu
Z2U6IHswLCA0fQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMCkKKwlQQVNTRUQg
Q2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDEpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0
ICgxLCAyKQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMykKK1tUYWJsZSBjZWxs
IGF0IHJvdzogMSwgY29sdW1uOiAzXSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7
MCwgNH0KIAlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDApCiAJUEFTU0VEIENlbGwg
aXMgc2FtZSBjZWxsIGF0ICgxLCAxKQotW1RhYmxlIGNlbGwgYXQgcm93OiAxLCBjb2x1bW46IDJd
IFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6IHsyLCAxfQogCVBBU1NFRCBDZWxsIGlz
IHNhbWUgY2VsbCBhdCAoMSwgMikKKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDMp
CitbVGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogNF0gUm93IHJhbmdlOiB7MSwgMX0sIENv
bHVtbiByYW5nZTogezQsIDJ9CisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCA0KQor
CVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgNSkKK1tUYWJsZSBjZWxsIGF0IHJvdzog
MSwgY29sdW1uOiA1XSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7NCwgMn0KKwlQ
QVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDQpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBj
ZWxsIGF0ICgxLCA1KQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLW11bHRp
cGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJs
ZS1tdWx0aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dAppbmRleCAyYWVkMzY2NWMxYWQuLjQ4MmI1
ZWY1ODk5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1tdWx0
aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3RhYmxlLW11bHRpcGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0CkBAIC0xMDE4LDcgKzEwMTgsNyBA
QCBBWEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhIaWdoZXN0RWRpdGFibGVBbmNlc3Rvcjog
KG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6IHsxLCAxfQogQVhDb2x1bW5JbmRleFJh
bmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9m
IHNpemUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFY
Um93SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYQVJJQUNvbHVtbkluZGV4
OiAtMQogQVhBUklBUm93SW5kZXg6IC0xCkBAIC0xMTM4LDcgKzExMzgsNyBAQCBBWEVkaXRhYmxl
QW5jZXN0b3I6IChudWxsKQogQVhIaWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJv
d0luZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1Jhbmdl
OiB7MiwgMX0KLUFYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FY
Q29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlF
bGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklB
Um93SW5kZXg6IC0xCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChu
dWxsKQogQVhIaWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6
IE5TUmFuZ2U6IHszLCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFY
Q29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVy
VUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFy
cmF5IG9mIHNpemUgMT4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0x
CkBAIC0xMzc4LDcgKzEzNzgsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhIaWdo
ZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6IHs0
LCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVhZGVy
VUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50czog
PGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUg
MT4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0xCkBAIC0xNDk4LDcg
KzE0OTgsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhIaWdoZXN0RWRpdGFibGVB
bmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6IHs1LCAxfQogQVhDb2x1
bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVhZGVyVUlFbGVtZW50czog
PGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNp
emUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYQVJJQUNv
bHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0xCkBAIC0xNjE4LDcgKzE2MTgsNyBAQCBB
WEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhIaWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51
bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6IHs2LCAxfQogQVhDb2x1bW5JbmRleFJhbmdl
OiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNp
emUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93
SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYQVJJQUNvbHVtbkluZGV4OiAt
MQogQVhBUklBUm93SW5kZXg6IC0xCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBBWEVkaXRhYmxlQW5j
ZXN0b3I6IChudWxsKQogQVhIaWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0lu
ZGV4UmFuZ2U6IE5TUmFuZ2U6IHs3LCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7
MiwgMX0KLUFYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29s
dW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVt
ZW50czogPGFycmF5IG9mIHNpemUgMD4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93
SW5kZXg6IC0xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXRo
ZWFkLXRmb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUt
dGhlYWQtdGZvb3QtZXhwZWN0ZWQudHh0CmluZGV4IGU0NDgzZjQyYmUyMC4uNWZmMTdmMjI0Yzhm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXRoZWFkLXRmb290
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXRoZWFk
LXRmb290LWV4cGVjdGVkLnR4dApAQCAtNzIyLDcgKzcyMiw3IEBAIEFYRWRpdGFibGVBbmNlc3Rv
cjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93SW5kZXhS
YW5nZTogTlNSYW5nZTogezEsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAx
fQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDb2x1bW5I
ZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVsZW1lbnRz
OiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhBUklBQ29sdW1uSW5kZXg6IC0xCiBBWEFSSUFSb3dJbmRl
eDogLTEKQEAgLTg0Miw3ICs4NDIsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhI
aWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6
IHsyLCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVh
ZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50
czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNp
emUgMT4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0xCkBAIC05NjIs
NyArOTYyLDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxl
QW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7MywgMX0KIEFYQ29s
dW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6
IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBz
aXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWEFSSUFD
b2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZ2VuZXJhdGVkLWNvbnRlbnQtd2l0aC1kaXNw
bGF5LXRhYmxlLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L2dlbmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10YWJsZS1jcmFzaC1l
eHBlY3RlZC50eHQKaW5kZXggZjUxODgwNGVhMjQzLi43Y2JhNDE3NjY3MDkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2dlbmVyYXRlZC1jb250ZW50
LXdpdGgtZGlzcGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZ2VuZXJhdGVkLWNvbnRlbnQtd2l0aC1kaXNwbGF5
LXRhYmxlLWNyYXNoLWV4cGVjdGVkLnR4dApAQCAtNyw3ICs3LDggQEAgQVhSb2xlOiBBWFdlYkFy
ZWEgQVhWYWx1ZToKICAgICAgICAgQVhSb2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1ZTogZm9vCiAg
ICAgICAgIEFYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6ICEKICAgICBBWFJvbGU6IEFYU3Rh
dGljVGV4dCBBWFZhbHVlOiBiYXIKLSAgICBBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiAh
CisgICAgQVhSb2xlOiBBWEdyb3VwIEFYVmFsdWU6CisgICAgICAgIEFYUm9sZTogQVhTdGF0aWNU
ZXh0IEFYVmFsdWU6ICEKICAgICBBWFJvbGU6IEFYR3JvdXAgQVhWYWx1ZToKICAgICAgICAgQVhS
b2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1ZTogYmF6CiAgICAgQVhSb2xlOiBBWEdyb3VwIEFYVmFs
dWU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466739</attachid>
            <date>2023-06-17 10:35:16 -0700</date>
            <delta_ts>2023-06-17 15:30:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-258223-20230617103515.patch</filename>
            <type>text/plain</type>
            <size>137901</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBhMGE1ZDg4MmU5MmNlMzI5ZGZkMDUyMWJlOGExOTZhM2U3Y2RkOTU5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCAxNiBKdW4gMjAyMyAxNDo1MToxMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBN
b3ZlCiBOU0FjY2Vzc2liaWxpdHlDZWxsRm9yQ29sdW1uQW5kUm93UGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBBUEkgb2ZmIHRoZQogbWFpbi10aHJlYWQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI1ODIyMwogcmRhcjovL3Byb2JsZW0vMTEwOTE5ODgzCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCldpdGggdGhpcyBwYXRjaCwgd2UgcmVwbGFjZSB0aGUgZXhpc3Rp
bmcgcmVuZGVyLXRyZWUtYmFzZWQgY29sdW1uIGFuZApyb3cgY2VsbCBzbG90IGRldGVybWluYXRp
b24gYWxnb3JpdGhtIHdpdGggYSBjdXN0b20gb25lIGJhc2VkIG9uOgoKaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjZm9ybWluZy1hLXRhYmxlCgpXZSB1
c2UgdGhpcyBmb3JtaW5nLWEtdGFibGUgYWxnb3JpdGhtIHRvIGJ1aWxkIGEgbmV3IGRhdGEgc3Ry
dWN0dXJlCmluZGljYXRpbmcgdGhlIGNlbGwgQVhJRCBvY2N1cGllZCBieSBlYWNoICJzbG90IiBp
biB0aGUgdGFibGU6IGBBY2Nlc3NpYmlsaXR5VGFibGU6Om1fc2xvdEdyaWRgCgpUaGlzIGhhcyB0
d28gYmVuZWZpdHM6CiAgMS4gV2UgY2FuIChhbmQgZG8pIGNvcHkgdGhpcyBkYXRhIHN0cnVjdHVy
ZSB0byB0aGUgc2Vjb25kYXJ5IHRocmVhZCwKICAgICBhbmQgdXNlIGl0IHRvIHBlcmZvcm0gYEFY
SXNvbGF0ZWRPYmplY3Q6OmNlbGxGb3JDb2x1bW5BbmRSb3dgCiAgICAgd2l0aG91dCByZWx5aW5n
IG9uIHRoZSBtYWluLXRocmVhZC4KCiAgMi4gVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgYWxn
b3JpdGhtIGRvZXMgbm90IHJlbHkgb24gYW55IHNvcnQgb2YKICAgICByZW5kZXIgdHJlZSBzdHJ1
Y3R1cmUgZm9yIGNvcnJlY3RuZXNzLiBUaGlzIGlzIGtleSBiZWNhdXNlIGF1dGhvcnMKICAgICBl
eHBlY3QgdG8gYmUgYWJsZSB0byBwdXQgYW55IENTUyBgZGlzcGxheWAgdmFsdWUgKGZsZXgsIGNv
bnRlbnRzLCBibG9jaywgZXRjKQogICAgIG9uIHJvd3MsIGNlbGxzLCBhbmQgdGFibGVzLCBhbmQg
cHJlc2VydmUgYWNjZXNzaWJpbGl0eSBzZW1hbnRpY3MuCiAgICAgVGhpcyBkaWRuJ3Qgd29yayBi
ZWZvcmUgdGhpcyBwYXRjaCBiZWNhdXNlIGFueSBvZiB0aGVzZSBkaXNwbGF5CiAgICAgdmFsdWVz
IHByZXZlbnQgUmVuZGVyVGFibGUsIFJlbmRlclRhYmxlUm93LCBhbmQgUmVuZGVyVGFibGVDZWxs
cwogICAgIGZyb20gYmVpbmcgZ2VuZXJhdGVkLCB3aGljaCB0aGUgUmVuZGVyVGFibGUgY2VsbC1m
b3ItY29sdW1uLWFuZC1yb3cKICAgICBtZWNoYW5pc20gcmVsaWVzIG9uLgoKVGhpcyBwYXRjaCBk
b2VzIG5vdCBmdWxseSBmaXggbm9uLXN0YW5kYXJkLWRpc3BsYXkgdmFsdWUgdGFibGVzIGR1ZSB0
bwppc3N1ZXMgd2l0aCBwYXJlbnQtY2hpbGQgbWlzbWF0Y2hlcyBpbiB0YWJsZSBoaWVyYXJjaGll
cyB3aXRoIHRoZXNlCmRpc3BsYXkgdmFsdWVzLiBUaGF0IHdpbGwgYmUgZml4ZWQgaW4gYSBsYXRl
ciBwYXRjaC4KClRoaXMgcGF0Y2ggYWxzbyBmZWF0dXJlcyBzZXZlcmFsIG90aGVyIGltcHJvdmVt
ZW50cy4KCiAgMS4gQVhQcm9wZXJ0eU5hbWU6OlJvd0NvdW50IGFuZCBBWFByb3BlcnR5TmFtZTo6
Q29sdW1uQ291bnQgd2VyZQogICAgIHBvaW50bGVzc2x5IGNhY2hlZCByYXRoZXIgdGhhbiBzaW1w
bHkgY291bnRpbmcgQVhQcm9wZXJ0eU5hbWU6OlJvd3MKICAgICBhbmQgQVhQcm9wZXJ0eU5hbWU6
OkNvbHVtbnMgKGFzIHRoZSBsaXZlIHRyZWUgaW1wbGVtZW50YXRpb24gZG9lcykuCiAgICAgVGhl
c2UgcHJvcGVydGllcyBhcmUgcmVtb3ZlZCwgcmVkdWNpbmcgbWVtb3J5IGFuZCBDUFUgY29uc3Vt
cHRpb24uCgogIDIuIEZpeGVkIGEgYnVnIHdoZXJlIHN0YWxlIGRhdGEgd2FzIG5vdCB1cGRhdGVk
IGFmdGVyIGR5bmFtaWMKICAgICBhcmlhLWNvbHNwYW4gY2hhbmdlcy4KCiAgMy4gRml4ZWQgYSBi
dWcgd2hlcmUgdGFibGUncyBjb2x1bW5zIHdlcmUgbm90IHVwZGF0ZWQgYWZ0ZXIgaXRzCiAgICAg
cm93cyBjaGlsZHJlbiBjaGFuZ2VkICh3aGljaCBjYW4gZWZmZWN0IGNvbHVtbnMpLgoKICA0LiBG
aXhlZCBhIHBlcmZvcm1hbmNlIGlzc3VlIHdoZXJlIGBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpp
c1RhYmxlQ2VsbGAsCiAgICAgdXNlZCB0byB0eXBlY2hlY2sgaXM8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbD4sIGRpZCBhIGBwYXJlbnRUYWJsZSgpYAogICAgIHRyYXZlcnNhbC4gVGhpcyBpcyBjb25m
dXNpbmcgYW5kIHZlcnkgbm9uLXBlcmZvcm1hbnQuIEEgbmV3CiAgICAgYGlzRXhwb3NlZFRhYmxl
Q2VsbGAgZnVuY3Rpb24gaXMgYWRkZWQgbWFraW5nIHRoaXMgaW50ZW50IG1vcmUKICAgICBjbGVh
ciwgYW5kIGltcHJvdmluZyBwZXJmb3JtYW5jZSBpbiB0aGUgYXJlYXMgdGhhdCBkb24ndCBuZWVk
IHRoaXMKICAgICB0cmF2ZXJzYWwuCgogIDUuIEFsbG93IGNyZWF0aW5nIEFjY2Vzc2liaWxpdHlU
YWJsZSwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCwgYW5kCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxl
Um93IHdpdGggbm8gcmVuZGVyZXIsIHdoaWNoIGlzIGNydWNpYWwgZm9yCiAgICAgZGlzcGxheTpj
b250ZW50cyBzdXBwb3J0LgoKVGhyZWUgdGVzdHMgYXJlIGFkZGVkIHRvIGVuc3VyZSB0aGUgc2xv
dC1ncmlkIGlzIHVwZGF0ZWQgYWZ0ZXIgZHluYW1pYyBjaGFuZ2VzOgogIC0gYWNjZXNzaWJpbGl0
eS9keW5hbWljLWNvbHNwYW4uaHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4u
aHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKCiog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0
bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhw
ZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3Rh
YmxlLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29s
c3Bhbi5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93
c3Bhbi1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy1yb3dzcGFuLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy10YWJsZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy5odG1sOiBBZGRlZC4KKiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dDoKKiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLmh0bWw6CiogTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4cGVjdGVkLnR4
dDoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLW11bHRpcGxlLXRib2RpZXMtZXhw
ZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtdGhlYWQtdGZvb3Qt
ZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2dl
bmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQ6Ciog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHA6CihXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
OgooV2ViQ29yZTo6bm9kZUhhc0dyaWRSb2xlKToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRh
YmxlKToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRhYmxlUm93KToKKFdlYkNvcmU6OmlzQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjcmVhdGVPYmpl
Y3RGcm9tUmVuZGVyZXIpOgooV2ViQ29yZTo6Y3JlYXRlRnJvbU5vZGUpOgooV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6aGFuZGxlQ2hpbGRyZW5DaGFuZ2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OmhhbmRsZVJlY29tcHV0ZVNsb3RHcmlkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Omhh
bmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2UpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFu
ZGxlQXR0cmlidXRlQ2hhbmdlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZl
cnJlZENhY2hlVXBkYXRlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUlzb2xhdGVk
VHJlZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpkZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdy
aWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgooV2Vi
Q29yZTo6bm9kZUhhc0dyaWRSb2xlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmRlZmVyUmVj
b21wdXRlVGFibGVTbG90R3JpZCk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNv
bXB1dGVTbG90R3JpZCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWQuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJs
ZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFk
ZFJvd0Rlc2NlbmRhbnQpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlk
OjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpheFJvd1NwYW5XaXRoUm93SW5kZXggY29uc3QpOiBEZWxldGVk
LgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSBj
b25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVk
Q2VsbHMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2xvdEdyaWQpOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6QWNjZXNzaWJpbGl0eVRhYmxlKToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6
aXNEYXRhVGFibGUgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRl
SXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6cmVjb21wdXRlSXNFeHBvc2FibGUpOgooV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVRhYmxlOjpzbG90R3JpZCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnNl
dFNsb3RHcmlkRGlydHkpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNoaWxk
cmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZTo6ZW5zdXJlUm93QW5kQ29sdW1uKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNF
eHBvc2FibGUgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjph
ZGRUYWJsZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6
OmFkZENoaWxkcmVuRnJvbVNlY3Rpb24pOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmlzRXhwb3NlZFRhYmxlQ2VsbCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CihXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlSGVhZGVyQ2VsbCBjb25zdCk6CihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRSb3cgY29uc3QpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OnRpdGxlVUlFbGVtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uSW5kZXggY29uc3QpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93U3BhbiBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpjb2xTcGFuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGw6OmlzVGFibGVDZWxsIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmF4Q29sdW1uU3BhbiBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd1NwYW4gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oOgooV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6c2V0Um93SW5kZXgpOgooV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6c2V0Q29sdW1uSW5kZXgpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6Y29sdW1uSGVhZGVyKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
OjpoZWFkZXJPYmplY3RGb3JTZWN0aW9uKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oOgoqIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6QWNjZXNzaWJpbGl0eVRhYmxlUm93KToKKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6
aGVhZGVyT2JqZWN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZVJvdy5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcDoKKiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGFibGVDZWxsUGFyZW50XSk6
CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlIZWFkZXJFbGVt
ZW50c10pOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMpOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y2VsbEZvckNvbHVtbkFuZFJv
dyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc1RhYmxlQ2VsbCBjb25zdCk6CiogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyk6
CihXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZUFuZERlcGVuZGVudFByb3BlcnRp
ZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgooLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6Ci0tLQogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAgICAgIHwgICA0ICsKIC4uLi9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8IDEwOSArKysrLQogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDEyICstCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICAgfCAgODIgLS0tLQogLi4u
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmggICAgIHwgICA3ICstCiAuLi4v
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgICAgICAgICAgICAgfCAxMDcgLS0tLS0KIC4u
Li9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCB8ICAgNiAtCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAgICAgfCAgIDIgKy0KIC4uLi9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCAgICAgICB8ICAgMiArCiAuLi4vQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oICAgICAgICAgICAgfCAgIDEgKwogLi4uL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCAgICAgIHwgNDIwICsrKysrKysrKysrKy0t
LS0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggICAgICAgIHwgIDM0
ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCAgfCAxMzIg
KysrLS0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmggICAgfCAg
MjUgKy0KIC4uLi9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwICAgICAgICAgICAgICB8IDEy
MyArLS0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmggIHwg
ICAzIC0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgICB8ICAy
OCArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmggICAgIHwgICAy
ICsKIC4uLi9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNwaS5jcHAgICB8ICAgMiAr
LQogLi4uL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNwaS5jcHAgICAgIHwgICAyICst
CiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tICAgfCAgIDQgKy0K
IC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgICAgICAgICB8ICAzNiArLQog
Li4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggICAgICAgICAgIHwgIDExICstCiAu
Li4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCAgICAgICAgICAgfCAgMjMgKy0KIC4u
Li9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAgNyArLQogLi4u
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAgIHwgICA0ICstCiAuLi4v
YXJpYS10YWJsZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgIDIgKy0KIC4uLi9h
Y2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy5odG1sICB8ICAgOCArLQogLi4uL2N1
c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQgICAgICAgIHwgICA0ICstCiAuLi4vYWNj
ZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUuaHRtbCAgfCAgIDQgKy0KIC4uLi9keW5h
bWljLWNvbHNwYW4tZXhwZWN0ZWQudHh0ICAgICAgICAgICAgICB8ICAyMiArCiAuLi4vYWNjZXNz
aWJpbGl0eS9keW5hbWljLWNvbHNwYW4uaHRtbCAgICAgICAgfCAgNjkgKysrCiAuLi4vZHluYW1p
Yy1yb3dzcGFuLWV4cGVjdGVkLnR4dCAgICAgICAgICAgICAgfCAgMjEgKwogLi4uL2FjY2Vzc2li
aWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwgICAgICAgIHwgIDY4ICsrKwogLi4uL2R5bmFtaWMt
dGFibGUtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0ICAgIHwgIDMzICsrCiAuLi4vZHluYW1pYy10
YWJsZS1kZXNjZW5kYW50cy5odG1sICAgICAgICAgICAgfCAxMDQgKysrKysKIC4uLi9hY2Nlc3Np
YmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dCB8ICAgMiArLQogTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi5odG1sIHwgICAyICstCiAuLi4vdGFibGUtaW5j
b3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQgfCAgMjYgKy0KIC4uLi90YWJsZS1tdWx0
aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dCAgICAgICB8ICAxNCArLQogLi4uL3RhYmxlLXRoZWFk
LXRmb290LWV4cGVjdGVkLnR4dCAgICAgICAgICAgIHwgICA2ICstCiAuLi50ZW50LXdpdGgtZGlz
cGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQgfCAgIDMgKy0KIDQyIGZpbGVzIGNoYW5nZWQs
IDk0OCBpbnNlcnRpb25zKCspLCA2MjggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhwZWN0ZWQudHh0CiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNw
YW4uaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy1yb3dzcGFuLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVzY2VuZGFudHMtZXhwZWN0
ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5h
bWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhMb2dnZXIuY3BwCmluZGV4IDFlNDdhNTUyN2MxZi4uZjQ3ZWJmNTJkZjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApAQCAtMjAzLDYgKzIwMyw3IEBAIHZv
aWQgQVhMb2dnZXI6OmxvZyhjb25zdCBTdHJpbmcmIGNvbGxlY3Rpb25OYW1lLCBjb25zdCBBWE9i
amVjdENhY2hlOjpEZWZlcnJlZENvCiAgICAgICAgIFsmc2l6ZV0gKGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8Tm9kZSosIE5vZGUqPj4mIHR5cGVkQ29sbGVjdGlvbikgeyBzaXplID0gdHlwZWRDb2xs
ZWN0aW9uLnNpemUoKTsgfSwKICAgICAgICAgWyZzaXplXSAoY29uc3QgV2Vha0hhc2hTZXQ8RWxl
bWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiYgdHlwZWRDb2xsZWN0aW9uKSB7
IHNpemUgPSB0eXBlZENvbGxlY3Rpb24uY29tcHV0ZVNpemUoKTsgfSwKICAgICAgICAgWyZzaXpl
XSAoY29uc3QgV2Vha0hhc2hTZXQ8SFRNTFRhYmxlRWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZl
bnRUYXJnZXREYXRhPiYgdHlwZWRDb2xsZWN0aW9uKSB7IHNpemUgPSB0eXBlZENvbGxlY3Rpb24u
Y29tcHV0ZVNpemUoKTsgfSwKKyAgICAgICAgWyZzaXplXSAoY29uc3QgV2Vha0hhc2hTZXQ8QWNj
ZXNzaWJpbGl0eVRhYmxlPiYgdHlwZWRDb2xsZWN0aW9uKSB7IHNpemUgPSB0eXBlZENvbGxlY3Rp
b24uY29tcHV0ZVNpemUoKTsgfSwKICAgICAgICAgW10gKGF1dG8mKSB7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU0NCw2ICs1NDUs
OSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgQVhPYmplY3RD
YWNoZTo6QVhOb3RpZmljYXRpb24gbm90aWZpYwogICAgIGNhc2UgQVhPYmplY3RDYWNoZTo6QVhO
b3RpZmljYXRpb246OkFYU2V0U2l6ZUNoYW5nZWQ6CiAgICAgICAgIHN0cmVhbSA8PCAiQVhTZXRT
aXplQ2hhbmdlZCI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVhPYmplY3RDYWNoZTo6QVhO
b3RpZmljYXRpb246OkFYU2xvdEdyaWRDaGFuZ2VkOgorICAgICAgICBzdHJlYW0gPDwgIkFYU2xv
dEdyaWRDaGFuZ2VkIjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWE9iamVjdENhY2hlOjpB
WE5vdGlmaWNhdGlvbjo6QVhUYWJsZUhlYWRlcnNDaGFuZ2VkOgogICAgICAgICBzdHJlYW0gPDwg
IkFYVGFibGVIZWFkZXJzQ2hhbmdlZCI7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggZjJlODdjMzJmYTU1Li5k
NTI1YjA2MzQzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcApAQCAtODksNiArODksNyBAQAogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVBh
cnRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlUm93RWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKQEAgLTU3Niw2ICs1
NzcsMTEgQEAgYm9vbCBub2RlSGFzUm9sZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHJvbGUpCiAg
ICAgcmV0dXJuIFNwYWNlU3BsaXRTdHJpbmc6OnNwYWNlU3BsaXRTdHJpbmdDb250YWluc1ZhbHVl
KHJvbGVWYWx1ZSwgcm9sZSwgU3BhY2VTcGxpdFN0cmluZzo6U2hvdWxkRm9sZENhc2U6Olllcyk7
CiB9CiAKK2Jvb2wgbm9kZUhhc0dyaWRSb2xlKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5v
ZGVIYXNSb2xlKG5vZGUsICJncmlkIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAidGFibGUiX3Mp
IHx8IG5vZGVIYXNSb2xlKG5vZGUsICJ0cmVlZ3JpZCJfcyk7Cit9CisKIHN0YXRpYyBib29sIGlz
U2ltcGxlSW1hZ2UoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKICAgICBpZiAoIWlz
PFJlbmRlckltYWdlPihyZW5kZXJlcikpCkBAIC02MTgsNiArNjI0LDIxIEBAIHN0YXRpYyBib29s
IGlzQWNjZXNzaWJpbGl0eVRyZWVJdGVtKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGVIYXNS
b2xlKG5vZGUsICJ0cmVlaXRlbSJfcyk7CiB9CiAKK3N0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0
eVRhYmxlKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIGlzPEhUTUxUYWJsZUVsZW1lbnQ+KG5v
ZGUpOworfQorCitzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlUYWJsZVJvdyhOb2RlKiBub2Rl
KQoreworICAgIHJldHVybiBpczxIVE1MVGFibGVSb3dFbGVtZW50Pihub2RlKTsKK30KKworc3Rh
dGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKE5vZGUqIG5vZGUpCit7CisgICAgcmV0
dXJuIGlzPEhUTUxUYWJsZUNlbGxFbGVtZW50Pihub2RlKTsKK30KKwogUmVmPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZU9iamVjdEZyb21SZW5kZXJlcihSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogewogICAgIC8vIEZJWE1FOiBIb3cgY291bGQgcmVuZGVyZXItPm5v
ZGUoKSBldmVyIG5vdCBiZSBhbiBFbGVtZW50PwpAQCAtNjI3LDcgKzY0OCw3IEBAIFJlZjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiBBWE9iamVjdENhY2hlOjpjcmVhdGVPYmplY3RGcm9tUmVuZGVyZXIo
UmVuZGVyT2JqZWN0KiByCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TGlzdDo6Y3JlYXRl
KHJlbmRlcmVyKTsKIAogICAgIC8vIGFyaWEgdGFibGVzCi0gICAgaWYgKG5vZGVIYXNSb2xlKG5v
ZGUsICJncmlkIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAidHJlZWdyaWQiX3MpIHx8IG5vZGVI
YXNSb2xlKG5vZGUsICJ0YWJsZSJfcykpCisgICAgaWYgKG5vZGVIYXNHcmlkUm9sZShub2RlKSkK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6Y3JlYXRlKHJlbmRlcmVyKTsK
ICAgICBpZiAobm9kZUhhc1JvbGUobm9kZSwgInJvdyJfcykpCiAgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5QVJJQUdyaWRSb3c6OmNyZWF0ZShyZW5kZXJlcik7CkBAIC02NzIsMTEgKzY5Mywx
MSBAQCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlT2JqZWN0
RnJvbVJlbmRlcmVyKFJlbmRlck9iamVjdCogcgogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eU1lbnVMaXN0OjpjcmVhdGUoZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KHJlbmRlcmVyKSk7CiAK
ICAgICAvLyBzdGFuZGFyZCB0YWJsZXMKLSAgICBpZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVy
KSkKKyAgICBpZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKSB8fCBpc0FjY2Vzc2liaWxpdHlU
YWJsZShub2RlKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKHJl
bmRlcmVyKTsKLSAgICBpZiAoaXM8UmVuZGVyVGFibGVSb3c+KHJlbmRlcmVyKSkKKyAgICBpZiAo
aXM8UmVuZGVyVGFibGVSb3c+KHJlbmRlcmVyKSB8fCBpc0FjY2Vzc2liaWxpdHlUYWJsZVJvdyhu
b2RlKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6Y3JlYXRlKHJlbmRl
cmVyKTsKLSAgICBpZiAoaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcikpCisgICAgaWYgKChp
czxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKSAmJiAhcmVuZGVyZXItPmlzQW5vbnltb3VzKCkp
IHx8IGlzQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChub2RlKSkKICAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShyZW5kZXJlcik7CiAKICAgICAvLyBwcm9ncmVzcyBi
YXIKQEAgLTcwMiw2ICs3MjMsMTIgQEAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBj
cmVhdGVGcm9tTm9kZShOb2RlJiBub2RlKQogewogICAgIGlmIChpc0FjY2Vzc2liaWxpdHlMaXN0
KCZub2RlKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlMaXN0OjpjcmVhdGUobm9kZSk7
CisgICAgaWYgKGlzQWNjZXNzaWJpbGl0eVRhYmxlKCZub2RlKSkKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKG5vZGUpOworICAgIGlmIChpc0FjY2Vzc2liaWxpdHlU
YWJsZVJvdygmbm9kZSkpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNy
ZWF0ZShub2RlKTsKKyAgICBpZiAoaXNBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKCZub2RlKSkKKyAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShub2RlKTsKICAgICBp
ZiAoaXNBY2Nlc3NpYmlsaXR5VHJlZSgmbm9kZSkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VHJlZTo6Y3JlYXRlKG5vZGUpOwogICAgIGlmIChpc0FjY2Vzc2liaWxpdHlUcmVlSXRlbSgm
bm9kZSkpCkBAIC0xMTY0LDYgKzExOTEsMTEgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVD
aGlsZHJlbkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQogICAgIH0gZWxzZSBp
ZiAoaXM8QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+KG9iamVjdCkpIHsKICAgICAgICAgZG93
bmNhc3Q8QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+KG9iamVjdCkuaGFuZGxlQ2hpbGRyZW5D
aGFuZ2VkKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKGF1dG8qIGF4VGFibGUg
PSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihvYmplY3QpKQorICAgICAgICBk
ZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdyaWQoKmF4VGFibGUpOworICAgIGVsc2UgaWYgKGF1dG8q
IGF4Um93ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ob2JqZWN0KSkg
eworICAgICAgICBpZiAoYXV0byogcGFyZW50VGFibGUgPSBheFJvdy0+cGFyZW50VGFibGUoKSkK
KyAgICAgICAgICAgIGRlZmVyUmVjb21wdXRlVGFibGVTbG90R3JpZCgqcGFyZW50VGFibGUpOwog
ICAgIH0KIAogICAgIGlmICghb2JqZWN0Lm5vZGUoKSAmJiAhb2JqZWN0LnJlbmRlcmVyKCkpCkBA
IC0xMjA3LDYgKzEyMzksMTQgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVDaGlsZHJlbkNo
YW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQogICAgIHBvc3RQbGF0Zm9ybU5vdGlm
aWNhdGlvbigmb2JqZWN0LCBBWENoaWxkcmVuQ2hhbmdlZCk7CiB9CiAKK3ZvaWQgQVhPYmplY3RD
YWNoZTo6aGFuZGxlUmVjb21wdXRlU2xvdEdyaWQoQWNjZXNzaWJpbGl0eVRhYmxlJiBheFRhYmxl
KQoreworICAgIGF4VGFibGUuc2V0U2xvdEdyaWREaXJ0eSgpOworI2lmIEVOQUJMRShBQ0NFU1NJ
QklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAgdXBkYXRlSXNvbGF0ZWRUcmVlKGF4VGFibGUsIEFY
U2xvdEdyaWRDaGFuZ2VkKTsKKyNlbmRpZgorfQorCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRs
ZU1lbnVPcGVuZWQoTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPnJlbmRl
cmVyKCkgfHwgIW5vZGVIYXNSb2xlKG5vZGUsICJtZW51Il9zKSkKQEAgLTIxMDUsNyArMjE0NSw3
IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZShFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBBdG9tU3RyCiAgICAgICAgIHBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbih0YXJnZXQsIEFYTm90aWZpY2F0aW9uOjpBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKTsK
IAogICAgICAgICAvLyBUYWJsZSBjZWxsIGFjdGl2ZSBkZXNjZW5kYW50IGNoYW5nZXMgc2hvdWxk
IHRyaWdnZXIgc2VsZWN0ZWQgY2VsbCBjaGFuZ2VzLgotICAgICAgICBpZiAodGFyZ2V0LT5pc1Rh
YmxlKCkgJiYgYWN0aXZlRGVzY2VuZGFudC0+aXNUYWJsZUNlbGwoKSkgeworICAgICAgICBpZiAo
dGFyZ2V0LT5pc1RhYmxlKCkgJiYgYWN0aXZlRGVzY2VuZGFudC0+aXNFeHBvc2VkVGFibGVDZWxs
KCkpIHsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgICAgICAg
ICAgdXBkYXRlSXNvbGF0ZWRUcmVlKHRhcmdldCwgQVhOb3RpZmljYXRpb246OkFYU2VsZWN0ZWRD
ZWxsc0NoYW5nZWQpOwogI2VuZGlmCkBAIC0yMjAzLDYgKzIyNDMsMjYgQEAgdm9pZCBBWE9iamVj
dENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYKICAgICBBWExPRyhtYWtlU3RyaW5nKCJhdHRyaWJ1dGUgIiwgYXR0ck5hbWUu
bG9jYWxOYW1lKCksICIgZm9yIGVsZW1lbnQgIiwgZWxlbWVudCA/IGVsZW1lbnQtPmRlYnVnRGVz
Y3JpcHRpb24oKSA6IFN0cmluZygibnVsbHB0ciJfcykpKTsKICAgICBBWExPRyhtYWtlU3RyaW5n
KCJvbGQgdmFsdWU6ICIsIG9sZFZhbHVlLCAiIG5ldyB2YWx1ZTogIiwgbmV3VmFsdWUpKTsKIAor
ICAgIGVudW0gY2xhc3MgVGFibGVQcm9wZXJ0eSA6IHVpbnQ4X3QgeyBFeHBvc2VkID0gMSA8PCAw
LCBTbG90R3JpZCA9IDEgPDwgMSB9OworICAgIGF1dG8gcmVjb21wdXRlUGFyZW50VGFibGVQcm9w
ZXJ0aWVzID0gW3RoaXNdIChFbGVtZW50KiBlbGVtZW50LCBPcHRpb25TZXQ8VGFibGVQcm9wZXJ0
eT4gcHJvcGVydGllcykgeworICAgICAgICBBU1NFUlQoIXByb3BlcnRpZXMuaXNFbXB0eSgpKTsK
KworICAgICAgICBpZiAoIXByb3BlcnRpZXMuY29udGFpbnMoVGFibGVQcm9wZXJ0eTo6U2xvdEdy
aWQpKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSdyZSByZS1jb21wdXRpbmcgdGhlIGV4cG9zZWQg
c3RhdGUgb2YgdGhlIHRhYmxlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gd29yayBmb3Igbm9uLUFSSUEg
dGFibGVzLCBhbGxvd2luZyB1cyB0bworICAgICAgICAgICAgLy8gZG8gYSBjaGVhcCBkeW5hbWlj
RG93bmNhc3QgY2hlY2sgZm9yIGFuIEhUTUxUYWJsZVBhcnRFbGVtZW50IHJhdGhlciB0aGFuIGNh
bGxpbmcgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cGFyZW50VGFibGUoKS4KKyAgICAgICAgICAg
IC8vIChBUklBIHRhYmxlcyBhcmUgaW5oZXJlbnRseSBhbHdheXMgZXhwb3NlZCkuCisgICAgICAg
ICAgICBpZiAoYXV0byogdGFibGVQYXJ0RWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MVGFi
bGVQYXJ0RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICAgICAgZGVmZXJSZWNvbXB1dGVU
YWJsZUlzRXhwb3NlZChjb25zdF9jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJsZVBhcnRFbGVt
ZW50LT5maW5kUGFyZW50VGFibGUoKS5nZXQoKSkpOworICAgICAgICB9IGVsc2UgaWYgKGF1dG8q
IGF4Q2VsbCA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihnZXRPckNy
ZWF0ZShlbGVtZW50KSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBwYXJlbnRUYWJsZSA9IGF4
Q2VsbC0+cGFyZW50VGFibGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmNv
bnRhaW5zKFRhYmxlUHJvcGVydHk6OkV4cG9zZWQpICYmICFwYXJlbnRUYWJsZS0+aXNBcmlhVGFi
bGUoKSkKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJSZWNvbXB1dGVUYWJsZUlzRXhwb3NlZChw
YXJlbnRUYWJsZS0+ZWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllcy5j
b250YWlucyhUYWJsZVByb3BlcnR5OjpTbG90R3JpZCkpCisgICAgICAgICAgICAgICAgICAgIGRl
ZmVyUmVjb21wdXRlVGFibGVTbG90R3JpZCgqcGFyZW50VGFibGUpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfTsKKwogICAgIGlmICghc2hvdWxkUHJvY2Vzc0F0dHJpYnV0ZUNoYW5n
ZShlbGVtZW50LCBhdHRyTmFtZSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjI0NSwxNiArMjMw
NSwxNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09
IG9wZW5BdHRyICYmIGlzPEhUTUxEaWFsb2dFbGVtZW50PigqZWxlbWVudCkpIHsKICAgICAgICAg
ZGVmZXJNb2RhbENoYW5nZShlbGVtZW50KTsKICAgICAgICAgcmVjb21wdXRlSXNJZ25vcmVkKGVs
ZW1lbnQtPnBhcmVudE5vZGUoKSk7CisgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSByb3dzcGFu
QXR0cikgeworICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYUm93U3BhbkNoYW5n
ZWQpOworICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgVGFi
bGVQcm9wZXJ0eTo6U2xvdEdyaWQpOworICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gY29sc3Bh
bkF0dHIpIHsKKyAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWENvbHVtblNwYW5D
aGFuZ2VkKTsKKyAgICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVQcm9wZXJ0aWVzKGVsZW1lbnQs
IFRhYmxlUHJvcGVydHk6OlNsb3RHcmlkKTsKICAgICB9CiAKICAgICBpZiAoIWF0dHJOYW1lLmxv
Y2FsTmFtZSgpLnN0cmluZygpLnN0YXJ0c1dpdGgoImFyaWEtIl9zKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byByZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlID0gW3RoaXNdIChFbGVt
ZW50KiBlbGVtZW50KSB7Ci0gICAgICAgIGlmIChhdXRvKiB0YWJsZVBhcnRFbGVtZW50ID0gZHlu
YW1pY0Rvd25jYXN0PEhUTUxUYWJsZVBhcnRFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgICAg
IGRlZmVyUmVjb21wdXRlVGFibGVJc0V4cG9zZWQoY29uc3RfY2FzdDxIVE1MVGFibGVFbGVtZW50
Kj4odGFibGVQYXJ0RWxlbWVudC0+ZmluZFBhcmVudFRhYmxlKCkuZ2V0KCkpKTsKLSAgICB9Owot
CiAgICAgaWYgKGF0dHJOYW1lID09IGFyaWFfYWN0aXZlZGVzY2VuZGFudEF0dHIpCiAgICAgICAg
IGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2UoKmVsZW1lbnQsIG9sZFZhbHVlLCBuZXdWYWx1
ZSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9hdG9taWNBdHRyKQpAQCAtMjI3NCwx
MCArMjMzNSwxMCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJgogICAgICAgICBkZWZlclJlY29t
cHV0ZVRhYmxlSXNFeHBvc2VkKGR5bmFtaWNEb3duY2FzdDxIVE1MVGFibGVFbGVtZW50PihlbGVt
ZW50KSk7CiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2NvbGluZGV4QXR0cikgewog
ICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYQ29sdW1uSW5kZXhDaGFuZ2VkKTsK
LSAgICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVFeHBvc3VyZShlbGVtZW50KTsKKyAgICAgICAg
cmVjb21wdXRlUGFyZW50VGFibGVQcm9wZXJ0aWVzKGVsZW1lbnQsIFRhYmxlUHJvcGVydHk6OkV4
cG9zZWQpOwogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9jb2xzcGFuQXR0cikgewog
ICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYQ29sdW1uU3BhbkNoYW5nZWQpOwot
ICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlKGVsZW1lbnQpOworICAgICAgICBy
ZWNvbXB1dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgeyBUYWJsZVByb3BlcnR5OjpT
bG90R3JpZCwgVGFibGVQcm9wZXJ0eTo6RXhwb3NlZCB9KTsKICAgICB9CiAgICAgZWxzZSBpZiAo
YXR0ck5hbWUgPT0gYXJpYV9kZXNjcmliZWRieUF0dHIpCiAgICAgICAgIHBvc3ROb3RpZmljYXRp
b24oZWxlbWVudCwgQVhEZXNjcmliZWRCeUNoYW5nZWQpOwpAQCAtMjI5Nyw3ICsyMzU4LDcgQEAg
dm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50
LCBBWFBsYWNlaG9sZGVyQ2hhbmdlZCk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9y
b3dpbmRleEF0dHIpIHsKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWFJvd0lu
ZGV4Q2hhbmdlZCk7Ci0gICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlRXhwb3N1cmUoZWxlbWVu
dCk7CisgICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlUHJvcGVydGllcyhlbGVtZW50LCB7IFRh
YmxlUHJvcGVydHk6OlNsb3RHcmlkLCBUYWJsZVByb3BlcnR5OjpFeHBvc2VkIH0pOwogICAgIH0K
ICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3ZhbHVlbWF4QXR0cikKICAgICAgICAgcG9z
dE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWE1heGltdW1WYWx1ZUNoYW5nZWQpOwpAQCAtMjM1NSw5
ICsyNDE2LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoRWxl
bWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICAgICAgaGFuZGxlUm93Q291
bnRDaGFuZ2VkKGdldChlbGVtZW50KSwgZWxlbWVudCA/ICZlbGVtZW50LT5kb2N1bWVudCgpIDog
bnVsbHB0cik7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9yb3dzcGFuQXR0cikgewog
ICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYUm93U3BhbkNoYW5nZWQpOwotICAg
ICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlKGVsZW1lbnQpOwotICAgIH0KLSAgICBl
bHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3NvcnRBdHRyKQorICAgICAgICByZWNvbXB1dGVQYXJl
bnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgeyBUYWJsZVByb3BlcnR5OjpTbG90R3JpZCwgVGFi
bGVQcm9wZXJ0eTo6RXhwb3NlZCB9KTsKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFf
c29ydEF0dHIpCiAgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhPYmplY3RDYWNo
ZTo6QVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCk7CiB9CiAKQEAgLTM2NzIsNiArMzczMiwxMiBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCkKICAgICAgICAg
aGFuZGxlQ2hpbGRyZW5DaGFuZ2VkKCpjaGlsZCk7CiAgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hh
bmdlZExpc3QuY2xlYXIoKTsKIAorICAgIEFYTE9HRGVmZXJyZWRDb2xsZWN0aW9uKCJSZWNvbXB1
dGVUYWJsZVNsb3RHcmlkTGlzdCJfcywgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRM
aXN0KTsKKyAgICBtX2RlZmVycmVkUmVjb21wdXRlVGFibGVTbG90R3JpZExpc3QuZm9yRWFjaChb
dGhpc10gKGF1dG8mIGF4VGFibGUpIHsKKyAgICAgICAgaGFuZGxlUmVjb21wdXRlU2xvdEdyaWQo
YXhUYWJsZSk7CisgICAgfSk7CisgICAgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRM
aXN0LmNsZWFyKCk7CisKICAgICBBWExPR0RlZmVycmVkQ29sbGVjdGlvbigiVGV4dENoYW5nZWRM
aXN0Il9zLCBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0KTsKICAgICBmb3IgKGF1dG8qIG5vZGUg
OiBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0KQogICAgICAgICBoYW5kbGVUZXh0Q2hhbmdlZChn
ZXRPckNyZWF0ZShub2RlKSk7CkBAIC0zODk4LDYgKzM5NjQsMTAgQEAgdm9pZCBBWE9iamVjdENh
Y2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QWNj
ZXNzaWJpbGkKICAgICAgICAgY2FzZSBBWFNldFNpemVDaGFuZ2VkOgogICAgICAgICAgICAgdHJl
ZS0+dXBkYXRlTm9kZVByb3BlcnRpZXMoKm5vdGlmaWNhdGlvbi5maXJzdCwgeyBBWFByb3BlcnR5
TmFtZTo6U2V0U2l6ZSwgQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzU2V0U2l6ZSB9KTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYU2xvdEdyaWRDaGFuZ2VkOgorICAgICAgICAg
ICAgQVNTRVJUKG5vdGlmaWNhdGlvbi5maXJzdC0+aXNUYWJsZSgpKTsKKyAgICAgICAgICAgIHRy
ZWUtPnVwZGF0ZU5vZGVQcm9wZXJ0eSgqbm90aWZpY2F0aW9uLmZpcnN0LCBBWFByb3BlcnR5TmFt
ZTo6U2xvdEdyaWQpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhUYWJsZUhl
YWRlcnNDaGFuZ2VkOgogICAgICAgICAgICAgdHJlZS0+dXBkYXRlTm9kZVByb3BlcnR5KCpub3Rp
ZmljYXRpb24uZmlyc3QsIEFYUHJvcGVydHlOYW1lOjpDb2x1bW5IZWFkZXJzKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtNDAwMiw2ICs0MDcyLDEzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVm
ZXJSZWNvbXB1dGVUYWJsZUlzRXhwb3NlZChFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBtX3Bl
cmZvcm1DYWNoZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCit2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmRlZmVyUmVjb21wdXRlVGFibGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUm
IGF4VGFibGUpCit7CisgICAgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRMaXN0LmFk
ZChheFRhYmxlKTsKKyAgICBpZiAoIW1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgbV9wZXJmb3JtQ2FjaGVVcGRhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsK
K30KKwogdm9pZCBBWE9iamVjdENhY2hlOjpkZWZlclRleHRDaGFuZ2VkSWZOZWVkZWQoTm9kZSog
bm9kZSkKIHsKICAgICBpZiAoIW5vZGVBbmRSZW5kZXJlckFyZVZhbGlkKG5vZGUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBmODRhNGExZmFm
YjEuLmY0Mzg2M2FhMTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIEhUTUxBcmVhRWxlbWVudDsKIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQ7CkBAIC0y
MjAsNyArMjIxLDggQEAgcHVibGljOgogICAgICAgICAsIFZlY3RvcjxBdHRyaWJ1dGVDaGFuZ2U+
CiAgICAgICAgICwgVmVjdG9yPHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+PgogICAgICAgICAsIFdl
YWtIYXNoU2V0PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4KLSAgICAg
ICAgLCBXZWFrSGFzaFNldDxIVE1MVGFibGVFbGVtZW50LCBXZWFrUHRySW1wbFdpdGhFdmVudFRh
cmdldERhdGE+PjsKKyAgICAgICAgLCBXZWFrSGFzaFNldDxIVE1MVGFibGVFbGVtZW50LCBXZWFr
UHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+CisgICAgICAgICwgV2Vha0hhc2hTZXQ8QWNjZXNz
aWJpbGl0eVRhYmxlPj47CiAgICAgdm9pZCBkZWZlck1vZGFsQ2hhbmdlKEVsZW1lbnQqKTsKICAg
ICB2b2lkIGRlZmVyTWVudUxpc3RWYWx1ZUNoYW5nZShFbGVtZW50Kik7CiAgICAgdm9pZCBkZWZl
ck5vZGVBZGRlZE9yUmVtb3ZlZChOb2RlKik7CkBAIC0zNTYsNiArMzU4LDcgQEAgcHVibGljOgog
ICAgICAgICBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkLAogICAgICAgICBBWFNlbGVjdGVkVGV4dENo
YW5nZWQsCiAgICAgICAgIEFYU2V0U2l6ZUNoYW5nZWQsCisgICAgICAgIEFYU2xvdEdyaWRDaGFu
Z2VkLAogICAgICAgICBBWFRhYmxlSGVhZGVyc0NoYW5nZWQsCiAgICAgICAgIEFYVVJMQ2hhbmdl
ZCwKICAgICAgICAgQVhWYWx1ZUNoYW5nZWQsCkBAIC00MzcsNiArNDQwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGVmZXJSZWNvbXB1dGVJc0lnbm9yZWRJZk5lZWRlZChFbGVtZW50Kik7CiAgICAg
dm9pZCBkZWZlclJlY29tcHV0ZUlzSWdub3JlZChFbGVtZW50Kik7CiAgICAgdm9pZCBkZWZlclJl
Y29tcHV0ZVRhYmxlSXNFeHBvc2VkKEVsZW1lbnQqKTsKKyAgICB2b2lkIGRlZmVyUmVjb21wdXRl
VGFibGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUmKTsKICAgICB2b2lkIGRlZmVyVGV4dENo
YW5nZWRJZk5lZWRlZChOb2RlKik7CiAgICAgdm9pZCBkZWZlclNlbGVjdGVkQ2hpbGRyZW5DaGFu
Z2VkSWZOZWVkZWQoRWxlbWVudCYpOwogICAgIHZvaWQgcGVyZm9ybURlZmVycmVkQ2FjaGVVcGRh
dGUoKTsKQEAgLTU2NCw2ICs1NjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlRm9jdXNl
ZFVJRWxlbWVudENoYW5nZWQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWRO
b2RlLCBVcGRhdGVNb2RhbCA9IFVwZGF0ZU1vZGFsOjpZZXMpOwogICAgIHZvaWQgaGFuZGxlTWVu
dUxpc3RWYWx1ZUNoYW5nZWQoRWxlbWVudCYpOwogICAgIHZvaWQgaGFuZGxlVGV4dENoYW5nZWQo
QWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIHZvaWQgaGFuZGxlUmVjb21wdXRlU2xvdEdyaWQo
QWNjZXNzaWJpbGl0eVRhYmxlJik7CiAKICAgICAvLyBhcmlhLW1vZGFsIG9yIG1vZGFsIDxkaWFs
b2c+IHJlbGF0ZWQKICAgICBib29sIGlzTW9kYWxFbGVtZW50KEVsZW1lbnQmKSBjb25zdDsKQEAg
LTYzNiw2ICs2NDEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8QVhJRD4gbV9kZWZlcnJlZFJl
bW92ZWRPYmplY3RzOwogICAgIFdlYWtIYXNoU2V0PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2
ZW50VGFyZ2V0RGF0YT4gbV9kZWZlcnJlZFJlY29tcHV0ZUlzSWdub3JlZExpc3Q7CiAgICAgV2Vh
a0hhc2hTZXQ8SFRNTFRhYmxlRWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRh
PiBtX2RlZmVycmVkUmVjb21wdXRlVGFibGVJc0V4cG9zZWRMaXN0OworICAgIFdlYWtIYXNoU2V0
PEFjY2Vzc2liaWxpdHlUYWJsZT4gbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRMaXN0
OwogICAgIExpc3RIYXNoU2V0PE5vZGUqPiBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0OwogICAg
IFdlYWtIYXNoU2V0PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4gbV9k
ZWZlcnJlZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2VkTGlzdDsKICAgICBMaXN0SGFzaFNldDxSZWZQ
dHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0OwpA
QCAtNjgwLDYgKzY4Niw3IEBAIHByaXZhdGU6CiB9OwogCiBib29sIG5vZGVIYXNSb2xlKE5vZGUq
LCBTdHJpbmdWaWV3IHJvbGUpOworYm9vbCBub2RlSGFzR3JpZFJvbGUoTm9kZSopOwogLy8gVGhp
cyB3aWxsIGxldCB5b3Uga25vdyBpZiBhcmlhLWhpZGRlbiB3YXMgZXhwbGljaXRseSBzZXQgdG8g
ZmFsc2UuCiBib29sIGlzTm9kZUFyaWFWaXNpYmxlKE5vZGUqKTsKICAgICAKQEAgLTcwNSw2ICs3
MTIsNyBAQCBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRGb3JjZURlZmVycmVkU3BlbGxD
aGVja2luZyhib29sKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRpc2FibGVBY2Nl
c3NpYmlsaXR5KCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRFbmhhbmNlZFVz
ZXJJbnRlcmZhY2VBY2Nlc3NpYmlsaXR5KGJvb2wpIHsgfQogaW5saW5lIGJvb2wgbm9kZUhhc1Jv
bGUoTm9kZSosIFN0cmluZ1ZpZXcpIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBub2Rl
SGFzR3JpZFJvbGUoTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CiBpbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpzdGFydENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRh
dGVzKCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzdG9wQ2FjaGluZ0NvbXB1dGVk
T2JqZWN0QXR0cmlidXRlcygpIHsgfQogaW5saW5lIGJvb2wgaXNOb2RlQXJpYVZpc2libGUoTm9k
ZSopIHsgcmV0dXJuIHRydWU7IH0KQEAgLTczMSw2ICs3MzksNyBAQCBpbmxpbmUgdm9pZCBBWE9i
amVjdENhY2hlOjpkZWZlclJlY29tcHV0ZUlzSWdub3JlZChFbGVtZW50KikgeyB9CiBpbmxpbmUg
dm9pZCBBWE9iamVjdENhY2hlOjpkZWZlclRleHRDaGFuZ2VkSWZOZWVkZWQoTm9kZSopIHsgfQog
aW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZElm
TmVlZGVkKEVsZW1lbnQmKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyVGV4
dFJlcGxhY2VtZW50Tm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6
OmRlZmVyUmVjb21wdXRlVGFibGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUmKSB7IH0KICNp
ZiAhUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQVRTUEkpCiBpbmxpbmUgdm9pZCBBWE9iamVjdENh
Y2hlOjpkZXRhY2hXcmFwcGVyKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50
VHlwZSkgeyB9CiAjZW5kaWYKQEAgLTc2NCw2ICs3NzMsNyBAQCBpbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKE5vZGUqLCBBWFRleHRFZGl0
VHlwZQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlm
aWNhdGlvbihOb2RlKiwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJ
c0lnbm9yZWQoUmVuZGVyT2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpo
YW5kbGVUZXh0Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KikgeyB9CitpbmxpbmUgdm9pZCBB
WE9iamVjdENhY2hlOjpoYW5kbGVSZWNvbXB1dGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUm
KSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUmVuZGVyZXJDcmVhdGVkKEVsZW1l
bnQmKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVz
cyhkb3VibGUpIHsgfQogaW5saW5lIFNpbXBsZVJhbmdlIEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9y
Tm9kZUNvbnRlbnRzKE5vZGUmIG5vZGUpIHsgcmV0dXJuIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cyhub2RlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IGU0ZTVmODVjMmI3ZS4uNWE0ODk5MjY2
OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBUklBR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QVJJQUdyaWQuY3BwCkBAIC01MSw5MiArNTEsMTAgQEAgUmVmPEFjY2Vzc2liaWxpdHlB
UklBR3JpZD4gQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQocmVu
ZGVyZXIpKTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENo
aWxkKEFYQ29yZU9iamVjdCogY2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBh
cHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKLXsKLSAgICBpZiAoIWNoaWxkIHx8
ICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqY2hpbGQpICYmICFjaGlsZC0+aXNBUklBVHJl
ZUdyaWRSb3coKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHJvdyA9IGRv
d25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKmNoaWxkKTsKLSAgICBpZiAoYXBwZW5kZWRS
b3dzLmNvbnRhaW5zKCZyb3cpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBzdG9y
ZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucwotICAgIHVuc2lnbmVkIHJvd0NlbGxDb3Vu
dCA9IHJvdy5jaGlsZHJlbigpLnNpemUoKTsKLSAgICBpZiAocm93Q2VsbENvdW50ID4gY29sdW1u
Q291bnQpCi0gICAgICAgIGNvbHVtbkNvdW50ID0gcm93Q2VsbENvdW50OwotCi0gICAgcm93LnNl
dFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7Ci0gICAgbV9yb3dzLmFwcGVuZCgmcm93KTsK
LSAgICBhZGRDaGlsZCgmcm93KTsKLSAgICBhcHBlbmRlZFJvd3MuYWRkKCZyb3cpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCiBib29sIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6aXNNdWx0aVNlbGVj
dGFibGUoKSBjb25zdAogewogICAgIGNvbnN0IEF0b21TdHJpbmcmIGFyaWFNdWx0aVNlbGVjdGFi
bGUgPSBnZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX211bHRpc2VsZWN0YWJsZUF0dHIpOwog
ICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYU11bHRpU2VsZWN0
YWJsZSwgImZhbHNlIl9zKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFJv
d0Rlc2NlbmRhbnQoQVhDb3JlT2JqZWN0KiByb3dDaGlsZCwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KQotewotICAgIGlm
ICghcm93Q2hpbGQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghcm93Q2hpbGQtPmlzVGFi
bGVSb3coKSB8fCAhcm93Q2hpbGQtPm5vZGUoKSkgewotICAgICAgICAvLyBBbHRob3VnaCBhICJn
cmlkIiBzaG91bGQgaGF2ZSByb3dzIGFzIGl0cyBkaXJlY3QgZGVzY2VuZGFudHMsIGlmIHRoaXMg
aXMgbm90IGEgdGFibGUgcm93LAotICAgICAgICAvLyBvciB0aGlzIHJvdyBpcyBhbm9ueW1vdXMs
IGRpdmUgZGVlcGVyIGludG8gdGhlIGRlc2NlbmRhbnRzIHRvIHRyeSB0byBmaW5kIGEgdmFsaWQg
cm93LgotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcm93Q2hpbGQtPmNoaWxkcmVu
KCkpCi0gICAgICAgICAgICBhZGRSb3dEZXNjZW5kYW50KGNoaWxkLmdldCgpLCBhcHBlbmRlZFJv
d3MsIGNvbHVtbkNvdW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgYWRkVGFibGVDZWxsQ2hpbGQo
cm93Q2hpbGQsIGFwcGVuZGVkUm93cywgY29sdW1uQ291bnQpOwotfQotCi12b2lkIEFjY2Vzc2li
aWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4oKQotewotICAgIEFTU0VSVCghbV9jaGlsZHJlbklu
aXRpYWxpemVkKTsgCi0gICAgCi0gICAgaWYgKCFpc0V4cG9zYWJsZSgpKSB7Ci0gICAgICAgIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCi0gICAgbV9jaGlsZHJlbkluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICBhdXRv
KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgYXV0byogYXhDYWNoZSA9IGRvY3Vt
ZW50ID8gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7Ci0KLSAgICAvLyBBZGQg
dGhlIGNoaWxkcmVuIHJvd3MgYnV0IGJlIG1pbmRmdWwgaW4gY2FzZSB0aGVyZSBhcmUgZm9vdGVy
IHNlY3Rpb25zIGluIHRoaXMgdGFibGUuCi0gICAgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0
Kj4gYXBwZW5kZWRSb3dzOwotICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50ID0gMDsKLSAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZm9vdGVyU2VjdGlvbnM7Ci0gICAgZm9yIChSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4gY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGJvb2wgZm9vdGVyU2VjdGlvbiA9IGZh
bHNlOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBjaGlsZFJlbmRlcmVyID0gY2hpbGQtPnJl
bmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChpczxSZW5kZXJUYWJsZVNlY3Rpb24+KCpjaGls
ZFJlbmRlcmVyKSkgewotICAgICAgICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlvbiYgY2hpbGRT
ZWN0aW9uID0gZG93bmNhc3Q8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hpbGRSZW5kZXJlcik7Ci0g
ICAgICAgICAgICAgICAgaWYgKCZjaGlsZFNlY3Rpb24gPT0gY2hpbGRTZWN0aW9uLnRhYmxlKCkt
PmZvb3RlcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvb3RlclNlY3Rpb25zLmFwcGVuZChj
aGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvb3RlclNlY3Rpb24gPSB0cnVlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWZvb3Rl
clNlY3Rpb24pCi0gICAgICAgICAgICBhZGRSb3dEZXNjZW5kYW50KGNoaWxkLmdldCgpLCBhcHBl
bmRlZFJvd3MsIGNvbHVtbkNvdW50KTsKLSAgICB9Ci0gICAgCi0gICAgZm9yIChjb25zdCBhdXRv
JiBmb290ZXJTZWN0aW9uIDogZm9vdGVyU2VjdGlvbnMpCi0gICAgICAgIGFkZFJvd0Rlc2NlbmRh
bnQoZm9vdGVyU2VjdGlvbi5nZXQoKSwgYXBwZW5kZWRSb3dzLCBjb2x1bW5Db3VudCk7Ci0gICAg
Ci0gICAgLy8gbWFrZSB0aGUgY29sdW1ucyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMg
aW4gdGhlIGZpcnN0IGJvZHkKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sdW1uQ291
bnQ7ICsraSkgewotICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4+KCpheENhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbikp
OwotICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7Ci0gICAgICAgIGNvbHVtbi5zZXRQ
YXJlbnQodGhpcyk7Ci0gICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7Ci0gICAgICAg
IGFkZENoaWxkKCZjb2x1bW4sIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsKLSAgICB9Ci0KLSAgICBh
ZGRDaGlsZChoZWFkZXJDb250YWluZXIoKSwgRGVzY2VuZElmSWdub3JlZDo6Tm8pOwotfQotICAg
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKaW5kZXggYWVjYzlhOGJiYjRlLi5lMjhi
YTk2YTNiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWQuaApAQCAtNDAsOSArNDAsNyBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5
QVJJQUdyaWQgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVRhYmxlIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZD4gY3JlYXRlKFJlbmRlck9iamVjdCop
OwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlBUklBR3JpZCgpOwotICAgIAotICAgIHZvaWQg
YWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKLSAgICAKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQoUmVuZGVyT2JqZWN0Kik7CiAgICAgYm9vbCBpc0FjY2Vzc2li
aWxpdHlBUklBR3JpZEluc3RhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtNTIsOSArNTAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICBib29sIGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFj
Y2Vzc2liaWxpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBp
c0FyaWFUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAKLSAgICB2
b2lkIGFkZFJvd0Rlc2NlbmRhbnQoQVhDb3JlT2JqZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KTsKLSAgICBib29s
IGFkZFRhYmxlQ2VsbENoaWxkKEFYQ29yZU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9i
amVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKaW5kZXggYWZlYTFmMzJhZDY5
Li5kZTQ4Njk3M2JkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApAQCAtNjEsMTEzICs2MSw2IEBA
IEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50VGFi
bGUoKSBjb25zdAogICAgIH0pKTsKIH0KICAgICAKLXN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+IEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2UoKSBjb25zdAotewot
ICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlIHsgMCwgMSB9OwotICAg
IEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYg
KCFwYXJlbnQpCi0gICAgICAgIHJldHVybiByb3dSYW5nZTsKLQotICAgIGlmIChpczxBY2Nlc3Np
YmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpKSB7Ci0gICAgICAgIC8vIFdlIGFscmVhZHkgZ290IGEg
dGFibGUgcm93LCB1c2UgaXRzIEFQSS4KLSAgICAgICAgcm93UmFuZ2UuZmlyc3QgPSBkb3duY2Fz
dDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpLnJvd0luZGV4KCk7Ci0gICAgfSBlbHNl
IGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpICYmIGRvd25jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGUoKSkgewotICAgICAgICAvLyBXZSByZWFj
aGVkIHRoZSBwYXJlbnQgdGFibGUsIHNvIHdlIG5lZWQgdG8gaW5zcGVjdCBpdHMKLSAgICAgICAg
Ly8gY2hpbGRyZW4gdG8gZGV0ZXJtaW5lIHRoZSByb3cgaW5kZXggZm9yIHRoZSBjZWxsIGluIGl0
LgotICAgICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZT4oKnBhcmVudCkuY29sdW1uQ291bnQoKTsKLSAgICAgICAgaWYgKCFjb2x1bW5Db3VudCkK
LSAgICAgICAgICAgIHJldHVybiByb3dSYW5nZTsKLQotICAgICAgICBjb25zdCBhdXRvJiBzaWJs
aW5ncyA9IHBhcmVudC0+Y2hpbGRyZW4oKTsKLSAgICAgICAgdW5zaWduZWQgY2hpbGRyZW5TaXpl
ID0gc2libGluZ3Muc2l6ZSgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY2hp
bGRyZW5TaXplOyArK2spIHsKLSAgICAgICAgICAgIGlmIChzaWJsaW5nc1trXS5nZXQoKSA9PSB0
aGlzKSB7Ci0gICAgICAgICAgICAgICAgcm93UmFuZ2UuZmlyc3QgPSBrIC8gY29sdW1uQ291bnQ7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBBUklBIDEuMSwgYXJpYS1yb3dzcGFuIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCBm
b3IgY2VsbHMgYW5kIGdyaWRjZWxscyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZCBpbiBhIG5hdGl2
ZSB0YWJsZS4KLSAgICAvLyBTbyB3ZSBzaG91bGQgY2hlY2sgZm9yIHRoYXQgYXR0cmlidXRlIGhl
cmUuCi0gICAgcm93UmFuZ2Uuc2Vjb25kID0gYXhSb3dTcGFuV2l0aFJvd0luZGV4KHJvd1Jhbmdl
LmZpcnN0KTsKLQotICAgIHJldHVybiByb3dSYW5nZTsKLX0KLQotdW5zaWduZWQgQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbDo6YXhSb3dTcGFuV2l0aFJvd0luZGV4KHVuc2lnbmVkIHJvd0luZGV4
KSBjb25zdAotewotICAgIGludCByb3dTcGFuID0gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhS
b3dTcGFuKCk7Ci0gICAgaWYgKHJvd1NwYW4gPT0gLTEpIHsKLSAgICAgICAgYXV0byByYW5nZSA9
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UoKTsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWF4KHJhbmdlLnNlY29uZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpKTsKLSAgICB9
Ci0KLSAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwot
ICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm4gMTsKLSAgICAKLSAgICAvLyBTZXR0aW5n
IHRoZSB2YWx1ZSB0byAwIGluZGljYXRlcyB0aGF0IHRoZSBjZWxsIG9yIGdyaWRjZWxsIGlzIHRv
IHNwYW4gYWxsIHRoZSByZW1haW5pbmcgcm93cyBpbiB0aGUgcm93IGdyb3VwLgotICAgIGlmICgh
cm93U3BhbikgewotICAgICAgICAvLyByb3dTcGFuIGRlZmF1bHRzIHRvIDEuCi0gICAgICAgIHJv
d1NwYW4gPSAxOwotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50Um93R3Jv
dXAgPSB0aGlzLT5wYXJlbnRSb3dHcm91cCgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgcm93
IGdyb3VwIGlzIHRoZSBwYXJlbnQgdGFibGUsIHdlIHVzZSB0b3RhbCByb3cgY291bnQgdG8gY2Fs
Y3VsYXRlIHRoZSBzcGFuLgotICAgICAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4o
KnBhcmVudFJvd0dyb3VwKSkKLSAgICAgICAgICAgICAgICByb3dTcGFuID0gZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50Um93R3JvdXApLnJvd0NvdW50KCkgLSByb3dJbmRleDsK
LSAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgaGF2ZSB0byBnZXQgdGhlIGluZGV4IGZvciB0
aGUgY3VycmVudCByb3cgd2l0aGluIHRoZSBwYXJlbnQgcm93IGdyb3VwLgotICAgICAgICAgICAg
ZWxzZSBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50KSkgewotICAgICAgICAg
ICAgICAgIGNvbnN0IGF1dG8mIHNpYmxpbmdzID0gcGFyZW50Um93R3JvdXAtPmNoaWxkcmVuKCk7
Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgcm93Q291bnQgPSBzaWJsaW5ncy5zaXplKCk7Ci0g
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IHJvd0NvdW50OyArK2spIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmdzW2tdLmdldCgpID09IHBhcmVudCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgcm93U3BhbiA9IHJvd0NvdW50IC0gazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJv
d1NwYW47Ci19Ci0KLXN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IEFjY2Vzc2liaWxpdHlB
UklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdAotewotICAgIHN0ZDo6cGFpcjx1
bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlIHsgMCwgMSB9OwotICAgIEFYQ29yZU9iamVj
dCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFwYXJlbnQpCi0g
ICAgICAgIHJldHVybiBjb2x1bW5SYW5nZTsKLQotICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRh
YmxlUm93PigqcGFyZW50KQotICAgICAgICAmJiAhKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBh
cmVudCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJs
ZSgpKSkKLSAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlOwotCi0gICAgY29uc3QgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiBzaWJsaW5ncyA9IHBhcmVudC0+Y2hpbGRyZW4oKTsKLSAgICB1
bnNpZ25lZCBjaGlsZHJlblNpemUgPSBzaWJsaW5ncy5zaXplKCk7Ci0gICAgdW5zaWduZWQgaW5k
ZXhXaXRoU3BhbiA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNoaWxkcmVuU2l6
ZTsgKytrKSB7Ci0gICAgICAgIGF1dG8qIGNoaWxkID0gc2libGluZ3Nba10uZ2V0KCk7Ci0gICAg
ICAgIGlmIChjaGlsZCA9PSB0aGlzKSB7Ci0gICAgICAgICAgICBjb2x1bW5SYW5nZS5maXJzdCA9
IGluZGV4V2l0aFNwYW47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBp
bmRleFdpdGhTcGFuICs9IGlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpjaGlsZCkgPyBzdGQ6
Om1heChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hpbGQpLmF4Q29sdW1uU3Bh
bigpLCAxKSA6IDE7Ci0gICAgfQotICAgIAotICAgIC8vIEFSSUEgMS4xLCBhcmlhLWNvbHNwYW4g
YXR0cmlidXRlIGlzIGludGVuZGVkIGZvciBjZWxscyBhbmQgZ3JpZGNlbGxzIHdoaWNoIGFyZSBu
b3QgY29udGFpbmVkIGluIGEgbmF0aXZlIHRhYmxlLgotICAgIC8vIFNvIHdlIHNob3VsZCBjaGVj
ayBmb3IgdGhhdCBhdHRyaWJ1dGUgaGVyZS4KLSAgICBpbnQgY29sdW1uU3BhbiA9IEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uU3BhbigpOwotICAgIGlmIChjb2x1bW5TcGFuID09IC0x
KSB7Ci0gICAgICAgIGF1dG8gcmFuZ2UgPSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5J
bmRleFJhbmdlKCk7Ci0gICAgICAgIGNvbHVtblNwYW4gPSByYW5nZS5zZWNvbmQ7Ci0gICAgfQot
Ci0gICAgY29sdW1uUmFuZ2Uuc2Vjb25kID0gc3RkOjptYXgoY29sdW1uU3BhbiwgMSk7Ci0KLSAg
ICByZXR1cm4gY29sdW1uUmFuZ2U7Ci19Ci0KIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGw6OnBhcmVudFJvd0dyb3VwKCkgY29uc3QKIHsKICAgICBmb3IgKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVu
dCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgKaW5kZXggOGFjYWE5
Yjk1NTYxLi4xMGYyNDk2Y2IxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCkBAIC00MSwxNCArNDEsOCBA
QCBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwoUmVuZGVy
T2JqZWN0Kik7CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGxJbnN0YW5jZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIC8vIFJldHVybnMgdGhlIHN0
YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0aGUgY2VsbC4KLSAgICBzdGQ6OnBhaXI8dW5z
aWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgLy8g
UmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIHRoZSBjZWxsLgot
ICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtbkluZGV4UmFuZ2UoKSBjb25z
dCBvdmVycmlkZTsKLQogICAgIEFjY2Vzc2liaWxpdHlUYWJsZSogcGFyZW50VGFibGUoKSBjb25z
dCBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRSb3dHcm91cCgpIGNv
bnN0OwotICAgIHVuc2lnbmVkIGF4Um93U3BhbldpdGhSb3dJbmRleCh1bnNpZ25lZCBpbmRleCkg
Y29uc3Q7CiAgICAgU3RyaW5nIHJlYWRPbmx5VmFsdWUoKSBjb25zdCBvdmVycmlkZTsKIH07IAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAppbmRleCA5ZjVhNTgxNmE5ZGYuLjJhNmJmZDdkMjhiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0z
MDg5LDcgKzMwODksNyBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RlZENlbGxzKCkKICAgICB9CiAKICAgICBpZiAo
YXV0byogYWN0aXZlRGVzY2VuZGFudCA9IHRoaXMtPmFjdGl2ZURlc2NlbmRhbnQoKSkgewotICAg
ICAgICBpZiAoYWN0aXZlRGVzY2VuZGFudC0+aXNUYWJsZUNlbGwoKSAmJiAhc2VsZWN0ZWRDZWxs
cy5jb250YWlucyhhY3RpdmVEZXNjZW5kYW50KSkKKyAgICAgICAgaWYgKGFjdGl2ZURlc2NlbmRh
bnQtPmlzRXhwb3NlZFRhYmxlQ2VsbCgpICYmICFzZWxlY3RlZENlbGxzLmNvbnRhaW5zKGFjdGl2
ZURlc2NlbmRhbnQpKQogICAgICAgICAgICAgc2VsZWN0ZWRDZWxscy5hcHBlbmQoYWN0aXZlRGVz
Y2VuZGFudCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDhiNGE1OGE0NzAwNy4uZjYwZjQxYWY1ZGEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaApAQCAtMTU0LDkgKzE1NCwxMSBAQCBwdWJsaWM6CiAgICAgQVhDb3JlT2JqZWN0KiBoZWFk
ZXJDb250YWluZXIoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgaW50IGF4Q29s
dW1uQ291bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgaW50IGF4Um93Q291
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBWZWN0b3I8VmVj
dG9yPEFYSUQ+PiBzbG90R3JpZCgpIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgLy8gVGFibGUgY2Vs
bCBzdXBwb3J0LgogICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNFeHBvc2VkVGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQg
cm93IHNwYW4gb2YgdGhlIGNlbGwuCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
cm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgMCwgMSB9OyB9CiAgICAg
Ly8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIHRoZSBjZWxs
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCA2MTBmNzkzMDg3ZDMuLjM0MTBlOWExM2UyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTg4Nyw2ICs4ODcsNyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBUYWJsZSBjZWxsIHN1cHBvcnQuCiAgICAgdmlydHVhbCBib29sIGlzVGFibGVDZWxsKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0V4cG9zZWRUYWJsZUNlbGwoKSBjb25zdCA9
IDA7CiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRo
ZSBjZWxsLgogICAgIHZpcnR1YWwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5k
ZXhSYW5nZSgpIGNvbnN0ID0gMDsKICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBh
bmQgY29sdW1uIHNwYW4gb2YgdGhlIGNlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXggM2E3ZWZiZTU5MGM3Li43YWFj
MjI4YjcxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKIAotI2luY2x1ZGUgIkFYTG9nZ2VyLmgi
CiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCIKQEAgLTM3LDIx
ICszNiwxNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgogI2luY2x1ZGUg
IkVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkVsZW1lbnRDaGls
ZEl0ZXJhdG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZUNhcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlUm93
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKICNpbmNsdWRlICJS
ZW5kZXJUYWJsZUNlbGwuaCIKLSNpbmNsdWRlICJSZW5kZXJUYWJsZVNlY3Rpb24uaCIKLSNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwotCiBBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChy
ZW5kZXJlcikKICAgICAsIG1faGVhZGVyQ29udGFpbmVyKG51bGxwdHIpCkBAIC01OSw2ICs1NCwx
MyBAQCBBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZShSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogewogfQogCitBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJs
ZShOb2RlJiBub2RlKQorICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChub2RlKQorICAg
ICwgbV9oZWFkZXJDb250YWluZXIobnVsbHB0cikKKyAgICAsIG1faXNFeHBvc2FibGUodHJ1ZSkK
K3sKK30KKwogQWNjZXNzaWJpbGl0eVRhYmxlOjp+QWNjZXNzaWJpbGl0eVRhYmxlKCkgPSBkZWZh
dWx0OwogCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6aW5pdCgpCkBAIC03Miw2ICs3NCwxMSBA
QCBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlPiBBY2Nlc3NpYmlsaXR5VGFibGU6OmNyZWF0ZShSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxp
dHlUYWJsZShyZW5kZXJlcikpOwogfQogCitSZWY8QWNjZXNzaWJpbGl0eVRhYmxlPiBBY2Nlc3Np
YmlsaXR5VGFibGU6OmNyZWF0ZShOb2RlJiBub2RlKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFjY2Vzc2liaWxpdHlUYWJsZShub2RlKSk7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVRh
YmxlOjpoYXNOb25UYWJsZUFSSUFSb2xlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGFyaWFSb2xl
QXR0cmlidXRlKCkpIHsKQEAgLTg1LDExICs5Miw2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxl
OjpoYXNOb25UYWJsZUFSSUFSb2xlKCkgY29uc3QKICAgICB9CiB9CiAKLWJvb2wgQWNjZXNzaWJp
bGl0eVRhYmxlOjppc0V4cG9zYWJsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faXNFeHBvc2Fi
bGUgJiYgKG1fcmVuZGVyZXIgfHwgaXM8SFRNTFRhYmxlRWxlbWVudD4obm9kZSgpKSk7Ci19Ci0K
IEhUTUxUYWJsZUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVFbGVtZW50KCkgY29u
c3QKIHsKICAgICBpZiAoYXV0byogdGFibGVFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxU
YWJsZUVsZW1lbnQ+KG5vZGUoKSkpCkBAIC0xMTMsMTEgKzExNSw4IEBAIEhUTUxUYWJsZUVsZW1l
bnQqIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVFbGVtZW50KCkgY29uc3QKIAogYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcmVuZGVy
ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8qIG9iamVjdENhY2hlID0gYXhP
YmplY3RDYWNoZSgpOwotICAgIGlmICghb2JqZWN0Q2FjaGUpCisgICAgV2Vha1B0ciBjYWNoZSA9
IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBEbyBub3QgY29uc2lkZXIgaXQgYSBkYXRhIHRhYmxlIGlmIGl0IGhhcyBhIG5v
bi10YWJsZSBBUklBIHJvbGUuCkBAIC0xMzAsMTQgKzEyOSwxMSBAQCBib29sIEFjY2Vzc2liaWxp
dHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgIGlmIChub2RlKCkgJiYgbm9kZSgpLT5o
YXNFZGl0YWJsZVN0eWxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFpczxS
ZW5kZXJUYWJsZT4oKm1fcmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAv
LyBUaGlzIGVtcGxveXMgYSBoZXVyaXN0aWMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgdGFibGUgc2hv
dWxkIGFwcGVhci4KICAgICAvLyBPbmx5ICJkYXRhIiB0YWJsZXMgc2hvdWxkIGJlIGV4cG9zZWQg
YXMgdGFibGVzLgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoZXJlIGlzIG5vIGdvb2Qgd2F5IHRv
IGRldGVybWluZSB0aGUgZGlmZmVyZW5jZQogICAgIC8vIGJldHdlZW4gYSAibGF5b3V0IiB0YWJs
ZSBhbmQgYSAiZGF0YSIgdGFibGUuCi0gICAgaWYgKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlRWxl
bWVudCA9IHRoaXMtPnRhYmxlRWxlbWVudCgpKSB7CisgICAgaWYgKFdlYWtQdHIgdGFibGVFbGVt
ZW50ID0gdGhpcy0+dGFibGVFbGVtZW50KCkpIHsKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBj
YXB0aW9uIGVsZW1lbnQsIHN1bW1hcnksIFRIRUFELCBvciBURk9PVCBzZWN0aW9uLCBpdCdzIG1v
c3QgY2VydGFpbmx5IGEgZGF0YSB0YWJsZS4KICAgICAgICAgaWYgKCF0YWJsZUVsZW1lbnQtPnN1
bW1hcnkoKS5pc0VtcHR5KCkKICAgICAgICAgICAgIHx8ICh0YWJsZUVsZW1lbnQtPnRIZWFkKCkg
JiYgdGFibGVFbGVtZW50LT50SGVhZCgpLT5yZW5kZXJlcigpKQpAQCAtMTcwLDE2ICsxNjYsMjAg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICBpZiAo
YXhSb3dDb3VudCA9PSAtMSB8fCBheFJvd0NvdW50ID4gMCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBSZW5kZXJUYWJsZSYgdGFibGUgPSBkb3duY2FzdDxSZW5kZXJUYWJsZT4oKm1fcmVu
ZGVyZXIpOworICAgIFdlYWtQdHIgcmVuZGVyVGFibGUgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVy
VGFibGU+KG1fcmVuZGVyZXIuZ2V0KCkpOworICAgIC8vIFRoZSBmb2xsb3dpbmcgY2hlY2tzIG9u
bHkgYXBwbHkgdG8gUmVuZGVyVGFibGVzLiBJZiB3ZSBkb24ndCBoYXZlIGEgUmVuZGVyVGFibGUg
KGUuZy4gYmVjYXVzZSBhIENTUyBkaXNwbGF5IHZhbHVlIGNhdXNlZCBhIGRpZmZlcmVudCByZW5k
ZXJlciwgb3Igbm8gcmVuZGVyZXIgdG8gYmUgZ2VuZXJhdGVkKSwgYXNzdW1lIHRoaXMgaXMgYSBk
YXRhIHRhYmxlLgorICAgIGlmICghcmVuZGVyVGFibGUpCisgICAgICAgIHJldHVybiB0cnVlOwor
CiAgICAgLy8gZ28gdGhyb3VnaCB0aGUgY2VsbCdzIGFuZCBjaGVjayBmb3IgdGVsbC10YWxlIHNp
Z25zIG9mICJkYXRhIiB0YWJsZSBzdGF0dXMKICAgICAvLyBjZWxscyBoYXZlIGJvcmRlcnMsIG9y
IHVzZSBhdHRyaWJ1dGVzIGxpa2UgaGVhZGVycywgYWJiciwgc2NvcGUgb3IgYXhpcwotICAgIHRh
YmxlLnJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGZp
cnN0Qm9keSA9IHRhYmxlLmZpcnN0Qm9keSgpOworICAgIHJlbmRlclRhYmxlLT5yZWNhbGNTZWN0
aW9uc0lmTmVlZGVkKCk7CisgICAgV2Vha1B0ciBmaXJzdEJvZHkgPSByZW5kZXJUYWJsZS0+Zmly
c3RCb2R5KCk7CiAgICAgaWYgKCFmaXJzdEJvZHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIElmIHRoZSB0Ym9keSBoYXMgYW55IG5vbi1ncm91cCByb2xlLCB0aGVuIGRvbid0IG1h
a2UgdGhpcyBhIGRhdGEgdGFibGUuIFRoZSBhdXRob3IgcHJvYmFibHkgd2FudHMgdG8gdXNlIHRo
ZSByb2xlIGluc2lkZSB0aGUgPHRib2R5Pi4KLSAgICBpZiAoYXV0byogdG9wU2VjdGlvbiA9IG9i
amVjdENhY2hlLT5nZXRPckNyZWF0ZSh0YWJsZS50b3BTZWN0aW9uKCkpKSB7CisgICAgaWYgKGF1
dG8qIHRvcFNlY3Rpb24gPSBjYWNoZS0+Z2V0T3JDcmVhdGUocmVuZGVyVGFibGUtPnRvcFNlY3Rp
b24oKSkpIHsKICAgICAgICAgYXV0byByb2xlID0gdG9wU2VjdGlvbi0+cm9sZVZhbHVlKCk7CiAg
ICAgICAgIGlmICghdG9wU2VjdGlvbi0+aXNHcm91cCgpICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0
eVJvbGU6OlVua25vd24gJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZCkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIEFjY2Vzc2li
aWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAKICAgICAvLyBTdG9yZSB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdGFibGUgdG8gY2hl
Y2sgYWdhaW5zdCBjZWxsJ3MgYmFja2dyb3VuZCBjb2xvcnMuCi0gICAgY29uc3QgUmVuZGVyU3R5
bGUmIHRhYmxlU3R5bGUgPSB0YWJsZS5zdHlsZSgpOworICAgIGNvbnN0IFJlbmRlclN0eWxlJiB0
YWJsZVN0eWxlID0gcmVuZGVyVGFibGUtPnN0eWxlKCk7CiAgICAgQ29sb3IgdGFibGVCR0NvbG9y
ID0gdGFibGVTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOwogICAgIAogICAgIC8vIGNoZWNrIGVub3VnaCBvZiB0aGUgY2VsbHMgdG8gZmluZCBp
ZiB0aGUgdGFibGUgbWF0Y2hlcyBvdXIgY3JpdGVyaWEKQEAgLTMwMCw3ICszMDAsNyBAQCBib29s
IEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgICAgICAgICAgLy8g
SWYgdGhlIGNlbGwgaGFzIGEgZGlmZmVyZW50IGNvbG9yIGZyb20gdGhlIHRhYmxlIGFuZCB0aGVy
ZSBpcyBjZWxsIHNwYWNpbmcsCiAgICAgICAgICAgICAvLyB0aGVuIGl0IGlzIHByb2JhYmx5IGEg
ZGF0YSB0YWJsZSBjZWxsIChzcGFjaW5nIGFuZCBjb2xvcnMgdGFrZSB0aGUgcGxhY2Ugb2YgYm9y
ZGVycykuCiAgICAgICAgICAgICBDb2xvciBjZWxsQ29sb3IgPSByZW5kZXJTdHlsZS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgICAgICAgICAg
aWYgKHRhYmxlLmhCb3JkZXJTcGFjaW5nKCkgPiAwICYmIHRhYmxlLnZCb3JkZXJTcGFjaW5nKCkg
PiAwCisgICAgICAgICAgICBpZiAocmVuZGVyVGFibGUtPmhCb3JkZXJTcGFjaW5nKCkgPiAwICYm
IHJlbmRlclRhYmxlLT52Qm9yZGVyU3BhY2luZygpID4gMAogICAgICAgICAgICAgICAgICYmIHRh
YmxlQkdDb2xvciAhPSBjZWxsQ29sb3IgJiYgY2VsbENvbG9yLmFscGhhQnl0ZSgpICE9IDEpIC8v
IEZJWE1FIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTM3KTog
VGhpcyBjb21wYXJpc29uIHRvIDEgaXMgbGlrZWx5IGluY29ycmVjdC4gSXQgbGlrZWx5IHNob3Vs
ZCBiZSBjaGVja2luZyAhY2VsbENvbG9yLmlzT3BhcXVlKCkuCiAgICAgICAgICAgICAgICAgKyti
YWNrZ3JvdW5kRGlmZmVyZW5jZUNlbGxDb3VudDsKICAgICAgICAgICAgIApAQCAtMzYxLDE1ICsz
NjEsMTAgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKKy8vIFRoZSBmb2xsb3dpbmcgaXMgYSBoZXVyaXN0aWMgdXNl
ZCB0byBkZXRlcm1pbmUgaWYgYSA8dGFibGU+IHNob3VsZCBiZSBleHBvc2VkIGFzIGFuIEFYVGFi
bGUuCisvLyBUaGUgZ29hbCBpcyB0byBvbmx5IHNob3cgImRhdGEiIHRhYmxlcy4KIGJvb2wgQWNj
ZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmls
aXR5KCkgY29uc3QKIHsKLSAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGEgaGV1cmlzdGljIHVzZWQg
dG8gZGV0ZXJtaW5lIGlmIGEKLSAgICAvLyA8dGFibGU+IHNob3VsZCBiZSBleHBvc2VkIGFzIGFu
IEFYVGFibGUuIFRoZSBnb2FsCi0gICAgLy8gaXMgdG8gb25seSBzaG93ICJkYXRhIiB0YWJsZXMu
Ci0KLSAgICBpZiAoIW1fcmVuZGVyZXIgJiYgIWlzPEhUTUxUYWJsZUVsZW1lbnQ+KG5vZGUoKSkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIC8vIElmIGl0IGhhcyBhIG5vbi10YWJsZSBB
UklBIHJvbGUsIGl0IHNob3VsZG4ndCBiZSBleHBvc2VkIGFzIGEgdGFibGUuCiAgICAgaWYgKGhh
c05vblRhYmxlQVJJQVJvbGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzc3LDkgKzM3
MiwxMiBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlzVGFibGVFeHBvc2FibGVU
aHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0CiAgICAgcmV0dXJuIGlzRGF0YVRhYmxlKCk7CiB9
CiAKLQogdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OnJlY29tcHV0ZUlzRXhwb3NhYmxlKCkKIHsK
KyAgICAvLyBNYWtlIHN1cmUgY2hpbGRyZW4gYXJlIHVwLXRvLWRhdGUsIGJlY2F1c2UgaWYgd2Ug
ZG8gZW5kIHVwIGNoYW5naW5nIGlzLWV4cG9zZWQgc3RhdGUsIHdlIHdhbnQgdG8gbWFrZQorICAg
IC8vIHN1cmUgdXBkYXRlQ2hpbGRyZW5Sb2xlcyBpdGVyYXRlcyBvdmVyIHRob3NlIGNoaWxkcmVu
IGJlZm9yZSB0aGV5IGNoYW5nZS4KKyAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CisK
ICAgICBib29sIHByZXZpb3VzbHlFeHBvc2FibGUgPSBtX2lzRXhwb3NhYmxlOwogICAgIG1faXNF
eHBvc2FibGUgPSBjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCk7
CiAgICAgaWYgKHByZXZpb3VzbHlFeHBvc2FibGUgIT0gbV9pc0V4cG9zYWJsZSkgewpAQCAtMzk0
LDYgKzM5MiwyNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6cmVjb21wdXRlSXNFeHBvc2Fi
bGUoKQogICAgIH0KIH0KIAorVmVjdG9yPFZlY3RvcjxBWElEPj4gQWNjZXNzaWJpbGl0eVRhYmxl
OjpzbG90R3JpZCgpCit7CisgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOworICAgIHJl
dHVybiBtX3Nsb3RHcmlkOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6c2V0U2xvdEdy
aWREaXJ0eSgpCit7CisgICAgLy8gQmVjYXVzZSB0aGUgc2xvdC1ncmlkIGlzIChuZWNlc3Nhcmls
eSkgY29tcHV0ZWQgaW4gY29uanVuY3Rpb24gd2l0aCBjaGlsZHJlbiwgbWFyaworICAgIC8vIHRo
ZSBjaGlsZHJlbiBhcyBkaXJ0eSBieSBjbGVhcmluZyB0aGVtLgorICAgIC8vCisgICAgLy8gSXQn
cyBuZWNlc3NhcnkgdG8gY29tcHV0ZSB0aGUgc2xvdC1ncmlkIHRvZ2V0aGVyIHdpdGggY2hpbGRy
ZW4gYmVjYXVzZSB0aGV5IGFyZSBib3RoCisgICAgLy8gaW5mbHVlbmNlZCBieSB0aGUgc2FtZSBm
YWN0b3JzLiBGb3IgZXhhbXBsZSwgaWYgYHNldFNsb3RHcmlkRGlydHlgIGlzIGNhbGxlZCBiZWNh
dXNlCisgICAgLy8gYSBjaGlsZCBpbmNyZWFzZWQgaW4gY29sdW1uIHNwYW4sIHRoYXQgbWF5IGFs
c28gcmVzdWx0IGluIG1vcmUgY29sdW1uIGNoaWxkcmVuIGJlaW5nCisgICAgLy8gYWRkZWQgaWYg
dGhhdCBjb2x1bW4gc3BhbiBjaGFuZ2UgaW5jcmVhc2VkIHRoZSAid2lkdGgiIG9mIHRoZSB0YWJs
ZS4KKyAgICBjbGVhckNoaWxkcmVuKCk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjp1
cGRhdGVDaGlsZHJlblJvbGVzKCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHJvdyA6IG1fcm93
cykgewpAQCAtNDA4LDYgKzQyNCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNo
aWxkcmVuKCkKICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjbGVhckNoaWxkcmVuKCk7
CiAgICAgbV9yb3dzLmNsZWFyKCk7CiAgICAgbV9jb2x1bW5zLmNsZWFyKCk7CisgICAgbV9zbG90
R3JpZC5jbGVhcigpOwogCiAgICAgaWYgKG1faGVhZGVyQ29udGFpbmVyKSB7CiAgICAgICAgIG1f
aGVhZGVyQ29udGFpbmVyLT5kZXRhY2hGcm9tUGFyZW50KCk7CkBAIC00MjEsNDIgKzQzOCwyMTcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKICAgICAgICAgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKLSAgICBBU1NFUlQoIW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7IAotICAgIAorCisg
ICAgQVNTRVJUKCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOwogICAgIG1fY2hpbGRyZW5Jbml0aWFs
aXplZCA9IHRydWU7Ci0gICAgaWYgKCFpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIoKSkpCisgICAg
V2Vha1B0ciBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQogICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgUmVuZGVyVGFibGUmIHRhYmxlID0gZG93bmNhc3Q8UmVuZGVy
VGFibGU+KCptX3JlbmRlcmVyKTsKLSAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgYXZhaWxhYmxl
IHNlY3Rpb25zIHRvIHB1bGwgb3V0IHRoZSByb3dzIGFuZCBhZGQgdGhlbSBhcyBjaGlsZHJlbi4K
LSAgICB0YWJsZS5yZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7Ci0gICAgCi0gICAgaWYgKEhUTUxU
YWJsZUVsZW1lbnQqIHRhYmxlRWxlbWVudCA9IHRoaXMtPnRhYmxlRWxlbWVudCgpKSB7Ci0gICAg
ICAgIGlmIChhdXRvIGNhcHRpb24gPSB0YWJsZUVsZW1lbnQtPmNhcHRpb24oKSkgewotICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhDYXB0aW9uID0gYXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZShjYXB0aW9uLmdldCgpKTsKLSAgICAgICAgICAgIGFkZENoaWxkKGF4Q2FwdGlv
biwgRGVzY2VuZElmSWdub3JlZDo6Tm8pOworCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpbXBsZW1l
bnRzIHRoZSAiZm9ybWluZyBhIHRhYmxlIiBhbGdvcml0aG0gZm9yIGRldGVybWluaW5nCisgICAg
Ly8gdGhlIGNvcnJlY3QgY2VsbCBwb3NpdGlvbnMgYW5kIHNwYW5zIChhbmQgc3RvcmluZyB0aG9z
ZSBpbiBtX3Nsb3RHcmlkIGZvciBsYXRlciB1c2UpLgorICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RhYmxlcy5odG1sI2Zvcm1pbmctYS10YWJsZQorCisgICAg
Ly8gU3RlcCAxLgorICAgIHVuc2lnbmVkIHhXaWR0aCA9IDA7CisgICAgLy8gU3RlcCAyLgorICAg
IHVuc2lnbmVkIHlIZWlnaHQgPSAwOworICAgIC8vIFN0ZXAgMzogTGV0IHBlbmRpbmcgdGZvb3Qg
ZWxlbWVudHMgYmUgYSBsaXN0IG9mIHRmb290IGVsZW1lbnRzLCBpbml0aWFsbHkgZW1wdHkuCisg
ICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gcGVuZGluZ1Rmb290RWxlbWVudHM7CisgICAgLy8gU3Rl
cCAxMC4KKyAgICB1bnNpZ25lZCB5Q3VycmVudCA9IDA7CisgICAgUmVmUHRyPEhUTUxUYWJsZUNh
cHRpb25FbGVtZW50PiBjYXB0aW9uRWxlbWVudDsKKworICAgIEhhc2hTZXQ8QWNjZXNzaWJpbGl0
eU9iamVjdCo+IGFwcGVuZGVkUm93czsKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS90YWJsZXMuaHRtbCNhbGdvcml0aG0tZm9yLXByb2Nlc3Npbmctcm93cwor
ICAgIGF1dG8gcHJvY2Vzc1JvdyA9IFsmLCB0aGlzXSAoQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBy
b3cpIHsKKyAgICAgICAgaWYgKCFyb3cgfHwgYXBwZW5kZWRSb3dzLmNvbnRhaW5zKHJvdykpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGFwcGVuZGVkUm93cy5hZGQocm93KTsKKyAgICAg
ICAgLy8gU3RlcCAxOiBJZiB5aGVpZ2h0IGlzIGVxdWFsIHRvIHljdXJyZW50LCB0aGVuIGluY3Jl
YXNlIHloZWlnaHQgYnkgMS4gKHljdXJyZW50IG11c3QgbmV2ZXIgYmUgZ3JlYXRlciB0aGFuIHlo
ZWlnaHQuKQorICAgICAgICBpZiAoeUhlaWdodCA8PSB5Q3VycmVudCkKKyAgICAgICAgICAgIHlI
ZWlnaHQgPSB5Q3VycmVudCArIDE7CisKKyAgICAgICAgLy8gU3RlcCAyLgorICAgICAgICB1bnNp
Z25lZCB4Q3VycmVudCA9IDA7CisgICAgICAgIC8vIFN0ZXAgMzogUnVuIHRoZSBhbGdvcml0aG0g
Zm9yIGdyb3dpbmcgZG93bndhcmQtZ3Jvd2luZyBjZWxscyAobm90IGltcGxlbWVudGVkKS4KKwor
ICAgICAgICAvLyBTdGVwIDQ6IElmIHRoZSB0ciBlbGVtZW50IGJlaW5nIHByb2Nlc3NlZCBoYXMg
bm8gdGQgb3IgdGggZWxlbWVudCBjaGlsZHJlbiwgdGhlbiBpbmNyZWFzZSB5Y3VycmVudCBieSAx
LCBhYm9ydCB0aGlzIHNldCBvZiBzdGVwcywgYW5kIHJldHVybiB0byB0aGUgYWxnb3JpdGhtIGFi
b3ZlLgorICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcm93LT5jaGlsZHJlbigpKSB7
CisgICAgICAgICAgICBhdXRvKiBjdXJyZW50Q2VsbCA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsPihjaGlsZC5nZXQoKSk7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRD
ZWxsKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvLyBTdGVwIDY6
IFdoaWxlIHRoZSBzbG90IHdpdGggY29vcmRpbmF0ZSAoeGN1cnJlbnQsIHljdXJyZW50KSBhbHJl
YWR5IGhhcyBhIGNlbGwgYXNzaWduZWQgdG8gaXQsIGluY3JlYXNlIHhjdXJyZW50IGJ5IDEuCisg
ICAgICAgICAgICBlbnN1cmVSb3dBbmRDb2x1bW4oeUN1cnJlbnQsIHhDdXJyZW50KTsKKyAgICAg
ICAgICAgIHdoaWxlIChtX3Nsb3RHcmlkW3lDdXJyZW50XVt4Q3VycmVudF0uaXNWYWxpZCgpKSB7
CisgICAgICAgICAgICAgICAgeEN1cnJlbnQgKz0gMTsKKyAgICAgICAgICAgICAgICBlbnN1cmVS
b3dBbmRDb2x1bW4oeUN1cnJlbnQsIHhDdXJyZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC8vIFN0ZXAgNzogSWYgeGN1cnJlbnQgaXMgZXF1YWwgdG8geHdpZHRoLCBpbmNyZWFzZSB4
d2lkdGggYnkgMS4gKHhjdXJyZW50IGlzIG5ldmVyIGdyZWF0ZXIgdGhhbiB4d2lkdGguKQorICAg
ICAgICAgICAgaWYgKHhDdXJyZW50ID49IHhXaWR0aCkKKyAgICAgICAgICAgICAgICB4V2lkdGgg
PSB4Q3VycmVudCArIDE7CisgICAgICAgICAgICAvLyBTdGVwIDg6IElmIHRoZSBjdXJyZW50IGNl
bGwgaGFzIGEgY29sc3BhbiBhdHRyaWJ1dGUsIHRoZW4gcGFyc2UgdGhhdCBhdHRyaWJ1dGUncyB2
YWx1ZSwgYW5kIGxldCBjb2xzcGFuIGJlIHRoZSByZXN1bHQuCisgICAgICAgICAgICB1bnNpZ25l
ZCBjb2xTcGFuID0gY3VycmVudENlbGwtPmNvbFNwYW4oKTsKKyAgICAgICAgICAgIC8vIFN0ZXAg
OTogSWYgdGhlIGN1cnJlbnQgY2VsbCBoYXMgYSByb3dzcGFuIGF0dHJpYnV0ZSwgdGhlbiBwYXJz
ZSB0aGF0IGF0dHJpYnV0ZSdzIHZhbHVlLCBhbmQgbGV0IHJvd3NwYW4gYmUgdGhlIHJlc3VsdC4K
KyAgICAgICAgICAgIHVuc2lnbmVkIHJvd1NwYW4gPSBjdXJyZW50Q2VsbC0+cm93U3BhbigpOwor
CisgICAgICAgICAgICAvLyBTdGVwIDEwOiBJZiByb3dzcGFuIGlzIHplcm8gYW5kIHRoZSB0YWJs
ZSBlbGVtZW50J3Mgbm9kZSBkb2N1bWVudCBpcyBub3Qgc2V0IHRvIHF1aXJrcyBtb2RlLCB0aGVu
IGxldAorICAgICAgICAgICAgLy8gY2VsbCBncm93cyBkb3dud2FyZCBiZSB0cnVlLCBhbmQgc2V0
IHJvd3NwYW4gdG8gMS4gT3RoZXJ3aXNlLCBsZXQgY2VsbCBncm93cyBkb3dud2FyZCBiZSBmYWxz
ZS4KKyAgICAgICAgICAgIC8vIE5PVEU6IFdlIGludGVudGlvbmFsbHkgZG9uJ3QgaW1wbGVtZW50
IHRoaXMgc3RlcCBiZWNhdXNlIHRoZSByZW5kZXJpbmcgY29kZSBkb2Vzbid0LCBzbyBpbXBsZW1l
bnRpbmcgaXQKKyAgICAgICAgICAgIC8vIHdvdWxkIGNhdXNlIEFYIHRvIG5vdCBtYXRjaCB0aGUg
dmlzdWFsIHN0YXRlIG9mIHRoZSBwYWdlLgorCisgICAgICAgICAgICAvLyBTdGVwIDExOiBJZiB4
d2lkdGggPCB4Y3VycmVudCtjb2xzcGFuLCB0aGVuIGxldCB4d2lkdGggYmUgeGN1cnJlbnQrY29s
c3Bhbi4KKyAgICAgICAgICAgIGlmICh4V2lkdGggPCB4Q3VycmVudCArIGNvbFNwYW4pCisgICAg
ICAgICAgICAgICAgeFdpZHRoID0geEN1cnJlbnQgKyBjb2xTcGFuOworCisgICAgICAgICAgICAv
LyBTdGVwIDEyOiBJZiB5aGVpZ2h0IDwgeWN1cnJlbnQrcm93c3BhbiwgdGhlbiBsZXQgeWhlaWdo
dCBiZSB5Y3VycmVudCtyb3dzcGFuLgorICAgICAgICAgICAgaWYgKHlIZWlnaHQgPCB5Q3VycmVu
dCArIHJvd1NwYW4pCisgICAgICAgICAgICAgICAgeUhlaWdodCA9IHlDdXJyZW50ICsgcm93U3Bh
bjsKKworICAgICAgICAgICAgLy8gU3RlcCAxMzogTGV0IHRoZSBzbG90cyB3aXRoIGNvb3JkaW5h
dGVzICh4LCB5KSBzdWNoIHRoYXQgeGN1cnJlbnQg4omkIHggPCB4Y3VycmVudCtjb2xzcGFuIGFu
ZAorICAgICAgICAgICAgLy8geWN1cnJlbnQg4omkIHkgPCB5Y3VycmVudCtyb3dzcGFuIGJlIGNv
dmVyZWQgYnkgYSBuZXcgY2VsbCBjLCBhbmNob3JlZCBhdCAoeGN1cnJlbnQsIHljdXJyZW50KSwK
KyAgICAgICAgICAgIC8vIHdoaWNoIGhhcyB3aWR0aCBjb2xzcGFuIGFuZCBoZWlnaHQgcm93c3Bh
biwgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVudCBjZWxsIGVsZW1lbnQuCisgICAgICAgICAg
ICBjdXJyZW50Q2VsbC0+c2V0Q29sdW1uSW5kZXgoeEN1cnJlbnQpOworICAgICAgICAgICAgY3Vy
cmVudENlbGwtPnNldFJvd0luZGV4KHlDdXJyZW50KTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgeSA9IHlDdXJyZW50OyB5IDwgeUN1cnJlbnQgKyByb3dTcGFuOyB5KyspIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIHggPSB4Q3VycmVudDsgeCA8IHhDdXJyZW50ICsgY29sU3Bh
bjsgeCsrKSB7CisgICAgICAgICAgICAgICAgICAgIGVuc3VyZVJvd0FuZENvbHVtbih5LCB4KTsK
KyAgICAgICAgICAgICAgICAgICAgbV9zbG90R3JpZFt5XVt4XSA9IGN1cnJlbnRDZWxsLT5vYmpl
Y3RJRCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gU3RlcCAxNDogSWYgY2VsbCBncm93cyBkb3dud2FyZCBpcyB0cnVlLCB0aGVuIGFkZCB0aGUg
dHVwbGUge2MsIHhjdXJyZW50LCBjb2xzcGFufSB0byB0aGUKKyAgICAgICAgICAgIC8vIGxpc3Qg
b2YgZG93bndhcmQtZ3Jvd2luZyBjZWxscy4gTm90IGltcGxlbWVudGVkLgorCisgICAgICAgICAg
ICAvLyBTdGVwIDE1LgorICAgICAgICAgICAgeEN1cnJlbnQgKz0gY29sU3BhbjsKKworICAgICAg
ICAgICAgLy8gU3RlcCAxNyBhbmQgMTg6IExldCBjdXJyZW50IGNlbGwgYmUgdGhlIG5leHQgdGQg
b3IgdGggZWxlbWVudCBjaGlsZCBpbiB0aGUgdHIgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQuCiAg
ICAgICAgIH0KLSAgICB9CiAKLSAgICB1bnNpZ25lZCBtYXhDb2x1bW5Db3VudCA9IDA7Ci0gICAg
UmVuZGVyVGFibGVTZWN0aW9uKiBmb290ZXIgPSB0YWJsZS5mb290ZXIoKTsKLSAgICAKLSAgICBm
b3IgKFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFibGUudG9wU2VjdGlvbigp
OyB0YWJsZVNlY3Rpb247IHRhYmxlU2VjdGlvbiA9IHRhYmxlLnNlY3Rpb25CZWxvdyh0YWJsZVNl
Y3Rpb24sIFNraXBFbXB0eVNlY3Rpb25zKSkgewotICAgICAgICBpZiAodGFibGVTZWN0aW9uID09
IGZvb3RlcikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhZGRDaGlsZHJlbkZyb21T
ZWN0aW9uKHRhYmxlU2VjdGlvbiwgbWF4Q29sdW1uQ291bnQpOworICAgICAgICAvLyBOb3Qgc3Bl
Y2lmaWVkOiB1cGRhdGUgc29tZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuCisgICAgICAgIG1f
cm93cy5hcHBlbmQocm93KTsKKyAgICAgICAgcm93LT5zZXRSb3dJbmRleCh5Q3VycmVudCk7Cisg
ICAgICAgIGFkZENoaWxkKHJvdyk7CisKKyAgICAgICAgLy8gU3RlcCAxNjogSWYgY3VycmVudCBj
ZWxsIGlzIHRoZSBsYXN0IHRkIG9yIHRoIGVsZW1lbnQgY2hpbGQgaW4gdGhlIHRyIGVsZW1lbnQg
YmVpbmcgcHJvY2Vzc2VkLCB0aGVuIGluY3JlYXNlIHljdXJyZW50IGJ5IDEsIGFib3J0IHRoaXMg
c2V0IG9mIHN0ZXBzLCBhbmQgcmV0dXJuIHRvIHRoZSBhbGdvcml0aG0gYWJvdmUuCisgICAgICAg
IHlDdXJyZW50ICs9IDE7CisgICAgfTsKKyAgICBhdXRvIG5lZWRzVG9EZXNjZW5kID0gWyZhcHBl
bmRlZFJvd3NdIChBWENvcmVPYmplY3QmIGF4T2JqZWN0KSB7CisgICAgICAgIHJldHVybiAoIWF4
T2JqZWN0LmlzVGFibGVSb3coKSB8fCAhYXhPYmplY3Qubm9kZSgpKQorICAgICAgICAgICAgJiYg
IWFwcGVuZGVkUm93cy5jb250YWlucyhkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVj
dD4oYXhPYmplY3QpKTsKKyAgICB9OworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChBWENvcmVPYmpl
Y3QqKT4gcHJvY2Vzc1Jvd0Rlc2NlbmRpbmdJZk5lZWRlZCA9IFsmXSAoQVhDb3JlT2JqZWN0KiBh
eE9iamVjdCkgeworICAgICAgICBpZiAoIWF4T2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAvLyBEZXNjZW5kIHBhc3QgYW5vbnltb3VzIHJlbmRlcmVycyBhbmQgbm9uLXJvd3Mu
CisgICAgICAgIGlmIChuZWVkc1RvRGVzY2VuZCgqYXhPYmplY3QpKSB7CisgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogYXhPYmplY3QtPmNoaWxkcmVuKCkpCisgICAgICAgICAg
ICAgICAgcHJvY2Vzc1Jvd0Rlc2NlbmRpbmdJZk5lZWRlZChjaGlsZC5nZXQoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgcHJvY2Vzc1JvdyhkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJp
bGl0eVRhYmxlUm93PihheE9iamVjdCkpOworICAgIH07CisgICAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjYWxnb3JpdGhtLWZvci1lbmRpbmct
YS1yb3ctZ3JvdXAKKyAgICBhdXRvIGVuZFJvd0dyb3VwID0gWyZdICgpIHsKKyAgICAgICAgaWYg
KHlDdXJyZW50IDwgeUhlaWdodCkKKyAgICAgICAgICAgIHlDdXJyZW50ID0geUhlaWdodDsKKyAg
ICB9OworICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RhYmxl
cy5odG1sI2FsZ29yaXRobS1mb3ItcHJvY2Vzc2luZy1yb3ctZ3JvdXBzCisgICAgYXV0byBwcm9j
ZXNzUm93R3JvdXAgPSBbJl0gKEVsZW1lbnQmIHNlY3Rpb25FbGVtZW50KSB7CisgICAgICAgIC8v
IFN0ZXAgMTogTGV0IHlzdGFydCBoYXZlIHRoZSB2YWx1ZSBvZiB5aGVpZ2h0LiBOb3QgaW1wbGVt
ZW50ZWQgYmVjYXVzZSBpdCdzIG9ubHkgdXNlZnVsIGZvciBzdGVwIDMsIHdoaWNoIHdlIHNraXAu
CisKKyAgICAgICAgLy8gU3RlcCAyOiBGb3IgZWFjaCB0ciBlbGVtZW50IHRoYXQgaXMgYSBjaGls
ZCBvZiB0aGUgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQsCisgICAgICAgIC8vIGluIHRyZWUgb3Jk
ZXIsIHJ1biB0aGUgYWxnb3JpdGhtIGZvciBwcm9jZXNzaW5nIHJvd3MuCisgICAgICAgIGlmIChS
ZWZQdHIgdGFibGVTZWN0aW9uID0gZHluYW1pY0Rvd25jYXN0PEhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50PihzZWN0aW9uRWxlbWVudCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcm93IDogY2hp
bGRyZW5PZlR5cGU8SFRNTFRhYmxlUm93RWxlbWVudD4oKnRhYmxlU2VjdGlvbikpIHsKKyAgICAg
ICAgICAgICAgICBSZWZQdHIgdGFibGVSb3cgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlUm93PihjYWNoZS0+Z2V0T3JDcmVhdGUoJnJvdykpOworICAgICAgICAgICAgICAgIHBy
b2Nlc3NSb3codGFibGVSb3cuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2Ug
aWYgKFJlZlB0ciBzZWN0aW9uQXhPYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoJnNlY3Rpb25F
bGVtZW50KSkgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShub2RlSGFzUm9sZSgm
c2VjdGlvbkVsZW1lbnQsICJyb3dncm91cCJfcyksICJwcm9jZXNzUm93R3JvdXAgc2hvdWxkIG9u
bHkgYmUgY2FsbGVkIHdpdGggbmF0aXZlIHRhYmxlIHNlY3Rpb24gZWxlbWVudHMsIG9yIHJvbGU9
cm93Z3JvdXAgZWxlbWVudHMiKTsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQg
OiBzZWN0aW9uQXhPYmplY3QtPmNoaWxkcmVuKCkpCisgICAgICAgICAgICAgICAgcHJvY2Vzc1Jv
d0Rlc2NlbmRpbmdJZk5lZWRlZChjaGlsZC5nZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgLy8g
U3RlcCAzOiBJZiB5aGVpZ2h0ID4geXN0YXJ0LCB0aGVuIGxldCBhbGwgdGhlIGxhc3Qgcm93cyBp
biB0aGUgdGFibGUgZnJvbSB5PXlzdGFydCB0byB5PXloZWlnaHQtMQorICAgICAgICAvLyBmb3Jt
IGEgbmV3IHJvdyBncm91cCwgYW5jaG9yZWQgYXQgdGhlIHNsb3Qgd2l0aCBjb29yZGluYXRlICgw
LCB5c3RhcnQpLCB3aXRoIGhlaWdodCB5aGVpZ2h0LXlzdGFydCwKKyAgICAgICAgLy8gY29ycmVz
cG9uZGluZyB0byB0aGUgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQuIE5vdCBpbXBsZW1lbnRlZC4K
KworICAgICAgICAvLyBTdGVwIDQ6IFJ1biB0aGUgYWxnb3JpdGhtIGZvciBlbmRpbmcgYSByb3cg
Z3JvdXAuCisgICAgICAgIGVuZFJvd0dyb3VwKCk7CisgICAgfTsKKworICAgIC8vIFN0ZXAgNDog
TGV0IHRoZSB0YWJsZSBiZSB0aGUgdGFibGUgcmVwcmVzZW50ZWQgYnkgdGhlIHRhYmxlIGVsZW1l
bnQuCisgICAgUmVmUHRyIHRhYmxlRWxlbWVudCA9IHRoaXMtPm5vZGUoKTsKKyAgICAvLyBgaXNB
cmlhVGFibGUoKWAgd2lsbCByZXR1cm4gdHJ1ZSBmb3IgdGFibGUtbGlrZSBBUklBIHN0cnVjdHVy
ZXMgKGdyaWQsIHRyZWVncmlkLCB0YWJsZSkuCisgICAgaWYgKCFpczxIVE1MVGFibGVFbGVtZW50
Pih0YWJsZUVsZW1lbnQuZ2V0KCkpICYmICFpc0FyaWFUYWJsZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoTm9kZSopPiBwcm9jZXNzVGFibGVEZXNjZW5kYW50
ID0gWyYsIHRoaXNdIChOb2RlKiBub2RlKSB7CisgICAgICAgIC8vIFN0ZXAgODogV2hpbGUgdGhl
IGN1cnJlbnQgZWxlbWVudCBpcyBub3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgZWxlbWVudHMsIGFk
dmFuY2UgdGhlCisgICAgICAgIC8vIGN1cnJlbnQgZWxlbWVudCB0byB0aGUgbmV4dCBjaGlsZCBv
ZiB0aGUgdGFibGUuCisgICAgICAgIGlmIChhdXRvKiBjYXB0aW9uID0gZHluYW1pY0Rvd25jYXN0
PEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Pihub2RlKSkgeworICAgICAgICAgICAgLy8gU3RlcCA2
OiBBc3NvY2lhdGUgdGhlIGZpcnN0IGNhcHRpb24gZWxlbWVudCBjaGlsZCBvZiB0aGUgdGFibGUg
ZWxlbWVudCB3aXRoIHRoZSB0YWJsZS4KKyAgICAgICAgICAgIGlmICghY2FwdGlvbkVsZW1lbnQp
CisgICAgICAgICAgICAgICAgY2FwdGlvbkVsZW1lbnQgPSBjYXB0aW9uOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byogZWxlbWVudCA9IGR5bmFtaWNEb3du
Y2FzdDxFbGVtZW50Pihub2RlKTsKKyAgICAgICAgYm9vbCBkZXNjZW5kYW50SXNSb3cgPSBlbGVt
ZW50ICYmIChlbGVtZW50LT5oYXNUYWdOYW1lKHRyVGFnKSB8fCBub2RlSGFzUm9sZShlbGVtZW50
LCAicm93Il9zKSk7CisgICAgICAgIGJvb2wgZGVzY2VuZGFudElzUm93R3JvdXAgPSBlbGVtZW50
ICYmICFkZXNjZW5kYW50SXNSb3cgJiYgKGVsZW1lbnQtPmhhc1RhZ05hbWUodGhlYWRUYWcpIHx8
IGVsZW1lbnQtPmhhc1RhZ05hbWUodGJvZHlUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUodGZv
b3RUYWcpIHx8IG5vZGVIYXNSb2xlKGVsZW1lbnQsICJyb3dncm91cCJfcykpOworCisgICAgICAg
IC8vIFN0ZXAgOTogSGFuZGxlIHRoZSBjb2xncm91cCBlbGVtZW50LiBOb3QgaW1wbGVtZW50ZWQu
CisgICAgICAgIC8vIFN0ZXAgMTA6IEhhbmRsZWQgYWJvdmUuCisgICAgICAgIC8vIFN0ZXAgMTE6
IFNraXBwZWQuIE5vdCBjdXJyZW50bHkgaW1wbGVtZW50aW5nICJkb3dud2FyZC1ncm93aW5nIGNl
bGxzIiBhbGdvcml0aG0uCisgICAgICAgIC8vIFN0ZXAgMTI6IFdoaWxlIHRoZSBjdXJyZW50IGVs
ZW1lbnQgaXMgbm90IG9uZSBvZiB0aGUgZm9sbG93aW5nIGVsZW1lbnRzLCBhZHZhbmNlIHRoZSBj
dXJyZW50IGVsZW1lbnQgdG8gdGhlIG5leHQgY2hpbGQgb2YgdGhlIHRhYmxlCisgICAgICAgIGlm
ICghZGVzY2VuZGFudElzUm93ICYmICFkZXNjZW5kYW50SXNSb3dHcm91cCkgeworICAgICAgICAg
ICAgaWYgKGlzQXJpYVRhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUgZm9yZ2l2
aW5nIHdpdGggQVJJQSBncmlkIG1hcmt1cCwgZGVzY2VuZGluZyBwYXN0IGRpc2FsbG93ZWQgZWxl
bWVudHMgdG8gYnVpbGQgdGhlIGdyaWQgc3RydWN0dXJlICh0aGlzIGlzIG5vdCBzcGVjaWZpZWQs
IGJ1dCBjb25zaXN0ZW50IHdpdGggb3RoZXIgYnJvd3NlcnMpLgorICAgICAgICAgICAgICAgIGlm
IChhdXRvKiBheE9iamVjdCA9IGNhY2hlLT5nZXRPckNyZWF0ZShub2RlKTsgYXhPYmplY3QgJiYg
bmVlZHNUb0Rlc2NlbmQoKmF4T2JqZWN0KSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGNoaWxkIDogYXhPYmplY3QtPmNoaWxkcmVuKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9jZXNzVGFibGVEZXNjZW5kYW50KGNoaWxkID8gY2hpbGQtPm5vZGUoKSA6IG51
bGxwdHIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0ZXAgMTM6IElmIHRoZSBjdXJyZW50IGVs
ZW1lbnQgaXMgYSB0ciwgdGhlbiBydW4gdGhlIGFsZ29yaXRobSBmb3IgcHJvY2Vzc2luZyByb3dz
LAorICAgICAgICAvLyBhZHZhbmNlIHRoZSBjdXJyZW50IGVsZW1lbnQgdG8gdGhlIG5leHQgY2hp
bGQgb2YgdGhlIHRhYmxlLCBhbmQgcmV0dXJuIHRvIHRoZSBzdGVwIGxhYmVsZWQgcm93cy4KKyAg
ICAgICAgaWYgKGRlc2NlbmRhbnRJc1JvdykKKyAgICAgICAgICAgIHByb2Nlc3NSb3coZHluYW1p
Y0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oY2FjaGUtPmdldE9yQ3JlYXRlKGVsZW1l
bnQpKSk7CisKKyAgICAgICAgLy8gU3RlcCAxNDogUnVuIHRoZSBhbGdvcml0aG0gZm9yIGVuZGlu
ZyBhIHJvdyBncm91cC4KKyAgICAgICAgZW5kUm93R3JvdXAoKTsKKworICAgICAgICAvLyBTdGVw
IDE1OiBJZiB0aGUgY3VycmVudCBlbGVtZW50IGlzIGEgdGZvb3QuLi4KKyAgICAgICAgaWYgKGVs
ZW1lbnQtPmhhc1RhZ05hbWUodGZvb3RUYWcpKSB7CisgICAgICAgICAgICAvLyAuLi50aGVuIGFk
ZCB0aGF0IGVsZW1lbnQgdG8gdGhlIGxpc3Qgb2YgcGVuZGluZyB0Zm9vdCBlbGVtZW50cworICAg
ICAgICAgICAgcGVuZGluZ1Rmb290RWxlbWVudHMuYXBwZW5kKCplbGVtZW50KTsKKyAgICAgICAg
ICAgIC8vIC4uLmFkdmFuY2UgdGhlIGN1cnJlbnQgZWxlbWVudCB0byB0aGUgbmV4dCBjaGlsZCBv
ZiB0aGUgdGFibGUuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAv
LyBTdGVwIDE2OiBJZiB0aGUgY3VycmVudCBlbGVtZW50IGlzIGVpdGhlciBhIHRoZWFkIG9yIGEg
dGJvZHksIHJ1biB0aGUgYWxnb3JpdGhtIGZvciBwcm9jZXNzaW5nIHJvdyBncm91cHMuIChOb3Qg
c3BlY2lmaWVkOiBpbmNsdWRlIHJvbGU9InJvd2dyb3VwcyIpLgorICAgICAgICBpZiAoZGVzY2Vu
ZGFudElzUm93R3JvdXApCisgICAgICAgICAgICBwcm9jZXNzUm93R3JvdXAoKmVsZW1lbnQpOwor
ICAgIH07CisgICAgLy8gU3RlcCA3OiBMZXQgdGhlIGN1cnJlbnQgZWxlbWVudCBiZSB0aGUgZmly
c3QgZWxlbWVudCBjaGlsZCBvZiB0aGUgdGFibGUgZWxlbWVudC4KKyAgICBmb3IgKFJlZlB0ciBj
dXJyZW50RWxlbWVudCA9IHRhYmxlRWxlbWVudC0+Zmlyc3RDaGlsZCgpOyBjdXJyZW50RWxlbWVu
dDsgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICBwcm9jZXNzVGFibGVEZXNjZW5kYW50KGN1cnJlbnRFbGVtZW50LmdldCgpKTsKKyAgICAg
ICAgLy8gU3RlcCAxNyArIDE4OiBBZHZhbmNlIHRoZSBjdXJyZW50IGVsZW1lbnQgdG8gdGhlIG5l
eHQgY2hpbGQgb2YgdGhlIHRhYmxlLgogICAgIH0KLSAgICAKLSAgICAvLyBQcm9jZXNzIHRoZSBm
b290ZXIgbGFzdCwgaW4gY2FzZSBpdCB3YXMgb3JkZXJlZCBlYXJsaWVyIGluIHRoZSBET00uCi0g
ICAgaWYgKGZvb3RlcikKLSAgICAgICAgYWRkQ2hpbGRyZW5Gcm9tU2VjdGlvbihmb290ZXIsIG1h
eENvbHVtbkNvdW50KTsKLSAgICAKLSAgICBhdXRvKiBheENhY2hlID0gZG9jdW1lbnQoKS0+YXhP
YmplY3RDYWNoZSgpOwotICAgIC8vIG1ha2UgdGhlIGNvbHVtbnMgYmFzZWQgb24gdGhlIG51bWJl
ciBvZiBjb2x1bW5zIGluIHRoZSBmaXJzdCBib2R5Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gbWF4
Q29sdW1uQ291bnQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bj4oKmF4Q2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uKSk7CisKKyAgICAv
LyBTdGVwIDE5OiBGb3IgZWFjaCB0Zm9vdCBlbGVtZW50IGluIHRoZSBsaXN0IG9mIHBlbmRpbmcg
dGZvb3QgZWxlbWVudHMsIGluIHRyZWUgb3JkZXIsCisgICAgLy8gcnVuIHRoZSBhbGdvcml0aG0g
Zm9yIHByb2Nlc3Npbmcgcm93IGdyb3Vwcy4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRmb290RWxl
bWVudCA6IHBlbmRpbmdUZm9vdEVsZW1lbnRzKQorICAgICAgICBwcm9jZXNzUm93R3JvdXAodGZv
b3RFbGVtZW50LmdldCgpKTsKKworICAgIC8vIFRoZSByZW1haW5kZXIgb2YgdGhpcyBmdW5jdGlv
biBpcyB1bnNwZWNpZmllZCB1cGRhdGluZyBvZiBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMuCisg
ICAgYWRkQ2hpbGQoY2FjaGUtPmdldE9yQ3JlYXRlKGNhcHRpb25FbGVtZW50LmdldCgpKSwgRGVz
Y2VuZElmSWdub3JlZDo6Tm8pOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHhXaWR0
aDsgKytpKSB7CisgICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbj4oKmNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbikpOwog
ICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7CiAgICAgICAgIGNvbHVtbi5zZXRQYXJl
bnQodGhpcyk7CiAgICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7CkBAIC00NzEsNjYg
KzY2Myw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGlsZHJlbigpCiAgICAgdXBk
YXRlQ2hpbGRyZW5Sb2xlcygpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkVGFi
bGVDZWxsQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCogcm93T2JqZWN0LCBIYXNoU2V0PEFjY2Vz
c2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpCi17
Ci0gICAgaWYgKCFyb3dPYmplY3QgfHwgIWlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnJvd09i
amVjdCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIHJvdyA9IGRvd25jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZVJvdz4oKnJvd09iamVjdCk7Ci0gICAgLy8gV2UgbmVlZCB0byBjaGVjayBl
dmVyeSBjZWxsIGZvciBhIG5ldyByb3csIGJlY2F1c2UgY2VsbCBzcGFucwotICAgIC8vIGNhbiBj
YXVzZSB1cyB0byBtaXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUgZmlyc3QgY29sdW1uLgot
ICAgIGlmIChhcHBlbmRlZFJvd3MuY29udGFpbnMoJnJvdykpCi0gICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICByb3cuc2V0Um93SW5kZXgoc3RhdGljX2Nhc3Q8aW50PihtX3Jvd3Muc2l6ZSgpKSk7
Ci0gICAgbV9yb3dzLmFwcGVuZCgmcm93KTsKLSAgICBhZGRDaGlsZCgmcm93LCBEZXNjZW5kSWZJ
Z25vcmVkOjpObyk7Ci0gICAgYXBwZW5kZWRSb3dzLmFkZCgmcm93KTsKLSAgICAgICAgCi0gICAg
Ly8gc3RvcmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbHVtbnMKLSAgICB1bnNpZ25lZCByb3dD
ZWxsQ291bnQgPSByb3cuY2hpbGRyZW4oKS5zaXplKCk7Ci0gICAgaWYgKHJvd0NlbGxDb3VudCA+
IGNvbHVtbkNvdW50KQotICAgICAgICBjb2x1bW5Db3VudCA9IHJvd0NlbGxDb3VudDsKLX0KLQot
dm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuRnJvbVNlY3Rpb24oUmVuZGVyVGFi
bGVTZWN0aW9uKiB0YWJsZVNlY3Rpb24sIHVuc2lnbmVkJiBtYXhDb2x1bW5Db3VudCkKLXsKLSAg
ICBBU1NFUlQodGFibGVTZWN0aW9uKTsKLSAgICBpZiAoIXRhYmxlU2VjdGlvbikKLSAgICAgICAg
cmV0dXJuOwotICAgIAotICAgIGF1dG8qIGF4Q2FjaGUgPSBkb2N1bWVudCgpLT5heE9iamVjdENh
Y2hlKCk7Ci0gICAgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4gYXBwZW5kZWRSb3dzOwot
ICAgIHVuc2lnbmVkIG51bVJvd3MgPSB0YWJsZVNlY3Rpb24tPm51bVJvd3MoKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBudW1Sb3dzOyArK3Jvd0luZGV4KSB7
Ci0gICAgICAgIAotICAgICAgICBSZW5kZXJUYWJsZVJvdyogcmVuZGVyUm93ID0gdGFibGVTZWN0
aW9uLT5yb3dSZW5kZXJlckF0KHJvd0luZGV4KTsKLSAgICAgICAgaWYgKCFyZW5kZXJSb3cpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QmIHJvd09iamVjdCA9ICpheENhY2hlLT5nZXRPckNyZWF0ZShyZW5kZXJSb3cpOwotICAgICAg
ICAKLSAgICAgICAgLy8gSWYgdGhlIHJvdyBpcyBhbm9ueW1vdXMsIHdlIHNob3VsZCBkaXZlIGRl
ZXBlciBpbnRvIHRoZSBkZXNjZW5kYW50cyB0byB0cnkgdG8gZmluZCBhIHZhbGlkIHJvdy4KLSAg
ICAgICAgaWYgKHJlbmRlclJvdy0+aXNBbm9ueW1vdXMoKSkgewotICAgICAgICAgICAgRGVxdWU8
QWNjZXNzaWJpbGl0eU9iamVjdCo+IHF1ZXVlOwotICAgICAgICAgICAgcXVldWUuYXBwZW5kKCZy
b3dPYmplY3QpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB3aGlsZSAoIXF1ZXVlLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IHF1ZXVl
LnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGlmIChvYmotPm5vZGUoKSAmJiBpczxBY2Nl
c3NpYmlsaXR5VGFibGVSb3c+KCpvYmopKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkZFRhYmxl
Q2VsbENoaWxkKG9iaiwgYXBwZW5kZWRSb3dzLCBtYXhDb2x1bW5Db3VudCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBm
b3IgKGF1dG8qIGNoaWxkID0gb2JqLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKQotICAgICAgICAgICAgICAgICAgICBxdWV1ZS5hcHBlbmQoY2hpbGQp
OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFkZFRhYmxlQ2Vs
bENoaWxkKCZyb3dPYmplY3QsIGFwcGVuZGVkUm93cywgbWF4Q29sdW1uQ291bnQpOwotICAgIH0K
LSAgICAKLSAgICBtYXhDb2x1bW5Db3VudCA9IHN0ZDo6bWF4KHRhYmxlU2VjdGlvbi0+bnVtQ29s
dW1ucygpLCBtYXhDb2x1bW5Db3VudCk7Ci19Ci0gICAgCiBBWENvcmVPYmplY3QqIEFjY2Vzc2li
aWxpdHlUYWJsZTo6aGVhZGVyQ29udGFpbmVyKCkKIHsKICAgICBpZiAobV9oZWFkZXJDb250YWlu
ZXIpCkBAIC02NDIsMzAgKzc3NCwxMSBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlOjp0YWJsZUxl
dmVsKCkgY29uc3QKIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29s
dW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQogewogICAgIHVwZGF0ZUNo
aWxkcmVuSWZOZWNlc3NhcnkoKTsKLSAgICBpZiAoY29sdW1uID49IGNvbHVtbkNvdW50KCkgfHwg
cm93ID49IHJvd0NvdW50KCkpCisgICAgaWYgKHJvdyA+PSBtX3Nsb3RHcmlkLnNpemUoKSB8fCBj
b2x1bW4gPj0gbV9zbG90R3JpZFtyb3ddLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgCi0gICAgLy8gSXRlcmF0ZSBiYWNrd2FyZHMgdGhyb3VnaCB0aGUgcm93cyBpbiBjYXNl
IHRoZSBkZXNpcmVkIGNlbGwgaGFzIGEgcm93c3BhbiBhbmQgZXhpc3RzIGluIGEgcHJldmlvdXMg
cm93LgotICAgIGZvciAodW5zaWduZWQgcm93SW5kZXhDb3VudGVyID0gcm93ICsgMTsgcm93SW5k
ZXhDb3VudGVyID4gMDsgLS1yb3dJbmRleENvdW50ZXIpIHsKLSAgICAgICAgdW5zaWduZWQgcm93
SW5kZXggPSByb3dJbmRleENvdW50ZXIgLSAxOwotICAgICAgICBjb25zdCBhdXRvJiBjaGlsZHJl
biA9IG1fcm93c1tyb3dJbmRleF0tPmNoaWxkcmVuKCk7Ci0gICAgICAgIC8vIFNpbmNlIHNvbWUg
Y2VsbHMgbWF5IGhhdmUgY29sc3BhbnMsIHdlIGhhdmUgdG8gY2hlY2sgdGhlIGFjdHVhbCByYW5n
ZSBvZiBlYWNoCi0gICAgICAgIC8vIGNlbGwgdG8gZGV0ZXJtaW5lIHdoaWNoIGlzIHRoZSByaWdo
dCBvbmUuCi0gICAgICAgIGZvciAodW5zaWduZWQgY29sSW5kZXhDb3VudGVyID0gc3RkOjptaW4o
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNoaWxkcmVuLnNpemUoKSksIGNvbHVtbiArIDEpOyBjb2xJ
bmRleENvdW50ZXIgPiAwOyAtLWNvbEluZGV4Q291bnRlcikgewotICAgICAgICAgICAgdW5zaWdu
ZWQgY29sSW5kZXggPSBjb2xJbmRleENvdW50ZXIgLSAxOwotICAgICAgICAgICAgQVhDb3JlT2Jq
ZWN0KiBjaGlsZCA9IGNoaWxkcmVuW2NvbEluZGV4XS5nZXQoKTsKLSAgICAgICAgICAgIGlmICgh
Y2hpbGQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGF1dG8gY29s
dW1uUmFuZ2UgPSBjaGlsZC0+Y29sdW1uSW5kZXhSYW5nZSgpOwotICAgICAgICAgICAgYXV0byBy
b3dSYW5nZSA9IGNoaWxkLT5yb3dJbmRleFJhbmdlKCk7Ci0KLSAgICAgICAgICAgIGlmICgoY29s
dW1uID49IGNvbHVtblJhbmdlLmZpcnN0ICYmIGNvbHVtbiA8IChjb2x1bW5SYW5nZS5maXJzdCAr
IGNvbHVtblJhbmdlLnNlY29uZCkpCi0gICAgICAgICAgICAgICAgJiYgKHJvdyA+PSByb3dSYW5n
ZS5maXJzdCAmJiByb3cgPCAocm93UmFuZ2UuZmlyc3QgKyByb3dSYW5nZS5zZWNvbmQpKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7Ci0gICAgICAgIH0KLSAgICB9CiAKKyAgICBpZiAo
QVhJRCBjZWxsSUQgPSBtX3Nsb3RHcmlkW3Jvd11bY29sdW1uXSkKKyAgICAgICAgcmV0dXJuIGF4
T2JqZWN0Q2FjaGUoKS0+b2JqZWN0Rm9ySUQoY2VsbElEKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIApAQCAtNzQ2LDQgKzg1OSwxNyBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlOjpheFJvd0Nv
dW50KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6
OmVuc3VyZVJvdyh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBpZiAobV9zbG90R3JpZC5zaXplKCkg
PCBpbmRleCArIDEpCisgICAgICAgIG1fc2xvdEdyaWQuZ3JvdyhpbmRleCArIDEpOworfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93QW5kQ29sdW1uKHVuc2lnbmVkIHJvd0lu
ZGV4LCB1bnNpZ25lZCBjb2x1bW5JbmRleCkKK3sKKyAgICBlbnN1cmVSb3cocm93SW5kZXgpOwor
ICAgIGlmIChtX3Nsb3RHcmlkW3Jvd0luZGV4XS5zaXplKCkgPCBjb2x1bW5JbmRleCArIDEpCisg
ICAgICAgIG1fc2xvdEdyaWRbcm93SW5kZXhdLmdyb3coY29sdW1uSW5kZXggKyAxKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKaW5kZXggMjc0NmJlMzk1YTI5Li40OTJlOWRkODY4YTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuaApAQCAtMjksMTcgKzI5LDE3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitj
bGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVSb3c7CiBjbGFzcyBIVE1MVGFibGVFbGVtZW50OwotY2xh
c3MgUmVuZGVyVGFibGVTZWN0aW9uOwotICAgIAorCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGUg
OiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxBY2Nlc3NpYmlsaXR5VGFibGU+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0
aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZT4gY3JlYXRlKE5vZGUmKTsKICAgICB2aXJ0dWFsIH5B
Y2Nlc3NpYmlsaXR5VGFibGUoKTsKIAogICAgIHZvaWQgaW5pdCgpIGZpbmFsOwpAQCAtNDcsMTUg
KzQ3LDE1IEBAIHB1YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25z
dCBmaW5hbDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBcmlhVGFibGUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZvaWQgYWRk
Q2hpbGRyZW4oKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKSBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZUNoaWxkcmVuUm9sZXMoKTsKIAogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBjb2x1bW5zKCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IHJvd3MoKSBvdmVycmlkZTsKIAotICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50KCkgb3ZlcnJpZGU7
Ci0gICAgdW5zaWduZWQgcm93Q291bnQoKSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBjb2x1bW5D
b3VudCgpIGZpbmFsOworICAgIHVuc2lnbmVkIHJvd0NvdW50KCkgZmluYWw7CiAgICAgaW50IHRh
YmxlTGV2ZWwoKSBjb25zdCBmaW5hbDsKIAogICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IGZpbmFs
OwpAQCAtNzEsMTkgKzcxLDI2IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGFuIG9iamVjdCB0
aGF0IGNvbnRhaW5zLCBhcyBjaGlsZHJlbiwgYWxsIHRoZSBvYmplY3RzIHRoYXQgYWN0IGFzIGhl
YWRlcnMuCiAgICAgQVhDb3JlT2JqZWN0KiBoZWFkZXJDb250YWluZXIoKSBvdmVycmlkZTsKIAot
ICAgIGJvb2wgaXNUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBi
b29sIGlzVGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgLy8gUmV0dXJu
cyB3aGV0aGVyIGl0IGlzIGV4cG9zZWQgYXMgYW4gQWNjZXNzaWJpbGl0eVRhYmxlIHRvIHRoZSBw
bGF0Zm9ybS4KLSAgICBib29sIGlzRXhwb3NhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0V4cG9zYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNFeHBvc2FibGU7IH0KICAg
ICB2b2lkIHJlY29tcHV0ZUlzRXhwb3NhYmxlKCk7CiAKLSAgICBpbnQgYXhDb2x1bW5Db3VudCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBheFJvd0NvdW50KCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgaW50IGF4Q29sdW1uQ291bnQoKSBjb25zdCBmaW5hbDsKKyAgICBpbnQgYXhSb3dDb3VudCgp
IGNvbnN0IGZpbmFsOworCisgICAgVmVjdG9yPFZlY3RvcjxBWElEPj4gc2xvdEdyaWQoKSBmaW5h
bDsKKyAgICB2b2lkIHNldFNsb3RHcmlkRGlydHkoKTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxp
Y2l0IEFjY2Vzc2liaWxpdHlUYWJsZShSZW5kZXJPYmplY3QqKTsKKyAgICBleHBsaWNpdCBBY2Nl
c3NpYmlsaXR5VGFibGUoTm9kZSYpOwogCiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IG1fcm93czsKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbV9jb2x1bW5zOworICAg
IC8vIDJEIG1hdHJpeCBvZiB0aGUgY2VsbHMgYXNzaWduZWQgdG8gZWFjaCAic2xvdCIgaW4gdGhp
cyB0YWJsZS4KKyAgICAvLyAoIlNsb3QiIGFzIGRlZmluZWQgaGVyZTogaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjY29uY2VwdC1zbG90cykKKyAgICBW
ZWN0b3I8VmVjdG9yPEFYSUQ+PiBtX3Nsb3RHcmlkOwogCiAgICAgUmVmUHRyPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IG1faGVhZGVyQ29udGFpbmVyOwogICAgIGJvb2wgbV9pc0V4cG9zYWJsZTsKQEAg
LTkzLDEyICsxMDAsMTUgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBhZGRSb3coQWNjZXNzaWJp
bGl0eVRhYmxlUm93JiwgdW5zaWduZWQsIHVuc2lnbmVkJiBtYXhDb2x1bW5Db3VudCk7CisKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFj
Y2Vzc2liaWxpdHkoKSBjb25zdDsKICAgICB2b2lkIHRpdGxlRWxlbWVudFRleHQoVmVjdG9yPEFj
Y2Vzc2liaWxpdHlUZXh0PiYpIGNvbnN0IGZpbmFsOwogICAgIEhUTUxUYWJsZUVsZW1lbnQqIHRh
YmxlRWxlbWVudCgpIGNvbnN0OwotICAgIHZvaWQgYWRkQ2hpbGRyZW5Gcm9tU2VjdGlvbihSZW5k
ZXJUYWJsZVNlY3Rpb24qLCB1bnNpZ25lZCYgbWF4Q29sdW1uQ291bnQpOwotICAgIHZvaWQgYWRk
VGFibGVDZWxsQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0
eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CisKKyAgICB2
b2lkIGVuc3VyZVJvdyh1bnNpZ25lZCk7CisgICAgdm9pZCBlbnN1cmVSb3dBbmRDb2x1bW4odW5z
aWduZWQgLyogcm93SW5kZXggKi8sIHVuc2lnbmVkIC8qIGNvbHVtbkluZGV4ICovKTsKIAogICAg
IGJvb2wgaGFzTm9uVGFibGVBUklBUm9sZSgpIGNvbnN0OwogICAgIC8vIGlzRGF0YVRhYmxlIGlz
IHdoZXRoZXIgaXQgaXMgZXhwb3NlZCBhcyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgYmVjYXVzZSB0
aGUgaGV1cmlzdGljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAppbmRleCAwMjU5ZmZhNDliYjguLjMzNThlOGJlMWMz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNlbGwuY3BwCkBAIC0yOSwxOSArMjksMTMgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCiAKLSNpbmNsdWRlICJBWE9i
amVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCi0jaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCi0j
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIK
LSNpbmNsdWRlICJNYXRoTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5o
IgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJlbmRl
cmVyKQpAQCAtNDksNiArNDMsMTIgQEAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogfQogCitBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKE5vZGUmIG5vZGUpCisgICAgOiBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KG5vZGUpCisgICAgLCBtX2F4Q29sSW5kZXhGcm9tUm93
KC0xKQoreworfQorCiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjp+QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbCgpID0gZGVmYXVsdDsKIAogUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpAQCAtNTYsNiAr
NTYsMTEgQEAgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmUKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKHJlbmRlcmVyKSk7CiB9CiAKK1JlZjxBY2Nlc3NpYmls
aXR5VGFibGVDZWxsPiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjcmVhdGUoTm9kZSYgbm9kZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKG5vZGUp
KTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0CiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBk
ZWNpc2lvbiA9IGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKTsKQEAgLTY2LDExICs3MSwxMSBAQCBi
b29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkgY29uc3QKICAgICAKICAgICAvLyBJZ25vcmUgYW5vbnltb3VzIHRhYmxlIGNlbGxzIGFzIGxv
bmcgYXMgdGhleSdyZSBub3QgaW4gYSB0YWJsZSAoaWUuIHdoZW4gZGlzcGxheTp0YWJsZSBpcyB1
c2VkKS4KICAgICBSZW5kZXJPYmplY3QqIHJlbmRlclRhYmxlID0gaXM8UmVuZGVyVGFibGVDZWxs
PihyZW5kZXJlcigpKSA/IGRvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4oKm1fcmVuZGVyZXIpLnRh
YmxlKCkgOiBudWxscHRyOwotICAgIGJvb2wgaW5UYWJsZSA9IHJlbmRlclRhYmxlICYmIHJlbmRl
clRhYmxlLT5ub2RlKCkgJiYgKHJlbmRlclRhYmxlLT5ub2RlKCktPmhhc1RhZ05hbWUodGFibGVU
YWcpIHx8IG5vZGVIYXNSb2xlKHJlbmRlclRhYmxlLT5ub2RlKCksICJncmlkIl9zKSk7CisgICAg
Ym9vbCBpblRhYmxlID0gcmVuZGVyVGFibGUgJiYgcmVuZGVyVGFibGUtPm5vZGUoKSAmJiAocmVu
ZGVyVGFibGUtPm5vZGUoKS0+aGFzVGFnTmFtZSh0YWJsZVRhZykgfHwgbm9kZUhhc0dyaWRSb2xl
KHJlbmRlclRhYmxlLT5ub2RlKCkpKTsKICAgICBpZiAoIW5vZGUoKSAmJiAhaW5UYWJsZSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAotICAgIGlmICghaXNUYWJsZUNlbGwoKSkKKyAg
ICBpZiAoIWlzRXhwb3NlZFRhYmxlQ2VsbCgpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKICAgICAKICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMTgsNyArMTIzLDcgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRUYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGR5
bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KHRhYmxlRnJvbVJlbmRlclRyZWUpOwog
fQogICAgIAotYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlQ2VsbCgpIGNvbnN0
Citib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzRXhwb3NlZFRhYmxlQ2VsbCgpIGNvbnN0
CiB7CiAgICAgLy8gSWYgdGhlIHBhcmVudCB0YWJsZSBpcyBhbiBhY2Nlc3NpYmlsaXR5IHRhYmxl
LCB0aGVuIHdlIGFyZSBhIHRhYmxlIGNlbGwuCiAgICAgLy8gVGhpcyB1c2VkIHRvIGNoZWNrIGlm
IHRoZSB1bmlnbm9yZWRQYXJlbnQgd2FzIGEgcm93LCBidXQgdGhhdCBleHBsb2RlZCBwZXJmb3Jt
YW5jZSBpZgpAQCAtMTM2LDcgKzE0MSw3IEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKICAgICBpZiAoZGVmYXVs
dFJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlciB8fCBkZWZhdWx0Um9sZSA9
PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyIHx8IGRlZmF1bHRSb2xlID09IEFjY2Vzc2li
aWxpdHlSb2xlOjpDZWxsIHx8IGRlZmF1bHRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlk
Q2VsbCkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRSb2xlOwogCi0gICAgaWYgKCFpc1RhYmxlQ2Vs
bCgpKQorICAgIGlmICghaXNFeHBvc2VkVGFibGVDZWxsKCkpCiAgICAgICAgIHJldHVybiBkZWZh
dWx0Um9sZTsKICAgICBpZiAoaXNDb2x1bW5IZWFkZXJDZWxsKCkpCiAgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyOwpAQCAtMTQ4LDcgKzE1MywyMiBAQCBBY2Nl
c3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nlc3NpYmls
aXR5Um9sZSgpCiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzVGFibGVIZWFk
ZXJDZWxsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFt
ZSh0aFRhZyk7CisgICAgYXV0byogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRoVGFn
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0ZFRh
ZykpIHsKKyAgICAgICAgYXV0byogY3VycmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyICYmIGN1cnJlbnQ7IGkrKykgeworICAgICAgICAgICAg
aWYgKGN1cnJlbnQtPmhhc1RhZ05hbWUodGhlYWRUYWcpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE5vZGUoKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNDb2x1bW5IZWFkZXJDZWxsKCkgY29uc3QKQEAgLTMxNyw2OCArMzM3LDI1
IEBAIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cGFyZW50
Um93KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBvd25lclBhcmVudCA9IGFyaWFPd25lZEJ5UGFy
ZW50KCkpCiAgICAgICAgIHJldHVybiBvd25lclBhcmVudDsKLSAgICAKLSAgICBBWENvcmVPYmpl
Y3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlmICghaXM8QWNjZXNz
aWJpbGl0eVRhYmxlUm93PigqcGFyZW50KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ocGFyZW50KTsKKyAgICByZXR1
cm4gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ocGFyZW50T2JqZWN0VW5p
Z25vcmVkKCkpOwogfQogCiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKCkgY29uc3QKIHsKLSAgICBhdXRvKiBwYXJlbnRS
b3cgPSB0aGlzLT5wYXJlbnRSb3coKTsKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiByb3dSYW5nZSB7IHBhcmVudFJvdyA/IHBhcmVudFJvdy0+cm93SW5kZXgoKSA6IDAsIDEgfTsK
LQotICAgIC8vIEFSSUEgMS4xJ3MgYXJpYS1yb3dzcGFuIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCBm
b3IgY2VsbHMgYW5kIGdyaWRjZWxscyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZAotICAgIC8vIGlu
IGEgbmF0aXZlIHRhYmxlLiBCdXQgaWYgd2UgaGF2ZSBhIHZhbGlkIGF1dGhvci1wcm92aWRlZCB2
YWx1ZSBhbmQgZG8gbm90IGhhdmUgYW4gZXhwbGljaXQKLSAgICAvLyBuYXRpdmUgaG9zdCBsYW5n
dWFnZSB2YWx1ZSBmb3IgdGhlIHJvd3NwYW4sIGV4cG9zZSB0aGUgQVJJQSB2YWx1ZS4KLSAgICBy
b3dSYW5nZS5zZWNvbmQgPSBheFJvd1NwYW4oKTsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pihy
b3dSYW5nZS5zZWNvbmQpID09IC0xKSB7Ci0gICAgICAgIC8vIEl0J3MgZmFzdGVyIHRvIGdldCBy
b3dzcGFuIGZyb20gUmVuZGVyVGFibGVDZWxsIGJlY2F1c2UgaXQgaGFzIGJ1aWx0IGluIGNhY2hl
cyB0byBhdm9pZAotICAgICAgICAvLyByZWFkaW5nIGZyb20gdGhlIERPTSwgc28gdHJ5IHRoYXQg
Zmlyc3QuCi0gICAgICAgIGlmIChhdXRvKiByZW5kZXJUYWJsZUNlbGwgPSBkeW5hbWljRG93bmNh
c3Q8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkKLSAgICAgICAgICAgIHJvd1JhbmdlLnNl
Y29uZCA9IHJlbmRlclRhYmxlQ2VsbC0+cm93U3BhbigpOwotICAgICAgICBlbHNlIGlmIChhdXRv
KiB0YWJsZUNlbGxFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxUYWJsZUNlbGxFbGVtZW50
Pihub2RlKCkpKQotICAgICAgICAgICAgcm93UmFuZ2Uuc2Vjb25kID0gc3RkOjptaW48dW5zaWdu
ZWQ+KHRhYmxlQ2VsbEVsZW1lbnQtPnJvd1NwYW4oKSwgbWF4Um93SW5kZXgpOwotI2lmIEVOQUJM
RShNQVRITUwpCi0gICAgICAgIGVsc2UgaWYgKGF1dG8qIG1hdGhNTEVsZW1lbnQgPSBkeW5hbWlj
RG93bmNhc3Q8TWF0aE1MRWxlbWVudD4obm9kZSgpKTsgbWF0aE1MRWxlbWVudCAmJiBtYXRoTUxF
bGVtZW50LT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptdGRUYWcpKQotICAgICAgICAgICAgcm93
UmFuZ2Uuc2Vjb25kID0gc3RkOjptaW48dW5zaWduZWQ+KG1hdGhNTEVsZW1lbnQtPnJvd1NwYW4o
KSwgbWF4Um93SW5kZXgpOwotI2VuZGlmCi0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLy8g
RGVmYXVsdCBiYWNrIHRvIDEuCi0gICAgICAgICAgICByb3dSYW5nZS5zZWNvbmQgPSAxOwotICAg
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiByb3dSYW5nZTsKKyAgICByZXR1cm4geyBtX3Jvd0lu
ZGV4LCByb3dTcGFuKCkgfTsKIH0KICAgICAKIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdAogewotICAg
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlIHsgMCwgMSB9OwotICAg
IGlmICghaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuIGNv
bHVtblJhbmdlOwotCi0gICAgY29uc3QgUmVuZGVyVGFibGVDZWxsJiBjZWxsID0gZG93bmNhc3Q8
UmVuZGVyVGFibGVDZWxsPigqbV9yZW5kZXJlcik7Ci0gICAgY29sdW1uUmFuZ2UuZmlyc3QgPSBj
ZWxsLnRhYmxlKCktPmNvbFRvRWZmQ29sKGNlbGwuY29sKCkpOwotCi0gICAgLy8gQVJJQSAxLjEn
cyBhcmlhLWNvbHNwYW4gYXR0cmlidXRlIGlzIGludGVuZGVkIGZvciBjZWxscyBhbmQgZ3JpZGNl
bGxzIHdoaWNoIGFyZSBub3QgY29udGFpbmVkCi0gICAgLy8gaW4gYSBuYXRpdmUgdGFibGUuIEJ1
dCBpZiB3ZSBoYXZlIGEgdmFsaWQgYXV0aG9yLXByb3ZpZGVkIHZhbHVlIGFuZCBkbyBub3QgaGF2
ZSBhbiBleHBsaWNpdAotICAgIC8vIG5hdGl2ZSBob3N0IGxhbmd1YWdlIHZhbHVlIGZvciB0aGUg
Y29sc3BhbiwgZXhwb3NlIHRoZSBBUklBIHZhbHVlLgotICAgIGNvbHVtblJhbmdlLnNlY29uZCA9
IGF4Q29sdW1uU3BhbigpOwotICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGNvbHVtblJhbmdlLnNl
Y29uZCkgIT0gLTEpCi0gICAgICAgIHJldHVybiBjb2x1bW5SYW5nZTsKLQotICAgIGNvbHVtblJh
bmdlLnNlY29uZCA9IGNlbGwudGFibGUoKS0+Y29sVG9FZmZDb2woY2VsbC5jb2woKSArIGNlbGwu
Y29sU3BhbigpKSAtIGNvbHVtblJhbmdlLmZpcnN0OwotCi0gICAgcmV0dXJuIGNvbHVtblJhbmdl
OworICAgIHJldHVybiB7IG1fY29sdW1uSW5kZXgsIGNvbFNwYW4oKSB9OwogfQotICAgIAorCiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjp0aXRsZVVJRWxlbWVu
dCgpIGNvbnN0CiB7CiAgICAgLy8gVHJ5IHRvIGZpbmQgaWYgdGhlIGZpcnN0IGNlbGwgaW4gdGhp
cyByb3cgaXMgYSA8dGg+LiBJZiBpdCBpcywKICAgICAvLyB0aGVuIGl0IGNhbiBhY3QgYXMgdGhl
IHRpdGxlIHVpIGVsZW1lbnQuIChUaGlzIGlzIG9ubHkgaW4gdGhlCiAgICAgLy8gY2FzZSB3aGVu
IHRoZSB0YWJsZSBpcyBub3QgYXBwZWFyaW5nIGFzIGFuIEFYVGFibGUuKQotICAgIGlmIChpc1Rh
YmxlQ2VsbCgpIHx8ICFpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpKQorICAgIGlmIChp
c0V4cG9zZWRUYWJsZUNlbGwoKSB8fCAhaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBUYWJsZSBjZWxscyB0aGF0IGFyZSB0
aCBjYW5ub3QgaGF2ZSB0aXRsZSB1aSBlbGVtZW50cywgc2luY2UgYnkgZGVmaW5pdGlvbgpAQCAt
NDE4LDEwICszOTUsOSBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhDb2x1bW5JbmRl
eCgpIGNvbnN0CiAgICAgLy8gIkFSSUEgMS4xOiBJZiB0aGUgc2V0IG9mIGNvbHVtbnMgd2hpY2gg
aXMgcHJlc2VudCBpbiB0aGUgRE9NIGlzIGNvbnRpZ3VvdXMsIGFuZCBpZiB0aGVyZSBhcmUgbm8g
Y2VsbHMgd2hpY2ggc3BhbiBtb3JlIHRoYW4gb25lIHJvdwogICAgIC8vIG9yIGNvbHVtbiBpbiB0
aGF0IHNldCwgdGhlbiBhdXRob3JzIG1heSBwbGFjZSBhcmlhLWNvbGluZGV4IG9uIGVhY2ggcm93
LCBzZXR0aW5nIHRoZSB2YWx1ZSB0byB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNvbHVtbiBvZiB0
aGUgc2V0LiIKICAgICAvLyBIZXJlLCB3ZSBsZXQgaXRzIHBhcmVudCByb3cgdG8gc2V0IGl0cyBp
bmRleCBiZWZvcmVoYW5kLCBzbyB3ZSBkb24ndCBoYXZlIHRvIGdvIHRocm91Z2ggdGhlIHNpYmxp
bmdzIHRvIGNhbGN1bGF0ZSB0aGUgaW5kZXguCi0gICAgQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBw
YXJlbnRSb3cgPSB0aGlzLT5wYXJlbnRSb3coKTsKLSAgICBpZiAocGFyZW50Um93ICYmIG1fYXhD
b2xJbmRleEZyb21Sb3cgIT0gLTEpCisgICAgaWYgKG1fYXhDb2xJbmRleEZyb21Sb3cgIT0gLTEg
JiYgcGFyZW50Um93KCkpCiAgICAgICAgIHJldHVybiBtX2F4Q29sSW5kZXhGcm9tUm93OwotICAg
IAorCiAgICAgcmV0dXJuIC0xOwogfQogICAgIApAQCAtNDM4LDYgKzQxNCwzMyBAQCBpbnQgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dJbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIC0xOwog
fQogCit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dTcGFuKCkgY29uc3QKK3sK
KyAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIEFSSUEgc3BlYywgIklmIGFyaWEtcm93c3BhbiBpcyB1
c2VkIG9uIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBob3N0IGxhbmd1YWdlCisgICAgLy8gcHJv
dmlkZXMgYW4gZXF1aXZhbGVudCBhdHRyaWJ1dGUsIHVzZXIgYWdlbnRzIG11c3QgaWdub3JlIHRo
ZSB2YWx1ZSBvZiBhcmlhLXJvd3NwYW4uIgorICAgIGlmIChhdXRvIHJvd1NwYW4gPSBwYXJzZUhU
TUxJbnRlZ2VyKGdldEF0dHJpYnV0ZShyb3dzcGFuQXR0cikpOyByb3dTcGFuICYmICpyb3dTcGFu
ID49IDEpIHsKKyAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2UvdGFibGVzLmh0bWwKKyAgICAgICAgLy8gSWYgcm93c3BhbiBpcyBncmVhdGVyIHRoYW4gNjU1
MzQsIGxldCBpdCBiZSA2NTUzNCBpbnN0ZWFkLgorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3Rk
OjptYXgoKnJvd1NwYW4sIDEpLCA2NTUzNCk7CisgICAgfQorICAgIGlmIChhdXRvIGFyaWFSb3dT
cGFuID0gcGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXJpYV9yb3dzcGFuQXR0cikpOyBh
cmlhUm93U3BhbiAmJiAqYXJpYVJvd1NwYW4gPj0gMSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWlu
KHN0ZDo6bWF4KCphcmlhUm93U3BhbiwgMSksIDY1NTM0KTsKKyAgICByZXR1cm4gMTsKK30KKwor
dW5zaWduZWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sU3BhbigpIGNvbnN0Cit7CisgICAg
aWYgKGF1dG8gY29sU3BhbiA9IHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGNvbHNwYW5B
dHRyKSk7IGNvbFNwYW4gJiYgKmNvbFNwYW4gPj0gMSkgeworICAgICAgICAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS90YWJsZXMuaHRtbAorICAgICAgICAvLyBJZiBj
b2xzcGFuIGlzIGdyZWF0ZXIgdGhhbiAxMDAwLCBsZXQgaXQgYmUgMTAwMCBpbnN0ZWFkLgorICAg
ICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgoKmNvbFNwYW4sIDEpLCAxMDAwKTsKKyAgICB9
CisgICAgaWYgKGF1dG8gYXJpYUNvbFNwYW4gPSBwYXJzZUhUTUxJbnRlZ2VyKGdldEF0dHJpYnV0
ZShhcmlhX2NvbHNwYW5BdHRyKSk7IGFyaWFDb2xTcGFuICYmICphcmlhQ29sU3BhbiA+PSAxKQor
ICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgoKmFyaWFDb2xTcGFuLCAxKSwgMTAwMCk7
CisgICAgcmV0dXJuIDE7Cit9CisKKyNpZiBVU0UoQVRTUEkpCiBpbnQgQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6YXhDb2x1bW5TcGFuKCkgY29uc3QKIHsKICAgICAvLyBBY2NvcmRpbmcgdG8gdGhl
IEFSSUEgc3BlYywgIklmIGFyaWEtY29scGFuIGlzIHVzZWQgb24gYW4gZWxlbWVudCBmb3Igd2hp
Y2ggdGhlIGhvc3QgbGFuZ3VhZ2UKQEAgLTQ2OCw1ICs0NzEsNiBAQCBpbnQgQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6YXhSb3dTcGFuKCkgY29uc3QKIAogICAgIHJldHVybiAtMTsKIH0KLSAgICAK
KyNlbmRpZiAvLyBVU0UoQVRTUEkpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgK
aW5kZXggZjQwYjgyZGMxNGEyLi42ZjBiMmFlZDgzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCkBAIC0zOCwzNiAr
MzgsNDkgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlUm93OwogY2xhc3MgQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IGNyZWF0ZShSZW5kZXJPYmpl
Y3QqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IGNyZWF0ZShOb2Rl
Jik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCgpOworICAgIGJvb2wgaXNU
YWJsZUNlbGwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBib29sIGlzVGFi
bGVDZWxsKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0V4cG9zZWRUYWJsZUNlbGwoKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGlzVGFibGVIZWFkZXJDZWxsKCkgY29uc3Q7CiAgICAgYm9vbCBp
c0NvbHVtbkhlYWRlckNlbGwoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzUm93SGVhZGVy
Q2VsbCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5VGFibGUq
IHBhcmVudFRhYmxlKCkgY29uc3Q7CisKICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlv
biBhbmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCi0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNp
Z25lZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6cGFpcjx1bnNp
Z25lZCwgdW5zaWduZWQ+IHJvd0luZGV4UmFuZ2UoKSBjb25zdCBmaW5hbDsKICAgICAvLyBSZXR1
cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgdGhlIGNlbGwuCi0gICAg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uSW5kZXhSYW5nZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtbkluZGV4UmFu
Z2UoKSBjb25zdCBmaW5hbDsKIAogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb2x1
bW5IZWFkZXJzKCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJv
d0hlYWRlcnMoKSBvdmVycmlkZTsKIAogICAgIGludCBheENvbHVtbkluZGV4KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgaW50IGF4Um93SW5kZXgoKSBjb25zdCBvdmVycmlkZTsKKyAgICB1bnNpZ25l
ZCBjb2xTcGFuKCkgY29uc3Q7CisgICAgdW5zaWduZWQgcm93U3BhbigpIGNvbnN0OworICAgIHZv
aWQgc2V0QVhDb2xJbmRleEZyb21Sb3coaW50IGluZGV4KSB7IG1fYXhDb2xJbmRleEZyb21Sb3cg
PSBpbmRleDsgfQorCisgICAgdm9pZCBzZXRSb3dJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX3Jv
d0luZGV4ID0gaW5kZXg7IH0KKyAgICB2b2lkIHNldENvbHVtbkluZGV4KHVuc2lnbmVkIGluZGV4
KSB7IG1fY29sdW1uSW5kZXggPSBpbmRleDsgfQorCisjaWYgVVNFKEFUU1BJKQogICAgIGludCBh
eENvbHVtblNwYW4oKSBjb25zdDsKICAgICBpbnQgYXhSb3dTcGFuKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRBWENvbEluZGV4RnJvbVJvdyhpbnQgaW5kZXgpIHsgbV9heENvbEluZGV4RnJvbVJvdyA9
IGluZGV4OyB9CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGwoUmVuZGVyT2JqZWN0Kik7CisgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbChOb2RlJik7CiAKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVSb3cqIHBhcmVudFJvdygp
IGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRhYmxlKiBwYXJlbnRUYWJsZSgpIGNv
bnN0OwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkg
ZmluYWw7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBpbnQgbV9yb3dJbmRleDsKKyAgICB1bnNpZ25lZCBtX3Jv
d0luZGV4IHsgMCB9OworICAgIHVuc2lnbmVkIG1fY29sdW1uSW5kZXggeyAwIH07CiAgICAgaW50
IG1fYXhDb2xJbmRleEZyb21Sb3c7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXgg
YWM0MmFkMzA0YjBkLi42ODZiMzY1ZDI5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKQEAgLTI5LDE3
ICsyOSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uLmgiCiAKLSNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKLSNpbmNsdWRlICJSZW5k
ZXJUYWJsZUNlbGwuaCIKLSNpbmNsdWRlICJSZW5kZXJUYWJsZVNlY3Rpb24uaCIKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpBY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW4oKSA9IGRlZmF1bHQ7CiAKQEAgLTcxLDEwMiArNjMsMTcgQEAg
TGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmVsZW1lbnRSZWN0KCkgY29uc3QK
IAogQVhDb3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmNvbHVtbkhlYWRlcigp
CiB7Ci0gICAgaWYgKCFtX3BhcmVudCB8fCAhaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9wYXJl
bnQpCi0gICAgICAgIHx8ICFtX3BhcmVudC0+aXNFeHBvc2FibGUoKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9wYXJlbnQtPnJlbmRl
cmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKKyAgICBhdXRvKiBwYXJlbnRUYWJsZSA9IGR5bmFt
aWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KG1fcGFyZW50LmdldCgpKTsKKyAgICBpZiAo
IXBhcmVudFRhYmxlIHx8ICFwYXJlbnRUYWJsZS0+aXNFeHBvc2FibGUoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvJiBwYXJlbnRUYWJsZSA9IGRvd25jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZT4oKm1fcGFyZW50KTsKLQotICAgIGlmIChwYXJlbnRUYWJsZS5pc0FyaWFUYWJs
ZSgpKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgY2VsbCA6IGNoaWxkcmVuKCkpIHsKLSAg
ICAgICAgICAgIGlmIChjZWxsLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29s
dW1uSGVhZGVyKQotICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLmdldCgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgZm9yIChjb25zdCBhdXRvJiBjZWxsIDog
Y2hpbGRyZW4oKSkgeworICAgICAgICBpZiAoY2VsbC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJp
bGl0eVJvbGU6OkNvbHVtbkhlYWRlcikKKyAgICAgICAgICAgIHJldHVybiBjZWxsLmdldCgpOwog
ICAgIH0KLQotICAgIGlmICghaXM8UmVuZGVyVGFibGU+KCpyZW5kZXJlcikpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIAotICAgIFJlbmRlclRhYmxlJiB0YWJsZSA9IGRvd25jYXN0PFJl
bmRlclRhYmxlPigqcmVuZGVyZXIpOwotCi0gICAgLy8gdHJ5IHRoZSA8dGhlYWQ+IHNlY3Rpb24g
Zmlyc3QuIHRoaXMgZG9lc24ndCByZXF1aXJlIHRoIHRhZ3MKLSAgICBpZiAoYXV0byogaGVhZGVy
T2JqZWN0ID0gaGVhZGVyT2JqZWN0Rm9yU2VjdGlvbih0YWJsZS5oZWFkZXIoKSwgZmFsc2UpKQot
ICAgICAgICByZXR1cm4gaGVhZGVyT2JqZWN0OwotICAgIAotICAgIFJlbmRlclRhYmxlU2VjdGlv
biogYm9keVNlY3Rpb24gPSB0YWJsZS5maXJzdEJvZHkoKTsKLSAgICB3aGlsZSAoYm9keVNlY3Rp
b24gJiYgYm9keVNlY3Rpb24tPmlzQW5vbnltb3VzKCkpCi0gICAgICAgIGJvZHlTZWN0aW9uID0g
dGFibGUuc2VjdGlvbkJlbG93KGJvZHlTZWN0aW9uLCBTa2lwRW1wdHlTZWN0aW9ucyk7Ci0gICAg
Ci0gICAgLy8gbm93IHRyeSBmb3IgPHRoPiB0YWdzIGluIHRoZSBmaXJzdCBib2R5LiBJZiB0aGUg
Zmlyc3QgYm9keSBpcyAKLSAgICByZXR1cm4gaGVhZGVyT2JqZWN0Rm9yU2VjdGlvbihib2R5U2Vj
dGlvbiwgdHJ1ZSk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0Rm9yU2VjdGlvbihSZW5k
ZXJUYWJsZVNlY3Rpb24qIHNlY3Rpb24sIGJvb2wgdGhUYWdSZXF1aXJlZCkKLXsKLSAgICBpZiAo
IXNlY3Rpb24pCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIHVuc2lnbmVkIG51
bUNvbHMgPSBzZWN0aW9uLT5udW1Db2x1bW5zKCk7Ci0gICAgaWYgKG1fY29sdW1uSW5kZXggPj0g
bnVtQ29scykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKCFzZWN0aW9u
LT5udW1Sb3dzKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIFJlbmRlclRh
YmxlQ2VsbCogY2VsbCA9IG51bGxwdHI7Ci0gICAgLy8gYWxzbyBhY2NvdW50IGZvciBjZWxscyB0
aGF0IGhhdmUgYSBzcGFuCi0gICAgZm9yIChpbnQgdGVzdENvbCA9IG1fY29sdW1uSW5kZXg7IHRl
c3RDb2wgPj0gMDsgLS10ZXN0Q29sKSB7Ci0gICAgICAgIAotICAgICAgICAvLyBSdW4gZG93biB0
aGUgcm93cyBpbiBjYXNlIGluaXRpYWwgcm93cyBhcmUgaW52YWxpZCAobGlrZSB3aGVuIGEgPGNh
cHRpb24+IGlzIHVzZWQpLgotICAgICAgICB1bnNpZ25lZCByb3dDb3VudCA9IHNlY3Rpb24tPm51
bVJvd3MoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCB0ZXN0Um93ID0gMDsgdGVzdFJvdyA8IHJv
d0NvdW50OyB0ZXN0Um93KyspIHsKLSAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCogdGVzdENl
bGwgPSBzZWN0aW9uLT5wcmltYXJ5Q2VsbEF0KHRlc3RSb3csIHRlc3RDb2wpOwotICAgICAgICAg
ICAgLy8gTm8gY2VsbCBhdCB0aGlzIGluZGV4LCBrZWVwIGNoZWNraW5nIG1vcmUgcm93cyBhbmQg
Y29sdW1ucy4KLSAgICAgICAgICAgIGlmICghdGVzdENlbGwpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIElmIHdlJ3ZlIHJlYWNoZWQgYSBj
ZWxsIHRoYXQgZG9lc24ndCBldmVuIG92ZXJsYXAgb3VyIGNvbHVtbiBpdCBjYW4ndCBiZSB0aGUg
aGVhZGVyLgotICAgICAgICAgICAgaWYgKCh0ZXN0Q2VsbC0+Y29sKCkgKyAodGVzdENlbGwtPmNv
bFNwYW4oKS0xKSkgPCBtX2NvbHVtbkluZGV4KQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBOb2RlKiB0ZXN0Q2VsbE5vZGUgPSB0ZXN0Q2VsbC0+ZWxl
bWVudCgpOwotICAgICAgICAgICAgLy8gSWYgdGhlIFJlbmRlclRhYmxlQ2VsbCBkb2Vzbid0IGhh
dmUgYW4gZWxlbWVudCBiZWNhdXNlIGl0cyBhbm9ueW1vdXMsCi0gICAgICAgICAgICAvLyB0cnkg
dG8gc2VlIGlmIHdlIGNhbiBmaW5kIHRoZSBvcmlnaW5hbCBjZWxsIGVsZW1lbnQgdG8gY2hlY2sg
aWYgaXQgaGFzIGEgPHRoPiB0YWcuCi0gICAgICAgICAgICBpZiAoIXRlc3RDZWxsTm9kZSAmJiB0
ZXN0Q2VsbC0+aXNBbm9ueW1vdXMoKSkgewotICAgICAgICAgICAgICAgIGlmIChFbGVtZW50KiBw
YXJlbnRFbGVtZW50ID0gdGVzdENlbGwtPnBhcmVudCgpID8gdGVzdENlbGwtPnBhcmVudCgpLT5l
bGVtZW50KCkgOiBudWxscHRyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRFbGVt
ZW50LT5oYXNUYWdOYW1lKHRyVGFnKSAmJiB0ZXN0Q29sIDwgc3RhdGljX2Nhc3Q8aW50PihwYXJl
bnRFbGVtZW50LT5jb3VudENoaWxkTm9kZXMoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0Q2VsbE5vZGUgPSBwYXJlbnRFbGVtZW50LT50cmF2ZXJzZVRvQ2hpbGRBdCh0ZXN0Q29sKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghdGVz
dENlbGxOb2RlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICAvLyBJZiB0aCBpcyByZXF1aXJlZCwgYnV0IHdlIGZvdW5kIGFuIGVsZW1lbnQgdGhh
dCBkb2Vzbid0IGhhdmUgYSB0aCB0YWcsIHdlIGNhbiBzdG9wIGxvb2tpbmcuCi0gICAgICAgICAg
ICBpZiAodGhUYWdSZXF1aXJlZCAmJiAhdGVzdENlbGxOb2RlLT5oYXNUYWdOYW1lKHRoVGFnKSkK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2VsbCA9
IHRlc3RDZWxsOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0g
ICAgaWYgKCFjZWxsKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8qIGNlbGxP
YmplY3QgPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGNlbGwpOwotICAgIGlmICghY2Vs
bE9iamVjdCB8fCBjZWxsT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICAKLSAgICByZXR1cm4gY2VsbE9iamVjdDsKLX0KLSAg
ICAKIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhcmVudCkKQEAgLTE4MiwyMiArODksMTgg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkgY29uc3QKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJl
bigpCiB7CiAgICAgQVNTRVJUKCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOyAKLSAgICAKICAgICBt
X2NoaWxkcmVuSW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRh
YmxlPihtX3BhcmVudCkpCi0gICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHBhcmVudFRhYmxl
ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9wYXJlbnQpOwotICAgIGlmICghcGFy
ZW50VGFibGUuaXNFeHBvc2FibGUoKSkKKyAgICBhdXRvKiBwYXJlbnRUYWJsZSA9IGR5bmFtaWNE
b3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KG1fcGFyZW50LmdldCgpKTsKKyAgICBpZiAoIXBh
cmVudFRhYmxlIHx8ICFwYXJlbnRUYWJsZS0+aXNFeHBvc2FibGUoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIGludCBudW1Sb3dzID0gcGFyZW50VGFibGUucm93Q291bnQoKTsKLSAgICAK
KworICAgIGludCBudW1Sb3dzID0gcGFyZW50VGFibGUtPnJvd0NvdW50KCk7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1Sb3dzOyArK2kpIHsKLSAgICAgICAgYXV0byogY2VsbCA9IHBhcmVu
dFRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3cobV9jb2x1bW5JbmRleCwgaSk7CisgICAgICAgIGF1
dG8qIGNlbGwgPSBwYXJlbnRUYWJsZS0+Y2VsbEZvckNvbHVtbkFuZFJvdyhtX2NvbHVtbkluZGV4
LCBpKTsKICAgICAgICAgaWYgKCFjZWxsKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IAorCiAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgbGFzdCBvbmUgaXNuJ3QgdGhlIHNhbWUgYXMg
dGhpcyBvbmUgKHJvd3NwYW4gY2VsbHMpCiAgICAgICAgIGlmIChtX2NoaWxkcmVuLnNpemUoKSA+
IDAgJiYgbV9jaGlsZHJlbi5sYXN0KCkgPT0gY2VsbCkKICAgICAgICAgICAgIGNvbnRpbnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uLmgKaW5kZXggNmIxYWNjZDBmNTA2Li5iMDViMjkzOGU3YmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW4uaApAQCAtMjksOCArMjksNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5TW9ja09iamVjdC5oIgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgotI2lu
Y2x1ZGUgIkludFJlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtNTYsNyAr
NTQsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbigp
OwogICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdEZvclNlY3Rpb24o
UmVuZGVyVGFibGVTZWN0aW9uKiwgYm9vbCB0aFRhZ1JlcXVpcmVkKTsKICAgICBib29sIGNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1Rh
YmxlQ29sdW1uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAK
aW5kZXggNWUzYmFiZTM2NmMyLi4wYTNiYzM2MTJmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKQEAgLTI5LDI0
ICsyOSwyNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlU
YWJsZVJvdy5oIgogCi0jaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlUYWJsZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCi0j
aW5jbHVkZSAiUmVuZGVyVGFibGVSb3cuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAor
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotICAgIAorCiBBY2Nlc3NpYmlsaXR5VGFibGVS
b3c6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIDog
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJlcikKIHsKIH0KIAorQWNjZXNzaWJpbGl0
eVRhYmxlUm93OjpBY2Nlc3NpYmlsaXR5VGFibGVSb3coTm9kZSYgbm9kZSkKKyAgICA6IEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Qobm9kZSkKK3sKK30KKwogQWNjZXNzaWJpbGl0eVRhYmxlUm93
Ojp+QWNjZXNzaWJpbGl0eVRhYmxlUm93KCkgPSBkZWZhdWx0OwogCiBSZWY8QWNjZXNzaWJpbGl0
eVRhYmxlUm93PiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQpAQCAtNTQsNiArNTUsMTEgQEAgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4gQWNj
ZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGFibGVSb3cocmVuZGVyZXIpKTsKIH0K
IAorUmVmPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4gQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVh
dGUoTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5
VGFibGVSb3cobm9kZSkpOworfQorCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFi
bGVSb3c6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKIHsKICAgICBpZiAoIWlzVGFibGVS
b3coKSkKQEAgLTExMywxOSArMTE5LDE5IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJp
bGl0eVRhYmxlUm93OjpwYXJlbnRUYWJsZSgpIGNvbnN0CiBBWENvcmVPYmplY3QqIEFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KCkKIHsKICAgICBjb25zdCBhdXRvJiByb3dDaGls
ZHJlbiA9IGNoaWxkcmVuKCk7Ci0gICAgaWYgKCFyb3dDaGlsZHJlbi5zaXplKCkpCisgICAgaWYg
KHJvd0NoaWxkcmVuLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0g
ICAgYXV0byogY2VsbCA9IHJvd0NoaWxkcmVuWzBdLmdldCgpOwotICAgIGlmICghaXM8QWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbD4oY2VsbCkgfHwgIWNlbGwtPm5vZGUoKSB8fCAhY2VsbC0+bm9kZSgp
LT5oYXNUYWdOYW1lKHRoVGFnKSkKKyAgICBhdXRvKiBmaXJzdENlbGwgPSByb3dDaGlsZHJlblsw
XS5nZXQoKTsKKyAgICBpZiAoIWZpcnN0Q2VsbCB8fCAhZmlyc3RDZWxsLT5ub2RlKCkgfHwgIWZp
cnN0Q2VsbC0+bm9kZSgpLT5oYXNUYWdOYW1lKHRoVGFnKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgCisKICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgcm93IGhlYWRlciBpcyBub3QgcGFy
dCBvZiBhbiBlbnRpcmUgcm93IG9mIGhlYWRlcnMuCiAgICAgLy8gSW4gdGhhdCBjYXNlLCBpdCBp
cyB1bmxpa2VseSB0aGlzIGlzIGEgcm93IGhlYWRlci4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGNo
aWxkIDogcm93Q2hpbGRyZW4pIHsKICAgICAgICAgLy8gV2UgZm91bmQgYSBub24taGVhZGVyIGNl
bGwsIHNvIHRoaXMgaXMgbm90IGFuIGVudGlyZSByb3cgb2YgaGVhZGVycyAtLSByZXR1cm4gdGhl
IG9yaWdpbmFsIGhlYWRlciBjZWxsLgogICAgICAgICBpZiAoY2hpbGQtPm5vZGUoKSAmJiAhY2hp
bGQtPm5vZGUoKS0+aGFzVGFnTmFtZSh0aFRhZykpCi0gICAgICAgICAgICByZXR1cm4gY2VsbDsK
KyAgICAgICAgICAgIHJldHVybiBmaXJzdENlbGw7CiAgICAgfQogICAgIHJldHVybiBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlUm93LmgKaW5kZXggOTUzNThjZjIyNmE0Li5lZGJkYWM3ODVkMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaApA
QCAtMzcsNiArMzcsNyBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFzcyBBY2Nlc3Np
YmlsaXR5VGFibGVSb3cgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+IGNyZWF0ZShSZW5kZXJP
YmplY3QqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4gY3JlYXRlKE5v
ZGUmKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VGFibGVSb3coKTsKIAogICAgIC8vIHJl
dHJpZXZlcyB0aGUgInJvdyIgaGVhZGVyIChhIHRoIHRhZyBpbiB0aGUgcmlnaHRtb3N0IGNvbHVt
bikKQEAgLTU3LDYgKzU4LDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
QWNjZXNzaWJpbGl0eVRhYmxlUm93KFJlbmRlck9iamVjdCopOworICAgIGV4cGxpY2l0IEFjY2Vz
c2liaWxpdHlUYWJsZVJvdyhOb2RlJik7CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1p
bmVBY2Nlc3NpYmlsaXR5Um9sZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0c3BpLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRh
YmxlQXRzcGkuY3BwCmluZGV4IDg1NWRhMGUzNzBmNy4uZDU1NjUzNTU2NjkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RU
YWJsZUF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0Fj
Y2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0c3BpLmNwcApAQCAtOTIsNyArOTIsNyBAQCBHREJ1c0lu
dGVyZmFjZVZUYWJsZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNfdGFibGVGdW5jdGlvbnMg
PSB7CiAgICAgICAgICAgICBhdXRvIHJvdyA9IGF0c3BpT2JqZWN0LT5yb3dBdEluZGV4KGluZGV4
KTsKICAgICAgICAgICAgIGF1dG8gY29sdW1uID0gYXRzcGlPYmplY3QtPmNvbHVtbkF0SW5kZXgo
aW5kZXgpOwogICAgICAgICAgICAgYXV0byogY2VsbCA9IGF0c3BpT2JqZWN0LT5tX2NvcmVPYmpl
Y3QgPyBhdHNwaU9iamVjdC0+bV9jb3JlT2JqZWN0LT5jZWxsRm9yQ29sdW1uQW5kUm93KCpjb2x1
bW4sICpyb3cpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlv
bl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKGJpaWlpYikiLCBjZWxs
ICYmIGNlbGwtPmlzVGFibGVDZWxsKCkgPyBUUlVFIDogRkFMU0UsCisgICAgICAgICAgICBnX2Ri
dXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9u
ZXcoIihiaWlpaWIpIiwgY2VsbCAmJiBjZWxsLT5pc0V4cG9zZWRUYWJsZUNlbGwoKSA/IFRSVUUg
OiBGQUxTRSwKICAgICAgICAgICAgICAgICByb3cudmFsdWVfb3IoLTEpLCBjb2x1bW4udmFsdWVf
b3IoLTEpLCByb3cgJiYgY29sdW1uID8gYXRzcGlPYmplY3QtPnJvd0V4dGVudCgqcm93LCAqY29s
dW1uKSA6IC0xLAogICAgICAgICAgICAgICAgIHJvdyAmJiBjb2x1bW4gPyBhdHNwaU9iamVjdC0+
Y29sdW1uRXh0ZW50KCpyb3csICpjb2x1bW4pIDogLTEsIEZBTFNFKSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAoIWdfc3RyY21wMChtZXRob2ROYW1lLCAiR2V0U2VsZWN0ZWRSb3dzIikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFRhYmxlQ2VsbEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkv
QWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcAppbmRleCBkNGE0NTJiNWNiMGMu
LjEwYTJlZTM5YmI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVDZWxsQXRzcGkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0
c3BpLmNwcApAQCAtNjQsNyArNjQsNyBAQCBHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nlc3NpYmls
aXR5T2JqZWN0QXRzcGk6OnNfdGFibGVDZWxsRnVuY3Rpb25zID0gewogICAgICAgICAgICAgcmV0
dXJuIGdfdmFyaWFudF9uZXdfaW50MzIoYXRzcGlPYmplY3QtPnJvd1NwYW4oKSk7CiAgICAgICAg
IGlmICghZ19zdHJjbXAwKHByb3BlcnR5TmFtZSwgIlRhYmxlIikpIHsKICAgICAgICAgICAgIGF1
dG8qIGF4T2JqZWN0ID0gYXRzcGlPYmplY3QtPm1fY29yZU9iamVjdDsKLSAgICAgICAgICAgIGlm
ICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5pc1RhYmxlQ2VsbCgpKQorICAgICAgICAgICAgaWYg
KCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmlzRXhwb3NlZFRhYmxlQ2VsbCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLm51bGxSZWZlcmVu
Y2UoKTsKIAogICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKiB3cmFwcGVyID0g
YXRzcGlPYmplY3QucHRyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CmluZGV4IGZhZDkxMWU2NjJiNS4uOWNkNDBkOWZmOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTI4Niw3ICsxMjg2LDcgQEAgLSAoQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbCopdGFibGVDZWxsUGFyZW50CiB7CiAgICAgLy8gRmluZCBpZiB0aGlzIGVsZW1l
bnQgaXMgaW4gYSB0YWJsZSBjZWxsLgogICAgIGlmIChBWENvcmVPYmplY3QqIHBhcmVudCA9IEFj
Y2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBWENvcmVPYmplY3Q+KCpzZWxmLmF4QmFja2luZ09i
amVjdCwgdHJ1ZSwgW10gKGNvbnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0KSB7Ci0gICAgICAgIHJl
dHVybiBvYmplY3QuaXNUYWJsZUNlbGwoKTsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5pc0V4cG9z
ZWRUYWJsZUNlbGwoKTsKICAgICB9KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGwqPihwYXJlbnQpOwogICAgIHJldHVybiBuaWw7CkBAIC0xMzQ3LDcg
KzEzNDcsNyBAQCAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUhlYWRlckVsZW1lbnRzCiAgICAg
Ly8gV2Ugc2hvdWxkIGNvbnNpZGVyIHRoZSBjYXNlcyB3aGVyZSB0aGUgcm93IG51bWJlciBkb2Vz
IE5PVCBtYXRjaCB0aGUgaW5kZXggaW4KICAgICAvLyByb3dIZWFkZXJzLCB0aGUgbW9zdCBjb21t
b24gY2FzZSBpcyB3aGVuIHJvdzAvY29sMCBkb2VzIG5vdCBoYXZlIGEgaGVhZGVyLgogICAgIGZv
ciAoY29uc3QgYXV0byYgcm93SGVhZGVyIDogcm93SGVhZGVycykgewotICAgICAgICBpZiAoIWlz
PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpyb3dIZWFkZXIpKQorICAgICAgICBpZiAoIXJvd0hl
YWRlci0+aXNFeHBvc2VkVGFibGVDZWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
YXV0byByb3dIZWFkZXJSYW5nZSA9IHJvd0hlYWRlci0+cm93SW5kZXhSYW5nZSgpOwogICAgICAg
ICBpZiAocm93UmFuZ2VJbmRleCA+PSByb3dIZWFkZXJSYW5nZS5maXJzdCAmJiByb3dSYW5nZUlu
ZGV4IDwgcm93SGVhZGVyUmFuZ2UuZmlyc3QgKyByb3dIZWFkZXJSYW5nZS5zZWNvbmQpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggNDY1ZDRlYmExMTU2Li4xZjU5MWRjMzFlNDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0xOTcsMTcgKzE5NywxNiBAQCB2b2lk
IEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3Np
YmlsaXR5T2JqZWN0PiYgYXhPYgogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
U3VwcG9ydHNTZWxlY3RlZFJvd3MsIG9iamVjdC5zdXBwb3J0c1NlbGVjdGVkUm93cygpKTsKICAg
ICAgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbnMsIG9i
amVjdC5jb2x1bW5zKCkpOwogICAgICAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6Um93cywgb2JqZWN0LnJvd3MoKSk7Ci0gICAgICAgIHNldFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpDb2x1bW5Db3VudCwgb2JqZWN0LmNvbHVtbkNvdW50KCkpOwotICAgICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Um93Q291bnQsIG9iamVjdC5yb3dDb3VudCgpKTsK
ICAgICAgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNlbGxzLCBv
YmplY3QuY2VsbHMoKSk7CiAgICAgICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpWaXNpYmxlUm93cywgb2JqZWN0LnZpc2libGVSb3dzKCkpOwogICAgICAgICBzZXRP
YmplY3RQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SGVhZGVyQ29udGFpbmVyLCBvYmplY3QuaGVh
ZGVyQ29udGFpbmVyKCkpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVhD
b2x1bW5Db3VudCwgb2JqZWN0LmF4Q29sdW1uQ291bnQoKSk7CiAgICAgICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpBWFJvd0NvdW50LCBvYmplY3QuYXhSb3dDb3VudCgpKTsKKyAgICAg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlNsb3RHcmlkLCBvYmplY3Quc2xvdEdyaWQo
KSk7CiAgICAgfQogCi0gICAgaWYgKG9iamVjdC5pc1RhYmxlQ2VsbCgpKSB7Ci0gICAgICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1RhYmxlQ2VsbCwgdHJ1ZSk7CisgICAgaWYgKG9i
amVjdC5pc0V4cG9zZWRUYWJsZUNlbGwoKSkgeworICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6SXNFeHBvc2VkVGFibGVDZWxsLCB0cnVlKTsKICAgICAgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkNvbHVtbkluZGV4UmFuZ2UsIG9iamVjdC5jb2x1bW5JbmRleFJhbmdl
KCkpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Um93SW5kZXhSYW5nZSwg
b2JqZWN0LnJvd0luZGV4UmFuZ2UoKSk7CiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlO
YW1lOjpBWENvbHVtbkluZGV4LCBvYmplY3QuYXhDb2x1bW5JbmRleCgpKTsKQEAgLTQ5MSwxNSAr
NDkwLDIwIEBAIGJvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNEZXRhY2hlZEZyb21QYXJlbnQoKQog
CiBBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5z
aWduZWQgY29sdW1uSW5kZXgsIHVuc2lnbmVkIHJvd0luZGV4KQogewotICAgIEFYSUQgY2VsbElE
ID0gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPEFYSUQ+KFsmY29s
dW1uSW5kZXgsICZyb3dJbmRleCwgdGhpc10gKCkgLT4gQVhJRCB7Ci0gICAgICAgIGlmIChhdXRv
KiBvYmplY3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8g
Y2VsbCA9IG9iamVjdC0+Y2VsbEZvckNvbHVtbkFuZFJvdyhjb2x1bW5JbmRleCwgcm93SW5kZXgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLT5vYmplY3RJRCgpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB7IH07Ci0gICAgfSk7Ci0KLSAgICByZXR1cm4gdHJlZSgpLT5vYmplY3RG
b3JJRChjZWxsSUQpLmdldCgpOworICAgIC8vIEFYUHJvcGVydHlOYW1lOjpTbG90R3JpZCBjYW4g
YmUgYmlnLCBzbyBtYWtlIHN1cmUgbm90IHRvIGNvcHkgaXQuCisgICAgYXV0byBzbG90R3JpZEl0
ZXJhdG9yID0gbV9wcm9wZXJ0eU1hcC5maW5kKEFYUHJvcGVydHlOYW1lOjpTbG90R3JpZCk7Cisg
ICAgaWYgKHNsb3RHcmlkSXRlcmF0b3IgPT0gbV9wcm9wZXJ0eU1hcC5lbmQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBBWElEIGNlbGxJRCA9IFdURjo6c3dpdGNoT24oc2xvdEdy
aWRJdGVyYXRvci0+dmFsdWUsCisgICAgICAgIFsmXSAoVmVjdG9yPFZlY3RvcjxBWElEPj4mIHNs
b3RHcmlkKSB7CisgICAgICAgICAgICBpZiAocm93SW5kZXggPj0gc2xvdEdyaWQuc2l6ZSgpIHx8
IGNvbHVtbkluZGV4ID49IHNsb3RHcmlkW3Jvd0luZGV4XS5zaXplKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIEFYSUQoKTsKKyAgICAgICAgICAgIHJldHVybiBzbG90R3JpZFtyb3dJbmRleF1b
Y29sdW1uSW5kZXhdOworICAgICAgICB9LAorICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIEFY
SUQoKTsgfQorICAgICk7CisgICAgcmV0dXJuIGNlbGxJRCA/IHRyZWUoKS0+b2JqZWN0Rm9ySUQo
Y2VsbElEKS5nZXQoKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6YWNj
ZXNzaWJpbGl0eVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dHMpIGNvbnN0CkBA
IC0xNjU0LDYgKzE2NTgsMTIgQEAgYm9vbCBBWElzb2xhdGVkT2JqZWN0Ojppc01vZGFsTm9kZSgp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6Omlz
VGFibGVDZWxsKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIEFYQ29yZU9iamVjdCogQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudEFj
Y2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3QKIHsKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCBlZWViNmQyMmZjNzAu
LmM3OWM4MDBmYjJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAtMTM5LDEwICsxMzks
MTAgQEAgcHJpdmF0ZToKICAgICBBWElzb2xhdGVkT2JqZWN0KiBleHBvc2VkVGFibGVBbmNlc3Rv
cihib29sIGluY2x1ZGVTZWxmID0gZmFsc2UpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjY2Vzc2li
aWxpdHk6OmV4cG9zZWRUYWJsZUFuY2VzdG9yKCp0aGlzLCBpbmNsdWRlU2VsZik7IH0KICAgICBp
bnQgdGFibGVMZXZlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpUYWJsZUxldmVsKTsgfQogICAgIGJvb2wgc3VwcG9ydHNTZWxlY3Rl
ZFJvd3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OlN1cHBvcnRzU2VsZWN0ZWRSb3dzKTsgfQotICAgIEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBjb2x1bW5zKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9y
SURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpDb2x1bW5zKSk7
IH0KLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93cygpIG92ZXJyaWRlIHsgcmV0
dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFBy
b3BlcnR5TmFtZTo6Um93cykpOyB9Ci0gICAgdW5zaWduZWQgY29sdW1uQ291bnQoKSBvdmVycmlk
ZSB7IHJldHVybiB1bnNpZ25lZEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDb2x1bW5D
b3VudCk7IH0KLSAgICB1bnNpZ25lZCByb3dDb3VudCgpIG92ZXJyaWRlIHsgcmV0dXJuIHVuc2ln
bmVkQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlJvd0NvdW50KTsgfQorICAgIEFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciBjb2x1bW5zKCkgZmluYWwgeyByZXR1cm4gdHJlZSgpLT5v
YmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpD
b2x1bW5zKSk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93cygpIGZpbmFs
IHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElE
PihBWFByb3BlcnR5TmFtZTo6Um93cykpOyB9CisgICAgdW5zaWduZWQgY29sdW1uQ291bnQoKSBm
aW5hbCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29sdW1ucygpLnNpemUoKSk7IH0K
KyAgICB1bnNpZ25lZCByb3dDb3VudCgpIGZpbmFsIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihyb3dzKCkuc2l6ZSgpKTsgfQogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBj
ZWxscygpIG92ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRy
aWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6Q2VsbHMpKTsgfQogICAgIEFYQ29yZU9i
amVjdCogY2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCwgdW5zaWduZWQpIG92ZXJyaWRlOwog
ICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb2x1bW5IZWFkZXJzKCkgb3ZlcnJpZGU7
CkBAIC0xNTMsNyArMTUzLDggQEAgcHJpdmF0ZToKICAgICBpbnQgYXhSb3dDb3VudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpBWFJv
d0NvdW50KTsgfQogCiAgICAgLy8gVGFibGUgY2VsbCBzdXBwb3J0LgotICAgIGJvb2wgaXNUYWJs
ZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OklzVGFibGVDZWxsKTsgfQorICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIGlzRXhwb3NlZFRhYmxlQ2VsbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNFeHBvc2VkVGFibGVDZWxsKTsg
fQogICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0aGUg
Y2VsbC4KICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcGFpckF0dHJpYnV0ZVZhbHVlPHVuc2lnbmVkPihBWFBy
b3BlcnR5TmFtZTo6Um93SW5kZXhSYW5nZSk7IH0KICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBs
b2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgdGhlIGNlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5j
cHAKaW5kZXggYmM4NTk1MmNiMmNhLi5iNGNmNDI0ZGE3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAKQEAgLTU2NCw2ICs1NjQsOSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2Rl
UHJvcGVydGllcyhBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBjb25zdCBWZWN0b3I8QQogICAgICAg
ICBjYXNlIEFYUHJvcGVydHlOYW1lOjpTZXRTaXplOgogICAgICAgICAgICAgcHJvcGVydHlNYXAu
c2V0KEFYUHJvcGVydHlOYW1lOjpTZXRTaXplLCBheE9iamVjdC5zZXRTaXplKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OlNsb3RHcmlkOgorICAg
ICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpTbG90R3JpZCwgZHluYW1p
Y0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KGF4T2JqZWN0KS0+c2xvdEdyaWQoKSk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6U29ydERpcmVj
dGlvbjoKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6U29ydERp
cmVjdGlvbiwgc3RhdGljX2Nhc3Q8aW50PihheE9iamVjdC5zb3J0RGlyZWN0aW9uKCkpKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNjA4LDggKzYxMSwyNCBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVl
Ojp1cGRhdGVOb2RlQW5kRGVwZW5kZW50UHJvcGVydGllcyhBY2Nlc3NpYmlsaXR5T2JqZWN0JiBh
eE9iagogCiAgICAgdXBkYXRlTm9kZShheE9iamVjdCk7CiAKLSAgICBpZiAoYXV0byogdHJlZUFu
Y2VzdG9yID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yKGF4T2JqZWN0LCB0cnVlLCBbXSAo
Y29uc3QgYXV0byYgb2JqZWN0KSB7IHJldHVybiBvYmplY3QuaXNUcmVlKCk7IH0pKQotICAgICAg
ICB1cGRhdGVOb2RlUHJvcGVydHkoKnRyZWVBbmNlc3RvciwgQVhQcm9wZXJ0eU5hbWU6OkFSSUFU
cmVlUm93cyk7CisgICAgLy8gV2hlbiBhIHJvdyBnYWlucyBvciBsb3NlcyBjZWxscywgdGhlIGNv
bHVtbiBjb3VudCBvZiB0aGUgdGFibGUgY2FuIGNoYW5nZS4KKyAgICBib29sIHVwZGF0ZVRhYmxl
QW5jZXN0b3JDb2x1bW5zID0gaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PihheE9iamVjdCk7Cisg
ICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IGF4T2JqZWN0LnBhcmVudE9iamVjdCgpOyBhbmNlc3Rv
cjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50T2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGFu
Y2VzdG9yLT5pc1RyZWUoKSkgeworICAgICAgICAgICAgdXBkYXRlTm9kZVByb3BlcnR5KCphbmNl
c3RvciwgQVhQcm9wZXJ0eU5hbWU6OkFSSUFUcmVlUm93cyk7CisgICAgICAgICAgICBpZiAoIXVw
ZGF0ZVRhYmxlQW5jZXN0b3JDb2x1bW5zKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHVwZGF0ZVRhYmxlQW5jZXN0b3JDb2x1bW5zICYmIGFuY2VzdG9y
LT5pc0FjY2Vzc2liaWxpdHlUYWJsZUluc3RhbmNlKCkpIHsKKyAgICAgICAgICAgIC8vIE9ubHkg
YHVwZGF0ZUNoaWxkcmVuYCBpZiB0aGUgdGFibGUgaXMgdW5pZ25vcmVkLCBiZWNhdXNlIG90aGVy
d2lzZSBgdXBkYXRlQ2hpbGRyZW5gIHdpbGwgYXNjZW5kIGFuZCB1cGRhdGUgdGhlIG5leHQgaGln
aGVzdCB1bmlnbm9yZWQgYW5jZXN0b3IsIHdoaWNoIGRvZXNuJ3QgYWNjb21wbGlzaCBvdXIgZ29h
bCBvZiB1cGRhdGluZyB0YWJsZSBjb2x1bW5zLgorICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5h
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAvLyBVc2UgYHVwZGF0ZUNoaWxkcmVuYCByYXRoZXIgdGhhbiBgdXBkYXRlTm9kZVByb3Bl
cnR5YCBiZWNhdXNlIGB1cGRhdGVDaGlsZHJlbmAgd2lsbCBlbnN1cmUgdGhlIGNvbHVtbnMgKHdo
aWNoIGFyZSBjaGlsZHJlbikgd2lsbCBoYXZlIGFzc29jaWF0ZWQgaXNvbGF0ZWQgb2JqZWN0cyBj
cmVhdGVkLgorICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW4oKmFuY2VzdG9yKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIEFYSXNvbGF0ZWRUcmVlOjp1
cGRhdGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVjdCwgUmVzb2x2ZU5vZGVD
aGFuZ2VzIHJlc29sdmVOb2RlQ2hhbmdlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGJlZTQ5
MjE3OTU0NC4uZjk1OWUxYjgzZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTc5LDcgKzc5
LDYgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBDZWxscywK
ICAgICBDb2xvclZhbHVlLAogICAgIENvbHVtbnMsCi0gICAgQ29sdW1uQ291bnQsCiAgICAgQ29s
dW1uSGVhZGVyLAogICAgIENvbHVtbkhlYWRlcnMsCiAgICAgQ29sdW1uSW5kZXgsCkBAIC0xMjIs
NiArMTIxLDcgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBJ
c0VuYWJsZWQsCiAgICAgSXNFeHBhbmRlZCwKICAgICBJc0V4cG9zYWJsZSwKKyAgICBJc0V4cG9z
ZWRUYWJsZUNlbGwsCiAgICAgSXNGaWVsZHNldCwKICAgICBJc0ZvY3VzZWQsCiAgICAgSXNJbmRl
dGVybWluYXRlLApAQCAtMTUxLDcgKzE1MSw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUg
OiB1aW50MTZfdCB7CiAgICAgSXNTZWxlY3RlZCwKICAgICBJc1NlbGVjdGVkT3B0aW9uQWN0aXZl
LAogICAgIElzVGFibGUsCi0gICAgSXNUYWJsZUNlbGwsCiAgICAgSXNUYWJsZUNvbHVtbiwKICAg
ICBJc1RhYmxlUm93LAogICAgIElzVHJlZSwKQEAgLTE5Niw3ICsxOTUsNiBAQCBlbnVtIGNsYXNz
IEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIFJvbGVQbGF0Zm9ybVN0cmluZywKICAg
ICBSb2xlRGVzY3JpcHRpb24sCiAgICAgUm93cywKLSAgICBSb3dDb3VudCwKICAgICBSb3dIZWFk
ZXJzLAogICAgIFJvd0luZGV4LAogICAgIFJvd0luZGV4UmFuZ2UsCkBAIC0yMDYsNiArMjA0LDcg
QEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBTZXNzaW9uSUQs
CiAgICAgU2V0U2l6ZSwKICAgICBTb3J0RGlyZWN0aW9uLAorICAgIFNsb3RHcmlkLAogICAgIFNw
ZWVjaEhpbnQsCiAgICAgU3RyaW5nVmFsdWUsCiAgICAgU3Vicm9sZVBsYXRmb3JtU3RyaW5nLApA
QCAtMjQwLDcgKzIzOSw3IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7
CiAgICAgVmlzaWJsZVJvd3MsCiB9OwogCi11c2luZyBBWFByb3BlcnR5VmFsdWVWYXJpYW50ID0g
c3RkOjp2YXJpYW50PHN0ZDo6bnVsbHB0cl90LCBBWElELCBTdHJpbmcsIGJvb2wsIGludCwgdW5z
aWduZWQsIGRvdWJsZSwgZmxvYXQsIHVpbnQ2NF90LCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUs
IENvbG9yLCBVUkwsIExheW91dFJlY3QsIEZsb2F0UG9pbnQsIEZsb2F0UmVjdCwgSW50UG9pbnQs
IEludFJlY3QsIFBBTDo6U2Vzc2lvbklELCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiwg
VmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiwgVmVjdG9yPEFYSUQ+LCBWZWN0b3I8c3RkOjpwYWly
PEFYSUQsIEFYSUQ+PiwgVmVjdG9yPFN0cmluZz4sIFBhdGgsIE9wdGlvblNldDxBWEFuY2VzdG9y
RmxhZz4sIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+LCBJbnNpZGVMaW5rLCBDaGFyYWN0
ZXJSYW5nZT47Cit1c2luZyBBWFByb3BlcnR5VmFsdWVWYXJpYW50ID0gc3RkOjp2YXJpYW50PHN0
ZDo6bnVsbHB0cl90LCBBWElELCBTdHJpbmcsIGJvb2wsIGludCwgdW5zaWduZWQsIGRvdWJsZSwg
ZmxvYXQsIHVpbnQ2NF90LCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUsIENvbG9yLCBVUkwsIExh
eW91dFJlY3QsIEZsb2F0UG9pbnQsIEZsb2F0UmVjdCwgSW50UG9pbnQsIEludFJlY3QsIFBBTDo6
U2Vzc2lvbklELCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiwgVmVjdG9yPEFjY2Vzc2li
aWxpdHlUZXh0PiwgVmVjdG9yPEFYSUQ+LCBWZWN0b3I8c3RkOjpwYWlyPEFYSUQsIEFYSUQ+Piwg
VmVjdG9yPFN0cmluZz4sIFBhdGgsIE9wdGlvblNldDxBWEFuY2VzdG9yRmxhZz4sIFJldGFpblB0
cjxOU0F0dHJpYnV0ZWRTdHJpbmc+LCBJbnNpZGVMaW5rLCBWZWN0b3I8VmVjdG9yPEFYSUQ+Piwg
Q2hhcmFjdGVyUmFuZ2U+OwogdXNpbmcgQVhQcm9wZXJ0eU1hcCA9IEhhc2hNYXA8QVhQcm9wZXJ0
eU5hbWUsIEFYUHJvcGVydHlWYWx1ZVZhcmlhbnQsIEludEhhc2g8QVhQcm9wZXJ0eU5hbWU+LCBX
VEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPEFYUHJvcGVydHlOYW1lPj47CiAKIHN0cnVjdCBBWFBy
b3BlcnR5Q2hhbmdlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5k
ZXggNTVlNWVmMzI4MmY4Li4zMGUxOTU2MmNhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tCkBAIC0xMTg5LDcgKzExODksNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxlQXR0cnMu
Z2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZUNvbHVtbigp
KQogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFibGVDb2xBdHRycy5nZXQoKS5nZXQoKTsK
LSAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYmxlQ2VsbCgpKQorICAgIGVsc2UgaWYg
KGJhY2tpbmdPYmplY3QtPmlzRXhwb3NlZFRhYmxlQ2VsbCgpKQogICAgICAgICBvYmplY3RBdHRy
aWJ1dGVzID0gdGFibGVDZWxsQXR0cnMuZ2V0KCkuZ2V0KCk7CiAgICAgZWxzZSBpZiAoYmFja2lu
Z09iamVjdC0+aXNUYWJsZVJvdygpKSB7CiAgICAgICAgIC8vIEFuIEFSSUEgdGFibGUgcm93IGNh
biBiZSBjb2xsYXBzZWQgYW5kIGV4cGFuZGVkLCBzbyBpdCBuZWVkcyB0aGUgZXh0cmEgYXR0cmli
dXRlcy4KQEAgLTE4NDYsNyArMTg0Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFi
bGVDZWxsKCkpIHsKKyAgICBpZiAoYmFja2luZ09iamVjdC0+aXNFeHBvc2VkVGFibGVDZWxsKCkp
IHsKICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlSb3dJbmRleFJhbmdlQXR0cmlidXRlXSkgewogICAgICAgICAgICAgYXV0byByb3dSYW5n
ZSA9IGJhY2tpbmdPYmplY3QtPnJvd0luZGV4UmFuZ2UoKTsKICAgICAgICAgICAgIHJldHVybiBb
TlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZShyb3dSYW5nZS5maXJzdCwgcm93UmFu
Z2Uuc2Vjb25kKV07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
dGFibGUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtdGFibGUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKaW5kZXggYWUzMWE1ODA1Y2E5Li44
ODVkMTY2YmRjMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10
YWJsZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTExLDcgKzExLDcgQEAg
UEFTUzogY2VsbDIubnVtYmVyQXR0cmlidXRlVmFsdWUoJ0FYQVJJQVJvd0luZGV4JykgPT09IDgK
IFBBU1M6IGNlbGw0Lm51bWJlckF0dHJpYnV0ZVZhbHVlKCdBWEFSSUFDb2x1bW5JbmRleCcpID09
PSAzCiBQQVNTOiBjZWxsMi5yb3dJbmRleFJhbmdlKCkgPT09ICd7MSwgMn0nCiBQQVNTOiBjZWxs
NS5jb2x1bW5JbmRleFJhbmdlKCkgPT09ICd7MiwgM30nCi1QQVNTOiBjZWxsMy5yb3dJbmRleFJh
bmdlKCkgPT09ICd7MSwgMn0nCitQQVNTOiBjZWxsMy5yb3dJbmRleFJhbmdlKCkgPT09ICd7MSwg
M30nCiBQQVNTOiBjZWxsNi5yb3dJbmRleFJhbmdlKCkgPT09ICd7MCwgMn0nCiBQQVNTOiBjZWxs
Ny5yb3dJbmRleFJhbmdlKCkgPT09ICd7MCwgMn0nCiBQQVNTOiAjZ3JpZCBBWEFSSUFSb3dDb3Vu
dCBkeW5hbWljYWxseSBjaGFuZ2VkIHRvIDYwLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0bWwKaW5kZXggNmFjYWRjZWZjYzJhLi41
YzM1MmFiMWI4ODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10
YWJsZS1hdHRyaWJ1dGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LXRhYmxlLWF0dHJpYnV0ZXMuaHRtbApAQCAtMjAsNyArMjAsNyBAQAogICAgICAgPHNwYW4gcm9s
ZT0iZ3JpZGNlbGwiIGFyaWEtY29saW5kZXg9IjIiIGFyaWEtcm93aW5kZXg9IjgiPkZyZWQ8L3Nw
YW4+CiAgICAgICA8c3BhbiByb2xlPSJncmlkY2VsbCIgYXJpYS1jb2xpbmRleD0iMyIgYXJpYS1y
b3dpbmRleD0iOCI+SmFja3Nvbjwvc3Bhbj4KICAgICAgIDxzcGFuIGlkPSJjZWxsMiIgcm9sZT0i
Z3JpZGNlbGwiIGFyaWEtY29saW5kZXg9IjQiIGFyaWEtcm93aW5kZXg9IjgiIGFyaWEtcm93c3Bh
bj0iMiI+QWNtZSwgSW5jLjwvc3Bhbj4KLSAgICAgIDxzcGFuIGlkPSJjZWxsMyIgcm9sZT0iZ3Jp
ZGNlbGwiIGFyaWEtY29saW5kZXg9IjUiIGFyaWEtcm93aW5kZXg9IjgiIGFyaWEtcm93c3Bhbj0i
MCI+MTIzIEJyb2FkIFN0Ljwvc3Bhbj4KKyAgICAgIDxzcGFuIGlkPSJjZWxsMyIgcm9sZT0iZ3Jp
ZGNlbGwiIGFyaWEtY29saW5kZXg9IjUiIGFyaWEtcm93aW5kZXg9IjgiIGFyaWEtcm93c3Bhbj0i
MyI+MTIzIEJyb2FkIFN0Ljwvc3Bhbj4KICAgICA8L2Rpdj4KICAgICA8ZGl2IHJvbGU9InJvdyIg
YXJpYS1yb3dpbmRleD0iOSI+CiAgICAgICA8c3BhbiByb2xlPSJncmlkY2VsbCIgYXJpYS1jb2xp
bmRleD0iMiI+U2FyYTwvc3Bhbj4KQEAgLTQ5LDcgKzQ5LDcgQEAKIDxkaXYgaWQ9ImdyaWQzIiBy
b2xlPSJncmlkIj4KICAgPGRpdiByb2xlPSJyb3ciPgogICAgIDxzcGFuIHJvbGU9ImdyaWRjZWxs
Ij5DZWxsPC9zcGFuPgotICAgIDxzcGFuIGlkPSJjZWxsNiIgcm9sZT0iZ3JpZGNlbGwiIGFyaWEt
cm93c3Bhbj0iMCI+U3BhbiBDZWxsPC9zcGFuPgorICAgIDxzcGFuIGlkPSJjZWxsNiIgcm9sZT0i
Z3JpZGNlbGwiIGFyaWEtcm93c3Bhbj0iMiI+U3BhbiBDZWxsPC9zcGFuPgogICA8L2Rpdj4KICAg
PGRpdiByb2xlPSJyb3ciPgogICAgIDxzcGFuIHJvbGU9ImdyaWRjZWxsIj5DZWxsPC9zcGFuPgpA
QCAtOTMsMTAgKzkzLDEwIEBACiAgICAgICAgIC8vIGFyaWEtY29saW5kZXggZnJvbSBwYXJlbnQg
cm93CiAgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJjZWxsNC5udW1iZXJBdHRyaWJ1dGVW
YWx1ZSgnQVhBUklBQ29sdW1uSW5kZXgnKSIsICIzIik7CiAKLSAgICAgICAgLy8gYXJpYS1jb2xz
cGFuIGFuZCBhcmlhLXJvd3NwYW4sIGluY2x1ZGluZyBhcmlhLXJvd3NwYW49IjAiCisgICAgICAg
IC8vIGFyaWEtY29sc3BhbiBhbmQgYXJpYS1yb3dzcGFuCiAgICAgICAgIHRlc3RPdXRwdXQgKz0g
ZXhwZWN0KCJjZWxsMi5yb3dJbmRleFJhbmdlKCkiLCAiJ3sxLCAyfSciKTsKICAgICAgICAgdGVz
dE91dHB1dCArPSBleHBlY3QoImNlbGw1LmNvbHVtbkluZGV4UmFuZ2UoKSIsICInezIsIDN9JyIp
OwotICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgiY2VsbDMucm93SW5kZXhSYW5nZSgpIiwg
Iid7MSwgMn0nIik7CisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJjZWxsMy5yb3dJbmRl
eFJhbmdlKCkiLCAiJ3sxLCAzfSciKTsKIAogICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgi
Y2VsbDYucm93SW5kZXhSYW5nZSgpIiwgIid7MCwgMn0nIik7CiAgICAgICAgIC8vIHVzZSByb3dz
cGFuIGZvciBuYXRpdmUgdGFibGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLWV4cGVjdGVkLnR4dAppbmRleCAxZTM2YjE4
YjU4MDMuLjU3NThmYjdmZTIwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLWV4cGVjdGVkLnR4dApAQCAtMzAsMTMg
KzMwLDEzIEBAIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJyb3ctMiIpLnJvbGUgaXMgIkFYUm9sZTogQVhSCiBQQVNTIGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5yb2xlIGlzICJBWFJvbGU6IEFY
Q2VsbCIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJjZWxsNSIpLm51bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFSb3dJbmRleCIpIGlzIDgKIFBB
U1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIp
Lm51bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFDb2x1bW5JbmRleCIpIGlzIDIKLVBBU1MgYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLnJvd0lu
ZGV4UmFuZ2UoKSBpcyAiezIsIDF9IgorUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1Iikucm93SW5kZXhSYW5nZSgpIGlzICJ7NCwgMX0iCiBQ
QVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUi
KS5jb2x1bW5JbmRleFJhbmdlKCkgaXMgInswLCAyfSIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJyb3ctMyIpLnJvbGUgaXMgIkFYUm9sZTogQVhS
b3ciCiBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
Y2VsbDYiKS5yb2xlIGlzICJBWFJvbGU6IEFYQ2VsbCIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLm51bWJlckF0dHJpYnV0ZVZhbHVl
KCJBWEFSSUFSb3dJbmRleCIpIGlzIDkKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLm51bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFD
b2x1bW5JbmRleCIpIGlzIDIKLVBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJjZWxsNiIpLnJvd0luZGV4UmFuZ2UoKSBpcyAiezMsIDF9IgorUEFTUyBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2Iikucm93
SW5kZXhSYW5nZSgpIGlzICJ7NSwgMX0iCiBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5jb2x1bW5JbmRleFJhbmdlKCkgaXMgInswLCAz
fSIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUuaHRtbCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLmh0bWwKaW5kZXggMDY3OTZi
OTQxOGFmLi5kNWI4NWQ0ZmFmZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUuaHRtbApAQCAtMTExLDE0ICsxMTEsMTQgQEAgZWxz
ZSB7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1Iikucm9sZScsICdBWFJvbGU6IEFYQ2VsbCcpOwog
ICAgIHNob3VsZEJlKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoImNlbGw1IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQVJvd0luZGV4IiknLCAnOCcp
OwogICAgIHNob3VsZEJlKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImNlbGw1IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQUNvbHVtbkluZGV4Iikn
LCAnMicpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLnJvd0luZGV4UmFuZ2UoKScsICd7Miwg
MX0nKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5yb3dJbmRleFJhbmdlKCknLCAnezQsIDF9
Jyk7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1IikuY29sdW1uSW5kZXhSYW5nZSgpJywgJ3swLCAy
fScpOwogCiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJvdy0zIikucm9sZScsICdBWFJvbGU6IEFYUm93Jyk7
CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2Iikucm9sZScsICdBWFJvbGU6IEFYQ2VsbCcpOwogICAg
IHNob3VsZEJlKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
ImNlbGw2IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQVJvd0luZGV4IiknLCAnOScpOwog
ICAgIHNob3VsZEJlKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoImNlbGw2IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQUNvbHVtbkluZGV4IiknLCAn
MicpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLnJvd0luZGV4UmFuZ2UoKScsICd7MywgMX0n
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5yb3dJbmRleFJhbmdlKCknLCAnezUsIDF9Jyk7
CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2IikuY29sdW1uSW5kZXhSYW5nZSgpJywgJ3swLCAzfScp
OwogCiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29s
c3Bhbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29s
c3Bhbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5lMzhmZWM5NzNjMjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2R5bmFtaWMtY29sc3Bhbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorVGhpcyB0
ZXN0IGVuc3VyZXMgdGhhdCB0aGUgJ2NlbGwgZm9yIGNvbHVtbiBhbmQgcm93JyBBUEkgd29ya3Mg
Y29ycmVjdGx5IGFmdGVyIGR5bmFtaWMgY29sc3BhbiBjaGFuZ2VzLgorCitQQVNTOiB0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIgPT09ICdyMGMwJworUEFTUzog
dGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygxLCAwKS5kb21JZGVudGlmaWVyID09PSAncjBjMScK
K1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCkgPT09IG51bGwgPT09IHRydWUK
K1BBU1M6IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjBj
MScpLmNvbHVtbkluZGV4UmFuZ2UoKSA9PT0gJ3sxLCAxfScKK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyMGMxJykuc2V0QXR0cmlidXRlKCdjb2xzcGFuJywgJzInKQorUEFTUzogdGFibGUuY2Vs
bEZvckNvbHVtbkFuZFJvdygyLCAwKS5kb21JZGVudGlmaWVyID09PSAncjBjMScKK1BBU1M6IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjBjMScpLmNvbHVt
bkluZGV4UmFuZ2UoKSA9PT0gJ3sxLCAyfScKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMGMx
JykucmVtb3ZlQXR0cmlidXRlKCdjb2xzcGFuJykKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5B
bmRSb3coMiwgMCkgPT09IG51bGwgPT09IHRydWUKK1BBU1M6IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjBjMScpLmNvbHVtbkluZGV4UmFuZ2UoKSA9PT0g
J3sxLCAxfScKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMGMxJykuc2V0QXR0cmlidXRlKCdh
cmlhLWNvbHNwYW4nLCAnMicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDAp
LmRvbUlkZW50aWZpZXIgPT09ICdyMGMxJworUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpID09PSAnezEs
IDJ9JworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
K0hlYWRlciAwCUhlYWRlciAxCitSMUMwCVIxQzEJUjFDMgorUjJDMAlSMkMxCVIyQzIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLmh0bWwgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzdhNGEyODcwZGU5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4uaHRtbApAQCAt
MCwwICsxLDY5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmls
aXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorPHN0eWxlPgordGQsIHRoIHsKKyAgICBib3JkZXI6IDFweCBzb2xp
ZCBibGFjazsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHRhYmxlIGlkPSJ0YWJs
ZSI+Cis8dGhlYWQgaWQ9InRoZWFkIj4KKyAgICA8dHIgaWQ9InIwIj4KKyAgICAgICAgPHRoIGlk
PSJyMGMwIj5IZWFkZXIgMDwvdGg+CisgICAgICAgIDx0aCBpZD0icjBjMSI+SGVhZGVyIDE8L3Ro
PgorICAgIDwvdHI+Cis8L3RoZWFkPgorPHRib2R5IGlkPSJ0Ym9keSI+CisgICAgPHRyIGlkPSJy
MSI+CisgICAgICAgIDx0ZCBpZD0icjFjMCI+UjFDMDwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjFj
MSI+UjFDMTwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjFjMiI+UjFDMjwvdGQ+CisgICAgPC90cj4K
KyAgICA8dHIgaWQ9InIyIj4KKyAgICAgICAgPHRkIGlkPSJyMmMwIj5SMkMwPC90ZD4KKyAgICAg
ICAgPHRkIGlkPSJyMmMxIj5SMkMxPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyMmMxIj5SMkMyPC90
ZD4KKyAgICA8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+CisKKzxzY3JpcHQ+Cit2YXIgb3V0cHV0
ID0gIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlICdjZWxsIGZvciBjb2x1bW4gYW5kIHJvdycg
QVBJIHdvcmtzIGNvcnJlY3RseSBhZnRlciBkeW5hbWljIGNvbHNwYW4gY2hhbmdlcy5cblxuIjsK
KworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHZhciB0YWJsZSA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGFibGUiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIiLCAiJ3IwYzAn
Iik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygxLCAw
KS5kb21JZGVudGlmaWVyIiwgIidyMGMxJyIpOworICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCkgPT09IG51bGwiLCAidHJ1ZSIpOworICAgIG91dHB1
dCArPSBleHBlY3QoImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgncjBjMScpLmNvbHVtbkluZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOworCisgICAgb3V0cHV0
ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMGMxJykuc2V0QXR0
cmlidXRlKCdjb2xzcGFuJywgJzInKSIpOworICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rpb24o
KSB7CisgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJv
dygyLCAwKSAhPT0gbnVsbCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxG
b3JDb2x1bW5BbmRSb3coMiwgMCkuZG9tSWRlbnRpZmllciIsICIncjBjMSciKTsKKyAgICAgICAg
b3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MSwgMn0nIik7CisKKyAgICAg
ICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMGMx
JykucmVtb3ZlQXR0cmlidXRlKCdjb2xzcGFuJykiKTsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0
IGV4cGVjdEFzeW5jKCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApID09PSBudWxsIiwg
InRydWUiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7
MSwgMX0nIik7CisKKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyMGMxJykuc2V0QXR0cmlidXRlKCdhcmlhLWNvbHNwYW4nLCAnMicpIik7
CisgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygy
LCAwKSAhPT0gbnVsbCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JD
b2x1bW5BbmRSb3coMiwgMCkuZG9tSWRlbnRpZmllciIsICIncjBjMSciKTsKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MSwgMn0nIik7CisKKyAgICAgICAg
ZGVidWcob3V0cHV0KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzFiNTMzZWI3ZjI3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjEgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlICdjZWxsIGZvciBjb2x1
bW4gYW5kIHJvdycgQVBJIHdvcmtzIGNvcnJlY3RseSBhZnRlciBkeW5hbWljIHJvd3NwYW4gY2hh
bmdlcy4KKworUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKS5kb21JZGVudGlm
aWVyID09PSAncjBjMCcKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikgPT09
IG51bGwgPT09IHRydWUKK1BBU1M6IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgncjFjMicpLnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAxfScKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyMWMyJykuc2V0QXR0cmlidXRlKCdyb3dzcGFuJywgJzInKQorUEFT
UzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKS5kb21JZGVudGlmaWVyID09PSAncjFj
MicKK1BBU1M6IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgn
cjFjMicpLnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAyfScKK2RvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyMWMyJykucmVtb3ZlQXR0cmlidXRlKCdyb3dzcGFuJykKK1BBU1M6IHRhYmxlLmNlbGxG
b3JDb2x1bW5BbmRSb3coMiwgMikgPT09IG51bGwgPT09IHRydWUKK1BBU1M6IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjFjMicpLnJvd0luZGV4UmFuZ2Uo
KSA9PT0gJ3sxLCAxfScKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMWMyJykuc2V0QXR0cmli
dXRlKCdhcmlhLXJvd3NwYW4nLCAnMicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93
KDIsIDIpLmRvbUlkZW50aWZpZXIgPT09ICdyMWMyJworUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpID09PSAn
ezEsIDJ9JworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKK0hlYWRlciAwCUhlYWRlciAxCUhlYWRlciAyCitSMUMwCVIxQzEJUjFDMgorUjJDMAlSMkMx
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi5o
dG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4uaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUwOTkzMTVhOGI3YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0
bWwKQEAgLTAsMCArMSw2OCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNj
ZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK3RkLCB0aCB7CisgICAgYm9yZGVyOiAx
cHggc29saWQgYmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzx0YWJsZSBp
ZD0idGFibGUiPgorPHRoZWFkIGlkPSJ0aGVhZCI+CisgICAgPHRyIGlkPSJyMCI+CisgICAgICAg
IDx0aCBpZD0icjBjMCI+SGVhZGVyIDA8L3RoPgorICAgICAgICA8dGggaWQ9InIwYzEiPkhlYWRl
ciAxPC90aD4KKyAgICAgICAgPHRoIGlkPSJyMGMyIj5IZWFkZXIgMjwvdGg+CisgICAgPC90cj4K
KzwvdGhlYWQ+Cis8dGJvZHkgaWQ9InRib2R5Ij4KKyAgICA8dHIgaWQ9InIxIj4KKyAgICAgICAg
PHRkIGlkPSJyMWMwIj5SMUMwPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyMWMxIj5SMUMxPC90ZD4K
KyAgICAgICAgPHRkIGlkPSJyMWMyIj5SMUMyPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBpZD0i
cjIiPgorICAgICAgICA8dGQgaWQ9InIyYzAiPlIyQzA8L3RkPgorICAgICAgICA8dGQgaWQ9InIy
YzEiPlIyQzE8L3RkPgorICAgIDwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT4KKworPHNjcmlwdD4K
K3ZhciBvdXRwdXQgPSAiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgJ2NlbGwgZm9yIGNvbHVt
biBhbmQgcm93JyBBUEkgd29ya3MgY29ycmVjdGx5IGFmdGVyIGR5bmFtaWMgcm93c3BhbiBjaGFu
Z2VzLlxuXG4iOworCitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdmFyIHRhYmxlID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsZSIpOworICAgIG91dHB1
dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkuZG9tSWRlbnRpZmll
ciIsICIncjBjMCciKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1u
QW5kUm93KDIsIDIpID09PSBudWxsIiwgInRydWUiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5yb3dJ
bmRleFJhbmdlKCkiLCAiJ3sxLCAxfSciKTsKKworICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJu
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjFjMicpLnNldEF0dHJpYnV0ZSgncm93c3Bhbics
ICcyJykiKTsKKyAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICBhd2Fp
dCB3YWl0Rm9yKCgpID0+IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikgIT09IG51bGwp
OworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIs
IDIpLmRvbUlkZW50aWZpZXIiLCAiJ3IxYzInIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
ImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjFjMicpLnJv
d0luZGV4UmFuZ2UoKSIsICInezEsIDJ9JyIpOworCisgICAgICAgIG91dHB1dCArPSBldmFsQW5k
UmV0dXJuKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjFjMicpLnJlbW92ZUF0dHJpYnV0ZSgn
cm93c3BhbicpIik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUu
Y2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKSA9PT0gbnVsbCIsICJ0cnVlIik7CisgICAgICAgIG91
dHB1dCArPSBleHBlY3QoImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgncjFjMicpLnJvd0luZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOworCisgICAgICAgIG91
dHB1dCArPSBldmFsQW5kUmV0dXJuKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjFjMicpLnNl
dEF0dHJpYnV0ZSgnYXJpYS1yb3dzcGFuJywgJzInKSIpOworICAgICAgICBhd2FpdCB3YWl0Rm9y
KCgpID0+IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikgIT09IG51bGwpOworICAgICAg
ICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpLmRvbUlk
ZW50aWZpZXIiLCAiJ3IxYzInIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjFjMicpLnJvd0luZGV4UmFu
Z2UoKSIsICInezEsIDJ9JyIpOworCisgICAgICAgIGRlYnVnKG91dHB1dCk7CisgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1k
ZXNjZW5kYW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFt
aWMtdGFibGUtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYWYwNDU0MTBkMmMxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDMzIEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSAnY2VsbCBmb3Ig
Y29sdW1uIGFuZCByb3cnIEFQSSB3b3JrcyBjb3JyZWN0bHkgYWZ0ZXIgZHluYW1pYyBET00gY2hp
bGQgY2hhbmdlcy4KKworUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKS5kb21J
ZGVudGlmaWVyID09PSAncjBjMCcKK1BBU1M6IHRhYmxlLnJvd0NvdW50ID09PSAzCitQQVNTOiB0
YWJsZS5jb2x1bW5Db3VudCA9PT0gMgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygw
LCAzKSA9PT0gbnVsbCA9PT0gdHJ1ZQorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rib2R5Jyku
YXBwZW5kQ2hpbGQoY3JlYXRlRm91cnRoUm93KCkpCitQQVNTOiB0YWJsZS5yb3dDb3VudCA9PT0g
NAorUEFTUzogdGFibGUuY29sdW1uQ291bnQgPT09IDMKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1
bW5BbmRSb3coMCwgMykuZG9tSWRlbnRpZmllciA9PT0gJ3IzYzAnCitkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncjMnKS5hcHBlbmRDaGlsZChkeW5hbWljQ2VsbCkKK1BBU1M6IHRhYmxlLmNlbGxG
b3JDb2x1bW5BbmRSb3coMywgMykuZG9tSWRlbnRpZmllciA9PT0gJ2R5bmFtaWMtY2VsbCcKK1BB
U1M6IHRhYmxlLmNvbHVtbkNvdW50ID09PSA0Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHlu
YW1pYy1jZWxsJykucmVtb3ZlKCkKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwg
NCkgPT09IG51bGwgPT09IHRydWUKK1BBU1M6IHRhYmxlLmNvbHVtbkNvdW50ID09PSAzCitkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncjMnKS5yZW1vdmUoKQorUEFTUzogdGFibGUucm93Q291bnQg
PT09IDMKK1BBU1M6IHRhYmxlLmNvbHVtbkNvdW50ID09PSAyCitQQVNTOiB0YWJsZS5jZWxsRm9y
Q29sdW1uQW5kUm93KDAsIDMpID09PSBudWxsID09PSB0cnVlCituZXdUYm9keS5hcHBlbmRDaGls
ZChjcmVhdGVGb3VydGhSb3coKSkKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZScpLmFw
cGVuZENoaWxkKG5ld1Rib2R5KQorUEFTUzogdGFibGUucm93Q291bnQgPT09IDQKK1BBU1M6IHRh
YmxlLmNvbHVtbkNvdW50ID09PSAzCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAs
IDMpLmRvbUlkZW50aWZpZXIgPT09ICdyM2MwJworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK0hlYWRlciAwCUhlYWRlciAxCitSMUMwCVIxQzEKK1Iy
QzAJUjJDMQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMt
dGFibGUtZGVzY2VuZGFudHMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1p
Yy10YWJsZS1kZXNjZW5kYW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uY2VhNGJlNzk1ZTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKQEAgLTAsMCArMSwxMDQg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+Cit0ZCwgdGggeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCis8dGFibGUgaWQ9InRhYmxlIj4KKzx0aGVh
ZCBpZD0idGhlYWQiPgorICAgIDx0ciBpZD0icjAiPgorICAgICAgICA8dGggaWQ9InIwYzAiPkhl
YWRlciAwPC90aD4KKyAgICAgICAgPHRoIGlkPSJyMGMxIj5IZWFkZXIgMTwvdGg+CisgICAgPC90
cj4KKzwvdGhlYWQ+Cis8dGJvZHkgaWQ9InRib2R5Ij4KKyAgICA8dHIgaWQ9InIxIj4KKyAgICAg
ICAgPHRkIGlkPSJyMWMwIj5SMUMwPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyMWMxIj5SMUMxPC90
ZD4KKyAgICA8L3RyPgorICAgIDx0ciBpZD0icjIiPgorICAgICAgICA8dGQgaWQ9InIyYzAiPlIy
QzA8L3RkPgorICAgICAgICA8dGQgaWQ9InIyYzEiPlIyQzE8L3RkPgorICAgIDwvdHI+Cis8L3Ri
b2R5PgorPC90YWJsZT4KKworPHNjcmlwdD4KK3ZhciBvdXRwdXQgPSAiVGhpcyB0ZXN0IGVuc3Vy
ZXMgdGhhdCB0aGUgJ2NlbGwgZm9yIGNvbHVtbiBhbmQgcm93JyBBUEkgd29ya3MgY29ycmVjdGx5
IGFmdGVyIGR5bmFtaWMgRE9NIGNoaWxkIGNoYW5nZXMuXG5cbiI7CisKK2Z1bmN0aW9uIGNyZWF0
ZUZvdXJ0aFJvdygpIHsKKyAgICBjb25zdCB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRy
Iik7CisgICAgdHIuaWQgPSAicjMiOworCisgICAgY29uc3QgY2VsbE9uZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRkIik7CisgICAgY2VsbE9uZS5pZCA9ICJyM2MwIjsKKyAgICBjb25zdCBj
ZWxsVHdvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICBjZWxsVHdvLmlkID0g
InIzYzEiOworICAgIGNvbnN0IGNlbGxUaHJlZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRk
Iik7CisgICAgY2VsbFR3by5pZCA9ICJyM2MyIjsKKworICAgIHRyLmFwcGVuZENoaWxkKGNlbGxP
bmUpOworICAgIHRyLmFwcGVuZENoaWxkKGNlbGxUd28pOworICAgIHRyLmFwcGVuZENoaWxkKGNl
bGxUaHJlZSk7CisgICAgcmV0dXJuIHRyOworfQorCitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdmFy
IG5ld1Rib2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKTsKKyAgICB2YXIgZHlu
YW1pY0NlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgIGR5bmFtaWNDZWxs
LmlkID0gImR5bmFtaWMtY2VsbCI7CisKKyAgICB2YXIgdGFibGUgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIik7CisgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKS5kb21JZGVudGlmaWVyIiwgIidy
MGMwJyIpOworICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLnJvd0NvdW50IiwgIjMiKTsKKyAg
ICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jb2x1bW5Db3VudCIsICIyIik7CisgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKSA9PT0gbnVsbCIsICJ0
cnVlIik7CisKKyAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rib2R5JykuYXBwZW5kQ2hpbGQoY3JlYXRlRm91cnRoUm93KCkpIik7CisgICAgc2V0
VGltZW91dChhc3luYyBmdW5jdGlvbigpIHsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0IGV4cGVj
dEFzeW5jKCJ0YWJsZS5yb3dDb3VudCIsICI0Iik7CisgICAgICAgIC8vIFRoZSBmb3VydGggcm93
IGhhcyB0aHJlZSBjZWxscyBpbiBpdCAodnMuIHRoZSB0d28gY2VsbHMgaW4gZXZlcnkgb3RoZXIg
cm93KS4KKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5jb2x1bW5D
b3VudCIsICIzIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1
bW5BbmRSb3coMCwgMykuZG9tSWRlbnRpZmllciIsICIncjNjMCciKTsKKworICAgICAgICAvLyBO
b3cgYXBwZW5kIGEgY2VsbCB0byBhIHJvdy4KKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1
cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMycpLmFwcGVuZENoaWxkKGR5bmFtaWNDZWxs
KSIpOworICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRS
b3coMywgMykpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1u
QW5kUm93KDMsIDMpLmRvbUlkZW50aWZpZXIiLCAiJ2R5bmFtaWMtY2VsbCciKTsKKyAgICAgICAg
b3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5jb2x1bW5Db3VudCIsICI0Iik7CisK
KyAgICAgICAgLy8gQW5kIHJlbW92ZSBpdC4KKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1
cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkeW5hbWljLWNlbGwnKS5yZW1vdmUoKSIpOwor
ICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLmNlbGxGb3JDb2x1bW5B
bmRSb3coMiwgNCkgPT09IG51bGwiLCAidHJ1ZSIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQg
ZXhwZWN0QXN5bmMoInRhYmxlLmNvbHVtbkNvdW50IiwgIjMiKTsKKworICAgICAgICAvLyBSZW1v
dmUgdGhlIGR5bmFtaWNhbGx5IGFkZGVkIGZvdXJ0aCByb3cuCisgICAgICAgIG91dHB1dCArPSBl
dmFsQW5kUmV0dXJuKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjMnKS5yZW1vdmUoKSIpOwor
ICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLnJvd0NvdW50IiwgIjMi
KTsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5jb2x1bW5Db3Vu
dCIsICIyIik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUuY2Vs
bEZvckNvbHVtbkFuZFJvdygwLCAzKSA9PT0gbnVsbCIsICJ0cnVlIik7CisKKyAgICAgICAgLy8g
VGhlbiBhZGQgdGhlIGZvdXJ0aCByb3cgYmFjayB0byB0aGUgbmV3IHRib2R5LgorICAgICAgICBv
dXRwdXQgKz0gZXZhbEFuZFJldHVybigibmV3VGJvZHkuYXBwZW5kQ2hpbGQoY3JlYXRlRm91cnRo
Um93KCkpIik7CisgICAgICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJuKCJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGFibGUnKS5hcHBlbmRDaGlsZChuZXdUYm9keSkiKTsKKyAgICAgICAgb3V0
cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5yb3dDb3VudCIsICI0Iik7CisgICAgICAg
IG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUuY29sdW1uQ291bnQiLCAiMyIpOwor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMp
LmRvbUlkZW50aWZpZXIiLCAiJ3IzYzAnIik7CisKKyAgICAgICAgZGVidWcob3V0cHV0KTsKKyAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRl
dGVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0
ZWN0aW9uLWV4cGVjdGVkLnR4dAppbmRleCA0ZGY0NTA2YzBkYTAuLjgxMjZjNWUzOGM0YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi1leHBl
Y3RlZC50eHQKQEAgLTU2LDcgKzU2LDcgQEAgUEFTUyBheEVsZW1lbnQucm9sZSA9PSAnQVhSb2xl
OiBBWExpc3QnIGlzIHRydWUKIAogCiBJbmxpbmUgbGlzdCBlbGVtZW50cyB3aXRoIGFuIGFyaWEg
cm9sZSBzaG91bGQgYmUgYSBsaXN0Ci1QQVNTIGF4RWxlbWVudC5yb2xlID09ICdBWFJvbGU6IEFY
TGlzdCcgaXMgdHJ1ZQorUEFTUyBheEVsZW1lbnQucm9sZSA9PSAnQVhSb2xlOiBBWExpc3QnIGlz
IGZhbHNlCiAKIAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi5odG1sCmluZGV4IDIwMGJlNTk2NDdjNi4u
M2YxZTAwMTUwZjNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3Qt
ZGV0ZWN0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVj
dGlvbi5odG1sCkBAIC02Myw3ICs2Myw3IEBACiA8ZGl2Pml0ZW08L2Rpdj4KIDwvdWw+CiAKLTx1
bCBpZD0ibGlzdDE0IiByb2xlPSJsaXN0IiB0ZXN0LWRlc2NyaXB0aW9uPSJJbmxpbmUgbGlzdCBl
bGVtZW50cyB3aXRoIGFuIGFyaWEgcm9sZSBzaG91bGQgYmUgYSBsaXN0IiBpcy1saXN0PSJ0cnVl
IiBzdHlsZT0iZGlzcGxheTogdGFibGU7Ij4KKzx1bCBpZD0ibGlzdDE0IiByb2xlPSJsaXN0IiB0
ZXN0LWRlc2NyaXB0aW9uPSJJbmxpbmUgbGlzdCBlbGVtZW50cyB3aXRoIGFuIGFyaWEgcm9sZSBz
aG91bGQgYmUgYSBsaXN0IiBpcy1saXN0PSJmYWxzZSIgc3R5bGU9ImRpc3BsYXk6IHRhYmxlOyI+
CiAgIDxsaSByb2xlPSJsaXN0aXRlbSIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsiPkl0
ZW0gMTwvbGk+CiAgIDxsaSByb2xlPSJsaXN0aXRlbSIgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1i
bG9jazsiPkl0ZW0gMjwvbGk+CiAgIDxsaSByb2xlPSJsaXN0aXRlbSIgc3R5bGU9ImRpc3BsYXk6
IGlubGluZS1ibG9jazsiPkl0ZW0gMzwvbGk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3RhYmxlLWluY29ycmVjdC1jb2xzcGFuLWNlbGwtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4cGVj
dGVkLnR4dAppbmRleCAxYmRlMWJhOTAwZDEuLmY3NGVkNDVmMzg2NiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWluY29ycmVjdC1j
b2xzcGFuLWNlbGwtZXhwZWN0ZWQudHh0CkBAIC01LDE3ICs1LDM1IEBAIFRoaXMgdGVzdHMgdGhl
IHJvd1JhbmdlIGFuZCBjb2x1bW5SYW5nZSBhdHRyaWJ1dGVzIG9mIHRhYmxlIGNlbGxzIGluIGEg
dGFibGUgd2l0CiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotVGFibGU6IFJvd3M6IDIs
IENvbHVtbnM6IDMKK1RhYmxlOiBSb3dzOiAyLCBDb2x1bW5zOiA2CiBbVGFibGUgY2VsbCBhdCBy
b3c6IDAsIGNvbHVtbjogMF0gUm93IHJhbmdlOiB7MCwgMX0sIENvbHVtbiByYW5nZTogezAsIDF9
CiAJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgwLCAwKQotW1RhYmxlIGNlbGwgYXQgcm93
OiAxLCBjb2x1bW46IDBdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6IHswLCAyfQor
W1RhYmxlIGNlbGwgYXQgcm93OiAxLCBjb2x1bW46IDBdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1
bW4gcmFuZ2U6IHswLCA0fQogCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMCkKIAlQ
QVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDEpCi1bVGFibGUgY2VsbCBhdCByb3c6IDEs
IGNvbHVtbjogMV0gUm93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezAsIDJ9CisJUEFT
U0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAyKQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2Vs
bCBhdCAoMSwgMykKK1tUYWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1uOiAxXSBSb3cgcmFuZ2U6
IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7MCwgNH0KKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwg
YXQgKDEsIDApCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAxKQorCVBBU1NFRCBD
ZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMikKKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQg
KDEsIDMpCitbVGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogMl0gUm93IHJhbmdlOiB7MSwg
MX0sIENvbHVtbiByYW5nZTogezAsIDR9CisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgx
LCAwKQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMSkKKwlQQVNTRUQgQ2VsbCBp
cyBzYW1lIGNlbGwgYXQgKDEsIDIpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAz
KQorW1RhYmxlIGNlbGwgYXQgcm93OiAxLCBjb2x1bW46IDNdIFJvdyByYW5nZTogezEsIDF9LCBD
b2x1bW4gcmFuZ2U6IHswLCA0fQogCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMCkK
IAlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDEpCi1bVGFibGUgY2VsbCBhdCByb3c6
IDEsIGNvbHVtbjogMl0gUm93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezIsIDF9CiAJ
UEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAyKQorCVBBU1NFRCBDZWxsIGlzIHNhbWUg
Y2VsbCBhdCAoMSwgMykKK1tUYWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1uOiA0XSBSb3cgcmFu
Z2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7NCwgMn0KKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNl
bGwgYXQgKDEsIDQpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCA1KQorW1RhYmxl
IGNlbGwgYXQgcm93OiAxLCBjb2x1bW46IDVdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFu
Z2U6IHs0LCAyfQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgNCkKKwlQQVNTRUQg
Q2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDUpCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvdGFibGUtbXVsdGlwbGUtdGJvZGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3RhYmxlLW11bHRpcGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDJhZWQz
NjY1YzFhZC4uNDgyYjVlZjU4OTk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L3RhYmxlLW11bHRpcGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvdGFibGUtbXVsdGlwbGUtdGJvZGllcy1leHBlY3RlZC50eHQKQEAgLTEw
MTgsNyArMTAxOCw3IEBAIEFYRWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0
YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93SW5kZXhSYW5nZTogTlNSYW5nZTogezEsIDF9CiBB
WENvbHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1l
bnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkg
b2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhB
UklBQ29sdW1uSW5kZXg6IC0xCiBBWEFSSUFSb3dJbmRleDogLTEKQEAgLTExMzgsNyArMTEzOCw3
IEBAIEFYRWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9y
OiAobnVsbCkKIEFYUm93SW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9CiBBWENvbHVtbkluZGV4
UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkg
b2Ygc2l6ZSAwPgorQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgog
QVhSb3dIZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhBUklBQ29sdW1uSW5k
ZXg6IC0xCiBBWEFSSUFSb3dJbmRleDogLTEKQEAgLTEyNTgsNyArMTI1OCw3IEBAIEFYRWRpdGFi
bGVBbmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFY
Um93SW5kZXhSYW5nZTogTlNSYW5nZTogezMsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6IE5TUmFu
Z2U6IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgor
QVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJV
SUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhBUklBQ29sdW1uSW5kZXg6IC0xCiBBWEFS
SUFSb3dJbmRleDogLTEKQEAgLTEzNzgsNyArMTM3OCw3IEBAIEFYRWRpdGFibGVBbmNlc3Rvcjog
KG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93SW5kZXhSYW5n
ZTogTlNSYW5nZTogezQsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQot
QVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDb2x1bW5IZWFk
ZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVsZW1lbnRzOiA8
YXJyYXkgb2Ygc2l6ZSAxPgogQVhBUklBQ29sdW1uSW5kZXg6IC0xCiBBWEFSSUFSb3dJbmRleDog
LTEKQEAgLTE0OTgsNyArMTQ5OCw3IEBAIEFYRWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWEhp
Z2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93SW5kZXhSYW5nZTogTlNSYW5nZTog
ezUsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQotQVhDb2x1bW5IZWFk
ZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRz
OiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6
ZSAxPgogQVhBUklBQ29sdW1uSW5kZXg6IC0xCiBBWEFSSUFSb3dJbmRleDogLTEKQEAgLTE2MTgs
NyArMTYxOCw3IEBAIEFYRWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJs
ZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93SW5kZXhSYW5nZTogTlNSYW5nZTogezYsIDF9CiBBWENv
bHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRz
OiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Yg
c2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhBUklB
Q29sdW1uSW5kZXg6IC0xCiBBWEFSSUFSb3dJbmRleDogLTEKQEAgLTE3MzgsNyArMTczOCw3IEBA
IEFYRWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAo
bnVsbCkKIEFYUm93SW5kZXhSYW5nZTogTlNSYW5nZTogezcsIDF9CiBBWENvbHVtbkluZGV4UmFu
Z2U6IE5TUmFuZ2U6IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Yg
c2l6ZSAwPgorQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhS
b3dIZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhBUklBQ29sdW1uSW5kZXg6
IC0xCiBBWEFSSUFSb3dJbmRleDogLTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvdGFibGUtdGhlYWQtdGZvb3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS90YWJsZS10aGVhZC10Zm9vdC1leHBlY3RlZC50eHQKaW5kZXggZTQ0ODNmNDJiZTIw
Li41ZmYxN2YyMjRjOGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFi
bGUtdGhlYWQtdGZvb3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvdGFibGUtdGhlYWQtdGZvb3QtZXhwZWN0ZWQudHh0CkBAIC03MjIsNyArNzIyLDcgQEAgQVhF
ZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxs
KQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7MSwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTog
TlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXpl
IDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hl
YWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEK
IEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtODQyLDcgKzg0Miw3IEBAIEFYRWRpdGFibGVBbmNlc3Rv
cjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93SW5kZXhS
YW5nZTogTlNSYW5nZTogezIsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAx
fQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDb2x1bW5I
ZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVsZW1lbnRz
OiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhBUklBQ29sdW1uSW5kZXg6IC0xCiBBWEFSSUFSb3dJbmRl
eDogLTEKQEAgLTk2Miw3ICs5NjIsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhI
aWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6
IHszLCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVh
ZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50
czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNp
emUgMD4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0xCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9nZW5lcmF0ZWQtY29u
dGVudC13aXRoLWRpc3BsYXktdGFibGUtY3Jhc2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZ2VuZXJhdGVkLWNvbnRlbnQtd2l0aC1kaXNwbGF5
LXRhYmxlLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCBmNTE4ODA0ZWEyNDMuLjdjYmE0MTc2Njcw
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZ2Vu
ZXJhdGVkLWNvbnRlbnQtd2l0aC1kaXNwbGF5LXRhYmxlLWNyYXNoLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9nZW5lcmF0ZWQtY29udGVu
dC13aXRoLWRpc3BsYXktdGFibGUtY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC03LDcgKzcsOCBAQCBB
WFJvbGU6IEFYV2ViQXJlYSBBWFZhbHVlOgogICAgICAgICBBWFJvbGU6IEFYU3RhdGljVGV4dCBB
WFZhbHVlOiBmb28KICAgICAgICAgQVhSb2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1ZTogIQogICAg
IEFYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IGJhcgotICAgIEFYUm9sZTogQVhTdGF0aWNU
ZXh0IEFYVmFsdWU6ICEKKyAgICBBWFJvbGU6IEFYR3JvdXAgQVhWYWx1ZToKKyAgICAgICAgQVhS
b2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1ZTogIQogICAgIEFYUm9sZTogQVhHcm91cCBBWFZhbHVl
OgogICAgICAgICBBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiBiYXoKICAgICBBWFJvbGU6
IEFYR3JvdXAgQVhWYWx1ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466740</attachid>
            <date>2023-06-17 15:30:35 -0700</date>
            <delta_ts>2023-06-22 00:16:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-258223-20230617153035.patch</filename>
            <type>text/plain</type>
            <size>145187</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA5MDMyMjc5ZTA4MTNlZjYwYmQ1OTIzNTQzODM0Zjc5NzEzNGRiYmI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCAxNiBKdW4gMjAyMyAxNDo1MToxMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBN
b3ZlCiBOU0FjY2Vzc2liaWxpdHlDZWxsRm9yQ29sdW1uQW5kUm93UGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBBUEkgb2ZmIHRoZQogbWFpbi10aHJlYWQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI1ODIyMwogcmRhcjovL3Byb2JsZW0vMTEwOTE5ODgzCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCldpdGggdGhpcyBwYXRjaCwgd2UgcmVwbGFjZSB0aGUgZXhpc3Rp
bmcgcmVuZGVyLXRyZWUtYmFzZWQgY29sdW1uIGFuZApyb3cgY2VsbCBzbG90IGRldGVybWluYXRp
b24gYWxnb3JpdGhtIHdpdGggYSBjdXN0b20gb25lIGJhc2VkIG9uOgoKaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjZm9ybWluZy1hLXRhYmxlCgpXZSB1
c2UgdGhpcyBmb3JtaW5nLWEtdGFibGUgYWxnb3JpdGhtIHRvIGJ1aWxkIGEgbmV3IGRhdGEgc3Ry
dWN0dXJlCmluZGljYXRpbmcgdGhlIGNlbGwgQVhJRCBvY2N1cGllZCBieSBlYWNoICJzbG90IiBp
biB0aGUgdGFibGU6IGBBY2Nlc3NpYmlsaXR5VGFibGU6Om1fc2xvdEdyaWRgCgpUaGlzIGhhcyB0
d28gYmVuZWZpdHM6CiAgMS4gV2UgY2FuIChhbmQgZG8pIGNvcHkgdGhpcyBkYXRhIHN0cnVjdHVy
ZSB0byB0aGUgc2Vjb25kYXJ5IHRocmVhZCwKICAgICBhbmQgdXNlIGl0IHRvIHBlcmZvcm0gYEFY
SXNvbGF0ZWRPYmplY3Q6OmNlbGxGb3JDb2x1bW5BbmRSb3dgCiAgICAgd2l0aG91dCByZWx5aW5n
IG9uIHRoZSBtYWluLXRocmVhZC4KCiAgMi4gVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgYWxn
b3JpdGhtIGRvZXMgbm90IHJlbHkgb24gYW55IHNvcnQgb2YKICAgICByZW5kZXIgdHJlZSBzdHJ1
Y3R1cmUgZm9yIGNvcnJlY3RuZXNzLiBUaGlzIGlzIGtleSBiZWNhdXNlIGF1dGhvcnMKICAgICBl
eHBlY3QgdG8gYmUgYWJsZSB0byBwdXQgYW55IENTUyBgZGlzcGxheWAgdmFsdWUgKGZsZXgsIGNv
bnRlbnRzLCBibG9jaywgZXRjKQogICAgIG9uIHJvd3MsIGNlbGxzLCBhbmQgdGFibGVzLCBhbmQg
cHJlc2VydmUgYWNjZXNzaWJpbGl0eSBzZW1hbnRpY3MuCiAgICAgVGhpcyBkaWRuJ3Qgd29yayBi
ZWZvcmUgdGhpcyBwYXRjaCBiZWNhdXNlIGFueSBvZiB0aGVzZSBkaXNwbGF5CiAgICAgdmFsdWVz
IHByZXZlbnQgUmVuZGVyVGFibGUsIFJlbmRlclRhYmxlUm93LCBhbmQgUmVuZGVyVGFibGVDZWxs
cwogICAgIGZyb20gYmVpbmcgZ2VuZXJhdGVkLCB3aGljaCB0aGUgUmVuZGVyVGFibGUgY2VsbC1m
b3ItY29sdW1uLWFuZC1yb3cKICAgICBtZWNoYW5pc20gcmVsaWVzIG9uLgoKVGhpcyBwYXRjaCBk
b2VzIG5vdCBmdWxseSBmaXggbm9uLXN0YW5kYXJkLWRpc3BsYXkgdmFsdWUgdGFibGVzIGR1ZSB0
bwppc3N1ZXMgd2l0aCBwYXJlbnQtY2hpbGQgbWlzbWF0Y2hlcyBpbiB0YWJsZSBoaWVyYXJjaGll
cyB3aXRoIHRoZXNlCmRpc3BsYXkgdmFsdWVzLiBUaGF0IHdpbGwgYmUgZml4ZWQgaW4gYSBsYXRl
ciBwYXRjaC4KClRoaXMgcGF0Y2ggYWxzbyBmZWF0dXJlcyBzZXZlcmFsIG90aGVyIGltcHJvdmVt
ZW50cy4KCiAgMS4gQVhQcm9wZXJ0eU5hbWU6OlJvd0NvdW50IGFuZCBBWFByb3BlcnR5TmFtZTo6
Q29sdW1uQ291bnQgd2VyZQogICAgIHBvaW50bGVzc2x5IGNhY2hlZCByYXRoZXIgdGhhbiBzaW1w
bHkgY291bnRpbmcgQVhQcm9wZXJ0eU5hbWU6OlJvd3MKICAgICBhbmQgQVhQcm9wZXJ0eU5hbWU6
OkNvbHVtbnMgKGFzIHRoZSBsaXZlIHRyZWUgaW1wbGVtZW50YXRpb24gZG9lcykuCiAgICAgVGhl
c2UgcHJvcGVydGllcyBhcmUgcmVtb3ZlZCwgcmVkdWNpbmcgbWVtb3J5IGFuZCBDUFUgY29uc3Vt
cHRpb24uCgogIDIuIEZpeGVkIGEgYnVnIHdoZXJlIHN0YWxlIGRhdGEgd2FzIG5vdCB1cGRhdGVk
IGFmdGVyIGR5bmFtaWMKICAgICBhcmlhLWNvbHNwYW4gY2hhbmdlcy4KCiAgMy4gRml4ZWQgYSBi
dWcgd2hlcmUgdGFibGUncyBjb2x1bW5zIHdlcmUgbm90IHVwZGF0ZWQgYWZ0ZXIgaXRzCiAgICAg
cm93cyBjaGlsZHJlbiBjaGFuZ2VkICh3aGljaCBjYW4gZWZmZWN0IGNvbHVtbnMpLgoKICA0LiBG
aXhlZCBhIHBlcmZvcm1hbmNlIGlzc3VlIHdoZXJlIGBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpp
c1RhYmxlQ2VsbGAsCiAgICAgdXNlZCB0byB0eXBlY2hlY2sgaXM8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbD4sIGRpZCBhIGBwYXJlbnRUYWJsZSgpYAogICAgIHRyYXZlcnNhbC4gVGhpcyBpcyBjb25m
dXNpbmcgYW5kIHZlcnkgbm9uLXBlcmZvcm1hbnQuIEEgbmV3CiAgICAgYGlzRXhwb3NlZFRhYmxl
Q2VsbGAgZnVuY3Rpb24gaXMgYWRkZWQgbWFraW5nIHRoaXMgaW50ZW50IG1vcmUKICAgICBjbGVh
ciwgYW5kIGltcHJvdmluZyBwZXJmb3JtYW5jZSBpbiB0aGUgYXJlYXMgdGhhdCBkb24ndCBuZWVk
IHRoaXMKICAgICB0cmF2ZXJzYWwuCgogIDUuIEFsbG93IGNyZWF0aW5nIEFjY2Vzc2liaWxpdHlU
YWJsZSwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCwgYW5kCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxl
Um93IHdpdGggbm8gcmVuZGVyZXIsIHdoaWNoIGlzIGNydWNpYWwgZm9yCiAgICAgZGlzcGxheTpj
b250ZW50cyBzdXBwb3J0LgoKVGhyZWUgdGVzdHMgYXJlIGFkZGVkIHRvIGVuc3VyZSB0aGUgc2xv
dC1ncmlkIGlzIHVwZGF0ZWQgYWZ0ZXIgZHluYW1pYyBjaGFuZ2VzOgogIC0gYWNjZXNzaWJpbGl0
eS9keW5hbWljLWNvbHNwYW4uaHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4u
aHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKCiog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQu
dHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0
bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhw
ZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3Rh
YmxlLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29s
c3Bhbi5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93
c3Bhbi1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy1yb3dzcGFuLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHlu
YW1pYy10YWJsZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy5odG1sOiBBZGRlZC4KKiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dDoKKiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLmh0bWw6CiogTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4cGVjdGVkLnR4
dDoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLW11bHRpcGxlLXRib2RpZXMtZXhw
ZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtdGhlYWQtdGZvb3Qt
ZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2dl
bmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQ6Ciog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHA6CihXZWJDb3JlOjpvcGVy
YXRvcjw8KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3Bw
OgooV2ViQ29yZTo6bm9kZUhhc0dyaWRSb2xlKToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRh
YmxlKToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRhYmxlUm93KToKKFdlYkNvcmU6OmlzQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpjcmVhdGVPYmpl
Y3RGcm9tUmVuZGVyZXIpOgooV2ViQ29yZTo6Y3JlYXRlRnJvbU5vZGUpOgooV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6aGFuZGxlQ2hpbGRyZW5DaGFuZ2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OmhhbmRsZVJlY29tcHV0ZVNsb3RHcmlkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Omhh
bmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2UpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFu
ZGxlQXR0cmlidXRlQ2hhbmdlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZl
cnJlZENhY2hlVXBkYXRlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUlzb2xhdGVk
VHJlZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpkZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdy
aWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgooV2Vi
Q29yZTo6bm9kZUhhc0dyaWRSb2xlKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmRlZmVyUmVj
b21wdXRlVGFibGVTbG90R3JpZCk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNv
bXB1dGVTbG90R3JpZCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWQuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJs
ZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFk
ZFJvd0Rlc2NlbmRhbnQpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlk
OjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRDZWxsOjpheFJvd1NwYW5XaXRoUm93SW5kZXggY29uc3QpOiBEZWxldGVk
LgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSBj
b25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVk
Q2VsbHMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2xvdEdyaWQpOgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oOgoqIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcDoKKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6QWNjZXNzaWJpbGl0eVRhYmxlKToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6
aXNEYXRhVGFibGUgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRl
SXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6cmVjb21wdXRlSXNFeHBvc2FibGUpOgooV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVRhYmxlOjpzbG90R3JpZCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnNl
dFNsb3RHcmlkRGlydHkpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNoaWxk
cmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9yQ29sdW1uQW5kUm93KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZTo6ZW5zdXJlUm93QW5kQ29sdW1uKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNF
eHBvc2FibGUgY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjph
ZGRUYWJsZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6
OmFkZENoaWxkcmVuRnJvbVNlY3Rpb24pOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmlzRXhwb3NlZFRhYmxlQ2VsbCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CihXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxlSGVhZGVyQ2VsbCBjb25zdCk6CihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRSb3cgY29uc3QpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlIGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OnRpdGxlVUlFbGVtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uSW5kZXggY29uc3QpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93U3BhbiBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VGFibGVDZWxsOjpjb2xTcGFuIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGw6OmlzVGFibGVDZWxsIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmF4Q29sdW1uU3BhbiBjb25zdCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd1NwYW4gY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oOgooV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6c2V0Um93SW5kZXgpOgooV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6c2V0Q29sdW1uSW5kZXgpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6Y29sdW1uSGVhZGVyKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
OjpoZWFkZXJPYmplY3RGb3JTZWN0aW9uKTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oOgoqIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6QWNjZXNzaWJpbGl0eVRhYmxlUm93KToKKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6Y3JlYXRlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6
aGVhZGVyT2JqZWN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZVJvdy5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcDoKKiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGFibGVDZWxsUGFyZW50XSk6
CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlIZWFkZXJFbGVt
ZW50c10pOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuY3BwOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMpOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y2VsbEZvckNvbHVtbkFuZFJv
dyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0Ojppc1RhYmxlQ2VsbCBjb25zdCk6CiogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyk6
CihXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZUFuZERlcGVuZGVudFByb3BlcnRp
ZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW06CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORF0pOgooLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6Ci0tLQogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAgICAgIHwgICA0ICsKIC4uLi9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8IDEwOSArKysrLQogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDEyICstCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwICAgfCAgODIgLS0tLQogLi4u
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmggICAgIHwgICA3ICstCiAuLi4v
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgICAgICAgICAgICAgfCAxMDcgLS0tLS0KIC4u
Li9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCB8ICAgNiAtCiAuLi4v
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAgICAgfCAgIDIgKy0KIC4uLi9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCAgICAgICB8ICAgMiArCiAuLi4vQWNj
ZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oICAgICAgICAgICAgfCAgIDEgKwogLi4uL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCAgICAgIHwgNDIxICsrKysrKysrKysrKy0t
LS0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggICAgICAgIHwgIDM2
ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcCAgfCAxNDEg
KysrLS0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmggICAgfCAg
MjggKy0KIC4uLi9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwICAgICAgICAgICAgICB8IDEy
MyArLS0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmggIHwg
ICAzIC0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgICB8ICAy
OCArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmggICAgIHwgICAy
ICsKIC4uLi9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNwaS5jcHAgICB8ICAgMiAr
LQogLi4uL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNwaS5jcHAgICAgIHwgICAyICst
CiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tICAgfCAgIDQgKy0K
IC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgICAgICAgICB8ICAzNiArLQog
Li4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggICAgICAgICAgIHwgIDExICstCiAu
Li4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCAgICAgICAgICAgfCAgMjMgKy0KIC4u
Li9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAgNyArLQogLi4u
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAgIHwgICA0ICstCiAuLi4v
YXJpYS10YWJsZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgIDIgKy0KIC4uLi9h
Y2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy5odG1sICB8ICAgOCArLQogLi4uL2N1
c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQgICAgICAgIHwgICA0ICstCiAuLi4vYWNj
ZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUuaHRtbCAgfCAgIDQgKy0KIC4uLi9keW5h
bWljLWNvbHNwYW4tZXhwZWN0ZWQudHh0ICAgICAgICAgICAgICB8ICAyMiArCiAuLi4vYWNjZXNz
aWJpbGl0eS9keW5hbWljLWNvbHNwYW4uaHRtbCAgICAgICAgfCAgNjkgKysrCiAuLi4vZHluYW1p
Yy1yb3dzcGFuLWV4cGVjdGVkLnR4dCAgICAgICAgICAgICAgfCAgMjEgKwogLi4uL2FjY2Vzc2li
aWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwgICAgICAgIHwgIDY4ICsrKwogLi4uL2R5bmFtaWMt
dGFibGUtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0ICAgIHwgIDMzICsrCiAuLi4vZHluYW1pYy10
YWJsZS1kZXNjZW5kYW50cy5odG1sICAgICAgICAgICAgfCAxMDQgKysrKysKIC4uLi9hY2Nlc3Np
YmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dCB8ICAgMiArLQogTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi5odG1sIHwgICAyICstCiAuLi4vdGFibGUtaW5j
b3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQgfCAgMjYgKy0KIC4uLi90YWJsZS1tdWx0
aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dCAgICAgICB8ICAxNCArLQogLi4uL3RhYmxlLXRoZWFk
LXRmb290LWV4cGVjdGVkLnR4dCAgICAgICAgICAgIHwgICA2ICstCiAuLi4vY3VzdG9tLWVsZW1l
bnRzL3RhYmxlLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgIDQgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5
L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dCB8ICAgMiArLQogLi4uL3RhYmxlLW11bHRpcGxl
LXRib2RpZXMtZXhwZWN0ZWQudHh0ICAgICAgIHwgIDEyICstCiAuLi4vdGFibGUtdGhlYWQtdGZv
b3QtZXhwZWN0ZWQudHh0ICAgICAgICAgICAgfCAgMTIgKy0KIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyB8ICAgNSArCiAuLi50ZW50LXdpdGgtZGlzcGxheS10
YWJsZS1jcmFzaC1leHBlY3RlZC50eHQgfCAgIDMgKy0KIDQ3IGZpbGVzIGNoYW5nZWQsIDk4MSBp
bnNlcnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhwZWN0ZWQudHh0CiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4uaHRt
bAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1y
b3dzcGFuLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0
CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXRh
YmxlLWRlc2NlbmRhbnRzLmh0bWwKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYTG9nZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dn
ZXIuY3BwCmluZGV4IDFlNDdhNTUyN2MxZi4uZjQ3ZWJmNTJkZjNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApAQCAtMjAzLDYgKzIwMyw3IEBAIHZvaWQgQVhM
b2dnZXI6OmxvZyhjb25zdCBTdHJpbmcmIGNvbGxlY3Rpb25OYW1lLCBjb25zdCBBWE9iamVjdENh
Y2hlOjpEZWZlcnJlZENvCiAgICAgICAgIFsmc2l6ZV0gKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
Tm9kZSosIE5vZGUqPj4mIHR5cGVkQ29sbGVjdGlvbikgeyBzaXplID0gdHlwZWRDb2xsZWN0aW9u
LnNpemUoKTsgfSwKICAgICAgICAgWyZzaXplXSAoY29uc3QgV2Vha0hhc2hTZXQ8RWxlbWVudCwg
V2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiYgdHlwZWRDb2xsZWN0aW9uKSB7IHNpemUg
PSB0eXBlZENvbGxlY3Rpb24uY29tcHV0ZVNpemUoKTsgfSwKICAgICAgICAgWyZzaXplXSAoY29u
c3QgV2Vha0hhc2hTZXQ8SFRNTFRhYmxlRWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJn
ZXREYXRhPiYgdHlwZWRDb2xsZWN0aW9uKSB7IHNpemUgPSB0eXBlZENvbGxlY3Rpb24uY29tcHV0
ZVNpemUoKTsgfSwKKyAgICAgICAgWyZzaXplXSAoY29uc3QgV2Vha0hhc2hTZXQ8QWNjZXNzaWJp
bGl0eVRhYmxlPiYgdHlwZWRDb2xsZWN0aW9uKSB7IHNpemUgPSB0eXBlZENvbGxlY3Rpb24uY29t
cHV0ZVNpemUoKTsgfSwKICAgICAgICAgW10gKGF1dG8mKSB7CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU0NCw2ICs1NDUsOSBAQCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgQVhPYmplY3RDYWNoZTo6
QVhOb3RpZmljYXRpb24gbm90aWZpYwogICAgIGNhc2UgQVhPYmplY3RDYWNoZTo6QVhOb3RpZmlj
YXRpb246OkFYU2V0U2l6ZUNoYW5nZWQ6CiAgICAgICAgIHN0cmVhbSA8PCAiQVhTZXRTaXplQ2hh
bmdlZCI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVhPYmplY3RDYWNoZTo6QVhOb3RpZmlj
YXRpb246OkFYU2xvdEdyaWRDaGFuZ2VkOgorICAgICAgICBzdHJlYW0gPDwgIkFYU2xvdEdyaWRD
aGFuZ2VkIjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWE9iamVjdENhY2hlOjpBWE5vdGlm
aWNhdGlvbjo6QVhUYWJsZUhlYWRlcnNDaGFuZ2VkOgogICAgICAgICBzdHJlYW0gPDwgIkFYVGFi
bGVIZWFkZXJzQ2hhbmdlZCI7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggZjJlODdjMzJmYTU1Li5kNTI1YjA2
MzQzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcApAQCAtODksNiArODksNyBAQAogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVBhcnRFbGVt
ZW50LmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlUm93RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuaCIKICNpbmNsdWRlICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKQEAgLTU3Niw2ICs1NzcsMTEg
QEAgYm9vbCBub2RlSGFzUm9sZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHJvbGUpCiAgICAgcmV0
dXJuIFNwYWNlU3BsaXRTdHJpbmc6OnNwYWNlU3BsaXRTdHJpbmdDb250YWluc1ZhbHVlKHJvbGVW
YWx1ZSwgcm9sZSwgU3BhY2VTcGxpdFN0cmluZzo6U2hvdWxkRm9sZENhc2U6Olllcyk7CiB9CiAK
K2Jvb2wgbm9kZUhhc0dyaWRSb2xlKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGVIYXNS
b2xlKG5vZGUsICJncmlkIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAidGFibGUiX3MpIHx8IG5v
ZGVIYXNSb2xlKG5vZGUsICJ0cmVlZ3JpZCJfcyk7Cit9CisKIHN0YXRpYyBib29sIGlzU2ltcGxl
SW1hZ2UoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKICAgICBpZiAoIWlzPFJlbmRl
ckltYWdlPihyZW5kZXJlcikpCkBAIC02MTgsNiArNjI0LDIxIEBAIHN0YXRpYyBib29sIGlzQWNj
ZXNzaWJpbGl0eVRyZWVJdGVtKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGVIYXNSb2xlKG5v
ZGUsICJ0cmVlaXRlbSJfcyk7CiB9CiAKK3N0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRhYmxl
KE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIGlzPEhUTUxUYWJsZUVsZW1lbnQ+KG5vZGUpOwor
fQorCitzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlUYWJsZVJvdyhOb2RlKiBub2RlKQorewor
ICAgIHJldHVybiBpczxIVE1MVGFibGVSb3dFbGVtZW50Pihub2RlKTsKK30KKworc3RhdGljIGJv
b2wgaXNBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIGlz
PEhUTUxUYWJsZUNlbGxFbGVtZW50Pihub2RlKTsKK30KKwogUmVmPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZU9iamVjdEZyb21SZW5kZXJlcihSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogewogICAgIC8vIEZJWE1FOiBIb3cgY291bGQgcmVuZGVyZXItPm5vZGUoKSBl
dmVyIG5vdCBiZSBhbiBFbGVtZW50PwpAQCAtNjI3LDcgKzY0OCw3IEBAIFJlZjxBY2Nlc3NpYmls
aXR5T2JqZWN0PiBBWE9iamVjdENhY2hlOjpjcmVhdGVPYmplY3RGcm9tUmVuZGVyZXIoUmVuZGVy
T2JqZWN0KiByCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TGlzdDo6Y3JlYXRlKHJlbmRl
cmVyKTsKIAogICAgIC8vIGFyaWEgdGFibGVzCi0gICAgaWYgKG5vZGVIYXNSb2xlKG5vZGUsICJn
cmlkIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAidHJlZWdyaWQiX3MpIHx8IG5vZGVIYXNSb2xl
KG5vZGUsICJ0YWJsZSJfcykpCisgICAgaWYgKG5vZGVIYXNHcmlkUm9sZShub2RlKSkKICAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6Y3JlYXRlKHJlbmRlcmVyKTsKICAgICBp
ZiAobm9kZUhhc1JvbGUobm9kZSwgInJvdyJfcykpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRSb3c6OmNyZWF0ZShyZW5kZXJlcik7CkBAIC02NzIsMTEgKzY5MywxMSBAQCBS
ZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlT2JqZWN0RnJvbVJl
bmRlcmVyKFJlbmRlck9iamVjdCogcgogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU1lbnVM
aXN0OjpjcmVhdGUoZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KHJlbmRlcmVyKSk7CiAKICAgICAv
LyBzdGFuZGFyZCB0YWJsZXMKLSAgICBpZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKSkKKyAg
ICBpZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKSB8fCBpc0FjY2Vzc2liaWxpdHlUYWJsZShu
b2RlKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKHJlbmRlcmVy
KTsKLSAgICBpZiAoaXM8UmVuZGVyVGFibGVSb3c+KHJlbmRlcmVyKSkKKyAgICBpZiAoaXM8UmVu
ZGVyVGFibGVSb3c+KHJlbmRlcmVyKSB8fCBpc0FjY2Vzc2liaWxpdHlUYWJsZVJvdyhub2RlKSkK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6Y3JlYXRlKHJlbmRlcmVyKTsK
LSAgICBpZiAoaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcikpCisgICAgaWYgKChpczxSZW5k
ZXJUYWJsZUNlbGw+KHJlbmRlcmVyKSAmJiAhcmVuZGVyZXItPmlzQW5vbnltb3VzKCkpIHx8IGlz
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChub2RlKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmNyZWF0ZShyZW5kZXJlcik7CiAKICAgICAvLyBwcm9ncmVzcyBiYXIKQEAg
LTcwMiw2ICs3MjMsMTIgQEAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGVG
cm9tTm9kZShOb2RlJiBub2RlKQogewogICAgIGlmIChpc0FjY2Vzc2liaWxpdHlMaXN0KCZub2Rl
KSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlMaXN0OjpjcmVhdGUobm9kZSk7CisgICAg
aWYgKGlzQWNjZXNzaWJpbGl0eVRhYmxlKCZub2RlKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUYWJsZTo6Y3JlYXRlKG5vZGUpOworICAgIGlmIChpc0FjY2Vzc2liaWxpdHlUYWJsZVJv
dygmbm9kZSkpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZShu
b2RlKTsKKyAgICBpZiAoaXNBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKCZub2RlKSkKKyAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShub2RlKTsKICAgICBpZiAoaXNB
Y2Nlc3NpYmlsaXR5VHJlZSgmbm9kZSkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VHJl
ZTo6Y3JlYXRlKG5vZGUpOwogICAgIGlmIChpc0FjY2Vzc2liaWxpdHlUcmVlSXRlbSgmbm9kZSkp
CkBAIC0xMTY0LDYgKzExOTEsMTEgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVDaGlsZHJl
bkNoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQogICAgIH0gZWxzZSBpZiAoaXM8
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+KG9iamVjdCkpIHsKICAgICAgICAgZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+KG9iamVjdCkuaGFuZGxlQ2hpbGRyZW5DaGFuZ2Vk
KCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKGF1dG8qIGF4VGFibGUgPSBkeW5h
bWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihvYmplY3QpKQorICAgICAgICBkZWZlclJl
Y29tcHV0ZVRhYmxlU2xvdEdyaWQoKmF4VGFibGUpOworICAgIGVsc2UgaWYgKGF1dG8qIGF4Um93
ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4ob2JqZWN0KSkgeworICAg
ICAgICBpZiAoYXV0byogcGFyZW50VGFibGUgPSBheFJvdy0+cGFyZW50VGFibGUoKSkKKyAgICAg
ICAgICAgIGRlZmVyUmVjb21wdXRlVGFibGVTbG90R3JpZCgqcGFyZW50VGFibGUpOwogICAgIH0K
IAogICAgIGlmICghb2JqZWN0Lm5vZGUoKSAmJiAhb2JqZWN0LnJlbmRlcmVyKCkpCkBAIC0xMjA3
LDYgKzEyMzksMTQgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVDaGlsZHJlbkNoYW5nZWQo
QWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQogICAgIHBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlv
bigmb2JqZWN0LCBBWENoaWxkcmVuQ2hhbmdlZCk7CiB9CiAKK3ZvaWQgQVhPYmplY3RDYWNoZTo6
aGFuZGxlUmVjb21wdXRlU2xvdEdyaWQoQWNjZXNzaWJpbGl0eVRhYmxlJiBheFRhYmxlKQorewor
ICAgIGF4VGFibGUuc2V0U2xvdEdyaWREaXJ0eSgpOworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZ
X0lTT0xBVEVEX1RSRUUpCisgICAgdXBkYXRlSXNvbGF0ZWRUcmVlKGF4VGFibGUsIEFYU2xvdEdy
aWRDaGFuZ2VkKTsKKyNlbmRpZgorfQorCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZU1lbnVP
cGVuZWQoTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUgfHwgIW5vZGUtPnJlbmRlcmVyKCkg
fHwgIW5vZGVIYXNSb2xlKG5vZGUsICJtZW51Il9zKSkKQEAgLTIxMDUsNyArMjE0NSw3IEBAIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZShFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBBdG9tU3RyCiAgICAgICAgIHBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbih0
YXJnZXQsIEFYTm90aWZpY2F0aW9uOjpBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKTsKIAogICAg
ICAgICAvLyBUYWJsZSBjZWxsIGFjdGl2ZSBkZXNjZW5kYW50IGNoYW5nZXMgc2hvdWxkIHRyaWdn
ZXIgc2VsZWN0ZWQgY2VsbCBjaGFuZ2VzLgotICAgICAgICBpZiAodGFyZ2V0LT5pc1RhYmxlKCkg
JiYgYWN0aXZlRGVzY2VuZGFudC0+aXNUYWJsZUNlbGwoKSkgeworICAgICAgICBpZiAodGFyZ2V0
LT5pc1RhYmxlKCkgJiYgYWN0aXZlRGVzY2VuZGFudC0+aXNFeHBvc2VkVGFibGVDZWxsKCkpIHsK
ICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgICAgICAgICAgdXBk
YXRlSXNvbGF0ZWRUcmVlKHRhcmdldCwgQVhOb3RpZmljYXRpb246OkFYU2VsZWN0ZWRDZWxsc0No
YW5nZWQpOwogI2VuZGlmCkBAIC0yMjAzLDYgKzIyNDMsMjYgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYKICAgICBBWExPRyhtYWtlU3RyaW5nKCJhdHRyaWJ1dGUgIiwgYXR0ck5hbWUubG9jYWxO
YW1lKCksICIgZm9yIGVsZW1lbnQgIiwgZWxlbWVudCA/IGVsZW1lbnQtPmRlYnVnRGVzY3JpcHRp
b24oKSA6IFN0cmluZygibnVsbHB0ciJfcykpKTsKICAgICBBWExPRyhtYWtlU3RyaW5nKCJvbGQg
dmFsdWU6ICIsIG9sZFZhbHVlLCAiIG5ldyB2YWx1ZTogIiwgbmV3VmFsdWUpKTsKIAorICAgIGVu
dW0gY2xhc3MgVGFibGVQcm9wZXJ0eSA6IHVpbnQ4X3QgeyBFeHBvc2VkID0gMSA8PCAwLCBTbG90
R3JpZCA9IDEgPDwgMSB9OworICAgIGF1dG8gcmVjb21wdXRlUGFyZW50VGFibGVQcm9wZXJ0aWVz
ID0gW3RoaXNdIChFbGVtZW50KiBlbGVtZW50LCBPcHRpb25TZXQ8VGFibGVQcm9wZXJ0eT4gcHJv
cGVydGllcykgeworICAgICAgICBBU1NFUlQoIXByb3BlcnRpZXMuaXNFbXB0eSgpKTsKKworICAg
ICAgICBpZiAoIXByb3BlcnRpZXMuY29udGFpbnMoVGFibGVQcm9wZXJ0eTo6U2xvdEdyaWQpKSB7
CisgICAgICAgICAgICAvLyBJZiB3ZSdyZSByZS1jb21wdXRpbmcgdGhlIGV4cG9zZWQgc3RhdGUg
b2YgdGhlIHRhYmxlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gd29yayBmb3Igbm9uLUFSSUEgdGFibGVz
LCBhbGxvd2luZyB1cyB0bworICAgICAgICAgICAgLy8gZG8gYSBjaGVhcCBkeW5hbWljRG93bmNh
c3QgY2hlY2sgZm9yIGFuIEhUTUxUYWJsZVBhcnRFbGVtZW50IHJhdGhlciB0aGFuIGNhbGxpbmcg
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cGFyZW50VGFibGUoKS4KKyAgICAgICAgICAgIC8vIChB
UklBIHRhYmxlcyBhcmUgaW5oZXJlbnRseSBhbHdheXMgZXhwb3NlZCkuCisgICAgICAgICAgICBp
ZiAoYXV0byogdGFibGVQYXJ0RWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MVGFibGVQYXJ0
RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICAgICAgZGVmZXJSZWNvbXB1dGVUYWJsZUlz
RXhwb3NlZChjb25zdF9jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPih0YWJsZVBhcnRFbGVtZW50LT5m
aW5kUGFyZW50VGFibGUoKS5nZXQoKSkpOworICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIGF4Q2Vs
bCA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihnZXRPckNyZWF0ZShl
bGVtZW50KSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBwYXJlbnRUYWJsZSA9IGF4Q2VsbC0+
cGFyZW50VGFibGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmNvbnRhaW5z
KFRhYmxlUHJvcGVydHk6OkV4cG9zZWQpICYmICFwYXJlbnRUYWJsZS0+aXNBcmlhVGFibGUoKSkK
KyAgICAgICAgICAgICAgICAgICAgZGVmZXJSZWNvbXB1dGVUYWJsZUlzRXhwb3NlZChwYXJlbnRU
YWJsZS0+ZWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllcy5jb250YWlu
cyhUYWJsZVByb3BlcnR5OjpTbG90R3JpZCkpCisgICAgICAgICAgICAgICAgICAgIGRlZmVyUmVj
b21wdXRlVGFibGVTbG90R3JpZCgqcGFyZW50VGFibGUpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfTsKKwogICAgIGlmICghc2hvdWxkUHJvY2Vzc0F0dHJpYnV0ZUNoYW5nZShlbGVt
ZW50LCBhdHRyTmFtZSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjI0NSwxNiArMjMwNSwxNyBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShFbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IG9wZW5B
dHRyICYmIGlzPEhUTUxEaWFsb2dFbGVtZW50PigqZWxlbWVudCkpIHsKICAgICAgICAgZGVmZXJN
b2RhbENoYW5nZShlbGVtZW50KTsKICAgICAgICAgcmVjb21wdXRlSXNJZ25vcmVkKGVsZW1lbnQt
PnBhcmVudE5vZGUoKSk7CisgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSByb3dzcGFuQXR0cikg
eworICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYUm93U3BhbkNoYW5nZWQpOwor
ICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgVGFibGVQcm9w
ZXJ0eTo6U2xvdEdyaWQpOworICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gY29sc3BhbkF0dHIp
IHsKKyAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWENvbHVtblNwYW5DaGFuZ2Vk
KTsKKyAgICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVQcm9wZXJ0aWVzKGVsZW1lbnQsIFRhYmxl
UHJvcGVydHk6OlNsb3RHcmlkKTsKICAgICB9CiAKICAgICBpZiAoIWF0dHJOYW1lLmxvY2FsTmFt
ZSgpLnN0cmluZygpLnN0YXJ0c1dpdGgoImFyaWEtIl9zKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byByZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlID0gW3RoaXNdIChFbGVtZW50KiBl
bGVtZW50KSB7Ci0gICAgICAgIGlmIChhdXRvKiB0YWJsZVBhcnRFbGVtZW50ID0gZHluYW1pY0Rv
d25jYXN0PEhUTUxUYWJsZVBhcnRFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAgICAgIGRlZmVy
UmVjb21wdXRlVGFibGVJc0V4cG9zZWQoY29uc3RfY2FzdDxIVE1MVGFibGVFbGVtZW50Kj4odGFi
bGVQYXJ0RWxlbWVudC0+ZmluZFBhcmVudFRhYmxlKCkuZ2V0KCkpKTsKLSAgICB9OwotCiAgICAg
aWYgKGF0dHJOYW1lID09IGFyaWFfYWN0aXZlZGVzY2VuZGFudEF0dHIpCiAgICAgICAgIGhhbmRs
ZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2UoKmVsZW1lbnQsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAg
ICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9hdG9taWNBdHRyKQpAQCAtMjI3NCwxMCArMjMz
NSwxMCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJgogICAgICAgICBkZWZlclJlY29tcHV0ZVRh
YmxlSXNFeHBvc2VkKGR5bmFtaWNEb3duY2FzdDxIVE1MVGFibGVFbGVtZW50PihlbGVtZW50KSk7
CiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2NvbGluZGV4QXR0cikgewogICAgICAg
ICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYQ29sdW1uSW5kZXhDaGFuZ2VkKTsKLSAgICAg
ICAgcmVjb21wdXRlUGFyZW50VGFibGVFeHBvc3VyZShlbGVtZW50KTsKKyAgICAgICAgcmVjb21w
dXRlUGFyZW50VGFibGVQcm9wZXJ0aWVzKGVsZW1lbnQsIFRhYmxlUHJvcGVydHk6OkV4cG9zZWQp
OwogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9jb2xzcGFuQXR0cikgewogICAgICAg
ICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYQ29sdW1uU3BhbkNoYW5nZWQpOwotICAgICAg
ICByZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlKGVsZW1lbnQpOworICAgICAgICByZWNvbXB1
dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgeyBUYWJsZVByb3BlcnR5OjpTbG90R3Jp
ZCwgVGFibGVQcm9wZXJ0eTo6RXhwb3NlZCB9KTsKICAgICB9CiAgICAgZWxzZSBpZiAoYXR0ck5h
bWUgPT0gYXJpYV9kZXNjcmliZWRieUF0dHIpCiAgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxl
bWVudCwgQVhEZXNjcmliZWRCeUNoYW5nZWQpOwpAQCAtMjI5Nyw3ICsyMzU4LDcgQEAgdm9pZCBB
WE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoRWxlbWVudCogZWxlbWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWFBs
YWNlaG9sZGVyQ2hhbmdlZCk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9yb3dpbmRl
eEF0dHIpIHsKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWFJvd0luZGV4Q2hh
bmdlZCk7Ci0gICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlRXhwb3N1cmUoZWxlbWVudCk7Cisg
ICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlUHJvcGVydGllcyhlbGVtZW50LCB7IFRhYmxlUHJv
cGVydHk6OlNsb3RHcmlkLCBUYWJsZVByb3BlcnR5OjpFeHBvc2VkIH0pOwogICAgIH0KICAgICBl
bHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3ZhbHVlbWF4QXR0cikKICAgICAgICAgcG9zdE5vdGlm
aWNhdGlvbihlbGVtZW50LCBBWE1heGltdW1WYWx1ZUNoYW5nZWQpOwpAQCAtMjM1NSw5ICsyNDE2
LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICAgICAgaGFuZGxlUm93Q291bnRDaGFu
Z2VkKGdldChlbGVtZW50KSwgZWxlbWVudCA/ICZlbGVtZW50LT5kb2N1bWVudCgpIDogbnVsbHB0
cik7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9yb3dzcGFuQXR0cikgewogICAgICAg
ICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYUm93U3BhbkNoYW5nZWQpOwotICAgICAgICBy
ZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlKGVsZW1lbnQpOwotICAgIH0KLSAgICBlbHNlIGlm
IChhdHRyTmFtZSA9PSBhcmlhX3NvcnRBdHRyKQorICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJs
ZVByb3BlcnRpZXMoZWxlbWVudCwgeyBUYWJsZVByb3BlcnR5OjpTbG90R3JpZCwgVGFibGVQcm9w
ZXJ0eTo6RXhwb3NlZCB9KTsKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfc29ydEF0
dHIpCiAgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhPYmplY3RDYWNoZTo6QVhT
b3J0RGlyZWN0aW9uQ2hhbmdlZCk7CiB9CiAKQEAgLTM2NzIsNiArMzczMiwxMiBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKCkKICAgICAgICAgaGFuZGxl
Q2hpbGRyZW5DaGFuZ2VkKCpjaGlsZCk7CiAgICAgbV9kZWZlcnJlZENoaWxkcmVuQ2hhbmdlZExp
c3QuY2xlYXIoKTsKIAorICAgIEFYTE9HRGVmZXJyZWRDb2xsZWN0aW9uKCJSZWNvbXB1dGVUYWJs
ZVNsb3RHcmlkTGlzdCJfcywgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRMaXN0KTsK
KyAgICBtX2RlZmVycmVkUmVjb21wdXRlVGFibGVTbG90R3JpZExpc3QuZm9yRWFjaChbdGhpc10g
KGF1dG8mIGF4VGFibGUpIHsKKyAgICAgICAgaGFuZGxlUmVjb21wdXRlU2xvdEdyaWQoYXhUYWJs
ZSk7CisgICAgfSk7CisgICAgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRMaXN0LmNs
ZWFyKCk7CisKICAgICBBWExPR0RlZmVycmVkQ29sbGVjdGlvbigiVGV4dENoYW5nZWRMaXN0Il9z
LCBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0KTsKICAgICBmb3IgKGF1dG8qIG5vZGUgOiBtX2Rl
ZmVycmVkVGV4dENoYW5nZWRMaXN0KQogICAgICAgICBoYW5kbGVUZXh0Q2hhbmdlZChnZXRPckNy
ZWF0ZShub2RlKSk7CkBAIC0zODk4LDYgKzM5NjQsMTAgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp1
cGRhdGVJc29sYXRlZFRyZWUoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QWNjZXNzaWJp
bGkKICAgICAgICAgY2FzZSBBWFNldFNpemVDaGFuZ2VkOgogICAgICAgICAgICAgdHJlZS0+dXBk
YXRlTm9kZVByb3BlcnRpZXMoKm5vdGlmaWNhdGlvbi5maXJzdCwgeyBBWFByb3BlcnR5TmFtZTo6
U2V0U2l6ZSwgQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzU2V0U2l6ZSB9KTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEFYU2xvdEdyaWRDaGFuZ2VkOgorICAgICAgICAgICAgQVNT
RVJUKG5vdGlmaWNhdGlvbi5maXJzdC0+aXNUYWJsZSgpKTsKKyAgICAgICAgICAgIHRyZWUtPnVw
ZGF0ZU5vZGVQcm9wZXJ0eSgqbm90aWZpY2F0aW9uLmZpcnN0LCBBWFByb3BlcnR5TmFtZTo6U2xv
dEdyaWQpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhUYWJsZUhlYWRlcnND
aGFuZ2VkOgogICAgICAgICAgICAgdHJlZS0+dXBkYXRlTm9kZVByb3BlcnR5KCpub3RpZmljYXRp
b24uZmlyc3QsIEFYUHJvcGVydHlOYW1lOjpDb2x1bW5IZWFkZXJzKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNDAwMiw2ICs0MDcyLDEzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJSZWNv
bXB1dGVUYWJsZUlzRXhwb3NlZChFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBtX3BlcmZvcm1D
YWNoZVVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCit2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmRlZmVyUmVjb21wdXRlVGFibGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUmIGF4VGFi
bGUpCit7CisgICAgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRMaXN0LmFkZChheFRh
YmxlKTsKKyAgICBpZiAoIW1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIuaXNBY3RpdmUoKSkKKyAg
ICAgICAgbV9wZXJmb3JtQ2FjaGVVcGRhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKK30KKwog
dm9pZCBBWE9iamVjdENhY2hlOjpkZWZlclRleHRDaGFuZ2VkSWZOZWVkZWQoTm9kZSogbm9kZSkK
IHsKICAgICBpZiAoIW5vZGVBbmRSZW5kZXJlckFyZVZhbGlkKG5vZGUpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBmODRhNGExZmFmYjEuLmY0
Mzg2M2FhMTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIEhUTUxBcmVhRWxlbWVudDsKIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQ7CkBAIC0yMjAsNyAr
MjIxLDggQEAgcHVibGljOgogICAgICAgICAsIFZlY3RvcjxBdHRyaWJ1dGVDaGFuZ2U+CiAgICAg
ICAgICwgVmVjdG9yPHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+PgogICAgICAgICAsIFdlYWtIYXNo
U2V0PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4KLSAgICAgICAgLCBX
ZWFrSGFzaFNldDxIVE1MVGFibGVFbGVtZW50LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERh
dGE+PjsKKyAgICAgICAgLCBXZWFrSGFzaFNldDxIVE1MVGFibGVFbGVtZW50LCBXZWFrUHRySW1w
bFdpdGhFdmVudFRhcmdldERhdGE+CisgICAgICAgICwgV2Vha0hhc2hTZXQ8QWNjZXNzaWJpbGl0
eVRhYmxlPj47CiAgICAgdm9pZCBkZWZlck1vZGFsQ2hhbmdlKEVsZW1lbnQqKTsKICAgICB2b2lk
IGRlZmVyTWVudUxpc3RWYWx1ZUNoYW5nZShFbGVtZW50Kik7CiAgICAgdm9pZCBkZWZlck5vZGVB
ZGRlZE9yUmVtb3ZlZChOb2RlKik7CkBAIC0zNTYsNiArMzU4LDcgQEAgcHVibGljOgogICAgICAg
ICBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkLAogICAgICAgICBBWFNlbGVjdGVkVGV4dENoYW5nZWQs
CiAgICAgICAgIEFYU2V0U2l6ZUNoYW5nZWQsCisgICAgICAgIEFYU2xvdEdyaWRDaGFuZ2VkLAog
ICAgICAgICBBWFRhYmxlSGVhZGVyc0NoYW5nZWQsCiAgICAgICAgIEFYVVJMQ2hhbmdlZCwKICAg
ICAgICAgQVhWYWx1ZUNoYW5nZWQsCkBAIC00MzcsNiArNDQwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGVmZXJSZWNvbXB1dGVJc0lnbm9yZWRJZk5lZWRlZChFbGVtZW50Kik7CiAgICAgdm9pZCBk
ZWZlclJlY29tcHV0ZUlzSWdub3JlZChFbGVtZW50Kik7CiAgICAgdm9pZCBkZWZlclJlY29tcHV0
ZVRhYmxlSXNFeHBvc2VkKEVsZW1lbnQqKTsKKyAgICB2b2lkIGRlZmVyUmVjb21wdXRlVGFibGVT
bG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUmKTsKICAgICB2b2lkIGRlZmVyVGV4dENoYW5nZWRJ
Zk5lZWRlZChOb2RlKik7CiAgICAgdm9pZCBkZWZlclNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkSWZO
ZWVkZWQoRWxlbWVudCYpOwogICAgIHZvaWQgcGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKTsK
QEAgLTU2NCw2ICs1NjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlRm9jdXNlZFVJRWxl
bWVudENoYW5nZWQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlLCBV
cGRhdGVNb2RhbCA9IFVwZGF0ZU1vZGFsOjpZZXMpOwogICAgIHZvaWQgaGFuZGxlTWVudUxpc3RW
YWx1ZUNoYW5nZWQoRWxlbWVudCYpOwogICAgIHZvaWQgaGFuZGxlVGV4dENoYW5nZWQoQWNjZXNz
aWJpbGl0eU9iamVjdCopOworICAgIHZvaWQgaGFuZGxlUmVjb21wdXRlU2xvdEdyaWQoQWNjZXNz
aWJpbGl0eVRhYmxlJik7CiAKICAgICAvLyBhcmlhLW1vZGFsIG9yIG1vZGFsIDxkaWFsb2c+IHJl
bGF0ZWQKICAgICBib29sIGlzTW9kYWxFbGVtZW50KEVsZW1lbnQmKSBjb25zdDsKQEAgLTYzNiw2
ICs2NDEsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8QVhJRD4gbV9kZWZlcnJlZFJlbW92ZWRP
YmplY3RzOwogICAgIFdlYWtIYXNoU2V0PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFy
Z2V0RGF0YT4gbV9kZWZlcnJlZFJlY29tcHV0ZUlzSWdub3JlZExpc3Q7CiAgICAgV2Vha0hhc2hT
ZXQ8SFRNTFRhYmxlRWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiBtX2Rl
ZmVycmVkUmVjb21wdXRlVGFibGVJc0V4cG9zZWRMaXN0OworICAgIFdlYWtIYXNoU2V0PEFjY2Vz
c2liaWxpdHlUYWJsZT4gbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlU2xvdEdyaWRMaXN0OwogICAg
IExpc3RIYXNoU2V0PE5vZGUqPiBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0OwogICAgIFdlYWtI
YXNoU2V0PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4gbV9kZWZlcnJl
ZFNlbGVjdGVkQ2hpbGRyZWRDaGFuZ2VkTGlzdDsKICAgICBMaXN0SGFzaFNldDxSZWZQdHI8QWNj
ZXNzaWJpbGl0eU9iamVjdD4+IG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0OwpAQCAtNjgw
LDYgKzY4Niw3IEBAIHByaXZhdGU6CiB9OwogCiBib29sIG5vZGVIYXNSb2xlKE5vZGUqLCBTdHJp
bmdWaWV3IHJvbGUpOworYm9vbCBub2RlSGFzR3JpZFJvbGUoTm9kZSopOwogLy8gVGhpcyB3aWxs
IGxldCB5b3Uga25vdyBpZiBhcmlhLWhpZGRlbiB3YXMgZXhwbGljaXRseSBzZXQgdG8gZmFsc2Uu
CiBib29sIGlzTm9kZUFyaWFWaXNpYmxlKE5vZGUqKTsKICAgICAKQEAgLTcwNSw2ICs3MTIsNyBA
QCBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRGb3JjZURlZmVycmVkU3BlbGxDaGVja2lu
Zyhib29sKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRpc2FibGVBY2Nlc3NpYmls
aXR5KCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRFbmhhbmNlZFVzZXJJbnRl
cmZhY2VBY2Nlc3NpYmlsaXR5KGJvb2wpIHsgfQogaW5saW5lIGJvb2wgbm9kZUhhc1JvbGUoTm9k
ZSosIFN0cmluZ1ZpZXcpIHsgcmV0dXJuIGZhbHNlOyB9CitpbmxpbmUgYm9vbCBub2RlSGFzR3Jp
ZFJvbGUoTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hl
OjpzdGFydENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXNVbnRpbFRyZWVNdXRhdGVzKCkg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpzdG9wQ2FjaGluZ0NvbXB1dGVkT2JqZWN0
QXR0cmlidXRlcygpIHsgfQogaW5saW5lIGJvb2wgaXNOb2RlQXJpYVZpc2libGUoTm9kZSopIHsg
cmV0dXJuIHRydWU7IH0KQEAgLTczMSw2ICs3MzksNyBAQCBpbmxpbmUgdm9pZCBBWE9iamVjdENh
Y2hlOjpkZWZlclJlY29tcHV0ZUlzSWdub3JlZChFbGVtZW50KikgeyB9CiBpbmxpbmUgdm9pZCBB
WE9iamVjdENhY2hlOjpkZWZlclRleHRDaGFuZ2VkSWZOZWVkZWQoTm9kZSopIHsgfQogaW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJTZWxlY3RlZENoaWxkcmVuQ2hhbmdlZElmTmVlZGVk
KEVsZW1lbnQmKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyVGV4dFJlcGxh
Y2VtZW50Tm90aWZpY2F0aW9uRm9yVGV4dENvbnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQmLCBjb25zdCBTdHJpbmcmKSB7IH0KK2lubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVy
UmVjb21wdXRlVGFibGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUmKSB7IH0KICNpZiAhUExB
VEZPUk0oQ09DT0EpICYmICFVU0UoQVRTUEkpCiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpk
ZXRhY2hXcmFwcGVyKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSkg
eyB9CiAjZW5kaWYKQEAgLTc2NCw2ICs3NzMsNyBAQCBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKE5vZGUqLCBBWFRleHRFZGl0VHlwZQog
aW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlv
bihOb2RlKiwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9y
ZWQoUmVuZGVyT2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVU
ZXh0Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVj
dENhY2hlOjpoYW5kbGVSZWNvbXB1dGVTbG90R3JpZChBY2Nlc3NpYmlsaXR5VGFibGUmKSB7IH0K
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUmVuZGVyZXJDcmVhdGVkKEVsZW1lbnQmKSB7
IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhkb3Vi
bGUpIHsgfQogaW5saW5lIFNpbXBsZVJhbmdlIEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yTm9kZUNv
bnRlbnRzKE5vZGUmIG5vZGUpIHsgcmV0dXJuIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50
cyhub2RlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IGU0ZTVmODVjMmI3ZS4uNWE0ODk5MjY2OTg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
QVJJQUdyaWQuY3BwCkBAIC01MSw5MiArNTEsMTAgQEAgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZD4gQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQocmVuZGVyZXIp
KTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxlQ2VsbENoaWxkKEFY
Q29yZU9iamVjdCogY2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRl
ZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKLXsKLSAgICBpZiAoIWNoaWxkIHx8ICghaXM8
QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqY2hpbGQpICYmICFjaGlsZC0+aXNBUklBVHJlZUdyaWRS
b3coKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHJvdyA9IGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKmNoaWxkKTsKLSAgICBpZiAoYXBwZW5kZWRSb3dzLmNv
bnRhaW5zKCZyb3cpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBzdG9yZSB0aGUg
bWF4aW11bSBudW1iZXIgb2YgY29sdW1ucwotICAgIHVuc2lnbmVkIHJvd0NlbGxDb3VudCA9IHJv
dy5jaGlsZHJlbigpLnNpemUoKTsKLSAgICBpZiAocm93Q2VsbENvdW50ID4gY29sdW1uQ291bnQp
Ci0gICAgICAgIGNvbHVtbkNvdW50ID0gcm93Q2VsbENvdW50OwotCi0gICAgcm93LnNldFJvd0lu
ZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7Ci0gICAgbV9yb3dzLmFwcGVuZCgmcm93KTsKLSAgICBh
ZGRDaGlsZCgmcm93KTsKLSAgICBhcHBlbmRlZFJvd3MuYWRkKCZyb3cpOwotICAgIHJldHVybiB0
cnVlOwotfQotCiBib29sIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6aXNNdWx0aVNlbGVjdGFibGUo
KSBjb25zdAogewogICAgIGNvbnN0IEF0b21TdHJpbmcmIGFyaWFNdWx0aVNlbGVjdGFibGUgPSBn
ZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX211bHRpc2VsZWN0YWJsZUF0dHIpOwogICAgIHJl
dHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYU11bHRpU2VsZWN0YWJsZSwg
ImZhbHNlIl9zKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFJvd0Rlc2Nl
bmRhbnQoQVhDb3JlT2JqZWN0KiByb3dDaGlsZCwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0
Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KQotewotICAgIGlmICghcm93
Q2hpbGQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghcm93Q2hpbGQtPmlzVGFibGVSb3co
KSB8fCAhcm93Q2hpbGQtPm5vZGUoKSkgewotICAgICAgICAvLyBBbHRob3VnaCBhICJncmlkIiBz
aG91bGQgaGF2ZSByb3dzIGFzIGl0cyBkaXJlY3QgZGVzY2VuZGFudHMsIGlmIHRoaXMgaXMgbm90
IGEgdGFibGUgcm93LAotICAgICAgICAvLyBvciB0aGlzIHJvdyBpcyBhbm9ueW1vdXMsIGRpdmUg
ZGVlcGVyIGludG8gdGhlIGRlc2NlbmRhbnRzIHRvIHRyeSB0byBmaW5kIGEgdmFsaWQgcm93Lgot
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcm93Q2hpbGQtPmNoaWxkcmVuKCkpCi0g
ICAgICAgICAgICBhZGRSb3dEZXNjZW5kYW50KGNoaWxkLmdldCgpLCBhcHBlbmRlZFJvd3MsIGNv
bHVtbkNvdW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgYWRkVGFibGVDZWxsQ2hpbGQocm93Q2hp
bGQsIGFwcGVuZGVkUm93cywgY29sdW1uQ291bnQpOwotfQotCi12b2lkIEFjY2Vzc2liaWxpdHlB
UklBR3JpZDo6YWRkQ2hpbGRyZW4oKQotewotICAgIEFTU0VSVCghbV9jaGlsZHJlbkluaXRpYWxp
emVkKTsgCi0gICAgCi0gICAgaWYgKCFpc0V4cG9zYWJsZSgpKSB7Ci0gICAgICAgIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgCi0gICAgbV9jaGlsZHJlbkluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICBhdXRvKiBkb2N1
bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgYXV0byogYXhDYWNoZSA9IGRvY3VtZW50ID8g
ZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7Ci0KLSAgICAvLyBBZGQgdGhlIGNo
aWxkcmVuIHJvd3MgYnV0IGJlIG1pbmRmdWwgaW4gY2FzZSB0aGVyZSBhcmUgZm9vdGVyIHNlY3Rp
b25zIGluIHRoaXMgdGFibGUuCi0gICAgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4gYXBw
ZW5kZWRSb3dzOwotICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50ID0gMDsKLSAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgZm9vdGVyU2VjdGlvbnM7Ci0gICAgZm9yIChSZWZQdHI8QWNjZXNz
aWJpbGl0eU9iamVjdD4gY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGJvb2wgZm9vdGVyU2VjdGlvbiA9IGZhbHNlOwot
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBjaGlsZFJlbmRlcmVyID0gY2hpbGQtPnJlbmRlcmVy
KCkpIHsKLSAgICAgICAgICAgIGlmIChpczxSZW5kZXJUYWJsZVNlY3Rpb24+KCpjaGlsZFJlbmRl
cmVyKSkgewotICAgICAgICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlvbiYgY2hpbGRTZWN0aW9u
ID0gZG93bmNhc3Q8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hpbGRSZW5kZXJlcik7Ci0gICAgICAg
ICAgICAgICAgaWYgKCZjaGlsZFNlY3Rpb24gPT0gY2hpbGRTZWN0aW9uLnRhYmxlKCktPmZvb3Rl
cigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvb3RlclNlY3Rpb25zLmFwcGVuZChjaGlsZCk7
Ci0gICAgICAgICAgICAgICAgICAgIGZvb3RlclNlY3Rpb24gPSB0cnVlOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWZvb3RlclNlY3Rp
b24pCi0gICAgICAgICAgICBhZGRSb3dEZXNjZW5kYW50KGNoaWxkLmdldCgpLCBhcHBlbmRlZFJv
d3MsIGNvbHVtbkNvdW50KTsKLSAgICB9Ci0gICAgCi0gICAgZm9yIChjb25zdCBhdXRvJiBmb290
ZXJTZWN0aW9uIDogZm9vdGVyU2VjdGlvbnMpCi0gICAgICAgIGFkZFJvd0Rlc2NlbmRhbnQoZm9v
dGVyU2VjdGlvbi5nZXQoKSwgYXBwZW5kZWRSb3dzLCBjb2x1bW5Db3VudCk7Ci0gICAgCi0gICAg
Ly8gbWFrZSB0aGUgY29sdW1ucyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhl
IGZpcnN0IGJvZHkKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29sdW1uQ291bnQ7ICsr
aSkgewotICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
b2x1bW4+KCpheENhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbikpOwotICAg
ICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7Ci0gICAgICAgIGNvbHVtbi5zZXRQYXJlbnQo
dGhpcyk7Ci0gICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7Ci0gICAgICAgIGFkZENo
aWxkKCZjb2x1bW4sIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsKLSAgICB9Ci0KLSAgICBhZGRDaGls
ZChoZWFkZXJDb250YWluZXIoKSwgRGVzY2VuZElmSWdub3JlZDo6Tm8pOwotfQotICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKaW5kZXggYWVjYzlhOGJiYjRlLi5lMjhiYTk2YTNi
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWQuaApAQCAtNDAsOSArNDAsNyBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWQgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVRhYmxlIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAg
IHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlBUklBR3JpZCgpOwotICAgIAotICAgIHZvaWQgYWRkQ2hp
bGRyZW4oKSBvdmVycmlkZTsKLSAgICAKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQoUmVuZGVyT2JqZWN0Kik7CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlB
UklBR3JpZEluc3RhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTIs
OSArNTAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0FyaWFU
YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAKLSAgICB2b2lkIGFk
ZFJvd0Rlc2NlbmRhbnQoQVhDb3JlT2JqZWN0KiwgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0
Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KTsKLSAgICBib29sIGFkZFRh
YmxlQ2VsbENoaWxkKEFYQ29yZU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+
JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKaW5kZXggYWZlYTFmMzJhZDY5Li5kZTQ4
Njk3M2JkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApAQCAtNjEsMTEzICs2MSw2IEBAIEFjY2Vz
c2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFyZW50VGFibGUoKSBj
b25zdAogICAgIH0pKTsKIH0KICAgICAKLXN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IEFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2UoKSBjb25zdAotewotICAgIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlIHsgMCwgMSB9OwotICAgIEFYQ29y
ZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFwYXJl
bnQpCi0gICAgICAgIHJldHVybiByb3dSYW5nZTsKLQotICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5
VGFibGVSb3c+KCpwYXJlbnQpKSB7Ci0gICAgICAgIC8vIFdlIGFscmVhZHkgZ290IGEgdGFibGUg
cm93LCB1c2UgaXRzIEFQSS4KLSAgICAgICAgcm93UmFuZ2UuZmlyc3QgPSBkb3duY2FzdDxBY2Nl
c3NpYmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpLnJvd0luZGV4KCk7Ci0gICAgfSBlbHNlIGlmIChp
czxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGUoKSkgewotICAgICAgICAvLyBXZSByZWFjaGVkIHRo
ZSBwYXJlbnQgdGFibGUsIHNvIHdlIG5lZWQgdG8gaW5zcGVjdCBpdHMKLSAgICAgICAgLy8gY2hp
bGRyZW4gdG8gZGV0ZXJtaW5lIHRoZSByb3cgaW5kZXggZm9yIHRoZSBjZWxsIGluIGl0LgotICAg
ICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
KnBhcmVudCkuY29sdW1uQ291bnQoKTsKLSAgICAgICAgaWYgKCFjb2x1bW5Db3VudCkKLSAgICAg
ICAgICAgIHJldHVybiByb3dSYW5nZTsKLQotICAgICAgICBjb25zdCBhdXRvJiBzaWJsaW5ncyA9
IHBhcmVudC0+Y2hpbGRyZW4oKTsKLSAgICAgICAgdW5zaWduZWQgY2hpbGRyZW5TaXplID0gc2li
bGluZ3Muc2l6ZSgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY2hpbGRyZW5T
aXplOyArK2spIHsKLSAgICAgICAgICAgIGlmIChzaWJsaW5nc1trXS5nZXQoKSA9PSB0aGlzKSB7
Ci0gICAgICAgICAgICAgICAgcm93UmFuZ2UuZmlyc3QgPSBrIC8gY29sdW1uQ291bnQ7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICAvLyBBUklBIDEuMSwgYXJpYS1yb3dzcGFuIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCBmb3IgY2Vs
bHMgYW5kIGdyaWRjZWxscyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZCBpbiBhIG5hdGl2ZSB0YWJs
ZS4KLSAgICAvLyBTbyB3ZSBzaG91bGQgY2hlY2sgZm9yIHRoYXQgYXR0cmlidXRlIGhlcmUuCi0g
ICAgcm93UmFuZ2Uuc2Vjb25kID0gYXhSb3dTcGFuV2l0aFJvd0luZGV4KHJvd1JhbmdlLmZpcnN0
KTsKLQotICAgIHJldHVybiByb3dSYW5nZTsKLX0KLQotdW5zaWduZWQgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkQ2VsbDo6YXhSb3dTcGFuV2l0aFJvd0luZGV4KHVuc2lnbmVkIHJvd0luZGV4KSBjb25z
dAotewotICAgIGludCByb3dTcGFuID0gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dTcGFu
KCk7Ci0gICAgaWYgKHJvd1NwYW4gPT0gLTEpIHsKLSAgICAgICAgYXV0byByYW5nZSA9IEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UoKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bWF4KHJhbmdlLnNlY29uZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpKTsKLSAgICB9Ci0KLSAg
ICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlm
ICghcGFyZW50KQotICAgICAgICByZXR1cm4gMTsKLSAgICAKLSAgICAvLyBTZXR0aW5nIHRoZSB2
YWx1ZSB0byAwIGluZGljYXRlcyB0aGF0IHRoZSBjZWxsIG9yIGdyaWRjZWxsIGlzIHRvIHNwYW4g
YWxsIHRoZSByZW1haW5pbmcgcm93cyBpbiB0aGUgcm93IGdyb3VwLgotICAgIGlmICghcm93U3Bh
bikgewotICAgICAgICAvLyByb3dTcGFuIGRlZmF1bHRzIHRvIDEuCi0gICAgICAgIHJvd1NwYW4g
PSAxOwotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50Um93R3JvdXAgPSB0
aGlzLT5wYXJlbnRSb3dHcm91cCgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgcm93IGdyb3Vw
IGlzIHRoZSBwYXJlbnQgdGFibGUsIHdlIHVzZSB0b3RhbCByb3cgY291bnQgdG8gY2FsY3VsYXRl
IHRoZSBzcGFuLgotICAgICAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVu
dFJvd0dyb3VwKSkKLSAgICAgICAgICAgICAgICByb3dTcGFuID0gZG93bmNhc3Q8QWNjZXNzaWJp
bGl0eVRhYmxlPigqcGFyZW50Um93R3JvdXApLnJvd0NvdW50KCkgLSByb3dJbmRleDsKLSAgICAg
ICAgICAgIC8vIE90aGVyd2lzZSwgd2UgaGF2ZSB0byBnZXQgdGhlIGluZGV4IGZvciB0aGUgY3Vy
cmVudCByb3cgd2l0aGluIHRoZSBwYXJlbnQgcm93IGdyb3VwLgotICAgICAgICAgICAgZWxzZSBp
ZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50KSkgewotICAgICAgICAgICAgICAg
IGNvbnN0IGF1dG8mIHNpYmxpbmdzID0gcGFyZW50Um93R3JvdXAtPmNoaWxkcmVuKCk7Ci0gICAg
ICAgICAgICAgICAgdW5zaWduZWQgcm93Q291bnQgPSBzaWJsaW5ncy5zaXplKCk7Ci0gICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IHJvd0NvdW50OyArK2spIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHNpYmxpbmdzW2tdLmdldCgpID09IHBhcmVudCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcm93U3BhbiA9IHJvd0NvdW50IC0gazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJvd1NwYW47
Ci19Ci0KLXN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdAotewotICAgIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlIHsgMCwgMSB9OwotICAgIEFYQ29yZU9iamVjdCogcGFy
ZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFwYXJlbnQpCi0gICAgICAg
IHJldHVybiBjb2x1bW5SYW5nZTsKLQotICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93
PigqcGFyZW50KQotICAgICAgICAmJiAhKGlzPEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkg
JiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4cG9zYWJsZSgpKSkK
LSAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlOwotCi0gICAgY29uc3QgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBzaWJsaW5ncyA9IHBhcmVudC0+Y2hpbGRyZW4oKTsKLSAgICB1bnNpZ25l
ZCBjaGlsZHJlblNpemUgPSBzaWJsaW5ncy5zaXplKCk7Ci0gICAgdW5zaWduZWQgaW5kZXhXaXRo
U3BhbiA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNoaWxkcmVuU2l6ZTsgKytr
KSB7Ci0gICAgICAgIGF1dG8qIGNoaWxkID0gc2libGluZ3Nba10uZ2V0KCk7Ci0gICAgICAgIGlm
IChjaGlsZCA9PSB0aGlzKSB7Ci0gICAgICAgICAgICBjb2x1bW5SYW5nZS5maXJzdCA9IGluZGV4
V2l0aFNwYW47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpbmRleFdp
dGhTcGFuICs9IGlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpjaGlsZCkgPyBzdGQ6Om1heChk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hpbGQpLmF4Q29sdW1uU3BhbigpLCAx
KSA6IDE7Ci0gICAgfQotICAgIAotICAgIC8vIEFSSUEgMS4xLCBhcmlhLWNvbHNwYW4gYXR0cmli
dXRlIGlzIGludGVuZGVkIGZvciBjZWxscyBhbmQgZ3JpZGNlbGxzIHdoaWNoIGFyZSBub3QgY29u
dGFpbmVkIGluIGEgbmF0aXZlIHRhYmxlLgotICAgIC8vIFNvIHdlIHNob3VsZCBjaGVjayBmb3Ig
dGhhdCBhdHRyaWJ1dGUgaGVyZS4KLSAgICBpbnQgY29sdW1uU3BhbiA9IEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmF4Q29sdW1uU3BhbigpOwotICAgIGlmIChjb2x1bW5TcGFuID09IC0xKSB7Ci0g
ICAgICAgIGF1dG8gcmFuZ2UgPSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJh
bmdlKCk7Ci0gICAgICAgIGNvbHVtblNwYW4gPSByYW5nZS5zZWNvbmQ7Ci0gICAgfQotCi0gICAg
Y29sdW1uUmFuZ2Uuc2Vjb25kID0gc3RkOjptYXgoY29sdW1uU3BhbiwgMSk7Ci0KLSAgICByZXR1
cm4gY29sdW1uUmFuZ2U7Ci19Ci0KIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlB
UklBR3JpZENlbGw6OnBhcmVudFJvd0dyb3VwKCkgY29uc3QKIHsKICAgICBmb3IgKEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7IHBhcmVudCA9IHBh
cmVudC0+cGFyZW50T2JqZWN0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgKaW5kZXggOGFjYWE5Yjk1NTYx
Li4xMGYyNDk2Y2IxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCkBAIC00MSwxNCArNDEsOCBAQCBwcml2
YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwoUmVuZGVyT2JqZWN0
Kik7CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGxJbnN0YW5jZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxv
Y2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0aGUgY2VsbC4KLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQs
IHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgLy8gUmV0dXJu
cyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIHRoZSBjZWxsLgotICAgIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdCBvdmVy
cmlkZTsKLQogICAgIEFjY2Vzc2liaWxpdHlUYWJsZSogcGFyZW50VGFibGUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRSb3dHcm91cCgpIGNvbnN0Owot
ICAgIHVuc2lnbmVkIGF4Um93U3BhbldpdGhSb3dJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7
CiAgICAgU3RyaW5nIHJlYWRPbmx5VmFsdWUoKSBjb25zdCBvdmVycmlkZTsKIH07IAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAppbmRleCA5ZjVhNTgxNmE5ZGYuLjJhNmJmZDdkMjhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0zMDg5LDcg
KzMwODksNyBAQCBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzZWxlY3RlZENlbGxzKCkKICAgICB9CiAKICAgICBpZiAoYXV0byog
YWN0aXZlRGVzY2VuZGFudCA9IHRoaXMtPmFjdGl2ZURlc2NlbmRhbnQoKSkgewotICAgICAgICBp
ZiAoYWN0aXZlRGVzY2VuZGFudC0+aXNUYWJsZUNlbGwoKSAmJiAhc2VsZWN0ZWRDZWxscy5jb250
YWlucyhhY3RpdmVEZXNjZW5kYW50KSkKKyAgICAgICAgaWYgKGFjdGl2ZURlc2NlbmRhbnQtPmlz
RXhwb3NlZFRhYmxlQ2VsbCgpICYmICFzZWxlY3RlZENlbGxzLmNvbnRhaW5zKGFjdGl2ZURlc2Nl
bmRhbnQpKQogICAgICAgICAgICAgc2VsZWN0ZWRDZWxscy5hcHBlbmQoYWN0aXZlRGVzY2VuZGFu
dCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCmluZGV4IDhiNGE1OGE0NzAwNy4uZjYwZjQxYWY1ZGEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApA
QCAtMTU0LDkgKzE1NCwxMSBAQCBwdWJsaWM6CiAgICAgQVhDb3JlT2JqZWN0KiBoZWFkZXJDb250
YWluZXIoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgaW50IGF4Q29sdW1uQ291
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgaW50IGF4Um93Q291bnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBWZWN0b3I8VmVjdG9yPEFY
SUQ+PiBzbG90R3JpZCgpIHsgcmV0dXJuIHsgfTsgfQogCiAgICAgLy8gVGFibGUgY2VsbCBzdXBw
b3J0LgogICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgaXNFeHBvc2VkVGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNw
YW4gb2YgdGhlIGNlbGwuCiAgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5k
ZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHsgMCwgMSB9OyB9CiAgICAgLy8gUmV0
dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIHRoZSBjZWxsLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3RJbnRlcmZhY2UuaAppbmRleCA2MTBmNzkzMDg3ZDMuLjM0MTBlOWExM2UyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTg4Nyw2ICs4ODcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBU
YWJsZSBjZWxsIHN1cHBvcnQuCiAgICAgdmlydHVhbCBib29sIGlzVGFibGVDZWxsKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0V4cG9zZWRUYWJsZUNlbGwoKSBjb25zdCA9IDA7CiAg
ICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRoZSBjZWxs
LgogICAgIHZpcnR1YWwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5kZXhSYW5n
ZSgpIGNvbnN0ID0gMDsKICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29s
dW1uIHNwYW4gb2YgdGhlIGNlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKaW5kZXggM2E3ZWZiZTU5MGM3Li41ZWQ4NjgwMDU4
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKIAotI2luY2x1ZGUgIkFYTG9nZ2VyLmgiCiAjaW5j
bHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCIKQEAgLTM3LDIxICszNiwx
NyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgogI2luY2x1ZGUgIkVsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJh
dG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJs
ZUNhcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFRhYmxlUm93RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKICNpbmNsdWRlICJSZW5kZXJU
YWJsZUNlbGwuaCIKLSNpbmNsdWRlICJSZW5kZXJUYWJsZVNlY3Rpb24uaCIKLSNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwotCiBBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZShSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJl
cikKICAgICAsIG1faGVhZGVyQ29udGFpbmVyKG51bGxwdHIpCkBAIC01OSw2ICs1NCwxMyBAQCBB
Y2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKQogewogfQogCitBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZShOb2Rl
JiBub2RlKQorICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChub2RlKQorICAgICwgbV9o
ZWFkZXJDb250YWluZXIobnVsbHB0cikKKyAgICAsIG1faXNFeHBvc2FibGUodHJ1ZSkKK3sKK30K
KwogQWNjZXNzaWJpbGl0eVRhYmxlOjp+QWNjZXNzaWJpbGl0eVRhYmxlKCkgPSBkZWZhdWx0Owog
CiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6aW5pdCgpCkBAIC03Miw2ICs3NCwxMSBAQCBSZWY8
QWNjZXNzaWJpbGl0eVRhYmxlPiBBY2Nlc3NpYmlsaXR5VGFibGU6OmNyZWF0ZShSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlUYWJs
ZShyZW5kZXJlcikpOwogfQogCitSZWY8QWNjZXNzaWJpbGl0eVRhYmxlPiBBY2Nlc3NpYmlsaXR5
VGFibGU6OmNyZWF0ZShOb2RlJiBub2RlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFj
Y2Vzc2liaWxpdHlUYWJsZShub2RlKSk7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpo
YXNOb25UYWJsZUFSSUFSb2xlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGFyaWFSb2xlQXR0cmli
dXRlKCkpIHsKQEAgLTg1LDExICs5Miw2IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpoYXNO
b25UYWJsZUFSSUFSb2xlKCkgY29uc3QKICAgICB9CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eVRh
YmxlOjppc0V4cG9zYWJsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faXNFeHBvc2FibGUgJiYg
KG1fcmVuZGVyZXIgfHwgaXM8SFRNTFRhYmxlRWxlbWVudD4obm9kZSgpKSk7Ci19Ci0KIEhUTUxU
YWJsZUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGFibGVFbGVtZW50KCkgY29uc3QKIHsK
ICAgICBpZiAoYXV0byogdGFibGVFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxUYWJsZUVs
ZW1lbnQ+KG5vZGUoKSkpCkBAIC0xMTMsMTEgKzExNSw4IEBAIEhUTUxUYWJsZUVsZW1lbnQqIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6dGFibGVFbGVtZW50KCkgY29uc3QKIAogYm9vbCBBY2Nlc3NpYmls
aXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcmVuZGVyZXIpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8qIG9iamVjdENhY2hlID0gYXhPYmplY3RD
YWNoZSgpOwotICAgIGlmICghb2JqZWN0Q2FjaGUpCisgICAgV2Vha1B0ciBjYWNoZSA9IGF4T2Jq
ZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBEbyBub3QgY29uc2lkZXIgaXQgYSBkYXRhIHRhYmxlIGlmIGl0IGhhcyBhIG5vbi10YWJs
ZSBBUklBIHJvbGUuCkBAIC0xMzAsMTQgKzEyOSwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgIGlmIChub2RlKCkgJiYgbm9kZSgpLT5oYXNFZGl0
YWJsZVN0eWxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFpczxSZW5kZXJU
YWJsZT4oKm1fcmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAvLyBUaGlz
IGVtcGxveXMgYSBoZXVyaXN0aWMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgdGFibGUgc2hvdWxkIGFw
cGVhci4KICAgICAvLyBPbmx5ICJkYXRhIiB0YWJsZXMgc2hvdWxkIGJlIGV4cG9zZWQgYXMgdGFi
bGVzLgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoZXJlIGlzIG5vIGdvb2Qgd2F5IHRvIGRldGVy
bWluZSB0aGUgZGlmZmVyZW5jZQogICAgIC8vIGJldHdlZW4gYSAibGF5b3V0IiB0YWJsZSBhbmQg
YSAiZGF0YSIgdGFibGUuCi0gICAgaWYgKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlRWxlbWVudCA9
IHRoaXMtPnRhYmxlRWxlbWVudCgpKSB7CisgICAgaWYgKFdlYWtQdHIgdGFibGVFbGVtZW50ID0g
dGhpcy0+dGFibGVFbGVtZW50KCkpIHsKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBjYXB0aW9u
IGVsZW1lbnQsIHN1bW1hcnksIFRIRUFELCBvciBURk9PVCBzZWN0aW9uLCBpdCdzIG1vc3QgY2Vy
dGFpbmx5IGEgZGF0YSB0YWJsZS4KICAgICAgICAgaWYgKCF0YWJsZUVsZW1lbnQtPnN1bW1hcnko
KS5pc0VtcHR5KCkKICAgICAgICAgICAgIHx8ICh0YWJsZUVsZW1lbnQtPnRIZWFkKCkgJiYgdGFi
bGVFbGVtZW50LT50SGVhZCgpLT5yZW5kZXJlcigpKQpAQCAtMTcwLDE2ICsxNjYsMjAgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICBpZiAoYXhSb3dD
b3VudCA9PSAtMSB8fCBheFJvd0NvdW50ID4gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBSZW5kZXJUYWJsZSYgdGFibGUgPSBkb3duY2FzdDxSZW5kZXJUYWJsZT4oKm1fcmVuZGVyZXIp
OworICAgIFdlYWtQdHIgcmVuZGVyVGFibGUgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGFibGU+
KG1fcmVuZGVyZXIuZ2V0KCkpOworICAgIC8vIFRoZSBmb2xsb3dpbmcgY2hlY2tzIG9ubHkgYXBw
bHkgdG8gUmVuZGVyVGFibGVzLiBJZiB3ZSBkb24ndCBoYXZlIGEgUmVuZGVyVGFibGUgKGUuZy4g
YmVjYXVzZSBhIENTUyBkaXNwbGF5IHZhbHVlIGNhdXNlZCBhIGRpZmZlcmVudCByZW5kZXJlciwg
b3Igbm8gcmVuZGVyZXIgdG8gYmUgZ2VuZXJhdGVkKSwgYXNzdW1lIHRoaXMgaXMgYSBkYXRhIHRh
YmxlLgorICAgIGlmICghcmVuZGVyVGFibGUpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAg
Ly8gZ28gdGhyb3VnaCB0aGUgY2VsbCdzIGFuZCBjaGVjayBmb3IgdGVsbC10YWxlIHNpZ25zIG9m
ICJkYXRhIiB0YWJsZSBzdGF0dXMKICAgICAvLyBjZWxscyBoYXZlIGJvcmRlcnMsIG9yIHVzZSBh
dHRyaWJ1dGVzIGxpa2UgaGVhZGVycywgYWJiciwgc2NvcGUgb3IgYXhpcwotICAgIHRhYmxlLnJl
Y2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGZpcnN0Qm9k
eSA9IHRhYmxlLmZpcnN0Qm9keSgpOworICAgIHJlbmRlclRhYmxlLT5yZWNhbGNTZWN0aW9uc0lm
TmVlZGVkKCk7CisgICAgV2Vha1B0ciBmaXJzdEJvZHkgPSByZW5kZXJUYWJsZS0+Zmlyc3RCb2R5
KCk7CiAgICAgaWYgKCFmaXJzdEJvZHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IElmIHRoZSB0Ym9keSBoYXMgYW55IG5vbi1ncm91cCByb2xlLCB0aGVuIGRvbid0IG1ha2UgdGhp
cyBhIGRhdGEgdGFibGUuIFRoZSBhdXRob3IgcHJvYmFibHkgd2FudHMgdG8gdXNlIHRoZSByb2xl
IGluc2lkZSB0aGUgPHRib2R5Pi4KLSAgICBpZiAoYXV0byogdG9wU2VjdGlvbiA9IG9iamVjdENh
Y2hlLT5nZXRPckNyZWF0ZSh0YWJsZS50b3BTZWN0aW9uKCkpKSB7CisgICAgaWYgKGF1dG8qIHRv
cFNlY3Rpb24gPSBjYWNoZS0+Z2V0T3JDcmVhdGUocmVuZGVyVGFibGUtPnRvcFNlY3Rpb24oKSkp
IHsKICAgICAgICAgYXV0byByb2xlID0gdG9wU2VjdGlvbi0+cm9sZVZhbHVlKCk7CiAgICAgICAg
IGlmICghdG9wU2VjdGlvbi0+aXNHcm91cCgpICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6
OlVua25vd24gJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3JlZCkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlU
YWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAg
ICAvLyBTdG9yZSB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdGFibGUgdG8gY2hlY2sgYWdh
aW5zdCBjZWxsJ3MgYmFja2dyb3VuZCBjb2xvcnMuCi0gICAgY29uc3QgUmVuZGVyU3R5bGUmIHRh
YmxlU3R5bGUgPSB0YWJsZS5zdHlsZSgpOworICAgIGNvbnN0IFJlbmRlclN0eWxlJiB0YWJsZVN0
eWxlID0gcmVuZGVyVGFibGUtPnN0eWxlKCk7CiAgICAgQ29sb3IgdGFibGVCR0NvbG9yID0gdGFi
bGVTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
OwogICAgIAogICAgIC8vIGNoZWNrIGVub3VnaCBvZiB0aGUgY2VsbHMgdG8gZmluZCBpZiB0aGUg
dGFibGUgbWF0Y2hlcyBvdXIgY3JpdGVyaWEKQEAgLTMwMCw3ICszMDAsNyBAQCBib29sIEFjY2Vz
c2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgICAgICAgICAgLy8gSWYgdGhl
IGNlbGwgaGFzIGEgZGlmZmVyZW50IGNvbG9yIGZyb20gdGhlIHRhYmxlIGFuZCB0aGVyZSBpcyBj
ZWxsIHNwYWNpbmcsCiAgICAgICAgICAgICAvLyB0aGVuIGl0IGlzIHByb2JhYmx5IGEgZGF0YSB0
YWJsZSBjZWxsIChzcGFjaW5nIGFuZCBjb2xvcnMgdGFrZSB0aGUgcGxhY2Ugb2YgYm9yZGVycyku
CiAgICAgICAgICAgICBDb2xvciBjZWxsQ29sb3IgPSByZW5kZXJTdHlsZS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgICAgICAgICAgaWYgKHRh
YmxlLmhCb3JkZXJTcGFjaW5nKCkgPiAwICYmIHRhYmxlLnZCb3JkZXJTcGFjaW5nKCkgPiAwCisg
ICAgICAgICAgICBpZiAocmVuZGVyVGFibGUtPmhCb3JkZXJTcGFjaW5nKCkgPiAwICYmIHJlbmRl
clRhYmxlLT52Qm9yZGVyU3BhY2luZygpID4gMAogICAgICAgICAgICAgICAgICYmIHRhYmxlQkdD
b2xvciAhPSBjZWxsQ29sb3IgJiYgY2VsbENvbG9yLmFscGhhQnl0ZSgpICE9IDEpIC8vIEZJWE1F
IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTM3KTogVGhpcyBj
b21wYXJpc29uIHRvIDEgaXMgbGlrZWx5IGluY29ycmVjdC4gSXQgbGlrZWx5IHNob3VsZCBiZSBj
aGVja2luZyAhY2VsbENvbG9yLmlzT3BhcXVlKCkuCiAgICAgICAgICAgICAgICAgKytiYWNrZ3Jv
dW5kRGlmZmVyZW5jZUNlbGxDb3VudDsKICAgICAgICAgICAgIApAQCAtMzYxLDE1ICszNjEsMTAg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKKy8vIFRoZSBmb2xsb3dpbmcgaXMgYSBoZXVyaXN0aWMgdXNlZCB0byBk
ZXRlcm1pbmUgaWYgYSA8dGFibGU+IHNob3VsZCBiZSBleHBvc2VkIGFzIGFuIEFYVGFibGUuCisv
LyBUaGUgZ29hbCBpcyB0byBvbmx5IHNob3cgImRhdGEiIHRhYmxlcy4KIGJvb2wgQWNjZXNzaWJp
bGl0eVRhYmxlOjpjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkg
Y29uc3QKIHsKLSAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGEgaGV1cmlzdGljIHVzZWQgdG8gZGV0
ZXJtaW5lIGlmIGEKLSAgICAvLyA8dGFibGU+IHNob3VsZCBiZSBleHBvc2VkIGFzIGFuIEFYVGFi
bGUuIFRoZSBnb2FsCi0gICAgLy8gaXMgdG8gb25seSBzaG93ICJkYXRhIiB0YWJsZXMuCi0KLSAg
ICBpZiAoIW1fcmVuZGVyZXIgJiYgIWlzPEhUTUxUYWJsZUVsZW1lbnQ+KG5vZGUoKSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQogICAgIC8vIElmIGl0IGhhcyBhIG5vbi10YWJsZSBBUklBIHJv
bGUsIGl0IHNob3VsZG4ndCBiZSBleHBvc2VkIGFzIGEgdGFibGUuCiAgICAgaWYgKGhhc05vblRh
YmxlQVJJQVJvbGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzc3LDkgKzM3MiwxMiBA
QCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlzVGFibGVFeHBvc2FibGVUaHJvdWdo
QWNjZXNzaWJpbGl0eSgpIGNvbnN0CiAgICAgcmV0dXJuIGlzRGF0YVRhYmxlKCk7CiB9CiAKLQog
dm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OnJlY29tcHV0ZUlzRXhwb3NhYmxlKCkKIHsKKyAgICAv
LyBNYWtlIHN1cmUgY2hpbGRyZW4gYXJlIHVwLXRvLWRhdGUsIGJlY2F1c2UgaWYgd2UgZG8gZW5k
IHVwIGNoYW5naW5nIGlzLWV4cG9zZWQgc3RhdGUsIHdlIHdhbnQgdG8gbWFrZQorICAgIC8vIHN1
cmUgdXBkYXRlQ2hpbGRyZW5Sb2xlcyBpdGVyYXRlcyBvdmVyIHRob3NlIGNoaWxkcmVuIGJlZm9y
ZSB0aGV5IGNoYW5nZS4KKyAgICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CisKICAgICBi
b29sIHByZXZpb3VzbHlFeHBvc2FibGUgPSBtX2lzRXhwb3NhYmxlOwogICAgIG1faXNFeHBvc2Fi
bGUgPSBjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCk7CiAgICAg
aWYgKHByZXZpb3VzbHlFeHBvc2FibGUgIT0gbV9pc0V4cG9zYWJsZSkgewpAQCAtMzk0LDYgKzM5
MiwyNCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6cmVjb21wdXRlSXNFeHBvc2FibGUoKQog
ICAgIH0KIH0KIAorVmVjdG9yPFZlY3RvcjxBWElEPj4gQWNjZXNzaWJpbGl0eVRhYmxlOjpzbG90
R3JpZCgpCit7CisgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOworICAgIHJldHVybiBt
X3Nsb3RHcmlkOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6c2V0U2xvdEdyaWREaXJ0
eSgpCit7CisgICAgLy8gQmVjYXVzZSB0aGUgc2xvdC1ncmlkIGlzIChuZWNlc3NhcmlseSkgY29t
cHV0ZWQgaW4gY29uanVuY3Rpb24gd2l0aCBjaGlsZHJlbiwgbWFyaworICAgIC8vIHRoZSBjaGls
ZHJlbiBhcyBkaXJ0eSBieSBjbGVhcmluZyB0aGVtLgorICAgIC8vCisgICAgLy8gSXQncyBuZWNl
c3NhcnkgdG8gY29tcHV0ZSB0aGUgc2xvdC1ncmlkIHRvZ2V0aGVyIHdpdGggY2hpbGRyZW4gYmVj
YXVzZSB0aGV5IGFyZSBib3RoCisgICAgLy8gaW5mbHVlbmNlZCBieSB0aGUgc2FtZSBmYWN0b3Jz
LiBGb3IgZXhhbXBsZSwgaWYgYHNldFNsb3RHcmlkRGlydHlgIGlzIGNhbGxlZCBiZWNhdXNlCisg
ICAgLy8gYSBjaGlsZCBpbmNyZWFzZWQgaW4gY29sdW1uIHNwYW4sIHRoYXQgbWF5IGFsc28gcmVz
dWx0IGluIG1vcmUgY29sdW1uIGNoaWxkcmVuIGJlaW5nCisgICAgLy8gYWRkZWQgaWYgdGhhdCBj
b2x1bW4gc3BhbiBjaGFuZ2UgaW5jcmVhc2VkIHRoZSAid2lkdGgiIG9mIHRoZSB0YWJsZS4KKyAg
ICBjbGVhckNoaWxkcmVuKCk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjp1cGRhdGVD
aGlsZHJlblJvbGVzKCkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHJvdyA6IG1fcm93cykgewpA
QCAtNDA4LDYgKzQyNCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNoaWxkcmVu
KCkKICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjbGVhckNoaWxkcmVuKCk7CiAgICAg
bV9yb3dzLmNsZWFyKCk7CiAgICAgbV9jb2x1bW5zLmNsZWFyKCk7CisgICAgbV9zbG90R3JpZC5j
bGVhcigpOwogCiAgICAgaWYgKG1faGVhZGVyQ29udGFpbmVyKSB7CiAgICAgICAgIG1faGVhZGVy
Q29udGFpbmVyLT5kZXRhY2hGcm9tUGFyZW50KCk7CkBAIC00MjEsNDIgKzQzOCwyMTggQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKICAgICAgICAgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICAKLSAgICBBU1NFUlQoIW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7IAotICAgIAorCisgICAgQVNT
RVJUKCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOwogICAgIG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9
IHRydWU7Ci0gICAgaWYgKCFpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIoKSkpCisgICAgV2Vha1B0
ciBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgUmVuZGVyVGFibGUmIHRhYmxlID0gZG93bmNhc3Q8UmVuZGVyVGFibGU+
KCptX3JlbmRlcmVyKTsKLSAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgYXZhaWxhYmxlIHNlY3Rp
b25zIHRvIHB1bGwgb3V0IHRoZSByb3dzIGFuZCBhZGQgdGhlbSBhcyBjaGlsZHJlbi4KLSAgICB0
YWJsZS5yZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7Ci0gICAgCi0gICAgaWYgKEhUTUxUYWJsZUVs
ZW1lbnQqIHRhYmxlRWxlbWVudCA9IHRoaXMtPnRhYmxlRWxlbWVudCgpKSB7Ci0gICAgICAgIGlm
IChhdXRvIGNhcHRpb24gPSB0YWJsZUVsZW1lbnQtPmNhcHRpb24oKSkgewotICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogYXhDYXB0aW9uID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNy
ZWF0ZShjYXB0aW9uLmdldCgpKTsKLSAgICAgICAgICAgIGFkZENoaWxkKGF4Q2FwdGlvbiwgRGVz
Y2VuZElmSWdub3JlZDo6Tm8pOworCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRo
ZSAiZm9ybWluZyBhIHRhYmxlIiBhbGdvcml0aG0gZm9yIGRldGVybWluaW5nCisgICAgLy8gdGhl
IGNvcnJlY3QgY2VsbCBwb3NpdGlvbnMgYW5kIHNwYW5zIChhbmQgc3RvcmluZyB0aG9zZSBpbiBt
X3Nsb3RHcmlkIGZvciBsYXRlciB1c2UpLgorICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL3RhYmxlcy5odG1sI2Zvcm1pbmctYS10YWJsZQorCisgICAgLy8gU3Rl
cCAxLgorICAgIHVuc2lnbmVkIHhXaWR0aCA9IDA7CisgICAgLy8gU3RlcCAyLgorICAgIHVuc2ln
bmVkIHlIZWlnaHQgPSAwOworICAgIC8vIFN0ZXAgMzogTGV0IHBlbmRpbmcgdGZvb3QgZWxlbWVu
dHMgYmUgYSBsaXN0IG9mIHRmb290IGVsZW1lbnRzLCBpbml0aWFsbHkgZW1wdHkuCisgICAgVmVj
dG9yPFJlZjxFbGVtZW50Pj4gcGVuZGluZ1Rmb290RWxlbWVudHM7CisgICAgLy8gU3RlcCAxMC4K
KyAgICB1bnNpZ25lZCB5Q3VycmVudCA9IDA7CisgICAgUmVmUHRyPEhUTUxUYWJsZUNhcHRpb25F
bGVtZW50PiBjYXB0aW9uRWxlbWVudDsKKworICAgIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVj
dCo+IGFwcGVuZGVkUm93czsKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS90YWJsZXMuaHRtbCNhbGdvcml0aG0tZm9yLXByb2Nlc3Npbmctcm93cworICAgIGF1
dG8gcHJvY2Vzc1JvdyA9IFsmLCB0aGlzXSAoQWNjZXNzaWJpbGl0eVRhYmxlUm93KiByb3cpIHsK
KyAgICAgICAgaWYgKCFyb3cgfHwgYXBwZW5kZWRSb3dzLmNvbnRhaW5zKHJvdykpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGFwcGVuZGVkUm93cy5hZGQocm93KTsKKyAgICAgICAgLy8g
U3RlcCAxOiBJZiB5aGVpZ2h0IGlzIGVxdWFsIHRvIHljdXJyZW50LCB0aGVuIGluY3JlYXNlIHlo
ZWlnaHQgYnkgMS4gKHljdXJyZW50IG11c3QgbmV2ZXIgYmUgZ3JlYXRlciB0aGFuIHloZWlnaHQu
KQorICAgICAgICBpZiAoeUhlaWdodCA8PSB5Q3VycmVudCkKKyAgICAgICAgICAgIHlIZWlnaHQg
PSB5Q3VycmVudCArIDE7CisKKyAgICAgICAgLy8gU3RlcCAyLgorICAgICAgICB1bnNpZ25lZCB4
Q3VycmVudCA9IDA7CisgICAgICAgIC8vIFN0ZXAgMzogUnVuIHRoZSBhbGdvcml0aG0gZm9yIGdy
b3dpbmcgZG93bndhcmQtZ3Jvd2luZyBjZWxscyAobm90IGltcGxlbWVudGVkKS4KKworICAgICAg
ICAvLyBTdGVwIDQ6IElmIHRoZSB0ciBlbGVtZW50IGJlaW5nIHByb2Nlc3NlZCBoYXMgbm8gdGQg
b3IgdGggZWxlbWVudCBjaGlsZHJlbiwgdGhlbiBpbmNyZWFzZSB5Y3VycmVudCBieSAxLCBhYm9y
dCB0aGlzIHNldCBvZiBzdGVwcywgYW5kIHJldHVybiB0byB0aGUgYWxnb3JpdGhtIGFib3ZlLgor
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcm93LT5jaGlsZHJlbigpKSB7CisgICAg
ICAgICAgICBhdXRvKiBjdXJyZW50Q2VsbCA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsPihjaGlsZC5nZXQoKSk7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRDZWxsKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvLyBTdGVwIDY6IFdoaWxl
IHRoZSBzbG90IHdpdGggY29vcmRpbmF0ZSAoeGN1cnJlbnQsIHljdXJyZW50KSBhbHJlYWR5IGhh
cyBhIGNlbGwgYXNzaWduZWQgdG8gaXQsIGluY3JlYXNlIHhjdXJyZW50IGJ5IDEuCisgICAgICAg
ICAgICBlbnN1cmVSb3dBbmRDb2x1bW4oeUN1cnJlbnQsIHhDdXJyZW50KTsKKyAgICAgICAgICAg
IHdoaWxlIChtX3Nsb3RHcmlkW3lDdXJyZW50XVt4Q3VycmVudF0uaXNWYWxpZCgpKSB7CisgICAg
ICAgICAgICAgICAgeEN1cnJlbnQgKz0gMTsKKyAgICAgICAgICAgICAgICBlbnN1cmVSb3dBbmRD
b2x1bW4oeUN1cnJlbnQsIHhDdXJyZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8v
IFN0ZXAgNzogSWYgeGN1cnJlbnQgaXMgZXF1YWwgdG8geHdpZHRoLCBpbmNyZWFzZSB4d2lkdGgg
YnkgMS4gKHhjdXJyZW50IGlzIG5ldmVyIGdyZWF0ZXIgdGhhbiB4d2lkdGguKQorICAgICAgICAg
ICAgaWYgKHhDdXJyZW50ID49IHhXaWR0aCkKKyAgICAgICAgICAgICAgICB4V2lkdGggPSB4Q3Vy
cmVudCArIDE7CisgICAgICAgICAgICAvLyBTdGVwIDg6IElmIHRoZSBjdXJyZW50IGNlbGwgaGFz
IGEgY29sc3BhbiBhdHRyaWJ1dGUsIHRoZW4gcGFyc2UgdGhhdCBhdHRyaWJ1dGUncyB2YWx1ZSwg
YW5kIGxldCBjb2xzcGFuIGJlIHRoZSByZXN1bHQuCisgICAgICAgICAgICB1bnNpZ25lZCBjb2xT
cGFuID0gY3VycmVudENlbGwtPmNvbFNwYW4oKTsKKyAgICAgICAgICAgIC8vIFN0ZXAgOTogSWYg
dGhlIGN1cnJlbnQgY2VsbCBoYXMgYSByb3dzcGFuIGF0dHJpYnV0ZSwgdGhlbiBwYXJzZSB0aGF0
IGF0dHJpYnV0ZSdzIHZhbHVlLCBhbmQgbGV0IHJvd3NwYW4gYmUgdGhlIHJlc3VsdC4KKyAgICAg
ICAgICAgIHVuc2lnbmVkIHJvd1NwYW4gPSBjdXJyZW50Q2VsbC0+cm93U3BhbigpOworCisgICAg
ICAgICAgICAvLyBTdGVwIDEwOiBJZiByb3dzcGFuIGlzIHplcm8gYW5kIHRoZSB0YWJsZSBlbGVt
ZW50J3Mgbm9kZSBkb2N1bWVudCBpcyBub3Qgc2V0IHRvIHF1aXJrcyBtb2RlLCB0aGVuIGxldAor
ICAgICAgICAgICAgLy8gY2VsbCBncm93cyBkb3dud2FyZCBiZSB0cnVlLCBhbmQgc2V0IHJvd3Nw
YW4gdG8gMS4gT3RoZXJ3aXNlLCBsZXQgY2VsbCBncm93cyBkb3dud2FyZCBiZSBmYWxzZS4KKyAg
ICAgICAgICAgIC8vIE5PVEU6IFdlIGludGVudGlvbmFsbHkgZG9uJ3QgaW1wbGVtZW50IHRoaXMg
c3RlcCBiZWNhdXNlIHRoZSByZW5kZXJpbmcgY29kZSBkb2Vzbid0LCBzbyBpbXBsZW1lbnRpbmcg
aXQKKyAgICAgICAgICAgIC8vIHdvdWxkIGNhdXNlIEFYIHRvIG5vdCBtYXRjaCB0aGUgdmlzdWFs
IHN0YXRlIG9mIHRoZSBwYWdlLgorCisgICAgICAgICAgICAvLyBTdGVwIDExOiBJZiB4d2lkdGgg
PCB4Y3VycmVudCtjb2xzcGFuLCB0aGVuIGxldCB4d2lkdGggYmUgeGN1cnJlbnQrY29sc3Bhbi4K
KyAgICAgICAgICAgIGlmICh4V2lkdGggPCB4Q3VycmVudCArIGNvbFNwYW4pCisgICAgICAgICAg
ICAgICAgeFdpZHRoID0geEN1cnJlbnQgKyBjb2xTcGFuOworCisgICAgICAgICAgICAvLyBTdGVw
IDEyOiBJZiB5aGVpZ2h0IDwgeWN1cnJlbnQrcm93c3BhbiwgdGhlbiBsZXQgeWhlaWdodCBiZSB5
Y3VycmVudCtyb3dzcGFuLgorICAgICAgICAgICAgaWYgKHlIZWlnaHQgPCB5Q3VycmVudCArIHJv
d1NwYW4pCisgICAgICAgICAgICAgICAgeUhlaWdodCA9IHlDdXJyZW50ICsgcm93U3BhbjsKKwor
ICAgICAgICAgICAgLy8gU3RlcCAxMzogTGV0IHRoZSBzbG90cyB3aXRoIGNvb3JkaW5hdGVzICh4
LCB5KSBzdWNoIHRoYXQgeGN1cnJlbnQg4omkIHggPCB4Y3VycmVudCtjb2xzcGFuIGFuZAorICAg
ICAgICAgICAgLy8geWN1cnJlbnQg4omkIHkgPCB5Y3VycmVudCtyb3dzcGFuIGJlIGNvdmVyZWQg
YnkgYSBuZXcgY2VsbCBjLCBhbmNob3JlZCBhdCAoeGN1cnJlbnQsIHljdXJyZW50KSwKKyAgICAg
ICAgICAgIC8vIHdoaWNoIGhhcyB3aWR0aCBjb2xzcGFuIGFuZCBoZWlnaHQgcm93c3BhbiwgY29y
cmVzcG9uZGluZyB0byB0aGUgY3VycmVudCBjZWxsIGVsZW1lbnQuCisgICAgICAgICAgICBjdXJy
ZW50Q2VsbC0+c2V0Um93SW5kZXgoeUN1cnJlbnQpOworICAgICAgICAgICAgY3VycmVudENlbGwt
PnNldENvbHVtbkluZGV4KHhDdXJyZW50KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgeSA9
IHlDdXJyZW50OyB5IDwgeUN1cnJlbnQgKyByb3dTcGFuOyB5KyspIHsKKyAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIHggPSB4Q3VycmVudDsgeCA8IHhDdXJyZW50ICsgY29sU3BhbjsgeCsr
KSB7CisgICAgICAgICAgICAgICAgICAgIGVuc3VyZVJvd0FuZENvbHVtbih5LCB4KTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9zbG90R3JpZFt5XVt4XSA9IGN1cnJlbnRDZWxsLT5vYmplY3RJRCgp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3Rl
cCAxNDogSWYgY2VsbCBncm93cyBkb3dud2FyZCBpcyB0cnVlLCB0aGVuIGFkZCB0aGUgdHVwbGUg
e2MsIHhjdXJyZW50LCBjb2xzcGFufSB0byB0aGUKKyAgICAgICAgICAgIC8vIGxpc3Qgb2YgZG93
bndhcmQtZ3Jvd2luZyBjZWxscy4gTm90IGltcGxlbWVudGVkLgorCisgICAgICAgICAgICAvLyBT
dGVwIDE1LgorICAgICAgICAgICAgeEN1cnJlbnQgKz0gY29sU3BhbjsKKworICAgICAgICAgICAg
Ly8gU3RlcCAxNiBoYW5kbGVkIGJlbG93LgorICAgICAgICAgICAgLy8gU3RlcCAxNyBhbmQgMTg6
IExldCBjdXJyZW50IGNlbGwgYmUgdGhlIG5leHQgdGQgb3IgdGggZWxlbWVudCBjaGlsZCBpbiB0
aGUgdHIgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQuIChUaGlzIGlzIGltcGxlbWVudGVkIGJ5IGFs
bG93aW5nIHRoZSBsb29wIHRvIGNvbnRpbnVlIGFib3ZlKS4KICAgICAgICAgfQotICAgIH0KIAot
ICAgIHVuc2lnbmVkIG1heENvbHVtbkNvdW50ID0gMDsKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24q
IGZvb3RlciA9IHRhYmxlLmZvb3RlcigpOwotICAgIAotICAgIGZvciAoUmVuZGVyVGFibGVTZWN0
aW9uKiB0YWJsZVNlY3Rpb24gPSB0YWJsZS50b3BTZWN0aW9uKCk7IHRhYmxlU2VjdGlvbjsgdGFi
bGVTZWN0aW9uID0gdGFibGUuc2VjdGlvbkJlbG93KHRhYmxlU2VjdGlvbiwgU2tpcEVtcHR5U2Vj
dGlvbnMpKSB7Ci0gICAgICAgIGlmICh0YWJsZVNlY3Rpb24gPT0gZm9vdGVyKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGFkZENoaWxkcmVuRnJvbVNlY3Rpb24odGFibGVTZWN0aW9u
LCBtYXhDb2x1bW5Db3VudCk7CisgICAgICAgIC8vIE5vdCBzcGVjaWZpZWQ6IHVwZGF0ZSBzb21l
IGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4KKyAgICAgICAgbV9yb3dzLmFwcGVuZChyb3cpOwor
ICAgICAgICByb3ctPnNldFJvd0luZGV4KHlDdXJyZW50KTsKKyAgICAgICAgYWRkQ2hpbGQocm93
KTsKKworICAgICAgICAvLyBTdGVwIDE2OiBJZiBjdXJyZW50IGNlbGwgaXMgdGhlIGxhc3QgdGQg
b3IgdGggZWxlbWVudCBjaGlsZCBpbiB0aGUgdHIgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQsIHRo
ZW4gaW5jcmVhc2UgeWN1cnJlbnQgYnkgMSwgYWJvcnQgdGhpcyBzZXQgb2Ygc3RlcHMsIGFuZCBy
ZXR1cm4gdG8gdGhlIGFsZ29yaXRobSBhYm92ZS4KKyAgICAgICAgeUN1cnJlbnQgKz0gMTsKKyAg
ICB9OworICAgIGF1dG8gbmVlZHNUb0Rlc2NlbmQgPSBbJmFwcGVuZGVkUm93c10gKEFYQ29yZU9i
amVjdCYgYXhPYmplY3QpIHsKKyAgICAgICAgcmV0dXJuICghYXhPYmplY3QuaXNUYWJsZVJvdygp
IHx8ICFheE9iamVjdC5ub2RlKCkpCisgICAgICAgICAgICAmJiAhYXBwZW5kZWRSb3dzLmNvbnRh
aW5zKGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihheE9iamVjdCkpOworICAg
IH07CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKEFYQ29yZU9iamVjdCopPiBwcm9jZXNzUm93RGVz
Y2VuZGluZ0lmTmVlZGVkID0gWyZdIChBWENvcmVPYmplY3QqIGF4T2JqZWN0KSB7CisgICAgICAg
IGlmICghYXhPYmplY3QpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8vIERlc2NlbmQg
cGFzdCBhbm9ueW1vdXMgcmVuZGVyZXJzIGFuZCBub24tcm93cy4KKyAgICAgICAgaWYgKG5lZWRz
VG9EZXNjZW5kKCpheE9iamVjdCkpIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hp
bGQgOiBheE9iamVjdC0+Y2hpbGRyZW4oKSkKKyAgICAgICAgICAgICAgICBwcm9jZXNzUm93RGVz
Y2VuZGluZ0lmTmVlZGVkKGNoaWxkLmdldCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBwcm9jZXNzUm93KGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KGF4T2Jq
ZWN0KSk7CisgICAgfTsKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS90YWJsZXMuaHRtbCNhbGdvcml0aG0tZm9yLWVuZGluZy1hLXJvdy1ncm91cAorICAgIGF1
dG8gZW5kUm93R3JvdXAgPSBbJl0gKCkgeworICAgICAgICBpZiAoeUN1cnJlbnQgPCB5SGVpZ2h0
KQorICAgICAgICAgICAgeUN1cnJlbnQgPSB5SGVpZ2h0OworICAgIH07CisgICAgLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjYWxnb3JpdGhtLWZv
ci1wcm9jZXNzaW5nLXJvdy1ncm91cHMKKyAgICBhdXRvIHByb2Nlc3NSb3dHcm91cCA9IFsmXSAo
RWxlbWVudCYgc2VjdGlvbkVsZW1lbnQpIHsKKyAgICAgICAgLy8gU3RlcCAxOiBMZXQgeXN0YXJ0
IGhhdmUgdGhlIHZhbHVlIG9mIHloZWlnaHQuIE5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mg
b25seSB1c2VmdWwgZm9yIHN0ZXAgMywgd2hpY2ggd2Ugc2tpcC4KKworICAgICAgICAvLyBTdGVw
IDI6IEZvciBlYWNoIHRyIGVsZW1lbnQgdGhhdCBpcyBhIGNoaWxkIG9mIHRoZSBlbGVtZW50IGJl
aW5nIHByb2Nlc3NlZCwKKyAgICAgICAgLy8gaW4gdHJlZSBvcmRlciwgcnVuIHRoZSBhbGdvcml0
aG0gZm9yIHByb2Nlc3Npbmcgcm93cy4KKyAgICAgICAgaWYgKFJlZlB0ciB0YWJsZVNlY3Rpb24g
PSBkeW5hbWljRG93bmNhc3Q8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+KHNlY3Rpb25FbGVtZW50
KSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiByb3cgOiBjaGlsZHJlbk9mVHlwZTxIVE1MVGFi
bGVSb3dFbGVtZW50PigqdGFibGVTZWN0aW9uKSkgeworICAgICAgICAgICAgICAgIFJlZlB0ciB0
YWJsZVJvdyA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KGNhY2hlLT5n
ZXRPckNyZWF0ZSgmcm93KSk7CisgICAgICAgICAgICAgICAgcHJvY2Vzc1Jvdyh0YWJsZVJvdy5n
ZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoUmVmUHRyIHNlY3Rpb25B
eE9iamVjdCA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmc2VjdGlvbkVsZW1lbnQpKSB7CisgICAgICAg
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG5vZGVIYXNSb2xlKCZzZWN0aW9uRWxlbWVudCwgInJv
d2dyb3VwIl9zKSwgInByb2Nlc3NSb3dHcm91cCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCBu
YXRpdmUgdGFibGUgc2VjdGlvbiBlbGVtZW50cywgb3Igcm9sZT1yb3dncm91cCBlbGVtZW50cyIp
OworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHNlY3Rpb25BeE9iamVjdC0+
Y2hpbGRyZW4oKSkKKyAgICAgICAgICAgICAgICBwcm9jZXNzUm93RGVzY2VuZGluZ0lmTmVlZGVk
KGNoaWxkLmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICAvLyBTdGVwIDM6IElmIHloZWlnaHQg
PiB5c3RhcnQsIHRoZW4gbGV0IGFsbCB0aGUgbGFzdCByb3dzIGluIHRoZSB0YWJsZSBmcm9tIHk9
eXN0YXJ0IHRvIHk9eWhlaWdodC0xCisgICAgICAgIC8vIGZvcm0gYSBuZXcgcm93IGdyb3VwLCBh
bmNob3JlZCBhdCB0aGUgc2xvdCB3aXRoIGNvb3JkaW5hdGUgKDAsIHlzdGFydCksIHdpdGggaGVp
Z2h0IHloZWlnaHQteXN0YXJ0LAorICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbGVt
ZW50IGJlaW5nIHByb2Nlc3NlZC4gTm90IGltcGxlbWVudGVkLgorCisgICAgICAgIC8vIFN0ZXAg
NDogUnVuIHRoZSBhbGdvcml0aG0gZm9yIGVuZGluZyBhIHJvdyBncm91cC4KKyAgICAgICAgZW5k
Um93R3JvdXAoKTsKKyAgICB9OworCisgICAgLy8gU3RlcCA0OiBMZXQgdGhlIHRhYmxlIGJlIHRo
ZSB0YWJsZSByZXByZXNlbnRlZCBieSB0aGUgdGFibGUgZWxlbWVudC4KKyAgICBSZWZQdHIgdGFi
bGVFbGVtZW50ID0gdGhpcy0+bm9kZSgpOworICAgIC8vIGBpc0FyaWFUYWJsZSgpYCB3aWxsIHJl
dHVybiB0cnVlIGZvciB0YWJsZS1saWtlIEFSSUEgc3RydWN0dXJlcyAoZ3JpZCwgdHJlZWdyaWQs
IHRhYmxlKS4KKyAgICBpZiAoIWlzPEhUTUxUYWJsZUVsZW1lbnQ+KHRhYmxlRWxlbWVudC5nZXQo
KSkgJiYgIWlzQXJpYVRhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZChOb2RlKik+IHByb2Nlc3NUYWJsZURlc2NlbmRhbnQgPSBbJiwgdGhpc10gKE5vZGUq
IG5vZGUpIHsKKyAgICAgICAgLy8gU3RlcCA4OiBXaGlsZSB0aGUgY3VycmVudCBlbGVtZW50IGlz
IG5vdCBvbmUgb2YgdGhlIGZvbGxvd2luZyBlbGVtZW50cywgYWR2YW5jZSB0aGUKKyAgICAgICAg
Ly8gY3VycmVudCBlbGVtZW50IHRvIHRoZSBuZXh0IGNoaWxkIG9mIHRoZSB0YWJsZS4KKyAgICAg
ICAgaWYgKGF1dG8qIGNhcHRpb24gPSBkeW5hbWljRG93bmNhc3Q8SFRNTFRhYmxlQ2FwdGlvbkVs
ZW1lbnQ+KG5vZGUpKSB7CisgICAgICAgICAgICAvLyBTdGVwIDY6IEFzc29jaWF0ZSB0aGUgZmly
c3QgY2FwdGlvbiBlbGVtZW50IGNoaWxkIG9mIHRoZSB0YWJsZSBlbGVtZW50IHdpdGggdGhlIHRh
YmxlLgorICAgICAgICAgICAgaWYgKCFjYXB0aW9uRWxlbWVudCkKKyAgICAgICAgICAgICAgICBj
YXB0aW9uRWxlbWVudCA9IGNhcHRpb247CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBhdXRvKiBlbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEVsZW1lbnQ+KG5vZGUp
OworICAgICAgICBib29sIGRlc2NlbmRhbnRJc1JvdyA9IGVsZW1lbnQgJiYgKGVsZW1lbnQtPmhh
c1RhZ05hbWUodHJUYWcpIHx8IG5vZGVIYXNSb2xlKGVsZW1lbnQsICJyb3ciX3MpKTsKKyAgICAg
ICAgYm9vbCBkZXNjZW5kYW50SXNSb3dHcm91cCA9IGVsZW1lbnQgJiYgIWRlc2NlbmRhbnRJc1Jv
dyAmJiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0aGVhZFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFt
ZSh0Ym9keVRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSh0Zm9vdFRhZykgfHwgbm9kZUhhc1Jv
bGUoZWxlbWVudCwgInJvd2dyb3VwIl9zKSk7CisKKyAgICAgICAgLy8gU3RlcCA5OiBIYW5kbGUg
dGhlIGNvbGdyb3VwIGVsZW1lbnQuIE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgLy8gU3RlcCAx
MDogSGFuZGxlZCBhYm92ZS4KKyAgICAgICAgLy8gU3RlcCAxMTogU2tpcHBlZC4gTm90IGN1cnJl
bnRseSBpbXBsZW1lbnRpbmcgImRvd253YXJkLWdyb3dpbmcgY2VsbHMiIGFsZ29yaXRobS4KKyAg
ICAgICAgLy8gU3RlcCAxMjogV2hpbGUgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBub3Qgb25lIG9m
IHRoZSBmb2xsb3dpbmcgZWxlbWVudHMsIGFkdmFuY2UgdGhlIGN1cnJlbnQgZWxlbWVudCB0byB0
aGUgbmV4dCBjaGlsZCBvZiB0aGUgdGFibGUKKyAgICAgICAgaWYgKCFkZXNjZW5kYW50SXNSb3cg
JiYgIWRlc2NlbmRhbnRJc1Jvd0dyb3VwKSB7CisgICAgICAgICAgICBpZiAoaXNBcmlhVGFibGUo
KSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBmb3JnaXZpbmcgd2l0aCBBUklBIGdyaWQg
bWFya3VwLCBkZXNjZW5kaW5nIHBhc3QgZGlzYWxsb3dlZCBlbGVtZW50cyB0byBidWlsZCB0aGUg
Z3JpZCBzdHJ1Y3R1cmUgKHRoaXMgaXMgbm90IHNwZWNpZmllZCwgYnV0IGNvbnNpc3RlbnQgd2l0
aCBvdGhlciBicm93c2VycykuCisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGF4T2JqZWN0ID0g
Y2FjaGUtPmdldE9yQ3JlYXRlKG5vZGUpOyBheE9iamVjdCAmJiBuZWVkc1RvRGVzY2VuZCgqYXhP
YmplY3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBh
eE9iamVjdC0+Y2hpbGRyZW4oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NUYWJs
ZURlc2NlbmRhbnQoY2hpbGQgPyBjaGlsZC0+bm9kZSgpIDogbnVsbHB0cik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgLy8gU3RlcCAxMzogSWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBhIHRyLCB0aGVu
IHJ1biB0aGUgYWxnb3JpdGhtIGZvciBwcm9jZXNzaW5nIHJvd3MsCisgICAgICAgIC8vIGFkdmFu
Y2UgdGhlIGN1cnJlbnQgZWxlbWVudCB0byB0aGUgbmV4dCBjaGlsZCBvZiB0aGUgdGFibGUsIGFu
ZCByZXR1cm4gdG8gdGhlIHN0ZXAgbGFiZWxlZCByb3dzLgorICAgICAgICBpZiAoZGVzY2VuZGFu
dElzUm93KQorICAgICAgICAgICAgcHJvY2Vzc1JvdyhkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJp
bGl0eVRhYmxlUm93PihjYWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCkpKTsKKworICAgICAgICAv
LyBTdGVwIDE0OiBSdW4gdGhlIGFsZ29yaXRobSBmb3IgZW5kaW5nIGEgcm93IGdyb3VwLgorICAg
ICAgICBlbmRSb3dHcm91cCgpOworCisgICAgICAgIC8vIFN0ZXAgMTU6IElmIHRoZSBjdXJyZW50
IGVsZW1lbnQgaXMgYSB0Zm9vdC4uLgorICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0
Zm9vdFRhZykpIHsKKyAgICAgICAgICAgIC8vIC4uLnRoZW4gYWRkIHRoYXQgZWxlbWVudCB0byB0
aGUgbGlzdCBvZiBwZW5kaW5nIHRmb290IGVsZW1lbnRzCisgICAgICAgICAgICBwZW5kaW5nVGZv
b3RFbGVtZW50cy5hcHBlbmQoKmVsZW1lbnQpOworICAgICAgICAgICAgLy8gLi4uYWR2YW5jZSB0
aGUgY3VycmVudCBlbGVtZW50IHRvIHRoZSBuZXh0IGNoaWxkIG9mIHRoZSB0YWJsZS4KKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0ZXAgMTY6IElmIHRoZSBj
dXJyZW50IGVsZW1lbnQgaXMgZWl0aGVyIGEgdGhlYWQgb3IgYSB0Ym9keSwgcnVuIHRoZSBhbGdv
cml0aG0gZm9yIHByb2Nlc3Npbmcgcm93IGdyb3Vwcy4gKE5vdCBzcGVjaWZpZWQ6IGluY2x1ZGUg
cm9sZT0icm93Z3JvdXBzIikuCisgICAgICAgIGlmIChkZXNjZW5kYW50SXNSb3dHcm91cCkKKyAg
ICAgICAgICAgIHByb2Nlc3NSb3dHcm91cCgqZWxlbWVudCk7CisgICAgfTsKKyAgICAvLyBTdGVw
IDc6IExldCB0aGUgY3VycmVudCBlbGVtZW50IGJlIHRoZSBmaXJzdCBlbGVtZW50IGNoaWxkIG9m
IHRoZSB0YWJsZSBlbGVtZW50LgorICAgIGZvciAoUmVmUHRyIGN1cnJlbnRFbGVtZW50ID0gdGFi
bGVFbGVtZW50LT5maXJzdENoaWxkKCk7IGN1cnJlbnRFbGVtZW50OyBjdXJyZW50RWxlbWVudCA9
IGN1cnJlbnRFbGVtZW50LT5uZXh0U2libGluZygpKSB7CisgICAgICAgIHByb2Nlc3NUYWJsZURl
c2NlbmRhbnQoY3VycmVudEVsZW1lbnQuZ2V0KCkpOworICAgICAgICAvLyBTdGVwIDE3ICsgMTg6
IEFkdmFuY2UgdGhlIGN1cnJlbnQgZWxlbWVudCB0byB0aGUgbmV4dCBjaGlsZCBvZiB0aGUgdGFi
bGUuCiAgICAgfQotICAgIAotICAgIC8vIFByb2Nlc3MgdGhlIGZvb3RlciBsYXN0LCBpbiBjYXNl
IGl0IHdhcyBvcmRlcmVkIGVhcmxpZXIgaW4gdGhlIERPTS4KLSAgICBpZiAoZm9vdGVyKQotICAg
ICAgICBhZGRDaGlsZHJlbkZyb21TZWN0aW9uKGZvb3RlciwgbWF4Q29sdW1uQ291bnQpOwotICAg
IAotICAgIGF1dG8qIGF4Q2FjaGUgPSBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCk7Ci0gICAg
Ly8gbWFrZSB0aGUgY29sdW1ucyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhl
IGZpcnN0IGJvZHkKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBtYXhDb2x1bW5Db3VudDsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYXV0byYgY29s
dW1uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigqYXhDYWNoZS0+Y3JlYXRl
KEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4pKTsKKworICAgIC8vIFN0ZXAgMTk6IEZvciBlYWNo
IHRmb290IGVsZW1lbnQgaW4gdGhlIGxpc3Qgb2YgcGVuZGluZyB0Zm9vdCBlbGVtZW50cywgaW4g
dHJlZSBvcmRlciwKKyAgICAvLyBydW4gdGhlIGFsZ29yaXRobSBmb3IgcHJvY2Vzc2luZyByb3cg
Z3JvdXBzLgorICAgIGZvciAoY29uc3QgYXV0byYgdGZvb3RFbGVtZW50IDogcGVuZGluZ1Rmb290
RWxlbWVudHMpCisgICAgICAgIHByb2Nlc3NSb3dHcm91cCh0Zm9vdEVsZW1lbnQuZ2V0KCkpOwor
CisgICAgLy8gVGhlIHJlbWFpbmRlciBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVuc3BlY2lmaWVkIHVw
ZGF0aW5nIG9mIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4KKyAgICBhZGRDaGlsZChjYWNoZS0+
Z2V0T3JDcmVhdGUoY2FwdGlvbkVsZW1lbnQuZ2V0KCkpLCBEZXNjZW5kSWZJZ25vcmVkOjpObyk7
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgeFdpZHRoOyArK2kpIHsKKyAgICAgICAg
YXV0byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigqY2FjaGUt
PmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uKSk7CiAgICAgICAgIGNvbHVtbi5zZXRD
b2x1bW5JbmRleChpKTsKICAgICAgICAgY29sdW1uLnNldFBhcmVudCh0aGlzKTsKICAgICAgICAg
bV9jb2x1bW5zLmFwcGVuZCgmY29sdW1uKTsKQEAgLTQ3MSw2NiArNjY0LDYgQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKICAgICB1cGRhdGVDaGlsZHJlblJvbGVzKCk7
CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3Np
YmlsaXR5T2JqZWN0KiByb3dPYmplY3QsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBh
cHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKLXsKLSAgICBpZiAoIXJvd09iamVj
dCB8fCAhaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigqcm93T2JqZWN0KSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byYgcm93ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigq
cm93T2JqZWN0KTsKLSAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGV2ZXJ5IGNlbGwgZm9yIGEgbmV3
IHJvdywgYmVjYXVzZSBjZWxsIHNwYW5zCi0gICAgLy8gY2FuIGNhdXNlIHVzIHRvIG1pc3Mgcm93
cyBpZiB3ZSBqdXN0IGNoZWNrIHRoZSBmaXJzdCBjb2x1bW4uCi0gICAgaWYgKGFwcGVuZGVkUm93
cy5jb250YWlucygmcm93KSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHJvdy5zZXRSb3dJ
bmRleChzdGF0aWNfY2FzdDxpbnQ+KG1fcm93cy5zaXplKCkpKTsKLSAgICBtX3Jvd3MuYXBwZW5k
KCZyb3cpOwotICAgIGFkZENoaWxkKCZyb3csIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsKLSAgICBh
cHBlbmRlZFJvd3MuYWRkKCZyb3cpOwotICAgICAgICAKLSAgICAvLyBzdG9yZSB0aGUgbWF4aW11
bSBudW1iZXIgb2YgY29sdW1ucwotICAgIHVuc2lnbmVkIHJvd0NlbGxDb3VudCA9IHJvdy5jaGls
ZHJlbigpLnNpemUoKTsKLSAgICBpZiAocm93Q2VsbENvdW50ID4gY29sdW1uQ291bnQpCi0gICAg
ICAgIGNvbHVtbkNvdW50ID0gcm93Q2VsbENvdW50OwotfQotCi12b2lkIEFjY2Vzc2liaWxpdHlU
YWJsZTo6YWRkQ2hpbGRyZW5Gcm9tU2VjdGlvbihSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2Vj
dGlvbiwgdW5zaWduZWQmIG1heENvbHVtbkNvdW50KQotewotICAgIEFTU0VSVCh0YWJsZVNlY3Rp
b24pOwotICAgIGlmICghdGFibGVTZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
YXV0byogYXhDYWNoZSA9IGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKLSAgICBIYXNoU2V0
PEFjY2Vzc2liaWxpdHlPYmplY3QqPiBhcHBlbmRlZFJvd3M7Ci0gICAgdW5zaWduZWQgbnVtUm93
cyA9IHRhYmxlU2VjdGlvbi0+bnVtUm93cygpOwotICAgIGZvciAodW5zaWduZWQgcm93SW5kZXgg
PSAwOyByb3dJbmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHsKLSAgICAgICAgCi0gICAgICAg
IFJlbmRlclRhYmxlUm93KiByZW5kZXJSb3cgPSB0YWJsZVNlY3Rpb24tPnJvd1JlbmRlcmVyQXQo
cm93SW5kZXgpOwotICAgICAgICBpZiAoIXJlbmRlclJvdykKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCYgcm93T2JqZWN0ID0gKmF4
Q2FjaGUtPmdldE9yQ3JlYXRlKHJlbmRlclJvdyk7Ci0gICAgICAgIAotICAgICAgICAvLyBJZiB0
aGUgcm93IGlzIGFub255bW91cywgd2Ugc2hvdWxkIGRpdmUgZGVlcGVyIGludG8gdGhlIGRlc2Nl
bmRhbnRzIHRvIHRyeSB0byBmaW5kIGEgdmFsaWQgcm93LgotICAgICAgICBpZiAocmVuZGVyUm93
LT5pc0Fub255bW91cygpKSB7Ci0gICAgICAgICAgICBEZXF1ZTxBY2Nlc3NpYmlsaXR5T2JqZWN0
Kj4gcXVldWU7Ci0gICAgICAgICAgICBxdWV1ZS5hcHBlbmQoJnJvd09iamVjdCk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gcXVldWUudGFrZUZpcnN0KCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKG9iai0+bm9kZSgpICYmIGlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4o
Km9iaikpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkVGFibGVDZWxsQ2hpbGQob2JqLCBhcHBl
bmRlZFJvd3MsIG1heENvbHVtbkNvdW50KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAoYXV0byogY2hpbGQgPSBv
YmotPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChjaGlsZCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYWRkVGFibGVDZWxsQ2hpbGQoJnJvd09iamVjdCwg
YXBwZW5kZWRSb3dzLCBtYXhDb2x1bW5Db3VudCk7Ci0gICAgfQotICAgIAotICAgIG1heENvbHVt
bkNvdW50ID0gc3RkOjptYXgodGFibGVTZWN0aW9uLT5udW1Db2x1bW5zKCksIG1heENvbHVtbkNv
dW50KTsKLX0KLSAgICAKIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOjpoZWFkZXJD
b250YWluZXIoKQogewogICAgIGlmIChtX2hlYWRlckNvbnRhaW5lcikKQEAgLTY0MiwzMCArNzc1
LDExIEBAIGludCBBY2Nlc3NpYmlsaXR5VGFibGU6OnRhYmxlTGV2ZWwoKSBjb25zdAogQVhDb3Jl
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQg
Y29sdW1uLCB1bnNpZ25lZCByb3cpCiB7CiAgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgp
OwotICAgIGlmIChjb2x1bW4gPj0gY29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93Q291bnQoKSkK
KyAgICBpZiAocm93ID49IG1fc2xvdEdyaWQuc2l6ZSgpIHx8IGNvbHVtbiA+PSBtX3Nsb3RHcmlk
W3Jvd10uc2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICAvLyBJdGVy
YXRlIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSByb3dzIGluIGNhc2UgdGhlIGRlc2lyZWQgY2VsbCBo
YXMgYSByb3dzcGFuIGFuZCBleGlzdHMgaW4gYSBwcmV2aW91cyByb3cuCi0gICAgZm9yICh1bnNp
Z25lZCByb3dJbmRleENvdW50ZXIgPSByb3cgKyAxOyByb3dJbmRleENvdW50ZXIgPiAwOyAtLXJv
d0luZGV4Q291bnRlcikgewotICAgICAgICB1bnNpZ25lZCByb3dJbmRleCA9IHJvd0luZGV4Q291
bnRlciAtIDE7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gbV9yb3dzW3Jvd0luZGV4
XS0+Y2hpbGRyZW4oKTsKLSAgICAgICAgLy8gU2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xz
cGFucywgd2UgaGF2ZSB0byBjaGVjayB0aGUgYWN0dWFsIHJhbmdlIG9mIGVhY2gKLSAgICAgICAg
Ly8gY2VsbCB0byBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIHJpZ2h0IG9uZS4KLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBjb2xJbmRleENvdW50ZXIgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oY2hpbGRyZW4uc2l6ZSgpKSwgY29sdW1uICsgMSk7IGNvbEluZGV4Q291bnRlciA+IDA7IC0t
Y29sSW5kZXhDb3VudGVyKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjb2xJbmRleCA9IGNvbElu
ZGV4Q291bnRlciAtIDE7Ci0gICAgICAgICAgICBBWENvcmVPYmplY3QqIGNoaWxkID0gY2hpbGRy
ZW5bY29sSW5kZXhdLmdldCgpOwotICAgICAgICAgICAgaWYgKCFjaGlsZCkKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgYXV0byBjb2x1bW5SYW5nZSA9IGNoaWxkLT5j
b2x1bW5JbmRleFJhbmdlKCk7Ci0gICAgICAgICAgICBhdXRvIHJvd1JhbmdlID0gY2hpbGQtPnJv
d0luZGV4UmFuZ2UoKTsKLQotICAgICAgICAgICAgaWYgKChjb2x1bW4gPj0gY29sdW1uUmFuZ2Uu
Zmlyc3QgJiYgY29sdW1uIDwgKGNvbHVtblJhbmdlLmZpcnN0ICsgY29sdW1uUmFuZ2Uuc2Vjb25k
KSkKLSAgICAgICAgICAgICAgICAmJiAocm93ID49IHJvd1JhbmdlLmZpcnN0ICYmIHJvdyA8IChy
b3dSYW5nZS5maXJzdCArIHJvd1JhbmdlLnNlY29uZCkpKQotICAgICAgICAgICAgICAgIHJldHVy
biBjaGlsZDsKLSAgICAgICAgfQotICAgIH0KIAorICAgIGlmIChBWElEIGNlbGxJRCA9IG1fc2xv
dEdyaWRbcm93XVtjb2x1bW5dKQorICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5vYmpl
Y3RGb3JJRChjZWxsSUQpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC03NDYsNCArODYw
LDE3IEBAIGludCBBY2Nlc3NpYmlsaXR5VGFibGU6OmF4Um93Q291bnQoKSBjb25zdAogICAgIHJl
dHVybiAwOwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93KHVuc2lnbmVk
IGluZGV4KQoreworICAgIGlmIChtX3Nsb3RHcmlkLnNpemUoKSA8IGluZGV4ICsgMSkKKyAgICAg
ICAgbV9zbG90R3JpZC5ncm93KGluZGV4ICsgMSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVRh
YmxlOjplbnN1cmVSb3dBbmRDb2x1bW4odW5zaWduZWQgcm93SW5kZXgsIHVuc2lnbmVkIGNvbHVt
bkluZGV4KQoreworICAgIGVuc3VyZVJvdyhyb3dJbmRleCk7CisgICAgaWYgKG1fc2xvdEdyaWRb
cm93SW5kZXhdLnNpemUoKSA8IGNvbHVtbkluZGV4ICsgMSkKKyAgICAgICAgbV9zbG90R3JpZFty
b3dJbmRleF0uZ3Jvdyhjb2x1bW5JbmRleCArIDEpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGUuaAppbmRleCAyNzQ2YmUzOTVhMjkuLjcxM2M3YzNmYWUxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCkBAIC0yOSwxNyArMjks
MTcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5oIgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFjY2Vzc2liaWxpdHlU
YWJsZVJvdzsKIGNsYXNzIEhUTUxUYWJsZUVsZW1lbnQ7Ci1jbGFzcyBSZW5kZXJUYWJsZVNlY3Rp
b247Ci0gICAgCisKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZSA6IHB1YmxpYyBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlU
YWJsZT4gY3JlYXRlKFJlbmRlck9iamVjdCopOworICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0
eVRhYmxlPiBjcmVhdGUoTm9kZSYpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUYWJsZSgp
OwogCiAgICAgdm9pZCBpbml0KCkgZmluYWw7CkBAIC00NywxNSArNDcsMTUgQEAgcHVibGljOgog
ICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZpcnR1
YWwgYm9vbCBpc0FyaWFUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lk
IGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRDaGlsZHJlbigpIGZpbmFsOwog
ICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRyZW5S
b2xlcygpOwogCiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbnMoKSBvdmVy
cmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93cygpIG92ZXJyaWRlOwog
Ci0gICAgdW5zaWduZWQgY29sdW1uQ291bnQoKSBvdmVycmlkZTsKLSAgICB1bnNpZ25lZCByb3dD
b3VudCgpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50KCkgZmluYWw7CisgICAg
dW5zaWduZWQgcm93Q291bnQoKSBmaW5hbDsKICAgICBpbnQgdGFibGVMZXZlbCgpIGNvbnN0IGZp
bmFsOwogCiAgICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgZmluYWw7CkBAIC03MSwxOSArNzEsMjgg
QEAgcHVibGljOgogICAgIC8vIFJldHVybnMgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMsIGFzIGNo
aWxkcmVuLCBhbGwgdGhlIG9iamVjdHMgdGhhdCBhY3QgYXMgaGVhZGVycy4KICAgICBBWENvcmVP
YmplY3QqIGhlYWRlckNvbnRhaW5lcigpIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1RhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNUYWJsZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgaXQgaXMgZXhw
b3NlZCBhcyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgdG8gdGhlIHBsYXRmb3JtLgotICAgIGJvb2wg
aXNFeHBvc2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRXhwb3NhYmxlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc0V4cG9zYWJsZTsgfQogICAgIHZvaWQgcmVjb21wdXRlSXNF
eHBvc2FibGUoKTsKIAotICAgIGludCBheENvbHVtbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgaW50IGF4Um93Q291bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgYXhDb2x1bW5Db3Vu
dCgpIGNvbnN0IGZpbmFsOworICAgIGludCBheFJvd0NvdW50KCkgY29uc3QgZmluYWw7CisKKyAg
ICAvLyBDZWxsIGluZGV4ZXMgYXJlIGFzc2lnbmVkIGR1cmluZyBjaGlsZCBjcmVhdGlvbiwgc28g
bWFrZSBzdXJlIGNoaWxkcmVuIGFyZSB1cC10by1kYXRlLgorICAgIHZvaWQgZW5zdXJlQ2VsbElu
ZGV4ZXNVcFRvRGF0ZSgpIHsgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOyB9CisgICAgVmVj
dG9yPFZlY3RvcjxBWElEPj4gc2xvdEdyaWQoKSBmaW5hbDsKKyAgICB2b2lkIHNldFNsb3RHcmlk
RGlydHkoKTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUYWJsZShS
ZW5kZXJPYmplY3QqKTsKKyAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VGFibGUoTm9kZSYpOwog
CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG1fcm93czsKICAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgbV9jb2x1bW5zOworICAgIC8vIDJEIG1hdHJpeCBvZiB0aGUgY2Vs
bHMgYXNzaWduZWQgdG8gZWFjaCAic2xvdCIgaW4gdGhpcyB0YWJsZS4KKyAgICAvLyAoIlNsb3Qi
IGFzIGRlZmluZWQgaGVyZTogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
dGFibGVzLmh0bWwjY29uY2VwdC1zbG90cykKKyAgICBWZWN0b3I8VmVjdG9yPEFYSUQ+PiBtX3Ns
b3RHcmlkOwogCiAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG1faGVhZGVyQ29udGFp
bmVyOwogICAgIGJvb2wgbV9pc0V4cG9zYWJsZTsKQEAgLTkzLDEyICsxMDIsMTUgQEAgcHJvdGVj
dGVkOgogCiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IGZp
bmFsOwogCisgICAgdm9pZCBhZGRSb3coQWNjZXNzaWJpbGl0eVRhYmxlUm93JiwgdW5zaWduZWQs
IHVuc2lnbmVkJiBtYXhDb2x1bW5Db3VudCk7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29s
IGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdDsKICAg
ICB2b2lkIHRpdGxlRWxlbWVudFRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYpIGNvbnN0
IGZpbmFsOwogICAgIEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlRWxlbWVudCgpIGNvbnN0OwotICAg
IHZvaWQgYWRkQ2hpbGRyZW5Gcm9tU2VjdGlvbihSZW5kZXJUYWJsZVNlY3Rpb24qLCB1bnNpZ25l
ZCYgbWF4Q29sdW1uQ291bnQpOwotICAgIHZvaWQgYWRkVGFibGVDZWxsQ2hpbGQoQWNjZXNzaWJp
bGl0eU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3Ms
IHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CisKKyAgICB2b2lkIGVuc3VyZVJvdyh1bnNpZ25lZCk7
CisgICAgdm9pZCBlbnN1cmVSb3dBbmRDb2x1bW4odW5zaWduZWQgLyogcm93SW5kZXggKi8sIHVu
c2lnbmVkIC8qIGNvbHVtbkluZGV4ICovKTsKIAogICAgIGJvb2wgaGFzTm9uVGFibGVBUklBUm9s
ZSgpIGNvbnN0OwogICAgIC8vIGlzRGF0YVRhYmxlIGlzIHdoZXRoZXIgaXQgaXMgZXhwb3NlZCBh
cyBhbiBBY2Nlc3NpYmlsaXR5VGFibGUgYmVjYXVzZSB0aGUgaGV1cmlzdGljCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNw
cAppbmRleCAwMjU5ZmZhNDliYjguLmYwNTY2ZjQ3Y2UzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCkBAIC0y
OSwyMyArMjksMjEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5VGFibGVDZWxsLmgiCiAKLSNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93Lmgi
Ci0jaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0j
aW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKLSNpbmNsdWRlICJNYXRoTUxFbGVtZW50
LmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVj
dC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
Ci0gICAgCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAg
OiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJlbmRlcmVyKQotICAgICwgbV9heENvbEluZGV4
RnJvbVJvdygtMSkKK3sKK30KKworQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbChOb2RlJiBub2RlKQorICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChu
b2RlKQogewogfQogCkBAIC01Niw2ICs1NCwxMSBAQCBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bD4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZQog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwocmVuZGVyZXIp
KTsKIH0KIAorUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw6OmNyZWF0ZShOb2RlJiBub2RlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGwobm9kZSkpOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gZGVmYXVsdE9iamVjdEluY2x1c2lvbigp
OwpAQCAtNjYsMTEgKzY5LDExIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29tcHV0
ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogICAgIAogICAgIC8vIElnbm9yZSBhbm9u
eW1vdXMgdGFibGUgY2VsbHMgYXMgbG9uZyBhcyB0aGV5J3JlIG5vdCBpbiBhIHRhYmxlIChpZS4g
d2hlbiBkaXNwbGF5OnRhYmxlIGlzIHVzZWQpLgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyVGFi
bGUgPSBpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpID8gZG93bmNhc3Q8UmVuZGVyVGFi
bGVDZWxsPigqbV9yZW5kZXJlcikudGFibGUoKSA6IG51bGxwdHI7Ci0gICAgYm9vbCBpblRhYmxl
ID0gcmVuZGVyVGFibGUgJiYgcmVuZGVyVGFibGUtPm5vZGUoKSAmJiAocmVuZGVyVGFibGUtPm5v
ZGUoKS0+aGFzVGFnTmFtZSh0YWJsZVRhZykgfHwgbm9kZUhhc1JvbGUocmVuZGVyVGFibGUtPm5v
ZGUoKSwgImdyaWQiX3MpKTsKKyAgICBib29sIGluVGFibGUgPSByZW5kZXJUYWJsZSAmJiByZW5k
ZXJUYWJsZS0+bm9kZSgpICYmIChyZW5kZXJUYWJsZS0+bm9kZSgpLT5oYXNUYWdOYW1lKHRhYmxl
VGFnKSB8fCBub2RlSGFzR3JpZFJvbGUocmVuZGVyVGFibGUtPm5vZGUoKSkpOwogICAgIGlmICgh
bm9kZSgpICYmICFpblRhYmxlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCi0gICAg
aWYgKCFpc1RhYmxlQ2VsbCgpKQorICAgIGlmICghaXNFeHBvc2VkVGFibGVDZWxsKCkpCiAgICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpOwogICAgIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTExOCw3ICsxMjEsNyBA
QCBBY2Nlc3NpYmlsaXR5VGFibGUqIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFRhYmxl
KCkgY29uc3QKICAgICByZXR1cm4gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4o
dGFibGVGcm9tUmVuZGVyVHJlZSk7CiB9CiAgICAgCi1ib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw6OmlzVGFibGVDZWxsKCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6aXNF
eHBvc2VkVGFibGVDZWxsKCkgY29uc3QKIHsKICAgICAvLyBJZiB0aGUgcGFyZW50IHRhYmxlIGlz
IGFuIGFjY2Vzc2liaWxpdHkgdGFibGUsIHRoZW4gd2UgYXJlIGEgdGFibGUgY2VsbC4KICAgICAv
LyBUaGlzIHVzZWQgdG8gY2hlY2sgaWYgdGhlIHVuaWdub3JlZFBhcmVudCB3YXMgYSByb3csIGJ1
dCB0aGF0IGV4cGxvZGVkIHBlcmZvcm1hbmNlIGlmCkBAIC0xMzYsNyArMTM5LDcgQEAgQWNjZXNz
aWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0
eVJvbGUoKQogICAgIGlmIChkZWZhdWx0Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1u
SGVhZGVyIHx8IGRlZmF1bHRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3dIZWFkZXIgfHwg
ZGVmYXVsdFJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGwgfHwgZGVmYXVsdFJvbGUgPT0g
QWNjZXNzaWJpbGl0eVJvbGU6OkdyaWRDZWxsKQogICAgICAgICByZXR1cm4gZGVmYXVsdFJvbGU7
CiAKLSAgICBpZiAoIWlzVGFibGVDZWxsKCkpCisgICAgaWYgKCFpc0V4cG9zZWRUYWJsZUNlbGwo
KSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRSb2xlOwogICAgIGlmIChpc0NvbHVtbkhlYWRlckNl
bGwoKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXI7CkBA
IC0xNDgsNyArMTUxLDIzIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbDo6aXNUYWJsZUhlYWRlckNlbGwoKSBjb25zdAogewotICAgIHJldHVybiBub2Rl
KCkgJiYgbm9kZSgpLT5oYXNUYWdOYW1lKHRoVGFnKTsKKyAgICBhdXRvKiBub2RlID0gdGhpcy0+
bm9kZSgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUodGhUYWcpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlm
IChub2RlLT5oYXNUYWdOYW1lKHRkVGFnKSkgeworICAgICAgICBhdXRvKiBjdXJyZW50ID0gbm9k
ZS0+cGFyZW50Tm9kZSgpOworICAgICAgICAvLyBpIDwgMiBpcyB1c2VkIGhlcmUgYmVjYXVzZSBp
biBhIHByb3Blcmx5IHN0cnVjdHVyZWQgdGFibGUsIHRoZSB0aGVhZCBzaG91bGQgYmUgMiBsZXZl
bHMgYXdheSBmcm9tIHRoZSB0ZC4KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyICYmIGN1
cnJlbnQ7IGkrKykgeworICAgICAgICAgICAgaWYgKGN1cnJlbnQtPmhhc1RhZ05hbWUodGhlYWRU
YWcpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgY3VycmVudCA9
IGN1cnJlbnQtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6aXNDb2x1bW5IZWFkZXJDZWxs
KCkgY29uc3QKQEAgLTMxNyw2OCArMzM2LDMzIEBAIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cGFyZW50Um93KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byBv
d25lclBhcmVudCA9IGFyaWFPd25lZEJ5UGFyZW50KCkpCiAgICAgICAgIHJldHVybiBvd25lclBh
cmVudDsKLSAgICAKLSAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdu
b3JlZCgpOwotICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50KSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlU
YWJsZVJvdz4ocGFyZW50KTsKKyAgICByZXR1cm4gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZVJvdz4ocGFyZW50T2JqZWN0VW5pZ25vcmVkKCkpOworfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGw6OmVuc3VyZUluZGV4ZXNVcFRvRGF0ZSgpIGNvbnN0Cit7CisgICAgaWYg
KGF1dG8qIHBhcmVudFRhYmxlID0gdGhpcy0+cGFyZW50VGFibGUoKSkKKyAgICAgICAgcGFyZW50
VGFibGUtPmVuc3VyZUNlbGxJbmRleGVzVXBUb0RhdGUoKTsKIH0KIAogc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhSYW5nZSgpIGNv
bnN0CiB7Ci0gICAgYXV0byogcGFyZW50Um93ID0gdGhpcy0+cGFyZW50Um93KCk7Ci0gICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93UmFuZ2UgeyBwYXJlbnRSb3cgPyBwYXJlbnRS
b3ctPnJvd0luZGV4KCkgOiAwLCAxIH07Ci0KLSAgICAvLyBBUklBIDEuMSdzIGFyaWEtcm93c3Bh
biBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgZm9yIGNlbGxzIGFuZCBncmlkY2VsbHMgd2hpY2ggYXJl
IG5vdCBjb250YWluZWQKLSAgICAvLyBpbiBhIG5hdGl2ZSB0YWJsZS4gQnV0IGlmIHdlIGhhdmUg
YSB2YWxpZCBhdXRob3ItcHJvdmlkZWQgdmFsdWUgYW5kIGRvIG5vdCBoYXZlIGFuIGV4cGxpY2l0
Ci0gICAgLy8gbmF0aXZlIGhvc3QgbGFuZ3VhZ2UgdmFsdWUgZm9yIHRoZSByb3dzcGFuLCBleHBv
c2UgdGhlIEFSSUEgdmFsdWUuCi0gICAgcm93UmFuZ2Uuc2Vjb25kID0gYXhSb3dTcGFuKCk7Ci0g
ICAgaWYgKHN0YXRpY19jYXN0PGludD4ocm93UmFuZ2Uuc2Vjb25kKSA9PSAtMSkgewotICAgICAg
ICAvLyBJdCdzIGZhc3RlciB0byBnZXQgcm93c3BhbiBmcm9tIFJlbmRlclRhYmxlQ2VsbCBiZWNh
dXNlIGl0IGhhcyBidWlsdCBpbiBjYWNoZXMgdG8gYXZvaWQKLSAgICAgICAgLy8gcmVhZGluZyBm
cm9tIHRoZSBET00sIHNvIHRyeSB0aGF0IGZpcnN0LgotICAgICAgICBpZiAoYXV0byogcmVuZGVy
VGFibGVDZWxsID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIoKSkp
Ci0gICAgICAgICAgICByb3dSYW5nZS5zZWNvbmQgPSByZW5kZXJUYWJsZUNlbGwtPnJvd1NwYW4o
KTsKLSAgICAgICAgZWxzZSBpZiAoYXV0byogdGFibGVDZWxsRWxlbWVudCA9IGR5bmFtaWNEb3du
Y2FzdDxIVE1MVGFibGVDZWxsRWxlbWVudD4obm9kZSgpKSkKLSAgICAgICAgICAgIHJvd1Jhbmdl
LnNlY29uZCA9IHN0ZDo6bWluPHVuc2lnbmVkPih0YWJsZUNlbGxFbGVtZW50LT5yb3dTcGFuKCks
IG1heFJvd0luZGV4KTsKLSNpZiBFTkFCTEUoTUFUSE1MKQotICAgICAgICBlbHNlIGlmIChhdXRv
KiBtYXRoTUxFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PE1hdGhNTEVsZW1lbnQ+KG5vZGUoKSk7
IG1hdGhNTEVsZW1lbnQgJiYgbWF0aE1MRWxlbWVudC0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6
bXRkVGFnKSkKLSAgICAgICAgICAgIHJvd1JhbmdlLnNlY29uZCA9IHN0ZDo6bWluPHVuc2lnbmVk
PihtYXRoTUxFbGVtZW50LT5yb3dTcGFuKCksIG1heFJvd0luZGV4KTsKLSNlbmRpZgotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIC8vIERlZmF1bHQgYmFjayB0byAxLgotICAgICAgICAgICAg
cm93UmFuZ2Uuc2Vjb25kID0gMTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcm93UmFu
Z2U7CisgICAgZW5zdXJlSW5kZXhlc1VwVG9EYXRlKCk7CisgICAgcmV0dXJuIHsgbV9yb3dJbmRl
eCwgcm93U3BhbigpIH07CiB9CiAgICAgCiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBB
Y2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRleFJhbmdlKCkgY29uc3QKIHsKLSAgICBz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5SYW5nZSB7IDAsIDEgfTsKLSAgICBp
ZiAoIWlzPFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIoKSkpCi0gICAgICAgIHJldHVybiBjb2x1
bW5SYW5nZTsKLQotICAgIGNvbnN0IFJlbmRlclRhYmxlQ2VsbCYgY2VsbCA9IGRvd25jYXN0PFJl
bmRlclRhYmxlQ2VsbD4oKm1fcmVuZGVyZXIpOwotICAgIGNvbHVtblJhbmdlLmZpcnN0ID0gY2Vs
bC50YWJsZSgpLT5jb2xUb0VmZkNvbChjZWxsLmNvbCgpKTsKLQotICAgIC8vIEFSSUEgMS4xJ3Mg
YXJpYS1jb2xzcGFuIGF0dHJpYnV0ZSBpcyBpbnRlbmRlZCBmb3IgY2VsbHMgYW5kIGdyaWRjZWxs
cyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZAotICAgIC8vIGluIGEgbmF0aXZlIHRhYmxlLiBCdXQg
aWYgd2UgaGF2ZSBhIHZhbGlkIGF1dGhvci1wcm92aWRlZCB2YWx1ZSBhbmQgZG8gbm90IGhhdmUg
YW4gZXhwbGljaXQKLSAgICAvLyBuYXRpdmUgaG9zdCBsYW5ndWFnZSB2YWx1ZSBmb3IgdGhlIGNv
bHNwYW4sIGV4cG9zZSB0aGUgQVJJQSB2YWx1ZS4KLSAgICBjb2x1bW5SYW5nZS5zZWNvbmQgPSBh
eENvbHVtblNwYW4oKTsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pihjb2x1bW5SYW5nZS5zZWNv
bmQpICE9IC0xKQotICAgICAgICByZXR1cm4gY29sdW1uUmFuZ2U7Ci0KLSAgICBjb2x1bW5SYW5n
ZS5zZWNvbmQgPSBjZWxsLnRhYmxlKCktPmNvbFRvRWZmQ29sKGNlbGwuY29sKCkgKyBjZWxsLmNv
bFNwYW4oKSkgLSBjb2x1bW5SYW5nZS5maXJzdDsKLQotICAgIHJldHVybiBjb2x1bW5SYW5nZTsK
KyAgICBlbnN1cmVJbmRleGVzVXBUb0RhdGUoKTsKKyAgICByZXR1cm4geyBtX2NvbHVtbkluZGV4
LCBjb2xTcGFuKCkgfTsKIH0KLSAgICAKKwogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbDo6dGl0bGVVSUVsZW1lbnQoKSBjb25zdAogewogICAgIC8vIFRyeSB0byBm
aW5kIGlmIHRoZSBmaXJzdCBjZWxsIGluIHRoaXMgcm93IGlzIGEgPHRoPi4gSWYgaXQgaXMsCiAg
ICAgLy8gdGhlbiBpdCBjYW4gYWN0IGFzIHRoZSB0aXRsZSB1aSBlbGVtZW50LiAoVGhpcyBpcyBv
bmx5IGluIHRoZQogICAgIC8vIGNhc2Ugd2hlbiB0aGUgdGFibGUgaXMgbm90IGFwcGVhcmluZyBh
cyBhbiBBWFRhYmxlLikKLSAgICBpZiAoaXNUYWJsZUNlbGwoKSB8fCAhaXM8UmVuZGVyVGFibGVD
ZWxsPihyZW5kZXJlcigpKSkKKyAgICBpZiAoaXNFeHBvc2VkVGFibGVDZWxsKCkgfHwgIWlzPFJl
bmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gVGFibGUgY2VsbHMgdGhhdCBhcmUgdGggY2Fubm90IGhhdmUgdGl0bGUgdWkgZWxlbWVu
dHMsIHNpbmNlIGJ5IGRlZmluaXRpb24KQEAgLTQxOCwxMCArNDAyLDkgQEAgaW50IEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uSW5kZXgoKSBjb25zdAogICAgIC8vICJBUklBIDEuMTog
SWYgdGhlIHNldCBvZiBjb2x1bW5zIHdoaWNoIGlzIHByZXNlbnQgaW4gdGhlIERPTSBpcyBjb250
aWd1b3VzLCBhbmQgaWYgdGhlcmUgYXJlIG5vIGNlbGxzIHdoaWNoIHNwYW4gbW9yZSB0aGFuIG9u
ZSByb3cKICAgICAvLyBvciBjb2x1bW4gaW4gdGhhdCBzZXQsIHRoZW4gYXV0aG9ycyBtYXkgcGxh
Y2UgYXJpYS1jb2xpbmRleCBvbiBlYWNoIHJvdywgc2V0dGluZyB0aGUgdmFsdWUgdG8gdGhlIGlu
ZGV4IG9mIHRoZSBmaXJzdCBjb2x1bW4gb2YgdGhlIHNldC4iCiAgICAgLy8gSGVyZSwgd2UgbGV0
IGl0cyBwYXJlbnQgcm93IHRvIHNldCBpdHMgaW5kZXggYmVmb3JlaGFuZCwgc28gd2UgZG9uJ3Qg
aGF2ZSB0byBnbyB0aHJvdWdoIHRoZSBzaWJsaW5ncyB0byBjYWxjdWxhdGUgdGhlIGluZGV4Lgot
ICAgIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogcGFyZW50Um93ID0gdGhpcy0+cGFyZW50Um93KCk7
Ci0gICAgaWYgKHBhcmVudFJvdyAmJiBtX2F4Q29sSW5kZXhGcm9tUm93ICE9IC0xKQorICAgIGlm
IChtX2F4Q29sSW5kZXhGcm9tUm93ICE9IC0xICYmIHBhcmVudFJvdygpKQogICAgICAgICByZXR1
cm4gbV9heENvbEluZGV4RnJvbVJvdzsKLSAgICAKKwogICAgIHJldHVybiAtMTsKIH0KICAgICAK
QEAgLTQzOCw2ICs0MjEsMzMgQEAgaW50IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93SW5k
ZXgoKSBjb25zdAogICAgIHJldHVybiAtMTsKIH0KIAordW5zaWduZWQgQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbDo6cm93U3BhbigpIGNvbnN0Cit7CisgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBBUklB
IHNwZWMsICJJZiBhcmlhLXJvd3NwYW4gaXMgdXNlZCBvbiBhbiBlbGVtZW50IGZvciB3aGljaCB0
aGUgaG9zdCBsYW5ndWFnZQorICAgIC8vIHByb3ZpZGVzIGFuIGVxdWl2YWxlbnQgYXR0cmlidXRl
LCB1c2VyIGFnZW50cyBtdXN0IGlnbm9yZSB0aGUgdmFsdWUgb2YgYXJpYS1yb3dzcGFuLiIKKyAg
ICBpZiAoYXV0byByb3dTcGFuID0gcGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUocm93c3Bh
bkF0dHIpKTsgcm93U3BhbiAmJiAqcm93U3BhbiA+PSAxKSB7CisgICAgICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RhYmxlcy5odG1sCisgICAgICAgIC8vIElm
IHJvd3NwYW4gaXMgZ3JlYXRlciB0aGFuIDY1NTM0LCBsZXQgaXQgYmUgNjU1MzQgaW5zdGVhZC4K
KyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4KCpyb3dTcGFuLCAxKSwgNjU1MzQpOwor
ICAgIH0KKyAgICBpZiAoYXV0byBhcmlhUm93U3BhbiA9IHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0
cmlidXRlKGFyaWFfcm93c3BhbkF0dHIpKTsgYXJpYVJvd1NwYW4gJiYgKmFyaWFSb3dTcGFuID49
IDEpCisgICAgICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heCgqYXJpYVJvd1NwYW4sIDEpLCA2
NTUzNCk7CisgICAgcmV0dXJuIDE7Cit9CisKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw6OmNvbFNwYW4oKSBjb25zdAoreworICAgIGlmIChhdXRvIGNvbFNwYW4gPSBwYXJzZUhUTUxJ
bnRlZ2VyKGdldEF0dHJpYnV0ZShjb2xzcGFuQXR0cikpOyBjb2xTcGFuICYmICpjb2xTcGFuID49
IDEpIHsKKyAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
dGFibGVzLmh0bWwKKyAgICAgICAgLy8gSWYgY29sc3BhbiBpcyBncmVhdGVyIHRoYW4gMTAwMCwg
bGV0IGl0IGJlIDEwMDAgaW5zdGVhZC4KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6bWF4
KCpjb2xTcGFuLCAxKSwgMTAwMCk7CisgICAgfQorICAgIGlmIChhdXRvIGFyaWFDb2xTcGFuID0g
cGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXJpYV9jb2xzcGFuQXR0cikpOyBhcmlhQ29s
U3BhbiAmJiAqYXJpYUNvbFNwYW4gPj0gMSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0ZDo6
bWF4KCphcmlhQ29sU3BhbiwgMSksIDEwMDApOworICAgIHJldHVybiAxOworfQorCisjaWYgVVNF
KEFUU1BJKQogaW50IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uU3BhbigpIGNvbnN0
CiB7CiAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBBUklBIHNwZWMsICJJZiBhcmlhLWNvbHBhbiBp
cyB1c2VkIG9uIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBob3N0IGxhbmd1YWdlCkBAIC00Njgs
NSArNDc4LDYgQEAgaW50IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93U3BhbigpIGNvbnN0
CiAKICAgICByZXR1cm4gLTE7CiB9Ci0gICAgCisjZW5kaWYgLy8gVVNFKEFUU1BJKQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCmluZGV4IGY0MGI4MmRjMTRhMi4uODYyNTJhYjc5
YjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNlbGwuaApAQCAtMzgsMzcgKzM4LDUwIEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlU
YWJsZVJvdzsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwgOiBwdWJsaWMgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsPiBjcmVhdGUoTm9kZSYpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGwoKTsKKyAgICBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IGZpbmFsOworICAgIGJv
b2wgaXNFeHBvc2VkVGFibGVDZWxsKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc1RhYmxlSGVh
ZGVyQ2VsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNDb2x1bW5IZWFkZXJDZWxsKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgYm9vbCBpc1Jvd0hlYWRlckNlbGwoKSBjb25zdCBvdmVycmlkZTsKIAorICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRhYmxlKiBwYXJlbnRUYWJsZSgpIGNvbnN0OworCiAgICAg
Ly8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRoZSBjZWxsLgot
ICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd0luZGV4UmFuZ2UoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdl
KCkgY29uc3QgZmluYWw7CiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNv
bHVtbiBzcGFuIG9mIHRoZSBjZWxsLgotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
IGNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiBjb2x1bW5JbmRleFJhbmdlKCkgY29uc3QgZmluYWw7CiAKICAgICBBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29sdW1uSGVhZGVycygpIG92ZXJyaWRlOwogICAgIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dIZWFkZXJzKCkgb3ZlcnJpZGU7CiAKICAgICBp
bnQgYXhDb2x1bW5JbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGludCBheFJvd0luZGV4KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgY29sU3BhbigpIGNvbnN0OworICAgIHVuc2ln
bmVkIHJvd1NwYW4oKSBjb25zdDsKKyAgICB2b2lkIHNldEFYQ29sSW5kZXhGcm9tUm93KGludCBp
bmRleCkgeyBtX2F4Q29sSW5kZXhGcm9tUm93ID0gaW5kZXg7IH0KKworICAgIHZvaWQgc2V0Um93
SW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9yb3dJbmRleCA9IGluZGV4OyB9CisgICAgdm9pZCBz
ZXRDb2x1bW5JbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2NvbHVtbkluZGV4ID0gaW5kZXg7IH0K
KworI2lmIFVTRShBVFNQSSkKICAgICBpbnQgYXhDb2x1bW5TcGFuKCkgY29uc3Q7CiAgICAgaW50
IGF4Um93U3BhbigpIGNvbnN0OwotICAgIHZvaWQgc2V0QVhDb2xJbmRleEZyb21Sb3coaW50IGlu
ZGV4KSB7IG1fYXhDb2xJbmRleEZyb21Sb3cgPSBpbmRleDsgfQorI2VuZGlmCiAKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKFJlbmRlck9iamVjdCopOwor
ICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwoTm9kZSYpOwogCiAgICAgQWNjZXNz
aWJpbGl0eVRhYmxlUm93KiBwYXJlbnRSb3coKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlUYWJsZSogcGFyZW50VGFibGUoKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBk
ZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIGZpbmFsOwogICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgaW50IG1f
cm93SW5kZXg7Ci0gICAgaW50IG1fYXhDb2xJbmRleEZyb21Sb3c7CisgICAgdW5zaWduZWQgbV9y
b3dJbmRleCB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2NvbHVtbkluZGV4IHsgMCB9OworICAgIGlu
dCBtX2F4Q29sSW5kZXhGcm9tUm93IHsgLTEgfTsKIAogcHJpdmF0ZToKICAgICAvLyBJZiBhIHRh
YmxlIGNlbGwgaXMgbm90IGV4cG9zZWQgYXMgYSB0YWJsZSBjZWxsLCBhIFRIIGVsZW1lbnQgY2Fu
IHNlcnZlIGFzIGl0cyB0aXRsZSBVSSBlbGVtZW50LgpAQCAtNzgsNiArOTEsNyBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBleHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
c3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAgIEFjY2Vzc2liaWxp
dHlUYWJsZVJvdyogYXJpYU93bmVkQnlQYXJlbnQoKSBjb25zdDsKKyAgICB2b2lkIGVuc3VyZUlu
ZGV4ZXNVcFRvRGF0ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc1RhYmxlQ2VsbEluU2FtZVJvd0dy
b3VwKEFYQ29yZU9iamVjdCopOwogICAgIGJvb2wgaXNUYWJsZUNlbGxJblNhbWVDb2xHcm91cChB
WENvcmVPYmplY3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcAppbmRleCBhYzQyYWQzMDRiMGQuLjY4NmIz
NjVkMjkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNwcApAQCAtMjksMTcgKzI5LDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCIKIAotI2lu
Y2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
LmgiCi0jaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNp
bmNsdWRlICJSZW5kZXJUYWJsZS5oIgotI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgotI2lu
Y2x1ZGUgIlJlbmRlclRhYmxlU2VjdGlvbi5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJs
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi11c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVt
bigpID0gZGVmYXVsdDsKIApAQCAtNzEsMTAyICs2MywxNyBAQCBMYXlvdXRSZWN0IEFjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbjo6ZWxlbWVudFJlY3QoKSBjb25zdAogCiBBWENvcmVPYmplY3QqIEFj
Y2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6Y29sdW1uSGVhZGVyKCkKIHsKLSAgICBpZiAoIW1fcGFy
ZW50IHx8ICFpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX3BhcmVudCkKLSAgICAgICAgfHwgIW1f
cGFyZW50LT5pc0V4cG9zYWJsZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBtX3BhcmVudC0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXJl
bmRlcmVyKQorICAgIGF1dG8qIHBhcmVudFRhYmxlID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZT4obV9wYXJlbnQuZ2V0KCkpOworICAgIGlmICghcGFyZW50VGFibGUgfHwgIXBh
cmVudFRhYmxlLT5pc0V4cG9zYWJsZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGF1dG8mIHBhcmVudFRhYmxlID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9wYXJl
bnQpOwotCi0gICAgaWYgKHBhcmVudFRhYmxlLmlzQXJpYVRhYmxlKCkpIHsKLSAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBjZWxsIDogY2hpbGRyZW4oKSkgewotICAgICAgICAgICAgaWYgKGNlbGwt
PnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGNlbGwuZ2V0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNlbGwgOiBjaGlsZHJlbigpKSB7CisgICAg
ICAgIGlmIChjZWxsLT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVh
ZGVyKQorICAgICAgICAgICAgcmV0dXJuIGNlbGwuZ2V0KCk7CiAgICAgfQotCi0gICAgaWYgKCFp
czxSZW5kZXJUYWJsZT4oKnJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
Ci0gICAgUmVuZGVyVGFibGUmIHRhYmxlID0gZG93bmNhc3Q8UmVuZGVyVGFibGU+KCpyZW5kZXJl
cik7Ci0KLSAgICAvLyB0cnkgdGhlIDx0aGVhZD4gc2VjdGlvbiBmaXJzdC4gdGhpcyBkb2Vzbid0
IHJlcXVpcmUgdGggdGFncwotICAgIGlmIChhdXRvKiBoZWFkZXJPYmplY3QgPSBoZWFkZXJPYmpl
Y3RGb3JTZWN0aW9uKHRhYmxlLmhlYWRlcigpLCBmYWxzZSkpCi0gICAgICAgIHJldHVybiBoZWFk
ZXJPYmplY3Q7Ci0gICAgCi0gICAgUmVuZGVyVGFibGVTZWN0aW9uKiBib2R5U2VjdGlvbiA9IHRh
YmxlLmZpcnN0Qm9keSgpOwotICAgIHdoaWxlIChib2R5U2VjdGlvbiAmJiBib2R5U2VjdGlvbi0+
aXNBbm9ueW1vdXMoKSkKLSAgICAgICAgYm9keVNlY3Rpb24gPSB0YWJsZS5zZWN0aW9uQmVsb3co
Ym9keVNlY3Rpb24sIFNraXBFbXB0eVNlY3Rpb25zKTsKLSAgICAKLSAgICAvLyBub3cgdHJ5IGZv
ciA8dGg+IHRhZ3MgaW4gdGhlIGZpcnN0IGJvZHkuIElmIHRoZSBmaXJzdCBib2R5IGlzIAotICAg
IHJldHVybiBoZWFkZXJPYmplY3RGb3JTZWN0aW9uKGJvZHlTZWN0aW9uLCB0cnVlKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uOjpoZWFkZXJPYmplY3RGb3JTZWN0aW9uKFJlbmRlclRhYmxlU2VjdGlvbiogc2Vj
dGlvbiwgYm9vbCB0aFRhZ1JlcXVpcmVkKQotewotICAgIGlmICghc2VjdGlvbikKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgdW5zaWduZWQgbnVtQ29scyA9IHNlY3Rpb24tPm51
bUNvbHVtbnMoKTsKLSAgICBpZiAobV9jb2x1bW5JbmRleCA+PSBudW1Db2xzKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBpZiAoIXNlY3Rpb24tPm51bVJvd3MoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gbnVs
bHB0cjsKLSAgICAvLyBhbHNvIGFjY291bnQgZm9yIGNlbGxzIHRoYXQgaGF2ZSBhIHNwYW4KLSAg
ICBmb3IgKGludCB0ZXN0Q29sID0gbV9jb2x1bW5JbmRleDsgdGVzdENvbCA+PSAwOyAtLXRlc3RD
b2wpIHsKLSAgICAgICAgCi0gICAgICAgIC8vIFJ1biBkb3duIHRoZSByb3dzIGluIGNhc2UgaW5p
dGlhbCByb3dzIGFyZSBpbnZhbGlkIChsaWtlIHdoZW4gYSA8Y2FwdGlvbj4gaXMgdXNlZCkuCi0g
ICAgICAgIHVuc2lnbmVkIHJvd0NvdW50ID0gc2VjdGlvbi0+bnVtUm93cygpOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIHRlc3RSb3cgPSAwOyB0ZXN0Um93IDwgcm93Q291bnQ7IHRlc3RSb3crKykg
ewotICAgICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiB0ZXN0Q2VsbCA9IHNlY3Rpb24tPnByaW1h
cnlDZWxsQXQodGVzdFJvdywgdGVzdENvbCk7Ci0gICAgICAgICAgICAvLyBObyBjZWxsIGF0IHRo
aXMgaW5kZXgsIGtlZXAgY2hlY2tpbmcgbW9yZSByb3dzIGFuZCBjb2x1bW5zLgotICAgICAgICAg
ICAgaWYgKCF0ZXN0Q2VsbCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgLy8gSWYgd2UndmUgcmVhY2hlZCBhIGNlbGwgdGhhdCBkb2Vzbid0IGV2
ZW4gb3ZlcmxhcCBvdXIgY29sdW1uIGl0IGNhbid0IGJlIHRoZSBoZWFkZXIuCi0gICAgICAgICAg
ICBpZiAoKHRlc3RDZWxsLT5jb2woKSArICh0ZXN0Q2VsbC0+Y29sU3BhbigpLTEpKSA8IG1fY29s
dW1uSW5kZXgpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIE5vZGUqIHRlc3RDZWxsTm9kZSA9IHRlc3RDZWxsLT5lbGVtZW50KCk7Ci0gICAgICAgICAg
ICAvLyBJZiB0aGUgUmVuZGVyVGFibGVDZWxsIGRvZXNuJ3QgaGF2ZSBhbiBlbGVtZW50IGJlY2F1
c2UgaXRzIGFub255bW91cywKLSAgICAgICAgICAgIC8vIHRyeSB0byBzZWUgaWYgd2UgY2FuIGZp
bmQgdGhlIG9yaWdpbmFsIGNlbGwgZWxlbWVudCB0byBjaGVjayBpZiBpdCBoYXMgYSA8dGg+IHRh
Zy4KLSAgICAgICAgICAgIGlmICghdGVzdENlbGxOb2RlICYmIHRlc3RDZWxsLT5pc0Fub255bW91
cygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEVsZW1lbnQqIHBhcmVudEVsZW1lbnQgPSB0ZXN0
Q2VsbC0+cGFyZW50KCkgPyB0ZXN0Q2VsbC0+cGFyZW50KCktPmVsZW1lbnQoKSA6IG51bGxwdHIp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQtPmhhc1RhZ05hbWUodHJU
YWcpICYmIHRlc3RDb2wgPCBzdGF0aWNfY2FzdDxpbnQ+KHBhcmVudEVsZW1lbnQtPmNvdW50Q2hp
bGROb2RlcygpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDZWxsTm9kZSA9IHBhcmVu
dEVsZW1lbnQtPnRyYXZlcnNlVG9DaGlsZEF0KHRlc3RDb2wpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCF0ZXN0Q2VsbE5vZGUpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIElmIHRoIGlz
IHJlcXVpcmVkLCBidXQgd2UgZm91bmQgYW4gZWxlbWVudCB0aGF0IGRvZXNuJ3QgaGF2ZSBhIHRo
IHRhZywgd2UgY2FuIHN0b3AgbG9va2luZy4KLSAgICAgICAgICAgIGlmICh0aFRhZ1JlcXVpcmVk
ICYmICF0ZXN0Q2VsbE5vZGUtPmhhc1RhZ05hbWUodGhUYWcpKQotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjZWxsID0gdGVzdENlbGw7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAoIWNlbGwpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byogY2VsbE9iamVjdCA9IGF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUoY2VsbCk7Ci0gICAgaWYgKCFjZWxsT2JqZWN0IHx8IGNlbGxPYmpl
Y3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIAotICAgIHJldHVybiBjZWxsT2JqZWN0OwotfQotICAgIAogYm9vbCBBY2Nlc3NpYmls
aXR5VGFibGVDb2x1bW46OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fcGFyZW50KQpAQCAtMTgyLDIyICs4OSwxOCBAQCBib29sIEFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogdm9p
ZCBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmFkZENoaWxkcmVuKCkKIHsKICAgICBBU1NFUlQo
IW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7IAotICAgIAogICAgIG1fY2hpbGRyZW5Jbml0aWFsaXpl
ZCA9IHRydWU7Ci0gICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGU+KG1fcGFyZW50KSkKLSAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgcGFyZW50VGFibGUgPSBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGU+KCptX3BhcmVudCk7Ci0gICAgaWYgKCFwYXJlbnRUYWJsZS5pc0V4cG9zYWJs
ZSgpKQorICAgIGF1dG8qIHBhcmVudFRhYmxlID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxp
dHlUYWJsZT4obV9wYXJlbnQuZ2V0KCkpOworICAgIGlmICghcGFyZW50VGFibGUgfHwgIXBhcmVu
dFRhYmxlLT5pc0V4cG9zYWJsZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaW50IG51
bVJvd3MgPSBwYXJlbnRUYWJsZS5yb3dDb3VudCgpOwotICAgIAorCisgICAgaW50IG51bVJvd3Mg
PSBwYXJlbnRUYWJsZS0+cm93Q291bnQoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVJv
d3M7ICsraSkgewotICAgICAgICBhdXRvKiBjZWxsID0gcGFyZW50VGFibGUuY2VsbEZvckNvbHVt
bkFuZFJvdyhtX2NvbHVtbkluZGV4LCBpKTsKKyAgICAgICAgYXV0byogY2VsbCA9IHBhcmVudFRh
YmxlLT5jZWxsRm9yQ29sdW1uQW5kUm93KG1fY29sdW1uSW5kZXgsIGkpOwogICAgICAgICBpZiAo
IWNlbGwpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCisKICAgICAgICAgLy8gbWFr
ZSBzdXJlIHRoZSBsYXN0IG9uZSBpc24ndCB0aGUgc2FtZSBhcyB0aGlzIG9uZSAocm93c3BhbiBj
ZWxscykKICAgICAgICAgaWYgKG1fY2hpbGRyZW4uc2l6ZSgpID4gMCAmJiBtX2NoaWxkcmVuLmxh
c3QoKSA9PSBjZWxsKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAppbmRleCA2
YjFhY2NkMGY1MDYuLmIwNWIyOTM4ZTdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCkBAIC0yOSw4ICsyOSw2
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0Lmgi
Ci0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC01Niw3ICs1NCw2IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKCk7CiAgICAgCi0gICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0Rm9yU2VjdGlvbihSZW5kZXJUYWJsZVNlY3Rpb24q
LCBib29sIHRoVGFnUmVxdWlyZWQpOwogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAppbmRleCA1ZTNiYWJlMzY2YzIu
LjBhM2JjMzYxMmZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcApAQCAtMjksMjQgKzI5LDI1IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCiAKLSNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgotI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKLSNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKLSNpbmNsdWRlICJSZW5kZXJUYWJs
ZVJvdy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7Ci0gICAgCisKIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6QWNjZXNzaWJpbGl0eVRh
YmxlUm93KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0KHJlbmRlcmVyKQogewogfQogCitBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OkFjY2Vzc2li
aWxpdHlUYWJsZVJvdyhOb2RlJiBub2RlKQorICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dChub2RlKQoreworfQorCiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6On5BY2Nlc3NpYmlsaXR5VGFi
bGVSb3coKSA9IGRlZmF1bHQ7CiAKIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+IEFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkBAIC01NCw2ICs1
NSwxMSBAQCBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlUm93PiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6
OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEFjY2Vzc2liaWxpdHlUYWJsZVJvdyhyZW5kZXJlcikpOwogfQogCitSZWY8QWNjZXNzaWJpbGl0
eVRhYmxlUm93PiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZShOb2RlJiBub2RlKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlUYWJsZVJvdyhub2RlKSk7Cit9
CisKIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6ZGV0ZXJtaW5lQWNj
ZXNzaWJpbGl0eVJvbGUoKQogewogICAgIGlmICghaXNUYWJsZVJvdygpKQpAQCAtMTEzLDE5ICsx
MTksMTkgQEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OnBhcmVu
dFRhYmxlKCkgY29uc3QKIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpoZWFk
ZXJPYmplY3QoKQogewogICAgIGNvbnN0IGF1dG8mIHJvd0NoaWxkcmVuID0gY2hpbGRyZW4oKTsK
LSAgICBpZiAoIXJvd0NoaWxkcmVuLnNpemUoKSkKKyAgICBpZiAocm93Q2hpbGRyZW4uaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBhdXRvKiBjZWxsID0gcm93
Q2hpbGRyZW5bMF0uZ2V0KCk7Ci0gICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihj
ZWxsKSB8fCAhY2VsbC0+bm9kZSgpIHx8ICFjZWxsLT5ub2RlKCktPmhhc1RhZ05hbWUodGhUYWcp
KQorICAgIGF1dG8qIGZpcnN0Q2VsbCA9IHJvd0NoaWxkcmVuWzBdLmdldCgpOworICAgIGlmICgh
Zmlyc3RDZWxsIHx8ICFmaXJzdENlbGwtPm5vZGUoKSB8fCAhZmlyc3RDZWxsLT5ub2RlKCktPmhh
c1RhZ05hbWUodGhUYWcpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIC8v
IFZlcmlmeSB0aGF0IHRoZSByb3cgaGVhZGVyIGlzIG5vdCBwYXJ0IG9mIGFuIGVudGlyZSByb3cg
b2YgaGVhZGVycy4KICAgICAvLyBJbiB0aGF0IGNhc2UsIGl0IGlzIHVubGlrZWx5IHRoaXMgaXMg
YSByb3cgaGVhZGVyLgogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiByb3dDaGlsZHJlbikg
ewogICAgICAgICAvLyBXZSBmb3VuZCBhIG5vbi1oZWFkZXIgY2VsbCwgc28gdGhpcyBpcyBub3Qg
YW4gZW50aXJlIHJvdyBvZiBoZWFkZXJzIC0tIHJldHVybiB0aGUgb3JpZ2luYWwgaGVhZGVyIGNl
bGwuCiAgICAgICAgIGlmIChjaGlsZC0+bm9kZSgpICYmICFjaGlsZC0+bm9kZSgpLT5oYXNUYWdO
YW1lKHRoVGFnKSkKLSAgICAgICAgICAgIHJldHVybiBjZWxsOworICAgICAgICAgICAgcmV0dXJu
IGZpcnN0Q2VsbDsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAppbmRleCA5
NTM1OGNmMjI2YTQuLmVkYmRhYzc4NWQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCkBAIC0zNyw2ICszNyw3IEBAIGNs
YXNzIEFjY2Vzc2liaWxpdHlUYWJsZTsKIGNsYXNzIEFjY2Vzc2liaWxpdHlUYWJsZVJvdyA6IHB1
YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4gY3JlYXRlKFJlbmRlck9iamVjdCopOworICAgIHN0YXRp
YyBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlUm93PiBjcmVhdGUoTm9kZSYpOwogICAgIHZpcnR1YWwg
fkFjY2Vzc2liaWxpdHlUYWJsZVJvdygpOwogCiAgICAgLy8gcmV0cmlldmVzIHRoZSAicm93IiBo
ZWFkZXIgKGEgdGggdGFnIGluIHRoZSByaWdodG1vc3QgY29sdW1uKQpAQCAtNTcsNiArNTgsNyBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VGFibGVS
b3coUmVuZGVyT2JqZWN0Kik7CisgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVRhYmxlUm93KE5v
ZGUmKTsKIAogICAgIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xl
KCkgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRz
cGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNwaS5jcHAKaW5kZXgg
ODU1ZGEwZTM3MGY3Li5kNTU2NTM1NTY2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRh
YmxlQXRzcGkuY3BwCkBAIC05Miw3ICs5Miw3IEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6c190YWJsZUZ1bmN0aW9ucyA9IHsKICAgICAgICAgICAgIGF1
dG8gcm93ID0gYXRzcGlPYmplY3QtPnJvd0F0SW5kZXgoaW5kZXgpOwogICAgICAgICAgICAgYXV0
byBjb2x1bW4gPSBhdHNwaU9iamVjdC0+Y29sdW1uQXRJbmRleChpbmRleCk7CiAgICAgICAgICAg
ICBhdXRvKiBjZWxsID0gYXRzcGlPYmplY3QtPm1fY29yZU9iamVjdCA/IGF0c3BpT2JqZWN0LT5t
X2NvcmVPYmplY3QtPmNlbGxGb3JDb2x1bW5BbmRSb3coKmNvbHVtbiwgKnJvdykgOiBudWxscHRy
OwotICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZv
Y2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIoYmlpaWliKSIsIGNlbGwgJiYgY2VsbC0+aXNUYWJsZUNl
bGwoKSA/IFRSVUUgOiBGQUxTRSwKKyAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlv
bl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKGJpaWlpYikiLCBjZWxs
ICYmIGNlbGwtPmlzRXhwb3NlZFRhYmxlQ2VsbCgpID8gVFJVRSA6IEZBTFNFLAogICAgICAgICAg
ICAgICAgIHJvdy52YWx1ZV9vcigtMSksIGNvbHVtbi52YWx1ZV9vcigtMSksIHJvdyAmJiBjb2x1
bW4gPyBhdHNwaU9iamVjdC0+cm93RXh0ZW50KCpyb3csICpjb2x1bW4pIDogLTEsCiAgICAgICAg
ICAgICAgICAgcm93ICYmIGNvbHVtbiA/IGF0c3BpT2JqZWN0LT5jb2x1bW5FeHRlbnQoKnJvdywg
KmNvbHVtbikgOiAtMSwgRkFMU0UpKTsKICAgICAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKG1l
dGhvZE5hbWUsICJHZXRTZWxlY3RlZFJvd3MiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVDZWxsQXRzcGkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0
VGFibGVDZWxsQXRzcGkuY3BwCmluZGV4IGQ0YTQ1MmI1Y2IwYy4uMTBhMmVlMzliYjRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlP
YmplY3RUYWJsZUNlbGxBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVDZWxsQXRzcGkuY3BwCkBAIC02NCw3ICs2
NCw3IEBAIEdEQnVzSW50ZXJmYWNlVlRhYmxlIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6c190
YWJsZUNlbGxGdW5jdGlvbnMgPSB7CiAgICAgICAgICAgICByZXR1cm4gZ192YXJpYW50X25ld19p
bnQzMihhdHNwaU9iamVjdC0+cm93U3BhbigpKTsKICAgICAgICAgaWYgKCFnX3N0cmNtcDAocHJv
cGVydHlOYW1lLCAiVGFibGUiKSkgewogICAgICAgICAgICAgYXV0byogYXhPYmplY3QgPSBhdHNw
aU9iamVjdC0+bV9jb3JlT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhYXhP
YmplY3QtPmlzVGFibGVDZWxsKCkpCisgICAgICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9i
amVjdC0+aXNFeHBvc2VkVGFibGVDZWxsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCkubnVsbFJlZmVyZW5jZSgpOwogCiAgICAgICAgICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqIHdyYXBwZXIgPSBhdHNwaU9iamVjdC5wdHIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggZmFkOTExZTY2MmI1
Li45Y2Q0MGQ5ZmY5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CkBAIC0xMjg2LDcgKzEyODYsNyBAQCAtIChBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKil0YWJsZUNl
bGxQYXJlbnQKIHsKICAgICAvLyBGaW5kIGlmIHRoaXMgZWxlbWVudCBpcyBpbiBhIHRhYmxlIGNl
bGwuCiAgICAgaWYgKEFYQ29yZU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFu
Y2VzdG9yPEFYQ29yZU9iamVjdD4oKnNlbGYuYXhCYWNraW5nT2JqZWN0LCB0cnVlLCBbXSAoY29u
c3QgQVhDb3JlT2JqZWN0JiBvYmplY3QpIHsKLSAgICAgICAgcmV0dXJuIG9iamVjdC5pc1RhYmxl
Q2VsbCgpOworICAgICAgICByZXR1cm4gb2JqZWN0LmlzRXhwb3NlZFRhYmxlQ2VsbCgpOwogICAg
IH0pKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+
KHBhcmVudCk7CiAgICAgcmV0dXJuIG5pbDsKQEAgLTEzNDcsNyArMTM0Nyw3IEBAIC0gKE5TQXJy
YXkgKilhY2Nlc3NpYmlsaXR5SGVhZGVyRWxlbWVudHMKICAgICAvLyBXZSBzaG91bGQgY29uc2lk
ZXIgdGhlIGNhc2VzIHdoZXJlIHRoZSByb3cgbnVtYmVyIGRvZXMgTk9UIG1hdGNoIHRoZSBpbmRl
eCBpbgogICAgIC8vIHJvd0hlYWRlcnMsIHRoZSBtb3N0IGNvbW1vbiBjYXNlIGlzIHdoZW4gcm93
MC9jb2wwIGRvZXMgbm90IGhhdmUgYSBoZWFkZXIuCiAgICAgZm9yIChjb25zdCBhdXRvJiByb3dI
ZWFkZXIgOiByb3dIZWFkZXJzKSB7Ci0gICAgICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbD4oKnJvd0hlYWRlcikpCisgICAgICAgIGlmICghcm93SGVhZGVyLT5pc0V4cG9zZWRUYWJs
ZUNlbGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBhdXRvIHJvd0hlYWRlclJhbmdl
ID0gcm93SGVhZGVyLT5yb3dJbmRleFJhbmdlKCk7CiAgICAgICAgIGlmIChyb3dSYW5nZUluZGV4
ID49IHJvd0hlYWRlclJhbmdlLmZpcnN0ICYmIHJvd1JhbmdlSW5kZXggPCByb3dIZWFkZXJSYW5n
ZS5maXJzdCArIHJvd0hlYWRlclJhbmdlLnNlY29uZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0
LmNwcAppbmRleCA0NjVkNGViYTExNTYuLjFmNTkxZGMzMWU0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHAKQEAgLTE5NywxNyArMTk3LDE2IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9i
CiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTdXBwb3J0c1NlbGVjdGVkUm93
cywgb2JqZWN0LnN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkpOwogICAgICAgICBzZXRPYmplY3RWZWN0
b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29sdW1ucywgb2JqZWN0LmNvbHVtbnMoKSk7CiAg
ICAgICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSb3dzLCBvYmpl
Y3Qucm93cygpKTsKLSAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbkNv
dW50LCBvYmplY3QuY29sdW1uQ291bnQoKSk7Ci0gICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpSb3dDb3VudCwgb2JqZWN0LnJvd0NvdW50KCkpOwogICAgICAgICBzZXRPYmplY3RW
ZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2VsbHMsIG9iamVjdC5jZWxscygpKTsKICAg
ICAgICAgc2V0T2JqZWN0VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlZpc2libGVSb3dz
LCBvYmplY3QudmlzaWJsZVJvd3MoKSk7CiAgICAgICAgIHNldE9iamVjdFByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpIZWFkZXJDb250YWluZXIsIG9iamVjdC5oZWFkZXJDb250YWluZXIoKSk7CiAg
ICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBWENvbHVtbkNvdW50LCBvYmplY3Qu
YXhDb2x1bW5Db3VudCgpKTsKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFY
Um93Q291bnQsIG9iamVjdC5heFJvd0NvdW50KCkpOworICAgICAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6U2xvdEdyaWQsIG9iamVjdC5zbG90R3JpZCgpKTsKICAgICB9CiAKLSAgICBp
ZiAob2JqZWN0LmlzVGFibGVDZWxsKCkpIHsKLSAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OklzVGFibGVDZWxsLCB0cnVlKTsKKyAgICBpZiAob2JqZWN0LmlzRXhwb3NlZFRhYmxl
Q2VsbCgpKSB7CisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0V4cG9zZWRU
YWJsZUNlbGwsIHRydWUpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29s
dW1uSW5kZXhSYW5nZSwgb2JqZWN0LmNvbHVtbkluZGV4UmFuZ2UoKSk7CiAgICAgICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSb3dJbmRleFJhbmdlLCBvYmplY3Qucm93SW5kZXhSYW5n
ZSgpKTsKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFYQ29sdW1uSW5kZXgs
IG9iamVjdC5heENvbHVtbkluZGV4KCkpOwpAQCAtNDkxLDE1ICs0OTAsMjAgQEAgYm9vbCBBWElz
b2xhdGVkT2JqZWN0Ojppc0RldGFjaGVkRnJvbVBhcmVudCgpCiAKIEFYQ29yZU9iamVjdCogQVhJ
c29sYXRlZE9iamVjdDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW5JbmRleCwg
dW5zaWduZWQgcm93SW5kZXgpCiB7Ci0gICAgQVhJRCBjZWxsSUQgPSBBY2Nlc3NpYmlsaXR5Ojpy
ZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8QVhJRD4oWyZjb2x1bW5JbmRleCwgJnJvd0luZGV4
LCB0aGlzXSAoKSAtPiBBWElEIHsKLSAgICAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGFzc29jaWF0
ZWRBWE9iamVjdCgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBjZWxsID0gb2JqZWN0LT5jZWxs
Rm9yQ29sdW1uQW5kUm93KGNvbHVtbkluZGV4LCByb3dJbmRleCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGNlbGwtPm9iamVjdElEKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHsgfTsK
LSAgICB9KTsKLQotICAgIHJldHVybiB0cmVlKCktPm9iamVjdEZvcklEKGNlbGxJRCkuZ2V0KCk7
CisgICAgLy8gQVhQcm9wZXJ0eU5hbWU6OlNsb3RHcmlkIGNhbiBiZSBiaWcsIHNvIG1ha2Ugc3Vy
ZSBub3QgdG8gY29weSBpdC4KKyAgICBhdXRvIHNsb3RHcmlkSXRlcmF0b3IgPSBtX3Byb3BlcnR5
TWFwLmZpbmQoQVhQcm9wZXJ0eU5hbWU6OlNsb3RHcmlkKTsKKyAgICBpZiAoc2xvdEdyaWRJdGVy
YXRvciA9PSBtX3Byb3BlcnR5TWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIEFYSUQgY2VsbElEID0gV1RGOjpzd2l0Y2hPbihzbG90R3JpZEl0ZXJhdG9yLT52YWx1ZSwK
KyAgICAgICAgWyZdIChWZWN0b3I8VmVjdG9yPEFYSUQ+PiYgc2xvdEdyaWQpIHsKKyAgICAgICAg
ICAgIGlmIChyb3dJbmRleCA+PSBzbG90R3JpZC5zaXplKCkgfHwgY29sdW1uSW5kZXggPj0gc2xv
dEdyaWRbcm93SW5kZXhdLnNpemUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQVhJRCgpOwor
ICAgICAgICAgICAgcmV0dXJuIHNsb3RHcmlkW3Jvd0luZGV4XVtjb2x1bW5JbmRleF07CisgICAg
ICAgIH0sCisgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gQVhJRCgpOyB9CisgICAgKTsKKyAg
ICByZXR1cm4gY2VsbElEID8gdHJlZSgpLT5vYmplY3RGb3JJRChjZWxsSUQpLmdldCgpIDogbnVs
bHB0cjsKIH0KIAogdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphY2Nlc3NpYmlsaXR5VGV4dChWZWN0
b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0cykgY29uc3QKQEAgLTE2NTQsNiArMTY1OCwxMiBA
QCBib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTW9kYWxOb2RlKCkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNUYWJsZUNlbGwoKSBjb25zdAor
eworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogQVhD
b3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGVlZWI2ZDIyZmM3MC4uYzc5YzgwMGZiMmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC0xMzksMTAgKzEzOSwxMCBAQCBwcml2YXRlOgogICAg
IEFYSXNvbGF0ZWRPYmplY3QqIGV4cG9zZWRUYWJsZUFuY2VzdG9yKGJvb2wgaW5jbHVkZVNlbGYg
PSBmYWxzZSkgY29uc3QgZmluYWwgeyByZXR1cm4gQWNjZXNzaWJpbGl0eTo6ZXhwb3NlZFRhYmxl
QW5jZXN0b3IoKnRoaXMsIGluY2x1ZGVTZWxmKTsgfQogICAgIGludCB0YWJsZUxldmVsKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gaW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlRh
YmxlTGV2ZWwpOyB9CiAgICAgYm9vbCBzdXBwb3J0c1NlbGVjdGVkUm93cygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNT
ZWxlY3RlZFJvd3MpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbnMo
KSBvdmVycmlkZSB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9yQXR0cmlidXRl
VmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbnMpKTsgfQotICAgIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciByb3dzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5vYmplY3Rz
Rm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpSb3dzKSk7
IH0KLSAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCgpIG92ZXJyaWRlIHsgcmV0dXJuIHVuc2lnbmVk
QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbkNvdW50KTsgfQotICAgIHVuc2ln
bmVkIHJvd0NvdW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gdW5zaWduZWRBdHRyaWJ1dGVWYWx1ZShB
WFByb3BlcnR5TmFtZTo6Um93Q291bnQpOyB9CisgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGNvbHVtbnMoKSBmaW5hbCB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVjdG9y
QXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbnMpKTsgfQorICAgIEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dzKCkgZmluYWwgeyByZXR1cm4gdHJlZSgpLT5v
YmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpS
b3dzKSk7IH0KKyAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCgpIGZpbmFsIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihjb2x1bW5zKCkuc2l6ZSgpKTsgfQorICAgIHVuc2lnbmVkIHJvd0Nv
dW50KCkgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJvd3MoKS5zaXplKCkp
OyB9CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNlbGxzKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFY
UHJvcGVydHlOYW1lOjpDZWxscykpOyB9CiAgICAgQVhDb3JlT2JqZWN0KiBjZWxsRm9yQ29sdW1u
QW5kUm93KHVuc2lnbmVkLCB1bnNpZ25lZCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGNvbHVtbkhlYWRlcnMoKSBvdmVycmlkZTsKQEAgLTE1Myw3ICsxNTMsOCBA
QCBwcml2YXRlOgogICAgIGludCBheFJvd0NvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
aW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFYUm93Q291bnQpOyB9CiAKICAgICAv
LyBUYWJsZSBjZWxsIHN1cHBvcnQuCi0gICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNUYWJsZUNl
bGwpOyB9CisgICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgaXNF
eHBvc2VkVGFibGVDZWxsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVl
KEFYUHJvcGVydHlOYW1lOjpJc0V4cG9zZWRUYWJsZUNlbGwpOyB9CiAgICAgLy8gUmV0dXJucyB0
aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRoZSBjZWxsLgogICAgIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd0luZGV4UmFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBwYWlyQXR0cmlidXRlVmFsdWU8dW5zaWduZWQ+KEFYUHJvcGVydHlOYW1lOjpSb3dJbmRl
eFJhbmdlKTsgfQogICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4g
c3BhbiBvZiB0aGUgY2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCBiYzg1OTUyY2Iy
Y2EuLmI0Y2Y0MjRkYTc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtNTY0LDYgKzU2
NCw5IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0aWVzKEFYQ29yZU9i
amVjdCYgYXhPYmplY3QsIGNvbnN0IFZlY3RvcjxBCiAgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5h
bWU6OlNldFNpemU6CiAgICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6
OlNldFNpemUsIGF4T2JqZWN0LnNldFNpemUoKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBBWFByb3BlcnR5TmFtZTo6U2xvdEdyaWQ6CisgICAgICAgICAgICBwcm9wZXJ0eU1h
cC5zZXQoQVhQcm9wZXJ0eU5hbWU6OlNsb3RHcmlkLCBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJp
bGl0eU9iamVjdD4oYXhPYmplY3QpLT5zbG90R3JpZCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpTb3J0RGlyZWN0aW9uOgogICAgICAgICAgICAg
cHJvcGVydHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpTb3J0RGlyZWN0aW9uLCBzdGF0aWNfY2Fz
dDxpbnQ+KGF4T2JqZWN0LnNvcnREaXJlY3Rpb24oKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC02MDgsOCArNjExLDI0IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVBbmREZXBl
bmRlbnRQcm9wZXJ0aWVzKEFjY2Vzc2liaWxpdHlPYmplY3QmIGF4T2JqCiAKICAgICB1cGRhdGVO
b2RlKGF4T2JqZWN0KTsKIAotICAgIGlmIChhdXRvKiB0cmVlQW5jZXN0b3IgPSBBY2Nlc3NpYmls
aXR5OjpmaW5kQW5jZXN0b3IoYXhPYmplY3QsIHRydWUsIFtdIChjb25zdCBhdXRvJiBvYmplY3Qp
IHsgcmV0dXJuIG9iamVjdC5pc1RyZWUoKTsgfSkpCi0gICAgICAgIHVwZGF0ZU5vZGVQcm9wZXJ0
eSgqdHJlZUFuY2VzdG9yLCBBWFByb3BlcnR5TmFtZTo6QVJJQVRyZWVSb3dzKTsKKyAgICAvLyBX
aGVuIGEgcm93IGdhaW5zIG9yIGxvc2VzIGNlbGxzLCB0aGUgY29sdW1uIGNvdW50IG9mIHRoZSB0
YWJsZSBjYW4gY2hhbmdlLgorICAgIGJvb2wgdXBkYXRlVGFibGVBbmNlc3RvckNvbHVtbnMgPSBp
czxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KGF4T2JqZWN0KTsKKyAgICBmb3IgKGF1dG8qIGFuY2Vz
dG9yID0gYXhPYmplY3QucGFyZW50T2JqZWN0KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2Vz
dG9yLT5wYXJlbnRPYmplY3QoKSkgeworICAgICAgICBpZiAoYW5jZXN0b3ItPmlzVHJlZSgpKSB7
CisgICAgICAgICAgICB1cGRhdGVOb2RlUHJvcGVydHkoKmFuY2VzdG9yLCBBWFByb3BlcnR5TmFt
ZTo6QVJJQVRyZWVSb3dzKTsKKyAgICAgICAgICAgIGlmICghdXBkYXRlVGFibGVBbmNlc3RvckNv
bHVtbnMpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
dXBkYXRlVGFibGVBbmNlc3RvckNvbHVtbnMgJiYgYW5jZXN0b3ItPmlzQWNjZXNzaWJpbGl0eVRh
YmxlSW5zdGFuY2UoKSkgeworICAgICAgICAgICAgLy8gT25seSBgdXBkYXRlQ2hpbGRyZW5gIGlm
IHRoZSB0YWJsZSBpcyB1bmlnbm9yZWQsIGJlY2F1c2Ugb3RoZXJ3aXNlIGB1cGRhdGVDaGlsZHJl
bmAgd2lsbCBhc2NlbmQgYW5kIHVwZGF0ZSB0aGUgbmV4dCBoaWdoZXN0IHVuaWdub3JlZCBhbmNl
c3Rvciwgd2hpY2ggZG9lc24ndCBhY2NvbXBsaXNoIG91ciBnb2FsIG9mIHVwZGF0aW5nIHRhYmxl
IGNvbHVtbnMuCisgICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIFVzZSBgdXBkYXRl
Q2hpbGRyZW5gIHJhdGhlciB0aGFuIGB1cGRhdGVOb2RlUHJvcGVydHlgIGJlY2F1c2UgYHVwZGF0
ZUNoaWxkcmVuYCB3aWxsIGVuc3VyZSB0aGUgY29sdW1ucyAod2hpY2ggYXJlIGNoaWxkcmVuKSB3
aWxsIGhhdmUgYXNzb2NpYXRlZCBpc29sYXRlZCBvYmplY3RzIGNyZWF0ZWQuCisgICAgICAgICAg
ICB1cGRhdGVDaGlsZHJlbigqYW5jZXN0b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CiB9CiAKIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKEFjY2Vz
c2liaWxpdHlPYmplY3QmIGF4T2JqZWN0LCBSZXNvbHZlTm9kZUNoYW5nZXMgcmVzb2x2ZU5vZGVD
aGFuZ2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggYmVlNDkyMTc5NTQ0Li5mOTU5ZTFiODNk
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtNzksNyArNzksNiBAQCBlbnVtIGNsYXNzIEFY
UHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIENlbGxzLAogICAgIENvbG9yVmFsdWUsCiAg
ICAgQ29sdW1ucywKLSAgICBDb2x1bW5Db3VudCwKICAgICBDb2x1bW5IZWFkZXIsCiAgICAgQ29s
dW1uSGVhZGVycywKICAgICBDb2x1bW5JbmRleCwKQEAgLTEyMiw2ICsxMjEsNyBAQCBlbnVtIGNs
YXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIElzRW5hYmxlZCwKICAgICBJc0V4
cGFuZGVkLAogICAgIElzRXhwb3NhYmxlLAorICAgIElzRXhwb3NlZFRhYmxlQ2VsbCwKICAgICBJ
c0ZpZWxkc2V0LAogICAgIElzRm9jdXNlZCwKICAgICBJc0luZGV0ZXJtaW5hdGUsCkBAIC0xNTEs
NyArMTUxLDYgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBJ
c1NlbGVjdGVkLAogICAgIElzU2VsZWN0ZWRPcHRpb25BY3RpdmUsCiAgICAgSXNUYWJsZSwKLSAg
ICBJc1RhYmxlQ2VsbCwKICAgICBJc1RhYmxlQ29sdW1uLAogICAgIElzVGFibGVSb3csCiAgICAg
SXNUcmVlLApAQCAtMTk2LDcgKzE5NSw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1
aW50MTZfdCB7CiAgICAgUm9sZVBsYXRmb3JtU3RyaW5nLAogICAgIFJvbGVEZXNjcmlwdGlvbiwK
ICAgICBSb3dzLAotICAgIFJvd0NvdW50LAogICAgIFJvd0hlYWRlcnMsCiAgICAgUm93SW5kZXgs
CiAgICAgUm93SW5kZXhSYW5nZSwKQEAgLTIwNiw2ICsyMDQsNyBAQCBlbnVtIGNsYXNzIEFYUHJv
cGVydHlOYW1lIDogdWludDE2X3QgewogICAgIFNlc3Npb25JRCwKICAgICBTZXRTaXplLAogICAg
IFNvcnREaXJlY3Rpb24sCisgICAgU2xvdEdyaWQsCiAgICAgU3BlZWNoSGludCwKICAgICBTdHJp
bmdWYWx1ZSwKICAgICBTdWJyb2xlUGxhdGZvcm1TdHJpbmcsCkBAIC0yNDAsNyArMjM5LDcgQEAg
ZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBWaXNpYmxlUm93cywK
IH07CiAKLXVzaW5nIEFYUHJvcGVydHlWYWx1ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpu
dWxscHRyX3QsIEFYSUQsIFN0cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91YmxlLCBmbG9h
dCwgdWludDY0X3QsIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSwgQ29sb3IsIFVSTCwgTGF5b3V0
UmVjdCwgRmxvYXRQb2ludCwgRmxvYXRSZWN0LCBJbnRQb2ludCwgSW50UmVjdCwgUEFMOjpTZXNz
aW9uSUQsIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0
eVRleHQ+LCBWZWN0b3I8QVhJRD4sIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+LCBWZWN0
b3I8U3RyaW5nPiwgUGF0aCwgT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiwgUmV0YWluUHRyPE5T
QXR0cmlidXRlZFN0cmluZz4sIEluc2lkZUxpbmssIENoYXJhY3RlclJhbmdlPjsKK3VzaW5nIEFY
UHJvcGVydHlWYWx1ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRyX3QsIEFYSUQs
IFN0cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91YmxlLCBmbG9hdCwgdWludDY0X3QsIEFj
Y2Vzc2liaWxpdHlCdXR0b25TdGF0ZSwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwgRmxvYXRQb2lu
dCwgRmxvYXRSZWN0LCBJbnRQb2ludCwgSW50UmVjdCwgUEFMOjpTZXNzaW9uSUQsIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+LCBWZWN0b3I8
QVhJRD4sIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+LCBWZWN0b3I8U3RyaW5nPiwgUGF0
aCwgT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiwgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0cmlu
Zz4sIEluc2lkZUxpbmssIFZlY3RvcjxWZWN0b3I8QVhJRD4+LCBDaGFyYWN0ZXJSYW5nZT47CiB1
c2luZyBBWFByb3BlcnR5TWFwID0gSGFzaE1hcDxBWFByb3BlcnR5TmFtZSwgQVhQcm9wZXJ0eVZh
bHVlVmFyaWFudCwgSW50SGFzaDxBWFByb3BlcnR5TmFtZT4sIFdURjo6U3Ryb25nRW51bUhhc2hU
cmFpdHM8QVhQcm9wZXJ0eU5hbWU+PjsKIAogc3RydWN0IEFYUHJvcGVydHlDaGFuZ2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA1NWU1ZWYzMjgyZjguLjMw
ZTE5NTYyY2FiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAg
LTExODksNyArMTE4OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFibGVBdHRycy5nZXQoKS5nZXQoKTsKICAgICBl
bHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYmxlQ29sdW1uKCkpCiAgICAgICAgIG9iamVjdEF0
dHJpYnV0ZXMgPSB0YWJsZUNvbEF0dHJzLmdldCgpLmdldCgpOwotICAgIGVsc2UgaWYgKGJhY2tp
bmdPYmplY3QtPmlzVGFibGVDZWxsKCkpCisgICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNF
eHBvc2VkVGFibGVDZWxsKCkpCiAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJsZUNlbGxB
dHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYmxlUm93
KCkpIHsKICAgICAgICAgLy8gQW4gQVJJQSB0YWJsZSByb3cgY2FuIGJlIGNvbGxhcHNlZCBhbmQg
ZXhwYW5kZWQsIHNvIGl0IG5lZWRzIHRoZSBleHRyYSBhdHRyaWJ1dGVzLgpAQCAtMTg0Niw3ICsx
ODQ2LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZUNlbGwoKSkgeworICAgIGlm
IChiYWNraW5nT2JqZWN0LT5pc0V4cG9zZWRUYWJsZUNlbGwoKSkgewogICAgICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd0luZGV4UmFuZ2VB
dHRyaWJ1dGVdKSB7CiAgICAgICAgICAgICBhdXRvIHJvd1JhbmdlID0gYmFja2luZ09iamVjdC0+
cm93SW5kZXhSYW5nZSgpOwogICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJh
bmdlOk5TTWFrZVJhbmdlKHJvd1JhbmdlLmZpcnN0LCByb3dSYW5nZS5zZWNvbmQpXTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1
dGVzLWV4cGVjdGVkLnR4dAppbmRleCBhZTMxYTU4MDVjYTkuLjg4NWQxNjZiZGMyYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRy
aWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtMTEsNyArMTEsNyBAQCBQQVNTOiBjZWxsMi5udW1iZXJB
dHRyaWJ1dGVWYWx1ZSgnQVhBUklBUm93SW5kZXgnKSA9PT0gOAogUEFTUzogY2VsbDQubnVtYmVy
QXR0cmlidXRlVmFsdWUoJ0FYQVJJQUNvbHVtbkluZGV4JykgPT09IDMKIFBBU1M6IGNlbGwyLnJv
d0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAyfScKIFBBU1M6IGNlbGw1LmNvbHVtbkluZGV4UmFuZ2Uo
KSA9PT0gJ3syLCAzfScKLVBBU1M6IGNlbGwzLnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAyfScK
K1BBU1M6IGNlbGwzLnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAzfScKIFBBU1M6IGNlbGw2LnJv
d0luZGV4UmFuZ2UoKSA9PT0gJ3swLCAyfScKIFBBU1M6IGNlbGw3LnJvd0luZGV4UmFuZ2UoKSA9
PT0gJ3swLCAyfScKIFBBU1M6ICNncmlkIEFYQVJJQVJvd0NvdW50IGR5bmFtaWNhbGx5IGNoYW5n
ZWQgdG8gNjAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFi
bGUtYXR0cmlidXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxl
LWF0dHJpYnV0ZXMuaHRtbAppbmRleCA2YWNhZGNlZmNjMmEuLjVjMzUyYWIxYjg4NCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy5o
dG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICA8c3BhbiByb2xlPSJncmlkY2VsbCIgYXJpYS1j
b2xpbmRleD0iMiIgYXJpYS1yb3dpbmRleD0iOCI+RnJlZDwvc3Bhbj4KICAgICAgIDxzcGFuIHJv
bGU9ImdyaWRjZWxsIiBhcmlhLWNvbGluZGV4PSIzIiBhcmlhLXJvd2luZGV4PSI4Ij5KYWNrc29u
PC9zcGFuPgogICAgICAgPHNwYW4gaWQ9ImNlbGwyIiByb2xlPSJncmlkY2VsbCIgYXJpYS1jb2xp
bmRleD0iNCIgYXJpYS1yb3dpbmRleD0iOCIgYXJpYS1yb3dzcGFuPSIyIj5BY21lLCBJbmMuPC9z
cGFuPgotICAgICAgPHNwYW4gaWQ9ImNlbGwzIiByb2xlPSJncmlkY2VsbCIgYXJpYS1jb2xpbmRl
eD0iNSIgYXJpYS1yb3dpbmRleD0iOCIgYXJpYS1yb3dzcGFuPSIwIj4xMjMgQnJvYWQgU3QuPC9z
cGFuPgorICAgICAgPHNwYW4gaWQ9ImNlbGwzIiByb2xlPSJncmlkY2VsbCIgYXJpYS1jb2xpbmRl
eD0iNSIgYXJpYS1yb3dpbmRleD0iOCIgYXJpYS1yb3dzcGFuPSIzIj4xMjMgQnJvYWQgU3QuPC9z
cGFuPgogICAgIDwvZGl2PgogICAgIDxkaXYgcm9sZT0icm93IiBhcmlhLXJvd2luZGV4PSI5Ij4K
ICAgICAgIDxzcGFuIHJvbGU9ImdyaWRjZWxsIiBhcmlhLWNvbGluZGV4PSIyIj5TYXJhPC9zcGFu
PgpAQCAtNDksNyArNDksNyBAQAogPGRpdiBpZD0iZ3JpZDMiIHJvbGU9ImdyaWQiPgogICA8ZGl2
IHJvbGU9InJvdyI+CiAgICAgPHNwYW4gcm9sZT0iZ3JpZGNlbGwiPkNlbGw8L3NwYW4+Ci0gICAg
PHNwYW4gaWQ9ImNlbGw2IiByb2xlPSJncmlkY2VsbCIgYXJpYS1yb3dzcGFuPSIwIj5TcGFuIENl
bGw8L3NwYW4+CisgICAgPHNwYW4gaWQ9ImNlbGw2IiByb2xlPSJncmlkY2VsbCIgYXJpYS1yb3dz
cGFuPSIyIj5TcGFuIENlbGw8L3NwYW4+CiAgIDwvZGl2PgogICA8ZGl2IHJvbGU9InJvdyI+CiAg
ICAgPHNwYW4gcm9sZT0iZ3JpZGNlbGwiPkNlbGw8L3NwYW4+CkBAIC05MywxMCArOTMsMTAgQEAK
ICAgICAgICAgLy8gYXJpYS1jb2xpbmRleCBmcm9tIHBhcmVudCByb3cKICAgICAgICAgdGVzdE91
dHB1dCArPSBleHBlY3QoImNlbGw0Lm51bWJlckF0dHJpYnV0ZVZhbHVlKCdBWEFSSUFDb2x1bW5J
bmRleCcpIiwgIjMiKTsKIAotICAgICAgICAvLyBhcmlhLWNvbHNwYW4gYW5kIGFyaWEtcm93c3Bh
biwgaW5jbHVkaW5nIGFyaWEtcm93c3Bhbj0iMCIKKyAgICAgICAgLy8gYXJpYS1jb2xzcGFuIGFu
ZCBhcmlhLXJvd3NwYW4KICAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoImNlbGwyLnJvd0lu
ZGV4UmFuZ2UoKSIsICInezEsIDJ9JyIpOwogICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgi
Y2VsbDUuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MiwgM30nIik7Ci0gICAgICAgIHRlc3RPdXRw
dXQgKz0gZXhwZWN0KCJjZWxsMy5yb3dJbmRleFJhbmdlKCkiLCAiJ3sxLCAyfSciKTsKKyAgICAg
ICAgdGVzdE91dHB1dCArPSBleHBlY3QoImNlbGwzLnJvd0luZGV4UmFuZ2UoKSIsICInezEsIDN9
JyIpOwogCiAgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJjZWxsNi5yb3dJbmRleFJhbmdl
KCkiLCAiJ3swLCAyfSciKTsKICAgICAgICAgLy8gdXNlIHJvd3NwYW4gZm9yIG5hdGl2ZSB0YWJs
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMv
dGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxl
bWVudHMvdGFibGUtZXhwZWN0ZWQudHh0CmluZGV4IDFlMzZiMThiNTgwMy4uNTc1OGZiN2ZlMjAw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50cy90
YWJsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20t
ZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQudHh0CkBAIC0zMCwxMyArMzAsMTMgQEAgUEFTUyBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJvdy0yIikucm9sZSBp
cyAiQVhSb2xlOiBBWFIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjZWxsNSIpLnJvbGUgaXMgIkFYUm9sZTogQVhDZWxsIgogUEFTUyBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1IikubnVtYmVyQXR0
cmlidXRlVmFsdWUoIkFYQVJJQVJvd0luZGV4IikgaXMgOAogUEFTUyBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1IikubnVtYmVyQXR0cmlidXRlVmFs
dWUoIkFYQVJJQUNvbHVtbkluZGV4IikgaXMgMgotUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1Iikucm93SW5kZXhSYW5nZSgpIGlzICJ7Miwg
MX0iCitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
Y2VsbDUiKS5yb3dJbmRleFJhbmdlKCkgaXMgIns0LCAxfSIKIFBBU1MgYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLmNvbHVtbkluZGV4UmFuZ2Uo
KSBpcyAiezAsIDJ9IgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoInJvdy0zIikucm9sZSBpcyAiQVhSb2xlOiBBWFJvdyIKIFBBU1MgYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLnJvbGUgaXMgIkFY
Um9sZTogQVhDZWxsIgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImNlbGw2IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQVJvd0luZGV4Iikg
aXMgOQogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
ImNlbGw2IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQUNvbHVtbkluZGV4IikgaXMgMgot
UEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2
Iikucm93SW5kZXhSYW5nZSgpIGlzICJ7MywgMX0iCitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5yb3dJbmRleFJhbmdlKCkgaXMgIns1
LCAxfSIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJjZWxsNiIpLmNvbHVtbkluZGV4UmFuZ2UoKSBpcyAiezAsIDN9IgogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2N1c3RvbS1lbGVtZW50cy90YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9j
dXN0b20tZWxlbWVudHMvdGFibGUuaHRtbAppbmRleCAwNjc5NmI5NDE4YWYuLmQ1Yjg1ZDRmYWZm
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMv
dGFibGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50
cy90YWJsZS5odG1sCkBAIC0xMTEsMTQgKzExMSwxNCBAQCBlbHNlIHsKICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiY2VsbDUiKS5yb2xlJywgJ0FYUm9sZTogQVhDZWxsJyk7CiAgICAgc2hvdWxkQmUoJ2FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5udW1iZXJB
dHRyaWJ1dGVWYWx1ZSgiQVhBUklBUm93SW5kZXgiKScsICc4Jyk7CiAgICAgc2hvdWxkQmUoJ2Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5udW1i
ZXJBdHRyaWJ1dGVWYWx1ZSgiQVhBUklBQ29sdW1uSW5kZXgiKScsICcyJyk7Ci0gICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImNlbGw1Iikucm93SW5kZXhSYW5nZSgpJywgJ3syLCAxfScpOworICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJjZWxsNSIpLnJvd0luZGV4UmFuZ2UoKScsICd7NCwgMX0nKTsKICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiY2VsbDUiKS5jb2x1bW5JbmRleFJhbmdlKCknLCAnezAsIDJ9Jyk7CiAKICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgicm93LTMiKS5yb2xlJywgJ0FYUm9sZTogQVhSb3cnKTsKICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
Y2VsbDYiKS5yb2xlJywgJ0FYUm9sZTogQVhDZWxsJyk7CiAgICAgc2hvdWxkQmUoJ2FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5udW1iZXJBdHRy
aWJ1dGVWYWx1ZSgiQVhBUklBUm93SW5kZXgiKScsICc5Jyk7CiAgICAgc2hvdWxkQmUoJ2FjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5udW1iZXJB
dHRyaWJ1dGVWYWx1ZSgiQVhBUklBQ29sdW1uSW5kZXgiKScsICcyJyk7Ci0gICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoImNlbGw2Iikucm93SW5kZXhSYW5nZSgpJywgJ3szLCAxfScpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJjZWxsNiIpLnJvd0luZGV4UmFuZ2UoKScsICd7NSwgMX0nKTsKICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
Y2VsbDYiKS5jb2x1bW5JbmRleFJhbmdlKCknLCAnezAsIDN9Jyk7CiAKIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUzOGZlYzk3M2MyMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFu
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRo
ZSAnY2VsbCBmb3IgY29sdW1uIGFuZCByb3cnIEFQSSB3b3JrcyBjb3JyZWN0bHkgYWZ0ZXIgZHlu
YW1pYyBjb2xzcGFuIGNoYW5nZXMuCisKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3co
MCwgMCkuZG9tSWRlbnRpZmllciA9PT0gJ3IwYzAnCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1u
QW5kUm93KDEsIDApLmRvbUlkZW50aWZpZXIgPT09ICdyMGMxJworUEFTUzogdGFibGUuY2VsbEZv
ckNvbHVtbkFuZFJvdygyLCAwKSA9PT0gbnVsbCA9PT0gdHJ1ZQorUEFTUzogYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5n
ZSgpID09PSAnezEsIDF9JworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5zZXRBdHRy
aWJ1dGUoJ2NvbHNwYW4nLCAnMicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIs
IDApLmRvbUlkZW50aWZpZXIgPT09ICdyMGMxJworUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpID09PSAn
ezEsIDJ9JworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5yZW1vdmVBdHRyaWJ1dGUo
J2NvbHNwYW4nKQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKSA9PT0gbnVs
bCA9PT0gdHJ1ZQorUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpID09PSAnezEsIDF9JworZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29sc3BhbicsICcyJykK
K1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCkuZG9tSWRlbnRpZmllciA9PT0g
J3IwYzEnCitQQVNTOiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoJ3IwYzEnKS5jb2x1bW5JbmRleFJhbmdlKCkgPT09ICd7MSwgMn0nCisKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSGVhZGVyIDAJSGVhZGVyIDEK
K1IxQzAJUjFDMQlSMUMyCitSMkMwCVIyQzEJUjJDMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4uaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvZHluYW1pYy1jb2xzcGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi43N2E0YTI4NzBkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi5odG1sCkBAIC0wLDAgKzEsNjkgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c3R5bGU+Cit0ZCwgdGggeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorCis8dGFibGUgaWQ9InRhYmxlIj4KKzx0aGVhZCBpZD0idGhl
YWQiPgorICAgIDx0ciBpZD0icjAiPgorICAgICAgICA8dGggaWQ9InIwYzAiPkhlYWRlciAwPC90
aD4KKyAgICAgICAgPHRoIGlkPSJyMGMxIj5IZWFkZXIgMTwvdGg+CisgICAgPC90cj4KKzwvdGhl
YWQ+Cis8dGJvZHkgaWQ9InRib2R5Ij4KKyAgICA8dHIgaWQ9InIxIj4KKyAgICAgICAgPHRkIGlk
PSJyMWMwIj5SMUMwPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyMWMxIj5SMUMxPC90ZD4KKyAgICAg
ICAgPHRkIGlkPSJyMWMyIj5SMUMyPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBpZD0icjIiPgor
ICAgICAgICA8dGQgaWQ9InIyYzAiPlIyQzA8L3RkPgorICAgICAgICA8dGQgaWQ9InIyYzEiPlIy
QzE8L3RkPgorICAgICAgICA8dGQgaWQ9InIyYzEiPlIyQzI8L3RkPgorICAgIDwvdHI+Cis8L3Ri
b2R5PgorPC90YWJsZT4KKworPHNjcmlwdD4KK3ZhciBvdXRwdXQgPSAiVGhpcyB0ZXN0IGVuc3Vy
ZXMgdGhhdCB0aGUgJ2NlbGwgZm9yIGNvbHVtbiBhbmQgcm93JyBBUEkgd29ya3MgY29ycmVjdGx5
IGFmdGVyIGR5bmFtaWMgY29sc3BhbiBjaGFuZ2VzLlxuXG4iOworCitpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgdmFyIHRhYmxlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJ0YWJsZSIpOworICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1
bW5BbmRSb3coMCwgMCkuZG9tSWRlbnRpZmllciIsICIncjBjMCciKTsKKyAgICBvdXRwdXQgKz0g
ZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDEsIDApLmRvbUlkZW50aWZpZXIiLCAi
J3IwYzEnIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJv
dygyLCAwKSA9PT0gbnVsbCIsICJ0cnVlIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMGMxJykuY29sdW1uSW5k
ZXhSYW5nZSgpIiwgIid7MSwgMX0nIik7CisKKyAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigi
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCAn
MicpIik7CisgICAgc2V0VGltZW91dChhc3luYyBmdW5jdGlvbigpIHsKKyAgICAgICAgYXdhaXQg
d2FpdEZvcigoKSA9PiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApICE9PSBudWxsKTsK
KyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAw
KS5kb21JZGVudGlmaWVyIiwgIidyMGMxJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1
bW5JbmRleFJhbmdlKCkiLCAiJ3sxLCAyfSciKTsKKworICAgICAgICBvdXRwdXQgKz0gZXZhbEFu
ZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5yZW1vdmVBdHRyaWJ1dGUo
J2NvbHNwYW4nKSIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCkgPT09IG51bGwiLCAidHJ1ZSIpOworICAgICAgICBv
dXRwdXQgKz0gZXhwZWN0KCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoJ3IwYzEnKS5jb2x1bW5JbmRleFJhbmdlKCkiLCAiJ3sxLCAxfSciKTsKKworICAgICAg
ICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IwYzEn
KS5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29sc3BhbicsICcyJykiKTsKKyAgICAgICAgYXdhaXQgd2Fp
dEZvcigoKSA9PiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApICE9PSBudWxsKTsKKyAg
ICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKS5k
b21JZGVudGlmaWVyIiwgIidyMGMxJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5J
bmRleFJhbmdlKCkiLCAiJ3sxLCAyfSciKTsKKworICAgICAgICBkZWJ1ZyhvdXRwdXQpOworICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMt
cm93c3Bhbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMt
cm93c3Bhbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi4zMWI1MzNlYjdmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2R5bmFtaWMtcm93c3Bhbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorVGhp
cyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgJ2NlbGwgZm9yIGNvbHVtbiBhbmQgcm93JyBBUEkgd29y
a3MgY29ycmVjdGx5IGFmdGVyIGR5bmFtaWMgcm93c3BhbiBjaGFuZ2VzLgorCitQQVNTOiB0YWJs
ZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIgPT09ICdyMGMwJworUEFT
UzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKSA9PT0gbnVsbCA9PT0gdHJ1ZQorUEFT
UzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJyku
cm93SW5kZXhSYW5nZSgpID09PSAnezEsIDF9JworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Ix
YzInKS5zZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nLCAnMicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29s
dW1uQW5kUm93KDIsIDIpLmRvbUlkZW50aWZpZXIgPT09ICdyMWMyJworUEFTUzogYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5n
ZSgpID09PSAnezEsIDJ9JworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IxYzInKS5yZW1vdmVB
dHRyaWJ1dGUoJ3Jvd3NwYW4nKQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAy
KSA9PT0gbnVsbCA9PT0gdHJ1ZQorUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpID09PSAnezEsIDF9JworZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IxYzInKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtcm93c3Bhbics
ICcyJykKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikuZG9tSWRlbnRpZmll
ciA9PT0gJ3IxYzInCitQQVNTOiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoJ3IxYzInKS5yb3dJbmRleFJhbmdlKCkgPT09ICd7MSwgMn0nCisKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSGVhZGVyIDAJSGVhZGVy
IDEJSGVhZGVyIDIKK1IxQzAJUjFDMQlSMUMyCitSMkMwCVIyQzEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uZTA5OTMxNWE4YjdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4uaHRtbApAQCAtMCwwICsxLDY4IEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgordGQsIHRoIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHRhYmxlIGlkPSJ0YWJsZSI+Cis8dGhlYWQg
aWQ9InRoZWFkIj4KKyAgICA8dHIgaWQ9InIwIj4KKyAgICAgICAgPHRoIGlkPSJyMGMwIj5IZWFk
ZXIgMDwvdGg+CisgICAgICAgIDx0aCBpZD0icjBjMSI+SGVhZGVyIDE8L3RoPgorICAgICAgICA8
dGggaWQ9InIwYzIiPkhlYWRlciAyPC90aD4KKyAgICA8L3RyPgorPC90aGVhZD4KKzx0Ym9keSBp
ZD0idGJvZHkiPgorICAgIDx0ciBpZD0icjEiPgorICAgICAgICA8dGQgaWQ9InIxYzAiPlIxQzA8
L3RkPgorICAgICAgICA8dGQgaWQ9InIxYzEiPlIxQzE8L3RkPgorICAgICAgICA8dGQgaWQ9InIx
YzIiPlIxQzI8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGlkPSJyMiI+CisgICAgICAgIDx0ZCBp
ZD0icjJjMCI+UjJDMDwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjJjMSI+UjJDMTwvdGQ+CisgICAg
PC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPgorCis8c2NyaXB0PgordmFyIG91dHB1dCA9ICJUaGlz
IHRlc3QgZW5zdXJlcyB0aGF0IHRoZSAnY2VsbCBmb3IgY29sdW1uIGFuZCByb3cnIEFQSSB3b3Jr
cyBjb3JyZWN0bHkgYWZ0ZXIgZHluYW1pYyByb3dzcGFuIGNoYW5nZXMuXG5cbiI7CisKK2lmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICB2YXIgdGFibGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUu
Y2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKS5kb21JZGVudGlmaWVyIiwgIidyMGMwJyIpOworICAg
IG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikgPT09IG51
bGwiLCAidHJ1ZSIpOworICAgIG91dHB1dCArPSBleHBlY3QoImFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjFjMicpLnJvd0luZGV4UmFuZ2UoKSIsICInezEs
IDF9JyIpOworCisgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyMWMyJykuc2V0QXR0cmlidXRlKCdyb3dzcGFuJywgJzInKSIpOworICAgIHNldFRp
bWVvdXQoYXN5bmMgZnVuY3Rpb24oKSB7CisgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gdGFi
bGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKSAhPT0gbnVsbCk7CisgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikuZG9tSWRlbnRpZmllciIs
ICIncjFjMiciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpIiwgIid7
MSwgMn0nIik7CisKKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyMWMyJykucmVtb3ZlQXR0cmlidXRlKCdyb3dzcGFuJykiKTsKKyAgICAg
ICAgb3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93
KDIsIDIpID09PSBudWxsIiwgInRydWUiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5k
ZXhSYW5nZSgpIiwgIid7MSwgMX0nIik7CisKKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1
cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMWMyJykuc2V0QXR0cmlidXRlKCdhcmlhLXJv
d3NwYW4nLCAnMicpIik7CisgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gdGFibGUuY2VsbEZv
ckNvbHVtbkFuZFJvdygyLCAyKSAhPT0gbnVsbCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
InRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikuZG9tSWRlbnRpZmllciIsICIncjFjMici
KTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpIiwgIid7MSwgMn0nIik7
CisKKyAgICAgICAgZGVidWcob3V0cHV0KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
fSwgMCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5h
ZjA0NTQxMGQyYzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2R5bmFtaWMtdGFibGUtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzMgQEAK
K1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlICdjZWxsIGZvciBjb2x1bW4gYW5kIHJvdycgQVBJ
IHdvcmtzIGNvcnJlY3RseSBhZnRlciBkeW5hbWljIERPTSBjaGlsZCBjaGFuZ2VzLgorCitQQVNT
OiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIgPT09ICdyMGMw
JworUEFTUzogdGFibGUucm93Q291bnQgPT09IDMKK1BBU1M6IHRhYmxlLmNvbHVtbkNvdW50ID09
PSAyCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMpID09PSBudWxsID09PSB0
cnVlCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGJvZHknKS5hcHBlbmRDaGlsZChjcmVhdGVG
b3VydGhSb3coKSkKK1BBU1M6IHRhYmxlLnJvd0NvdW50ID09PSA0CitQQVNTOiB0YWJsZS5jb2x1
bW5Db3VudCA9PT0gMworUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKS5kb21J
ZGVudGlmaWVyID09PSAncjNjMCcKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMycpLmFwcGVu
ZENoaWxkKGR5bmFtaWNDZWxsKQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCAz
KS5kb21JZGVudGlmaWVyID09PSAnZHluYW1pYy1jZWxsJworUEFTUzogdGFibGUuY29sdW1uQ291
bnQgPT09IDQKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkeW5hbWljLWNlbGwnKS5yZW1vdmUo
KQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCA0KSA9PT0gbnVsbCA9PT0gdHJ1
ZQorUEFTUzogdGFibGUuY29sdW1uQ291bnQgPT09IDMKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyMycpLnJlbW92ZSgpCitQQVNTOiB0YWJsZS5yb3dDb3VudCA9PT0gMworUEFTUzogdGFibGUu
Y29sdW1uQ291bnQgPT09IDIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykg
PT09IG51bGwgPT09IHRydWUKK25ld1Rib2R5LmFwcGVuZENoaWxkKGNyZWF0ZUZvdXJ0aFJvdygp
KQorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlJykuYXBwZW5kQ2hpbGQobmV3VGJvZHkp
CitQQVNTOiB0YWJsZS5yb3dDb3VudCA9PT0gNAorUEFTUzogdGFibGUuY29sdW1uQ291bnQgPT09
IDMKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykuZG9tSWRlbnRpZmllciA9
PT0gJ3IzYzAnCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorSGVhZGVyIDAJSGVhZGVyIDEKK1IxQzAJUjFDMQorUjJDMAlSMkMxCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy5o
dG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jZWE0YmU3OTVl
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMt
dGFibGUtZGVzY2VuZGFudHMuaHRtbApAQCAtMCwwICsxLDEwNCBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK3Rk
LCB0aCB7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+CisKKzx0YWJsZSBpZD0idGFibGUiPgorPHRoZWFkIGlkPSJ0aGVhZCI+CisgICAg
PHRyIGlkPSJyMCI+CisgICAgICAgIDx0aCBpZD0icjBjMCI+SGVhZGVyIDA8L3RoPgorICAgICAg
ICA8dGggaWQ9InIwYzEiPkhlYWRlciAxPC90aD4KKyAgICA8L3RyPgorPC90aGVhZD4KKzx0Ym9k
eSBpZD0idGJvZHkiPgorICAgIDx0ciBpZD0icjEiPgorICAgICAgICA8dGQgaWQ9InIxYzAiPlIx
QzA8L3RkPgorICAgICAgICA8dGQgaWQ9InIxYzEiPlIxQzE8L3RkPgorICAgIDwvdHI+CisgICAg
PHRyIGlkPSJyMiI+CisgICAgICAgIDx0ZCBpZD0icjJjMCI+UjJDMDwvdGQ+CisgICAgICAgIDx0
ZCBpZD0icjJjMSI+UjJDMTwvdGQ+CisgICAgPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPgorCis8
c2NyaXB0PgordmFyIG91dHB1dCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSAnY2VsbCBm
b3IgY29sdW1uIGFuZCByb3cnIEFQSSB3b3JrcyBjb3JyZWN0bHkgYWZ0ZXIgZHluYW1pYyBET00g
Y2hpbGQgY2hhbmdlcy5cblxuIjsKKworZnVuY3Rpb24gY3JlYXRlRm91cnRoUm93KCkgeworICAg
IGNvbnN0IHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICB0ci5pZCA9ICJy
MyI7CisKKyAgICBjb25zdCBjZWxsT25lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsK
KyAgICBjZWxsT25lLmlkID0gInIzYzAiOworICAgIGNvbnN0IGNlbGxUd28gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ0ZCIpOworICAgIGNlbGxUd28uaWQgPSAicjNjMSI7CisgICAgY29uc3Qg
Y2VsbFRocmVlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICBjZWxsVHdvLmlk
ID0gInIzYzIiOworCisgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbE9uZSk7CisgICAgdHIuYXBwZW5k
Q2hpbGQoY2VsbFR3byk7CisgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbFRocmVlKTsKKyAgICByZXR1
cm4gdHI7Cit9CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2YXIgbmV3VGJvZHkgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpOworICAgIHZhciBkeW5hbWljQ2VsbCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgZHluYW1pY0NlbGwuaWQgPSAiZHluYW1pYy1jZWxs
IjsKKworICAgIHZhciB0YWJsZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgidGFibGUiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9y
Q29sdW1uQW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIiLCAiJ3IwYzAnIik7CisgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGFibGUucm93Q291bnQiLCAiMyIpOworICAgIG91dHB1dCArPSBleHBlY3Qo
InRhYmxlLmNvbHVtbkNvdW50IiwgIjIiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMpID09PSBudWxsIiwgInRydWUiKTsKKworICAgIG91dHB1
dCArPSBldmFsQW5kUmV0dXJuKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGJvZHknKS5hcHBl
bmRDaGlsZChjcmVhdGVGb3VydGhSb3coKSkiKTsKKyAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0
aW9uKCkgeworICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLnJvd0Nv
dW50IiwgIjQiKTsKKyAgICAgICAgLy8gVGhlIGZvdXJ0aCByb3cgaGFzIHRocmVlIGNlbGxzIGlu
IGl0ICh2cy4gdGhlIHR3byBjZWxscyBpbiBldmVyeSBvdGhlciByb3cpLgorICAgICAgICBvdXRw
dXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLmNvbHVtbkNvdW50IiwgIjMiKTsKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKS5kb21J
ZGVudGlmaWVyIiwgIidyM2MwJyIpOworCisgICAgICAgIC8vIE5vdyBhcHBlbmQgYSBjZWxsIHRv
IGEgcm93LgorICAgICAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3IzJykuYXBwZW5kQ2hpbGQoZHluYW1pY0NlbGwpIik7CisgICAgICAgIGF3YWl0
IHdhaXRGb3IoKCkgPT4gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCAzKSk7CisgICAgICAg
IG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMywgMykuZG9tSWRl
bnRpZmllciIsICInZHluYW1pYy1jZWxsJyIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhw
ZWN0QXN5bmMoInRhYmxlLmNvbHVtbkNvdW50IiwgIjQiKTsKKworICAgICAgICAvLyBBbmQgcmVt
b3ZlIGl0LgorICAgICAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2R5bmFtaWMtY2VsbCcpLnJlbW92ZSgpIik7CisgICAgICAgIG91dHB1dCArPSBh
d2FpdCBleHBlY3RBc3luYygidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCA0KSA9PT0gbnVs
bCIsICJ0cnVlIik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUu
Y29sdW1uQ291bnQiLCAiMyIpOworCisgICAgICAgIC8vIFJlbW92ZSB0aGUgZHluYW1pY2FsbHkg
YWRkZWQgZm91cnRoIHJvdy4KKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyMycpLnJlbW92ZSgpIik7CisgICAgICAgIG91dHB1dCArPSBh
d2FpdCBleHBlY3RBc3luYygidGFibGUucm93Q291bnQiLCAiMyIpOworICAgICAgICBvdXRwdXQg
Kz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLmNvbHVtbkNvdW50IiwgIjIiKTsKKyAgICAgICAg
b3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAs
IDMpID09PSBudWxsIiwgInRydWUiKTsKKworICAgICAgICAvLyBUaGVuIGFkZCB0aGUgZm91cnRo
IHJvdyBiYWNrIHRvIHRoZSBuZXcgdGJvZHkuCisgICAgICAgIG91dHB1dCArPSBldmFsQW5kUmV0
dXJuKCJuZXdUYm9keS5hcHBlbmRDaGlsZChjcmVhdGVGb3VydGhSb3coKSkiKTsKKyAgICAgICAg
b3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZScp
LmFwcGVuZENoaWxkKG5ld1Rib2R5KSIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0
QXN5bmMoInRhYmxlLnJvd0NvdW50IiwgIjQiKTsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0IGV4
cGVjdEFzeW5jKCJ0YWJsZS5jb2x1bW5Db3VudCIsICIzIik7CisgICAgICAgIG91dHB1dCArPSBl
eHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykuZG9tSWRlbnRpZmllciIsICIn
cjNjMCciKTsKKworICAgICAgICBkZWJ1ZyhvdXRwdXQpOworICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICB9LCAwKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24tZXhwZWN0ZWQudHh0
CmluZGV4IDRkZjQ1MDZjMGRhMC4uODEyNmM1ZTM4YzRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtNTYsNyAr
NTYsNyBAQCBQQVNTIGF4RWxlbWVudC5yb2xlID09ICdBWFJvbGU6IEFYTGlzdCcgaXMgdHJ1ZQog
CiAKIElubGluZSBsaXN0IGVsZW1lbnRzIHdpdGggYW4gYXJpYSByb2xlIHNob3VsZCBiZSBhIGxp
c3QKLVBBU1MgYXhFbGVtZW50LnJvbGUgPT0gJ0FYUm9sZTogQVhMaXN0JyBpcyB0cnVlCitQQVNT
IGF4RWxlbWVudC5yb2xlID09ICdBWFJvbGU6IEFYTGlzdCcgaXMgZmFsc2UKIAogCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2xpc3QtZGV0ZWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xp
c3QtZGV0ZWN0aW9uLmh0bWwKaW5kZXggMjAwYmU1OTY0N2M2Li4zZjFlMDAxNTBmM2UgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24uaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLmh0bWwKQEAgLTYzLDcg
KzYzLDcgQEAKIDxkaXY+aXRlbTwvZGl2PgogPC91bD4KIAotPHVsIGlkPSJsaXN0MTQiIHJvbGU9
Imxpc3QiIHRlc3QtZGVzY3JpcHRpb249IklubGluZSBsaXN0IGVsZW1lbnRzIHdpdGggYW4gYXJp
YSByb2xlIHNob3VsZCBiZSBhIGxpc3QiIGlzLWxpc3Q9InRydWUiIHN0eWxlPSJkaXNwbGF5OiB0
YWJsZTsiPgorPHVsIGlkPSJsaXN0MTQiIHJvbGU9Imxpc3QiIHRlc3QtZGVzY3JpcHRpb249Iklu
bGluZSBsaXN0IGVsZW1lbnRzIHdpdGggYW4gYXJpYSByb2xlIHNob3VsZCBiZSBhIGxpc3QiIGlz
LWxpc3Q9ImZhbHNlIiBzdHlsZT0iZGlzcGxheTogdGFibGU7Ij4KICAgPGxpIHJvbGU9Imxpc3Rp
dGVtIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI+SXRlbSAxPC9saT4KICAgPGxpIHJv
bGU9Imxpc3RpdGVtIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI+SXRlbSAyPC9saT4K
ICAgPGxpIHJvbGU9Imxpc3RpdGVtIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI+SXRl
bSAzPC9saT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtaW5j
b3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L3RhYmxlLWluY29ycmVjdC1jb2xzcGFuLWNlbGwtZXhwZWN0ZWQudHh0CmluZGV4IDFiZGUx
YmE5MDBkMS4uZjc0ZWQ0NWYzODY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L3RhYmxlLWluY29ycmVjdC1jb2xzcGFuLWNlbGwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtaW5jb3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3Rl
ZC50eHQKQEAgLTUsMTcgKzUsMzUgQEAgVGhpcyB0ZXN0cyB0aGUgcm93UmFuZ2UgYW5kIGNvbHVt
blJhbmdlIGF0dHJpYnV0ZXMgb2YgdGFibGUgY2VsbHMgaW4gYSB0YWJsZSB3aXQKIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KIAogCi1UYWJsZTogUm93czogMiwgQ29sdW1uczogMworVGFibGU6
IFJvd3M6IDIsIENvbHVtbnM6IDYKIFtUYWJsZSBjZWxsIGF0IHJvdzogMCwgY29sdW1uOiAwXSBS
b3cgcmFuZ2U6IHswLCAxfSwgQ29sdW1uIHJhbmdlOiB7MCwgMX0KIAlQQVNTRUQgQ2VsbCBpcyBz
YW1lIGNlbGwgYXQgKDAsIDApCi1bVGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogMF0gUm93
IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezAsIDJ9CitbVGFibGUgY2VsbCBhdCByb3c6
IDEsIGNvbHVtbjogMF0gUm93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezAsIDR9CiAJ
UEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAwKQogCVBBU1NFRCBDZWxsIGlzIHNhbWUg
Y2VsbCBhdCAoMSwgMSkKLVtUYWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1uOiAxXSBSb3cgcmFu
Z2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7MCwgMn0KKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNl
bGwgYXQgKDEsIDIpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAzKQorW1RhYmxl
IGNlbGwgYXQgcm93OiAxLCBjb2x1bW46IDFdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFu
Z2U6IHswLCA0fQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMCkKKwlQQVNTRUQg
Q2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDEpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0
ICgxLCAyKQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMykKK1tUYWJsZSBjZWxs
IGF0IHJvdzogMSwgY29sdW1uOiAyXSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7
MCwgNH0KKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDApCisJUEFTU0VEIENlbGwg
aXMgc2FtZSBjZWxsIGF0ICgxLCAxKQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwg
MikKKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDMpCitbVGFibGUgY2VsbCBhdCBy
b3c6IDEsIGNvbHVtbjogM10gUm93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezAsIDR9
CiAJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAwKQogCVBBU1NFRCBDZWxsIGlzIHNh
bWUgY2VsbCBhdCAoMSwgMSkKLVtUYWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1uOiAyXSBSb3cg
cmFuZ2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7MiwgMX0KIAlQQVNTRUQgQ2VsbCBpcyBzYW1l
IGNlbGwgYXQgKDEsIDIpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAzKQorW1Rh
YmxlIGNlbGwgYXQgcm93OiAxLCBjb2x1bW46IDRdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4g
cmFuZ2U6IHs0LCAyfQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgNCkKKwlQQVNT
RUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDUpCitbVGFibGUgY2VsbCBhdCByb3c6IDEsIGNv
bHVtbjogNV0gUm93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezQsIDJ9CisJUEFTU0VE
IENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCA0KQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBh
dCAoMSwgNSkKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1tdWx0aXBsZS10
Ym9kaWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtbXVs
dGlwbGUtdGJvZGllcy1leHBlY3RlZC50eHQKaW5kZXggMmFlZDM2NjVjMWFkLi40ODJiNWVmNTg5
OTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtbXVsdGlwbGUt
dGJvZGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJs
ZS1tdWx0aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dApAQCAtMTAxOCw3ICsxMDE4LDcgQEAgQVhF
ZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxs
KQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7MSwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTog
TlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXpl
IDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hl
YWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEK
IEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgQVhFZGl0YWJsZUFuY2Vz
dG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRl
eFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIs
IDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVt
bkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVu
dHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0lu
ZGV4OiAtMQpAQCAtMTI1OCw3ICsxMjU4LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkK
IEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1Jh
bmdlOiB7MywgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVt
bkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxl
bWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBv
ZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpAQCAt
MTM3OCw3ICsxMzc4LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVk
aXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7NCwgMX0K
IEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxl
bWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJh
eSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBB
WEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtMTQ5OCw3ICsxNDk4
LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0
b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7NSwgMX0KIEFYQ29sdW1uSW5k
ZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJh
eSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+
CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5J
bmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgQVhFZGl0
YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQog
QVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7NiwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNS
YW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+
CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRl
clVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFY
QVJJQVJvd0luZGV4OiAtMQpAQCAtMTczOCw3ICsxNzM4LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9y
OiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJh
bmdlOiBOU1JhbmdlOiB7NywgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9
Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhl
YWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6
IDxhcnJheSBvZiBzaXplIDA+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4
OiAtMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS10aGVhZC10
Zm9vdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXRoZWFk
LXRmb290LWV4cGVjdGVkLnR4dAppbmRleCBlNDQ4M2Y0MmJlMjAuLjVmZjE3ZjIyNGM4ZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS10aGVhZC10Zm9vdC1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS10aGVhZC10Zm9v
dC1leHBlY3RlZC50eHQKQEAgLTcyMiw3ICs3MjIsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChu
dWxsKQogQVhIaWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6
IE5TUmFuZ2U6IHsxLCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFY
Q29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVy
VUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFy
cmF5IG9mIHNpemUgMT4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0x
CkBAIC04NDIsNyArODQyLDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVz
dEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7Miwg
MX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJ
RWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxh
cnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+
CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtOTYyLDcgKzk2
Miw3IEBAIEFYRWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2Vz
dG9yOiAobnVsbCkKIEFYUm93SW5kZXhSYW5nZTogTlNSYW5nZTogezMsIDF9CiBBWENvbHVtbklu
ZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJy
YXkgb2Ygc2l6ZSAwPgorQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAx
PgogQVhSb3dIZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhBUklBQ29sdW1u
SW5kZXg6IC0xCiBBWEFSSUFSb3dJbmRleDogLTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2dsaWIvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVt
ZW50cy90YWJsZS1leHBlY3RlZC50eHQKaW5kZXggMTg1ZTU5ZjlkMDZkLi4zMzk0ZjVhZDM1MjAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvYWNjZXNzaWJpbGl0eS9jdXN0
b20tZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2dsaWIvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQudHh0CkBA
IC0zMCwxMyArMzAsMTMgQEAgUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoInJvdy0yIikucm9sZSBpcyAiQVhSb2xlOiBBWFIKIFBBU1MgYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLnJvbGUgaXMgIkFY
Um9sZTogQVhDZWxsIgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImNlbGw1IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQVJvd0luZGV4Iikg
aXMgOAogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
ImNlbGw1IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQUNvbHVtbkluZGV4IikgaXMgMgot
UEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1
Iikucm93SW5kZXhSYW5nZSgpIGlzICJ7MiwgMX0iCitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5yb3dJbmRleFJhbmdlKCkgaXMgIns0
LCAxfSIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJjZWxsNSIpLmNvbHVtbkluZGV4UmFuZ2UoKSBpcyAiezAsIDJ9IgogUEFTUyBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJvdy0zIikucm9sZSBpcyAiQVhS
b2xlOiBBWFJvdyIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJjZWxsNiIpLnJvbGUgaXMgIkFYUm9sZTogQVhDZWxsIgogUEFTUyBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2IikubnVtYmVyQXR0cmli
dXRlVmFsdWUoIkFYQVJJQVJvd0luZGV4IikgaXMgOQogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2IikubnVtYmVyQXR0cmlidXRlVmFsdWUo
IkFYQVJJQUNvbHVtbkluZGV4IikgaXMgMgotUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2Iikucm93SW5kZXhSYW5nZSgpIGlzICJ7MywgMX0i
CitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2Vs
bDYiKS5yb3dJbmRleFJhbmdlKCkgaXMgIns1LCAxfSIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLmNvbHVtbkluZGV4UmFuZ2UoKSBp
cyAiezAsIDN9IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L2xp
c3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dAppbmRleCBlZmQ0ZmU2NmUwNzMuLjY5ODkxNjUyYjMw
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L2xp
c3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGli
L2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC01Niw3ICs1Niw3
IEBAIFBBU1MgYXhFbGVtZW50LnJvbGUgPT0gJ0FYUm9sZTogQVhMaXN0JyBpcyB0cnVlCiAKIAog
SW5saW5lIGxpc3QgZWxlbWVudHMgd2l0aCBhbiBhcmlhIHJvbGUgc2hvdWxkIGJlIGEgbGlzdAot
UEFTUyBheEVsZW1lbnQucm9sZSA9PSAnQVhSb2xlOiBBWExpc3QnIGlzIHRydWUKK1BBU1MgYXhF
bGVtZW50LnJvbGUgPT0gJ0FYUm9sZTogQVhMaXN0JyBpcyBmYWxzZQogCiAKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2ds
aWIvYWNjZXNzaWJpbGl0eS90YWJsZS1tdWx0aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvYWNjZXNzaWJpbGl0eS90YWJsZS1tdWx0aXBsZS10Ym9k
aWVzLWV4cGVjdGVkLnR4dAppbmRleCBjOWRmYTE2YmIxYTQuLjI2NjEzYTMxMTRkMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L3RhYmxlLW11bHRp
cGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIv
YWNjZXNzaWJpbGl0eS90YWJsZS1tdWx0aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dApAQCAtMzcs
NyArMzcsNyBAQCBBWFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKIEFYUGxhdGZvcm1BdHRyaWJ1
dGVzOiBjb21wdXRlZC1yb2xlOmNvbHVtbmhlYWRlciwgdGFnOnRoCiAtLS0tLS0tLS0tLS0KLUFY
Um9sZTogQVhDZWxsCitBWFJvbGU6IEFYQ29sdW1uSGVhZGVyCiBBWFBhcmVudDogQVhSb3cKIEFY
Q2hpbGRyZW46IDAKIEFYUG9zaXRpb246ICB7IDQwOS4wMDAsIDkuMDAwMDAgfQpAQCAtNDcsMTQg
KzQ3LDE0IEBAIEFYRGVzY3JpcHRpb246CiBBWFZhbHVlOiBiCiBBWEZvY3VzYWJsZTogMAogQVhG
b2N1c2VkOiAwCi1BWFNlbGVjdGFibGU6IDEKK0FYU2VsZWN0YWJsZTogMAogQVhTZWxlY3RlZDog
MAogQVhNdWx0aVNlbGVjdGFibGU6IDAKIEFYRW5hYmxlZDogMQogQVhFeHBhbmRlZDogMAogQVhS
ZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCi1BWFBsYXRmb3JtQXR0cmlidXRlczogY29tcHV0ZWQt
cm9sZTpjZWxsLCB0YWc6dGQKK0FYUGxhdGZvcm1BdHRyaWJ1dGVzOiBjb21wdXRlZC1yb2xlOmNv
bHVtbmhlYWRlciwgdGFnOnRkCiAtLS0tLS0tLS0tLS0KIAogQVhSb2xlOiBBWENvbHVtbkhlYWRl
cgpAQCAtMzc1LDcgKzM3NSw3IEBAIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAogQVhQbGF0
Zm9ybUF0dHJpYnV0ZXM6IGNvbXB1dGVkLXJvbGU6Y29sdW1uaGVhZGVyLCB0YWc6dGgKIC0tLS0t
LS0tLS0tLQotQVhSb2xlOiBBWENlbGwKK0FYUm9sZTogQVhDb2x1bW5IZWFkZXIKIEFYUGFyZW50
OiBBWFJvdwogQVhDaGlsZHJlbjogMAogQVhQb3NpdGlvbjogIHsgNDA5LjAwMCwgOS4wMDAwMCB9
CkBAIC0zODUsMTQgKzM4NSwxNCBAQCBBWERlc2NyaXB0aW9uOgogQVhWYWx1ZTogYgogQVhGb2N1
c2FibGU6IDAKIEFYRm9jdXNlZDogMAotQVhTZWxlY3RhYmxlOiAxCitBWFNlbGVjdGFibGU6IDAK
IEFYU2VsZWN0ZWQ6IDAKIEFYTXVsdGlTZWxlY3RhYmxlOiAwCiBBWEVuYWJsZWQ6IDEKIEFYRXhw
YW5kZWQ6IDAKIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAotQVhQbGF0Zm9ybUF0dHJpYnV0
ZXM6IGNvbXB1dGVkLXJvbGU6Y2VsbCwgdGFnOnRkCitBWFBsYXRmb3JtQXR0cmlidXRlczogY29t
cHV0ZWQtcm9sZTpjb2x1bW5oZWFkZXIsIHRhZzp0ZAogLS0tLS0tLS0tLS0tCiBBWFJvbGU6IEFY
Um93SGVhZGVyCiBBWFBhcmVudDogQVhSb3cKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2dsaWIvYWNjZXNzaWJpbGl0eS90YWJsZS10aGVhZC10Zm9vdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2FjY2Vzc2liaWxpdHkvdGFibGUtdGhlYWQtdGZvb3Qt
ZXhwZWN0ZWQudHh0CmluZGV4IDhmNmQyNjljMzBhNi4uZGMzYTRkMDZjMWJmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2FjY2Vzc2liaWxpdHkvdGFibGUtdGhlYWQtdGZv
b3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvYWNjZXNzaWJp
bGl0eS90YWJsZS10aGVhZC10Zm9vdC1leHBlY3RlZC50eHQKQEAgLTM3LDcgKzM3LDcgQEAgQVhS
ZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCiBBWFBsYXRmb3JtQXR0cmlidXRlczogY29tcHV0ZWQt
cm9sZTpjb2x1bW5oZWFkZXIsIHRhZzp0aAogLS0tLS0tLS0tLS0tCi1BWFJvbGU6IEFYQ2VsbAor
QVhSb2xlOiBBWENvbHVtbkhlYWRlcgogQVhQYXJlbnQ6IEFYUm93CiBBWENoaWxkcmVuOiAwCiBB
WFBvc2l0aW9uOiAgeyA0MDkuMDAwLCA2My4wMDAwIH0KQEAgLTQ3LDE0ICs0NywxNCBAQCBBWERl
c2NyaXB0aW9uOgogQVhWYWx1ZTogYgogQVhGb2N1c2FibGU6IDAKIEFYRm9jdXNlZDogMAotQVhT
ZWxlY3RhYmxlOiAxCitBWFNlbGVjdGFibGU6IDAKIEFYU2VsZWN0ZWQ6IDAKIEFYTXVsdGlTZWxl
Y3RhYmxlOiAwCiBBWEVuYWJsZWQ6IDEKIEFYRXhwYW5kZWQ6IDAKIEFYUmVxdWlyZWQ6IDAKIEFY
Q2hlY2tlZDogMAotQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGNvbXB1dGVkLXJvbGU6Y2VsbCwgdGFn
OnRkCitBWFBsYXRmb3JtQXR0cmlidXRlczogY29tcHV0ZWQtcm9sZTpjb2x1bW5oZWFkZXIsIHRh
Zzp0ZAogLS0tLS0tLS0tLS0tCiAKIEFYUm9sZTogQVhDb2x1bW5IZWFkZXIKQEAgLTIyNyw3ICsy
MjcsNyBAQCBBWFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKIEFYUGxhdGZvcm1BdHRyaWJ1dGVz
OiBjb21wdXRlZC1yb2xlOmNvbHVtbmhlYWRlciwgdGFnOnRoCiAtLS0tLS0tLS0tLS0KLUFYUm9s
ZTogQVhDZWxsCitBWFJvbGU6IEFYQ29sdW1uSGVhZGVyCiBBWFBhcmVudDogQVhSb3cKIEFYQ2hp
bGRyZW46IDAKIEFYUG9zaXRpb246ICB7IDQwOS4wMDAsIDYzLjAwMDAgfQpAQCAtMjM3LDE0ICsy
MzcsMTQgQEAgQVhEZXNjcmlwdGlvbjoKIEFYVmFsdWU6IGIKIEFYRm9jdXNhYmxlOiAwCiBBWEZv
Y3VzZWQ6IDAKLUFYU2VsZWN0YWJsZTogMQorQVhTZWxlY3RhYmxlOiAwCiBBWFNlbGVjdGVkOiAw
CiBBWE11bHRpU2VsZWN0YWJsZTogMAogQVhFbmFibGVkOiAxCiBBWEV4cGFuZGVkOiAwCiBBWFJl
cXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKLUFYUGxhdGZvcm1BdHRyaWJ1dGVzOiBjb21wdXRlZC1y
b2xlOmNlbGwsIHRhZzp0ZAorQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGNvbXB1dGVkLXJvbGU6Y29s
dW1uaGVhZGVyLCB0YWc6dGQKIC0tLS0tLS0tLS0tLQogQVhSb2xlOiBBWFJvd0hlYWRlcgogQVhQ
YXJlbnQ6IEFYUm93CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggOWYyODgwYmY1MDkzLi41MjRmNWQ1MWM1ZGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTgwNSw2ICs4MDUsMTEgQEAg
YWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvIFsgU2tpcCBdCiBhY2Nlc3NpYmlsaXR5L2F4
LW9iamVjdC1kZXN0cm95ZWQtb24tcmVsb2FkLmh0bWwgWyBTa2lwIF0KIGFjY2Vzc2liaWxpdHkv
cGFnZS1yZWxvYWQtZGVhZGxvY2suaHRtbCBbIFNraXAgXQogCisjIFNraXAgYmVjYXVzZSBXSzEg
ZG9lc24ndCBzZWVtIHRvIHN1cHBvcnQgRWxlbWVudDo6c2V0QXR0cmlidXRlLgorYWNjZXNzaWJp
bGl0eS9keW5hbWljLXJvd3NwYW4uaHRtbCBbIFNraXAgXQorYWNjZXNzaWJpbGl0eS9keW5hbWlj
LWNvbHNwYW4uaHRtbCBbIFNraXAgXQorYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2Nl
bmRhbnRzLmh0bWwgWyBTa2lwIF0gCisKICMgTWlzc2luZyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc0luZGV0ZXJtaW5hdGUoKSBpbXBsZW1lbnRhdGlvbi4KIGFjY2Vzc2liaWxpdHkvcHJvZ3Jl
c3MtaW5kZXRlcm1pbmF0ZS12YWx1ZS5odG1sIFsgU2tpcCBdCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2dlbmVyYXRlZC1jb250ZW50LXdpdGgt
ZGlzcGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9nZW5lcmF0ZWQtY29udGVudC13aXRoLWRpc3BsYXktdGFibGUtY3Jh
c2gtZXhwZWN0ZWQudHh0CmluZGV4IGY1MTg4MDRlYTI0My4uN2NiYTQxNzY2NzA5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9nZW5lcmF0ZWQtY29u
dGVudC13aXRoLWRpc3BsYXktdGFibGUtY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2dlbmVyYXRlZC1jb250ZW50LXdpdGgtZGlz
cGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQKQEAgLTcsNyArNyw4IEBAIEFYUm9sZTogQVhX
ZWJBcmVhIEFYVmFsdWU6CiAgICAgICAgIEFYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IGZv
bwogICAgICAgICBBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiAhCiAgICAgQVhSb2xlOiBB
WFN0YXRpY1RleHQgQVhWYWx1ZTogYmFyCi0gICAgQVhSb2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1
ZTogIQorICAgIEFYUm9sZTogQVhHcm91cCBBWFZhbHVlOgorICAgICAgICBBWFJvbGU6IEFYU3Rh
dGljVGV4dCBBWFZhbHVlOiAhCiAgICAgQVhSb2xlOiBBWEdyb3VwIEFYVmFsdWU6CiAgICAgICAg
IEFYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IGJhegogICAgIEFYUm9sZTogQVhHcm91cCBB
WFZhbHVlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466791</attachid>
            <date>2023-06-22 00:16:28 -0700</date>
            <delta_ts>2023-06-22 01:19:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-258223-20230622001628.patch</filename>
            <type>text/plain</type>
            <size>174293</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBhYTI5MDZmOWFmM2FhYThkMjkyODdjOTMzN2I1YjBkNzQxOWYzN2Q2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCAxNiBKdW4gMjAyMyAxNDo1MToxMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBN
b3ZlCiBOU0FjY2Vzc2liaWxpdHlDZWxsRm9yQ29sdW1uQW5kUm93UGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBBUEkgb2ZmIHRoZQogbWFpbi10aHJlYWQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI1ODIyMwogcmRhcjovL3Byb2JsZW0vMTEwOTE5ODgzCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCldpdGggdGhpcyBwYXRjaCwgd2UgcmVwbGFjZSB0aGUgZXhpc3Rp
bmcgcmVuZGVyLXRyZWUtYmFzZWQgY29sdW1uIGFuZApyb3cgY2VsbCBzbG90IGRldGVybWluYXRp
b24gYWxnb3JpdGhtIHdpdGggYSBjdXN0b20gb25lIGJhc2VkIG9uOgoKaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjZm9ybWluZy1hLXRhYmxlCgpXZSB1
c2UgdGhpcyBmb3JtaW5nLWEtdGFibGUgYWxnb3JpdGhtIHRvIGJ1aWxkIGEgbmV3IGRhdGEgc3Ry
dWN0dXJlCmluZGljYXRpbmcgdGhlIGNlbGwgQVhJRCBvY2N1cGllZCBieSBlYWNoICJzbG90IiBp
biB0aGUgdGFibGU6IGBBY2Nlc3NpYmlsaXR5VGFibGU6Om1fc2xvdEdyaWRgCgpUaGlzIGhhcyB0
d28gYmVuZWZpdHM6CiAgMS4gV2UgY2FuIChhbmQgZG8pIGNvcHkgdGhpcyBkYXRhIHN0cnVjdHVy
ZSB0byB0aGUgc2Vjb25kYXJ5IHRocmVhZCwKICAgICBhbmQgdXNlIGl0IHRvIHBlcmZvcm0gYEFY
SXNvbGF0ZWRPYmplY3Q6OmNlbGxGb3JDb2x1bW5BbmRSb3dgCiAgICAgd2l0aG91dCByZWx5aW5n
IG9uIHRoZSBtYWluLXRocmVhZC4KCiAgMi4gVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgYWxn
b3JpdGhtIGRvZXMgbm90IHJlbHkgb24gYW55IHNvcnQgb2YKICAgICByZW5kZXIgdHJlZSBzdHJ1
Y3R1cmUgZm9yIGNvcnJlY3RuZXNzLiBUaGlzIGlzIGtleSBiZWNhdXNlIGF1dGhvcnMKICAgICBl
eHBlY3QgdG8gYmUgYWJsZSB0byBwdXQgYW55IENTUyBgZGlzcGxheWAgdmFsdWUgKGZsZXgsIGNv
bnRlbnRzLCBibG9jaywgZXRjKQogICAgIG9uIHJvd3MsIGNlbGxzLCBhbmQgdGFibGVzLCBhbmQg
cHJlc2VydmUgYWNjZXNzaWJpbGl0eSBzZW1hbnRpY3MuCiAgICAgVGhpcyBkaWRuJ3Qgd29yayBi
ZWZvcmUgdGhpcyBwYXRjaCBiZWNhdXNlIGFueSBvZiB0aGVzZSBkaXNwbGF5CiAgICAgdmFsdWVz
IHByZXZlbnQgUmVuZGVyVGFibGUsIFJlbmRlclRhYmxlUm93LCBhbmQgUmVuZGVyVGFibGVDZWxs
cwogICAgIGZyb20gYmVpbmcgZ2VuZXJhdGVkLCB3aGljaCB0aGUgUmVuZGVyVGFibGUgY2VsbC1m
b3ItY29sdW1uLWFuZC1yb3cKICAgICBtZWNoYW5pc20gcmVsaWVzIG9uLgoKVGhpcyBwYXRjaCBk
b2VzIG5vdCBmdWxseSBmaXggbm9uLXN0YW5kYXJkLWRpc3BsYXkgdmFsdWUgdGFibGVzIGR1ZSB0
bwppc3N1ZXMgd2l0aCBwYXJlbnQtY2hpbGQgbWlzbWF0Y2hlcyBpbiB0YWJsZSBoaWVyYXJjaGll
cyB3aXRoIHRoZXNlCmRpc3BsYXkgdmFsdWVzLiBUaGF0IHdpbGwgYmUgZml4ZWQgaW4gYSBsYXRl
ciBwYXRjaC4KClRoaXMgcGF0Y2ggYWxzbyBmZWF0dXJlcyBzZXZlcmFsIG90aGVyIGltcHJvdmVt
ZW50cy4KCiAgMS4gQVhQcm9wZXJ0eU5hbWU6OlJvd0NvdW50IGFuZCBBWFByb3BlcnR5TmFtZTo6
Q29sdW1uQ291bnQgd2VyZQogICAgIHBvaW50bGVzc2x5IGNhY2hlZCByYXRoZXIgdGhhbiBzaW1w
bHkgY291bnRpbmcgQVhQcm9wZXJ0eU5hbWU6OlJvd3MKICAgICBhbmQgQVhQcm9wZXJ0eU5hbWU6
OkNvbHVtbnMgKGFzIHRoZSBsaXZlIHRyZWUgaW1wbGVtZW50YXRpb24gZG9lcykuCiAgICAgVGhl
c2UgcHJvcGVydGllcyBhcmUgcmVtb3ZlZCwgcmVkdWNpbmcgbWVtb3J5IGFuZCBDUFUgY29uc3Vt
cHRpb24uCgogIDIuIEZpeGVkIGEgYnVnIHdoZXJlIHN0YWxlIGRhdGEgd2FzIG5vdCB1cGRhdGVk
IGFmdGVyIGR5bmFtaWMKICAgICBhcmlhLWNvbHNwYW4gY2hhbmdlcy4KCiAgMy4gRml4ZWQgYSBi
dWcgd2hlcmUgdGFibGUncyBjb2x1bW5zIHdlcmUgbm90IHVwZGF0ZWQgYWZ0ZXIgaXRzCiAgICAg
cm93cyBjaGlsZHJlbiBjaGFuZ2VkICh3aGljaCBjYW4gZWZmZWN0IGNvbHVtbnMpLgoKICA0LiBG
aXhlZCBhIHBlcmZvcm1hbmNlIGlzc3VlIHdoZXJlIGBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpp
c1RhYmxlQ2VsbGAsCiAgICAgdXNlZCB0byB0eXBlY2hlY2sgaXM8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbD4sIGRpZCBhIGBwYXJlbnRUYWJsZSgpYAogICAgIHRyYXZlcnNhbC4gVGhpcyBpcyBjb25m
dXNpbmcgYW5kIHZlcnkgbm9uLXBlcmZvcm1hbnQuIEEgbmV3CiAgICAgYGlzRXhwb3NlZFRhYmxl
Q2VsbGAgZnVuY3Rpb24gaXMgYWRkZWQgbWFraW5nIHRoaXMgaW50ZW50IG1vcmUKICAgICBjbGVh
ciwgYW5kIGltcHJvdmluZyBwZXJmb3JtYW5jZSBpbiB0aGUgYXJlYXMgdGhhdCBkb24ndCBuZWVk
IHRoaXMKICAgICB0cmF2ZXJzYWwuCgogIDUuIEFsbG93IGNyZWF0aW5nIEFjY2Vzc2liaWxpdHlU
YWJsZSwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCwgYW5kCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxl
Um93IHdpdGggbm8gcmVuZGVyZXIsIHdoaWNoIGlzIGNydWNpYWwgZm9yCiAgICAgZGlzcGxheTpj
b250ZW50cyBzdXBwb3J0LgoKVGhyZWUgdGVzdHMgYXJlIGFkZGVkIHRvIGVuc3VyZSB0aGUgc2xv
dC1ncmlkIGlzIHVwZGF0ZWQgYWZ0ZXIgZHluYW1pYyBjaGFuZ2VzOgogIC0gYWNjZXNzaWJpbGl0
eS9keW5hbWljLWNvbHNwYW4uaHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4u
aHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKClRo
aXMgcGF0Y2ggYWxzbyBwcm9ncmVzc2VzIGRpc3BsYXk6Y29udGVudHMgdGFibGUgYWNjZXNzaWJp
bGl0eS4gTmV3CnRlc3QgYWNjZXNzaWJpbGl0eS9kaXNwbGF5LWNvbnRlbnRzL3RhYmxlLmh0bWwg
aXMgYWRkZWQgdG8gY292ZXIgdGhpcy4KCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LXRhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWw6IEFkZGVkLgoqIExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1k
ZXNjZW5kYW50cy5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3Qt
ZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dDoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3Qt
ZGV0ZWN0aW9uLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJl
Y3QtY29sc3Bhbi1jZWxsLWV4cGVjdGVkLnR4dDoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3RhYmxlLW11bHRpcGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvdGFibGUtdGhlYWQtdGZvb3QtZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2dlbmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10
YWJsZS1jcmFzaC1leHBlY3RlZC50eHQ6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHA6CihXZWJDb3JlOjpvcGVyYXRvcjw8KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgooV2ViQ29yZTo6bm9kZUhhc0dyaWRSb2xlKToK
KFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRhYmxlKToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0
eVRhYmxlUm93KToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCk6CihXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpjcmVhdGVPYmplY3RGcm9tUmVuZGVyZXIpOgooV2ViQ29yZTo6Y3Jl
YXRlRnJvbU5vZGUpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQ2hpbGRyZW5DaGFu
Z2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJlY29tcHV0ZVNsb3RHcmlkKToK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2UpOgoo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlKToKKFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKToKKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnVwZGF0ZUlzb2xhdGVkVHJlZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpkZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdyaWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oOgooV2ViQ29yZTo6bm9kZUhhc0dyaWRSb2xlKToKKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmRlZmVyUmVjb21wdXRlVGFibGVTbG90R3JpZCk6CihXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNvbXB1dGVTbG90R3JpZCk6CiogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFJvd0Rlc2NlbmRhbnQpOiBEZWxldGVkLgooV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCiogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgoo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpheFJvd1NwYW5X
aXRoUm93SW5kZXggY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmg6CiogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkQ2VsbHMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2xvdEdyaWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6QWNjZXNz
aWJpbGl0eVRhYmxlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKToKKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUgY29uc3QpOgooV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6cmVjb21wdXRlSXNF
eHBvc2FibGUpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpzbG90R3JpZCk6CihXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnNldFNsb3RHcmlkRGlydHkpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZTo6YWRkQ2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9y
Q29sdW1uQW5kUm93KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93KToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93QW5kQ29sdW1uKToKKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNFeHBvc2FibGUgY29uc3QpOiBEZWxldGVkLgooV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRUYWJsZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuRnJvbVNlY3Rpb24pOiBEZWxl
dGVkLgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmg6
CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNw
cDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OkFjY2Vzc2liaWxpdHlUYWJsZUNl
bGwpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKToKKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNv
bnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzRXhwb3NlZFRhYmxlQ2Vs
bCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxl
SGVhZGVyQ2VsbCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJl
bnRSb3cgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhS
YW5nZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRl
eFJhbmdlIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnRpdGxlVUlF
bGVtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1u
SW5kZXggY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93U3BhbiBj
b25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2xTcGFuIGNvbnN0KToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzVGFibGVDZWxsIGNvbnN0KTogRGVs
ZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uU3BhbiBjb25z
dCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd1NwYW4g
Y29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5oOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6c2V0Um93
SW5kZXgpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6c2V0Q29sdW1uSW5kZXgp
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6Y29sdW1uSGVhZGVyKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3RGb3JTZWN0aW9uKTogRGVs
ZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbi5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6QWNjZXNzaWJpbGl0eVRh
YmxlUm93KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6Y3JlYXRlKToKKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KToKKiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oOgoqIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwOgoq
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRh
YmxlQ2VsbEF0c3BpLmNwcDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgdGFibGVDZWxsUGFyZW50XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGFjY2Vzc2liaWxpdHlIZWFkZXJFbGVtZW50c10pOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgooV2ViQ29yZTo6QVhJ
c29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgooV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojppc1RhYmxlQ2VsbCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRU
cmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyk6CihXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBk
YXRlTm9kZUFuZERlcGVuZGVudFByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CigtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORF0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6XSk6Ci0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExv
Z2dlci5jcHAgICAgIHwgICA0ICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAgICB8IDEyMSArKy0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oICB8ICAxNCArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcCAgIHwgIDgyIC0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdy
aWQuaCAgICAgfCAgIDcgKy0KIC4uLi9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCAgICAg
ICAgICAgICB8IDEwNyAtLS0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZENlbGwuaCB8ICAgNiAtCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dC5jcHAgfCAgIDIgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
ICAgICB8ICAgMiArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAg
ICAgIHwgICAyICsKIC4uLi9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggICAgICAgICAg
ICB8ICAgMSArCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmgg
fCAgIDIgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgICAgICB8
IDcxNiArKysrKysrKysrKy0tLS0tLS0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZS5oICAgICAgICB8ICAzNiArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbC5jcHAgIHwgMTQxICsrLS0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZUNlbGwuaCAgICB8ICAyOCArLQogLi4uL0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAg
ICAgICAgICAgICAgIHwgMTIzICstLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uLmggIHwgICAzIC0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZVJvdy5jcHAgICB8ICAyOCArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmggICAgIHwgICAyICsKIC4uLi9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNw
aS5jcHAgICB8ICAgMiArLQogLi4uL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNwaS5j
cHAgICAgIHwgICAyICstCiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tICAgfCAgIDQgKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgICAg
ICAgICB8ICAzNiArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggICAgICAg
ICAgIHwgIDExICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCAgICAgICAg
ICAgfCAgMjMgKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAg
ICB8ICAgNyArLQogLi4uL21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAg
IHwgICA0ICstCiAuLi4vYXJpYS10YWJsZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCAgICAgICAg
fCAgIDIgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy5odG1sICB8
ICAgOCArLQogLi4uL2N1c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQgICAgICAgIHwg
ICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUuaHRtbCAgfCAg
IDQgKy0KIC4uLi9kaXNwbGF5LWNvbnRlbnRzL3RhYmxlLWV4cGVjdGVkLnR4dCAgICAgICB8ICA4
OCArKysKIC4uLi9hY2Nlc3NpYmlsaXR5L2Rpc3BsYXktY29udGVudHMvdGFibGUuaHRtbCB8ICA4
MiArKwogLi4uL2R5bmFtaWMtY29sc3Bhbi1leHBlY3RlZC50eHQgICAgICAgICAgICAgIHwgIDIy
ICsKIC4uLi9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi5odG1sICAgICAgICB8ICA2OSAr
KwogLi4uL2R5bmFtaWMtcm93c3Bhbi1leHBlY3RlZC50eHQgICAgICAgICAgICAgIHwgIDIxICsK
IC4uLi9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi5odG1sICAgICAgICB8ICA2OCArKwog
Li4uL2R5bmFtaWMtdGFibGUtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0ICAgIHwgIDMzICsKIC4u
Li9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwgICAgICAgICAgICB8IDEwNCArKysKIC4u
Li9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dCB8ICAgMiArLQogTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi5odG1sIHwgICAyICstCiAuLi4v
dGFibGUtaW5jb3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQgfCAgMjYgKy0KIC4uLi90
YWJsZS1tdWx0aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dCAgICAgICB8ICAxNCArLQogLi4uL3Rh
YmxlLXRoZWFkLXRmb290LWV4cGVjdGVkLnR4dCAgICAgICAgICAgIHwgICA2ICstCiAuLi4vY3Vz
dG9tLWVsZW1lbnRzL3RhYmxlLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgIDQgKy0KIC4uLi9hY2Nl
c3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dCB8ICAgMiArLQogLi4uL3RhYmxl
LW11bHRpcGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0ICAgICAgIHwgIDEyICstCiAuLi4vdGFibGUt
dGhlYWQtdGZvb3QtZXhwZWN0ZWQudHh0ICAgICAgICAgICAgfCAgMTIgKy0KIExheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zICAgICB8ICAgMSArCiAuLi4vZGlzcGxheS1j
b250ZW50cy90YWJsZS1leHBlY3RlZC50eHQgICAgICAgfCAgNTQgKysKIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyB8ICAgNSArCiAuLi50ZW50LXdpdGgtZGlz
cGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQgfCAgIDMgKy0KIDUzIGZpbGVzIGNoYW5nZWQs
IDEzNzIgaW5zZXJ0aW9ucygrKSwgNzkyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZGlzcGxheS1jb250ZW50cy90YWJsZS1leHBlY3Rl
ZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Rpc3Bs
YXktY29udGVudHMvdGFibGUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLmh0bWwKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi1l
eHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2R5bmFtaWMtcm93c3Bhbi5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNj
ZW5kYW50cy5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L2FjY2Vzc2liaWxpdHkvZGlzcGxheS1jb250ZW50cy90YWJsZS1leHBlY3RlZC50eHQKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCmluZGV4IDFlNDdhNTUyN2MxZi4u
ZDYxMzZiMWQ2MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
TG9nZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNw
cApAQCAtMjAzLDYgKzIwMyw3IEBAIHZvaWQgQVhMb2dnZXI6OmxvZyhjb25zdCBTdHJpbmcmIGNv
bGxlY3Rpb25OYW1lLCBjb25zdCBBWE9iamVjdENhY2hlOjpEZWZlcnJlZENvCiAgICAgICAgIFsm
c2l6ZV0gKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8Tm9kZSosIE5vZGUqPj4mIHR5cGVkQ29sbGVj
dGlvbikgeyBzaXplID0gdHlwZWRDb2xsZWN0aW9uLnNpemUoKTsgfSwKICAgICAgICAgWyZzaXpl
XSAoY29uc3QgV2Vha0hhc2hTZXQ8RWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXRE
YXRhPiYgdHlwZWRDb2xsZWN0aW9uKSB7IHNpemUgPSB0eXBlZENvbGxlY3Rpb24uY29tcHV0ZVNp
emUoKTsgfSwKICAgICAgICAgWyZzaXplXSAoY29uc3QgV2Vha0hhc2hTZXQ8SFRNTFRhYmxlRWxl
bWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiYgdHlwZWRDb2xsZWN0aW9uKSB7
IHNpemUgPSB0eXBlZENvbGxlY3Rpb24uY29tcHV0ZVNpemUoKTsgfSwKKyAgICAgICAgWyZzaXpl
XSAoY29uc3QgV2Vha0hhc2hTZXQ8QWNjZXNzaWJpbGl0eVRhYmxlPiYgdHlwZWRDb2xsZWN0aW9u
KSB7IHNpemUgPSB0eXBlZENvbGxlY3Rpb24uY29tcHV0ZVNpemUoKTsgfSwKICAgICAgICAgW10g
KGF1dG8mKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTQyNCw2ICs0MjUsOSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHN0cmVhbSwgQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb24gbm90aWZpYwogICAg
IGNhc2UgQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYQXV0b2ZpbGxUeXBlQ2hhbmdl
ZDoKICAgICAgICAgc3RyZWFtIDw8ICJBWEF1dG9maWxsVHlwZUNoYW5nZWQiOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWENlbGxTbG90
c0NoYW5nZWQ6CisgICAgICAgIHN0cmVhbSA8PCAiQVhDZWxsU2xvdHNDaGFuZ2VkIjsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhDaGVj
a2VkU3RhdGVDaGFuZ2VkOgogICAgICAgICBzdHJlYW0gPDwgIkFYQ2hlY2tlZFN0YXRlQ2hhbmdl
ZCI7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKaW5kZXggZjJlODdjMzJmYTU1Li5hMTk0MmMzM2UxNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtODksNiAr
ODksNyBAQAogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRh
YmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVBhcnRFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTFRhYmxlUm93RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbmxpbmVSdW5BbmRPZmZzZXQuaCIKQEAgLTU3Niw2ICs1NzcsMTYgQEAgYm9vbCBub2RlSGFz
Um9sZShOb2RlKiBub2RlLCBTdHJpbmdWaWV3IHJvbGUpCiAgICAgcmV0dXJuIFNwYWNlU3BsaXRT
dHJpbmc6OnNwYWNlU3BsaXRTdHJpbmdDb250YWluc1ZhbHVlKHJvbGVWYWx1ZSwgcm9sZSwgU3Bh
Y2VTcGxpdFN0cmluZzo6U2hvdWxkRm9sZENhc2U6Olllcyk7CiB9CiAKK2Jvb2wgbm9kZUhhc0dy
aWRSb2xlKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGVIYXNSb2xlKG5vZGUsICJncmlk
Il9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAidGFibGUiX3MpIHx8IG5vZGVIYXNSb2xlKG5vZGUs
ICJ0cmVlZ3JpZCJfcyk7Cit9CisKK2Jvb2wgbm9kZUhhc0NlbGxSb2xlKE5vZGUqIG5vZGUpCit7
CisgICAgcmV0dXJuIG5vZGUgJiYgKG5vZGVIYXNSb2xlKG5vZGUsICJncmlkY2VsbCJfcykgfHwg
bm9kZUhhc1JvbGUobm9kZSwgImNlbGwiX3MpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJjb2x1bW5o
ZWFkZXIiX3MpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJyb3doZWFkZXIiX3MpKTsKK30KKwogc3Rh
dGljIGJvb2wgaXNTaW1wbGVJbWFnZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewog
ICAgIGlmICghaXM8UmVuZGVySW1hZ2U+KHJlbmRlcmVyKSkKQEAgLTYxOCw2ICs2MjksMjEgQEAg
c3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0oTm9kZSogbm9kZSkKICAgICByZXR1
cm4gbm9kZUhhc1JvbGUobm9kZSwgInRyZWVpdGVtIl9zKTsKIH0KIAorc3RhdGljIGJvb2wgaXNB
Y2Nlc3NpYmlsaXR5VGFibGUoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gaXM8SFRNTFRhYmxl
RWxlbWVudD4obm9kZSk7Cit9CisKK3N0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRhYmxlUm93
KE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIGlzPEhUTUxUYWJsZVJvd0VsZW1lbnQ+KG5vZGUp
OworfQorCitzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwoTm9kZSogbm9kZSkK
K3sKKyAgICByZXR1cm4gaXM8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+KG5vZGUpOworfQorCiBSZWY8
QWNjZXNzaWJpbGl0eU9iamVjdD4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlT2JqZWN0RnJvbVJlbmRl
cmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAgLy8gRklYTUU6IEhvdyBjb3VsZCBy
ZW5kZXJlci0+bm9kZSgpIGV2ZXIgbm90IGJlIGFuIEVsZW1lbnQ/CkBAIC02MjcsNyArNjUzLDcg
QEAgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZU9iamVjdEZy
b21SZW5kZXJlcihSZW5kZXJPYmplY3QqIHIKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlM
aXN0OjpjcmVhdGUocmVuZGVyZXIpOwogCiAgICAgLy8gYXJpYSB0YWJsZXMKLSAgICBpZiAobm9k
ZUhhc1JvbGUobm9kZSwgImdyaWQiX3MpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJ0cmVlZ3JpZCJf
cykgfHwgbm9kZUhhc1JvbGUobm9kZSwgInRhYmxlIl9zKSkKKyAgICBpZiAobm9kZUhhc0dyaWRS
b2xlKG5vZGUpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjcmVhdGUo
cmVuZGVyZXIpOwogICAgIGlmIChub2RlSGFzUm9sZShub2RlLCAicm93Il9zKSkKICAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdzo6Y3JlYXRlKHJlbmRlcmVyKTsKQEAgLTY3
MiwxMSArNjk4LDExIEBAIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBBWE9iamVjdENhY2hlOjpj
cmVhdGVPYmplY3RGcm9tUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByCiAgICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmNyZWF0ZShkb3duY2FzdDxSZW5kZXJNZW51TGlzdD4ocmVu
ZGVyZXIpKTsKIAogICAgIC8vIHN0YW5kYXJkIHRhYmxlcwotICAgIGlmIChpczxSZW5kZXJUYWJs
ZT4ocmVuZGVyZXIpKQorICAgIGlmIChpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpIHx8IGlzQWNj
ZXNzaWJpbGl0eVRhYmxlKG5vZGUpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRhYmxl
OjpjcmVhdGUocmVuZGVyZXIpOwotICAgIGlmIChpczxSZW5kZXJUYWJsZVJvdz4ocmVuZGVyZXIp
KQorICAgIGlmIChpczxSZW5kZXJUYWJsZVJvdz4ocmVuZGVyZXIpIHx8IGlzQWNjZXNzaWJpbGl0
eVRhYmxlUm93KG5vZGUpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRhYmxlUm93Ojpj
cmVhdGUocmVuZGVyZXIpOwotICAgIGlmIChpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKSkK
KyAgICBpZiAoKGlzPFJlbmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIpICYmICFyZW5kZXJlci0+aXNB
bm9ueW1vdXMoKSkgfHwgaXNBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKG5vZGUpKQogICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKHJlbmRlcmVyKTsKIAogICAgIC8v
IHByb2dyZXNzIGJhcgpAQCAtNzAyLDYgKzcyOCwxMiBAQCBzdGF0aWMgUmVmPEFjY2Vzc2liaWxp
dHlPYmplY3Q+IGNyZWF0ZUZyb21Ob2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKGlzQWNjZXNz
aWJpbGl0eUxpc3QoJm5vZGUpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUxpc3Q6OmNy
ZWF0ZShub2RlKTsKKyAgICBpZiAoaXNBY2Nlc3NpYmlsaXR5VGFibGUoJm5vZGUpKQorICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUobm9kZSk7CisgICAgaWYgKGlzQWNj
ZXNzaWJpbGl0eVRhYmxlUm93KCZub2RlKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
YWJsZVJvdzo6Y3JlYXRlKG5vZGUpOworICAgIGlmIChpc0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwo
Jm5vZGUpKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKG5v
ZGUpOwogICAgIGlmIChpc0FjY2Vzc2liaWxpdHlUcmVlKCZub2RlKSkKICAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHlUcmVlOjpjcmVhdGUobm9kZSk7CiAgICAgaWYgKGlzQWNjZXNzaWJpbGl0
eVRyZWVJdGVtKCZub2RlKSkKQEAgLTExNjQsNiArMTE5NiwxMSBAQCB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmhhbmRsZUNoaWxkcmVuQ2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCiAg
ICAgfSBlbHNlIGlmIChpczxBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cD4ob2JqZWN0KSkgewog
ICAgICAgICBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cD4ob2JqZWN0KS5oYW5k
bGVDaGlsZHJlbkNoYW5nZWQoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0gZWxzZSBpZiAoYXV0
byogYXhUYWJsZSA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KG9iamVjdCkp
CisgICAgICAgIGRlZmVyUmVjb21wdXRlVGFibGVDZWxsU2xvdHMoKmF4VGFibGUpOworICAgIGVs
c2UgaWYgKGF1dG8qIGF4Um93ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJv
dz4ob2JqZWN0KSkgeworICAgICAgICBpZiAoYXV0byogcGFyZW50VGFibGUgPSBheFJvdy0+cGFy
ZW50VGFibGUoKSkKKyAgICAgICAgICAgIGRlZmVyUmVjb21wdXRlVGFibGVDZWxsU2xvdHMoKnBh
cmVudFRhYmxlKTsKICAgICB9CiAKICAgICBpZiAoIW9iamVjdC5ub2RlKCkgJiYgIW9iamVjdC5y
ZW5kZXJlcigpKQpAQCAtMTIwNyw2ICsxMjQ0LDE0IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFu
ZGxlQ2hpbGRyZW5DaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkKICAgICBwb3N0
UGxhdGZvcm1Ob3RpZmljYXRpb24oJm9iamVjdCwgQVhDaGlsZHJlbkNoYW5nZWQpOwogfQogCit2
b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJlY29tcHV0ZUNlbGxTbG90cyhBY2Nlc3NpYmlsaXR5
VGFibGUmIGF4VGFibGUpCit7CisgICAgYXhUYWJsZS5zZXRDZWxsU2xvdHNEaXJ0eSgpOworI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAgdXBkYXRlSXNvbGF0ZWRU
cmVlKGF4VGFibGUsIEFYQ2VsbFNsb3RzQ2hhbmdlZCk7CisjZW5kaWYKK30KKwogdm9pZCBBWE9i
amVjdENhY2hlOjpoYW5kbGVNZW51T3BlbmVkKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2Rl
IHx8ICFub2RlLT5yZW5kZXJlcigpIHx8ICFub2RlSGFzUm9sZShub2RlLCAibWVudSJfcykpCkBA
IC0xNTM4LDExICsxNTgzLDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpzZWxlY3RlZENoaWxkcmVu
Q2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgICAgICBzZWxlY3RlZENoaWxkcmVu
Q2hhbmdlZChyZW5kZXJlci0+bm9kZSgpKTsKIH0KIAotc3RhdGljIGJvb2wgaXNBUklBVGFibGVD
ZWxsKE5vZGUqIG5vZGUpCi17Ci0gICAgcmV0dXJuIG5vZGUgJiYgKG5vZGVIYXNSb2xlKG5vZGUs
ICJncmlkY2VsbCJfcykgfHwgbm9kZUhhc1JvbGUobm9kZSwgImNlbGwiX3MpIHx8IG5vZGVIYXNS
b2xlKG5vZGUsICJjb2x1bW5oZWFkZXIiX3MpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJyb3doZWFk
ZXIiX3MpKTsKLX0KLQogdm9pZCBBWE9iamVjdENhY2hlOjpvblNjcm9sbGJhckZyYW1lUmVjdENo
YW5nZShjb25zdCBTY3JvbGxiYXImIHNjcm9sbGJhcikKIHsKICNpZiBFTkFCTEUoQUNDRVNTSUJJ
TElUWV9JU09MQVRFRF9UUkVFKQpAQCAtMTU1OCw3ICsxNTk4LDcgQEAgdm9pZCBBWE9iamVjdENh
Y2hlOjpvblNjcm9sbGJhckZyYW1lUmVjdENoYW5nZShjb25zdCBTY3JvbGxiYXImIHNjcm9sbGJh
cikKIAogdm9pZCBBWE9iamVjdENhY2hlOjpvblNlbGVjdGVkQ2hhbmdlZChOb2RlKiBub2RlKQog
ewotICAgIGlmIChpc0FSSUFUYWJsZUNlbGwobm9kZSkpCisgICAgaWYgKG5vZGVIYXNDZWxsUm9s
ZShub2RlKSkKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihub2RlLCBBWFNlbGVjdGVkQ2VsbHND
aGFuZ2VkKTsKICAgICBlbHNlIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4obm9kZSkpCiAgICAg
ICAgIHBvc3ROb3RpZmljYXRpb24obm9kZSwgQVhTZWxlY3RlZFN0YXRlQ2hhbmdlZCk7CkBAIC0y
MTA1LDcgKzIxNDUsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURlc2NlbmRh
bnRDaGFuZ2UoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbVN0cgogICAgICAgICBwb3N0UGxh
dGZvcm1Ob3RpZmljYXRpb24odGFyZ2V0LCBBWE5vdGlmaWNhdGlvbjo6QVhBY3RpdmVEZXNjZW5k
YW50Q2hhbmdlZCk7CiAKICAgICAgICAgLy8gVGFibGUgY2VsbCBhY3RpdmUgZGVzY2VuZGFudCBj
aGFuZ2VzIHNob3VsZCB0cmlnZ2VyIHNlbGVjdGVkIGNlbGwgY2hhbmdlcy4KLSAgICAgICAgaWYg
KHRhcmdldC0+aXNUYWJsZSgpICYmIGFjdGl2ZURlc2NlbmRhbnQtPmlzVGFibGVDZWxsKCkpIHsK
KyAgICAgICAgaWYgKHRhcmdldC0+aXNUYWJsZSgpICYmIGFjdGl2ZURlc2NlbmRhbnQtPmlzRXhw
b3NlZFRhYmxlQ2VsbCgpKSB7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJF
RSkKICAgICAgICAgICAgIHVwZGF0ZUlzb2xhdGVkVHJlZSh0YXJnZXQsIEFYTm90aWZpY2F0aW9u
OjpBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkKTsKICNlbmRpZgpAQCAtMjIwMyw2ICsyMjQzLDI2IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlKEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgQVhMT0cobWFrZVN0cmluZygiYXR0cmlidXRl
ICIsIGF0dHJOYW1lLmxvY2FsTmFtZSgpLCAiIGZvciBlbGVtZW50ICIsIGVsZW1lbnQgPyBlbGVt
ZW50LT5kZWJ1Z0Rlc2NyaXB0aW9uKCkgOiBTdHJpbmcoIm51bGxwdHIiX3MpKSk7CiAgICAgQVhM
T0cobWFrZVN0cmluZygib2xkIHZhbHVlOiAiLCBvbGRWYWx1ZSwgIiBuZXcgdmFsdWU6ICIsIG5l
d1ZhbHVlKSk7CiAKKyAgICBlbnVtIGNsYXNzIFRhYmxlUHJvcGVydHkgOiB1aW50OF90IHsgRXhw
b3NlZCA9IDEgPDwgMCwgQ2VsbFNsb3RzID0gMSA8PCAxIH07CisgICAgYXV0byByZWNvbXB1dGVQ
YXJlbnRUYWJsZVByb3BlcnRpZXMgPSBbdGhpc10gKEVsZW1lbnQqIGVsZW1lbnQsIE9wdGlvblNl
dDxUYWJsZVByb3BlcnR5PiBwcm9wZXJ0aWVzKSB7CisgICAgICAgIEFTU0VSVCghcHJvcGVydGll
cy5pc0VtcHR5KCkpOworCisgICAgICAgIGlmICghcHJvcGVydGllcy5jb250YWlucyhUYWJsZVBy
b3BlcnR5OjpDZWxsU2xvdHMpKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSdyZSByZS1jb21wdXRp
bmcgdGhlIGV4cG9zZWQgc3RhdGUgb2YgdGhlIHRhYmxlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gd29y
ayBmb3Igbm9uLUFSSUEgdGFibGVzLCBhbGxvd2luZyB1cyB0bworICAgICAgICAgICAgLy8gZG8g
YSBjaGVhcCBkeW5hbWljRG93bmNhc3QgY2hlY2sgZm9yIGFuIEhUTUxUYWJsZVBhcnRFbGVtZW50
IHJhdGhlciB0aGFuIGNhbGxpbmcgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cGFyZW50VGFibGUo
KS4KKyAgICAgICAgICAgIC8vIChBUklBIHRhYmxlcyBhcmUgaW5oZXJlbnRseSBhbHdheXMgZXhw
b3NlZCkuCisgICAgICAgICAgICBpZiAoYXV0byogdGFibGVQYXJ0RWxlbWVudCA9IGR5bmFtaWNE
b3duY2FzdDxIVE1MVGFibGVQYXJ0RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICAgICAg
ZGVmZXJSZWNvbXB1dGVUYWJsZUlzRXhwb3NlZChjb25zdF9jYXN0PEhUTUxUYWJsZUVsZW1lbnQq
Pih0YWJsZVBhcnRFbGVtZW50LT5maW5kUGFyZW50VGFibGUoKS5nZXQoKSkpOworICAgICAgICB9
IGVsc2UgaWYgKGF1dG8qIGF4Q2VsbCA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsPihnZXRPckNyZWF0ZShlbGVtZW50KSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBw
YXJlbnRUYWJsZSA9IGF4Q2VsbC0+cGFyZW50VGFibGUoKSkgeworICAgICAgICAgICAgICAgIGlm
IChwcm9wZXJ0aWVzLmNvbnRhaW5zKFRhYmxlUHJvcGVydHk6OkV4cG9zZWQpICYmICFwYXJlbnRU
YWJsZS0+aXNBcmlhVGFibGUoKSkKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJSZWNvbXB1dGVU
YWJsZUlzRXhwb3NlZChwYXJlbnRUYWJsZS0+ZWxlbWVudCgpKTsKKyAgICAgICAgICAgICAgICBp
ZiAocHJvcGVydGllcy5jb250YWlucyhUYWJsZVByb3BlcnR5OjpDZWxsU2xvdHMpKQorICAgICAg
ICAgICAgICAgICAgICBkZWZlclJlY29tcHV0ZVRhYmxlQ2VsbFNsb3RzKCpwYXJlbnRUYWJsZSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCiAgICAgaWYgKCFzaG91bGRQcm9j
ZXNzQXR0cmlidXRlQ2hhbmdlKGVsZW1lbnQsIGF0dHJOYW1lKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0yMjQ1LDE2ICsyMzA1LDE3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmli
dXRlQ2hhbmdlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgZWxz
ZSBpZiAoYXR0ck5hbWUgPT0gb3BlbkF0dHIgJiYgaXM8SFRNTERpYWxvZ0VsZW1lbnQ+KCplbGVt
ZW50KSkgewogICAgICAgICBkZWZlck1vZGFsQ2hhbmdlKGVsZW1lbnQpOwogICAgICAgICByZWNv
bXB1dGVJc0lnbm9yZWQoZWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKKyAgICB9IGVsc2UgaWYgKGF0
dHJOYW1lID09IHJvd3NwYW5BdHRyKSB7CisgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVu
dCwgQVhSb3dTcGFuQ2hhbmdlZCk7CisgICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlUHJvcGVy
dGllcyhlbGVtZW50LCBUYWJsZVByb3BlcnR5OjpDZWxsU2xvdHMpOworICAgIH0gZWxzZSBpZiAo
YXR0ck5hbWUgPT0gY29sc3BhbkF0dHIpIHsKKyAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVt
ZW50LCBBWENvbHVtblNwYW5DaGFuZ2VkKTsKKyAgICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVQ
cm9wZXJ0aWVzKGVsZW1lbnQsIFRhYmxlUHJvcGVydHk6OkNlbGxTbG90cyk7CiAgICAgfQogCiAg
ICAgaWYgKCFhdHRyTmFtZS5sb2NhbE5hbWUoKS5zdHJpbmcoKS5zdGFydHNXaXRoKCJhcmlhLSJf
cykpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVjb21wdXRlUGFyZW50VGFibGVFeHBv
c3VyZSA9IFt0aGlzXSAoRWxlbWVudCogZWxlbWVudCkgewotICAgICAgICBpZiAoYXV0byogdGFi
bGVQYXJ0RWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MVGFibGVQYXJ0RWxlbWVudD4oZWxl
bWVudCkpCi0gICAgICAgICAgICBkZWZlclJlY29tcHV0ZVRhYmxlSXNFeHBvc2VkKGNvbnN0X2Nh
c3Q8SFRNTFRhYmxlRWxlbWVudCo+KHRhYmxlUGFydEVsZW1lbnQtPmZpbmRQYXJlbnRUYWJsZSgp
LmdldCgpKSk7Ci0gICAgfTsKLQogICAgIGlmIChhdHRyTmFtZSA9PSBhcmlhX2FjdGl2ZWRlc2Nl
bmRhbnRBdHRyKQogICAgICAgICBoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlKCplbGVtZW50
LCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfYXRv
bWljQXR0cikKQEAgLTIyNzQsMTAgKzIzMzUsMTAgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5k
bGVBdHRyaWJ1dGVDaGFuZ2UoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYK
ICAgICAgICAgZGVmZXJSZWNvbXB1dGVUYWJsZUlzRXhwb3NlZChkeW5hbWljRG93bmNhc3Q8SFRN
TFRhYmxlRWxlbWVudD4oZWxlbWVudCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJp
YV9jb2xpbmRleEF0dHIpIHsKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWENv
bHVtbkluZGV4Q2hhbmdlZCk7Ci0gICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlRXhwb3N1cmUo
ZWxlbWVudCk7CisgICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlUHJvcGVydGllcyhlbGVtZW50
LCBUYWJsZVByb3BlcnR5OjpFeHBvc2VkKTsKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFy
aWFfY29sc3BhbkF0dHIpIHsKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWENv
bHVtblNwYW5DaGFuZ2VkKTsKLSAgICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVFeHBvc3VyZShl
bGVtZW50KTsKKyAgICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVQcm9wZXJ0aWVzKGVsZW1lbnQs
IHsgVGFibGVQcm9wZXJ0eTo6Q2VsbFNsb3RzLCBUYWJsZVByb3BlcnR5OjpFeHBvc2VkIH0pOwog
ICAgIH0KICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2Rlc2NyaWJlZGJ5QXR0cikKICAg
ICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWERlc2NyaWJlZEJ5Q2hhbmdlZCk7CkBA
IC0yMjk3LDcgKzIzNTgsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNo
YW5nZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJgogICAgICAgICBwb3N0
Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYUGxhY2Vob2xkZXJDaGFuZ2VkKTsKICAgICBlbHNlIGlm
IChhdHRyTmFtZSA9PSBhcmlhX3Jvd2luZGV4QXR0cikgewogICAgICAgICBwb3N0Tm90aWZpY2F0
aW9uKGVsZW1lbnQsIEFYUm93SW5kZXhDaGFuZ2VkKTsKLSAgICAgICAgcmVjb21wdXRlUGFyZW50
VGFibGVFeHBvc3VyZShlbGVtZW50KTsKKyAgICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVQcm9w
ZXJ0aWVzKGVsZW1lbnQsIHsgVGFibGVQcm9wZXJ0eTo6Q2VsbFNsb3RzLCBUYWJsZVByb3BlcnR5
OjpFeHBvc2VkIH0pOwogICAgIH0KICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3ZhbHVl
bWF4QXR0cikKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWE1heGltdW1WYWx1
ZUNoYW5nZWQpOwpAQCAtMjM1NSw5ICsyNDE2LDggQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5k
bGVBdHRyaWJ1dGVDaGFuZ2UoRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYK
ICAgICAgICAgaGFuZGxlUm93Q291bnRDaGFuZ2VkKGdldChlbGVtZW50KSwgZWxlbWVudCA/ICZl
bGVtZW50LT5kb2N1bWVudCgpIDogbnVsbHB0cik7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0g
YXJpYV9yb3dzcGFuQXR0cikgewogICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFY
Um93U3BhbkNoYW5nZWQpOwotICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlKGVs
ZW1lbnQpOwotICAgIH0KLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX3NvcnRBdHRyKQor
ICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgeyBUYWJsZVBy
b3BlcnR5OjpDZWxsU2xvdHMsIFRhYmxlUHJvcGVydHk6OkV4cG9zZWQgfSk7CisgICAgfSBlbHNl
IGlmIChhdHRyTmFtZSA9PSBhcmlhX3NvcnRBdHRyKQogICAgICAgICBwb3N0Tm90aWZpY2F0aW9u
KGVsZW1lbnQsIEFYT2JqZWN0Q2FjaGU6OkFYU29ydERpcmVjdGlvbkNoYW5nZWQpOwogfQogCkBA
IC0zNjcyLDYgKzM3MzIsMTIgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwZXJmb3JtRGVmZXJyZWRD
YWNoZVVwZGF0ZSgpCiAgICAgICAgIGhhbmRsZUNoaWxkcmVuQ2hhbmdlZCgqY2hpbGQpOwogICAg
IG1fZGVmZXJyZWRDaGlsZHJlbkNoYW5nZWRMaXN0LmNsZWFyKCk7CiAKKyAgICBBWExPR0RlZmVy
cmVkQ29sbGVjdGlvbigiUmVjb21wdXRlVGFibGVDZWxsU2xvdHNMaXN0Il9zLCBtX2RlZmVycmVk
UmVjb21wdXRlVGFibGVDZWxsU2xvdHNMaXN0KTsKKyAgICBtX2RlZmVycmVkUmVjb21wdXRlVGFi
bGVDZWxsU2xvdHNMaXN0LmZvckVhY2goW3RoaXNdIChhdXRvJiBheFRhYmxlKSB7CisgICAgICAg
IGhhbmRsZVJlY29tcHV0ZUNlbGxTbG90cyhheFRhYmxlKTsKKyAgICB9KTsKKyAgICBtX2RlZmVy
cmVkUmVjb21wdXRlVGFibGVDZWxsU2xvdHNMaXN0LmNsZWFyKCk7CisKICAgICBBWExPR0RlZmVy
cmVkQ29sbGVjdGlvbigiVGV4dENoYW5nZWRMaXN0Il9zLCBtX2RlZmVycmVkVGV4dENoYW5nZWRM
aXN0KTsKICAgICBmb3IgKGF1dG8qIG5vZGUgOiBtX2RlZmVycmVkVGV4dENoYW5nZWRMaXN0KQog
ICAgICAgICBoYW5kbGVUZXh0Q2hhbmdlZChnZXRPckNyZWF0ZShub2RlKSk7CkBAIC0zODQxLDYg
KzM5MDcsMTAgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoY29uc3Qg
VmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QWNjZXNzaWJpbGkKICAgICAgICAgY2FzZSBBWEF1dG9m
aWxsVHlwZUNoYW5nZWQ6CiAgICAgICAgICAgICB0cmVlLT51cGRhdGVOb2RlUHJvcGVydHkoKm5v
dGlmaWNhdGlvbi5maXJzdCwgQVhQcm9wZXJ0eU5hbWU6OlZhbHVlQXV0b2ZpbGxCdXR0b25UeXBl
KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFYQ2VsbFNsb3RzQ2hhbmdlZDoK
KyAgICAgICAgICAgIEFTU0VSVChub3RpZmljYXRpb24uZmlyc3QtPmlzVGFibGUoKSk7CisgICAg
ICAgICAgICB0cmVlLT51cGRhdGVOb2RlUHJvcGVydHkoKm5vdGlmaWNhdGlvbi5maXJzdCwgQVhQ
cm9wZXJ0eU5hbWU6OkNlbGxTbG90cyk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6CiAgICAgICAgICAgICB0cmVlLT51cGRhdGVOb2RlUHJv
cGVydHkoKm5vdGlmaWNhdGlvbi5maXJzdCwgQVhQcm9wZXJ0eU5hbWU6OklzQ2hlY2tlZCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTQwMDIsNiArNDA3MiwxMyBAQCB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmRlZmVyUmVjb21wdXRlVGFibGVJc0V4cG9zZWQoRWxlbWVudCogZWxlbWVudCkKICAgICAg
ICAgbV9wZXJmb3JtQ2FjaGVVcGRhdGVUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIAordm9p
ZCBBWE9iamVjdENhY2hlOjpkZWZlclJlY29tcHV0ZVRhYmxlQ2VsbFNsb3RzKEFjY2Vzc2liaWxp
dHlUYWJsZSYgYXhUYWJsZSkKK3sKKyAgICBtX2RlZmVycmVkUmVjb21wdXRlVGFibGVDZWxsU2xv
dHNMaXN0LmFkZChheFRhYmxlKTsKKyAgICBpZiAoIW1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV9wZXJmb3JtQ2FjaGVVcGRhdGVUaW1lci5zdGFydE9uZVNo
b3QoMF9zKTsKK30KKwogdm9pZCBBWE9iamVjdENhY2hlOjpkZWZlclRleHRDaGFuZ2VkSWZOZWVk
ZWQoTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGVBbmRSZW5kZXJlckFyZVZhbGlkKG5vZGUp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBm
ODRhNGExZmFmYjEuLmQ4NjBkMjBmYWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgVGV4dFN0cmVhbTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEhUTUxBcmVhRWxlbWVudDsKIGNsYXNzIEhUTUxUYWJsZUVsZW1l
bnQ7CkBAIC0yMjAsNyArMjIxLDggQEAgcHVibGljOgogICAgICAgICAsIFZlY3RvcjxBdHRyaWJ1
dGVDaGFuZ2U+CiAgICAgICAgICwgVmVjdG9yPHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+PgogICAg
ICAgICAsIFdlYWtIYXNoU2V0PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0
YT4KLSAgICAgICAgLCBXZWFrSGFzaFNldDxIVE1MVGFibGVFbGVtZW50LCBXZWFrUHRySW1wbFdp
dGhFdmVudFRhcmdldERhdGE+PjsKKyAgICAgICAgLCBXZWFrSGFzaFNldDxIVE1MVGFibGVFbGVt
ZW50LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+CisgICAgICAgICwgV2Vha0hhc2hT
ZXQ8QWNjZXNzaWJpbGl0eVRhYmxlPj47CiAgICAgdm9pZCBkZWZlck1vZGFsQ2hhbmdlKEVsZW1l
bnQqKTsKICAgICB2b2lkIGRlZmVyTWVudUxpc3RWYWx1ZUNoYW5nZShFbGVtZW50Kik7CiAgICAg
dm9pZCBkZWZlck5vZGVBZGRlZE9yUmVtb3ZlZChOb2RlKik7CkBAIC0zMjAsNiArMzIyLDcgQEAg
cHVibGljOgogICAgICAgICBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkLAogICAgICAgICBBWEF1
dG9jb3JyZWN0aW9uT2NjdXJlZCwKICAgICAgICAgQVhBdXRvZmlsbFR5cGVDaGFuZ2VkLAorICAg
ICAgICBBWENlbGxTbG90c0NoYW5nZWQsCiAgICAgICAgIEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZCwK
ICAgICAgICAgQVhDaGlsZHJlbkNoYW5nZWQsCiAgICAgICAgIEFYQ29sdW1uQ291bnRDaGFuZ2Vk
LApAQCAtNDM3LDYgKzQ0MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlZmVyUmVjb21wdXRlSXNJ
Z25vcmVkSWZOZWVkZWQoRWxlbWVudCopOwogICAgIHZvaWQgZGVmZXJSZWNvbXB1dGVJc0lnbm9y
ZWQoRWxlbWVudCopOwogICAgIHZvaWQgZGVmZXJSZWNvbXB1dGVUYWJsZUlzRXhwb3NlZChFbGVt
ZW50Kik7CisgICAgdm9pZCBkZWZlclJlY29tcHV0ZVRhYmxlQ2VsbFNsb3RzKEFjY2Vzc2liaWxp
dHlUYWJsZSYpOwogICAgIHZvaWQgZGVmZXJUZXh0Q2hhbmdlZElmTmVlZGVkKE5vZGUqKTsKICAg
ICB2b2lkIGRlZmVyU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWRJZk5lZWRlZChFbGVtZW50Jik7CiAg
ICAgdm9pZCBwZXJmb3JtRGVmZXJyZWRDYWNoZVVwZGF0ZSgpOwpAQCAtNTY0LDYgKzU2OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChOb2RlKiBv
bGRGb2N1c2VkTm9kZSwgTm9kZSogbmV3Rm9jdXNlZE5vZGUsIFVwZGF0ZU1vZGFsID0gVXBkYXRl
TW9kYWw6Olllcyk7CiAgICAgdm9pZCBoYW5kbGVNZW51TGlzdFZhbHVlQ2hhbmdlZChFbGVtZW50
Jik7CiAgICAgdm9pZCBoYW5kbGVUZXh0Q2hhbmdlZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7Cisg
ICAgdm9pZCBoYW5kbGVSZWNvbXB1dGVDZWxsU2xvdHMoQWNjZXNzaWJpbGl0eVRhYmxlJik7CiAK
ICAgICAvLyBhcmlhLW1vZGFsIG9yIG1vZGFsIDxkaWFsb2c+IHJlbGF0ZWQKICAgICBib29sIGlz
TW9kYWxFbGVtZW50KEVsZW1lbnQmKSBjb25zdDsKQEAgLTYzNiw2ICs2NDEsNyBAQCBwcml2YXRl
OgogICAgIEhhc2hTZXQ8QVhJRD4gbV9kZWZlcnJlZFJlbW92ZWRPYmplY3RzOwogICAgIFdlYWtI
YXNoU2V0PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4gbV9kZWZlcnJl
ZFJlY29tcHV0ZUlzSWdub3JlZExpc3Q7CiAgICAgV2Vha0hhc2hTZXQ8SFRNTFRhYmxlRWxlbWVu
dCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiBtX2RlZmVycmVkUmVjb21wdXRlVGFi
bGVJc0V4cG9zZWRMaXN0OworICAgIFdlYWtIYXNoU2V0PEFjY2Vzc2liaWxpdHlUYWJsZT4gbV9k
ZWZlcnJlZFJlY29tcHV0ZVRhYmxlQ2VsbFNsb3RzTGlzdDsKICAgICBMaXN0SGFzaFNldDxOb2Rl
Kj4gbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdDsKICAgICBXZWFrSGFzaFNldDxFbGVtZW50LCBX
ZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+IG1fZGVmZXJyZWRTZWxlY3RlZENoaWxkcmVk
Q2hhbmdlZExpc3Q7CiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+
PiBtX2RlZmVycmVkQ2hpbGRyZW5DaGFuZ2VkTGlzdDsKQEAgLTY4MCw2ICs2ODYsOCBAQCBwcml2
YXRlOgogfTsKIAogYm9vbCBub2RlSGFzUm9sZShOb2RlKiwgU3RyaW5nVmlldyByb2xlKTsKK2Jv
b2wgbm9kZUhhc0dyaWRSb2xlKE5vZGUqKTsKK2Jvb2wgbm9kZUhhc0NlbGxSb2xlKE5vZGUqKTsK
IC8vIFRoaXMgd2lsbCBsZXQgeW91IGtub3cgaWYgYXJpYS1oaWRkZW4gd2FzIGV4cGxpY2l0bHkg
c2V0IHRvIGZhbHNlLgogYm9vbCBpc05vZGVBcmlhVmlzaWJsZShOb2RlKik7CiAgICAgCkBAIC03
MDUsNiArNzEzLDggQEAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c2V0Rm9yY2VEZWZlcnJl
ZFNwZWxsQ2hlY2tpbmcoYm9vbCkgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkaXNh
YmxlQWNjZXNzaWJpbGl0eSgpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c2V0RW5o
YW5jZWRVc2VySW50ZXJmYWNlQWNjZXNzaWJpbGl0eShib29sKSB7IH0KIGlubGluZSBib29sIG5v
ZGVIYXNSb2xlKE5vZGUqLCBTdHJpbmdWaWV3KSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJv
b2wgbm9kZUhhc0dyaWRSb2xlKE5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wg
bm9kZUhhc0NlbGxSb2xlKE5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIHZvaWQgQVhP
YmplY3RDYWNoZTo6c3RhcnRDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzVW50aWxUcmVl
TXV0YXRlcygpIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6c3RvcENhY2hpbmdDb21w
dXRlZE9iamVjdEF0dHJpYnV0ZXMoKSB7IH0KIGlubGluZSBib29sIGlzTm9kZUFyaWFWaXNpYmxl
KE5vZGUqKSB7IHJldHVybiB0cnVlOyB9CkBAIC03MzEsNiArNzQxLDcgQEAgaW5saW5lIHZvaWQg
QVhPYmplY3RDYWNoZTo6ZGVmZXJSZWNvbXB1dGVJc0lnbm9yZWQoRWxlbWVudCopIHsgfQogaW5s
aW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJUZXh0Q2hhbmdlZElmTmVlZGVkKE5vZGUqKSB7
IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVyU2VsZWN0ZWRDaGlsZHJlbkNoYW5n
ZWRJZk5lZWRlZChFbGVtZW50JikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkZWZl
clRleHRSZXBsYWNlbWVudE5vdGlmaWNhdGlvbkZvclRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50JiwgY29uc3QgU3RyaW5nJikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENh
Y2hlOjpkZWZlclJlY29tcHV0ZVRhYmxlQ2VsbFNsb3RzKEFjY2Vzc2liaWxpdHlUYWJsZSYpIHsg
fQogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVVTRShBVFNQSSkKIGlubGluZSB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmRldGFjaFdyYXBwZXIoQVhDb3JlT2JqZWN0KiwgQWNjZXNzaWJpbGl0eURldGFj
aG1lbnRUeXBlKSB7IH0KICNlbmRpZgpAQCAtNzY0LDYgKzc3NSw3IEBAIGlubGluZSB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oTm9kZSosIEFYVGV4
dEVkaXRUeXBlCiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdl
Tm90aWZpY2F0aW9uKE5vZGUqLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlY29t
cHV0ZUlzSWdub3JlZChSZW5kZXJPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmhhbmRsZVRleHRDaGFuZ2VkKEFjY2Vzc2liaWxpdHlPYmplY3QqKSB7IH0KK2lubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJlY29tcHV0ZUNlbGxTbG90cyhBY2Nlc3NpYmlsaXR5
VGFibGUmKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6Om9uUmVuZGVyZXJDcmVhdGVk
KEVsZW1lbnQmKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUxvYWRpbmdQ
cm9ncmVzcyhkb3VibGUpIHsgfQogaW5saW5lIFNpbXBsZVJhbmdlIEFYT2JqZWN0Q2FjaGU6OnJh
bmdlRm9yTm9kZUNvbnRlbnRzKE5vZGUmIG5vZGUpIHsgcmV0dXJuIG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cyhub2RlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCmluZGV4IGU0ZTVmODVjMmI3ZS4uNWE0
ODk5MjY2OTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBAIC01MSw5MiArNTEsMTAgQEAgUmVmPEFjY2Vzc2li
aWxpdHlBUklBR3JpZD4gQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjpjcmVhdGUoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWQocmVuZGVyZXIpKTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFRhYmxl
Q2VsbENoaWxkKEFYQ29yZU9iamVjdCogY2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVj
dCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKLXsKLSAgICBpZiAoIWNo
aWxkIHx8ICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqY2hpbGQpICYmICFjaGlsZC0+aXNB
UklBVHJlZUdyaWRSb3coKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGF1dG8mIHJv
dyA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKmNoaWxkKTsKLSAgICBpZiAoYXBw
ZW5kZWRSb3dzLmNvbnRhaW5zKCZyb3cpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAv
LyBzdG9yZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucwotICAgIHVuc2lnbmVkIHJvd0Nl
bGxDb3VudCA9IHJvdy5jaGlsZHJlbigpLnNpemUoKTsKLSAgICBpZiAocm93Q2VsbENvdW50ID4g
Y29sdW1uQ291bnQpCi0gICAgICAgIGNvbHVtbkNvdW50ID0gcm93Q2VsbENvdW50OwotCi0gICAg
cm93LnNldFJvd0luZGV4KChpbnQpbV9yb3dzLnNpemUoKSk7Ci0gICAgbV9yb3dzLmFwcGVuZCgm
cm93KTsKLSAgICBhZGRDaGlsZCgmcm93KTsKLSAgICBhcHBlbmRlZFJvd3MuYWRkKCZyb3cpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCiBib29sIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6aXNNdWx0
aVNlbGVjdGFibGUoKSBjb25zdAogewogICAgIGNvbnN0IEF0b21TdHJpbmcmIGFyaWFNdWx0aVNl
bGVjdGFibGUgPSBnZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX211bHRpc2VsZWN0YWJsZUF0
dHIpOwogICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXJpYU11bHRp
U2VsZWN0YWJsZSwgImZhbHNlIl9zKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6
OmFkZFJvd0Rlc2NlbmRhbnQoQVhDb3JlT2JqZWN0KiByb3dDaGlsZCwgSGFzaFNldDxBY2Nlc3Np
YmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KQotewot
ICAgIGlmICghcm93Q2hpbGQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghcm93Q2hpbGQt
PmlzVGFibGVSb3coKSB8fCAhcm93Q2hpbGQtPm5vZGUoKSkgewotICAgICAgICAvLyBBbHRob3Vn
aCBhICJncmlkIiBzaG91bGQgaGF2ZSByb3dzIGFzIGl0cyBkaXJlY3QgZGVzY2VuZGFudHMsIGlm
IHRoaXMgaXMgbm90IGEgdGFibGUgcm93LAotICAgICAgICAvLyBvciB0aGlzIHJvdyBpcyBhbm9u
eW1vdXMsIGRpdmUgZGVlcGVyIGludG8gdGhlIGRlc2NlbmRhbnRzIHRvIHRyeSB0byBmaW5kIGEg
dmFsaWQgcm93LgotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcm93Q2hpbGQtPmNo
aWxkcmVuKCkpCi0gICAgICAgICAgICBhZGRSb3dEZXNjZW5kYW50KGNoaWxkLmdldCgpLCBhcHBl
bmRlZFJvd3MsIGNvbHVtbkNvdW50KTsKLSAgICB9IGVsc2UKLSAgICAgICAgYWRkVGFibGVDZWxs
Q2hpbGQocm93Q2hpbGQsIGFwcGVuZGVkUm93cywgY29sdW1uQ291bnQpOwotfQotCi12b2lkIEFj
Y2Vzc2liaWxpdHlBUklBR3JpZDo6YWRkQ2hpbGRyZW4oKQotewotICAgIEFTU0VSVCghbV9jaGls
ZHJlbkluaXRpYWxpemVkKTsgCi0gICAgCi0gICAgaWYgKCFpc0V4cG9zYWJsZSgpKSB7Ci0gICAg
ICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgCi0gICAgbV9jaGlsZHJlbkluaXRpYWxpemVkID0gdHJ1ZTsKLSAg
ICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Ci0gICAgYXV0byogYXhDYWNoZSA9
IGRvY3VtZW50ID8gZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSA6IG51bGxwdHI7Ci0KLSAgICAv
LyBBZGQgdGhlIGNoaWxkcmVuIHJvd3MgYnV0IGJlIG1pbmRmdWwgaW4gY2FzZSB0aGVyZSBhcmUg
Zm9vdGVyIHNlY3Rpb25zIGluIHRoaXMgdGFibGUuCi0gICAgSGFzaFNldDxBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4gYXBwZW5kZWRSb3dzOwotICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50ID0gMDsKLSAg
ICBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgZm9vdGVyU2VjdGlvbnM7Ci0gICAgZm9yIChS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGJvb2wgZm9vdGVyU2VjdGlv
biA9IGZhbHNlOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBjaGlsZFJlbmRlcmVyID0gY2hp
bGQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChpczxSZW5kZXJUYWJsZVNlY3Rpb24+
KCpjaGlsZFJlbmRlcmVyKSkgewotICAgICAgICAgICAgICAgIFJlbmRlclRhYmxlU2VjdGlvbiYg
Y2hpbGRTZWN0aW9uID0gZG93bmNhc3Q8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hpbGRSZW5kZXJl
cik7Ci0gICAgICAgICAgICAgICAgaWYgKCZjaGlsZFNlY3Rpb24gPT0gY2hpbGRTZWN0aW9uLnRh
YmxlKCktPmZvb3RlcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvb3RlclNlY3Rpb25zLmFw
cGVuZChjaGlsZCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvb3RlclNlY3Rpb24gPSB0cnVlOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAo
IWZvb3RlclNlY3Rpb24pCi0gICAgICAgICAgICBhZGRSb3dEZXNjZW5kYW50KGNoaWxkLmdldCgp
LCBhcHBlbmRlZFJvd3MsIGNvbHVtbkNvdW50KTsKLSAgICB9Ci0gICAgCi0gICAgZm9yIChjb25z
dCBhdXRvJiBmb290ZXJTZWN0aW9uIDogZm9vdGVyU2VjdGlvbnMpCi0gICAgICAgIGFkZFJvd0Rl
c2NlbmRhbnQoZm9vdGVyU2VjdGlvbi5nZXQoKSwgYXBwZW5kZWRSb3dzLCBjb2x1bW5Db3VudCk7
Ci0gICAgCi0gICAgLy8gbWFrZSB0aGUgY29sdW1ucyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNv
bHVtbnMgaW4gdGhlIGZpcnN0IGJvZHkKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29s
dW1uQ291bnQ7ICsraSkgewotICAgICAgICBhdXRvJiBjb2x1bW4gPSBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4+KCpheENhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGU6OkNv
bHVtbikpOwotICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7Ci0gICAgICAgIGNvbHVt
bi5zZXRQYXJlbnQodGhpcyk7Ci0gICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVtbik7Ci0g
ICAgICAgIGFkZENoaWxkKCZjb2x1bW4sIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsKLSAgICB9Ci0K
LSAgICBhZGRDaGlsZChoZWFkZXJDb250YWluZXIoKSwgRGVzY2VuZElmSWdub3JlZDo6Tm8pOwot
fQotICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKaW5kZXggYWVjYzlhOGJiYjRl
Li5lMjhiYTk2YTNiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaApAQCAtNDAsOSArNDAsNyBAQCBjbGFzcyBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVRhYmxlIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZD4gY3JlYXRlKFJlbmRlck9i
amVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlBUklBR3JpZCgpOwotICAgIAotICAg
IHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKLSAgICAKKwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQoUmVuZGVyT2JqZWN0Kik7CiAgICAgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZEluc3RhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQpAQCAtNTIsOSArNTAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNNdWx0aVNlbGVjdGFi
bGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhy
b3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAg
Ym9vbCBpc0FyaWFUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAK
LSAgICB2b2lkIGFkZFJvd0Rlc2NlbmRhbnQoQVhDb3JlT2JqZWN0KiwgSGFzaFNldDxBY2Nlc3Np
YmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNvdW50KTsKLSAg
ICBib29sIGFkZFRhYmxlQ2VsbENoaWxkKEFYQ29yZU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJp
bGl0eU9iamVjdCo+JiBhcHBlbmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKaW5kZXggYWZlYTFm
MzJhZDY5Li5kZTQ4Njk3M2JkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApAQCAtNjEsMTEzICs2
MSw2IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cGFy
ZW50VGFibGUoKSBjb25zdAogICAgIH0pKTsKIH0KICAgICAKLXN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnJvd0luZGV4UmFuZ2UoKSBjb25z
dAotewotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlIHsgMCwgMSB9
OwotICAgIEFYQ29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0g
ICAgaWYgKCFwYXJlbnQpCi0gICAgICAgIHJldHVybiByb3dSYW5nZTsKLQotICAgIGlmIChpczxB
Y2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpKSB7Ci0gICAgICAgIC8vIFdlIGFscmVhZHkg
Z290IGEgdGFibGUgcm93LCB1c2UgaXRzIEFQSS4KLSAgICAgICAgcm93UmFuZ2UuZmlyc3QgPSBk
b3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpLnJvd0luZGV4KCk7Ci0gICAg
fSBlbHNlIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpICYmIGRvd25jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGUoKSkgewotICAgICAgICAvLyBX
ZSByZWFjaGVkIHRoZSBwYXJlbnQgdGFibGUsIHNvIHdlIG5lZWQgdG8gaW5zcGVjdCBpdHMKLSAg
ICAgICAgLy8gY2hpbGRyZW4gdG8gZGV0ZXJtaW5lIHRoZSByb3cgaW5kZXggZm9yIHRoZSBjZWxs
IGluIGl0LgotICAgICAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IGRvd25jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZT4oKnBhcmVudCkuY29sdW1uQ291bnQoKTsKLSAgICAgICAgaWYgKCFjb2x1bW5D
b3VudCkKLSAgICAgICAgICAgIHJldHVybiByb3dSYW5nZTsKLQotICAgICAgICBjb25zdCBhdXRv
JiBzaWJsaW5ncyA9IHBhcmVudC0+Y2hpbGRyZW4oKTsKLSAgICAgICAgdW5zaWduZWQgY2hpbGRy
ZW5TaXplID0gc2libGluZ3Muc2l6ZSgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBr
IDwgY2hpbGRyZW5TaXplOyArK2spIHsKLSAgICAgICAgICAgIGlmIChzaWJsaW5nc1trXS5nZXQo
KSA9PSB0aGlzKSB7Ci0gICAgICAgICAgICAgICAgcm93UmFuZ2UuZmlyc3QgPSBrIC8gY29sdW1u
Q291bnQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBBUklBIDEuMSwgYXJpYS1yb3dzcGFuIGF0dHJpYnV0ZSBpcyBpbnRl
bmRlZCBmb3IgY2VsbHMgYW5kIGdyaWRjZWxscyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZCBpbiBh
IG5hdGl2ZSB0YWJsZS4KLSAgICAvLyBTbyB3ZSBzaG91bGQgY2hlY2sgZm9yIHRoYXQgYXR0cmli
dXRlIGhlcmUuCi0gICAgcm93UmFuZ2Uuc2Vjb25kID0gYXhSb3dTcGFuV2l0aFJvd0luZGV4KHJv
d1JhbmdlLmZpcnN0KTsKLQotICAgIHJldHVybiByb3dSYW5nZTsKLX0KLQotdW5zaWduZWQgQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6YXhSb3dTcGFuV2l0aFJvd0luZGV4KHVuc2lnbmVkIHJv
d0luZGV4KSBjb25zdAotewotICAgIGludCByb3dTcGFuID0gQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bDo6YXhSb3dTcGFuKCk7Ci0gICAgaWYgKHJvd1NwYW4gPT0gLTEpIHsKLSAgICAgICAgYXV0byBy
YW5nZSA9IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UoKTsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bWF4KHJhbmdlLnNlY29uZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpKTsK
LSAgICB9Ci0KLSAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3Jl
ZCgpOwotICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm4gMTsKLSAgICAKLSAgICAvLyBT
ZXR0aW5nIHRoZSB2YWx1ZSB0byAwIGluZGljYXRlcyB0aGF0IHRoZSBjZWxsIG9yIGdyaWRjZWxs
IGlzIHRvIHNwYW4gYWxsIHRoZSByZW1haW5pbmcgcm93cyBpbiB0aGUgcm93IGdyb3VwLgotICAg
IGlmICghcm93U3BhbikgewotICAgICAgICAvLyByb3dTcGFuIGRlZmF1bHRzIHRvIDEuCi0gICAg
ICAgIHJvd1NwYW4gPSAxOwotICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50
Um93R3JvdXAgPSB0aGlzLT5wYXJlbnRSb3dHcm91cCgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB0
aGUgcm93IGdyb3VwIGlzIHRoZSBwYXJlbnQgdGFibGUsIHdlIHVzZSB0b3RhbCByb3cgY291bnQg
dG8gY2FsY3VsYXRlIHRoZSBzcGFuLgotICAgICAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlU
YWJsZT4oKnBhcmVudFJvd0dyb3VwKSkKLSAgICAgICAgICAgICAgICByb3dTcGFuID0gZG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50Um93R3JvdXApLnJvd0NvdW50KCkgLSByb3dJ
bmRleDsKLSAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgaGF2ZSB0byBnZXQgdGhlIGluZGV4
IGZvciB0aGUgY3VycmVudCByb3cgd2l0aGluIHRoZSBwYXJlbnQgcm93IGdyb3VwLgotICAgICAg
ICAgICAgZWxzZSBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93PigqcGFyZW50KSkgewotICAg
ICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHNpYmxpbmdzID0gcGFyZW50Um93R3JvdXAtPmNoaWxk
cmVuKCk7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgcm93Q291bnQgPSBzaWJsaW5ncy5zaXpl
KCk7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IHJvd0NvdW50OyAr
K2spIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNpYmxpbmdzW2tdLmdldCgpID09IHBhcmVu
dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcm93U3BhbiA9IHJvd0NvdW50IC0gazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0
dXJuIHJvd1NwYW47Ci19Ci0KLXN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IEFjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGw6OmNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdAotewotICAgIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtblJhbmdlIHsgMCwgMSB9OwotICAgIEFYQ29y
ZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFwYXJl
bnQpCi0gICAgICAgIHJldHVybiBjb2x1bW5SYW5nZTsKLQotICAgIGlmICghaXM8QWNjZXNzaWJp
bGl0eVRhYmxlUm93PigqcGFyZW50KQotICAgICAgICAmJiAhKGlzPEFjY2Vzc2liaWxpdHlUYWJs
ZT4oKnBhcmVudCkgJiYgZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPigqcGFyZW50KS5pc0V4
cG9zYWJsZSgpKSkKLSAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlOwotCi0gICAgY29uc3QgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBzaWJsaW5ncyA9IHBhcmVudC0+Y2hpbGRyZW4oKTsK
LSAgICB1bnNpZ25lZCBjaGlsZHJlblNpemUgPSBzaWJsaW5ncy5zaXplKCk7Ci0gICAgdW5zaWdu
ZWQgaW5kZXhXaXRoU3BhbiA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNoaWxk
cmVuU2l6ZTsgKytrKSB7Ci0gICAgICAgIGF1dG8qIGNoaWxkID0gc2libGluZ3Nba10uZ2V0KCk7
Ci0gICAgICAgIGlmIChjaGlsZCA9PSB0aGlzKSB7Ci0gICAgICAgICAgICBjb2x1bW5SYW5nZS5m
aXJzdCA9IGluZGV4V2l0aFNwYW47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBpbmRleFdpdGhTcGFuICs9IGlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KCpjaGlsZCkg
PyBzdGQ6Om1heChkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hpbGQpLmF4Q29s
dW1uU3BhbigpLCAxKSA6IDE7Ci0gICAgfQotICAgIAotICAgIC8vIEFSSUEgMS4xLCBhcmlhLWNv
bHNwYW4gYXR0cmlidXRlIGlzIGludGVuZGVkIGZvciBjZWxscyBhbmQgZ3JpZGNlbGxzIHdoaWNo
IGFyZSBub3QgY29udGFpbmVkIGluIGEgbmF0aXZlIHRhYmxlLgotICAgIC8vIFNvIHdlIHNob3Vs
ZCBjaGVjayBmb3IgdGhhdCBhdHRyaWJ1dGUgaGVyZS4KLSAgICBpbnQgY29sdW1uU3BhbiA9IEFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uU3BhbigpOwotICAgIGlmIChjb2x1bW5TcGFu
ID09IC0xKSB7Ci0gICAgICAgIGF1dG8gcmFuZ2UgPSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpj
b2x1bW5JbmRleFJhbmdlKCk7Ci0gICAgICAgIGNvbHVtblNwYW4gPSByYW5nZS5zZWNvbmQ7Ci0g
ICAgfQotCi0gICAgY29sdW1uUmFuZ2Uuc2Vjb25kID0gc3RkOjptYXgoY29sdW1uU3BhbiwgMSk7
Ci0KLSAgICByZXR1cm4gY29sdW1uUmFuZ2U7Ci19Ci0KIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnBhcmVudFJvd0dyb3VwKCkgY29uc3QKIHsKICAgICBm
b3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQ7
IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgKaW5kZXgg
OGFjYWE5Yjk1NTYxLi4xMGYyNDk2Y2IxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCkBAIC00MSwxNCAr
NDEsOCBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwo
UmVuZGVyT2JqZWN0Kik7CiAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGxJbnN0
YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIC8vIFJldHVybnMg
dGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0aGUgY2VsbC4KLSAgICBzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIGNvbHVtbiBzcGFuIG9mIHRoZSBj
ZWxsLgotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVtbkluZGV4UmFuZ2Uo
KSBjb25zdCBvdmVycmlkZTsKLQogICAgIEFjY2Vzc2liaWxpdHlUYWJsZSogcGFyZW50VGFibGUo
KSBjb25zdCBvdmVycmlkZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRSb3dHcm91
cCgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGF4Um93U3BhbldpdGhSb3dJbmRleCh1bnNpZ25lZCBp
bmRleCkgY29uc3Q7CiAgICAgU3RyaW5nIHJlYWRPbmx5VmFsdWUoKSBjb25zdCBvdmVycmlkZTsK
IH07IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuY3BwCmluZGV4IDQ1NGU4ZWYzMWVkYy4uYWE4ZDk0NmE1ZTE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0LmNwcApAQCAtMjU1LDcgKzI1NSw3IEBAIExheW91dFJlY3QgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OmJvdW5kaW5nQm94UmVjdCgpIGNvbnN0CiAgICAgLy8gdGhlIHdpZHRo
IG9mIHRoYXQgYW5jZXN0b3IsIGFuZCBhYm91dCB0aGUgaGVpZ2h0IG9mIGEgbGluZSBvZiB0ZXh0
LCBzbyBpdCdzIGNsZWFyIHRoaXMgb2JqZWN0IGlzCiAgICAgLy8gYSBkZXNjZW5kYW50IG9mIHRo
YXQgYW5jZXN0b3IuCiAgICAgZm9yIChSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gYW5jZXN0
b3IgPSBwYXJlbnRPYmplY3QoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVu
dE9iamVjdCgpKSB7Ci0gICAgICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdD4o
YW5jZXN0b3IpKQorICAgICAgICBpZiAoIWFuY2VzdG9yLT5yZW5kZXJlcigpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGF1dG8gYW5jZXN0b3JSZWN0ID0gYW5jZXN0b3ItPmVsZW1l
bnRSZWN0KCk7CiAgICAgICAgIGlmIChhbmNlc3RvclJlY3QuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5k
ZXggOWY1YTU4MTZhOWRmLi4yYTZiZmQ3ZDI4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzA4OSw3ICszMDg5
LDcgQEAgQVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgQWNjZXNzaWJp
bGl0eU9iamVjdDo6c2VsZWN0ZWRDZWxscygpCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIGFjdGl2
ZURlc2NlbmRhbnQgPSB0aGlzLT5hY3RpdmVEZXNjZW5kYW50KCkpIHsKLSAgICAgICAgaWYgKGFj
dGl2ZURlc2NlbmRhbnQtPmlzVGFibGVDZWxsKCkgJiYgIXNlbGVjdGVkQ2VsbHMuY29udGFpbnMo
YWN0aXZlRGVzY2VuZGFudCkpCisgICAgICAgIGlmIChhY3RpdmVEZXNjZW5kYW50LT5pc0V4cG9z
ZWRUYWJsZUNlbGwoKSAmJiAhc2VsZWN0ZWRDZWxscy5jb250YWlucyhhY3RpdmVEZXNjZW5kYW50
KSkKICAgICAgICAgICAgIHNlbGVjdGVkQ2VsbHMuYXBwZW5kKGFjdGl2ZURlc2NlbmRhbnQpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAppbmRleCA4YjRhNThhNDcwMDcuLjJhZjZlNTk0ZmNmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTE1
NCw5ICsxNTQsMTEgQEAgcHVibGljOgogICAgIEFYQ29yZU9iamVjdCogaGVhZGVyQ29udGFpbmVy
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIGludCBheENvbHVtbkNvdW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIGludCBheFJvd0NvdW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgVmVjdG9yPFZlY3RvcjxBWElEPj4g
Y2VsbFNsb3RzKCkgeyByZXR1cm4geyB9OyB9CiAKICAgICAvLyBUYWJsZSBjZWxsIHN1cHBvcnQu
CiAgICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc0V4cG9zZWRUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBv
ZiB0aGUgY2VsbC4KICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJh
bmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4geyAwLCAxIH07IH0KICAgICAvLyBSZXR1cm5z
IHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgdGhlIGNlbGwuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dEludGVyZmFjZS5oCmluZGV4IDYxMGY3OTMwODdkMy4uMzQxMGU5YTEzZTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaApAQCAtODg3LDYgKzg4Nyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRhYmxl
IGNlbGwgc3VwcG9ydC4KICAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzRXhwb3NlZFRhYmxlQ2VsbCgpIGNvbnN0ID0gMDsKICAgICAv
LyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCiAg
ICAgdmlydHVhbCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkg
Y29uc3QgPSAwOwogICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4g
c3BhbiBvZiB0aGUgY2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggMzkwYmExZDczNzk3Li42ZWFl
ZDg0Mjc4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVu
ZGVyZXIuZ2V0KCk7IH0KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9yZW5kZXJlci5nZXQoKTsgfQogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZW5kZXJCb3hNb2RlbE9iamVjdCgpIGNvbnN0OwogICAgIE5vZGUqIG5vZGUoKSBjb25zdCBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwCmluZGV4IDNhN2VmYmU1OTBjNy4uYTc1ZThhOWQwMjQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCkBA
IC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eVRhYmxlLmgiCiAKLSNpbmNsdWRlICJBWExvZ2dlci5oIgogI2luY2x1ZGUgIkFYT2JqZWN0
Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgiCkBAIC0zNywyMCArMzYsMTkgQEAKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKICNpbmNsdWRlICJFbGVtZW50QW5jZXN0b3JJdGVy
YXRvcklubGluZXMuaCIKICNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvcklubGluZXMuaCIK
LSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDYXB0aW9uRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRh
YmxlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGFibGVTZWN0aW9u
LmgiCi0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKKyNpbmNs
dWRlIDxxdWV1ZT4KIAotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKK25hbWVzcGFjZSBXZWJD
b3JlIHsKIAogQWNjZXNzaWJpbGl0eVRhYmxlOjpBY2Nlc3NpYmlsaXR5VGFibGUoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKICAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QocmVuZGVyZXIp
CkBAIC01OSw2ICs1NywxMyBAQCBBY2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJs
ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogfQogCitBY2Nlc3NpYmlsaXR5VGFibGU6OkFj
Y2Vzc2liaWxpdHlUYWJsZShOb2RlJiBub2RlKQorICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdChub2RlKQorICAgICwgbV9oZWFkZXJDb250YWluZXIobnVsbHB0cikKKyAgICAsIG1faXNF
eHBvc2FibGUodHJ1ZSkKK3sKK30KKwogQWNjZXNzaWJpbGl0eVRhYmxlOjp+QWNjZXNzaWJpbGl0
eVRhYmxlKCkgPSBkZWZhdWx0OwogCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6aW5pdCgpCkBA
IC03Miw2ICs3NywxMSBAQCBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlPiBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFjY2Vzc2liaWxpdHlUYWJsZShyZW5kZXJlcikpOwogfQogCitSZWY8QWNjZXNzaWJpbGl0
eVRhYmxlPiBBY2Nlc3NpYmlsaXR5VGFibGU6OmNyZWF0ZShOb2RlJiBub2RlKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlUYWJsZShub2RlKSk7Cit9CisKIGJvb2wg
QWNjZXNzaWJpbGl0eVRhYmxlOjpoYXNOb25UYWJsZUFSSUFSb2xlKCkgY29uc3QKIHsKICAgICBz
d2l0Y2ggKGFyaWFSb2xlQXR0cmlidXRlKCkpIHsKQEAgLTg1LDExICs5NSw2IEBAIGJvb2wgQWNj
ZXNzaWJpbGl0eVRhYmxlOjpoYXNOb25UYWJsZUFSSUFSb2xlKCkgY29uc3QKICAgICB9CiB9CiAK
LWJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjppc0V4cG9zYWJsZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1faXNFeHBvc2FibGUgJiYgKG1fcmVuZGVyZXIgfHwgaXM8SFRNTFRhYmxlRWxlbWVudD4o
bm9kZSgpKSk7Ci19Ci0KIEhUTUxUYWJsZUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlUYWJsZTo6dGFi
bGVFbGVtZW50KCkgY29uc3QKIHsKICAgICBpZiAoYXV0byogdGFibGVFbGVtZW50ID0gZHluYW1p
Y0Rvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KG5vZGUoKSkpCkBAIC0xMTEsMTMgKzExNiwxNyBA
QCBIVE1MVGFibGVFbGVtZW50KiBBY2Nlc3NpYmlsaXR5VGFibGU6OnRhYmxlRWxlbWVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIGFuY2VzdG9yc09mVHlwZTxIVE1MVGFibGVFbGVtZW50PigqKGZpcnN0
Q2hpbGQtPm5vZGUoKSkpLmZpcnN0KCk7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpp
c0RhdGFUYWJsZSgpIGNvbnN0CitzdGF0aWMgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlRnJvbShF
bGVtZW50JiBlbGVtZW50KQogewotICAgIGlmICghbV9yZW5kZXJlcikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChhdXRvKiByZW5kZXJTdHlsZSA9IGVsZW1lbnQucmVuZGVyU3R5bGUo
KSkKKyAgICAgICAgcmV0dXJuIHJlbmRlclN0eWxlOworICAgIHJldHVybiBlbGVtZW50LmV4aXN0
aW5nQ29tcHV0ZWRTdHlsZSgpOworfQogCi0gICAgYXV0byogb2JqZWN0Q2FjaGUgPSBheE9iamVj
dENhY2hlKCk7Ci0gICAgaWYgKCFvYmplY3RDYWNoZSkKK2Jvb2wgQWNjZXNzaWJpbGl0eVRhYmxl
Ojppc0RhdGFUYWJsZSgpIGNvbnN0Cit7CisgICAgV2Vha1B0ciBjYWNoZSA9IGF4T2JqZWN0Q2Fj
aGUoKTsKKyAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBE
byBub3QgY29uc2lkZXIgaXQgYSBkYXRhIHRhYmxlIGlmIGl0IGhhcyBhIG5vbi10YWJsZSBBUklB
IHJvbGUuCkBAIC0xMzAsMTQgKzEzOSwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNE
YXRhVGFibGUoKSBjb25zdAogICAgIGlmIChub2RlKCkgJiYgbm9kZSgpLT5oYXNFZGl0YWJsZVN0
eWxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKCFpczxSZW5kZXJUYWJsZT4o
Km1fcmVuZGVyZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICAvLyBUaGlzIGVtcGxv
eXMgYSBoZXVyaXN0aWMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgdGFibGUgc2hvdWxkIGFwcGVhci4K
ICAgICAvLyBPbmx5ICJkYXRhIiB0YWJsZXMgc2hvdWxkIGJlIGV4cG9zZWQgYXMgdGFibGVzLgog
ICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoZXJlIGlzIG5vIGdvb2Qgd2F5IHRvIGRldGVybWluZSB0
aGUgZGlmZmVyZW5jZQogICAgIC8vIGJldHdlZW4gYSAibGF5b3V0IiB0YWJsZSBhbmQgYSAiZGF0
YSIgdGFibGUuCi0gICAgaWYgKEhUTUxUYWJsZUVsZW1lbnQqIHRhYmxlRWxlbWVudCA9IHRoaXMt
PnRhYmxlRWxlbWVudCgpKSB7CisgICAgaWYgKFdlYWtQdHIgdGFibGVFbGVtZW50ID0gdGhpcy0+
dGFibGVFbGVtZW50KCkpIHsKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBjYXB0aW9uIGVsZW1l
bnQsIHN1bW1hcnksIFRIRUFELCBvciBURk9PVCBzZWN0aW9uLCBpdCdzIG1vc3QgY2VydGFpbmx5
IGEgZGF0YSB0YWJsZS4KICAgICAgICAgaWYgKCF0YWJsZUVsZW1lbnQtPnN1bW1hcnkoKS5pc0Vt
cHR5KCkKICAgICAgICAgICAgIHx8ICh0YWJsZUVsZW1lbnQtPnRIZWFkKCkgJiYgdGFibGVFbGVt
ZW50LT50SGVhZCgpLT5yZW5kZXJlcigpKQpAQCAtMTYyLDE3NyArMTY4LDE4NiBAQCBib29sIEFj
Y2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAogICAgIAogICAgIC8vIElmIHRo
ZSBhdXRob3IgaGFzIHVzZWQgQVJJQSB0byBzcGVjaWZ5IGEgdmFsaWQgY29sdW1uIG9yIHJvdyBj
b3VudCwgYXNzdW1lIHRoZXkKICAgICAvLyB3YW50IHVzIHRvIHRyZWF0IHRoZSB0YWJsZSBhcyBh
IGRhdGEgdGFibGUuCi0gICAgaW50IGF4Q29sdW1uQ291bnQgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0
ZShhcmlhX2NvbGNvdW50QXR0cik7Ci0gICAgaWYgKGF4Q29sdW1uQ291bnQgPT0gLTEgfHwgYXhD
b2x1bW5Db3VudCA+IDApCisgICAgYXV0byBhcmlhUm93T3JDb2xDb3VudElzU2V0ID0gW3RoaXNd
IChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9
IGdldEludGVncmFsQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQg
PT0gLTEgfHwgcmVzdWx0ID4gMDsKKyAgICB9OworICAgIGlmIChhcmlhUm93T3JDb2xDb3VudElz
U2V0KGFyaWFfY29sY291bnRBdHRyKSB8fCBhcmlhUm93T3JDb2xDb3VudElzU2V0KGFyaWFfcm93
Y291bnRBdHRyKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpbnQgYXhSb3dDb3VudCA9
IGdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93Y291bnRBdHRyKTsKLSAgICBpZiAoYXhSb3dD
b3VudCA9PSAtMSB8fCBheFJvd0NvdW50ID4gMCkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
Ym9vbCBkaWRUb3BTZWN0aW9uQ2hlY2sgPSBmYWxzZTsKKyAgICBhdXRvIHRvcFNlY3Rpb25JbmRp
Y2F0ZXNMYXlvdXRUYWJsZSA9IFsmXSAoSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQqIHRhYmxlU2Vj
dGlvbkVsZW1lbnQpIHsKKyAgICAgICAgaWYgKGRpZFRvcFNlY3Rpb25DaGVjayB8fCAhdGFibGVT
ZWN0aW9uRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGlkVG9w
U2VjdGlvbkNoZWNrID0gdHJ1ZTsKIAotICAgIFJlbmRlclRhYmxlJiB0YWJsZSA9IGRvd25jYXN0
PFJlbmRlclRhYmxlPigqbV9yZW5kZXJlcik7Ci0gICAgLy8gZ28gdGhyb3VnaCB0aGUgY2VsbCdz
IGFuZCBjaGVjayBmb3IgdGVsbC10YWxlIHNpZ25zIG9mICJkYXRhIiB0YWJsZSBzdGF0dXMKLSAg
ICAvLyBjZWxscyBoYXZlIGJvcmRlcnMsIG9yIHVzZSBhdHRyaWJ1dGVzIGxpa2UgaGVhZGVycywg
YWJiciwgc2NvcGUgb3IgYXhpcwotICAgIHRhYmxlLnJlY2FsY1NlY3Rpb25zSWZOZWVkZWQoKTsK
LSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGZpcnN0Qm9keSA9IHRhYmxlLmZpcnN0Qm9keSgpOwot
ICAgIGlmICghZmlyc3RCb2R5KQorICAgICAgICAvLyBJZiB0aGUgdG9wIHNlY3Rpb24gaGFzIGFu
eSBub24tZ3JvdXAgcm9sZSwgdGhlbiBkb24ndCBtYWtlIHRoaXMgYSBkYXRhIHRhYmxlLiBUaGUg
YXV0aG9yIHByb2JhYmx5IHdhbnRzIHRvIHVzZSB0aGUgcm9sZSBvbiB0aGUgc2VjdGlvbi4KKyAg
ICAgICAgaWYgKGF1dG8qIGF4VGFibGVTZWN0aW9uID0gY2FjaGUtPmdldE9yQ3JlYXRlKHRhYmxl
U2VjdGlvbkVsZW1lbnQpKSB7CisgICAgICAgICAgICBhdXRvIHJvbGUgPSBheFRhYmxlU2VjdGlv
bi0+cm9sZVZhbHVlKCk7CisgICAgICAgICAgICBpZiAoIWF4VGFibGVTZWN0aW9uLT5pc0dyb3Vw
KCkgJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biAmJiByb2xlICE9IEFjY2Vz
c2liaWxpdHlSb2xlOjpJZ25vcmVkKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OwogCi0gICAgLy8gSWYgdGhlIHRi
b2R5IGhhcyBhbnkgbm9uLWdyb3VwIHJvbGUsIHRoZW4gZG9uJ3QgbWFrZSB0aGlzIGEgZGF0YSB0
YWJsZS4gVGhlIGF1dGhvciBwcm9iYWJseSB3YW50cyB0byB1c2UgdGhlIHJvbGUgaW5zaWRlIHRo
ZSA8dGJvZHk+LgotICAgIGlmIChhdXRvKiB0b3BTZWN0aW9uID0gb2JqZWN0Q2FjaGUtPmdldE9y
Q3JlYXRlKHRhYmxlLnRvcFNlY3Rpb24oKSkpIHsKLSAgICAgICAgYXV0byByb2xlID0gdG9wU2Vj
dGlvbi0+cm9sZVZhbHVlKCk7Ci0gICAgICAgIGlmICghdG9wU2VjdGlvbi0+aXNHcm91cCgpICYm
IHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6OlVua25vd24gJiYgcm9sZSAhPSBBY2Nlc3NpYmls
aXR5Um9sZTo6SWdub3JlZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBpbnQgbnVtQ29scyA9IGZpcnN0Qm9keS0+bnVtQ29sdW1ucygpOwotICAgIGludCBudW1Sb3dz
ID0gZmlyc3RCb2R5LT5udW1Sb3dzKCk7Ci0gICAgCi0gICAgLy8gSWYgdGhlcmUgYXJlIGF0IGxl
YXN0IDIwIHJvd3MsIHdlJ2xsIGNhbGwgaXQgYSBkYXRhIHRhYmxlLgotICAgIGlmICgobnVtUm93
cyA+PSAyMCAmJiBudW1Db2xzID49IDIpIHx8IChudW1Sb3dzID49IDIgJiYgbnVtQ29scyA+PSAy
MCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAogICAgIC8vIFN0b3JlIHRoZSBiYWNrZ3Jv
dW5kIGNvbG9yIG9mIHRoZSB0YWJsZSB0byBjaGVjayBhZ2FpbnN0IGNlbGwncyBiYWNrZ3JvdW5k
IGNvbG9ycy4KLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgdGFibGVTdHlsZSA9IHRhYmxlLnN0eWxl
KCk7Ci0gICAgQ29sb3IgdGFibGVCR0NvbG9yID0gdGFibGVTdHlsZS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgIAotICAgIC8vIGNoZWNrIGVu
b3VnaCBvZiB0aGUgY2VsbHMgdG8gZmluZCBpZiB0aGUgdGFibGUgbWF0Y2hlcyBvdXIgY3JpdGVy
aWEKLSAgICAvLyBDcml0ZXJpYTogCi0gICAgLy8gICAxKSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25l
IHZhbGlkIGNlbGwgKGFuZCkKLSAgICAvLyAgIDIpIGF0IGxlYXN0IGhhbGYgb2YgY2VsbHMgaGF2
ZSBib3JkZXJzIChvcikKLSAgICAvLyAgIDMpIGF0IGxlYXN0IGhhbGYgb2YgY2VsbHMgaGF2ZSBk
aWZmZXJlbnQgYmcgY29sb3JzIHRoYW4gdGhlIHRhYmxlLCBhbmQgdGhlcmUgaXMgY2VsbCBzcGFj
aW5nIChvcikKLSAgICAvLyAgIDQpIHRoZSB2YWxpZCBjZWxsIGhhcyBhbiBBUklBIGNlbGwtcmVs
YXRlZCBwcm9wZXJ0eQotICAgIHVuc2lnbmVkIHZhbGlkQ2VsbENvdW50ID0gMDsKKyAgICBjb25z
dCBhdXRvKiB0YWJsZVN0eWxlID0gdGhpcy0+c3R5bGUoKTsKKyAgICBDb2xvciB0YWJsZUJhY2tn
cm91bmRDb2xvciA9IHRhYmxlU3R5bGUgPyB0YWJsZVN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpIDogQ29sb3I6OndoaXRlOworICAgIHVuc2ln
bmVkIHRhYmxlSG9yaXpvbnRhbEJvcmRlclNwYWNpbmcgPSB0YWJsZVN0eWxlID8gdGFibGVTdHls
ZS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSA6IDA7CisgICAgdW5zaWduZWQgdGFibGVWZXJ0
aWNhbEJvcmRlclNwYWNpbmcgPSB0YWJsZVN0eWxlID8gdGFibGVTdHlsZS0+dmVydGljYWxCb3Jk
ZXJTcGFjaW5nKCkgOiAwOworCisgICAgdW5zaWduZWQgY2VsbENvdW50ID0gMDsKICAgICB1bnNp
Z25lZCBib3JkZXJlZENlbGxDb3VudCA9IDA7CiAgICAgdW5zaWduZWQgYmFja2dyb3VuZERpZmZl
cmVuY2VDZWxsQ291bnQgPSAwOwogICAgIHVuc2lnbmVkIGNlbGxzV2l0aFRvcEJvcmRlciA9IDA7
CiAgICAgdW5zaWduZWQgY2VsbHNXaXRoQm90dG9tQm9yZGVyID0gMDsKICAgICB1bnNpZ25lZCBj
ZWxsc1dpdGhMZWZ0Qm9yZGVyID0gMDsKICAgICB1bnNpZ25lZCBjZWxsc1dpdGhSaWdodEJvcmRl
ciA9IDA7Ci0gICAgCisKKyAgICBIYXNoTWFwPE5vZGUqLCB1bnNpZ25lZD4gY2VsbENvdW50Rm9y
RWFjaFJvdzsKICAgICBDb2xvciBhbHRlcm5hdGluZ1Jvd0NvbG9yc1s1XTsKICAgICBpbnQgYWx0
ZXJuYXRpbmdSb3dDb2xvckNvdW50ID0gMDsKLSAgICAKLSAgICBpbnQgaGVhZGVyc0luRmlyc3RD
b2x1bW5Db3VudCA9IDA7Ci0gICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbnVtUm93czsgKyty
b3cpIHsKLSAgICAKLSAgICAgICAgaW50IGhlYWRlcnNJbkZpcnN0Um93Q291bnQgPSAwOwotICAg
ICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBudW1Db2xzOyArK2NvbCkgeyAgICAKLSAgICAg
ICAgICAgIFJlbmRlclRhYmxlQ2VsbCogY2VsbCA9IGZpcnN0Qm9keS0+cHJpbWFyeUNlbGxBdChy
b3csIGNvbCk7Ci0gICAgICAgICAgICBpZiAoIWNlbGwpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgdW5zaWduZWQgcm93Q291bnQgPSAwOworICAgIHVuc2lnbmVkIG1heENvbHVtbkNv
dW50ID0gMDsKIAotICAgICAgICAgICAgRWxlbWVudCogY2VsbEVsZW1lbnQgPSBjZWxsLT5lbGVt
ZW50KCk7Ci0gICAgICAgICAgICBpZiAoIWNlbGxFbGVtZW50KQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoY2VsbC0+d2lkdGgoKSA8IDEg
fHwgY2VsbC0+aGVpZ2h0KCkgPCAxKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICArK3ZhbGlkQ2VsbENvdW50OwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBib29sIGlzVEhDZWxsID0gY2VsbEVsZW1lbnQtPmhhc1RhZ05hbWUodGhUYWcpOwot
ICAgICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IHJvdyBpcyBjb21wcmlzZWQgb2YgYWxsIDx0aD4g
dGFncywgYXNzdW1lIGl0IGlzIGEgZGF0YSB0YWJsZS4KLSAgICAgICAgICAgIGlmICghcm93ICYm
IGlzVEhDZWxsKQotICAgICAgICAgICAgICAgICsraGVhZGVyc0luRmlyc3RSb3dDb3VudDsKLQot
ICAgICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IGNvbHVtbiBpcyBjb21wcmlzZWQgb2YgYWxsIDx0
aD4gdGFncywgYXNzdW1lIGl0IGlzIGEgZGF0YSB0YWJsZS4KLSAgICAgICAgICAgIGlmICghY29s
ICYmIGlzVEhDZWxsKQotICAgICAgICAgICAgICAgICsraGVhZGVyc0luRmlyc3RDb2x1bW5Db3Vu
dDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCB0aGUgZGV2ZWxv
cGVyIGV4cGxpY2l0bHkgYXNzaWduZWQgYSAiZGF0YSIgdGFibGUgYXR0cmlidXRlLgotICAgICAg
ICAgICAgaWYgKGlzPEhUTUxUYWJsZUNlbGxFbGVtZW50PigqY2VsbEVsZW1lbnQpKSB7Ci0gICAg
ICAgICAgICAgICAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQmIHRhYmxlQ2VsbEVsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MVGFibGVDZWxsRWxlbWVudD4oKmNlbGxFbGVtZW50KTsKLSAgICAgICAgICAgICAg
ICBpZiAoIXRhYmxlQ2VsbEVsZW1lbnQuaGVhZGVycygpLmlzRW1wdHkoKSB8fCAhdGFibGVDZWxs
RWxlbWVudC5hYmJyKCkuaXNFbXB0eSgpCi0gICAgICAgICAgICAgICAgICAgIHx8ICF0YWJsZUNl
bGxFbGVtZW50LmF4aXMoKS5pc0VtcHR5KCkgfHwgIXRhYmxlQ2VsbEVsZW1lbnQuc2NvcGUoKS5p
c0VtcHR5KCkpCisgICAgYXV0byBpc0RhdGFUYWJsZUJhc2VkT25Sb3dDb2x1bW5Db3VudCA9IFsm
XSAoKSB7CisgICAgICAgIC8vIElmIHRoZXJlIGFyZSBhdCBsZWFzdCAyMCByb3dzLCB3ZSdsbCBj
YWxsIGl0IGEgZGF0YSB0YWJsZS4KKyAgICAgICAgcmV0dXJuIChyb3dDb3VudCA+PSAyMCAmJiBt
YXhDb2x1bW5Db3VudCA+PSAyKSB8fCAocm93Q291bnQgPj0gMiAmJiBtYXhDb2x1bW5Db3VudCA+
PSAyMCk7CisgICAgfTsKKworICAgIGJvb2wgZmlyc3RDb2x1bW5IYXNBbGxIZWFkZXJDZWxscyA9
IHRydWU7CisgICAgV2Vha1B0cjxIVE1MVGFibGVSb3dFbGVtZW50LCBXZWFrUHRySW1wbFdpdGhF
dmVudFRhcmdldERhdGE+IGZpcnN0Um93OworICAgIFdlYWtQdHI8SFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4gZmlyc3RCb2R5OworICAgIFdl
YWtQdHI8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0
RGF0YT4gZmlyc3RGb290OworCisgICAgLy8gRG8gYSBicmVhZHRoLWZpcnN0IHNlYXJjaCB0byBk
ZXRlcm1pbmUgaWYgdGhpcyBpcyBhIGRhdGEgdGFibGUuCisgICAgc3RkOjpxdWV1ZTxXZWFrUHRy
PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4+IGVsZW1lbnRzVG9WaXNp
dDsKKyAgICBlbGVtZW50c1RvVmlzaXQucHVzaChkeW5hbWljRG93bmNhc3Q8RWxlbWVudD4obm9k
ZSgpKSk7CisgICAgd2hpbGUgKCFlbGVtZW50c1RvVmlzaXQuZW1wdHkoKSkgeworICAgICAgICBX
ZWFrUHRyIGN1cnJlbnRQYXJlbnQgPSBlbGVtZW50c1RvVmlzaXQuZnJvbnQoKTsKKyAgICAgICAg
ZWxlbWVudHNUb1Zpc2l0LnBvcCgpOworICAgICAgICBib29sIHJvd0lzQWxsVGFibGVIZWFkZXJD
ZWxscyA9IHRydWU7CisgICAgICAgIGZvciAoYXV0byogY3VycmVudEVsZW1lbnQgPSBjdXJyZW50
UGFyZW50ID8gY3VycmVudFBhcmVudC0+Zmlyc3RFbGVtZW50Q2hpbGQoKSA6IG51bGxwdHI7IGN1
cnJlbnRFbGVtZW50OyBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50LT5uZXh0RWxlbWVu
dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIHRhYmxlU2VjdGlvbkVsZW1lbnQg
PSBkeW5hbWljRG93bmNhc3Q8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+KGN1cnJlbnRFbGVtZW50
KSkgeworICAgICAgICAgICAgICAgIGlmICh0YWJsZVNlY3Rpb25FbGVtZW50LT5oYXNUYWdOYW1l
KHRoZWFkVGFnKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodG9wU2VjdGlvbkluZGljYXRl
c0xheW91dFRhYmxlKHRhYmxlU2VjdGlvbkVsZW1lbnQpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGFibGVTZWN0aW9u
RWxlbWVudC0+aGFzVGFnTmFtZSh0Ym9keVRhZykpCisgICAgICAgICAgICAgICAgICAgIGZpcnN0
Qm9keSA9IGZpcnN0Qm9keSA/IGZpcnN0Qm9keSA6IHRhYmxlU2VjdGlvbkVsZW1lbnQ7CisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UodGFibGVTZWN0aW9uRWxlbWVudC0+aGFzVGFnTmFtZSh0Zm9vdFRhZyksICJ0YWJsZSBzZWN0
aW9uIGVsZW1lbnRzIHNob3VsZCBhbHdheXMgaGF2ZSBlaXRoZXIgdGhlYWQsIHRib2R5LCBvciB0
Zm9vdCB0YWciKTsKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RGb290ID0gZmlyc3RGb290ID8g
Zmlyc3RGb290IDogdGFibGVTZWN0aW9uRWxlbWVudDsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKGF1dG8qIHRhYmxlUm93ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxU
YWJsZVJvd0VsZW1lbnQ+KGN1cnJlbnRFbGVtZW50KSkgeworICAgICAgICAgICAgICAgIGZpcnN0
Um93ID0gZmlyc3RSb3cgPyBmaXJzdFJvdyA6IHRhYmxlUm93OworCisgICAgICAgICAgICAgICAg
cm93Q291bnQgKz0gMTsKKyAgICAgICAgICAgICAgICBpZiAoaXNEYXRhVGFibGVCYXNlZE9uUm93
Q29sdW1uQ291bnQoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIC8vIElmIHRoZSBhdXRob3IgaGFzIHVzZWQgQVJJQSB0byBz
cGVjaWZ5IGEgdmFsaWQgY29sdW1uIG9yIHJvdyBpbmRleCwgYXNzdW1lIHRoZXkgd2FudCB1cwot
ICAgICAgICAgICAgLy8gdG8gdHJlYXQgdGhlIHRhYmxlIGFzIGEgZGF0YSB0YWJsZS4KLSAgICAg
ICAgICAgIGludCBheENvbHVtbkluZGV4ID0gY2VsbEVsZW1lbnQtPmdldEludGVncmFsQXR0cmli
dXRlKGFyaWFfY29saW5kZXhBdHRyKTsKLSAgICAgICAgICAgIGlmIChheENvbHVtbkluZGV4ID49
IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgaWYgKHRh
YmxlUm93LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2luZGV4QXR0cikgPj0gMSB8fCB0
YWJsZVJvdy0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9jb2xpbmRleEF0dHIpIHx8IG5vZGVI
YXNSb2xlKHRhYmxlUm93LCAicm93Il9zKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICAgICAgICAgIGludCBheFJvd0luZGV4ID0gY2VsbEVsZW1lbnQtPmdldEludGVn
cmFsQXR0cmlidXRlKGFyaWFfcm93aW5kZXhBdHRyKTsKLSAgICAgICAgICAgIGlmIChheFJvd0lu
ZGV4ID49IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
Ly8gRm9yIHRoZSBmaXJzdCA1IHJvd3MsIGNhY2hlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHNvIHdl
IGNhbiBjaGVjayBpZiB0aGlzIHRhYmxlIGhhcyB6ZWJyYS1zdHJpcGVkIHJvd3MuCisgICAgICAg
ICAgICAgICAgaWYgKGFsdGVybmF0aW5nUm93Q29sb3JDb3VudCA8IDUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbnN0IGF1dG8qIHJvd1N0eWxlID0gc3R5bGVGcm9tKCp0YWJsZVJvdykp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0aW5nUm93Q29sb3JzW2FsdGVybmF0
aW5nUm93Q29sb3JDb3VudF0gPSByb3dTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0
aW5nUm93Q29sb3JDb3VudCsrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBjZWxsID0gZHluYW1pY0Rvd25jYXN0
PEhUTUxUYWJsZUNlbGxFbGVtZW50PihjdXJyZW50RWxlbWVudCkpIHsKKyAgICAgICAgICAgICAg
ICBjZWxsQ291bnQrKzsKKworICAgICAgICAgICAgICAgIGJvb2wgaXNUSENlbGwgPSBjZWxsLT5o
YXNUYWdOYW1lKHRoVGFnKTsKKyAgICAgICAgICAgICAgICBpZiAoIWlzVEhDZWxsICYmIHJvd0lz
QWxsVGFibGVIZWFkZXJDZWxscykKKyAgICAgICAgICAgICAgICAgICAgcm93SXNBbGxUYWJsZUhl
YWRlckNlbGxzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHBhcmVudE5vZGUg
PSBjZWxsLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBjZWxsQ291
bnRGb3JSb3dJdGVyYXRvciA9IGNlbGxDb3VudEZvckVhY2hSb3cuZW5zdXJlKHBhcmVudE5vZGUs
IFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGFuIGVu
dHJ5IGZvciB0aGlzIHBhcmVudCB5ZXQsIGl0IG11c3QgYmUgdGhlIGZpcnN0IGNvbHVtbi4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNUSENlbGwgJiYgZmlyc3RDb2x1bW5IYXNBbGxI
ZWFkZXJDZWxscykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdENvbHVtbkhhc0Fs
bEhlYWRlckNlbGxzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgICAgICAgICAgICAgfSkuaXRlcmF0b3I7CisgICAgICAgICAgICAgICAgICAgIGNl
bGxDb3VudEZvclJvd0l0ZXJhdG9yLT52YWx1ZSArPSAxOworICAgICAgICAgICAgICAgICAgICBt
YXhDb2x1bW5Db3VudCA9IHN0ZDo6bWF4KGNlbGxDb3VudEZvclJvd0l0ZXJhdG9yLT52YWx1ZSwg
bWF4Q29sdW1uQ291bnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNEYXRhVGFibGVCYXNl
ZE9uUm93Q29sdW1uQ291bnQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGF1dG8gY2VsbFBhcmVudEVs
ZW1lbnQgPSBjZWxsRWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAg
YXhSb3dJbmRleCA9IGNlbGxQYXJlbnRFbGVtZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlh
X3Jvd2luZGV4QXR0cik7Ci0gICAgICAgICAgICAgICAgaWYgKGF4Um93SW5kZXggPj0gMSkKKyAg
ICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBkZXZlbG9wZXIgZXhwbGljaXRseSBh
c3NpZ25lZCBhICJkYXRhIiB0YWJsZSBhdHRyaWJ1dGUuCisgICAgICAgICAgICAgICAgaWYgKCFj
ZWxsLT5oZWFkZXJzKCkuaXNFbXB0eSgpIHx8ICFjZWxsLT5hYmJyKCkuaXNFbXB0eSgpIHx8ICFj
ZWxsLT5heGlzKCkuaXNFbXB0eSgpIHx8ICFjZWxsLT5zY29wZSgpLmlzRW1wdHkoKSB8fCBub2Rl
SGFzQ2VsbFJvbGUoY2VsbCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBJZiB0aGUgYXV0aG9yIGhhcyB1c2VkIEFSSUEg
dG8gc3BlY2lmeSBhIGNvbHVtbiBvciByb3cgc3Bhbiwgd2UncmUgc3VwcG9zZWQgdG8gaWdub3Jl
Ci0gICAgICAgICAgICAvLyB0aGUgdmFsdWUgZm9yIHRoZSBwdXJwb3NlcyBvZiBleHBvc2luZyB0
aGUgc3Bhbi4gQnV0IGFzc3VtZSB0aGV5IHdhbnQgdXMgdG8gdHJlYXQgdGhlCi0gICAgICAgICAg
ICAvLyB0YWJsZSBhcyBhIGRhdGEgdGFibGUuCi0gICAgICAgICAgICBpbnQgYXhDb2x1bW5TcGFu
ID0gY2VsbEVsZW1lbnQtPmdldEludGVncmFsQXR0cmlidXRlKGFyaWFfY29sc3BhbkF0dHIpOwot
ICAgICAgICAgICAgaWYgKGF4Q29sdW1uU3BhbiA+PSAxKQotICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBhdXRob3IgaGFzIHVzZWQgQVJJQSB0
byBzcGVjaWZ5IGEgdmFsaWQgY29sdW1uIG9yIHJvdyBpbmRleCwgYXNzdW1lIHRoZXkgd2FudCB1
cworICAgICAgICAgICAgICAgIC8vIHRvIHRyZWF0IHRoZSB0YWJsZSBhcyBhIGRhdGEgdGFibGUu
CisgICAgICAgICAgICAgICAgaWYgKGNlbGwtPmdldEludGVncmFsQXR0cmlidXRlKGFyaWFfY29s
aW5kZXhBdHRyKSA+PSAxIHx8IGNlbGwtPmdldEludGVncmFsQXR0cmlidXRlKGFyaWFfcm93aW5k
ZXhBdHRyKSA+PSAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAg
ICAgICAgaW50IGF4Um93U3BhbiA9IGNlbGxFbGVtZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShh
cmlhX3Jvd3NwYW5BdHRyKTsKLSAgICAgICAgICAgIGlmIChheFJvd1NwYW4gPj0gMSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYXV0aG9y
IGhhcyB1c2VkIEFSSUEgdG8gc3BlY2lmeSBhIGNvbHVtbiBvciByb3cgc3Bhbiwgd2UncmUgc3Vw
cG9zZWQgdG8gaWdub3JlCisgICAgICAgICAgICAgICAgLy8gdGhlIHZhbHVlIGZvciB0aGUgcHVy
cG9zZXMgb2YgZXhwb3NpbmcgdGhlIHNwYW4uIEJ1dCBhc3N1bWUgdGhleSB3YW50IHVzIHRvIHRy
ZWF0IHRoZQorICAgICAgICAgICAgICAgIC8vIHRhYmxlIGFzIGEgZGF0YSB0YWJsZS4KKyAgICAg
ICAgICAgICAgICBpZiAoY2VsbC0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9jb2xzcGFuQXR0
cikgPj0gMSB8fCBjZWxsLT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd3NwYW5BdHRyKSA+
PSAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICAgICAgY29u
c3QgUmVuZGVyU3R5bGUmIHJlbmRlclN0eWxlID0gY2VsbC0+c3R5bGUoKTsKKyAgICAgICAgICAg
ICAgICBjb25zdCBhdXRvKiBjZWxsU3R5bGUgPSBzdHlsZUZyb20oKmNlbGwpOworICAgICAgICAg
ICAgICAgIC8vIElmIHRoZSBlbXB0eS1jZWxscyBzdHlsZSBpcyBzZXQsIHdlJ2xsIGNhbGwgaXQg
YSBkYXRhIHRhYmxlLgorICAgICAgICAgICAgICAgIGlmIChjZWxsU3R5bGUgJiYgY2VsbFN0eWxl
LT5lbXB0eUNlbGxzKCkgPT0gRW1wdHlDZWxsOjpIaWRlKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgICAgICAgICAgLy8gSWYgdGhlIGVtcHR5LWNlbGxzIHN0eWxlIGlz
IHNldCwgd2UnbGwgY2FsbCBpdCBhIGRhdGEgdGFibGUuCi0gICAgICAgICAgICBpZiAocmVuZGVy
U3R5bGUuZW1wdHlDZWxscygpID09IEVtcHR5Q2VsbDo6SGlkZSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogY2VsbFJlbmRlcmVyID0gZHlu
YW1pY0Rvd25jYXN0PFJlbmRlckJsb2NrPihjZWxsLT5yZW5kZXJlcigpKSkgeworICAgICAgICAg
ICAgICAgICAgICBib29sIGhhc0JvcmRlclRvcCA9IGNlbGxSZW5kZXJlci0+Ym9yZGVyVG9wKCkg
PiAwOworICAgICAgICAgICAgICAgICAgICBib29sIGhhc0JvcmRlckJvdHRvbSA9IGNlbGxSZW5k
ZXJlci0+Ym9yZGVyQm90dG9tKCkgPiAwOworICAgICAgICAgICAgICAgICAgICBib29sIGhhc0Jv
cmRlckxlZnQgPSBjZWxsUmVuZGVyZXItPmJvcmRlckxlZnQoKSA+IDA7CisgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaGFzQm9yZGVyUmlnaHQgPSBjZWxsUmVuZGVyZXItPmJvcmRlclJpZ2h0KCkg
PiAwOworICAgICAgICAgICAgICAgICAgICAvLyBJZiBhIGNlbGwgaGFzIG1hdGNoaW5nIGJvcmRl
cmVkIHNpZGVzLCBjYWxsIGl0IGEgKGZ1bGx5KSBib3JkZXJlZCBjZWxsLgorICAgICAgICAgICAg
ICAgICAgICBpZiAoKGhhc0JvcmRlclRvcCAmJiBoYXNCb3JkZXJCb3R0b20pIHx8IChoYXNCb3Jk
ZXJMZWZ0ICYmIGhhc0JvcmRlclJpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRl
cmVkQ2VsbENvdW50Kys7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gQWxzbyBrZWVwIHRyYWNr
IG9mIGVhY2ggaW5kaXZpZHVhbCBib3JkZXIsIHNvIHdlIGNhbiBjYXRjaCB0YWJsZXMgd2hlcmUg
bW9zdAorICAgICAgICAgICAgICAgICAgICAvLyBjZWxscyBoYXZlIGEgYm90dG9tIGJvcmRlciwg
Zm9yIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJUb3ApCisgICAg
ICAgICAgICAgICAgICAgICAgICBjZWxsc1dpdGhUb3BCb3JkZXIrKzsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGhhc0JvcmRlckJvdHRvbSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxz
V2l0aEJvdHRvbUJvcmRlcisrOworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyTGVm
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxzV2l0aExlZnRCb3JkZXIrKzsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJpZ2h0KQorICAgICAgICAgICAgICAgICAgICAg
ICAgY2VsbHNXaXRoUmlnaHRCb3JkZXIrKzsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIC8vIElmIGEgY2VsbCBoYXMgbWF0Y2hpbmcgYm9yZGVyZWQgc2lkZXMsIGNhbGwgaXQgYSAo
ZnVsbHkpIGJvcmRlcmVkIGNlbGwuCi0gICAgICAgICAgICBpZiAoKGNlbGwtPmJvcmRlclRvcCgp
ID4gMCAmJiBjZWxsLT5ib3JkZXJCb3R0b20oKSA+IDApCi0gICAgICAgICAgICAgICAgfHwgKGNl
bGwtPmJvcmRlckxlZnQoKSA+IDAgJiYgY2VsbC0+Ym9yZGVyUmlnaHQoKSA+IDApKQotICAgICAg
ICAgICAgICAgICsrYm9yZGVyZWRDZWxsQ291bnQ7Ci0KLSAgICAgICAgICAgIC8vIEFsc28ga2Vl
cCB0cmFjayBvZiBlYWNoIGluZGl2aWR1YWwgYm9yZGVyLCBzbyB3ZSBjYW4gY2F0Y2ggdGFibGVz
IHdoZXJlIG1vc3QKLSAgICAgICAgICAgIC8vIGNlbGxzIGhhdmUgYSBib3R0b20gYm9yZGVyLCBm
b3IgZXhhbXBsZS4KLSAgICAgICAgICAgIGlmIChjZWxsLT5ib3JkZXJUb3AoKSA+IDApCi0gICAg
ICAgICAgICAgICAgKytjZWxsc1dpdGhUb3BCb3JkZXI7Ci0gICAgICAgICAgICBpZiAoY2VsbC0+
Ym9yZGVyQm90dG9tKCkgPiAwKQotICAgICAgICAgICAgICAgICsrY2VsbHNXaXRoQm90dG9tQm9y
ZGVyOwotICAgICAgICAgICAgaWYgKGNlbGwtPmJvcmRlckxlZnQoKSA+IDApCi0gICAgICAgICAg
ICAgICAgKytjZWxsc1dpdGhMZWZ0Qm9yZGVyOwotICAgICAgICAgICAgaWYgKGNlbGwtPmJvcmRl
clJpZ2h0KCkgPiAwKQotICAgICAgICAgICAgICAgICsrY2VsbHNXaXRoUmlnaHRCb3JkZXI7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIElmIHRoZSBjZWxsIGhhcyBhIGRpZmZlcmVudCBj
b2xvciBmcm9tIHRoZSB0YWJsZSBhbmQgdGhlcmUgaXMgY2VsbCBzcGFjaW5nLAotICAgICAgICAg
ICAgLy8gdGhlbiBpdCBpcyBwcm9iYWJseSBhIGRhdGEgdGFibGUgY2VsbCAoc3BhY2luZyBhbmQg
Y29sb3JzIHRha2UgdGhlIHBsYWNlIG9mIGJvcmRlcnMpLgotICAgICAgICAgICAgQ29sb3IgY2Vs
bENvbG9yID0gcmVuZGVyU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKLSAgICAgICAgICAgIGlmICh0YWJsZS5oQm9yZGVyU3BhY2luZygpID4g
MCAmJiB0YWJsZS52Qm9yZGVyU3BhY2luZygpID4gMAotICAgICAgICAgICAgICAgICYmIHRhYmxl
QkdDb2xvciAhPSBjZWxsQ29sb3IgJiYgY2VsbENvbG9yLmFscGhhQnl0ZSgpICE9IDEpIC8vIEZJ
WE1FIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NTM3KTogVGhp
cyBjb21wYXJpc29uIHRvIDEgaXMgbGlrZWx5IGluY29ycmVjdC4gSXQgbGlrZWx5IHNob3VsZCBi
ZSBjaGVja2luZyAhY2VsbENvbG9yLmlzT3BhcXVlKCkuCi0gICAgICAgICAgICAgICAgKytiYWNr
Z3JvdW5kRGlmZmVyZW5jZUNlbGxDb3VudDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8g
SWYgd2UndmUgZm91bmQgMTAgImdvb2QiIGNlbGxzLCB3ZSBkb24ndCBuZWVkIHRvIGtlZXAgc2Vh
cmNoaW5nLgotICAgICAgICAgICAgaWYgKGJvcmRlcmVkQ2VsbENvdW50ID49IDEwIHx8IGJhY2tn
cm91bmREaWZmZXJlbmNlQ2VsbENvdW50ID49IDEwKQotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBGb3IgdGhlIGZpcnN0IDUgcm93cywg
Y2FjaGUgdGhlIGJhY2tncm91bmQgY29sb3Igc28gd2UgY2FuIGNoZWNrIGlmIHRoaXMgdGFibGUg
aGFzIHplYnJhLXN0cmlwZWQgcm93cy4KLSAgICAgICAgICAgIGlmIChyb3cgPCA1ICYmIHJvdyA9
PSBhbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnQpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJFbGVt
ZW50KiByZW5kZXJSb3cgPSBjZWxsLT5wYXJlbnQoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlz
PFJlbmRlclRhYmxlUm93PihyZW5kZXJSb3cpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgcm93UmVuZGVyU3R5bGUgPSBy
ZW5kZXJSb3ctPnN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgQ29sb3Igcm93Q29sb3IgPSByb3dS
ZW5kZXJTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOwotICAgICAgICAgICAgICAgIGFsdGVybmF0aW5nUm93Q29sb3JzW2FsdGVybmF0aW5nUm93
Q29sb3JDb3VudF0gPSByb3dDb2xvcjsKLSAgICAgICAgICAgICAgICArK2FsdGVybmF0aW5nUm93
Q29sb3JDb3VudDsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY2VsbCBoYXMgYSBkaWZmZXJl
bnQgY29sb3IgZnJvbSB0aGUgdGFibGUgYW5kIHRoZXJlIGlzIGNlbGwgc3BhY2luZywKKyAgICAg
ICAgICAgICAgICAvLyB0aGVuIGl0IGlzIHByb2JhYmx5IGEgZGF0YSB0YWJsZSBjZWxsIChzcGFj
aW5nIGFuZCBjb2xvcnMgdGFrZSB0aGUgcGxhY2Ugb2YgYm9yZGVycykuCisgICAgICAgICAgICAg
ICAgQ29sb3IgY2VsbENvbG9yID0gY2VsbFN0eWxlID8gY2VsbFN0eWxlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpIDogQ29sb3I6OndoaXRlOworICAg
ICAgICAgICAgICAgIGlmICh0YWJsZUhvcml6b250YWxCb3JkZXJTcGFjaW5nID4gMCAmJiB0YWJs
ZVZlcnRpY2FsQm9yZGVyU3BhY2luZyA+IDAgJiYgdGFibGVCYWNrZ3JvdW5kQ29sb3IgIT0gY2Vs
bENvbG9yICYmICFjZWxsQ29sb3IuaXNPcGFxdWUoKSkKKyAgICAgICAgICAgICAgICAgICAgYmFj
a2dyb3VuZERpZmZlcmVuY2VDZWxsQ291bnQrKzsKKworICAgICAgICAgICAgICAgIC8vIElmIHdl
J3ZlIGZvdW5kIDEwICJnb29kIiBjZWxscywgd2UgZG9uJ3QgbmVlZCB0byBrZWVwIHNlYXJjaGlu
Zy4KKyAgICAgICAgICAgICAgICBpZiAoYm9yZGVyZWRDZWxsQ291bnQgPj0gMTAgfHwgYmFja2dy
b3VuZERpZmZlcmVuY2VDZWxsQ291bnQgPj0gMTApCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChpczxIVE1MVGFibGVFbGVtZW50PihjdXJy
ZW50RWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICAvLyBEbyBub3QgZGVzY2VuZCBpbnRvIG5l
c3RlZCB0YWJsZXMuIChJbXBsZW1lbnRlZCBieSBjb250aW51aW5nIGJlZm9yZSBwdXNoaW5nIHRo
ZSBjdXJyZW50IGVsZW1lbnQgaW50byB0aGUgQkZTIGVsZW1lbnRzVG9WaXNpdCBxdWV1ZSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsZW1l
bnRzVG9WaXNpdC5wdXNoKGN1cnJlbnRFbGVtZW50KTsKICAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgaWYgKCFyb3cgJiYgaGVhZGVyc0luRmlyc3RSb3dDb3VudCA9PSBudW1Db2xzICYmIG51
bUNvbHMgPiAxKQorCisgICAgICAgIC8vIElmIHRoZSBmaXJzdCByb3cgaXMgY29tcHJpc2VkIG9m
IGFsbCA8dGg+IHRhZ3MsIGFzc3VtZSBpdCBpcyBhIGRhdGEgdGFibGUuCisgICAgICAgIGlmIChm
aXJzdFJvdyAmJiBjdXJyZW50UGFyZW50ID09IGZpcnN0Um93ICYmIHJvd0lzQWxsVGFibGVIZWFk
ZXJDZWxscyAmJiBjZWxsQ291bnRGb3JFYWNoUm93LmdldChjdXJyZW50UGFyZW50LmdldCgpKSA+
PSAxKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKGhlYWRlcnNJ
bkZpcnN0Q29sdW1uQ291bnQgPT0gbnVtUm93cyAmJiBudW1Sb3dzID4gMSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgCi0gICAgLy8gaWYgdGhlcmUgaXMgbGVzcyB0aGFuIHR3byB2YWxpZCBj
ZWxscywgaXQncyBub3QgYSBkYXRhIHRhYmxlCi0gICAgaWYgKHZhbGlkQ2VsbENvdW50IDw9IDEp
CisgICAgLy8gSWYgdGhlcmUgaXMgbGVzcyB0aGFuIHR3byB2YWxpZCBjZWxscywgaXQncyBub3Qg
YSBkYXRhIHRhYmxlLgorICAgIGlmIChjZWxsQ291bnQgPD0gMSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAotICAgIC8vIGhhbGYgb2YgdGhlIGNlbGxzIGhhZCBib3JkZXJzLCBpdCdzIGEg
ZGF0YSB0YWJsZQotICAgIHVuc2lnbmVkIG5lZWRlZENlbGxDb3VudCA9IHZhbGlkQ2VsbENvdW50
IC8gMjsKKworICAgIGlmICh0b3BTZWN0aW9uSW5kaWNhdGVzTGF5b3V0VGFibGUoZmlyc3RCb2R5
LmdldCgpKSB8fCB0b3BTZWN0aW9uSW5kaWNhdGVzTGF5b3V0VGFibGUoZmlyc3RGb290LmdldCgp
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZpcnN0Q29sdW1uSGFzQWxsSGVh
ZGVyQ2VsbHMgJiYgcm93Q291bnQgPj0gMikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAv
LyBBdCBsZWFzdCBoYWxmIG9mIHRoZSBjZWxscyBoYWQgYm9yZGVycywgaXQncyBhIGRhdGEgdGFi
bGUuCisgICAgdW5zaWduZWQgbmVlZGVkQ2VsbENvdW50ID0gY2VsbENvdW50IC8gMjsKICAgICBp
ZiAoYm9yZGVyZWRDZWxsQ291bnQgPj0gbmVlZGVkQ2VsbENvdW50CiAgICAgICAgIHx8IGNlbGxz
V2l0aFRvcEJvcmRlciA+PSBuZWVkZWRDZWxsQ291bnQKICAgICAgICAgfHwgY2VsbHNXaXRoQm90
dG9tQm9yZGVyID49IG5lZWRlZENlbGxDb3VudApAQCAtMzQwLDM2ICszNTUsMzMgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAgICAgICAgfHwgY2VsbHNX
aXRoUmlnaHRCb3JkZXIgPj0gbmVlZGVkQ2VsbENvdW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAKLSAgICAvLyBoYWxmIGhhZCBkaWZmZXJlbnQgYmFja2dyb3VuZCBjb2xvcnMsIGl0J3Mg
YSBkYXRhIHRhYmxlCisgICAgLy8gQXQgbGVhc3QgaGFsZiBvZiB0aGUgY2VsbHMgaGFkIGRpZmZl
cmVudCBiYWNrZ3JvdW5kIGNvbG9ycywgaXQncyBhIGRhdGEgdGFibGUuCiAgICAgaWYgKGJhY2tn
cm91bmREaWZmZXJlbmNlQ2VsbENvdW50ID49IG5lZWRlZENlbGxDb3VudCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKKyAgICBpZiAoaXNEYXRhVGFibGVCYXNlZE9uUm93Q29sdW1uQ291bnQoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbiBhbHRl
cm5hdGluZyByb3cgYmFja2dyb3VuZCBjb2xvciBpbmRpY2F0aW5nIGEgemVicmEgc3RyaXBlZCBz
dHlsZSBwYXR0ZXJuLgogICAgIGlmIChhbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnQgPiAyKSB7CiAg
ICAgICAgIENvbG9yIGZpcnN0Q29sb3IgPSBhbHRlcm5hdGluZ1Jvd0NvbG9yc1swXTsKICAgICAg
ICAgZm9yIChpbnQgayA9IDE7IGsgPCBhbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnQ7IGsrKykgewot
ICAgICAgICAgICAgLy8gSWYgYW4gb2RkIHJvdyB3YXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIGZp
cnN0IHJvdywgaXRzIG5vdCBhbHRlcm5hdGluZy4KKyAgICAgICAgICAgIC8vIElmIGFuIG9kZCBy
b3cgd2FzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBmaXJzdCByb3csIGl0J3Mgbm90IGFsdGVybmF0
aW5nLgogICAgICAgICAgICAgaWYgKGsgJSAyID09IDEgJiYgYWx0ZXJuYXRpbmdSb3dDb2xvcnNb
a10gPT0gZmlyc3RDb2xvcikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICAvLyBJZiBhbiBldmVuIHJvdyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IHJvdywg
aXRzIG5vdCBhbHRlcm5hdGluZy4KKyAgICAgICAgICAgIC8vIElmIGFuIGV2ZW4gcm93IGlzIG5v
dCB0aGUgc2FtZSBhcyB0aGUgZmlyc3Qgcm93LCBpdCdzIG5vdCBhbHRlcm5hdGluZy4KICAgICAg
ICAgICAgIGlmICghKGsgJSAyKSAmJiBhbHRlcm5hdGluZ1Jvd0NvbG9yc1trXSAhPSBmaXJzdENv
bG9yKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisvLyBUaGUg
Zm9sbG93aW5nIGlzIGEgaGV1cmlzdGljIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgPHRhYmxlPiBz
aG91bGQgYmUgZXhwb3NlZCBhcyBhbiBBWFRhYmxlLgorLy8gVGhlIGdvYWwgaXMgdG8gb25seSBz
aG93ICJkYXRhIiB0YWJsZXMuCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y29tcHV0ZUlzVGFi
bGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0CiB7Ci0gICAgLy8gVGhlIGZv
bGxvd2luZyBpcyBhIGhldXJpc3RpYyB1c2VkIHRvIGRldGVybWluZSBpZiBhCi0gICAgLy8gPHRh
YmxlPiBzaG91bGQgYmUgZXhwb3NlZCBhcyBhbiBBWFRhYmxlLiBUaGUgZ29hbAotICAgIC8vIGlz
IHRvIG9ubHkgc2hvdyAiZGF0YSIgdGFibGVzLgotCi0gICAgaWYgKCFtX3JlbmRlcmVyICYmICFp
czxIVE1MVGFibGVFbGVtZW50Pihub2RlKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAg
ICAvLyBJZiBpdCBoYXMgYSBub24tdGFibGUgQVJJQSByb2xlLCBpdCBzaG91bGRuJ3QgYmUgZXhw
b3NlZCBhcyBhIHRhYmxlLgogICAgIGlmIChoYXNOb25UYWJsZUFSSUFSb2xlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTM3Nyw5ICszODksMTIgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25zdAog
ICAgIHJldHVybiBpc0RhdGFUYWJsZSgpOwogfQogCi0KIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxl
OjpyZWNvbXB1dGVJc0V4cG9zYWJsZSgpCiB7CisgICAgLy8gTWFrZSBzdXJlIGNoaWxkcmVuIGFy
ZSB1cC10by1kYXRlLCBiZWNhdXNlIGlmIHdlIGRvIGVuZCB1cCBjaGFuZ2luZyBpcy1leHBvc2Vk
IHN0YXRlLCB3ZSB3YW50IHRvIG1ha2UKKyAgICAvLyBzdXJlIHVwZGF0ZUNoaWxkcmVuUm9sZXMg
aXRlcmF0ZXMgb3ZlciB0aG9zZSBjaGlsZHJlbiBiZWZvcmUgdGhleSBjaGFuZ2UuCisgICAgdXBk
YXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOworCiAgICAgYm9vbCBwcmV2aW91c2x5RXhwb3NhYmxl
ID0gbV9pc0V4cG9zYWJsZTsKICAgICBtX2lzRXhwb3NhYmxlID0gY29tcHV0ZUlzVGFibGVFeHBv
c2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpOwogICAgIGlmIChwcmV2aW91c2x5RXhwb3NhYmxl
ICE9IG1faXNFeHBvc2FibGUpIHsKQEAgLTM5NCw2ICs0MDksMjQgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5VGFibGU6OnJlY29tcHV0ZUlzRXhwb3NhYmxlKCkKICAgICB9CiB9CiAKK1ZlY3RvcjxWZWN0
b3I8QVhJRD4+IEFjY2Vzc2liaWxpdHlUYWJsZTo6Y2VsbFNsb3RzKCkKK3sKKyAgICB1cGRhdGVD
aGlsZHJlbklmTmVjZXNzYXJ5KCk7CisgICAgcmV0dXJuIG1fY2VsbFNsb3RzOworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlUYWJsZTo6c2V0Q2VsbFNsb3RzRGlydHkoKQoreworICAgIC8vIEJlY2F1
c2UgdGhlIGNlbGwtc2xvdHMgZ3JpZCBpcyAobmVjZXNzYXJpbHkpIGNvbXB1dGVkIGluIGNvbmp1
bmN0aW9uIHdpdGggY2hpbGRyZW4sIG1hcmsKKyAgICAvLyB0aGUgY2hpbGRyZW4gYXMgZGlydHkg
YnkgY2xlYXJpbmcgdGhlbS4KKyAgICAvLworICAgIC8vIEl0J3MgbmVjZXNzYXJ5IHRvIGNvbXB1
dGUgdGhlIGNlbGwtc2xvdHMgZ3JpZCB0b2dldGhlciB3aXRoIGNoaWxkcmVuIGJlY2F1c2UgdGhl
eSBhcmUgYm90aAorICAgIC8vIGluZmx1ZW5jZWQgYnkgdGhlIHNhbWUgZmFjdG9ycy4gRm9yIGV4
YW1wbGUsIGlmIGBzZXRDZWxsU2xvdHNEaXJ0eWAgaXMgY2FsbGVkIGJlY2F1c2UKKyAgICAvLyBh
IGNoaWxkIGluY3JlYXNlZCBpbiBjb2x1bW4gc3BhbiwgdGhhdCBtYXkgYWxzbyByZXN1bHQgaW4g
bW9yZSBjb2x1bW4gY2hpbGRyZW4gYmVpbmcKKyAgICAvLyBhZGRlZCBpZiB0aGF0IGNvbHVtbiBz
cGFuIGNoYW5nZSBpbmNyZWFzZWQgdGhlICJ3aWR0aCIgb2YgdGhlIHRhYmxlLgorICAgIGNsZWFy
Q2hpbGRyZW4oKTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OnVwZGF0ZUNoaWxkcmVu
Um9sZXMoKQogewogICAgIGZvciAoY29uc3QgYXV0byYgcm93IDogbV9yb3dzKSB7CkBAIC00MDgs
NiArNDQxLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNsZWFyQ2hpbGRyZW4oKQogICAg
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNsZWFyQ2hpbGRyZW4oKTsKICAgICBtX3Jvd3Mu
Y2xlYXIoKTsKICAgICBtX2NvbHVtbnMuY2xlYXIoKTsKKyAgICBtX2NlbGxTbG90cy5jbGVhcigp
OwogCiAgICAgaWYgKG1faGVhZGVyQ29udGFpbmVyKSB7CiAgICAgICAgIG1faGVhZGVyQ29udGFp
bmVyLT5kZXRhY2hGcm9tUGFyZW50KCk7CkBAIC00MjEsNDIgKzQ1NSwyMTggQEAgdm9pZCBBY2Nl
c3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKICAgICAgICAgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWRkQ2hpbGRyZW4oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAg
ICBBU1NFUlQoIW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7IAotICAgIAorCisgICAgQVNTRVJUKCFt
X2NoaWxkcmVuSW5pdGlhbGl6ZWQpOwogICAgIG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9IHRydWU7
Ci0gICAgaWYgKCFpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIoKSkpCisgICAgV2Vha1B0ciBjYWNo
ZSA9IGF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgUmVuZGVyVGFibGUmIHRhYmxlID0gZG93bmNhc3Q8UmVuZGVyVGFibGU+KCptX3Jl
bmRlcmVyKTsKLSAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgYXZhaWxhYmxlIHNlY3Rpb25zIHRv
IHB1bGwgb3V0IHRoZSByb3dzIGFuZCBhZGQgdGhlbSBhcyBjaGlsZHJlbi4KLSAgICB0YWJsZS5y
ZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7Ci0gICAgCi0gICAgaWYgKEhUTUxUYWJsZUVsZW1lbnQq
IHRhYmxlRWxlbWVudCA9IHRoaXMtPnRhYmxlRWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChhdXRv
IGNhcHRpb24gPSB0YWJsZUVsZW1lbnQtPmNhcHRpb24oKSkgewotICAgICAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogYXhDYXB0aW9uID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShj
YXB0aW9uLmdldCgpKTsKLSAgICAgICAgICAgIGFkZENoaWxkKGF4Q2FwdGlvbiwgRGVzY2VuZElm
SWdub3JlZDo6Tm8pOworCisgICAgLy8gVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSAiZm9y
bWluZyBhIHRhYmxlIiBhbGdvcml0aG0gZm9yIGRldGVybWluaW5nCisgICAgLy8gdGhlIGNvcnJl
Y3QgY2VsbCBwb3NpdGlvbnMgYW5kIHNwYW5zIChhbmQgc3RvcmluZyB0aG9zZSBpbiBtX2NlbGxT
bG90cyBmb3IgbGF0ZXIgdXNlKS4KKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS90YWJsZXMuaHRtbCNmb3JtaW5nLWEtdGFibGUKKworICAgIC8vIFN0ZXAgMS4K
KyAgICB1bnNpZ25lZCB4V2lkdGggPSAwOworICAgIC8vIFN0ZXAgMi4KKyAgICB1bnNpZ25lZCB5
SGVpZ2h0ID0gMDsKKyAgICAvLyBTdGVwIDM6IExldCBwZW5kaW5nIHRmb290IGVsZW1lbnRzIGJl
IGEgbGlzdCBvZiB0Zm9vdCBlbGVtZW50cywgaW5pdGlhbGx5IGVtcHR5LgorICAgIFZlY3RvcjxS
ZWY8RWxlbWVudD4+IHBlbmRpbmdUZm9vdEVsZW1lbnRzOworICAgIC8vIFN0ZXAgMTAuCisgICAg
dW5zaWduZWQgeUN1cnJlbnQgPSAwOworICAgIFJlZlB0cjxIVE1MVGFibGVDYXB0aW9uRWxlbWVu
dD4gY2FwdGlvbkVsZW1lbnQ7CisKKyAgICBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiBh
cHBlbmRlZFJvd3M7CisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2UvdGFibGVzLmh0bWwjYWxnb3JpdGhtLWZvci1wcm9jZXNzaW5nLXJvd3MKKyAgICBhdXRvIHBy
b2Nlc3NSb3cgPSBbJiwgdGhpc10gKEFjY2Vzc2liaWxpdHlUYWJsZVJvdyogcm93KSB7CisgICAg
ICAgIGlmICghcm93IHx8IGFwcGVuZGVkUm93cy5jb250YWlucyhyb3cpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBhcHBlbmRlZFJvd3MuYWRkKHJvdyk7CisgICAgICAgIC8vIFN0ZXAg
MTogSWYgeWhlaWdodCBpcyBlcXVhbCB0byB5Y3VycmVudCwgdGhlbiBpbmNyZWFzZSB5aGVpZ2h0
IGJ5IDEuICh5Y3VycmVudCBtdXN0IG5ldmVyIGJlIGdyZWF0ZXIgdGhhbiB5aGVpZ2h0LikKKyAg
ICAgICAgaWYgKHlIZWlnaHQgPD0geUN1cnJlbnQpCisgICAgICAgICAgICB5SGVpZ2h0ID0geUN1
cnJlbnQgKyAxOworCisgICAgICAgIC8vIFN0ZXAgMi4KKyAgICAgICAgdW5zaWduZWQgeEN1cnJl
bnQgPSAwOworICAgICAgICAvLyBTdGVwIDM6IFJ1biB0aGUgYWxnb3JpdGhtIGZvciBncm93aW5n
IGRvd253YXJkLWdyb3dpbmcgY2VsbHMgKG5vdCBpbXBsZW1lbnRlZCkuCisKKyAgICAgICAgLy8g
U3RlcCA0OiBJZiB0aGUgdHIgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQgaGFzIG5vIHRkIG9yIHRo
IGVsZW1lbnQgY2hpbGRyZW4sIHRoZW4gaW5jcmVhc2UgeWN1cnJlbnQgYnkgMSwgYWJvcnQgdGhp
cyBzZXQgb2Ygc3RlcHMsIGFuZCByZXR1cm4gdG8gdGhlIGFsZ29yaXRobSBhYm92ZS4KKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHJvdy0+Y2hpbGRyZW4oKSkgeworICAgICAgICAg
ICAgYXV0byogY3VycmVudENlbGwgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbD4oY2hpbGQuZ2V0KCkpOworICAgICAgICAgICAgaWYgKCFjdXJyZW50Q2VsbCkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gU3RlcCA2OiBXaGlsZSB0aGUg
c2xvdCB3aXRoIGNvb3JkaW5hdGUgKHhjdXJyZW50LCB5Y3VycmVudCkgYWxyZWFkeSBoYXMgYSBj
ZWxsIGFzc2lnbmVkIHRvIGl0LCBpbmNyZWFzZSB4Y3VycmVudCBieSAxLgorICAgICAgICAgICAg
ZW5zdXJlUm93QW5kQ29sdW1uKHlDdXJyZW50LCB4Q3VycmVudCk7CisgICAgICAgICAgICB3aGls
ZSAobV9jZWxsU2xvdHNbeUN1cnJlbnRdW3hDdXJyZW50XS5pc1ZhbGlkKCkpIHsKKyAgICAgICAg
ICAgICAgICB4Q3VycmVudCArPSAxOworICAgICAgICAgICAgICAgIGVuc3VyZVJvd0FuZENvbHVt
bih5Q3VycmVudCwgeEN1cnJlbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gU3Rl
cCA3OiBJZiB4Y3VycmVudCBpcyBlcXVhbCB0byB4d2lkdGgsIGluY3JlYXNlIHh3aWR0aCBieSAx
LiAoeGN1cnJlbnQgaXMgbmV2ZXIgZ3JlYXRlciB0aGFuIHh3aWR0aC4pCisgICAgICAgICAgICBp
ZiAoeEN1cnJlbnQgPj0geFdpZHRoKQorICAgICAgICAgICAgICAgIHhXaWR0aCA9IHhDdXJyZW50
ICsgMTsKKyAgICAgICAgICAgIC8vIFN0ZXAgODogSWYgdGhlIGN1cnJlbnQgY2VsbCBoYXMgYSBj
b2xzcGFuIGF0dHJpYnV0ZSwgdGhlbiBwYXJzZSB0aGF0IGF0dHJpYnV0ZSdzIHZhbHVlLCBhbmQg
bGV0IGNvbHNwYW4gYmUgdGhlIHJlc3VsdC4KKyAgICAgICAgICAgIHVuc2lnbmVkIGNvbFNwYW4g
PSBjdXJyZW50Q2VsbC0+Y29sU3BhbigpOworICAgICAgICAgICAgLy8gU3RlcCA5OiBJZiB0aGUg
Y3VycmVudCBjZWxsIGhhcyBhIHJvd3NwYW4gYXR0cmlidXRlLCB0aGVuIHBhcnNlIHRoYXQgYXR0
cmlidXRlJ3MgdmFsdWUsIGFuZCBsZXQgcm93c3BhbiBiZSB0aGUgcmVzdWx0LgorICAgICAgICAg
ICAgdW5zaWduZWQgcm93U3BhbiA9IGN1cnJlbnRDZWxsLT5yb3dTcGFuKCk7CisKKyAgICAgICAg
ICAgIC8vIFN0ZXAgMTA6IElmIHJvd3NwYW4gaXMgemVybyBhbmQgdGhlIHRhYmxlIGVsZW1lbnQn
cyBub2RlIGRvY3VtZW50IGlzIG5vdCBzZXQgdG8gcXVpcmtzIG1vZGUsIHRoZW4gbGV0CisgICAg
ICAgICAgICAvLyBjZWxsIGdyb3dzIGRvd253YXJkIGJlIHRydWUsIGFuZCBzZXQgcm93c3BhbiB0
byAxLiBPdGhlcndpc2UsIGxldCBjZWxsIGdyb3dzIGRvd253YXJkIGJlIGZhbHNlLgorICAgICAg
ICAgICAgLy8gTk9URTogV2UgaW50ZW50aW9uYWxseSBkb24ndCBpbXBsZW1lbnQgdGhpcyBzdGVw
IGJlY2F1c2UgdGhlIHJlbmRlcmluZyBjb2RlIGRvZXNuJ3QsIHNvIGltcGxlbWVudGluZyBpdAor
ICAgICAgICAgICAgLy8gd291bGQgY2F1c2UgQVggdG8gbm90IG1hdGNoIHRoZSB2aXN1YWwgc3Rh
dGUgb2YgdGhlIHBhZ2UuCisKKyAgICAgICAgICAgIC8vIFN0ZXAgMTE6IElmIHh3aWR0aCA8IHhj
dXJyZW50K2NvbHNwYW4sIHRoZW4gbGV0IHh3aWR0aCBiZSB4Y3VycmVudCtjb2xzcGFuLgorICAg
ICAgICAgICAgaWYgKHhXaWR0aCA8IHhDdXJyZW50ICsgY29sU3BhbikKKyAgICAgICAgICAgICAg
ICB4V2lkdGggPSB4Q3VycmVudCArIGNvbFNwYW47CisKKyAgICAgICAgICAgIC8vIFN0ZXAgMTI6
IElmIHloZWlnaHQgPCB5Y3VycmVudCtyb3dzcGFuLCB0aGVuIGxldCB5aGVpZ2h0IGJlIHljdXJy
ZW50K3Jvd3NwYW4uCisgICAgICAgICAgICBpZiAoeUhlaWdodCA8IHlDdXJyZW50ICsgcm93U3Bh
bikKKyAgICAgICAgICAgICAgICB5SGVpZ2h0ID0geUN1cnJlbnQgKyByb3dTcGFuOworCisgICAg
ICAgICAgICAvLyBTdGVwIDEzOiBMZXQgdGhlIHNsb3RzIHdpdGggY29vcmRpbmF0ZXMgKHgsIHkp
IHN1Y2ggdGhhdCB4Y3VycmVudCDiiaQgeCA8IHhjdXJyZW50K2NvbHNwYW4gYW5kCisgICAgICAg
ICAgICAvLyB5Y3VycmVudCDiiaQgeSA8IHljdXJyZW50K3Jvd3NwYW4gYmUgY292ZXJlZCBieSBh
IG5ldyBjZWxsIGMsIGFuY2hvcmVkIGF0ICh4Y3VycmVudCwgeWN1cnJlbnQpLAorICAgICAgICAg
ICAgLy8gd2hpY2ggaGFzIHdpZHRoIGNvbHNwYW4gYW5kIGhlaWdodCByb3dzcGFuLCBjb3JyZXNw
b25kaW5nIHRvIHRoZSBjdXJyZW50IGNlbGwgZWxlbWVudC4KKyAgICAgICAgICAgIGN1cnJlbnRD
ZWxsLT5zZXRSb3dJbmRleCh5Q3VycmVudCk7CisgICAgICAgICAgICBjdXJyZW50Q2VsbC0+c2V0
Q29sdW1uSW5kZXgoeEN1cnJlbnQpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB5ID0geUN1
cnJlbnQ7IHkgPCB5Q3VycmVudCArIHJvd1NwYW47IHkrKykgeworICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgeCA9IHhDdXJyZW50OyB4IDwgeEN1cnJlbnQgKyBjb2xTcGFuOyB4KyspIHsK
KyAgICAgICAgICAgICAgICAgICAgZW5zdXJlUm93QW5kQ29sdW1uKHksIHgpOworICAgICAgICAg
ICAgICAgICAgICBtX2NlbGxTbG90c1t5XVt4XSA9IGN1cnJlbnRDZWxsLT5vYmplY3RJRCgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3RlcCAx
NDogSWYgY2VsbCBncm93cyBkb3dud2FyZCBpcyB0cnVlLCB0aGVuIGFkZCB0aGUgdHVwbGUge2Ms
IHhjdXJyZW50LCBjb2xzcGFufSB0byB0aGUKKyAgICAgICAgICAgIC8vIGxpc3Qgb2YgZG93bndh
cmQtZ3Jvd2luZyBjZWxscy4gTm90IGltcGxlbWVudGVkLgorCisgICAgICAgICAgICAvLyBTdGVw
IDE1LgorICAgICAgICAgICAgeEN1cnJlbnQgKz0gY29sU3BhbjsKKworICAgICAgICAgICAgLy8g
U3RlcCAxNiBoYW5kbGVkIGJlbG93LgorICAgICAgICAgICAgLy8gU3RlcCAxNyBhbmQgMTg6IExl
dCBjdXJyZW50IGNlbGwgYmUgdGhlIG5leHQgdGQgb3IgdGggZWxlbWVudCBjaGlsZCBpbiB0aGUg
dHIgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQuIChUaGlzIGlzIGltcGxlbWVudGVkIGJ5IGFsbG93
aW5nIHRoZSBsb29wIHRvIGNvbnRpbnVlIGFib3ZlKS4KICAgICAgICAgfQotICAgIH0KIAotICAg
IHVuc2lnbmVkIG1heENvbHVtbkNvdW50ID0gMDsKLSAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGZv
b3RlciA9IHRhYmxlLmZvb3RlcigpOwotICAgIAotICAgIGZvciAoUmVuZGVyVGFibGVTZWN0aW9u
KiB0YWJsZVNlY3Rpb24gPSB0YWJsZS50b3BTZWN0aW9uKCk7IHRhYmxlU2VjdGlvbjsgdGFibGVT
ZWN0aW9uID0gdGFibGUuc2VjdGlvbkJlbG93KHRhYmxlU2VjdGlvbiwgU2tpcEVtcHR5U2VjdGlv
bnMpKSB7Ci0gICAgICAgIGlmICh0YWJsZVNlY3Rpb24gPT0gZm9vdGVyKQotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIGFkZENoaWxkcmVuRnJvbVNlY3Rpb24odGFibGVTZWN0aW9uLCBt
YXhDb2x1bW5Db3VudCk7CisgICAgICAgIC8vIE5vdCBzcGVjaWZpZWQ6IHVwZGF0ZSBzb21lIGlu
dGVybmFsIGRhdGEgc3RydWN0dXJlcy4KKyAgICAgICAgbV9yb3dzLmFwcGVuZChyb3cpOworICAg
ICAgICByb3ctPnNldFJvd0luZGV4KHlDdXJyZW50KTsKKyAgICAgICAgYWRkQ2hpbGQocm93KTsK
KworICAgICAgICAvLyBTdGVwIDE2OiBJZiBjdXJyZW50IGNlbGwgaXMgdGhlIGxhc3QgdGQgb3Ig
dGggZWxlbWVudCBjaGlsZCBpbiB0aGUgdHIgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQsIHRoZW4g
aW5jcmVhc2UgeWN1cnJlbnQgYnkgMSwgYWJvcnQgdGhpcyBzZXQgb2Ygc3RlcHMsIGFuZCByZXR1
cm4gdG8gdGhlIGFsZ29yaXRobSBhYm92ZS4KKyAgICAgICAgeUN1cnJlbnQgKz0gMTsKKyAgICB9
OworICAgIGF1dG8gbmVlZHNUb0Rlc2NlbmQgPSBbJmFwcGVuZGVkUm93c10gKEFYQ29yZU9iamVj
dCYgYXhPYmplY3QpIHsKKyAgICAgICAgcmV0dXJuICghYXhPYmplY3QuaXNUYWJsZVJvdygpIHx8
ICFheE9iamVjdC5ub2RlKCkpCisgICAgICAgICAgICAmJiAhYXBwZW5kZWRSb3dzLmNvbnRhaW5z
KGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0PihheE9iamVjdCkpOworICAgIH07
CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKEFYQ29yZU9iamVjdCopPiBwcm9jZXNzUm93RGVzY2Vu
ZGluZ0lmTmVlZGVkID0gWyZdIChBWENvcmVPYmplY3QqIGF4T2JqZWN0KSB7CisgICAgICAgIGlm
ICghYXhPYmplY3QpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8vIERlc2NlbmQgcGFz
dCBhbm9ueW1vdXMgcmVuZGVyZXJzIGFuZCBub24tcm93cy4KKyAgICAgICAgaWYgKG5lZWRzVG9E
ZXNjZW5kKCpheE9iamVjdCkpIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQg
OiBheE9iamVjdC0+Y2hpbGRyZW4oKSkKKyAgICAgICAgICAgICAgICBwcm9jZXNzUm93RGVzY2Vu
ZGluZ0lmTmVlZGVkKGNoaWxkLmdldCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBw
cm9jZXNzUm93KGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KGF4T2JqZWN0
KSk7CisgICAgfTsKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS90YWJsZXMuaHRtbCNhbGdvcml0aG0tZm9yLWVuZGluZy1hLXJvdy1ncm91cAorICAgIGF1dG8g
ZW5kUm93R3JvdXAgPSBbJl0gKCkgeworICAgICAgICBpZiAoeUN1cnJlbnQgPCB5SGVpZ2h0KQor
ICAgICAgICAgICAgeUN1cnJlbnQgPSB5SGVpZ2h0OworICAgIH07CisgICAgLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjYWxnb3JpdGhtLWZvci1w
cm9jZXNzaW5nLXJvdy1ncm91cHMKKyAgICBhdXRvIHByb2Nlc3NSb3dHcm91cCA9IFsmXSAoRWxl
bWVudCYgc2VjdGlvbkVsZW1lbnQpIHsKKyAgICAgICAgLy8gU3RlcCAxOiBMZXQgeXN0YXJ0IGhh
dmUgdGhlIHZhbHVlIG9mIHloZWlnaHQuIE5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIGl0J3Mgb25s
eSB1c2VmdWwgZm9yIHN0ZXAgMywgd2hpY2ggd2Ugc2tpcC4KKworICAgICAgICAvLyBTdGVwIDI6
IEZvciBlYWNoIHRyIGVsZW1lbnQgdGhhdCBpcyBhIGNoaWxkIG9mIHRoZSBlbGVtZW50IGJlaW5n
IHByb2Nlc3NlZCwKKyAgICAgICAgLy8gaW4gdHJlZSBvcmRlciwgcnVuIHRoZSBhbGdvcml0aG0g
Zm9yIHByb2Nlc3Npbmcgcm93cy4KKyAgICAgICAgaWYgKFJlZlB0ciB0YWJsZVNlY3Rpb24gPSBk
eW5hbWljRG93bmNhc3Q8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+KHNlY3Rpb25FbGVtZW50KSkg
eworICAgICAgICAgICAgZm9yIChhdXRvJiByb3cgOiBjaGlsZHJlbk9mVHlwZTxIVE1MVGFibGVS
b3dFbGVtZW50PigqdGFibGVTZWN0aW9uKSkgeworICAgICAgICAgICAgICAgIFJlZlB0ciB0YWJs
ZVJvdyA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KGNhY2hlLT5nZXRP
ckNyZWF0ZSgmcm93KSk7CisgICAgICAgICAgICAgICAgcHJvY2Vzc1Jvdyh0YWJsZVJvdy5nZXQo
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoUmVmUHRyIHNlY3Rpb25BeE9i
amVjdCA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmc2VjdGlvbkVsZW1lbnQpKSB7CisgICAgICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKG5vZGVIYXNSb2xlKCZzZWN0aW9uRWxlbWVudCwgInJvd2dy
b3VwIl9zKSwgInByb2Nlc3NSb3dHcm91cCBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCBuYXRp
dmUgdGFibGUgc2VjdGlvbiBlbGVtZW50cywgb3Igcm9sZT1yb3dncm91cCBlbGVtZW50cyIpOwor
ICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHNlY3Rpb25BeE9iamVjdC0+Y2hp
bGRyZW4oKSkKKyAgICAgICAgICAgICAgICBwcm9jZXNzUm93RGVzY2VuZGluZ0lmTmVlZGVkKGNo
aWxkLmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICAvLyBTdGVwIDM6IElmIHloZWlnaHQgPiB5
c3RhcnQsIHRoZW4gbGV0IGFsbCB0aGUgbGFzdCByb3dzIGluIHRoZSB0YWJsZSBmcm9tIHk9eXN0
YXJ0IHRvIHk9eWhlaWdodC0xCisgICAgICAgIC8vIGZvcm0gYSBuZXcgcm93IGdyb3VwLCBhbmNo
b3JlZCBhdCB0aGUgc2xvdCB3aXRoIGNvb3JkaW5hdGUgKDAsIHlzdGFydCksIHdpdGggaGVpZ2h0
IHloZWlnaHQteXN0YXJ0LAorICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbGVtZW50
IGJlaW5nIHByb2Nlc3NlZC4gTm90IGltcGxlbWVudGVkLgorCisgICAgICAgIC8vIFN0ZXAgNDog
UnVuIHRoZSBhbGdvcml0aG0gZm9yIGVuZGluZyBhIHJvdyBncm91cC4KKyAgICAgICAgZW5kUm93
R3JvdXAoKTsKKyAgICB9OworCisgICAgLy8gU3RlcCA0OiBMZXQgdGhlIHRhYmxlIGJlIHRoZSB0
YWJsZSByZXByZXNlbnRlZCBieSB0aGUgdGFibGUgZWxlbWVudC4KKyAgICBSZWZQdHIgdGFibGVF
bGVtZW50ID0gdGhpcy0+bm9kZSgpOworICAgIC8vIGBpc0FyaWFUYWJsZSgpYCB3aWxsIHJldHVy
biB0cnVlIGZvciB0YWJsZS1saWtlIEFSSUEgc3RydWN0dXJlcyAoZ3JpZCwgdHJlZWdyaWQsIHRh
YmxlKS4KKyAgICBpZiAoIWlzPEhUTUxUYWJsZUVsZW1lbnQ+KHRhYmxlRWxlbWVudC5nZXQoKSkg
JiYgIWlzQXJpYVRhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6ZnVuY3Rpb248
dm9pZChOb2RlKik+IHByb2Nlc3NUYWJsZURlc2NlbmRhbnQgPSBbJiwgdGhpc10gKE5vZGUqIG5v
ZGUpIHsKKyAgICAgICAgLy8gU3RlcCA4OiBXaGlsZSB0aGUgY3VycmVudCBlbGVtZW50IGlzIG5v
dCBvbmUgb2YgdGhlIGZvbGxvd2luZyBlbGVtZW50cywgYWR2YW5jZSB0aGUKKyAgICAgICAgLy8g
Y3VycmVudCBlbGVtZW50IHRvIHRoZSBuZXh0IGNoaWxkIG9mIHRoZSB0YWJsZS4KKyAgICAgICAg
aWYgKGF1dG8qIGNhcHRpb24gPSBkeW5hbWljRG93bmNhc3Q8SFRNTFRhYmxlQ2FwdGlvbkVsZW1l
bnQ+KG5vZGUpKSB7CisgICAgICAgICAgICAvLyBTdGVwIDY6IEFzc29jaWF0ZSB0aGUgZmlyc3Qg
Y2FwdGlvbiBlbGVtZW50IGNoaWxkIG9mIHRoZSB0YWJsZSBlbGVtZW50IHdpdGggdGhlIHRhYmxl
LgorICAgICAgICAgICAgaWYgKCFjYXB0aW9uRWxlbWVudCkKKyAgICAgICAgICAgICAgICBjYXB0
aW9uRWxlbWVudCA9IGNhcHRpb247CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBhdXRvKiBlbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwor
ICAgICAgICBib29sIGRlc2NlbmRhbnRJc1JvdyA9IGVsZW1lbnQgJiYgKGVsZW1lbnQtPmhhc1Rh
Z05hbWUodHJUYWcpIHx8IG5vZGVIYXNSb2xlKGVsZW1lbnQsICJyb3ciX3MpKTsKKyAgICAgICAg
Ym9vbCBkZXNjZW5kYW50SXNSb3dHcm91cCA9IGVsZW1lbnQgJiYgIWRlc2NlbmRhbnRJc1JvdyAm
JiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0aGVhZFRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSh0
Ym9keVRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZSh0Zm9vdFRhZykgfHwgbm9kZUhhc1JvbGUo
ZWxlbWVudCwgInJvd2dyb3VwIl9zKSk7CisKKyAgICAgICAgLy8gU3RlcCA5OiBIYW5kbGUgdGhl
IGNvbGdyb3VwIGVsZW1lbnQuIE5vdCBpbXBsZW1lbnRlZC4KKyAgICAgICAgLy8gU3RlcCAxMDog
SGFuZGxlZCBhYm92ZS4KKyAgICAgICAgLy8gU3RlcCAxMTogU2tpcHBlZC4gTm90IGN1cnJlbnRs
eSBpbXBsZW1lbnRpbmcgImRvd253YXJkLWdyb3dpbmcgY2VsbHMiIGFsZ29yaXRobS4KKyAgICAg
ICAgLy8gU3RlcCAxMjogV2hpbGUgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBub3Qgb25lIG9mIHRo
ZSBmb2xsb3dpbmcgZWxlbWVudHMsIGFkdmFuY2UgdGhlIGN1cnJlbnQgZWxlbWVudCB0byB0aGUg
bmV4dCBjaGlsZCBvZiB0aGUgdGFibGUKKyAgICAgICAgaWYgKCFkZXNjZW5kYW50SXNSb3cgJiYg
IWRlc2NlbmRhbnRJc1Jvd0dyb3VwKSB7CisgICAgICAgICAgICBpZiAoaXNBcmlhVGFibGUoKSkg
eworICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBmb3JnaXZpbmcgd2l0aCBBUklBIGdyaWQgbWFy
a3VwLCBkZXNjZW5kaW5nIHBhc3QgZGlzYWxsb3dlZCBlbGVtZW50cyB0byBidWlsZCB0aGUgZ3Jp
ZCBzdHJ1Y3R1cmUgKHRoaXMgaXMgbm90IHNwZWNpZmllZCwgYnV0IGNvbnNpc3RlbnQgd2l0aCBv
dGhlciBicm93c2VycykuCisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGF4T2JqZWN0ID0gY2Fj
aGUtPmdldE9yQ3JlYXRlKG5vZGUpOyBheE9iamVjdCAmJiBuZWVkc1RvRGVzY2VuZCgqYXhPYmpl
Y3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBheE9i
amVjdC0+Y2hpbGRyZW4oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NUYWJsZURl
c2NlbmRhbnQoY2hpbGQgPyBjaGlsZC0+bm9kZSgpIDogbnVsbHB0cik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gU3RlcCAxMzogSWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBhIHRyLCB0aGVuIHJ1
biB0aGUgYWxnb3JpdGhtIGZvciBwcm9jZXNzaW5nIHJvd3MsCisgICAgICAgIC8vIGFkdmFuY2Ug
dGhlIGN1cnJlbnQgZWxlbWVudCB0byB0aGUgbmV4dCBjaGlsZCBvZiB0aGUgdGFibGUsIGFuZCBy
ZXR1cm4gdG8gdGhlIHN0ZXAgbGFiZWxlZCByb3dzLgorICAgICAgICBpZiAoZGVzY2VuZGFudElz
Um93KQorICAgICAgICAgICAgcHJvY2Vzc1JvdyhkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlUm93PihjYWNoZS0+Z2V0T3JDcmVhdGUoZWxlbWVudCkpKTsKKworICAgICAgICAvLyBT
dGVwIDE0OiBSdW4gdGhlIGFsZ29yaXRobSBmb3IgZW5kaW5nIGEgcm93IGdyb3VwLgorICAgICAg
ICBlbmRSb3dHcm91cCgpOworCisgICAgICAgIC8vIFN0ZXAgMTU6IElmIHRoZSBjdXJyZW50IGVs
ZW1lbnQgaXMgYSB0Zm9vdC4uLgorICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0Zm9v
dFRhZykpIHsKKyAgICAgICAgICAgIC8vIC4uLnRoZW4gYWRkIHRoYXQgZWxlbWVudCB0byB0aGUg
bGlzdCBvZiBwZW5kaW5nIHRmb290IGVsZW1lbnRzCisgICAgICAgICAgICBwZW5kaW5nVGZvb3RF
bGVtZW50cy5hcHBlbmQoKmVsZW1lbnQpOworICAgICAgICAgICAgLy8gLi4uYWR2YW5jZSB0aGUg
Y3VycmVudCBlbGVtZW50IHRvIHRoZSBuZXh0IGNoaWxkIG9mIHRoZSB0YWJsZS4KKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0ZXAgMTY6IElmIHRoZSBjdXJy
ZW50IGVsZW1lbnQgaXMgZWl0aGVyIGEgdGhlYWQgb3IgYSB0Ym9keSwgcnVuIHRoZSBhbGdvcml0
aG0gZm9yIHByb2Nlc3Npbmcgcm93IGdyb3Vwcy4gKE5vdCBzcGVjaWZpZWQ6IGluY2x1ZGUgcm9s
ZT0icm93Z3JvdXBzIikuCisgICAgICAgIGlmIChkZXNjZW5kYW50SXNSb3dHcm91cCkKKyAgICAg
ICAgICAgIHByb2Nlc3NSb3dHcm91cCgqZWxlbWVudCk7CisgICAgfTsKKyAgICAvLyBTdGVwIDc6
IExldCB0aGUgY3VycmVudCBlbGVtZW50IGJlIHRoZSBmaXJzdCBlbGVtZW50IGNoaWxkIG9mIHRo
ZSB0YWJsZSBlbGVtZW50LgorICAgIGZvciAoUmVmUHRyIGN1cnJlbnRFbGVtZW50ID0gdGFibGVF
bGVtZW50LT5maXJzdENoaWxkKCk7IGN1cnJlbnRFbGVtZW50OyBjdXJyZW50RWxlbWVudCA9IGN1
cnJlbnRFbGVtZW50LT5uZXh0U2libGluZygpKSB7CisgICAgICAgIHByb2Nlc3NUYWJsZURlc2Nl
bmRhbnQoY3VycmVudEVsZW1lbnQuZ2V0KCkpOworICAgICAgICAvLyBTdGVwIDE3ICsgMTg6IEFk
dmFuY2UgdGhlIGN1cnJlbnQgZWxlbWVudCB0byB0aGUgbmV4dCBjaGlsZCBvZiB0aGUgdGFibGUu
CiAgICAgfQotICAgIAotICAgIC8vIFByb2Nlc3MgdGhlIGZvb3RlciBsYXN0LCBpbiBjYXNlIGl0
IHdhcyBvcmRlcmVkIGVhcmxpZXIgaW4gdGhlIERPTS4KLSAgICBpZiAoZm9vdGVyKQotICAgICAg
ICBhZGRDaGlsZHJlbkZyb21TZWN0aW9uKGZvb3RlciwgbWF4Q29sdW1uQ291bnQpOwotICAgIAot
ICAgIGF1dG8qIGF4Q2FjaGUgPSBkb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCk7Ci0gICAgLy8g
bWFrZSB0aGUgY29sdW1ucyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGZp
cnN0IGJvZHkKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBtYXhDb2x1bW5Db3VudDsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYXV0byYgY29sdW1u
ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigqYXhDYWNoZS0+Y3JlYXRlKEFj
Y2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4pKTsKKworICAgIC8vIFN0ZXAgMTk6IEZvciBlYWNoIHRm
b290IGVsZW1lbnQgaW4gdGhlIGxpc3Qgb2YgcGVuZGluZyB0Zm9vdCBlbGVtZW50cywgaW4gdHJl
ZSBvcmRlciwKKyAgICAvLyBydW4gdGhlIGFsZ29yaXRobSBmb3IgcHJvY2Vzc2luZyByb3cgZ3Jv
dXBzLgorICAgIGZvciAoY29uc3QgYXV0byYgdGZvb3RFbGVtZW50IDogcGVuZGluZ1Rmb290RWxl
bWVudHMpCisgICAgICAgIHByb2Nlc3NSb3dHcm91cCh0Zm9vdEVsZW1lbnQuZ2V0KCkpOworCisg
ICAgLy8gVGhlIHJlbWFpbmRlciBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVuc3BlY2lmaWVkIHVwZGF0
aW5nIG9mIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4KKyAgICBhZGRDaGlsZChjYWNoZS0+Z2V0
T3JDcmVhdGUoY2FwdGlvbkVsZW1lbnQuZ2V0KCkpLCBEZXNjZW5kSWZJZ25vcmVkOjpObyk7CisK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgeFdpZHRoOyArK2kpIHsKKyAgICAgICAgYXV0
byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigqY2FjaGUtPmNy
ZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uKSk7CiAgICAgICAgIGNvbHVtbi5zZXRDb2x1
bW5JbmRleChpKTsKICAgICAgICAgY29sdW1uLnNldFBhcmVudCh0aGlzKTsKICAgICAgICAgbV9j
b2x1bW5zLmFwcGVuZCgmY29sdW1uKTsKQEAgLTQ3MSw2NiArNjgxLDYgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5VGFibGU6OmFkZENoaWxkcmVuKCkKICAgICB1cGRhdGVDaGlsZHJlblJvbGVzKCk7CiB9
CiAKLXZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmls
aXR5T2JqZWN0KiByb3dPYmplY3QsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBl
bmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKLXsKLSAgICBpZiAoIXJvd09iamVjdCB8
fCAhaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigqcm93T2JqZWN0KSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYXV0byYgcm93ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pigqcm93
T2JqZWN0KTsKLSAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGV2ZXJ5IGNlbGwgZm9yIGEgbmV3IHJv
dywgYmVjYXVzZSBjZWxsIHNwYW5zCi0gICAgLy8gY2FuIGNhdXNlIHVzIHRvIG1pc3Mgcm93cyBp
ZiB3ZSBqdXN0IGNoZWNrIHRoZSBmaXJzdCBjb2x1bW4uCi0gICAgaWYgKGFwcGVuZGVkUm93cy5j
b250YWlucygmcm93KSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHJvdy5zZXRSb3dJbmRl
eChzdGF0aWNfY2FzdDxpbnQ+KG1fcm93cy5zaXplKCkpKTsKLSAgICBtX3Jvd3MuYXBwZW5kKCZy
b3cpOwotICAgIGFkZENoaWxkKCZyb3csIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsKLSAgICBhcHBl
bmRlZFJvd3MuYWRkKCZyb3cpOwotICAgICAgICAKLSAgICAvLyBzdG9yZSB0aGUgbWF4aW11bSBu
dW1iZXIgb2YgY29sdW1ucwotICAgIHVuc2lnbmVkIHJvd0NlbGxDb3VudCA9IHJvdy5jaGlsZHJl
bigpLnNpemUoKTsKLSAgICBpZiAocm93Q2VsbENvdW50ID4gY29sdW1uQ291bnQpCi0gICAgICAg
IGNvbHVtbkNvdW50ID0gcm93Q2VsbENvdW50OwotfQotCi12b2lkIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6YWRkQ2hpbGRyZW5Gcm9tU2VjdGlvbihSZW5kZXJUYWJsZVNlY3Rpb24qIHRhYmxlU2VjdGlv
biwgdW5zaWduZWQmIG1heENvbHVtbkNvdW50KQotewotICAgIEFTU0VSVCh0YWJsZVNlY3Rpb24p
OwotICAgIGlmICghdGFibGVTZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0
byogYXhDYWNoZSA9IGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKLSAgICBIYXNoU2V0PEFj
Y2Vzc2liaWxpdHlPYmplY3QqPiBhcHBlbmRlZFJvd3M7Ci0gICAgdW5zaWduZWQgbnVtUm93cyA9
IHRhYmxlU2VjdGlvbi0+bnVtUm93cygpOwotICAgIGZvciAodW5zaWduZWQgcm93SW5kZXggPSAw
OyByb3dJbmRleCA8IG51bVJvd3M7ICsrcm93SW5kZXgpIHsKLSAgICAgICAgCi0gICAgICAgIFJl
bmRlclRhYmxlUm93KiByZW5kZXJSb3cgPSB0YWJsZVNlY3Rpb24tPnJvd1JlbmRlcmVyQXQocm93
SW5kZXgpOwotICAgICAgICBpZiAoIXJlbmRlclJvdykKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCYgcm93T2JqZWN0ID0gKmF4Q2Fj
aGUtPmdldE9yQ3JlYXRlKHJlbmRlclJvdyk7Ci0gICAgICAgIAotICAgICAgICAvLyBJZiB0aGUg
cm93IGlzIGFub255bW91cywgd2Ugc2hvdWxkIGRpdmUgZGVlcGVyIGludG8gdGhlIGRlc2NlbmRh
bnRzIHRvIHRyeSB0byBmaW5kIGEgdmFsaWQgcm93LgotICAgICAgICBpZiAocmVuZGVyUm93LT5p
c0Fub255bW91cygpKSB7Ci0gICAgICAgICAgICBEZXF1ZTxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4g
cXVldWU7Ci0gICAgICAgICAgICBxdWV1ZS5hcHBlbmQoJnJvd09iamVjdCk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gcXVldWUudGFrZUZpcnN0KCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKG9iai0+bm9kZSgpICYmIGlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKm9i
aikpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRkVGFibGVDZWxsQ2hpbGQob2JqLCBhcHBlbmRl
ZFJvd3MsIG1heENvbHVtbkNvdW50KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAoYXV0byogY2hpbGQgPSBvYmot
PmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHF1ZXVlLmFwcGVuZChjaGlsZCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgYWRkVGFibGVDZWxsQ2hpbGQoJnJvd09iamVjdCwgYXBw
ZW5kZWRSb3dzLCBtYXhDb2x1bW5Db3VudCk7Ci0gICAgfQotICAgIAotICAgIG1heENvbHVtbkNv
dW50ID0gc3RkOjptYXgodGFibGVTZWN0aW9uLT5udW1Db2x1bW5zKCksIG1heENvbHVtbkNvdW50
KTsKLX0KLSAgICAKIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOjpoZWFkZXJDb250
YWluZXIoKQogewogICAgIGlmIChtX2hlYWRlckNvbnRhaW5lcikKQEAgLTU1MCw3ICs3MDAsNyBA
QCBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZTo6aGVhZGVyQ29udGFpbmVyKCkKIEFY
Q29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlUYWJs
ZTo6Y29sdW1ucygpCiB7CiAgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwotICAgICAg
ICAKKwogICAgIHJldHVybiBtX2NvbHVtbnM7CiB9CiAKQEAgLTY0MiwzMCArNzkyLDExIEBAIGlu
dCBBY2Nlc3NpYmlsaXR5VGFibGU6OnRhYmxlTGV2ZWwoKSBjb25zdAogQVhDb3JlT2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5VGFibGU6OmNlbGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uLCB1
bnNpZ25lZCByb3cpCiB7CiAgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwotICAgIGlm
IChjb2x1bW4gPj0gY29sdW1uQ291bnQoKSB8fCByb3cgPj0gcm93Q291bnQoKSkKKyAgICBpZiAo
cm93ID49IG1fY2VsbFNsb3RzLnNpemUoKSB8fCBjb2x1bW4gPj0gbV9jZWxsU2xvdHNbcm93XS5z
aXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIC8vIEl0ZXJhdGUgYmFj
a3dhcmRzIHRocm91Z2ggdGhlIHJvd3MgaW4gY2FzZSB0aGUgZGVzaXJlZCBjZWxsIGhhcyBhIHJv
d3NwYW4gYW5kIGV4aXN0cyBpbiBhIHByZXZpb3VzIHJvdy4KLSAgICBmb3IgKHVuc2lnbmVkIHJv
d0luZGV4Q291bnRlciA9IHJvdyArIDE7IHJvd0luZGV4Q291bnRlciA+IDA7IC0tcm93SW5kZXhD
b3VudGVyKSB7Ci0gICAgICAgIHVuc2lnbmVkIHJvd0luZGV4ID0gcm93SW5kZXhDb3VudGVyIC0g
MTsKLSAgICAgICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBtX3Jvd3Nbcm93SW5kZXhdLT5jaGls
ZHJlbigpOwotICAgICAgICAvLyBTaW5jZSBzb21lIGNlbGxzIG1heSBoYXZlIGNvbHNwYW5zLCB3
ZSBoYXZlIHRvIGNoZWNrIHRoZSBhY3R1YWwgcmFuZ2Ugb2YgZWFjaAotICAgICAgICAvLyBjZWxs
IHRvIGRldGVybWluZSB3aGljaCBpcyB0aGUgcmlnaHQgb25lLgotICAgICAgICBmb3IgKHVuc2ln
bmVkIGNvbEluZGV4Q291bnRlciA9IHN0ZDo6bWluKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjaGls
ZHJlbi5zaXplKCkpLCBjb2x1bW4gKyAxKTsgY29sSW5kZXhDb3VudGVyID4gMDsgLS1jb2xJbmRl
eENvdW50ZXIpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNvbEluZGV4ID0gY29sSW5kZXhDb3Vu
dGVyIC0gMTsKLSAgICAgICAgICAgIEFYQ29yZU9iamVjdCogY2hpbGQgPSBjaGlsZHJlbltjb2xJ
bmRleF0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoIWNoaWxkKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICBhdXRvIGNvbHVtblJhbmdlID0gY2hpbGQtPmNvbHVtbklu
ZGV4UmFuZ2UoKTsKLSAgICAgICAgICAgIGF1dG8gcm93UmFuZ2UgPSBjaGlsZC0+cm93SW5kZXhS
YW5nZSgpOwotCi0gICAgICAgICAgICBpZiAoKGNvbHVtbiA+PSBjb2x1bW5SYW5nZS5maXJzdCAm
JiBjb2x1bW4gPCAoY29sdW1uUmFuZ2UuZmlyc3QgKyBjb2x1bW5SYW5nZS5zZWNvbmQpKQotICAg
ICAgICAgICAgICAgICYmIChyb3cgPj0gcm93UmFuZ2UuZmlyc3QgJiYgcm93IDwgKHJvd1Jhbmdl
LmZpcnN0ICsgcm93UmFuZ2Uuc2Vjb25kKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxk
OwotICAgICAgICB9Ci0gICAgfQogCisgICAgaWYgKEFYSUQgY2VsbElEID0gbV9jZWxsU2xvdHNb
cm93XVtjb2x1bW5dKQorICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5vYmplY3RGb3JJ
RChjZWxsSUQpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC03NDYsNCArODc3LDE3IEBA
IGludCBBY2Nlc3NpYmlsaXR5VGFibGU6OmF4Um93Q291bnQoKSBjb25zdAogICAgIHJldHVybiAw
OwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93KHVuc2lnbmVkIGluZGV4
KQoreworICAgIGlmIChtX2NlbGxTbG90cy5zaXplKCkgPCBpbmRleCArIDEpCisgICAgICAgIG1f
Y2VsbFNsb3RzLmdyb3coaW5kZXggKyAxKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6
OmVuc3VyZVJvd0FuZENvbHVtbih1bnNpZ25lZCByb3dJbmRleCwgdW5zaWduZWQgY29sdW1uSW5k
ZXgpCit7CisgICAgZW5zdXJlUm93KHJvd0luZGV4KTsKKyAgICBpZiAobV9jZWxsU2xvdHNbcm93
SW5kZXhdLnNpemUoKSA8IGNvbHVtbkluZGV4ICsgMSkKKyAgICAgICAgbV9jZWxsU2xvdHNbcm93
SW5kZXhdLmdyb3coY29sdW1uSW5kZXggKyAxKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
LmgKaW5kZXggMjc0NmJlMzk1YTI5Li44Mjg0YmM5NmNjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaApAQCAtMjksMTcgKzI5LDE3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
aCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBY2Nlc3NpYmlsaXR5VGFi
bGVSb3c7CiBjbGFzcyBIVE1MVGFibGVFbGVtZW50OwotY2xhc3MgUmVuZGVyVGFibGVTZWN0aW9u
OwotICAgIAorCiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGUgOiBwdWJsaWMgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VGFi
bGU+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlU
YWJsZT4gY3JlYXRlKE5vZGUmKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VGFibGUoKTsK
IAogICAgIHZvaWQgaW5pdCgpIGZpbmFsOwpAQCAtNDcsMTUgKzQ3LDE1IEBAIHB1YmxpYzoKICAg
ICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNBcmlhVGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBh
ZGRDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBmaW5hbDsKICAg
ICB2b2lkIGNsZWFyQ2hpbGRyZW4oKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNoaWxkcmVuUm9s
ZXMoKTsKIAogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb2x1bW5zKCkgb3ZlcnJp
ZGU7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd3MoKSBvdmVycmlkZTsKIAot
ICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50KCkgb3ZlcnJpZGU7Ci0gICAgdW5zaWduZWQgcm93Q291
bnQoKSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCgpIGZpbmFsOworICAgIHVu
c2lnbmVkIHJvd0NvdW50KCkgZmluYWw7CiAgICAgaW50IHRhYmxlTGV2ZWwoKSBjb25zdCBmaW5h
bDsKIAogICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IGZpbmFsOwpAQCAtNzEsMTkgKzcxLDI4IEBA
IHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zLCBhcyBjaGls
ZHJlbiwgYWxsIHRoZSBvYmplY3RzIHRoYXQgYWN0IGFzIGhlYWRlcnMuCiAgICAgQVhDb3JlT2Jq
ZWN0KiBoZWFkZXJDb250YWluZXIoKSBvdmVycmlkZTsKIAotICAgIGJvb2wgaXNUYWJsZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzVGFibGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIGl0IGlzIGV4cG9z
ZWQgYXMgYW4gQWNjZXNzaWJpbGl0eVRhYmxlIHRvIHRoZSBwbGF0Zm9ybS4KLSAgICBib29sIGlz
RXhwb3NhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0V4cG9zYWJsZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faXNFeHBvc2FibGU7IH0KICAgICB2b2lkIHJlY29tcHV0ZUlzRXhw
b3NhYmxlKCk7CiAKLSAgICBpbnQgYXhDb2x1bW5Db3VudCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGludCBheFJvd0NvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGF4Q29sdW1uQ291bnQo
KSBjb25zdCBmaW5hbDsKKyAgICBpbnQgYXhSb3dDb3VudCgpIGNvbnN0IGZpbmFsOworCisgICAg
Ly8gQ2VsbCBpbmRleGVzIGFyZSBhc3NpZ25lZCBkdXJpbmcgY2hpbGQgY3JlYXRpb24sIHNvIG1h
a2Ugc3VyZSBjaGlsZHJlbiBhcmUgdXAtdG8tZGF0ZS4KKyAgICB2b2lkIGVuc3VyZUNlbGxJbmRl
eGVzVXBUb0RhdGUoKSB7IHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsgfQorICAgIFZlY3Rv
cjxWZWN0b3I8QVhJRD4+IGNlbGxTbG90cygpIGZpbmFsOworICAgIHZvaWQgc2V0Q2VsbFNsb3Rz
RGlydHkoKTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUYWJsZShS
ZW5kZXJPYmplY3QqKTsKKyAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VGFibGUoTm9kZSYpOwog
CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG1fcm93czsKICAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgbV9jb2x1bW5zOworICAgIC8vIDJEIG1hdHJpeCBvZiB0aGUgY2Vs
bHMgYXNzaWduZWQgdG8gZWFjaCAic2xvdCIgaW4gdGhpcyB0YWJsZS4KKyAgICAvLyAoIlNsb3Qi
IGFzIGRlZmluZWQgaGVyZTogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
dGFibGVzLmh0bWwjY29uY2VwdC1zbG90cykKKyAgICBWZWN0b3I8VmVjdG9yPEFYSUQ+PiBtX2Nl
bGxTbG90czsKIAogICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBtX2hlYWRlckNvbnRh
aW5lcjsKICAgICBib29sIG1faXNFeHBvc2FibGU7CkBAIC05MywxMiArMTAyLDE1IEBAIHByb3Rl
Y3RlZDoKIAogICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBm
aW5hbDsKIAorICAgIHZvaWQgYWRkUm93KEFjY2Vzc2liaWxpdHlUYWJsZVJvdyYsIHVuc2lnbmVk
LCB1bnNpZ25lZCYgbWF4Q29sdW1uQ291bnQpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3Q7CiAg
ICAgdm9pZCB0aXRsZUVsZW1lbnRUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25z
dCBmaW5hbDsKICAgICBIVE1MVGFibGVFbGVtZW50KiB0YWJsZUVsZW1lbnQoKSBjb25zdDsKLSAg
ICB2b2lkIGFkZENoaWxkcmVuRnJvbVNlY3Rpb24oUmVuZGVyVGFibGVTZWN0aW9uKiwgdW5zaWdu
ZWQmIG1heENvbHVtbkNvdW50KTsKLSAgICB2b2lkIGFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2li
aWxpdHlPYmplY3QqLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dz
LCB1bnNpZ25lZCYgY29sdW1uQ291bnQpOworCisgICAgdm9pZCBlbnN1cmVSb3codW5zaWduZWQp
OworICAgIHZvaWQgZW5zdXJlUm93QW5kQ29sdW1uKHVuc2lnbmVkIC8qIHJvd0luZGV4ICovLCB1
bnNpZ25lZCAvKiBjb2x1bW5JbmRleCAqLyk7CiAKICAgICBib29sIGhhc05vblRhYmxlQVJJQVJv
bGUoKSBjb25zdDsKICAgICAvLyBpc0RhdGFUYWJsZSBpcyB3aGV0aGVyIGl0IGlzIGV4cG9zZWQg
YXMgYW4gQWNjZXNzaWJpbGl0eVRhYmxlIGJlY2F1c2UgdGhlIGhldXJpc3RpYwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5j
cHAKaW5kZXggMDI1OWZmYTQ5YmI4Li5mMDU2NmY0N2NlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAt
MjksMjMgKzI5LDIxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5oIgogCi0jaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5o
IgotI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgot
I2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCi0jaW5jbHVkZSAiTWF0aE1MRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIAotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogQWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbDo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAg
IDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJlcikKLSAgICAsIG1fYXhDb2xJbmRl
eEZyb21Sb3coLTEpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OkFjY2Vzc2liaWxp
dHlUYWJsZUNlbGwoTm9kZSYgbm9kZSkKKyAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qo
bm9kZSkKIHsKIH0KIApAQCAtNTYsNiArNTQsMTEgQEAgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw+IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmUK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKHJlbmRlcmVy
KSk7CiB9CiAKK1JlZjxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPiBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjpjcmVhdGUoTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsKG5vZGUpKTsKK30KKwogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7CiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGRlZmF1bHRPYmplY3RJbmNsdXNpb24o
KTsKQEAgLTY2LDExICs2OSwxMSBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKICAgICAKICAgICAvLyBJZ25vcmUgYW5v
bnltb3VzIHRhYmxlIGNlbGxzIGFzIGxvbmcgYXMgdGhleSdyZSBub3QgaW4gYSB0YWJsZSAoaWUu
IHdoZW4gZGlzcGxheTp0YWJsZSBpcyB1c2VkKS4KICAgICBSZW5kZXJPYmplY3QqIHJlbmRlclRh
YmxlID0gaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSA/IGRvd25jYXN0PFJlbmRlclRh
YmxlQ2VsbD4oKm1fcmVuZGVyZXIpLnRhYmxlKCkgOiBudWxscHRyOwotICAgIGJvb2wgaW5UYWJs
ZSA9IHJlbmRlclRhYmxlICYmIHJlbmRlclRhYmxlLT5ub2RlKCkgJiYgKHJlbmRlclRhYmxlLT5u
b2RlKCktPmhhc1RhZ05hbWUodGFibGVUYWcpIHx8IG5vZGVIYXNSb2xlKHJlbmRlclRhYmxlLT5u
b2RlKCksICJncmlkIl9zKSk7CisgICAgYm9vbCBpblRhYmxlID0gcmVuZGVyVGFibGUgJiYgcmVu
ZGVyVGFibGUtPm5vZGUoKSAmJiAocmVuZGVyVGFibGUtPm5vZGUoKS0+aGFzVGFnTmFtZSh0YWJs
ZVRhZykgfHwgbm9kZUhhc0dyaWRSb2xlKHJlbmRlclRhYmxlLT5ub2RlKCkpKTsKICAgICBpZiAo
IW5vZGUoKSAmJiAhaW5UYWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAotICAg
IGlmICghaXNUYWJsZUNlbGwoKSkKKyAgICBpZiAoIWlzRXhwb3NlZFRhYmxlQ2VsbCgpKQogICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTgsNyArMTIxLDcg
QEAgQWNjZXNzaWJpbGl0eVRhYmxlKiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJlbnRUYWJs
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+
KHRhYmxlRnJvbVJlbmRlclRyZWUpOwogfQogICAgIAotYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjppc1RhYmxlQ2VsbCgpIGNvbnN0Citib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6Omlz
RXhwb3NlZFRhYmxlQ2VsbCgpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIHBhcmVudCB0YWJsZSBp
cyBhbiBhY2Nlc3NpYmlsaXR5IHRhYmxlLCB0aGVuIHdlIGFyZSBhIHRhYmxlIGNlbGwuCiAgICAg
Ly8gVGhpcyB1c2VkIHRvIGNoZWNrIGlmIHRoZSB1bmlnbm9yZWRQYXJlbnQgd2FzIGEgcm93LCBi
dXQgdGhhdCBleHBsb2RlZCBwZXJmb3JtYW5jZSBpZgpAQCAtMTM2LDcgKzEzOSw3IEBAIEFjY2Vz
c2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmRldGVybWluZUFjY2Vzc2liaWxp
dHlSb2xlKCkKICAgICBpZiAoZGVmYXVsdFJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVt
bkhlYWRlciB8fCBkZWZhdWx0Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyIHx8
IGRlZmF1bHRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDZWxsIHx8IGRlZmF1bHRSb2xlID09
IEFjY2Vzc2liaWxpdHlSb2xlOjpHcmlkQ2VsbCkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRSb2xl
OwogCi0gICAgaWYgKCFpc1RhYmxlQ2VsbCgpKQorICAgIGlmICghaXNFeHBvc2VkVGFibGVDZWxs
KCkpCiAgICAgICAgIHJldHVybiBkZWZhdWx0Um9sZTsKICAgICBpZiAoaXNDb2x1bW5IZWFkZXJD
ZWxsKCkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyOwpA
QCAtMTQ4LDcgKzE1MSwyMyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAgCiBib29sIEFjY2Vzc2liaWxp
dHlUYWJsZUNlbGw6OmlzVGFibGVIZWFkZXJDZWxsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbm9k
ZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZSh0aFRhZyk7CisgICAgYXV0byogbm9kZSA9IHRoaXMt
Pm5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
IChub2RlLT5oYXNUYWdOYW1lKHRoVGFnKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZSh0ZFRhZykpIHsKKyAgICAgICAgYXV0byogY3VycmVudCA9IG5v
ZGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgLy8gaSA8IDIgaXMgdXNlZCBoZXJlIGJlY2F1c2Ug
aW4gYSBwcm9wZXJseSBzdHJ1Y3R1cmVkIHRhYmxlLCB0aGUgdGhlYWQgc2hvdWxkIGJlIDIgbGV2
ZWxzIGF3YXkgZnJvbSB0aGUgdGQuCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMiAmJiBj
dXJyZW50OyBpKyspIHsKKyAgICAgICAgICAgIGlmIChjdXJyZW50LT5oYXNUYWdOYW1lKHRoZWFk
VGFnKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGN1cnJlbnQg
PSBjdXJyZW50LT5wYXJlbnROb2RlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzQ29sdW1uSGVhZGVyQ2Vs
bCgpIGNvbnN0CkBAIC0zMTcsNjggKzMzNiwzMyBAQCBBY2Nlc3NpYmlsaXR5VGFibGVSb3cqIEFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFJvdygpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8g
b3duZXJQYXJlbnQgPSBhcmlhT3duZWRCeVBhcmVudCgpKQogICAgICAgICByZXR1cm4gb3duZXJQ
YXJlbnQ7Ci0gICAgCi0gICAgQVhDb3JlT2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmln
bm9yZWQoKTsKLSAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVudCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGVSb3c+KHBhcmVudCk7CisgICAgcmV0dXJuIGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGVSb3c+KHBhcmVudE9iamVjdFVuaWdub3JlZCgpKTsKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjplbnN1cmVJbmRleGVzVXBUb0RhdGUoKSBjb25zdAoreworICAgIGlm
IChhdXRvKiBwYXJlbnRUYWJsZSA9IHRoaXMtPnBhcmVudFRhYmxlKCkpCisgICAgICAgIHBhcmVu
dFRhYmxlLT5lbnN1cmVDZWxsSW5kZXhlc1VwVG9EYXRlKCk7CiB9CiAKIHN0ZDo6cGFpcjx1bnNp
Z25lZCwgdW5zaWduZWQ+IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnJvd0luZGV4UmFuZ2UoKSBj
b25zdAogewotICAgIGF1dG8qIHBhcmVudFJvdyA9IHRoaXMtPnBhcmVudFJvdygpOwotICAgIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd1JhbmdlIHsgcGFyZW50Um93ID8gcGFyZW50
Um93LT5yb3dJbmRleCgpIDogMCwgMSB9OwotCi0gICAgLy8gQVJJQSAxLjEncyBhcmlhLXJvd3Nw
YW4gYXR0cmlidXRlIGlzIGludGVuZGVkIGZvciBjZWxscyBhbmQgZ3JpZGNlbGxzIHdoaWNoIGFy
ZSBub3QgY29udGFpbmVkCi0gICAgLy8gaW4gYSBuYXRpdmUgdGFibGUuIEJ1dCBpZiB3ZSBoYXZl
IGEgdmFsaWQgYXV0aG9yLXByb3ZpZGVkIHZhbHVlIGFuZCBkbyBub3QgaGF2ZSBhbiBleHBsaWNp
dAotICAgIC8vIG5hdGl2ZSBob3N0IGxhbmd1YWdlIHZhbHVlIGZvciB0aGUgcm93c3BhbiwgZXhw
b3NlIHRoZSBBUklBIHZhbHVlLgotICAgIHJvd1JhbmdlLnNlY29uZCA9IGF4Um93U3BhbigpOwot
ICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHJvd1JhbmdlLnNlY29uZCkgPT0gLTEpIHsKLSAgICAg
ICAgLy8gSXQncyBmYXN0ZXIgdG8gZ2V0IHJvd3NwYW4gZnJvbSBSZW5kZXJUYWJsZUNlbGwgYmVj
YXVzZSBpdCBoYXMgYnVpbHQgaW4gY2FjaGVzIHRvIGF2b2lkCi0gICAgICAgIC8vIHJlYWRpbmcg
ZnJvbSB0aGUgRE9NLCBzbyB0cnkgdGhhdCBmaXJzdC4KLSAgICAgICAgaWYgKGF1dG8qIHJlbmRl
clRhYmxlQ2VsbCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkp
KQotICAgICAgICAgICAgcm93UmFuZ2Uuc2Vjb25kID0gcmVuZGVyVGFibGVDZWxsLT5yb3dTcGFu
KCk7Ci0gICAgICAgIGVsc2UgaWYgKGF1dG8qIHRhYmxlQ2VsbEVsZW1lbnQgPSBkeW5hbWljRG93
bmNhc3Q8SFRNTFRhYmxlQ2VsbEVsZW1lbnQ+KG5vZGUoKSkpCi0gICAgICAgICAgICByb3dSYW5n
ZS5zZWNvbmQgPSBzdGQ6Om1pbjx1bnNpZ25lZD4odGFibGVDZWxsRWxlbWVudC0+cm93U3Bhbigp
LCBtYXhSb3dJbmRleCk7Ci0jaWYgRU5BQkxFKE1BVEhNTCkKLSAgICAgICAgZWxzZSBpZiAoYXV0
byogbWF0aE1MRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxNYXRoTUxFbGVtZW50Pihub2RlKCkp
OyBtYXRoTUxFbGVtZW50ICYmIG1hdGhNTEVsZW1lbnQtPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6
Om10ZFRhZykpCi0gICAgICAgICAgICByb3dSYW5nZS5zZWNvbmQgPSBzdGQ6Om1pbjx1bnNpZ25l
ZD4obWF0aE1MRWxlbWVudC0+cm93U3BhbigpLCBtYXhSb3dJbmRleCk7Ci0jZW5kaWYKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBEZWZhdWx0IGJhY2sgdG8gMS4KLSAgICAgICAgICAg
IHJvd1JhbmdlLnNlY29uZCA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJvd1Jh
bmdlOworICAgIGVuc3VyZUluZGV4ZXNVcFRvRGF0ZSgpOworICAgIHJldHVybiB7IG1fcm93SW5k
ZXgsIHJvd1NwYW4oKSB9OwogfQogICAgIAogc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSgpIGNvbnN0CiB7Ci0gICAg
c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uUmFuZ2UgeyAwLCAxIH07Ci0gICAg
aWYgKCFpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpKQotICAgICAgICByZXR1cm4gY29s
dW1uUmFuZ2U7Ci0KLSAgICBjb25zdCBSZW5kZXJUYWJsZUNlbGwmIGNlbGwgPSBkb3duY2FzdDxS
ZW5kZXJUYWJsZUNlbGw+KCptX3JlbmRlcmVyKTsKLSAgICBjb2x1bW5SYW5nZS5maXJzdCA9IGNl
bGwudGFibGUoKS0+Y29sVG9FZmZDb2woY2VsbC5jb2woKSk7Ci0KLSAgICAvLyBBUklBIDEuMSdz
IGFyaWEtY29sc3BhbiBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgZm9yIGNlbGxzIGFuZCBncmlkY2Vs
bHMgd2hpY2ggYXJlIG5vdCBjb250YWluZWQKLSAgICAvLyBpbiBhIG5hdGl2ZSB0YWJsZS4gQnV0
IGlmIHdlIGhhdmUgYSB2YWxpZCBhdXRob3ItcHJvdmlkZWQgdmFsdWUgYW5kIGRvIG5vdCBoYXZl
IGFuIGV4cGxpY2l0Ci0gICAgLy8gbmF0aXZlIGhvc3QgbGFuZ3VhZ2UgdmFsdWUgZm9yIHRoZSBj
b2xzcGFuLCBleHBvc2UgdGhlIEFSSUEgdmFsdWUuCi0gICAgY29sdW1uUmFuZ2Uuc2Vjb25kID0g
YXhDb2x1bW5TcGFuKCk7Ci0gICAgaWYgKHN0YXRpY19jYXN0PGludD4oY29sdW1uUmFuZ2Uuc2Vj
b25kKSAhPSAtMSkKLSAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlOwotCi0gICAgY29sdW1uUmFu
Z2Uuc2Vjb25kID0gY2VsbC50YWJsZSgpLT5jb2xUb0VmZkNvbChjZWxsLmNvbCgpICsgY2VsbC5j
b2xTcGFuKCkpIC0gY29sdW1uUmFuZ2UuZmlyc3Q7Ci0KLSAgICByZXR1cm4gY29sdW1uUmFuZ2U7
CisgICAgZW5zdXJlSW5kZXhlc1VwVG9EYXRlKCk7CisgICAgcmV0dXJuIHsgbV9jb2x1bW5JbmRl
eCwgY29sU3BhbigpIH07CiB9Ci0gICAgCisKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlUYWJsZUNlbGw6OnRpdGxlVUlFbGVtZW50KCkgY29uc3QKIHsKICAgICAvLyBUcnkgdG8g
ZmluZCBpZiB0aGUgZmlyc3QgY2VsbCBpbiB0aGlzIHJvdyBpcyBhIDx0aD4uIElmIGl0IGlzLAog
ICAgIC8vIHRoZW4gaXQgY2FuIGFjdCBhcyB0aGUgdGl0bGUgdWkgZWxlbWVudC4gKFRoaXMgaXMg
b25seSBpbiB0aGUKICAgICAvLyBjYXNlIHdoZW4gdGhlIHRhYmxlIGlzIG5vdCBhcHBlYXJpbmcg
YXMgYW4gQVhUYWJsZS4pCi0gICAgaWYgKGlzVGFibGVDZWxsKCkgfHwgIWlzPFJlbmRlclRhYmxl
Q2VsbD4ocmVuZGVyZXIoKSkpCisgICAgaWYgKGlzRXhwb3NlZFRhYmxlQ2VsbCgpIHx8ICFpczxS
ZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIC8vIFRhYmxlIGNlbGxzIHRoYXQgYXJlIHRoIGNhbm5vdCBoYXZlIHRpdGxlIHVpIGVsZW1l
bnRzLCBzaW5jZSBieSBkZWZpbml0aW9uCkBAIC00MTgsMTAgKzQwMiw5IEBAIGludCBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpheENvbHVtbkluZGV4KCkgY29uc3QKICAgICAvLyAiQVJJQSAxLjE6
IElmIHRoZSBzZXQgb2YgY29sdW1ucyB3aGljaCBpcyBwcmVzZW50IGluIHRoZSBET00gaXMgY29u
dGlndW91cywgYW5kIGlmIHRoZXJlIGFyZSBubyBjZWxscyB3aGljaCBzcGFuIG1vcmUgdGhhbiBv
bmUgcm93CiAgICAgLy8gb3IgY29sdW1uIGluIHRoYXQgc2V0LCB0aGVuIGF1dGhvcnMgbWF5IHBs
YWNlIGFyaWEtY29saW5kZXggb24gZWFjaCByb3csIHNldHRpbmcgdGhlIHZhbHVlIHRvIHRoZSBp
bmRleCBvZiB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZSBzZXQuIgogICAgIC8vIEhlcmUsIHdlIGxl
dCBpdHMgcGFyZW50IHJvdyB0byBzZXQgaXRzIGluZGV4IGJlZm9yZWhhbmQsIHNvIHdlIGRvbid0
IGhhdmUgdG8gZ28gdGhyb3VnaCB0aGUgc2libGluZ3MgdG8gY2FsY3VsYXRlIHRoZSBpbmRleC4K
LSAgICBBY2Nlc3NpYmlsaXR5VGFibGVSb3cqIHBhcmVudFJvdyA9IHRoaXMtPnBhcmVudFJvdygp
OwotICAgIGlmIChwYXJlbnRSb3cgJiYgbV9heENvbEluZGV4RnJvbVJvdyAhPSAtMSkKKyAgICBp
ZiAobV9heENvbEluZGV4RnJvbVJvdyAhPSAtMSAmJiBwYXJlbnRSb3coKSkKICAgICAgICAgcmV0
dXJuIG1fYXhDb2xJbmRleEZyb21Sb3c7Ci0gICAgCisKICAgICByZXR1cm4gLTE7CiB9CiAgICAg
CkBAIC00MzgsNiArNDIxLDMzIEBAIGludCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd0lu
ZGV4KCkgY29uc3QKICAgICByZXR1cm4gLTE7CiB9CiAKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OnJvd1NwYW4oKSBjb25zdAoreworICAgIC8vIEFjY29yZGluZyB0byB0aGUgQVJJ
QSBzcGVjLCAiSWYgYXJpYS1yb3dzcGFuIGlzIHVzZWQgb24gYW4gZWxlbWVudCBmb3Igd2hpY2gg
dGhlIGhvc3QgbGFuZ3VhZ2UKKyAgICAvLyBwcm92aWRlcyBhbiBlcXVpdmFsZW50IGF0dHJpYnV0
ZSwgdXNlciBhZ2VudHMgbXVzdCBpZ25vcmUgdGhlIHZhbHVlIG9mIGFyaWEtcm93c3Bhbi4iCisg
ICAgaWYgKGF1dG8gcm93U3BhbiA9IHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKHJvd3Nw
YW5BdHRyKSk7IHJvd1NwYW4gJiYgKnJvd1NwYW4gPj0gMSkgeworICAgICAgICAvLyBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS90YWJsZXMuaHRtbAorICAgICAgICAvLyBJ
ZiByb3dzcGFuIGlzIGdyZWF0ZXIgdGhhbiA2NTUzNCwgbGV0IGl0IGJlIDY1NTM0IGluc3RlYWQu
CisgICAgICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heCgqcm93U3BhbiwgMSksIDY1NTM0KTsK
KyAgICB9CisgICAgaWYgKGF1dG8gYXJpYVJvd1NwYW4gPSBwYXJzZUhUTUxJbnRlZ2VyKGdldEF0
dHJpYnV0ZShhcmlhX3Jvd3NwYW5BdHRyKSk7IGFyaWFSb3dTcGFuICYmICphcmlhUm93U3BhbiA+
PSAxKQorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgoKmFyaWFSb3dTcGFuLCAxKSwg
NjU1MzQpOworICAgIHJldHVybiAxOworfQorCit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsOjpjb2xTcGFuKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byBjb2xTcGFuID0gcGFyc2VIVE1M
SW50ZWdlcihnZXRBdHRyaWJ1dGUoY29sc3BhbkF0dHIpKTsgY29sU3BhbiAmJiAqY29sU3BhbiA+
PSAxKSB7CisgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L3RhYmxlcy5odG1sCisgICAgICAgIC8vIElmIGNvbHNwYW4gaXMgZ3JlYXRlciB0aGFuIDEwMDAs
IGxldCBpdCBiZSAxMDAwIGluc3RlYWQuCisgICAgICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6Om1h
eCgqY29sU3BhbiwgMSksIDEwMDApOworICAgIH0KKyAgICBpZiAoYXV0byBhcmlhQ29sU3BhbiA9
IHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRlKGFyaWFfY29sc3BhbkF0dHIpKTsgYXJpYUNv
bFNwYW4gJiYgKmFyaWFDb2xTcGFuID49IDEpCisgICAgICAgIHJldHVybiBzdGQ6Om1pbihzdGQ6
Om1heCgqYXJpYUNvbFNwYW4sIDEpLCAxMDAwKTsKKyAgICByZXR1cm4gMTsKK30KKworI2lmIFVT
RShBVFNQSSkKIGludCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheENvbHVtblNwYW4oKSBjb25z
dAogewogICAgIC8vIEFjY29yZGluZyB0byB0aGUgQVJJQSBzcGVjLCAiSWYgYXJpYS1jb2xwYW4g
aXMgdXNlZCBvbiBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgaG9zdCBsYW5ndWFnZQpAQCAtNDY4
LDUgKzQ3OCw2IEBAIGludCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd1NwYW4oKSBjb25z
dAogCiAgICAgcmV0dXJuIC0xOwogfQotICAgIAorI2VuZGlmIC8vIFVTRShBVFNQSSkKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaAppbmRleCBmNDBiODJkYzE0YTIuLjg2MjUyYWI3
OWIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVDZWxsLmgKQEAgLTM4LDM3ICszOCw1MCBAQCBjbGFzcyBBY2Nlc3NpYmlsaXR5
VGFibGVSb3c7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsIDogcHVibGljIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0
eVRhYmxlQ2VsbD4gY3JlYXRlKFJlbmRlck9iamVjdCopOworICAgIHN0YXRpYyBSZWY8QWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbD4gY3JlYXRlKE5vZGUmKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmls
aXR5VGFibGVDZWxsKCk7CisgICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBmaW5hbDsKKyAgICBi
b29sIGlzRXhwb3NlZFRhYmxlQ2VsbCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNUYWJsZUhl
YWRlckNlbGwoKSBjb25zdDsKICAgICBib29sIGlzQ29sdW1uSGVhZGVyQ2VsbCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgaXNSb3dIZWFkZXJDZWxsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZSogcGFyZW50VGFibGUoKSBjb25zdDsKKwogICAg
IC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0aGUgY2VsbC4K
LSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5kZXhSYW5n
ZSgpIGNvbnN0IGZpbmFsOwogICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9uIGFuZCBj
b2x1bW4gc3BhbiBvZiB0aGUgY2VsbC4KLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PiBjb2x1bW5JbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gY29sdW1uSW5kZXhSYW5nZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbkhlYWRlcnMoKSBvdmVycmlkZTsKICAgICBB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93SGVhZGVycygpIG92ZXJyaWRlOwogCiAgICAg
aW50IGF4Q29sdW1uSW5kZXgoKSBjb25zdCBvdmVycmlkZTsKICAgICBpbnQgYXhSb3dJbmRleCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGNvbFNwYW4oKSBjb25zdDsKKyAgICB1bnNp
Z25lZCByb3dTcGFuKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBWENvbEluZGV4RnJvbVJvdyhpbnQg
aW5kZXgpIHsgbV9heENvbEluZGV4RnJvbVJvdyA9IGluZGV4OyB9CisKKyAgICB2b2lkIHNldFJv
d0luZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fcm93SW5kZXggPSBpbmRleDsgfQorICAgIHZvaWQg
c2V0Q29sdW1uSW5kZXgodW5zaWduZWQgaW5kZXgpIHsgbV9jb2x1bW5JbmRleCA9IGluZGV4OyB9
CisKKyNpZiBVU0UoQVRTUEkpCiAgICAgaW50IGF4Q29sdW1uU3BhbigpIGNvbnN0OwogICAgIGlu
dCBheFJvd1NwYW4oKSBjb25zdDsKLSAgICB2b2lkIHNldEFYQ29sSW5kZXhGcm9tUm93KGludCBp
bmRleCkgeyBtX2F4Q29sSW5kZXhGcm9tUm93ID0gaW5kZXg7IH0KKyNlbmRpZgogCiBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChSZW5kZXJPYmplY3QqKTsK
KyAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKE5vZGUmKTsKIAogICAgIEFjY2Vz
c2liaWxpdHlUYWJsZVJvdyogcGFyZW50Um93KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5VGFibGUqIHBhcmVudFRhYmxlKCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUg
ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBmaW5hbDsKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGludCBt
X3Jvd0luZGV4OwotICAgIGludCBtX2F4Q29sSW5kZXhGcm9tUm93OworICAgIHVuc2lnbmVkIG1f
cm93SW5kZXggeyAwIH07CisgICAgdW5zaWduZWQgbV9jb2x1bW5JbmRleCB7IDAgfTsKKyAgICBp
bnQgbV9heENvbEluZGV4RnJvbVJvdyB7IC0xIH07CiAKIHByaXZhdGU6CiAgICAgLy8gSWYgYSB0
YWJsZSBjZWxsIGlzIG5vdCBleHBvc2VkIGFzIGEgdGFibGUgY2VsbCwgYSBUSCBlbGVtZW50IGNh
biBzZXJ2ZSBhcyBpdHMgdGl0bGUgVUkgZWxlbWVudC4KQEAgLTc4LDYgKzkxLDcgQEAgcHJpdmF0
ZToKICAgICBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBib29s
IHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBBY2Nlc3NpYmls
aXR5VGFibGVSb3cqIGFyaWFPd25lZEJ5UGFyZW50KCkgY29uc3Q7CisgICAgdm9pZCBlbnN1cmVJ
bmRleGVzVXBUb0RhdGUoKSBjb25zdDsKIAogICAgIGJvb2wgaXNUYWJsZUNlbGxJblNhbWVSb3dH
cm91cChBWENvcmVPYmplY3QqKTsKICAgICBib29sIGlzVGFibGVDZWxsSW5TYW1lQ29sR3JvdXAo
QVhDb3JlT2JqZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKaW5kZXggYWM0MmFkMzA0YjBkLi42ODZi
MzY1ZDI5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAKQEAgLTI5LDE3ICsyOSw5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgiCiAKLSNp
bmNsdWRlICJBWE9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bC5oIgotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0j
aW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKLSNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKLSNp
bmNsdWRlICJSZW5kZXJUYWJsZVNlY3Rpb24uaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFi
bGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAogQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpBY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW4oKSA9IGRlZmF1bHQ7CiAKQEAgLTcxLDEwMiArNjMsMTcgQEAgTGF5b3V0UmVjdCBBY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW46OmVsZW1lbnRSZWN0KCkgY29uc3QKIAogQVhDb3JlT2JqZWN0KiBB
Y2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmNvbHVtbkhlYWRlcigpCiB7Ci0gICAgaWYgKCFtX3Bh
cmVudCB8fCAhaXM8QWNjZXNzaWJpbGl0eVRhYmxlPigqbV9wYXJlbnQpCi0gICAgICAgIHx8ICFt
X3BhcmVudC0+aXNFeHBvc2FibGUoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9wYXJlbnQtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFy
ZW5kZXJlcikKKyAgICBhdXRvKiBwYXJlbnRUYWJsZSA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGU+KG1fcGFyZW50LmdldCgpKTsKKyAgICBpZiAoIXBhcmVudFRhYmxlIHx8ICFw
YXJlbnRUYWJsZS0+aXNFeHBvc2FibGUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBhdXRvJiBwYXJlbnRUYWJsZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFy
ZW50KTsKLQotICAgIGlmIChwYXJlbnRUYWJsZS5pc0FyaWFUYWJsZSgpKSB7Ci0gICAgICAgIGZv
ciAoY29uc3QgYXV0byYgY2VsbCA6IGNoaWxkcmVuKCkpIHsKLSAgICAgICAgICAgIGlmIChjZWxs
LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVhZGVyKQotICAgICAg
ICAgICAgICAgIHJldHVybiBjZWxsLmdldCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgZm9yIChjb25zdCBhdXRvJiBjZWxsIDogY2hpbGRyZW4oKSkgeworICAg
ICAgICBpZiAoY2VsbC0+cm9sZVZhbHVlKCkgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhl
YWRlcikKKyAgICAgICAgICAgIHJldHVybiBjZWxsLmdldCgpOwogICAgIH0KLQotICAgIGlmICgh
aXM8UmVuZGVyVGFibGU+KCpyZW5kZXJlcikpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IAotICAgIFJlbmRlclRhYmxlJiB0YWJsZSA9IGRvd25jYXN0PFJlbmRlclRhYmxlPigqcmVuZGVy
ZXIpOwotCi0gICAgLy8gdHJ5IHRoZSA8dGhlYWQ+IHNlY3Rpb24gZmlyc3QuIHRoaXMgZG9lc24n
dCByZXF1aXJlIHRoIHRhZ3MKLSAgICBpZiAoYXV0byogaGVhZGVyT2JqZWN0ID0gaGVhZGVyT2Jq
ZWN0Rm9yU2VjdGlvbih0YWJsZS5oZWFkZXIoKSwgZmFsc2UpKQotICAgICAgICByZXR1cm4gaGVh
ZGVyT2JqZWN0OwotICAgIAotICAgIFJlbmRlclRhYmxlU2VjdGlvbiogYm9keVNlY3Rpb24gPSB0
YWJsZS5maXJzdEJvZHkoKTsKLSAgICB3aGlsZSAoYm9keVNlY3Rpb24gJiYgYm9keVNlY3Rpb24t
PmlzQW5vbnltb3VzKCkpCi0gICAgICAgIGJvZHlTZWN0aW9uID0gdGFibGUuc2VjdGlvbkJlbG93
KGJvZHlTZWN0aW9uLCBTa2lwRW1wdHlTZWN0aW9ucyk7Ci0gICAgCi0gICAgLy8gbm93IHRyeSBm
b3IgPHRoPiB0YWdzIGluIHRoZSBmaXJzdCBib2R5LiBJZiB0aGUgZmlyc3QgYm9keSBpcyAKLSAg
ICByZXR1cm4gaGVhZGVyT2JqZWN0Rm9yU2VjdGlvbihib2R5U2VjdGlvbiwgdHJ1ZSk7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlU
YWJsZUNvbHVtbjo6aGVhZGVyT2JqZWN0Rm9yU2VjdGlvbihSZW5kZXJUYWJsZVNlY3Rpb24qIHNl
Y3Rpb24sIGJvb2wgdGhUYWdSZXF1aXJlZCkKLXsKLSAgICBpZiAoIXNlY3Rpb24pCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIAotICAgIHVuc2lnbmVkIG51bUNvbHMgPSBzZWN0aW9uLT5u
dW1Db2x1bW5zKCk7Ci0gICAgaWYgKG1fY29sdW1uSW5kZXggPj0gbnVtQ29scykKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgaWYgKCFzZWN0aW9uLT5udW1Sb3dzKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIFJlbmRlclRhYmxlQ2VsbCogY2VsbCA9IG51
bGxwdHI7Ci0gICAgLy8gYWxzbyBhY2NvdW50IGZvciBjZWxscyB0aGF0IGhhdmUgYSBzcGFuCi0g
ICAgZm9yIChpbnQgdGVzdENvbCA9IG1fY29sdW1uSW5kZXg7IHRlc3RDb2wgPj0gMDsgLS10ZXN0
Q29sKSB7Ci0gICAgICAgIAotICAgICAgICAvLyBSdW4gZG93biB0aGUgcm93cyBpbiBjYXNlIGlu
aXRpYWwgcm93cyBhcmUgaW52YWxpZCAobGlrZSB3aGVuIGEgPGNhcHRpb24+IGlzIHVzZWQpLgot
ICAgICAgICB1bnNpZ25lZCByb3dDb3VudCA9IHNlY3Rpb24tPm51bVJvd3MoKTsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCB0ZXN0Um93ID0gMDsgdGVzdFJvdyA8IHJvd0NvdW50OyB0ZXN0Um93Kysp
IHsKLSAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCogdGVzdENlbGwgPSBzZWN0aW9uLT5wcmlt
YXJ5Q2VsbEF0KHRlc3RSb3csIHRlc3RDb2wpOwotICAgICAgICAgICAgLy8gTm8gY2VsbCBhdCB0
aGlzIGluZGV4LCBrZWVwIGNoZWNraW5nIG1vcmUgcm93cyBhbmQgY29sdW1ucy4KLSAgICAgICAg
ICAgIGlmICghdGVzdENlbGwpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIC8vIElmIHdlJ3ZlIHJlYWNoZWQgYSBjZWxsIHRoYXQgZG9lc24ndCBl
dmVuIG92ZXJsYXAgb3VyIGNvbHVtbiBpdCBjYW4ndCBiZSB0aGUgaGVhZGVyLgotICAgICAgICAg
ICAgaWYgKCh0ZXN0Q2VsbC0+Y29sKCkgKyAodGVzdENlbGwtPmNvbFNwYW4oKS0xKSkgPCBtX2Nv
bHVtbkluZGV4KQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBOb2RlKiB0ZXN0Q2VsbE5vZGUgPSB0ZXN0Q2VsbC0+ZWxlbWVudCgpOwotICAgICAgICAg
ICAgLy8gSWYgdGhlIFJlbmRlclRhYmxlQ2VsbCBkb2Vzbid0IGhhdmUgYW4gZWxlbWVudCBiZWNh
dXNlIGl0cyBhbm9ueW1vdXMsCi0gICAgICAgICAgICAvLyB0cnkgdG8gc2VlIGlmIHdlIGNhbiBm
aW5kIHRoZSBvcmlnaW5hbCBjZWxsIGVsZW1lbnQgdG8gY2hlY2sgaWYgaXQgaGFzIGEgPHRoPiB0
YWcuCi0gICAgICAgICAgICBpZiAoIXRlc3RDZWxsTm9kZSAmJiB0ZXN0Q2VsbC0+aXNBbm9ueW1v
dXMoKSkgewotICAgICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0gdGVz
dENlbGwtPnBhcmVudCgpID8gdGVzdENlbGwtPnBhcmVudCgpLT5lbGVtZW50KCkgOiBudWxscHRy
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRFbGVtZW50LT5oYXNUYWdOYW1lKHRy
VGFnKSAmJiB0ZXN0Q29sIDwgc3RhdGljX2Nhc3Q8aW50PihwYXJlbnRFbGVtZW50LT5jb3VudENo
aWxkTm9kZXMoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q2VsbE5vZGUgPSBwYXJl
bnRFbGVtZW50LT50cmF2ZXJzZVRvQ2hpbGRBdCh0ZXN0Q29sKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghdGVzdENlbGxOb2RlKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBJZiB0aCBp
cyByZXF1aXJlZCwgYnV0IHdlIGZvdW5kIGFuIGVsZW1lbnQgdGhhdCBkb2Vzbid0IGhhdmUgYSB0
aCB0YWcsIHdlIGNhbiBzdG9wIGxvb2tpbmcuCi0gICAgICAgICAgICBpZiAodGhUYWdSZXF1aXJl
ZCAmJiAhdGVzdENlbGxOb2RlLT5oYXNUYWdOYW1lKHRoVGFnKSkKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY2VsbCA9IHRlc3RDZWxsOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKCFjZWxsKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8qIGNlbGxPYmplY3QgPSBheE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKGNlbGwpOwotICAgIGlmICghY2VsbE9iamVjdCB8fCBjZWxsT2Jq
ZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICAKLSAgICByZXR1cm4gY2VsbE9iamVjdDsKLX0KLSAgICAKIGJvb2wgQWNjZXNzaWJp
bGl0eVRhYmxlQ29sdW1uOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3BhcmVudCkKQEAgLTE4MiwyMiArODksMTggQEAgYm9vbCBBY2Nlc3NpYmls
aXR5VGFibGVDb2x1bW46OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHZv
aWQgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjphZGRDaGlsZHJlbigpCiB7CiAgICAgQVNTRVJU
KCFtX2NoaWxkcmVuSW5pdGlhbGl6ZWQpOyAKLSAgICAKICAgICBtX2NoaWxkcmVuSW5pdGlhbGl6
ZWQgPSB0cnVlOwotICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlPihtX3BhcmVudCkpCi0g
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHBhcmVudFRhYmxlID0gZG93bmNhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlPigqbV9wYXJlbnQpOwotICAgIGlmICghcGFyZW50VGFibGUuaXNFeHBvc2Fi
bGUoKSkKKyAgICBhdXRvKiBwYXJlbnRUYWJsZSA9IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGU+KG1fcGFyZW50LmdldCgpKTsKKyAgICBpZiAoIXBhcmVudFRhYmxlIHx8ICFwYXJl
bnRUYWJsZS0+aXNFeHBvc2FibGUoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGludCBu
dW1Sb3dzID0gcGFyZW50VGFibGUucm93Q291bnQoKTsKLSAgICAKKworICAgIGludCBudW1Sb3dz
ID0gcGFyZW50VGFibGUtPnJvd0NvdW50KCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1S
b3dzOyArK2kpIHsKLSAgICAgICAgYXV0byogY2VsbCA9IHBhcmVudFRhYmxlLmNlbGxGb3JDb2x1
bW5BbmRSb3cobV9jb2x1bW5JbmRleCwgaSk7CisgICAgICAgIGF1dG8qIGNlbGwgPSBwYXJlbnRU
YWJsZS0+Y2VsbEZvckNvbHVtbkFuZFJvdyhtX2NvbHVtbkluZGV4LCBpKTsKICAgICAgICAgaWYg
KCFjZWxsKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIG1h
a2Ugc3VyZSB0aGUgbGFzdCBvbmUgaXNuJ3QgdGhlIHNhbWUgYXMgdGhpcyBvbmUgKHJvd3NwYW4g
Y2VsbHMpCiAgICAgICAgIGlmIChtX2NoaWxkcmVuLnNpemUoKSA+IDAgJiYgbV9jaGlsZHJlbi5s
YXN0KCkgPT0gY2VsbCkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKaW5kZXgg
NmIxYWNjZDBmNTA2Li5iMDViMjkzOGU3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaApAQCAtMjksOCArMjks
NiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5o
IgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAtNTYsNyArNTQsNiBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbigpOwogICAgIAotICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdEZvclNlY3Rpb24oUmVuZGVyVGFibGVTZWN0aW9u
KiwgYm9vbCB0aFRhZ1JlcXVpcmVkKTsKICAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1RhYmxlQ29sdW1uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKaW5kZXggNWUzYmFiZTM2NmMy
Li4wYTNiYzM2MTJmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKQEAgLTI5LDI0ICsyOSwyNSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgogCi0jaW5j
bHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKLSNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGFi
bGVSb3cuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwotICAgIAorCiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OkFjY2Vzc2liaWxpdHlU
YWJsZVJvdyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIDogQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdChyZW5kZXJlcikKIHsKIH0KIAorQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpBY2Nlc3Np
YmlsaXR5VGFibGVSb3coTm9kZSYgbm9kZSkKKyAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Qobm9kZSkKK3sKK30KKwogQWNjZXNzaWJpbGl0eVRhYmxlUm93Ojp+QWNjZXNzaWJpbGl0eVRh
YmxlUm93KCkgPSBkZWZhdWx0OwogCiBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlUm93PiBBY2Nlc3Np
YmlsaXR5VGFibGVSb3c6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQpAQCAtNTQsNiAr
NTUsMTEgQEAgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4gQWNjZXNzaWJpbGl0eVRhYmxlUm93
OjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBBY2Nlc3NpYmlsaXR5VGFibGVSb3cocmVuZGVyZXIpKTsKIH0KIAorUmVmPEFjY2Vzc2liaWxp
dHlUYWJsZVJvdz4gQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVhdGUoTm9kZSYgbm9kZSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGFibGVSb3cobm9kZSkpOwor
fQorCiBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmRldGVybWluZUFj
Y2Vzc2liaWxpdHlSb2xlKCkKIHsKICAgICBpZiAoIWlzVGFibGVSb3coKSkKQEAgLTExMywxOSAr
MTE5LDE5IEBAIEFjY2Vzc2liaWxpdHlUYWJsZSogQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpwYXJl
bnRUYWJsZSgpIGNvbnN0CiBBWENvcmVPYmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVh
ZGVyT2JqZWN0KCkKIHsKICAgICBjb25zdCBhdXRvJiByb3dDaGlsZHJlbiA9IGNoaWxkcmVuKCk7
Ci0gICAgaWYgKCFyb3dDaGlsZHJlbi5zaXplKCkpCisgICAgaWYgKHJvd0NoaWxkcmVuLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgYXV0byogY2VsbCA9IHJv
d0NoaWxkcmVuWzBdLmdldCgpOwotICAgIGlmICghaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4o
Y2VsbCkgfHwgIWNlbGwtPm5vZGUoKSB8fCAhY2VsbC0+bm9kZSgpLT5oYXNUYWdOYW1lKHRoVGFn
KSkKKyAgICBhdXRvKiBmaXJzdENlbGwgPSByb3dDaGlsZHJlblswXS5nZXQoKTsKKyAgICBpZiAo
IWZpcnN0Q2VsbCB8fCAhZmlyc3RDZWxsLT5ub2RlKCkgfHwgIWZpcnN0Q2VsbC0+bm9kZSgpLT5o
YXNUYWdOYW1lKHRoVGFnKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCisKICAgICAv
LyBWZXJpZnkgdGhhdCB0aGUgcm93IGhlYWRlciBpcyBub3QgcGFydCBvZiBhbiBlbnRpcmUgcm93
IG9mIGhlYWRlcnMuCiAgICAgLy8gSW4gdGhhdCBjYXNlLCBpdCBpcyB1bmxpa2VseSB0aGlzIGlz
IGEgcm93IGhlYWRlci4KICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogcm93Q2hpbGRyZW4p
IHsKICAgICAgICAgLy8gV2UgZm91bmQgYSBub24taGVhZGVyIGNlbGwsIHNvIHRoaXMgaXMgbm90
IGFuIGVudGlyZSByb3cgb2YgaGVhZGVycyAtLSByZXR1cm4gdGhlIG9yaWdpbmFsIGhlYWRlciBj
ZWxsLgogICAgICAgICBpZiAoY2hpbGQtPm5vZGUoKSAmJiAhY2hpbGQtPm5vZGUoKS0+aGFzVGFn
TmFtZSh0aFRhZykpCi0gICAgICAgICAgICByZXR1cm4gY2VsbDsKKyAgICAgICAgICAgIHJldHVy
biBmaXJzdENlbGw7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKaW5kZXgg
OTUzNThjZjIyNmE0Li5lZGJkYWM3ODVkMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaApAQCAtMzcsNiArMzcsNyBAQCBj
bGFzcyBBY2Nlc3NpYmlsaXR5VGFibGU7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5VGFibGVSb3cgOiBw
dWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0
aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4gY3JlYXRlKE5vZGUmKTsKICAgICB2aXJ0dWFs
IH5BY2Nlc3NpYmlsaXR5VGFibGVSb3coKTsKIAogICAgIC8vIHJldHJpZXZlcyB0aGUgInJvdyIg
aGVhZGVyIChhIHRoIHRhZyBpbiB0aGUgcmlnaHRtb3N0IGNvbHVtbikKQEAgLTU3LDYgKzU4LDcg
QEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVRhYmxl
Um93KFJlbmRlck9iamVjdCopOworICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUYWJsZVJvdyhO
b2RlJik7CiAKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9s
ZSgpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwCmluZGV4
IDg1NWRhMGUzNzBmNy4uZDU1NjUzNTU2NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0c3BpLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RU
YWJsZUF0c3BpLmNwcApAQCAtOTIsNyArOTIsNyBAQCBHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nl
c3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNfdGFibGVGdW5jdGlvbnMgPSB7CiAgICAgICAgICAgICBh
dXRvIHJvdyA9IGF0c3BpT2JqZWN0LT5yb3dBdEluZGV4KGluZGV4KTsKICAgICAgICAgICAgIGF1
dG8gY29sdW1uID0gYXRzcGlPYmplY3QtPmNvbHVtbkF0SW5kZXgoaW5kZXgpOwogICAgICAgICAg
ICAgYXV0byogY2VsbCA9IGF0c3BpT2JqZWN0LT5tX2NvcmVPYmplY3QgPyBhdHNwaU9iamVjdC0+
bV9jb3JlT2JqZWN0LT5jZWxsRm9yQ29sdW1uQW5kUm93KCpjb2x1bW4sICpyb3cpIDogbnVsbHB0
cjsKLSAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52
b2NhdGlvbiwgZ192YXJpYW50X25ldygiKGJpaWlpYikiLCBjZWxsICYmIGNlbGwtPmlzVGFibGVD
ZWxsKCkgPyBUUlVFIDogRkFMU0UsCisgICAgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRp
b25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcoIihiaWlpaWIpIiwgY2Vs
bCAmJiBjZWxsLT5pc0V4cG9zZWRUYWJsZUNlbGwoKSA/IFRSVUUgOiBGQUxTRSwKICAgICAgICAg
ICAgICAgICByb3cudmFsdWVfb3IoLTEpLCBjb2x1bW4udmFsdWVfb3IoLTEpLCByb3cgJiYgY29s
dW1uID8gYXRzcGlPYmplY3QtPnJvd0V4dGVudCgqcm93LCAqY29sdW1uKSA6IC0xLAogICAgICAg
ICAgICAgICAgIHJvdyAmJiBjb2x1bW4gPyBhdHNwaU9iamVjdC0+Y29sdW1uRXh0ZW50KCpyb3cs
ICpjb2x1bW4pIDogLTEsIEZBTFNFKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMCht
ZXRob2ROYW1lLCAiR2V0U2VsZWN0ZWRSb3dzIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dFRhYmxlQ2VsbEF0c3BpLmNwcAppbmRleCBkNGE0NTJiNWNiMGMuLjEwYTJlZTM5YmI0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5
T2JqZWN0VGFibGVDZWxsQXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3BpLmNwcApAQCAtNjQsNyAr
NjQsNyBAQCBHREJ1c0ludGVyZmFjZVZUYWJsZSBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnNf
dGFibGVDZWxsRnVuY3Rpb25zID0gewogICAgICAgICAgICAgcmV0dXJuIGdfdmFyaWFudF9uZXdf
aW50MzIoYXRzcGlPYmplY3QtPnJvd1NwYW4oKSk7CiAgICAgICAgIGlmICghZ19zdHJjbXAwKHBy
b3BlcnR5TmFtZSwgIlRhYmxlIikpIHsKICAgICAgICAgICAgIGF1dG8qIGF4T2JqZWN0ID0gYXRz
cGlPYmplY3QtPm1fY29yZU9iamVjdDsKLSAgICAgICAgICAgIGlmICghYXhPYmplY3QgfHwgIWF4
T2JqZWN0LT5pc1RhYmxlQ2VsbCgpKQorICAgICAgICAgICAgaWYgKCFheE9iamVjdCB8fCAhYXhP
YmplY3QtPmlzRXhwb3NlZFRhYmxlQ2VsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLm51bGxSZWZlcmVuY2UoKTsKIAogICAgICAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpKiB3cmFwcGVyID0gYXRzcGlPYmplY3QucHRyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGZhZDkxMWU2NjJi
NS4uOWNkNDBkOWZmOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTI4Niw3ICsxMjg2LDcgQEAgLSAoQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCopdGFibGVD
ZWxsUGFyZW50CiB7CiAgICAgLy8gRmluZCBpZiB0aGlzIGVsZW1lbnQgaXMgaW4gYSB0YWJsZSBj
ZWxsLgogICAgIGlmIChBWENvcmVPYmplY3QqIHBhcmVudCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRB
bmNlc3RvcjxBWENvcmVPYmplY3Q+KCpzZWxmLmF4QmFja2luZ09iamVjdCwgdHJ1ZSwgW10gKGNv
bnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0KSB7Ci0gICAgICAgIHJldHVybiBvYmplY3QuaXNUYWJs
ZUNlbGwoKTsKKyAgICAgICAgcmV0dXJuIG9iamVjdC5pc0V4cG9zZWRUYWJsZUNlbGwoKTsKICAg
ICB9KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwq
PihwYXJlbnQpOwogICAgIHJldHVybiBuaWw7CkBAIC0xMzQ3LDcgKzEzNDcsNyBAQCAtIChOU0Fy
cmF5ICopYWNjZXNzaWJpbGl0eUhlYWRlckVsZW1lbnRzCiAgICAgLy8gV2Ugc2hvdWxkIGNvbnNp
ZGVyIHRoZSBjYXNlcyB3aGVyZSB0aGUgcm93IG51bWJlciBkb2VzIE5PVCBtYXRjaCB0aGUgaW5k
ZXggaW4KICAgICAvLyByb3dIZWFkZXJzLCB0aGUgbW9zdCBjb21tb24gY2FzZSBpcyB3aGVuIHJv
dzAvY29sMCBkb2VzIG5vdCBoYXZlIGEgaGVhZGVyLgogICAgIGZvciAoY29uc3QgYXV0byYgcm93
SGVhZGVyIDogcm93SGVhZGVycykgewotICAgICAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGw+KCpyb3dIZWFkZXIpKQorICAgICAgICBpZiAoIXJvd0hlYWRlci0+aXNFeHBvc2VkVGFi
bGVDZWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgYXV0byByb3dIZWFkZXJSYW5n
ZSA9IHJvd0hlYWRlci0+cm93SW5kZXhSYW5nZSgpOwogICAgICAgICBpZiAocm93UmFuZ2VJbmRl
eCA+PSByb3dIZWFkZXJSYW5nZS5maXJzdCAmJiByb3dSYW5nZUluZGV4IDwgcm93SGVhZGVyUmFu
Z2UuZmlyc3QgKyByb3dIZWFkZXJSYW5nZS5zZWNvbmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5jcHAKaW5kZXggNDY1ZDRlYmExMTU2Li5hMzRhZDk1MGFmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuY3BwCkBAIC0xOTcsMTcgKzE5NywxNiBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhP
YgogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNTZWxlY3RlZFJv
d3MsIG9iamVjdC5zdXBwb3J0c1NlbGVjdGVkUm93cygpKTsKICAgICAgICAgc2V0T2JqZWN0VmVj
dG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbnMsIG9iamVjdC5jb2x1bW5zKCkpOwog
ICAgICAgICBzZXRPYmplY3RWZWN0b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Um93cywgb2Jq
ZWN0LnJvd3MoKSk7Ci0gICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDb2x1bW5D
b3VudCwgb2JqZWN0LmNvbHVtbkNvdW50KCkpOwotICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZTo6Um93Q291bnQsIG9iamVjdC5yb3dDb3VudCgpKTsKICAgICAgICAgc2V0T2JqZWN0
VmVjdG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNlbGxzLCBvYmplY3QuY2VsbHMoKSk7CiAg
ICAgICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpWaXNpYmxlUm93
cywgb2JqZWN0LnZpc2libGVSb3dzKCkpOwogICAgICAgICBzZXRPYmplY3RQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6SGVhZGVyQ29udGFpbmVyLCBvYmplY3QuaGVhZGVyQ29udGFpbmVyKCkpOwog
ICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVhDb2x1bW5Db3VudCwgb2JqZWN0
LmF4Q29sdW1uQ291bnQoKSk7CiAgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpB
WFJvd0NvdW50LCBvYmplY3QuYXhSb3dDb3VudCgpKTsKKyAgICAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkNlbGxTbG90cywgb2JqZWN0LmNlbGxTbG90cygpKTsKICAgICB9CiAKLSAg
ICBpZiAob2JqZWN0LmlzVGFibGVDZWxsKCkpIHsKLSAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9w
ZXJ0eU5hbWU6OklzVGFibGVDZWxsLCB0cnVlKTsKKyAgICBpZiAob2JqZWN0LmlzRXhwb3NlZFRh
YmxlQ2VsbCgpKSB7CisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc0V4cG9z
ZWRUYWJsZUNlbGwsIHRydWUpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
Q29sdW1uSW5kZXhSYW5nZSwgb2JqZWN0LmNvbHVtbkluZGV4UmFuZ2UoKSk7CiAgICAgICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpSb3dJbmRleFJhbmdlLCBvYmplY3Qucm93SW5kZXhS
YW5nZSgpKTsKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkFYQ29sdW1uSW5k
ZXgsIG9iamVjdC5heENvbHVtbkluZGV4KCkpOwpAQCAtNDkxLDE1ICs0OTAsMjAgQEAgYm9vbCBB
WElzb2xhdGVkT2JqZWN0Ojppc0RldGFjaGVkRnJvbVBhcmVudCgpCiAKIEFYQ29yZU9iamVjdCog
QVhJc29sYXRlZE9iamVjdDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2x1bW5JbmRl
eCwgdW5zaWduZWQgcm93SW5kZXgpCiB7Ci0gICAgQVhJRCBjZWxsSUQgPSBBY2Nlc3NpYmlsaXR5
OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8QVhJRD4oWyZjb2x1bW5JbmRleCwgJnJvd0lu
ZGV4LCB0aGlzXSAoKSAtPiBBWElEIHsKLSAgICAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGFzc29j
aWF0ZWRBWE9iamVjdCgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBjZWxsID0gb2JqZWN0LT5j
ZWxsRm9yQ29sdW1uQW5kUm93KGNvbHVtbkluZGV4LCByb3dJbmRleCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGNlbGwtPm9iamVjdElEKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHsg
fTsKLSAgICB9KTsKLQotICAgIHJldHVybiB0cmVlKCktPm9iamVjdEZvcklEKGNlbGxJRCkuZ2V0
KCk7CisgICAgLy8gQVhQcm9wZXJ0eU5hbWU6OkNlbGxTbG90cyBjYW4gYmUgYmlnLCBzbyBtYWtl
IHN1cmUgbm90IHRvIGNvcHkgaXQuCisgICAgYXV0byBjZWxsU2xvdHNJdGVyYXRvciA9IG1fcHJv
cGVydHlNYXAuZmluZChBWFByb3BlcnR5TmFtZTo6Q2VsbFNsb3RzKTsKKyAgICBpZiAoY2VsbFNs
b3RzSXRlcmF0b3IgPT0gbV9wcm9wZXJ0eU1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBBWElEIGNlbGxJRCA9IFdURjo6c3dpdGNoT24oY2VsbFNsb3RzSXRlcmF0b3It
PnZhbHVlLAorICAgICAgICBbJl0gKFZlY3RvcjxWZWN0b3I8QVhJRD4+JiBjZWxsU2xvdHMpIHsK
KyAgICAgICAgICAgIGlmIChyb3dJbmRleCA+PSBjZWxsU2xvdHMuc2l6ZSgpIHx8IGNvbHVtbklu
ZGV4ID49IGNlbGxTbG90c1tyb3dJbmRleF0uc2l6ZSgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBBWElEKCk7CisgICAgICAgICAgICByZXR1cm4gY2VsbFNsb3RzW3Jvd0luZGV4XVtjb2x1bW5J
bmRleF07CisgICAgICAgIH0sCisgICAgICAgIFtdIChhdXRvJikgeyByZXR1cm4gQVhJRCgpOyB9
CisgICAgKTsKKyAgICByZXR1cm4gY2VsbElEID8gdHJlZSgpLT5vYmplY3RGb3JJRChjZWxsSUQp
LmdldCgpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBBWElzb2xhdGVkT2JqZWN0OjphY2Nlc3NpYmls
aXR5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0cykgY29uc3QKQEAgLTE2NTQs
NiArMTY1OCwxMiBAQCBib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzTW9kYWxOb2RlKCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNUYWJsZUNl
bGwoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogQVhDb3JlT2JqZWN0KiBBWElzb2xhdGVkT2JqZWN0OjplbGVtZW50QWNjZXNzaWJp
bGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdAogewogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGVlZWI2ZDIyZmM3MC4uYzc5Yzgw
MGZiMmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC0xMzksMTAgKzEzOSwxMCBAQCBw
cml2YXRlOgogICAgIEFYSXNvbGF0ZWRPYmplY3QqIGV4cG9zZWRUYWJsZUFuY2VzdG9yKGJvb2wg
aW5jbHVkZVNlbGYgPSBmYWxzZSkgY29uc3QgZmluYWwgeyByZXR1cm4gQWNjZXNzaWJpbGl0eTo6
ZXhwb3NlZFRhYmxlQW5jZXN0b3IoKnRoaXMsIGluY2x1ZGVTZWxmKTsgfQogICAgIGludCB0YWJs
ZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaW50QXR0cmlidXRlVmFsdWUoQVhQcm9w
ZXJ0eU5hbWU6OlRhYmxlTGV2ZWwpOyB9CiAgICAgYm9vbCBzdXBwb3J0c1NlbGVjdGVkUm93cygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6U3VwcG9ydHNTZWxlY3RlZFJvd3MpOyB9Ci0gICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGNvbHVtbnMoKSBvdmVycmlkZSB7IHJldHVybiB0cmVlKCktPm9iamVjdHNGb3JJRHModmVj
dG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbnMpKTsgfQotICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJl
ZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlO
YW1lOjpSb3dzKSk7IH0KLSAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCgpIG92ZXJyaWRlIHsgcmV0
dXJuIHVuc2lnbmVkQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbkNvdW50KTsg
fQotICAgIHVuc2lnbmVkIHJvd0NvdW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gdW5zaWduZWRBdHRy
aWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6Um93Q291bnQpOyB9CisgICAgQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGNvbHVtbnMoKSBmaW5hbCB7IHJldHVybiB0cmVlKCktPm9iamVjdHNG
b3JJRHModmVjdG9yQXR0cmlidXRlVmFsdWU8QVhJRD4oQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbnMp
KTsgfQorICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dzKCkgZmluYWwgeyByZXR1
cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFYSUQ+KEFYUHJv
cGVydHlOYW1lOjpSb3dzKSk7IH0KKyAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCgpIGZpbmFsIHsg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2x1bW5zKCkuc2l6ZSgpKTsgfQorICAgIHVu
c2lnbmVkIHJvd0NvdW50KCkgZmluYWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJv
d3MoKS5zaXplKCkpOyB9CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNlbGxzKCkg
b3ZlcnJpZGUgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZh
bHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpDZWxscykpOyB9CiAgICAgQVhDb3JlT2JqZWN0KiBj
ZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkLCB1bnNpZ25lZCkgb3ZlcnJpZGU7CiAgICAgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbHVtbkhlYWRlcnMoKSBvdmVycmlkZTsKQEAgLTE1
Myw3ICsxNTMsOCBAQCBwcml2YXRlOgogICAgIGludCBheFJvd0NvdW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gaW50QXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OkFYUm93Q291bnQp
OyB9CiAKICAgICAvLyBUYWJsZSBjZWxsIHN1cHBvcnQuCi0gICAgYm9vbCBpc1RhYmxlQ2VsbCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6SXNUYWJsZUNlbGwpOyB9CisgICAgYm9vbCBpc1RhYmxlQ2VsbCgpIGNvbnN0IGZpbmFsOwor
ICAgIGJvb2wgaXNFeHBvc2VkVGFibGVDZWxsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbEF0
dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0V4cG9zZWRUYWJsZUNlbGwpOyB9CiAgICAg
Ly8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRoZSBjZWxsLgog
ICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd0luZGV4UmFuZ2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBwYWlyQXR0cmlidXRlVmFsdWU8dW5zaWduZWQ+KEFYUHJvcGVydHlO
YW1lOjpSb3dJbmRleFJhbmdlKTsgfQogICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0IGxvY2F0aW9u
IGFuZCBjb2x1bW4gc3BhbiBvZiB0aGUgY2VsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRl
eCBiYzg1OTUyY2IyY2EuLjE2MDkwMTQwOThlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApA
QCAtNTE0LDYgKzUxNCw5IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVQcm9wZXJ0
aWVzKEFYQ29yZU9iamVjdCYgYXhPYmplY3QsIGNvbnN0IFZlY3RvcjxBCiAgICAgICAgIGNhc2Ug
QVhQcm9wZXJ0eU5hbWU6OkNhblNldFZhbHVlQXR0cmlidXRlOgogICAgICAgICAgICAgcHJvcGVy
dHlNYXAuc2V0KEFYUHJvcGVydHlOYW1lOjpDYW5TZXRWYWx1ZUF0dHJpYnV0ZSwgYXhPYmplY3Qu
Y2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBBWFByb3BlcnR5TmFtZTo6Q2VsbFNsb3RzOgorICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0
KEFYUHJvcGVydHlOYW1lOjpDZWxsU2xvdHMsIGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5
T2JqZWN0PihheE9iamVjdCktPmNlbGxTbG90cygpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpDdXJyZW50U3RhdGU6CiAgICAgICAgICAgICBwcm9w
ZXJ0eU1hcC5zZXQoQVhQcm9wZXJ0eU5hbWU6OkN1cnJlbnRTdGF0ZSwgc3RhdGljX2Nhc3Q8aW50
PihheE9iamVjdC5jdXJyZW50U3RhdGUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02MDgs
OCArNjExLDI0IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGVBbmREZXBlbmRlbnRQ
cm9wZXJ0aWVzKEFjY2Vzc2liaWxpdHlPYmplY3QmIGF4T2JqCiAKICAgICB1cGRhdGVOb2RlKGF4
T2JqZWN0KTsKIAotICAgIGlmIChhdXRvKiB0cmVlQW5jZXN0b3IgPSBBY2Nlc3NpYmlsaXR5Ojpm
aW5kQW5jZXN0b3IoYXhPYmplY3QsIHRydWUsIFtdIChjb25zdCBhdXRvJiBvYmplY3QpIHsgcmV0
dXJuIG9iamVjdC5pc1RyZWUoKTsgfSkpCi0gICAgICAgIHVwZGF0ZU5vZGVQcm9wZXJ0eSgqdHJl
ZUFuY2VzdG9yLCBBWFByb3BlcnR5TmFtZTo6QVJJQVRyZWVSb3dzKTsKKyAgICAvLyBXaGVuIGEg
cm93IGdhaW5zIG9yIGxvc2VzIGNlbGxzLCB0aGUgY29sdW1uIGNvdW50IG9mIHRoZSB0YWJsZSBj
YW4gY2hhbmdlLgorICAgIGJvb2wgdXBkYXRlVGFibGVBbmNlc3RvckNvbHVtbnMgPSBpczxBY2Nl
c3NpYmlsaXR5VGFibGVSb3c+KGF4T2JqZWN0KTsKKyAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0g
YXhPYmplY3QucGFyZW50T2JqZWN0KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5w
YXJlbnRPYmplY3QoKSkgeworICAgICAgICBpZiAoYW5jZXN0b3ItPmlzVHJlZSgpKSB7CisgICAg
ICAgICAgICB1cGRhdGVOb2RlUHJvcGVydHkoKmFuY2VzdG9yLCBBWFByb3BlcnR5TmFtZTo6QVJJ
QVRyZWVSb3dzKTsKKyAgICAgICAgICAgIGlmICghdXBkYXRlVGFibGVBbmNlc3RvckNvbHVtbnMp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAodXBkYXRl
VGFibGVBbmNlc3RvckNvbHVtbnMgJiYgYW5jZXN0b3ItPmlzQWNjZXNzaWJpbGl0eVRhYmxlSW5z
dGFuY2UoKSkgeworICAgICAgICAgICAgLy8gT25seSBgdXBkYXRlQ2hpbGRyZW5gIGlmIHRoZSB0
YWJsZSBpcyB1bmlnbm9yZWQsIGJlY2F1c2Ugb3RoZXJ3aXNlIGB1cGRhdGVDaGlsZHJlbmAgd2ls
bCBhc2NlbmQgYW5kIHVwZGF0ZSB0aGUgbmV4dCBoaWdoZXN0IHVuaWdub3JlZCBhbmNlc3Rvciwg
d2hpY2ggZG9lc24ndCBhY2NvbXBsaXNoIG91ciBnb2FsIG9mIHVwZGF0aW5nIHRhYmxlIGNvbHVt
bnMuCisgICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIFVzZSBgdXBkYXRlQ2hpbGRy
ZW5gIHJhdGhlciB0aGFuIGB1cGRhdGVOb2RlUHJvcGVydHlgIGJlY2F1c2UgYHVwZGF0ZUNoaWxk
cmVuYCB3aWxsIGVuc3VyZSB0aGUgY29sdW1ucyAod2hpY2ggYXJlIGNoaWxkcmVuKSB3aWxsIGhh
dmUgYXNzb2NpYXRlZCBpc29sYXRlZCBvYmplY3RzIGNyZWF0ZWQuCisgICAgICAgICAgICB1cGRh
dGVDaGlsZHJlbigqYW5jZXN0b3IpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CiB9CiAKIHZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKEFjY2Vzc2liaWxp
dHlPYmplY3QmIGF4T2JqZWN0LCBSZXNvbHZlTm9kZUNoYW5nZXMgcmVzb2x2ZU5vZGVDaGFuZ2Vz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggYmVlNDkyMTc5NTQ0Li42NGM0YWQ4M2ViYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtNzcsOSArNzcsOSBAQCBlbnVtIGNsYXNzIEFYUHJvcGVy
dHlOYW1lIDogdWludDE2X3QgewogICAgIENhcmV0QnJvd3NpbmdFbmFibGVkLAogI2VuZGlmCiAg
ICAgQ2VsbHMsCisgICAgQ2VsbFNsb3RzLAogICAgIENvbG9yVmFsdWUsCiAgICAgQ29sdW1ucywK
LSAgICBDb2x1bW5Db3VudCwKICAgICBDb2x1bW5IZWFkZXIsCiAgICAgQ29sdW1uSGVhZGVycywK
ICAgICBDb2x1bW5JbmRleCwKQEAgLTEyMiw2ICsxMjIsNyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVy
dHlOYW1lIDogdWludDE2X3QgewogICAgIElzRW5hYmxlZCwKICAgICBJc0V4cGFuZGVkLAogICAg
IElzRXhwb3NhYmxlLAorICAgIElzRXhwb3NlZFRhYmxlQ2VsbCwKICAgICBJc0ZpZWxkc2V0LAog
ICAgIElzRm9jdXNlZCwKICAgICBJc0luZGV0ZXJtaW5hdGUsCkBAIC0xNTEsNyArMTUyLDYgQEAg
ZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBJc1NlbGVjdGVkLAog
ICAgIElzU2VsZWN0ZWRPcHRpb25BY3RpdmUsCiAgICAgSXNUYWJsZSwKLSAgICBJc1RhYmxlQ2Vs
bCwKICAgICBJc1RhYmxlQ29sdW1uLAogICAgIElzVGFibGVSb3csCiAgICAgSXNUcmVlLApAQCAt
MTk2LDcgKzE5Niw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7CiAg
ICAgUm9sZVBsYXRmb3JtU3RyaW5nLAogICAgIFJvbGVEZXNjcmlwdGlvbiwKICAgICBSb3dzLAot
ICAgIFJvd0NvdW50LAogICAgIFJvd0hlYWRlcnMsCiAgICAgUm93SW5kZXgsCiAgICAgUm93SW5k
ZXhSYW5nZSwKQEAgLTI0MCw3ICsyMzksNyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlOYW1lIDog
dWludDE2X3QgewogICAgIFZpc2libGVSb3dzLAogfTsKIAotdXNpbmcgQVhQcm9wZXJ0eVZhbHVl
VmFyaWFudCA9IHN0ZDo6dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgQVhJRCwgU3RyaW5nLCBib29s
LCBpbnQsIHVuc2lnbmVkLCBkb3VibGUsIGZsb2F0LCB1aW50NjRfdCwgQWNjZXNzaWJpbGl0eUJ1
dHRvblN0YXRlLCBDb2xvciwgVVJMLCBMYXlvdXRSZWN0LCBGbG9hdFBvaW50LCBGbG9hdFJlY3Qs
IEludFBvaW50LCBJbnRSZWN0LCBQQUw6OlNlc3Npb25JRCwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4sIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9y
PHN0ZDo6cGFpcjxBWElELCBBWElEPj4sIFZlY3RvcjxTdHJpbmc+LCBQYXRoLCBPcHRpb25TZXQ8
QVhBbmNlc3RvckZsYWc+LCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiwgSW5zaWRlTGlu
aywgQ2hhcmFjdGVyUmFuZ2U+OwordXNpbmcgQVhQcm9wZXJ0eVZhbHVlVmFyaWFudCA9IHN0ZDo6
dmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgQVhJRCwgU3RyaW5nLCBib29sLCBpbnQsIHVuc2lnbmVk
LCBkb3VibGUsIGZsb2F0LCB1aW50NjRfdCwgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlLCBDb2xv
ciwgVVJMLCBMYXlvdXRSZWN0LCBGbG9hdFBvaW50LCBGbG9hdFJlY3QsIEludFBvaW50LCBJbnRS
ZWN0LCBQQUw6OlNlc3Npb25JRCwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4sIFZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VGV4dD4sIFZlY3RvcjxBWElEPiwgVmVjdG9yPHN0ZDo6cGFpcjxBWElE
LCBBWElEPj4sIFZlY3RvcjxTdHJpbmc+LCBQYXRoLCBPcHRpb25TZXQ8QVhBbmNlc3RvckZsYWc+
LCBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiwgSW5zaWRlTGluaywgVmVjdG9yPFZlY3Rv
cjxBWElEPj4sIENoYXJhY3RlclJhbmdlPjsKIHVzaW5nIEFYUHJvcGVydHlNYXAgPSBIYXNoTWFw
PEFYUHJvcGVydHlOYW1lLCBBWFByb3BlcnR5VmFsdWVWYXJpYW50LCBJbnRIYXNoPEFYUHJvcGVy
dHlOYW1lPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxBWFByb3BlcnR5TmFtZT4+OwogCiBz
dHJ1Y3QgQVhQcm9wZXJ0eUNoYW5nZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCmluZGV4IDU1ZTVlZjMyODJmOC4uMzBlMTk1NjJjYWJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMTE4OSw3ICsxMTg5LDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0
YWJsZUF0dHJzLmdldCgpLmdldCgpOwogICAgIGVsc2UgaWYgKGJhY2tpbmdPYmplY3QtPmlzVGFi
bGVDb2x1bW4oKSkKICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxlQ29sQXR0cnMuZ2V0
KCkuZ2V0KCk7Ci0gICAgZWxzZSBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZUNlbGwoKSkKKyAg
ICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc0V4cG9zZWRUYWJsZUNlbGwoKSkKICAgICAgICAg
b2JqZWN0QXR0cmlidXRlcyA9IHRhYmxlQ2VsbEF0dHJzLmdldCgpLmdldCgpOwogICAgIGVsc2Ug
aWYgKGJhY2tpbmdPYmplY3QtPmlzVGFibGVSb3coKSkgewogICAgICAgICAvLyBBbiBBUklBIHRh
YmxlIHJvdyBjYW4gYmUgY29sbGFwc2VkIGFuZCBleHBhbmRlZCwgc28gaXQgbmVlZHMgdGhlIGV4
dHJhIGF0dHJpYnV0ZXMuCkBAIC0xODQ2LDcgKzE4NDYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChiYWNraW5nT2Jq
ZWN0LT5pc1RhYmxlQ2VsbCgpKSB7CisgICAgaWYgKGJhY2tpbmdPYmplY3QtPmlzRXhwb3NlZFRh
YmxlQ2VsbCgpKSB7CiAgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5Um93SW5kZXhSYW5nZUF0dHJpYnV0ZV0pIHsKICAgICAgICAgICAgIGF1
dG8gcm93UmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5yb3dJbmRleFJhbmdlKCk7CiAgICAgICAgICAg
ICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2Uocm93UmFuZ2UuZmly
c3QsIHJvd1JhbmdlLnNlY29uZCldOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4IGFlMzFh
NTgwNWNhOS4uODg1ZDE2NmJkYzJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CkBAIC0xMSw3
ICsxMSw3IEBAIFBBU1M6IGNlbGwyLm51bWJlckF0dHJpYnV0ZVZhbHVlKCdBWEFSSUFSb3dJbmRl
eCcpID09PSA4CiBQQVNTOiBjZWxsNC5udW1iZXJBdHRyaWJ1dGVWYWx1ZSgnQVhBUklBQ29sdW1u
SW5kZXgnKSA9PT0gMwogUEFTUzogY2VsbDIucm93SW5kZXhSYW5nZSgpID09PSAnezEsIDJ9Jwog
UEFTUzogY2VsbDUuY29sdW1uSW5kZXhSYW5nZSgpID09PSAnezIsIDN9JwotUEFTUzogY2VsbDMu
cm93SW5kZXhSYW5nZSgpID09PSAnezEsIDJ9JworUEFTUzogY2VsbDMucm93SW5kZXhSYW5nZSgp
ID09PSAnezEsIDN9JwogUEFTUzogY2VsbDYucm93SW5kZXhSYW5nZSgpID09PSAnezAsIDJ9Jwog
UEFTUzogY2VsbDcucm93SW5kZXhSYW5nZSgpID09PSAnezAsIDJ9JwogUEFTUzogI2dyaWQgQVhB
UklBUm93Q291bnQgZHluYW1pY2FsbHkgY2hhbmdlZCB0byA2MC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy5odG1sCmluZGV4IDZhY2Fk
Y2VmY2MyYS4uNWMzNTJhYjFiODg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0bWwKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAg
IDxzcGFuIHJvbGU9ImdyaWRjZWxsIiBhcmlhLWNvbGluZGV4PSIyIiBhcmlhLXJvd2luZGV4PSI4
Ij5GcmVkPC9zcGFuPgogICAgICAgPHNwYW4gcm9sZT0iZ3JpZGNlbGwiIGFyaWEtY29saW5kZXg9
IjMiIGFyaWEtcm93aW5kZXg9IjgiPkphY2tzb248L3NwYW4+CiAgICAgICA8c3BhbiBpZD0iY2Vs
bDIiIHJvbGU9ImdyaWRjZWxsIiBhcmlhLWNvbGluZGV4PSI0IiBhcmlhLXJvd2luZGV4PSI4IiBh
cmlhLXJvd3NwYW49IjIiPkFjbWUsIEluYy48L3NwYW4+Ci0gICAgICA8c3BhbiBpZD0iY2VsbDMi
IHJvbGU9ImdyaWRjZWxsIiBhcmlhLWNvbGluZGV4PSI1IiBhcmlhLXJvd2luZGV4PSI4IiBhcmlh
LXJvd3NwYW49IjAiPjEyMyBCcm9hZCBTdC48L3NwYW4+CisgICAgICA8c3BhbiBpZD0iY2VsbDMi
IHJvbGU9ImdyaWRjZWxsIiBhcmlhLWNvbGluZGV4PSI1IiBhcmlhLXJvd2luZGV4PSI4IiBhcmlh
LXJvd3NwYW49IjMiPjEyMyBCcm9hZCBTdC48L3NwYW4+CiAgICAgPC9kaXY+CiAgICAgPGRpdiBy
b2xlPSJyb3ciIGFyaWEtcm93aW5kZXg9IjkiPgogICAgICAgPHNwYW4gcm9sZT0iZ3JpZGNlbGwi
IGFyaWEtY29saW5kZXg9IjIiPlNhcmE8L3NwYW4+CkBAIC00OSw3ICs0OSw3IEBACiA8ZGl2IGlk
PSJncmlkMyIgcm9sZT0iZ3JpZCI+CiAgIDxkaXYgcm9sZT0icm93Ij4KICAgICA8c3BhbiByb2xl
PSJncmlkY2VsbCI+Q2VsbDwvc3Bhbj4KLSAgICA8c3BhbiBpZD0iY2VsbDYiIHJvbGU9ImdyaWRj
ZWxsIiBhcmlhLXJvd3NwYW49IjAiPlNwYW4gQ2VsbDwvc3Bhbj4KKyAgICA8c3BhbiBpZD0iY2Vs
bDYiIHJvbGU9ImdyaWRjZWxsIiBhcmlhLXJvd3NwYW49IjIiPlNwYW4gQ2VsbDwvc3Bhbj4KICAg
PC9kaXY+CiAgIDxkaXYgcm9sZT0icm93Ij4KICAgICA8c3BhbiByb2xlPSJncmlkY2VsbCI+Q2Vs
bDwvc3Bhbj4KQEAgLTkzLDEwICs5MywxMCBAQAogICAgICAgICAvLyBhcmlhLWNvbGluZGV4IGZy
b20gcGFyZW50IHJvdwogICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgiY2VsbDQubnVtYmVy
QXR0cmlidXRlVmFsdWUoJ0FYQVJJQUNvbHVtbkluZGV4JykiLCAiMyIpOwogCi0gICAgICAgIC8v
IGFyaWEtY29sc3BhbiBhbmQgYXJpYS1yb3dzcGFuLCBpbmNsdWRpbmcgYXJpYS1yb3dzcGFuPSIw
IgorICAgICAgICAvLyBhcmlhLWNvbHNwYW4gYW5kIGFyaWEtcm93c3BhbgogICAgICAgICB0ZXN0
T3V0cHV0ICs9IGV4cGVjdCgiY2VsbDIucm93SW5kZXhSYW5nZSgpIiwgIid7MSwgMn0nIik7CiAg
ICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJjZWxsNS5jb2x1bW5JbmRleFJhbmdlKCkiLCAi
J3syLCAzfSciKTsKLSAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoImNlbGwzLnJvd0luZGV4
UmFuZ2UoKSIsICInezEsIDJ9JyIpOworICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgiY2Vs
bDMucm93SW5kZXhSYW5nZSgpIiwgIid7MSwgM30nIik7CiAKICAgICAgICAgdGVzdE91dHB1dCAr
PSBleHBlY3QoImNlbGw2LnJvd0luZGV4UmFuZ2UoKSIsICInezAsIDJ9JyIpOwogICAgICAgICAv
LyB1c2Ugcm93c3BhbiBmb3IgbmF0aXZlIHRhYmxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQKaW5k
ZXggMWUzNmIxOGI1ODAzLi41NzU4ZmI3ZmUyMDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQK
QEAgLTMwLDEzICszMCwxMyBAQCBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgicm93LTIiKS5yb2xlIGlzICJBWFJvbGU6IEFYUgogUEFTUyBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1Iikucm9sZSBpcyAi
QVhSb2xlOiBBWENlbGwiCiBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgiY2VsbDUiKS5udW1iZXJBdHRyaWJ1dGVWYWx1ZSgiQVhBUklBUm93SW5kZXgi
KSBpcyA4CiBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiY2VsbDUiKS5udW1iZXJBdHRyaWJ1dGVWYWx1ZSgiQVhBUklBQ29sdW1uSW5kZXgiKSBpcyAy
Ci1QQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2Vs
bDUiKS5yb3dJbmRleFJhbmdlKCkgaXMgInsyLCAxfSIKK1BBU1MgYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLnJvd0luZGV4UmFuZ2UoKSBpcyAi
ezQsIDF9IgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoImNlbGw1IikuY29sdW1uSW5kZXhSYW5nZSgpIGlzICJ7MCwgMn0iCiBQQVNTIGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgicm93LTMiKS5yb2xlIGlzICJB
WFJvbGU6IEFYUm93IgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImNlbGw2Iikucm9sZSBpcyAiQVhSb2xlOiBBWENlbGwiCiBQQVNTIGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5udW1iZXJBdHRy
aWJ1dGVWYWx1ZSgiQVhBUklBUm93SW5kZXgiKSBpcyA5CiBQQVNTIGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5udW1iZXJBdHRyaWJ1dGVWYWx1
ZSgiQVhBUklBQ29sdW1uSW5kZXgiKSBpcyAyCi1QQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5yb3dJbmRleFJhbmdlKCkgaXMgInszLCAx
fSIKK1BBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJj
ZWxsNiIpLnJvd0luZGV4UmFuZ2UoKSBpcyAiezUsIDF9IgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2IikuY29sdW1uSW5kZXhSYW5nZSgp
IGlzICJ7MCwgM30iCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50cy90YWJsZS5odG1sCmlu
ZGV4IDA2Nzk2Yjk0MThhZi4uZDViODVkNGZhZmY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50cy90YWJsZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLmh0bWwKQEAgLTExMSwxNCArMTEx
LDE0IEBAIGVsc2UgewogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLnJvbGUnLCAnQVhSb2xlOiBB
WENlbGwnKTsKICAgICBzaG91bGRCZSgnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJjZWxsNSIpLm51bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFSb3dJbmRl
eCIpJywgJzgnKTsKICAgICBzaG91bGRCZSgnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLm51bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFDb2x1
bW5JbmRleCIpJywgJzInKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUiKS5yb3dJbmRleFJhbmdl
KCknLCAnezIsIDF9Jyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1Iikucm93SW5kZXhSYW5nZSgp
JywgJ3s0LCAxfScpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLmNvbHVtbkluZGV4UmFuZ2Uo
KScsICd7MCwgMn0nKTsKIAogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJyb3ctMyIpLnJvbGUnLCAnQVhSb2xl
OiBBWFJvdycpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLnJvbGUnLCAnQVhSb2xlOiBBWENl
bGwnKTsKICAgICBzaG91bGRCZSgnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjZWxsNiIpLm51bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFSb3dJbmRleCIp
JywgJzknKTsKICAgICBzaG91bGRCZSgnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJjZWxsNiIpLm51bWJlckF0dHJpYnV0ZVZhbHVlKCJBWEFSSUFDb2x1bW5J
bmRleCIpJywgJzInKTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5yb3dJbmRleFJhbmdlKCkn
LCAnezMsIDF9Jyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2Iikucm93SW5kZXhSYW5nZSgpJywg
J3s1LCAxfScpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLmNvbHVtbkluZGV4UmFuZ2UoKScs
ICd7MCwgM30nKTsKIAogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9k
aXNwbGF5LWNvbnRlbnRzL3RhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvZGlzcGxheS1jb250ZW50cy90YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jY2E3ZDAwNTMwODcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Rpc3BsYXktY29udGVudHMvdGFibGUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsODggQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgYSB0YWJsZSB3
aXRoIGRpc3BsYXk6Y29udGVudHMgY29tcG9uZW50cyBpcyBhY2Nlc3NpYmxlLgorCitQQVNTOiB0
YWJsZS5yb3dDb3VudCA9PT0gNAorUEFTUzogdGFibGUuY29sdW1uQ291bnQgPT09IDMKK1BBU1M6
IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkuZG9tSWRlbnRpZmllciA9PT0gInIwYzAi
CitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDEsIDApLmRvbUlkZW50aWZpZXIgPT09
ICJyMGMxIgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKS5kb21JZGVudGlm
aWVyID09PSAicjBjMiIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMSkuZG9t
SWRlbnRpZmllciA9PT0gInIxYzAiCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDEs
IDEpLmRvbUlkZW50aWZpZXIgPT09ICJyMWMxIgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFu
ZFJvdygyLCAxKS5kb21JZGVudGlmaWVyID09PSAicjFjMiIKK1BBU1M6IHRhYmxlLmNlbGxGb3JD
b2x1bW5BbmRSb3coMCwgMikuZG9tSWRlbnRpZmllciA9PT0gInIyYzAiCitQQVNTOiB0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDEsIDIpLmRvbUlkZW50aWZpZXIgPT09ICJyMmMxIgorUEFTUzog
dGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKS5kb21JZGVudGlmaWVyID09PSAicjJjMiIK
K1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykuZG9tSWRlbnRpZmllciA9PT0g
InIzYzAiCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDEsIDMpLmRvbUlkZW50aWZp
ZXIgPT09ICJyM2MxIgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAzKS5kb21J
ZGVudGlmaWVyID09PSAicjNjMiIKKworUGVyZm9ybWluZyBzZWFyY2ggdHJhdmVyc2FsIG9mIGJv
ZHkuCisKK3sjdGFibGUgQVhSb2xlOiBBWFRhYmxlfSAocGFyZW50OiB7I2JvZHkgQVhSb2xlOiBB
WEdyb3VwfSkKKworeyNyMCBBWFJvbGU6IEFYUm93fSAocGFyZW50OiB7I3RhYmxlIEFYUm9sZTog
QVhUYWJsZX0pCisKK3sjcjBjMCBBWFJvbGU6IEFYQ2VsbH0gKHBhcmVudDogeyNyMCBBWFJvbGU6
IEFYUm93fSkKKwore0FYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IEF1dGhvcn0gKHBhcmVu
dDogeyNyMGMwIEFYUm9sZTogQVhDZWxsfSkKKworeyNyMGMxIEFYUm9sZTogQVhDZWxsfSAocGFy
ZW50OiB7I3IwIEFYUm9sZTogQVhSb3d9KQorCit7QVhSb2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1
ZTogVGl0bGV9IChwYXJlbnQ6IHsjcjBjMSBBWFJvbGU6IEFYQ2VsbH0pCisKK3sjcjBjMiBBWFJv
bGU6IEFYQ2VsbH0gKHBhcmVudDogeyNyMCBBWFJvbGU6IEFYUm93fSkKKwore0FYUm9sZTogQVhT
dGF0aWNUZXh0IEFYVmFsdWU6IFllYXJ9IChwYXJlbnQ6IHsjcjBjMiBBWFJvbGU6IEFYQ2VsbH0p
CisKK3sjcjEgQVhSb2xlOiBBWFJvd30gKHBhcmVudDogeyN0YWJsZSBBWFJvbGU6IEFYVGFibGV9
KQorCit7I3IxYzAgQVhSb2xlOiBBWENlbGx9IChwYXJlbnQ6IHsjcjEgQVhSb2xlOiBBWFJvd30p
CisKK3tBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiBTdGVwaGVuIEhhd2tpbmd9IChwYXJl
bnQ6IHsjcjFjMCBBWFJvbGU6IEFYQ2VsbH0pCisKK3sjcjFjMSBBWFJvbGU6IEFYQ2VsbH0gKHBh
cmVudDogeyNyMSBBWFJvbGU6IEFYUm93fSkKKwore0FYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFs
dWU6IEEgQnJpZWYgSGlzdG9yeSBvZiBUaW1lfSAocGFyZW50OiB7I3IxYzEgQVhSb2xlOiBBWENl
bGx9KQorCit7I3IxYzIgQVhSb2xlOiBBWENlbGx9IChwYXJlbnQ6IHsjcjEgQVhSb2xlOiBBWFJv
d30pCisKK3tBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiAxOTg4fSAocGFyZW50OiB7I3Ix
YzIgQVhSb2xlOiBBWENlbGx9KQorCit7I3IyIEFYUm9sZTogQVhSb3d9IChwYXJlbnQ6IHsjdGFi
bGUgQVhSb2xlOiBBWFRhYmxlfSkKKworeyNyMmMwIEFYUm9sZTogQVhDZWxsfSAocGFyZW50OiB7
I3IyIEFYUm9sZTogQVhSb3d9KQorCit7QVhSb2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1ZTogQ2Fy
bCBTYWdhbn0gKHBhcmVudDogeyNyMmMwIEFYUm9sZTogQVhDZWxsfSkKKworeyNyMmMxIEFYUm9s
ZTogQVhDZWxsfSAocGFyZW50OiB7I3IyIEFYUm9sZTogQVhSb3d9KQorCit7QVhSb2xlOiBBWFN0
YXRpY1RleHQgQVhWYWx1ZTogQ29zbW9zfSAocGFyZW50OiB7I3IyYzEgQVhSb2xlOiBBWENlbGx9
KQorCit7I3IyYzIgQVhSb2xlOiBBWENlbGx9IChwYXJlbnQ6IHsjcjIgQVhSb2xlOiBBWFJvd30p
CisKK3tBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiAxOTgwfSAocGFyZW50OiB7I3IyYzIg
QVhSb2xlOiBBWENlbGx9KQorCit7I3IzIEFYUm9sZTogQVhSb3d9IChwYXJlbnQ6IHsjdGFibGUg
QVhSb2xlOiBBWFRhYmxlfSkKKworeyNyM2MwIEFYUm9sZTogQVhDZWxsfSAocGFyZW50OiB7I3Iz
IEFYUm9sZTogQVhSb3d9KQorCit7QVhSb2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1ZTogV2lsbCBH
YXRlcn0gKHBhcmVudDogeyNyM2MwIEFYUm9sZTogQVhDZWxsfSkKKworeyNyM2MxIEFYUm9sZTog
QVhDZWxsfSAocGFyZW50OiB7I3IzIEFYUm9sZTogQVhSb3d9KQorCit7QVhSb2xlOiBBWFN0YXRp
Y1RleHQgQVhWYWx1ZTogVGhlIE15c3RlcmllcyBvZiB0aGUgVW5pdmVyc2V9IChwYXJlbnQ6IHsj
cjNjMSBBWFJvbGU6IEFYQ2VsbH0pCisKK3sjcjNjMiBBWFJvbGU6IEFYQ2VsbH0gKHBhcmVudDog
eyNyMyBBWFJvbGU6IEFYUm93fSkKKwore0FYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IDIw
MjB9IChwYXJlbnQ6IHsjcjNjMiBBWFJvbGU6IEFYQ2VsbH0pCisKK3tBWFJvbGU6IEFYVGFibGV9
IChwYXJlbnQ6IHsjYm9keSBBWFJvbGU6IEFYR3JvdXB9KQorCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1RoaXMgaXMgYSB0YWJsZSBjYXB0aW9uCitB
dXRob3IgVGl0bGUgWWVhcgorU3RlcGhlbiBIYXdraW5nIEEgQnJpZWYgSGlzdG9yeSBvZiBUaW1l
IDE5ODgKK0NhcmwgU2FnYW4gQ29zbW9zIDE5ODAKK1dpbGwgR2F0ZXIgVGhlIE15c3RlcmllcyBv
ZiB0aGUgVW5pdmVyc2UgMjAyMAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2Rpc3BsYXktY29udGVudHMvdGFibGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvZGlzcGxheS1jb250ZW50cy90YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMjgxZDJkMjE2ZTVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9kaXNwbGF5LWNvbnRlbnRzL3RhYmxlLmh0bWwKQEAgLTAsMCArMSw4
MiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK3RhYmxlLCB0ciwgdGQsIHRoIHsKKyAgZGlzcGxheTog
Y29udGVudHM7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgcm9sZT0iZ3JvdXAiIGlkPSJi
b2R5Ij4KKworPHRhYmxlIGlkPSJ0YWJsZSI+Cis8Y2FwdGlvbj5UaGlzIGlzIGEgdGFibGUgY2Fw
dGlvbjwvY2FwdGlvbj4KKzx0aGVhZD4KKyAgICA8dHIgaWQ9InIwIj4KKyAgICAgICAgPHRoIGlk
PSJyMGMwIj5BdXRob3I8L3RoPgorICAgICAgICA8dGggaWQ9InIwYzEiPlRpdGxlPC90aD4KKyAg
ICAgICAgPHRoIGlkPSJyMGMyIj5ZZWFyPC90aD4KKyAgICA8L3RyPgorPC90aGVhZD4KKzx0Ym9k
eT4KKyAgICA8dHIgaWQ9InIxIj4KKyAgICAgICAgPHRkIGlkPSJyMWMwIj5TdGVwaGVuIEhhd2tp
bmc8L3RkPgorICAgICAgICA8dGQgaWQ9InIxYzEiPkEgQnJpZWYgSGlzdG9yeSBvZiBUaW1lPC90
ZD4KKyAgICAgICAgPHRkIGlkPSJyMWMyIj4xOTg4PC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBp
ZD0icjIiPgorICAgICAgICA8dGQgaWQ9InIyYzAiPkNhcmwgU2FnYW48L3RkPgorICAgICAgICA8
dGQgaWQ9InIyYzEiPkNvc21vczwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjJjMiI+MTk4MDwvdGQ+
CisgICAgPC90cj4KKyAgICA8dHIgaWQ9InIzIj4KKyAgICAgICAgPHRkIGlkPSJyM2MwIj5XaWxs
IEdhdGVyPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyM2MxIj5UaGUgTXlzdGVyaWVzIG9mIHRoZSBV
bml2ZXJzZTwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjNjMiI+MjAyMDwvdGQ+CisgICAgPC90cj4K
KzwvdGJvZHk+Cis8L3RhYmxlPgorCis8c2NyaXB0PgordmFyIG91dHB1dCA9ICJUaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IGEgdGFibGUgd2l0aCBkaXNwbGF5OmNvbnRlbnRzIGNvbXBvbmVudHMgaXMg
YWNjZXNzaWJsZS5cblxuIjsKKworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
eworICAgIHZhciB0YWJsZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgidGFibGUiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5yb3dDb3VudCIs
ICI0Iik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY29sdW1uQ291bnQiLCAiMyIpOwor
CisgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgNDsgcm93KyspIHsKKyAgICAgICAgZm9yIChs
ZXQgY29sdW1uID0gMDsgY29sdW1uIDwgMzsgY29sdW1uKyspCisgICAgICAgICAgICBvdXRwdXQg
Kz0gZXhwZWN0KGB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KCR7Y29sdW1ufSwgJHtyb3d9KS5k
b21JZGVudGlmaWVyYCwgYCJyJHtyb3d9YyR7Y29sdW1ufSJgKTsKKyAgICB9CisKKyAgICBvdXRw
dXQgKz0gYFxuUGVyZm9ybWluZyBzZWFyY2ggdHJhdmVyc2FsIG9mIGJvZHkuXG5gOworICAgIGZ1
bmN0aW9uIGVsZW1lbnREZXNjcmlwdGlvbihheEVsZW1lbnQpIHsKKyAgICAgICAgaWYgKCFheEVs
ZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gIm51bGwiOworCisgICAgICAgIGNvbnN0IHJvbGUg
PSBheEVsZW1lbnQucm9sZTsKKyAgICAgICAgY29uc3QgaWQgPSBheEVsZW1lbnQuZG9tSWRlbnRp
ZmllcjsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGAke2lkID8gYCMke2lkfSBgIDogIiJ9JHtyb2xl
fWA7CisgICAgICAgIGlmIChyb2xlLmluY2x1ZGVzKCJTdGF0aWNUZXh0IikpCisgICAgICAgICAg
ICByZXN1bHQgKz0gYCAke2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLnBsYXRmb3JtTmFtZSA9PT0g
ImlvcyIgPyBheEVsZW1lbnQuZGVzY3JpcHRpb24gOiBheEVsZW1lbnQuc3RyaW5nVmFsdWV9YDsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBjb25zdCBjb250YWluZXIgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImJvZHkiKTsKKyAg
ICBsZXQgc2VhcmNoUmVzdWx0ID0gbnVsbDsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBz
ZWFyY2hSZXN1bHQgPSBjb250YWluZXIudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHNlYXJj
aFJlc3VsdCwgdHJ1ZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7CisgICAgICAg
IGlmICghc2VhcmNoUmVzdWx0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNvbnN0IHBh
cmVudE91dHB1dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnBsYXRmb3JtTmFtZSA9PT0gImlv
cyIgPyAiIiA6IGAgKHBhcmVudDogeyR7ZWxlbWVudERlc2NyaXB0aW9uKHNlYXJjaFJlc3VsdC5w
YXJlbnRFbGVtZW50KCkpfX0pYDsKKyAgICAgICAgb3V0cHV0ICs9IGBcbnske2VsZW1lbnREZXNj
cmlwdGlvbihzZWFyY2hSZXN1bHQpfX0ke3BhcmVudE91dHB1dH1cbmA7CisgICAgfQorICAgIGRl
YnVnKG91dHB1dCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTM4ZmVjOTczYzIzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNw
YW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQg
dGhlICdjZWxsIGZvciBjb2x1bW4gYW5kIHJvdycgQVBJIHdvcmtzIGNvcnJlY3RseSBhZnRlciBk
eW5hbWljIGNvbHNwYW4gY2hhbmdlcy4KKworUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJv
dygwLCAwKS5kb21JZGVudGlmaWVyID09PSAncjBjMCcKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1
bW5BbmRSb3coMSwgMCkuZG9tSWRlbnRpZmllciA9PT0gJ3IwYzEnCitQQVNTOiB0YWJsZS5jZWxs
Rm9yQ29sdW1uQW5kUm93KDIsIDApID09PSBudWxsID09PSB0cnVlCitQQVNTOiBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5JbmRleFJh
bmdlKCkgPT09ICd7MSwgMX0nCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjBjMScpLnNldEF0
dHJpYnV0ZSgnY29sc3BhbicsICcyJykKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3co
MiwgMCkuZG9tSWRlbnRpZmllciA9PT0gJ3IwYzEnCitQQVNTOiBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5JbmRleFJhbmdlKCkgPT09
ICd7MSwgMn0nCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjBjMScpLnJlbW92ZUF0dHJpYnV0
ZSgnY29sc3BhbicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApID09PSBu
dWxsID09PSB0cnVlCitQQVNTOiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5JbmRleFJhbmdlKCkgPT09ICd7MSwgMX0nCitkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncjBjMScpLnNldEF0dHJpYnV0ZSgnYXJpYS1jb2xzcGFuJywgJzIn
KQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKS5kb21JZGVudGlmaWVyID09
PSAncjBjMScKK1BBU1M6IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgncjBjMScpLmNvbHVtbkluZGV4UmFuZ2UoKSA9PT0gJ3sxLCAyfScKKworUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitIZWFkZXIgMAlIZWFkZXIg
MQorUjFDMAlSMUMxCVIxQzIKK1IyQzAJUjJDMQlSMkMyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9keW5hbWljLWNvbHNwYW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjc3YTRhMjg3MGRlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLmh0bWwKQEAgLTAsMCArMSw2OSBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzdHlsZT4KK3RkLCB0aCB7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Cit9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzx0YWJsZSBpZD0idGFibGUiPgorPHRoZWFkIGlkPSJ0
aGVhZCI+CisgICAgPHRyIGlkPSJyMCI+CisgICAgICAgIDx0aCBpZD0icjBjMCI+SGVhZGVyIDA8
L3RoPgorICAgICAgICA8dGggaWQ9InIwYzEiPkhlYWRlciAxPC90aD4KKyAgICA8L3RyPgorPC90
aGVhZD4KKzx0Ym9keSBpZD0idGJvZHkiPgorICAgIDx0ciBpZD0icjEiPgorICAgICAgICA8dGQg
aWQ9InIxYzAiPlIxQzA8L3RkPgorICAgICAgICA8dGQgaWQ9InIxYzEiPlIxQzE8L3RkPgorICAg
ICAgICA8dGQgaWQ9InIxYzIiPlIxQzI8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGlkPSJyMiI+
CisgICAgICAgIDx0ZCBpZD0icjJjMCI+UjJDMDwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjJjMSI+
UjJDMTwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjJjMSI+UjJDMjwvdGQ+CisgICAgPC90cj4KKzwv
dGJvZHk+Cis8L3RhYmxlPgorCis8c2NyaXB0PgordmFyIG91dHB1dCA9ICJUaGlzIHRlc3QgZW5z
dXJlcyB0aGF0IHRoZSAnY2VsbCBmb3IgY29sdW1uIGFuZCByb3cnIEFQSSB3b3JrcyBjb3JyZWN0
bHkgYWZ0ZXIgZHluYW1pYyBjb2xzcGFuIGNoYW5nZXMuXG5cbiI7CisKK2lmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICB2YXIgdGFibGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoInRhYmxlIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNv
bHVtbkFuZFJvdygwLCAwKS5kb21JZGVudGlmaWVyIiwgIidyMGMwJyIpOworICAgIG91dHB1dCAr
PSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMCkuZG9tSWRlbnRpZmllciIs
ICIncjBjMSciKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5k
Um93KDIsIDApID09PSBudWxsIiwgInRydWUiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5J
bmRleFJhbmdlKCkiLCAiJ3sxLCAxfSciKTsKKworICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJu
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjBjMScpLnNldEF0dHJpYnV0ZSgnY29sc3Bhbics
ICcyJykiKTsKKyAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICBhd2Fp
dCB3YWl0Rm9yKCgpID0+IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCkgIT09IG51bGwp
OworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIs
IDApLmRvbUlkZW50aWZpZXIiLCAiJ3IwYzEnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
ImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjBjMScpLmNv
bHVtbkluZGV4UmFuZ2UoKSIsICInezEsIDJ9JyIpOworCisgICAgICAgIG91dHB1dCArPSBldmFs
QW5kUmV0dXJuKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjBjMScpLnJlbW92ZUF0dHJpYnV0
ZSgnY29sc3BhbicpIik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFi
bGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKSA9PT0gbnVsbCIsICJ0cnVlIik7CisgICAgICAg
IG91dHB1dCArPSBleHBlY3QoImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgncjBjMScpLmNvbHVtbkluZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOworCisgICAg
ICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJuKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjBj
MScpLnNldEF0dHJpYnV0ZSgnYXJpYS1jb2xzcGFuJywgJzInKSIpOworICAgICAgICBhd2FpdCB3
YWl0Rm9yKCgpID0+IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCkgIT09IG51bGwpOwor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDAp
LmRvbUlkZW50aWZpZXIiLCAiJ3IwYzEnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncjBjMScpLmNvbHVt
bkluZGV4UmFuZ2UoKSIsICInezEsIDJ9JyIpOworCisgICAgICAgIGRlYnVnKG91dHB1dCk7Cisg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1p
Yy1yb3dzcGFuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1p
Yy1yb3dzcGFuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjMxYjUzM2ViN2YyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitU
aGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSAnY2VsbCBmb3IgY29sdW1uIGFuZCByb3cnIEFQSSB3
b3JrcyBjb3JyZWN0bHkgYWZ0ZXIgZHluYW1pYyByb3dzcGFuIGNoYW5nZXMuCisKK1BBU1M6IHRh
YmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkuZG9tSWRlbnRpZmllciA9PT0gJ3IwYzAnCitQ
QVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpID09PSBudWxsID09PSB0cnVlCitQ
QVNTOiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzIn
KS5yb3dJbmRleFJhbmdlKCkgPT09ICd7MSwgMX0nCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cjFjMicpLnNldEF0dHJpYnV0ZSgncm93c3BhbicsICcyJykKK1BBU1M6IHRhYmxlLmNlbGxGb3JD
b2x1bW5BbmRSb3coMiwgMikuZG9tSWRlbnRpZmllciA9PT0gJ3IxYzInCitQQVNTOiBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5yb3dJbmRleFJh
bmdlKCkgPT09ICd7MSwgMn0nCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjFjMicpLnJlbW92
ZUF0dHJpYnV0ZSgncm93c3BhbicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIs
IDIpID09PSBudWxsID09PSB0cnVlCitQQVNTOiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5yb3dJbmRleFJhbmdlKCkgPT09ICd7MSwgMX0nCitk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncjFjMicpLnNldEF0dHJpYnV0ZSgnYXJpYS1yb3dzcGFu
JywgJzInKQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKS5kb21JZGVudGlm
aWVyID09PSAncjFjMicKK1BBU1M6IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgncjFjMicpLnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAyfScKKworUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitIZWFkZXIgMAlIZWFk
ZXIgMQlIZWFkZXIgMgorUjFDMAlSMUMxCVIxQzIKK1IyQzAJUjJDMQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4uaHRtbCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5lMDk5MzE1YThiN2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi5odG1sCkBAIC0wLDAgKzEsNjgg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c3R5bGU+Cit0ZCwgdGggeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCis8dGFibGUgaWQ9InRhYmxlIj4KKzx0aGVh
ZCBpZD0idGhlYWQiPgorICAgIDx0ciBpZD0icjAiPgorICAgICAgICA8dGggaWQ9InIwYzAiPkhl
YWRlciAwPC90aD4KKyAgICAgICAgPHRoIGlkPSJyMGMxIj5IZWFkZXIgMTwvdGg+CisgICAgICAg
IDx0aCBpZD0icjBjMiI+SGVhZGVyIDI8L3RoPgorICAgIDwvdHI+Cis8L3RoZWFkPgorPHRib2R5
IGlkPSJ0Ym9keSI+CisgICAgPHRyIGlkPSJyMSI+CisgICAgICAgIDx0ZCBpZD0icjFjMCI+UjFD
MDwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjFjMSI+UjFDMTwvdGQ+CisgICAgICAgIDx0ZCBpZD0i
cjFjMiI+UjFDMjwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgaWQ9InIyIj4KKyAgICAgICAgPHRk
IGlkPSJyMmMwIj5SMkMwPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyMmMxIj5SMkMxPC90ZD4KKyAg
ICA8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+CisKKzxzY3JpcHQ+Cit2YXIgb3V0cHV0ID0gIlRo
aXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlICdjZWxsIGZvciBjb2x1bW4gYW5kIHJvdycgQVBJIHdv
cmtzIGNvcnJlY3RseSBhZnRlciBkeW5hbWljIHJvd3NwYW4gY2hhbmdlcy5cblxuIjsKKworaWYg
KHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgIHZhciB0YWJsZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgidGFibGUiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJs
ZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIiLCAiJ3IwYzAnIik7Cisg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKSA9PT0g
bnVsbCIsICJ0cnVlIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpIiwgIid7
MSwgMX0nIik7CisKKyAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3IxYzInKS5zZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nLCAnMicpIik7CisgICAgc2V0
VGltZW91dChhc3luYyBmdW5jdGlvbigpIHsKKyAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiB0
YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpICE9PSBudWxsKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKS5kb21JZGVudGlmaWVy
IiwgIidyMWMyJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5yb3dJbmRleFJhbmdlKCkiLCAi
J3sxLCAyfSciKTsKKworICAgICAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3IxYzInKS5yZW1vdmVBdHRyaWJ1dGUoJ3Jvd3NwYW4nKSIpOworICAg
ICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRS
b3coMiwgMikgPT09IG51bGwiLCAidHJ1ZSIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5yb3dJ
bmRleFJhbmdlKCkiLCAiJ3sxLCAxfSciKTsKKworICAgICAgICBvdXRwdXQgKz0gZXZhbEFuZFJl
dHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IxYzInKS5zZXRBdHRyaWJ1dGUoJ2FyaWEt
cm93c3BhbicsICcyJykiKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiB0YWJsZS5jZWxs
Rm9yQ29sdW1uQW5kUm93KDIsIDIpICE9PSBudWxsKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVj
dCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKS5kb21JZGVudGlmaWVyIiwgIidyMWMy
JyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5yb3dJbmRleFJhbmdlKCkiLCAiJ3sxLCAyfSci
KTsKKworICAgICAgICBkZWJ1ZyhvdXRwdXQpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICB9LCAwKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVzY2VuZGFudHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRh
bnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmFmMDQ1NDEwZDJjMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBA
QAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgJ2NlbGwgZm9yIGNvbHVtbiBhbmQgcm93JyBB
UEkgd29ya3MgY29ycmVjdGx5IGFmdGVyIGR5bmFtaWMgRE9NIGNoaWxkIGNoYW5nZXMuCisKK1BB
U1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkuZG9tSWRlbnRpZmllciA9PT0gJ3Iw
YzAnCitQQVNTOiB0YWJsZS5yb3dDb3VudCA9PT0gMworUEFTUzogdGFibGUuY29sdW1uQ291bnQg
PT09IDIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykgPT09IG51bGwgPT09
IHRydWUKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0Ym9keScpLmFwcGVuZENoaWxkKGNyZWF0
ZUZvdXJ0aFJvdygpKQorUEFTUzogdGFibGUucm93Q291bnQgPT09IDQKK1BBU1M6IHRhYmxlLmNv
bHVtbkNvdW50ID09PSAzCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMpLmRv
bUlkZW50aWZpZXIgPT09ICdyM2MwJworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IzJykuYXBw
ZW5kQ2hpbGQoZHluYW1pY0NlbGwpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDMs
IDMpLmRvbUlkZW50aWZpZXIgPT09ICdkeW5hbWljLWNlbGwnCitQQVNTOiB0YWJsZS5jb2x1bW5D
b3VudCA9PT0gNAorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R5bmFtaWMtY2VsbCcpLnJlbW92
ZSgpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDQpID09PSBudWxsID09PSB0
cnVlCitQQVNTOiB0YWJsZS5jb2x1bW5Db3VudCA9PT0gMworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3IzJykucmVtb3ZlKCkKK1BBU1M6IHRhYmxlLnJvd0NvdW50ID09PSAzCitQQVNTOiB0YWJs
ZS5jb2x1bW5Db3VudCA9PT0gMgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAz
KSA9PT0gbnVsbCA9PT0gdHJ1ZQorbmV3VGJvZHkuYXBwZW5kQ2hpbGQoY3JlYXRlRm91cnRoUm93
KCkpCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGUnKS5hcHBlbmRDaGlsZChuZXdUYm9k
eSkKK1BBU1M6IHRhYmxlLnJvd0NvdW50ID09PSA0CitQQVNTOiB0YWJsZS5jb2x1bW5Db3VudCA9
PT0gMworUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKS5kb21JZGVudGlmaWVy
ID09PSAncjNjMCcKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCitIZWFkZXIgMAlIZWFkZXIgMQorUjFDMAlSMUMxCitSMkMwCVIyQzEKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVzY2VuZGFu
dHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNlYTRiZTc5
NWU2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1p
Yy10YWJsZS1kZXNjZW5kYW50cy5odG1sCkBAIC0wLDAgKzEsMTA0IEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHN0eWxlPgor
dGQsIHRoIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKworPHRhYmxlIGlkPSJ0YWJsZSI+Cis8dGhlYWQgaWQ9InRoZWFkIj4KKyAg
ICA8dHIgaWQ9InIwIj4KKyAgICAgICAgPHRoIGlkPSJyMGMwIj5IZWFkZXIgMDwvdGg+CisgICAg
ICAgIDx0aCBpZD0icjBjMSI+SGVhZGVyIDE8L3RoPgorICAgIDwvdHI+Cis8L3RoZWFkPgorPHRi
b2R5IGlkPSJ0Ym9keSI+CisgICAgPHRyIGlkPSJyMSI+CisgICAgICAgIDx0ZCBpZD0icjFjMCI+
UjFDMDwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjFjMSI+UjFDMTwvdGQ+CisgICAgPC90cj4KKyAg
ICA8dHIgaWQ9InIyIj4KKyAgICAgICAgPHRkIGlkPSJyMmMwIj5SMkMwPC90ZD4KKyAgICAgICAg
PHRkIGlkPSJyMmMxIj5SMkMxPC90ZD4KKyAgICA8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+CisK
KzxzY3JpcHQ+Cit2YXIgb3V0cHV0ID0gIlRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgdGhlICdjZWxs
IGZvciBjb2x1bW4gYW5kIHJvdycgQVBJIHdvcmtzIGNvcnJlY3RseSBhZnRlciBkeW5hbWljIERP
TSBjaGlsZCBjaGFuZ2VzLlxuXG4iOworCitmdW5jdGlvbiBjcmVhdGVGb3VydGhSb3coKSB7Cisg
ICAgY29uc3QgdHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOworICAgIHRyLmlkID0g
InIzIjsKKworICAgIGNvbnN0IGNlbGxPbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIp
OworICAgIGNlbGxPbmUuaWQgPSAicjNjMCI7CisgICAgY29uc3QgY2VsbFR3byA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRkIik7CisgICAgY2VsbFR3by5pZCA9ICJyM2MxIjsKKyAgICBjb25z
dCBjZWxsVGhyZWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgIGNlbGxUd28u
aWQgPSAicjNjMiI7CisKKyAgICB0ci5hcHBlbmRDaGlsZChjZWxsT25lKTsKKyAgICB0ci5hcHBl
bmRDaGlsZChjZWxsVHdvKTsKKyAgICB0ci5hcHBlbmRDaGlsZChjZWxsVGhyZWUpOworICAgIHJl
dHVybiB0cjsKK30KKworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHZhciBuZXdUYm9keSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5Iik7CisgICAgdmFyIGR5bmFtaWNDZWxsID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICBkeW5hbWljQ2VsbC5pZCA9ICJkeW5hbWljLWNl
bGwiOworCisgICAgdmFyIHRhYmxlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJ0YWJsZSIpOworICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxG
b3JDb2x1bW5BbmRSb3coMCwgMCkuZG9tSWRlbnRpZmllciIsICIncjBjMCciKTsKKyAgICBvdXRw
dXQgKz0gZXhwZWN0KCJ0YWJsZS5yb3dDb3VudCIsICIzIik7CisgICAgb3V0cHV0ICs9IGV4cGVj
dCgidGFibGUuY29sdW1uQ291bnQiLCAiMiIpOworICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykgPT09IG51bGwiLCAidHJ1ZSIpOworCisgICAgb3V0
cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0Ym9keScpLmFw
cGVuZENoaWxkKGNyZWF0ZUZvdXJ0aFJvdygpKSIpOworICAgIHNldFRpbWVvdXQoYXN5bmMgZnVu
Y3Rpb24oKSB7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUucm93
Q291bnQiLCAiNCIpOworICAgICAgICAvLyBUaGUgZm91cnRoIHJvdyBoYXMgdGhyZWUgY2VsbHMg
aW4gaXQgKHZzLiB0aGUgdHdvIGNlbGxzIGluIGV2ZXJ5IG90aGVyIHJvdykuCisgICAgICAgIG91
dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUuY29sdW1uQ291bnQiLCAiMyIpOworICAg
ICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMpLmRv
bUlkZW50aWZpZXIiLCAiJ3IzYzAnIik7CisKKyAgICAgICAgLy8gTm93IGFwcGVuZCBhIGNlbGwg
dG8gYSByb3cuCisgICAgICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJuKCJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncjMnKS5hcHBlbmRDaGlsZChkeW5hbWljQ2VsbCkiKTsKKyAgICAgICAgYXdh
aXQgd2FpdEZvcigoKSA9PiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDMsIDMpKTsKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCAzKS5kb21J
ZGVudGlmaWVyIiwgIidkeW5hbWljLWNlbGwnIik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBl
eHBlY3RBc3luYygidGFibGUuY29sdW1uQ291bnQiLCAiNCIpOworCisgICAgICAgIC8vIEFuZCBy
ZW1vdmUgaXQuCisgICAgICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJuKCJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZHluYW1pYy1jZWxsJykucmVtb3ZlKCkiKTsKKyAgICAgICAgb3V0cHV0ICs9
IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDQpID09PSBu
dWxsIiwgInRydWUiKTsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJs
ZS5jb2x1bW5Db3VudCIsICIzIik7CisKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBkeW5hbWljYWxs
eSBhZGRlZCBmb3VydGggcm93LgorICAgICAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IzJykucmVtb3ZlKCkiKTsKKyAgICAgICAgb3V0cHV0ICs9
IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5yb3dDb3VudCIsICIzIik7CisgICAgICAgIG91dHB1
dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUuY29sdW1uQ291bnQiLCAiMiIpOworICAgICAg
ICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3co
MCwgMykgPT09IG51bGwiLCAidHJ1ZSIpOworCisgICAgICAgIC8vIFRoZW4gYWRkIHRoZSBmb3Vy
dGggcm93IGJhY2sgdG8gdGhlIG5ldyB0Ym9keS4KKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRS
ZXR1cm4oIm5ld1Rib2R5LmFwcGVuZENoaWxkKGNyZWF0ZUZvdXJ0aFJvdygpKSIpOworICAgICAg
ICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxl
JykuYXBwZW5kQ2hpbGQobmV3VGJvZHkpIik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBl
Y3RBc3luYygidGFibGUucm93Q291bnQiLCAiNCIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQg
ZXhwZWN0QXN5bmMoInRhYmxlLmNvbHVtbkNvdW50IiwgIjMiKTsKKyAgICAgICAgb3V0cHV0ICs9
IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKS5kb21JZGVudGlmaWVyIiwg
IidyM2MwJyIpOworCisgICAgICAgIGRlYnVnKG91dHB1dCk7CisgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi1leHBlY3RlZC50
eHQKaW5kZXggNGRmNDUwNmMwZGEwLi44MTI2YzVlMzhjNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24tZXhwZWN0ZWQudHh0CkBAIC01Niw3
ICs1Niw3IEBAIFBBU1MgYXhFbGVtZW50LnJvbGUgPT0gJ0FYUm9sZTogQVhMaXN0JyBpcyB0cnVl
CiAKIAogSW5saW5lIGxpc3QgZWxlbWVudHMgd2l0aCBhbiBhcmlhIHJvbGUgc2hvdWxkIGJlIGEg
bGlzdAotUEFTUyBheEVsZW1lbnQucm9sZSA9PSAnQVhSb2xlOiBBWExpc3QnIGlzIHRydWUKK1BB
U1MgYXhFbGVtZW50LnJvbGUgPT0gJ0FYUm9sZTogQVhMaXN0JyBpcyBmYWxzZQogCiAKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbGlzdC1kZXRlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bGlzdC1kZXRlY3Rpb24uaHRtbAppbmRleCAyMDBiZTU5NjQ3YzYuLjNmMWUwMDE1MGYzZSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi5odG1sCisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24uaHRtbApAQCAtNjMs
NyArNjMsNyBAQAogPGRpdj5pdGVtPC9kaXY+CiA8L3VsPgogCi08dWwgaWQ9Imxpc3QxNCIgcm9s
ZT0ibGlzdCIgdGVzdC1kZXNjcmlwdGlvbj0iSW5saW5lIGxpc3QgZWxlbWVudHMgd2l0aCBhbiBh
cmlhIHJvbGUgc2hvdWxkIGJlIGEgbGlzdCIgaXMtbGlzdD0idHJ1ZSIgc3R5bGU9ImRpc3BsYXk6
IHRhYmxlOyI+Cis8dWwgaWQ9Imxpc3QxNCIgcm9sZT0ibGlzdCIgdGVzdC1kZXNjcmlwdGlvbj0i
SW5saW5lIGxpc3QgZWxlbWVudHMgd2l0aCBhbiBhcmlhIHJvbGUgc2hvdWxkIGJlIGEgbGlzdCIg
aXMtbGlzdD0iZmFsc2UiIHN0eWxlPSJkaXNwbGF5OiB0YWJsZTsiPgogICA8bGkgcm9sZT0ibGlz
dGl0ZW0iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij5JdGVtIDE8L2xpPgogICA8bGkg
cm9sZT0ibGlzdGl0ZW0iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij5JdGVtIDI8L2xp
PgogICA8bGkgcm9sZT0ibGlzdGl0ZW0iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ij5J
dGVtIDM8L2xpPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1p
bmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvdGFibGUtaW5jb3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQKaW5kZXggMWJk
ZTFiYTkwMGQxLi5mNzRlZDQ1ZjM4NjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvdGFibGUtaW5jb3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJlY3QtY29sc3Bhbi1jZWxsLWV4cGVj
dGVkLnR4dApAQCAtNSwxNyArNSwzNSBAQCBUaGlzIHRlc3RzIHRoZSByb3dSYW5nZSBhbmQgY29s
dW1uUmFuZ2UgYXR0cmlidXRlcyBvZiB0YWJsZSBjZWxscyBpbiBhIHRhYmxlIHdpdAogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVRhYmxlOiBSb3dzOiAyLCBDb2x1bW5zOiAzCitUYWJs
ZTogUm93czogMiwgQ29sdW1uczogNgogW1RhYmxlIGNlbGwgYXQgcm93OiAwLCBjb2x1bW46IDBd
IFJvdyByYW5nZTogezAsIDF9LCBDb2x1bW4gcmFuZ2U6IHswLCAxfQogCVBBU1NFRCBDZWxsIGlz
IHNhbWUgY2VsbCBhdCAoMCwgMCkKLVtUYWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1uOiAwXSBS
b3cgcmFuZ2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7MCwgMn0KK1tUYWJsZSBjZWxsIGF0IHJv
dzogMSwgY29sdW1uOiAwXSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7MCwgNH0K
IAlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDApCiAJUEFTU0VEIENlbGwgaXMgc2Ft
ZSBjZWxsIGF0ICgxLCAxKQotW1RhYmxlIGNlbGwgYXQgcm93OiAxLCBjb2x1bW46IDFdIFJvdyBy
YW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6IHswLCAyfQorCVBBU1NFRCBDZWxsIGlzIHNhbWUg
Y2VsbCBhdCAoMSwgMikKKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDMpCitbVGFi
bGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogMV0gUm93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiBy
YW5nZTogezAsIDR9CisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAwKQorCVBBU1NF
RCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMSkKKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwg
YXQgKDEsIDIpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAzKQorW1RhYmxlIGNl
bGwgYXQgcm93OiAxLCBjb2x1bW46IDJdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6
IHswLCA0fQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMCkKKwlQQVNTRUQgQ2Vs
bCBpcyBzYW1lIGNlbGwgYXQgKDEsIDEpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgx
LCAyKQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMykKK1tUYWJsZSBjZWxsIGF0
IHJvdzogMSwgY29sdW1uOiAzXSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7MCwg
NH0KIAlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDApCiAJUEFTU0VEIENlbGwgaXMg
c2FtZSBjZWxsIGF0ICgxLCAxKQotW1RhYmxlIGNlbGwgYXQgcm93OiAxLCBjb2x1bW46IDJdIFJv
dyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6IHsyLCAxfQogCVBBU1NFRCBDZWxsIGlzIHNh
bWUgY2VsbCBhdCAoMSwgMikKKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDMpCitb
VGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogNF0gUm93IHJhbmdlOiB7MSwgMX0sIENvbHVt
biByYW5nZTogezQsIDJ9CisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCA0KQorCVBB
U1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgNSkKK1tUYWJsZSBjZWxsIGF0IHJvdzogMSwg
Y29sdW1uOiA1XSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7NCwgMn0KKwlQQVNT
RUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDQpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxs
IGF0ICgxLCA1KQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLW11bHRpcGxl
LXRib2RpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1t
dWx0aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dAppbmRleCAyYWVkMzY2NWMxYWQuLjQ4MmI1ZWY1
ODk5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1tdWx0aXBs
ZS10Ym9kaWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rh
YmxlLW11bHRpcGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0CkBAIC0xMDE4LDcgKzEwMTgsNyBAQCBB
WEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhIaWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51
bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6IHsxLCAxfQogQVhDb2x1bW5JbmRleFJhbmdl
OiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNp
emUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93
SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYQVJJQUNvbHVtbkluZGV4OiAt
MQogQVhBUklBUm93SW5kZXg6IC0xCkBAIC0xMTM4LDcgKzExMzgsNyBAQCBBWEVkaXRhYmxlQW5j
ZXN0b3I6IChudWxsKQogQVhIaWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0lu
ZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7
MiwgMX0KLUFYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29s
dW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVt
ZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93
SW5kZXg6IC0xCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChudWxs
KQogQVhIaWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5T
UmFuZ2U6IHszLCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29s
dW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVyVUlF
bGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFycmF5
IG9mIHNpemUgMT4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0xCkBA
IC0xMzc4LDcgKzEzNzgsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhIaWdoZXN0
RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6IHs0LCAx
fQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVhZGVyVUlF
bGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFy
cmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4K
IEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0xCkBAIC0xNDk4LDcgKzE0
OTgsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhIaWdoZXN0RWRpdGFibGVBbmNl
c3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6IHs1LCAxfQogQVhDb2x1bW5J
bmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFy
cmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUg
MT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYQVJJQUNvbHVt
bkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0xCkBAIC0xNjE4LDcgKzE2MTgsNyBAQCBBWEVk
aXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhIaWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwp
CiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6IHs2LCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBO
U1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUg
MD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVh
ZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQog
QVhBUklBUm93SW5kZXg6IC0xCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBBWEVkaXRhYmxlQW5jZXN0
b3I6IChudWxsKQogQVhIaWdoZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4
UmFuZ2U6IE5TUmFuZ2U6IHs3LCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7Miwg
MX0KLUFYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1u
SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50
czogPGFycmF5IG9mIHNpemUgMD4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5k
ZXg6IC0xCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXRoZWFk
LXRmb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtdGhl
YWQtdGZvb3QtZXhwZWN0ZWQudHh0CmluZGV4IGU0NDgzZjQyYmUyMC4uNWZmMTdmMjI0YzhmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXRoZWFkLXRmb290LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXRoZWFkLXRm
b290LWV4cGVjdGVkLnR4dApAQCAtNzIyLDcgKzcyMiw3IEBAIEFYRWRpdGFibGVBbmNlc3Rvcjog
KG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93SW5kZXhSYW5n
ZTogTlNSYW5nZTogezEsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6IHsyLCAxfQot
QVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhDb2x1bW5IZWFk
ZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVsZW1lbnRzOiA8
YXJyYXkgb2Ygc2l6ZSAxPgogQVhBUklBQ29sdW1uSW5kZXg6IC0xCiBBWEFSSUFSb3dJbmRleDog
LTEKQEAgLTg0Miw3ICs4NDIsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhIaWdo
ZXN0RWRpdGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6IHsy
LCAxfQogQVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVhZGVy
VUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50czog
PGFycmF5IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUg
MT4KIEFYQVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0xCkBAIC05NjIsNyAr
OTYyLDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5j
ZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7MywgMX0KIEFYQ29sdW1u
SW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxh
cnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXpl
IDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CiBBWEFSSUFDb2x1
bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2FjY2Vzc2liaWxpdHkvY3VzdG9tLWVs
ZW1lbnRzL3RhYmxlLWV4cGVjdGVkLnR4dAppbmRleCAxODVlNTlmOWQwNmQuLjMzOTRmNWFkMzUy
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L2N1
c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQK
QEAgLTMwLDEzICszMCwxMyBAQCBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgicm93LTIiKS5yb2xlIGlzICJBWFJvbGU6IEFYUgogUEFTUyBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1Iikucm9sZSBpcyAi
QVhSb2xlOiBBWENlbGwiCiBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgiY2VsbDUiKS5udW1iZXJBdHRyaWJ1dGVWYWx1ZSgiQVhBUklBUm93SW5kZXgi
KSBpcyA4CiBQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiY2VsbDUiKS5udW1iZXJBdHRyaWJ1dGVWYWx1ZSgiQVhBUklBQ29sdW1uSW5kZXgiKSBpcyAy
Ci1QQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2Vs
bDUiKS5yb3dJbmRleFJhbmdlKCkgaXMgInsyLCAxfSIKK1BBU1MgYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLnJvd0luZGV4UmFuZ2UoKSBpcyAi
ezQsIDF9IgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoImNlbGw1IikuY29sdW1uSW5kZXhSYW5nZSgpIGlzICJ7MCwgMn0iCiBQQVNTIGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgicm93LTMiKS5yb2xlIGlzICJB
WFJvbGU6IEFYUm93IgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImNlbGw2Iikucm9sZSBpcyAiQVhSb2xlOiBBWENlbGwiCiBQQVNTIGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5udW1iZXJBdHRy
aWJ1dGVWYWx1ZSgiQVhBUklBUm93SW5kZXgiKSBpcyA5CiBQQVNTIGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5udW1iZXJBdHRyaWJ1dGVWYWx1
ZSgiQVhBUklBQ29sdW1uSW5kZXgiKSBpcyAyCi1QQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5yb3dJbmRleFJhbmdlKCkgaXMgInszLCAx
fSIKK1BBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJj
ZWxsNiIpLnJvd0luZGV4UmFuZ2UoKSBpcyAiezUsIDF9IgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2IikuY29sdW1uSW5kZXhSYW5nZSgp
IGlzICJ7MCwgM30iCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlv
bi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2FjY2Vzc2liaWxpdHkv
bGlzdC1kZXRlY3Rpb24tZXhwZWN0ZWQudHh0CmluZGV4IGVmZDRmZTY2ZTA3My4uNjk4OTE2NTJi
MzBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2FjY2Vzc2liaWxpdHkv
bGlzdC1kZXRlY3Rpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2ds
aWIvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi1leHBlY3RlZC50eHQKQEAgLTU2LDcgKzU2
LDcgQEAgUEFTUyBheEVsZW1lbnQucm9sZSA9PSAnQVhSb2xlOiBBWExpc3QnIGlzIHRydWUKIAog
CiBJbmxpbmUgbGlzdCBlbGVtZW50cyB3aXRoIGFuIGFyaWEgcm9sZSBzaG91bGQgYmUgYSBsaXN0
Ci1QQVNTIGF4RWxlbWVudC5yb2xlID09ICdBWFJvbGU6IEFYTGlzdCcgaXMgdHJ1ZQorUEFTUyBh
eEVsZW1lbnQucm9sZSA9PSAnQVhSb2xlOiBBWExpc3QnIGlzIGZhbHNlCiAKIAogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z2xpYi9hY2Nlc3NpYmlsaXR5L3RhYmxlLW11bHRpcGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L3RhYmxlLW11bHRpcGxlLXRi
b2RpZXMtZXhwZWN0ZWQudHh0CmluZGV4IGM5ZGZhMTZiYjFhNC4uMjY2MTNhMzExNGQwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2FjY2Vzc2liaWxpdHkvdGFibGUtbXVs
dGlwbGUtdGJvZGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xp
Yi9hY2Nlc3NpYmlsaXR5L3RhYmxlLW11bHRpcGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0CkBAIC0z
Nyw3ICszNyw3IEBAIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAogQVhQbGF0Zm9ybUF0dHJp
YnV0ZXM6IGNvbXB1dGVkLXJvbGU6Y29sdW1uaGVhZGVyLCB0YWc6dGgKIC0tLS0tLS0tLS0tLQot
QVhSb2xlOiBBWENlbGwKK0FYUm9sZTogQVhDb2x1bW5IZWFkZXIKIEFYUGFyZW50OiBBWFJvdwog
QVhDaGlsZHJlbjogMAogQVhQb3NpdGlvbjogIHsgNDA5LjAwMCwgOS4wMDAwMCB9CkBAIC00Nywx
NCArNDcsMTQgQEAgQVhEZXNjcmlwdGlvbjoKIEFYVmFsdWU6IGIKIEFYRm9jdXNhYmxlOiAwCiBB
WEZvY3VzZWQ6IDAKLUFYU2VsZWN0YWJsZTogMQorQVhTZWxlY3RhYmxlOiAwCiBBWFNlbGVjdGVk
OiAwCiBBWE11bHRpU2VsZWN0YWJsZTogMAogQVhFbmFibGVkOiAxCiBBWEV4cGFuZGVkOiAwCiBB
WFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKLUFYUGxhdGZvcm1BdHRyaWJ1dGVzOiBjb21wdXRl
ZC1yb2xlOmNlbGwsIHRhZzp0ZAorQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGNvbXB1dGVkLXJvbGU6
Y29sdW1uaGVhZGVyLCB0YWc6dGQKIC0tLS0tLS0tLS0tLQogCiBBWFJvbGU6IEFYQ29sdW1uSGVh
ZGVyCkBAIC0zNzUsNyArMzc1LDcgQEAgQVhSZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCiBBWFBs
YXRmb3JtQXR0cmlidXRlczogY29tcHV0ZWQtcm9sZTpjb2x1bW5oZWFkZXIsIHRhZzp0aAogLS0t
LS0tLS0tLS0tCi1BWFJvbGU6IEFYQ2VsbAorQVhSb2xlOiBBWENvbHVtbkhlYWRlcgogQVhQYXJl
bnQ6IEFYUm93CiBBWENoaWxkcmVuOiAwCiBBWFBvc2l0aW9uOiAgeyA0MDkuMDAwLCA5LjAwMDAw
IH0KQEAgLTM4NSwxNCArMzg1LDE0IEBAIEFYRGVzY3JpcHRpb246CiBBWFZhbHVlOiBiCiBBWEZv
Y3VzYWJsZTogMAogQVhGb2N1c2VkOiAwCi1BWFNlbGVjdGFibGU6IDEKK0FYU2VsZWN0YWJsZTog
MAogQVhTZWxlY3RlZDogMAogQVhNdWx0aVNlbGVjdGFibGU6IDAKIEFYRW5hYmxlZDogMQogQVhF
eHBhbmRlZDogMAogQVhSZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCi1BWFBsYXRmb3JtQXR0cmli
dXRlczogY29tcHV0ZWQtcm9sZTpjZWxsLCB0YWc6dGQKK0FYUGxhdGZvcm1BdHRyaWJ1dGVzOiBj
b21wdXRlZC1yb2xlOmNvbHVtbmhlYWRlciwgdGFnOnRkCiAtLS0tLS0tLS0tLS0KIEFYUm9sZTog
QVhSb3dIZWFkZXIKIEFYUGFyZW50OiBBWFJvdwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L3RhYmxlLXRoZWFkLXRmb290LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvYWNjZXNzaWJpbGl0eS90YWJsZS10aGVhZC10Zm9v
dC1leHBlY3RlZC50eHQKaW5kZXggOGY2ZDI2OWMzMGE2Li5kYzNhNGQwNmMxYmYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvYWNjZXNzaWJpbGl0eS90YWJsZS10aGVhZC10
Zm9vdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9hY2Nlc3Np
YmlsaXR5L3RhYmxlLXRoZWFkLXRmb290LWV4cGVjdGVkLnR4dApAQCAtMzcsNyArMzcsNyBAQCBB
WFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKIEFYUGxhdGZvcm1BdHRyaWJ1dGVzOiBjb21wdXRl
ZC1yb2xlOmNvbHVtbmhlYWRlciwgdGFnOnRoCiAtLS0tLS0tLS0tLS0KLUFYUm9sZTogQVhDZWxs
CitBWFJvbGU6IEFYQ29sdW1uSGVhZGVyCiBBWFBhcmVudDogQVhSb3cKIEFYQ2hpbGRyZW46IDAK
IEFYUG9zaXRpb246ICB7IDQwOS4wMDAsIDYzLjAwMDAgfQpAQCAtNDcsMTQgKzQ3LDE0IEBAIEFY
RGVzY3JpcHRpb246CiBBWFZhbHVlOiBiCiBBWEZvY3VzYWJsZTogMAogQVhGb2N1c2VkOiAwCi1B
WFNlbGVjdGFibGU6IDEKK0FYU2VsZWN0YWJsZTogMAogQVhTZWxlY3RlZDogMAogQVhNdWx0aVNl
bGVjdGFibGU6IDAKIEFYRW5hYmxlZDogMQogQVhFeHBhbmRlZDogMAogQVhSZXF1aXJlZDogMAog
QVhDaGVja2VkOiAwCi1BWFBsYXRmb3JtQXR0cmlidXRlczogY29tcHV0ZWQtcm9sZTpjZWxsLCB0
YWc6dGQKK0FYUGxhdGZvcm1BdHRyaWJ1dGVzOiBjb21wdXRlZC1yb2xlOmNvbHVtbmhlYWRlciwg
dGFnOnRkCiAtLS0tLS0tLS0tLS0KIAogQVhSb2xlOiBBWENvbHVtbkhlYWRlcgpAQCAtMjI3LDcg
KzIyNyw3IEBAIEFYUmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAogQVhQbGF0Zm9ybUF0dHJpYnV0
ZXM6IGNvbXB1dGVkLXJvbGU6Y29sdW1uaGVhZGVyLCB0YWc6dGgKIC0tLS0tLS0tLS0tLQotQVhS
b2xlOiBBWENlbGwKK0FYUm9sZTogQVhDb2x1bW5IZWFkZXIKIEFYUGFyZW50OiBBWFJvdwogQVhD
aGlsZHJlbjogMAogQVhQb3NpdGlvbjogIHsgNDA5LjAwMCwgNjMuMDAwMCB9CkBAIC0yMzcsMTQg
KzIzNywxNCBAQCBBWERlc2NyaXB0aW9uOgogQVhWYWx1ZTogYgogQVhGb2N1c2FibGU6IDAKIEFY
Rm9jdXNlZDogMAotQVhTZWxlY3RhYmxlOiAxCitBWFNlbGVjdGFibGU6IDAKIEFYU2VsZWN0ZWQ6
IDAKIEFYTXVsdGlTZWxlY3RhYmxlOiAwCiBBWEVuYWJsZWQ6IDEKIEFYRXhwYW5kZWQ6IDAKIEFY
UmVxdWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAotQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGNvbXB1dGVk
LXJvbGU6Y2VsbCwgdGFnOnRkCitBWFBsYXRmb3JtQXR0cmlidXRlczogY29tcHV0ZWQtcm9sZTpj
b2x1bW5oZWFkZXIsIHRhZzp0ZAogLS0tLS0tLS0tLS0tCiBBWFJvbGU6IEFYUm93SGVhZGVyCiBB
WFBhcmVudDogQVhSb3cKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggZGQ5Y2Y4OGY0MmVhLi5iZGFjNmU4YzA3MTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMTgzLDYgKzIxODMsNyBAQCBhY2Nlc3NpYmlsaXR5
L2RpYWxvZy1zbG90dGVkLWNvbnRlbnQuaHRtbCBbIFBhc3MgXQogYWNjZXNzaWJpbGl0eS9kaXNw
bGF5LWNvbnRlbnRzL2R5bmFtaWNhbGx5LWFkZGVkLWNoaWxkcmVuLmh0bWwgWyBQYXNzIF0KIGFj
Y2Vzc2liaWxpdHkvZGlzcGxheS1jb250ZW50cy9lbGVtZW50LXJvbGVzLmh0bWwgWyBQYXNzIF0K
IGFjY2Vzc2liaWxpdHkvZGlzcGxheS1jb250ZW50cy9vYmplY3Qtb3JkZXJpbmcuaHRtbCBbIFBh
c3MgXQorYWNjZXNzaWJpbGl0eS9kaXNwbGF5LWNvbnRlbnRzL3RhYmxlLmh0bWwgWyBQYXNzIF0K
IGFjY2Vzc2liaWxpdHkvZHluYW1pY2FsbHktaWdub3JlZC1jYW52YXMuaHRtbCBbIFBhc3MgXQog
YWNjZXNzaWJpbGl0eS9lbGVtZW50LWhhc3BvcHVwLmh0bWwgWyBQYXNzIF0KIGFjY2Vzc2liaWxp
dHkvZW1wdHktdGV4dC11bmRlci1lbGVtZW50LWNhY2hlZC5odG1sIFsgUGFzcyBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvYWNjZXNzaWJpbGl0eS9kaXNwbGF5LWNvbnRl
bnRzL3RhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9hY2Nlc3Np
YmlsaXR5L2Rpc3BsYXktY29udGVudHMvdGFibGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjVmMTY5MjMzZjczCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2FjY2Vzc2liaWxpdHkvZGlzcGxheS1jb250ZW50
cy90YWJsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAorVGhpcyB0ZXN0IGVuc3VyZXMg
dGhhdCBhIHRhYmxlIHdpdGggZGlzcGxheTpjb250ZW50cyBjb21wb25lbnRzIGlzIGFjY2Vzc2li
bGUuCisKK1BBU1M6IHRhYmxlLnJvd0NvdW50ID09PSA0CitQQVNTOiB0YWJsZS5jb2x1bW5Db3Vu
dCA9PT0gMworUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKS5kb21JZGVudGlm
aWVyID09PSAicjBjMCIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMCkuZG9t
SWRlbnRpZmllciA9PT0gInIwYzEiCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIs
IDApLmRvbUlkZW50aWZpZXIgPT09ICJyMGMyIgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFu
ZFJvdygwLCAxKS5kb21JZGVudGlmaWVyID09PSAicjFjMCIKK1BBU1M6IHRhYmxlLmNlbGxGb3JD
b2x1bW5BbmRSb3coMSwgMSkuZG9tSWRlbnRpZmllciA9PT0gInIxYzEiCitQQVNTOiB0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDIsIDEpLmRvbUlkZW50aWZpZXIgPT09ICJyMWMyIgorUEFTUzog
dGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAyKS5kb21JZGVudGlmaWVyID09PSAicjJjMCIK
K1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMikuZG9tSWRlbnRpZmllciA9PT0g
InIyYzEiCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpLmRvbUlkZW50aWZp
ZXIgPT09ICJyMmMyIgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKS5kb21J
ZGVudGlmaWVyID09PSAicjNjMCIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwg
MykuZG9tSWRlbnRpZmllciA9PT0gInIzYzEiCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5k
Um93KDIsIDMpLmRvbUlkZW50aWZpZXIgPT09ICJyM2MyIgorCitQZXJmb3JtaW5nIHNlYXJjaCB0
cmF2ZXJzYWwgb2YgYm9keS4KKwore1N0YXRpY1RleHQgQVhMYWJlbDogQXV0aG9yfQorCit7U3Rh
dGljVGV4dCBBWExhYmVsOiBUaXRsZX0KKwore1N0YXRpY1RleHQgQVhMYWJlbDogWWVhcn0KKwor
e1N0YXRpY1RleHQgQVhMYWJlbDogU3RlcGhlbiBIYXdraW5nfQorCit7U3RhdGljVGV4dCBBWExh
YmVsOiBBIEJyaWVmIEhpc3Rvcnkgb2YgVGltZX0KKwore1N0YXRpY1RleHQgQVhMYWJlbDogMTk4
OH0KKwore1N0YXRpY1RleHQgQVhMYWJlbDogQ2FybCBTYWdhbn0KKwore1N0YXRpY1RleHQgQVhM
YWJlbDogQ29zbW9zfQorCit7U3RhdGljVGV4dCBBWExhYmVsOiAxOTgwfQorCit7U3RhdGljVGV4
dCBBWExhYmVsOiBXaWxsIEdhdGVyfQorCit7U3RhdGljVGV4dCBBWExhYmVsOiBUaGUgTXlzdGVy
aWVzIG9mIHRoZSBVbml2ZXJzZX0KKwore1N0YXRpY1RleHQgQVhMYWJlbDogMjAyMH0KKwore1Rh
YmxlfQorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
K1RoaXMgaXMgYSB0YWJsZSBjYXB0aW9uCitBdXRob3IgVGl0bGUgWWVhcgorU3RlcGhlbiBIYXdr
aW5nIEEgQnJpZWYgSGlzdG9yeSBvZiBUaW1lIDE5ODgKK0NhcmwgU2FnYW4gQ29zbW9zIDE5ODAK
K1dpbGwgR2F0ZXIgVGhlIE15c3RlcmllcyBvZiB0aGUgVW5pdmVyc2UgMjAyMAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZGU0NmQwNTRm
NmQ3Li5lODM1NGE5N2I3OTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTgwOCw2ICs4MDgsMTEgQEAgYWNjZXNzaWJpbGl0eS9jdXN0b20t
ZWxlbWVudHMvIFsgU2tpcCBdCiBhY2Nlc3NpYmlsaXR5L2F4LW9iamVjdC1kZXN0cm95ZWQtb24t
cmVsb2FkLmh0bWwgWyBTa2lwIF0KIGFjY2Vzc2liaWxpdHkvcGFnZS1yZWxvYWQtZGVhZGxvY2su
aHRtbCBbIFNraXAgXQogCisjIFNraXAgYmVjYXVzZSBXSzEgZG9lc24ndCBzZWVtIHRvIHN1cHBv
cnQgRWxlbWVudDo6c2V0QXR0cmlidXRlLgorYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4u
aHRtbCBbIFNraXAgXQorYWNjZXNzaWJpbGl0eS9keW5hbWljLWNvbHNwYW4uaHRtbCBbIFNraXAg
XQorYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwgWyBTa2lwIF0g
CisKICMgTWlzc2luZyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luZGV0ZXJtaW5hdGUoKSBp
bXBsZW1lbnRhdGlvbi4KIGFjY2Vzc2liaWxpdHkvcHJvZ3Jlc3MtaW5kZXRlcm1pbmF0ZS12YWx1
ZS5odG1sIFsgU2tpcCBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L2dlbmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10YWJsZS1jcmFzaC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9nZW5l
cmF0ZWQtY29udGVudC13aXRoLWRpc3BsYXktdGFibGUtY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4
IGY1MTg4MDRlYTI0My4uN2NiYTQxNzY2NzA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9nZW5lcmF0ZWQtY29udGVudC13aXRoLWRpc3BsYXktdGFi
bGUtY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L2dlbmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10YWJsZS1jcmFzaC1leHBl
Y3RlZC50eHQKQEAgLTcsNyArNyw4IEBAIEFYUm9sZTogQVhXZWJBcmVhIEFYVmFsdWU6CiAgICAg
ICAgIEFYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IGZvbwogICAgICAgICBBWFJvbGU6IEFY
U3RhdGljVGV4dCBBWFZhbHVlOiAhCiAgICAgQVhSb2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1ZTog
YmFyCi0gICAgQVhSb2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1ZTogIQorICAgIEFYUm9sZTogQVhH
cm91cCBBWFZhbHVlOgorICAgICAgICBBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiAhCiAg
ICAgQVhSb2xlOiBBWEdyb3VwIEFYVmFsdWU6CiAgICAgICAgIEFYUm9sZTogQVhTdGF0aWNUZXh0
IEFYVmFsdWU6IGJhegogICAgIEFYUm9sZTogQVhHcm91cCBBWFZhbHVlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466792</attachid>
            <date>2023-06-22 01:19:31 -0700</date>
            <delta_ts>2023-06-22 10:51:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-258223-20230622011930.patch</filename>
            <type>text/plain</type>
            <size>175942</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSA1N2NmYTAzNzNmODg5YzE5MGFjZDI1ODZkMjU1OWRiYTExYmIyOTBjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCAxNiBKdW4gMjAyMyAxNDo1MToxMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIEFYOiBN
b3ZlCiBOU0FjY2Vzc2liaWxpdHlDZWxsRm9yQ29sdW1uQW5kUm93UGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSBBUEkgb2ZmIHRoZQogbWFpbi10aHJlYWQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI1ODIyMwogcmRhcjovL3Byb2JsZW0vMTEwOTE5ODgzCgpSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCldpdGggdGhpcyBwYXRjaCwgd2UgcmVwbGFjZSB0aGUgZXhpc3Rp
bmcgcmVuZGVyLXRyZWUtYmFzZWQgY29sdW1uIGFuZApyb3cgY2VsbCBzbG90IGRldGVybWluYXRp
b24gYWxnb3JpdGhtIHdpdGggYSBjdXN0b20gb25lIGJhc2VkIG9uOgoKaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjZm9ybWluZy1hLXRhYmxlCgpXZSB1
c2UgdGhpcyBmb3JtaW5nLWEtdGFibGUgYWxnb3JpdGhtIHRvIGJ1aWxkIGEgbmV3IGRhdGEgc3Ry
dWN0dXJlCmluZGljYXRpbmcgdGhlIGNlbGwgQVhJRCBvY2N1cGllZCBieSBlYWNoICJzbG90IiBp
biB0aGUgdGFibGU6IGBBY2Nlc3NpYmlsaXR5VGFibGU6Om1fc2xvdEdyaWRgCgpUaGlzIGhhcyB0
d28gYmVuZWZpdHM6CiAgMS4gV2UgY2FuIChhbmQgZG8pIGNvcHkgdGhpcyBkYXRhIHN0cnVjdHVy
ZSB0byB0aGUgc2Vjb25kYXJ5IHRocmVhZCwKICAgICBhbmQgdXNlIGl0IHRvIHBlcmZvcm0gYEFY
SXNvbGF0ZWRPYmplY3Q6OmNlbGxGb3JDb2x1bW5BbmRSb3dgCiAgICAgd2l0aG91dCByZWx5aW5n
IG9uIHRoZSBtYWluLXRocmVhZC4KCiAgMi4gVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgYWxn
b3JpdGhtIGRvZXMgbm90IHJlbHkgb24gYW55IHNvcnQgb2YKICAgICByZW5kZXIgdHJlZSBzdHJ1
Y3R1cmUgZm9yIGNvcnJlY3RuZXNzLiBUaGlzIGlzIGtleSBiZWNhdXNlIGF1dGhvcnMKICAgICBl
eHBlY3QgdG8gYmUgYWJsZSB0byBwdXQgYW55IENTUyBgZGlzcGxheWAgdmFsdWUgKGZsZXgsIGNv
bnRlbnRzLCBibG9jaywgZXRjKQogICAgIG9uIHJvd3MsIGNlbGxzLCBhbmQgdGFibGVzLCBhbmQg
cHJlc2VydmUgYWNjZXNzaWJpbGl0eSBzZW1hbnRpY3MuCiAgICAgVGhpcyBkaWRuJ3Qgd29yayBi
ZWZvcmUgdGhpcyBwYXRjaCBiZWNhdXNlIGFueSBvZiB0aGVzZSBkaXNwbGF5CiAgICAgdmFsdWVz
IHByZXZlbnQgUmVuZGVyVGFibGUsIFJlbmRlclRhYmxlUm93LCBhbmQgUmVuZGVyVGFibGVDZWxs
cwogICAgIGZyb20gYmVpbmcgZ2VuZXJhdGVkLCB3aGljaCB0aGUgUmVuZGVyVGFibGUgY2VsbC1m
b3ItY29sdW1uLWFuZC1yb3cKICAgICBtZWNoYW5pc20gcmVsaWVzIG9uLgoKVGhpcyBwYXRjaCBk
b2VzIG5vdCBmdWxseSBmaXggbm9uLXN0YW5kYXJkLWRpc3BsYXkgdmFsdWUgdGFibGVzIGR1ZSB0
bwppc3N1ZXMgd2l0aCBwYXJlbnQtY2hpbGQgbWlzbWF0Y2hlcyBpbiB0YWJsZSBoaWVyYXJjaGll
cyB3aXRoIHRoZXNlCmRpc3BsYXkgdmFsdWVzLiBUaGF0IHdpbGwgYmUgZml4ZWQgaW4gYSBsYXRl
ciBwYXRjaC4KClRoaXMgcGF0Y2ggYWxzbyBmZWF0dXJlcyBzZXZlcmFsIG90aGVyIGltcHJvdmVt
ZW50cy4KCiAgMS4gQVhQcm9wZXJ0eU5hbWU6OlJvd0NvdW50IGFuZCBBWFByb3BlcnR5TmFtZTo6
Q29sdW1uQ291bnQgd2VyZQogICAgIHBvaW50bGVzc2x5IGNhY2hlZCByYXRoZXIgdGhhbiBzaW1w
bHkgY291bnRpbmcgQVhQcm9wZXJ0eU5hbWU6OlJvd3MKICAgICBhbmQgQVhQcm9wZXJ0eU5hbWU6
OkNvbHVtbnMgKGFzIHRoZSBsaXZlIHRyZWUgaW1wbGVtZW50YXRpb24gZG9lcykuCiAgICAgVGhl
c2UgcHJvcGVydGllcyBhcmUgcmVtb3ZlZCwgcmVkdWNpbmcgbWVtb3J5IGFuZCBDUFUgY29uc3Vt
cHRpb24uCgogIDIuIEZpeGVkIGEgYnVnIHdoZXJlIHN0YWxlIGRhdGEgd2FzIG5vdCB1cGRhdGVk
IGFmdGVyIGR5bmFtaWMKICAgICBhcmlhLWNvbHNwYW4gY2hhbmdlcy4KCiAgMy4gRml4ZWQgYSBi
dWcgd2hlcmUgdGFibGUncyBjb2x1bW5zIHdlcmUgbm90IHVwZGF0ZWQgYWZ0ZXIgaXRzCiAgICAg
cm93cyBjaGlsZHJlbiBjaGFuZ2VkICh3aGljaCBjYW4gZWZmZWN0IGNvbHVtbnMpLgoKICA0LiBG
aXhlZCBhIHBlcmZvcm1hbmNlIGlzc3VlIHdoZXJlIGBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpp
c1RhYmxlQ2VsbGAsCiAgICAgdXNlZCB0byB0eXBlY2hlY2sgaXM8QWNjZXNzaWJpbGl0eVRhYmxl
Q2VsbD4sIGRpZCBhIGBwYXJlbnRUYWJsZSgpYAogICAgIHRyYXZlcnNhbC4gVGhpcyBpcyBjb25m
dXNpbmcgYW5kIHZlcnkgbm9uLXBlcmZvcm1hbnQuIEEgbmV3CiAgICAgYGlzRXhwb3NlZFRhYmxl
Q2VsbGAgZnVuY3Rpb24gaXMgYWRkZWQgbWFraW5nIHRoaXMgaW50ZW50IG1vcmUKICAgICBjbGVh
ciwgYW5kIGltcHJvdmluZyBwZXJmb3JtYW5jZSBpbiB0aGUgYXJlYXMgdGhhdCBkb24ndCBuZWVk
IHRoaXMKICAgICB0cmF2ZXJzYWwuCgogIDUuIEFsbG93IGNyZWF0aW5nIEFjY2Vzc2liaWxpdHlU
YWJsZSwgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCwgYW5kCiAgICAgQWNjZXNzaWJpbGl0eVRhYmxl
Um93IHdpdGggbm8gcmVuZGVyZXIsIHdoaWNoIGlzIGNydWNpYWwgZm9yCiAgICAgZGlzcGxheTpj
b250ZW50cyBzdXBwb3J0LgoKVGhyZWUgdGVzdHMgYXJlIGFkZGVkIHRvIGVuc3VyZSB0aGUgc2xv
dC1ncmlkIGlzIHVwZGF0ZWQgYWZ0ZXIgZHluYW1pYyBjaGFuZ2VzOgogIC0gYWNjZXNzaWJpbGl0
eS9keW5hbWljLWNvbHNwYW4uaHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4u
aHRtbAogIC0gYWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKClRo
aXMgcGF0Y2ggYWxzbyBwcm9ncmVzc2VzIGRpc3BsYXk6Y29udGVudHMgdGFibGUgYWNjZXNzaWJp
bGl0eS4gTmV3CnRlc3QgYWNjZXNzaWJpbGl0eS9kaXNwbGF5LWNvbnRlbnRzL3RhYmxlLmh0bWwg
aXMgYWRkZWQgdG8gY292ZXIgdGhpcy4KCiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LXRhYmxlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvY3VzdG9tLWVsZW1lbnRzL3RhYmxlLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9keW5hbWljLWNvbHNwYW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi1leHBlY3RlZC50eHQ6IEFkZGVkLgoqIExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1yb3dzcGFuLmh0bWw6IEFkZGVkLgoqIExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1k
ZXNjZW5kYW50cy5odG1sOiBBZGRlZC4KKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3Qt
ZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dDoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3Qt
ZGV0ZWN0aW9uLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1pbmNvcnJl
Y3QtY29sc3Bhbi1jZWxsLWV4cGVjdGVkLnR4dDoKKiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3RhYmxlLW11bHRpcGxlLXRib2RpZXMtZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvdGFibGUtdGhlYWQtdGZvb3QtZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2dlbmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10
YWJsZS1jcmFzaC1leHBlY3RlZC50eHQ6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WExvZ2dlci5jcHA6CihXZWJDb3JlOjpvcGVyYXRvcjw8KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgooV2ViQ29yZTo6bm9kZUhhc0dyaWRSb2xlKToK
KFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRhYmxlKToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0
eVRhYmxlUm93KToKKFdlYkNvcmU6OmlzQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCk6CihXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpjcmVhdGVPYmplY3RGcm9tUmVuZGVyZXIpOgooV2ViQ29yZTo6Y3Jl
YXRlRnJvbU5vZGUpOgooV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQ2hpbGRyZW5DaGFu
Z2VkKToKKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZVJlY29tcHV0ZVNsb3RHcmlkKToK
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2UpOgoo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlKToKKFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1EZWZlcnJlZENhY2hlVXBkYXRlKToKKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6OnVwZGF0ZUlzb2xhdGVkVHJlZSk6CihXZWJDb3JlOjpBWE9iamVjdENhY2hl
OjpkZWZlclJlY29tcHV0ZVRhYmxlU2xvdEdyaWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oOgooV2ViQ29yZTo6bm9kZUhhc0dyaWRSb2xlKToKKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmRlZmVyUmVjb21wdXRlVGFibGVTbG90R3JpZCk6CihXZWJDb3Jl
OjpBWE9iamVjdENhY2hlOjpoYW5kbGVSZWNvbXB1dGVTbG90R3JpZCk6CiogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZFJvd0Rlc2NlbmRhbnQpOiBEZWxldGVkLgooV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRDaGlsZHJlbik6IERlbGV0ZWQuCiogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaDoKKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgoo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbDo6cm93SW5kZXhSYW5nZSBjb25zdCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpheFJvd1NwYW5X
aXRoUm93SW5kZXggY29uc3QpOiBEZWxldGVkLgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmg6CiogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVkQ2VsbHMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2xvdEdyaWQpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdEludGVyZmFjZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlLmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6QWNjZXNz
aWJpbGl0eVRhYmxlKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKToKKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUgY29uc3QpOgooV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3Np
YmlsaXR5IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6cmVjb21wdXRlSXNF
eHBvc2FibGUpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpzbG90R3JpZCk6CihXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OnNldFNsb3RHcmlkRGlydHkpOgooV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNoaWxkcmVuKToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
YWJsZTo6YWRkQ2hpbGRyZW4pOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjpjZWxsRm9y
Q29sdW1uQW5kUm93KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93KToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6ZW5zdXJlUm93QW5kQ29sdW1uKToKKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZTo6aXNFeHBvc2FibGUgY29uc3QpOiBEZWxldGVkLgooV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjphZGRUYWJsZUNlbGxDaGlsZCk6IERlbGV0ZWQuCihX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuRnJvbVNlY3Rpb24pOiBEZWxl
dGVkLgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmg6
CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNw
cDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OkFjY2Vzc2liaWxpdHlUYWJsZUNl
bGwpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKToKKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkIGNv
bnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzRXhwb3NlZFRhYmxlQ2Vs
bCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nl
c3NpYmlsaXR5Um9sZSk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxl
SGVhZGVyQ2VsbCBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpwYXJl
bnRSb3cgY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93SW5kZXhS
YW5nZSBjb25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2x1bW5JbmRl
eFJhbmdlIGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnRpdGxlVUlF
bGVtZW50IGNvbnN0KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1u
SW5kZXggY29uc3QpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cm93U3BhbiBj
b25zdCk6CihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb2xTcGFuIGNvbnN0KToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmlzVGFibGVDZWxsIGNvbnN0KTogRGVs
ZXRlZC4KKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Q29sdW1uU3BhbiBjb25z
dCk6IERlbGV0ZWQuCihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpheFJvd1NwYW4g
Y29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5oOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6c2V0Um93
SW5kZXgpOgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6c2V0Q29sdW1uSW5kZXgp
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6Y29sdW1uSGVhZGVyKToK
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6YWRkQ2hpbGRyZW4pOgooV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpoZWFkZXJPYmplY3RGb3JTZWN0aW9uKTogRGVs
ZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbi5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6QWNjZXNzaWJpbGl0eVRh
YmxlUm93KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6Y3JlYXRlKToKKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6aGVhZGVyT2JqZWN0KToKKiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oOgoqIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQXRzcGkuY3BwOgoq
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRh
YmxlQ2VsbEF0c3BpLmNwcDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgdGFibGVDZWxsUGFyZW50XSk6CigtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGFjY2Vzc2liaWxpdHlIZWFkZXJFbGVtZW50c10pOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwOgooV2ViQ29yZTo6QVhJ
c29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgooV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6Y2VsbEZvckNvbHVtbkFuZFJvdyk6CihXZWJDb3JlOjpBWElzb2xhdGVkT2JqZWN0
Ojppc1RhYmxlQ2VsbCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKFdlYkNvcmU6OkFYSXNvbGF0ZWRU
cmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyk6CihXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBk
YXRlTm9kZUFuZERlcGVuZGVudFByb3BlcnRpZXMpOgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmg6CiogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CigtW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORF0pOgooLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6XSk6Ci0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExv
Z2dlci5jcHAgICAgIHwgICA0ICsKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAgICB8IDEyMSArKy0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oICB8ICAxNCArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcCAgIHwgIDgyIC0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdy
aWQuaCAgICAgfCAgIDcgKy0KIC4uLi9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcCAgICAg
ICAgICAgICB8IDEwNyAtLS0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZENlbGwuaCB8ICAgNiAtCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVj
dC5jcHAgfCAgIDIgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
ICAgICB8ICAgMiArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oICAg
ICAgIHwgICAyICsKIC4uLi9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggICAgICAgICAg
ICB8ICAgMSArCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmgg
fCAgIDIgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAgICAgICB8
IDcxNiArKysrKysrKysrKy0tLS0tLS0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZS5oICAgICAgICB8ICAzNiArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbC5jcHAgIHwgMTQxICsrLS0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZUNlbGwuaCAgICB8ICAyOCArLQogLi4uL0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5jcHAg
ICAgICAgICAgICAgIHwgMTIzICstLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlQ29sdW1uLmggIHwgICAzIC0KIC4uLi9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZVJvdy5jcHAgICB8ICAyOCArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmggICAgIHwgICAyICsKIC4uLi9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNw
aS5jcHAgICB8ICAgMiArLQogLi4uL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNwaS5j
cHAgICAgIHwgICAyICstCiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tICAgfCAgIDQgKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAgICAg
ICAgICB8ICAzNiArLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggICAgICAg
ICAgIHwgIDExICstCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCAgICAgICAg
ICAgfCAgMjMgKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAg
ICB8ICAgNyArLQogLi4uL21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAg
IHwgICA0ICstCiAuLi4vYXJpYS10YWJsZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dCAgICAgICAg
fCAgIDIgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0cmlidXRlcy5odG1sICB8
ICAgOCArLQogLi4uL2N1c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQgICAgICAgIHwg
ICA0ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUuaHRtbCAgfCAg
IDQgKy0KIC4uLi9kaXNwbGF5LWNvbnRlbnRzL3RhYmxlLWV4cGVjdGVkLnR4dCAgICAgICB8ICA4
OCArKysKIC4uLi9hY2Nlc3NpYmlsaXR5L2Rpc3BsYXktY29udGVudHMvdGFibGUuaHRtbCB8ICA4
MiArKwogLi4uL2R5bmFtaWMtY29sc3Bhbi1leHBlY3RlZC50eHQgICAgICAgICAgICAgIHwgIDIy
ICsKIC4uLi9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi5odG1sICAgICAgICB8ICA2OSAr
KwogLi4uL2R5bmFtaWMtcm93c3Bhbi1leHBlY3RlZC50eHQgICAgICAgICAgICAgIHwgIDIxICsK
IC4uLi9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi5odG1sICAgICAgICB8ICA2OCArKwog
Li4uL2R5bmFtaWMtdGFibGUtZGVzY2VuZGFudHMtZXhwZWN0ZWQudHh0ICAgIHwgIDMzICsKIC4u
Li9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwgICAgICAgICAgICB8IDEwNCArKysKIC4u
Li9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dCB8ICAgMiArLQogTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9saXN0LWRldGVjdGlvbi5odG1sIHwgICAyICstCiAuLi4v
dGFibGUtaW5jb3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQgfCAgMjYgKy0KIC4uLi90
YWJsZS1tdWx0aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dCAgICAgICB8ICAxNCArLQogLi4uL3Rh
YmxlLXRoZWFkLXRmb290LWV4cGVjdGVkLnR4dCAgICAgICAgICAgIHwgICA2ICstCiAuLi4vY3Vz
dG9tLWVsZW1lbnRzL3RhYmxlLWV4cGVjdGVkLnR4dCAgICAgICAgfCAgIDQgKy0KIC4uLi9kaXNw
bGF5LWNvbnRlbnRzL3RhYmxlLWV4cGVjdGVkLnR4dCAgICAgICB8ICAyOCArCiAuLi4vYWNjZXNz
aWJpbGl0eS9saXN0LWRldGVjdGlvbi1leHBlY3RlZC50eHQgfCAgIDIgKy0KIC4uLi90YWJsZS1t
dWx0aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4dCAgICAgICB8ICAxMiArLQogLi4uL3RhYmxlLXRo
ZWFkLXRmb290LWV4cGVjdGVkLnR4dCAgICAgICAgICAgIHwgIDEyICstCiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyAgICAgfCAgIDEgKwogLi4uL2Rpc3BsYXktY29u
dGVudHMvdGFibGUtZXhwZWN0ZWQudHh0ICAgICAgIHwgIDU0ICsrCiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgfCAgIDUgKwogLi4udGVudC13aXRoLWRpc3Bs
YXktdGFibGUtY3Jhc2gtZXhwZWN0ZWQudHh0IHwgICAzICstCiA1NCBmaWxlcyBjaGFuZ2VkLCAx
NDAwIGluc2VydGlvbnMoKyksIDc5MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Rpc3BsYXktY29udGVudHMvdGFibGUtZXhwZWN0ZWQu
dHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9kaXNwbGF5
LWNvbnRlbnRzL3RhYmxlLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi5odG1sCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5hbWljLXJvd3NwYW4tZXhw
ZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9k
eW5hbWljLXJvd3NwYW4uaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVzY2Vu
ZGFudHMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIv
YWNjZXNzaWJpbGl0eS9kaXNwbGF5LWNvbnRlbnRzL3RhYmxlLWV4cGVjdGVkLnR4dAogY3JlYXRl
IG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9hY2Nlc3NpYmlsaXR5L2Rpc3Bs
YXktY29udGVudHMvdGFibGUtZXhwZWN0ZWQudHh0CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYTG9nZ2VyLmNwcAppbmRleCAxZTQ3YTU1MjdjMWYuLmQ2MTM2YjFkNjM1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKQEAgLTIwMyw2ICsyMDMsNyBA
QCB2b2lkIEFYTG9nZ2VyOjpsb2coY29uc3QgU3RyaW5nJiBjb2xsZWN0aW9uTmFtZSwgY29uc3Qg
QVhPYmplY3RDYWNoZTo6RGVmZXJyZWRDbwogICAgICAgICBbJnNpemVdIChjb25zdCBWZWN0b3I8
c3RkOjpwYWlyPE5vZGUqLCBOb2RlKj4+JiB0eXBlZENvbGxlY3Rpb24pIHsgc2l6ZSA9IHR5cGVk
Q29sbGVjdGlvbi5zaXplKCk7IH0sCiAgICAgICAgIFsmc2l6ZV0gKGNvbnN0IFdlYWtIYXNoU2V0
PEVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2ZW50VGFyZ2V0RGF0YT4mIHR5cGVkQ29sbGVjdGlv
bikgeyBzaXplID0gdHlwZWRDb2xsZWN0aW9uLmNvbXB1dGVTaXplKCk7IH0sCiAgICAgICAgIFsm
c2l6ZV0gKGNvbnN0IFdlYWtIYXNoU2V0PEhUTUxUYWJsZUVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0
aEV2ZW50VGFyZ2V0RGF0YT4mIHR5cGVkQ29sbGVjdGlvbikgeyBzaXplID0gdHlwZWRDb2xsZWN0
aW9uLmNvbXB1dGVTaXplKCk7IH0sCisgICAgICAgIFsmc2l6ZV0gKGNvbnN0IFdlYWtIYXNoU2V0
PEFjY2Vzc2liaWxpdHlUYWJsZT4mIHR5cGVkQ29sbGVjdGlvbikgeyBzaXplID0gdHlwZWRDb2xs
ZWN0aW9uLmNvbXB1dGVTaXplKCk7IH0sCiAgICAgICAgIFtdIChhdXRvJikgewogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MjQsNiAr
NDI1LDkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiBzdHJlYW0sIEFYT2Jq
ZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uIG5vdGlmaWMKICAgICBjYXNlIEFYT2JqZWN0Q2FjaGU6
OkFYTm90aWZpY2F0aW9uOjpBWEF1dG9maWxsVHlwZUNoYW5nZWQ6CiAgICAgICAgIHN0cmVhbSA8
PCAiQVhBdXRvZmlsbFR5cGVDaGFuZ2VkIjsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBWE9i
amVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhDZWxsU2xvdHNDaGFuZ2VkOgorICAgICAgICBz
dHJlYW0gPDwgIkFYQ2VsbFNsb3RzQ2hhbmdlZCI7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
QVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAg
ICAgICAgc3RyZWFtIDw8ICJBWENoZWNrZWRTdGF0ZUNoYW5nZWQiOwogICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4
IGYyZTg3YzMyZmE1NS4uYTE5NDJjMzNlMTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTg5LDYgKzg5LDcgQEAKICNpbmNsdWRlICJI
VE1MU2VsZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MVGFibGVQYXJ0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5saW5lUnVuQW5kT2Zmc2V0
LmgiCkBAIC01NzYsNiArNTc3LDE2IEBAIGJvb2wgbm9kZUhhc1JvbGUoTm9kZSogbm9kZSwgU3Ry
aW5nVmlldyByb2xlKQogICAgIHJldHVybiBTcGFjZVNwbGl0U3RyaW5nOjpzcGFjZVNwbGl0U3Ry
aW5nQ29udGFpbnNWYWx1ZShyb2xlVmFsdWUsIHJvbGUsIFNwYWNlU3BsaXRTdHJpbmc6OlNob3Vs
ZEZvbGRDYXNlOjpZZXMpOwogfQogCitib29sIG5vZGVIYXNHcmlkUm9sZShOb2RlKiBub2RlKQor
eworICAgIHJldHVybiBub2RlSGFzUm9sZShub2RlLCAiZ3JpZCJfcykgfHwgbm9kZUhhc1JvbGUo
bm9kZSwgInRhYmxlIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAidHJlZWdyaWQiX3MpOworfQor
Citib29sIG5vZGVIYXNDZWxsUm9sZShOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlICYm
IChub2RlSGFzUm9sZShub2RlLCAiZ3JpZGNlbGwiX3MpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJj
ZWxsIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAiY29sdW1uaGVhZGVyIl9zKSB8fCBub2RlSGFz
Um9sZShub2RlLCAicm93aGVhZGVyIl9zKSk7Cit9CisKIHN0YXRpYyBib29sIGlzU2ltcGxlSW1h
Z2UoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKICAgICBpZiAoIWlzPFJlbmRlcklt
YWdlPihyZW5kZXJlcikpCkBAIC02MTgsNiArNjI5LDIxIEBAIHN0YXRpYyBib29sIGlzQWNjZXNz
aWJpbGl0eVRyZWVJdGVtKE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGVIYXNSb2xlKG5vZGUs
ICJ0cmVlaXRlbSJfcyk7CiB9CiAKK3N0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRhYmxlKE5v
ZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIGlzPEhUTUxUYWJsZUVsZW1lbnQ+KG5vZGUpOworfQor
CitzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlUYWJsZVJvdyhOb2RlKiBub2RlKQoreworICAg
IHJldHVybiBpczxIVE1MVGFibGVSb3dFbGVtZW50Pihub2RlKTsKK30KKworc3RhdGljIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIGlzPEhU
TUxUYWJsZUNlbGxFbGVtZW50Pihub2RlKTsKK30KKwogUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+
IEFYT2JqZWN0Q2FjaGU6OmNyZWF0ZU9iamVjdEZyb21SZW5kZXJlcihSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQogewogICAgIC8vIEZJWE1FOiBIb3cgY291bGQgcmVuZGVyZXItPm5vZGUoKSBldmVy
IG5vdCBiZSBhbiBFbGVtZW50PwpAQCAtNjI3LDcgKzY1Myw3IEBAIFJlZjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBBWE9iamVjdENhY2hlOjpjcmVhdGVPYmplY3RGcm9tUmVuZGVyZXIoUmVuZGVyT2Jq
ZWN0KiByCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TGlzdDo6Y3JlYXRlKHJlbmRlcmVy
KTsKIAogICAgIC8vIGFyaWEgdGFibGVzCi0gICAgaWYgKG5vZGVIYXNSb2xlKG5vZGUsICJncmlk
Il9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAidHJlZWdyaWQiX3MpIHx8IG5vZGVIYXNSb2xlKG5v
ZGUsICJ0YWJsZSJfcykpCisgICAgaWYgKG5vZGVIYXNHcmlkUm9sZShub2RlKSkKICAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBR3JpZDo6Y3JlYXRlKHJlbmRlcmVyKTsKICAgICBpZiAo
bm9kZUhhc1JvbGUobm9kZSwgInJvdyJfcykpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRSb3c6OmNyZWF0ZShyZW5kZXJlcik7CkBAIC02NzIsMTEgKzY5OCwxMSBAQCBSZWY8
QWNjZXNzaWJpbGl0eU9iamVjdD4gQVhPYmplY3RDYWNoZTo6Y3JlYXRlT2JqZWN0RnJvbVJlbmRl
cmVyKFJlbmRlck9iamVjdCogcgogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU1lbnVMaXN0
OjpjcmVhdGUoZG93bmNhc3Q8UmVuZGVyTWVudUxpc3Q+KHJlbmRlcmVyKSk7CiAKICAgICAvLyBz
dGFuZGFyZCB0YWJsZXMKLSAgICBpZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKSkKKyAgICBp
ZiAoaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKSB8fCBpc0FjY2Vzc2liaWxpdHlUYWJsZShub2Rl
KSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZTo6Y3JlYXRlKHJlbmRlcmVyKTsK
LSAgICBpZiAoaXM8UmVuZGVyVGFibGVSb3c+KHJlbmRlcmVyKSkKKyAgICBpZiAoaXM8UmVuZGVy
VGFibGVSb3c+KHJlbmRlcmVyKSB8fCBpc0FjY2Vzc2liaWxpdHlUYWJsZVJvdyhub2RlKSkKICAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6Y3JlYXRlKHJlbmRlcmVyKTsKLSAg
ICBpZiAoaXM8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcikpCisgICAgaWYgKChpczxSZW5kZXJU
YWJsZUNlbGw+KHJlbmRlcmVyKSAmJiAhcmVuZGVyZXItPmlzQW5vbnltb3VzKCkpIHx8IGlzQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbChub2RlKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmNyZWF0ZShyZW5kZXJlcik7CiAKICAgICAvLyBwcm9ncmVzcyBiYXIKQEAgLTcw
Miw2ICs3MjgsMTIgQEAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGVGcm9t
Tm9kZShOb2RlJiBub2RlKQogewogICAgIGlmIChpc0FjY2Vzc2liaWxpdHlMaXN0KCZub2RlKSkK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlMaXN0OjpjcmVhdGUobm9kZSk7CisgICAgaWYg
KGlzQWNjZXNzaWJpbGl0eVRhYmxlKCZub2RlKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUYWJsZTo6Y3JlYXRlKG5vZGUpOworICAgIGlmIChpc0FjY2Vzc2liaWxpdHlUYWJsZVJvdygm
bm9kZSkpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZShub2Rl
KTsKKyAgICBpZiAoaXNBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKCZub2RlKSkKKyAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShub2RlKTsKICAgICBpZiAoaXNBY2Nl
c3NpYmlsaXR5VHJlZSgmbm9kZSkpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VHJlZTo6
Y3JlYXRlKG5vZGUpOwogICAgIGlmIChpc0FjY2Vzc2liaWxpdHlUcmVlSXRlbSgmbm9kZSkpCkBA
IC0xMTY0LDYgKzExOTYsMTEgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVDaGlsZHJlbkNo
YW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQogICAgIH0gZWxzZSBpZiAoaXM8QWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+KG9iamVjdCkpIHsKICAgICAgICAgZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+KG9iamVjdCkuaGFuZGxlQ2hpbGRyZW5DaGFuZ2VkKCk7
CiAgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKGF1dG8qIGF4VGFibGUgPSBkeW5hbWlj
RG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihvYmplY3QpKQorICAgICAgICBkZWZlclJlY29t
cHV0ZVRhYmxlQ2VsbFNsb3RzKCpheFRhYmxlKTsKKyAgICBlbHNlIGlmIChhdXRvKiBheFJvdyA9
IGR5bmFtaWNEb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KG9iamVjdCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHBhcmVudFRhYmxlID0gYXhSb3ctPnBhcmVudFRhYmxlKCkpCisgICAgICAg
ICAgICBkZWZlclJlY29tcHV0ZVRhYmxlQ2VsbFNsb3RzKCpwYXJlbnRUYWJsZSk7CiAgICAgfQog
CiAgICAgaWYgKCFvYmplY3Qubm9kZSgpICYmICFvYmplY3QucmVuZGVyZXIoKSkKQEAgLTEyMDcs
NiArMTI0NCwxNCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUNoaWxkcmVuQ2hhbmdlZChB
Y2Nlc3NpYmlsaXR5T2JqZWN0JiBvYmplY3QpCiAgICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9u
KCZvYmplY3QsIEFYQ2hpbGRyZW5DaGFuZ2VkKTsKIH0KIAordm9pZCBBWE9iamVjdENhY2hlOjpo
YW5kbGVSZWNvbXB1dGVDZWxsU2xvdHMoQWNjZXNzaWJpbGl0eVRhYmxlJiBheFRhYmxlKQorewor
ICAgIGF4VGFibGUuc2V0Q2VsbFNsb3RzRGlydHkoKTsKKyNpZiBFTkFCTEUoQUNDRVNTSUJJTElU
WV9JU09MQVRFRF9UUkVFKQorICAgIHVwZGF0ZUlzb2xhdGVkVHJlZShheFRhYmxlLCBBWENlbGxT
bG90c0NoYW5nZWQpOworI2VuZGlmCit9CisKIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlTWVu
dU9wZW5lZChOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZSB8fCAhbm9kZS0+cmVuZGVyZXIo
KSB8fCAhbm9kZUhhc1JvbGUobm9kZSwgIm1lbnUiX3MpKQpAQCAtMTUzOCwxMSArMTU4Myw2IEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6c2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKICAgICAgICAgc2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQocmVuZGVyZXItPm5v
ZGUoKSk7CiB9CiAKLXN0YXRpYyBib29sIGlzQVJJQVRhYmxlQ2VsbChOb2RlKiBub2RlKQotewot
ICAgIHJldHVybiBub2RlICYmIChub2RlSGFzUm9sZShub2RlLCAiZ3JpZGNlbGwiX3MpIHx8IG5v
ZGVIYXNSb2xlKG5vZGUsICJjZWxsIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAiY29sdW1uaGVh
ZGVyIl9zKSB8fCBub2RlSGFzUm9sZShub2RlLCAicm93aGVhZGVyIl9zKSk7Ci19Ci0KIHZvaWQg
QVhPYmplY3RDYWNoZTo6b25TY3JvbGxiYXJGcmFtZVJlY3RDaGFuZ2UoY29uc3QgU2Nyb2xsYmFy
JiBzY3JvbGxiYXIpCiB7CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkK
QEAgLTE1NTgsNyArMTU5OCw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6b25TY3JvbGxiYXJGcmFt
ZVJlY3RDaGFuZ2UoY29uc3QgU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiAKIHZvaWQgQVhPYmplY3RD
YWNoZTo6b25TZWxlY3RlZENoYW5nZWQoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAoaXNBUklBVGFi
bGVDZWxsKG5vZGUpKQorICAgIGlmIChub2RlSGFzQ2VsbFJvbGUobm9kZSkpCiAgICAgICAgIHBv
c3ROb3RpZmljYXRpb24obm9kZSwgQVhTZWxlY3RlZENlbGxzQ2hhbmdlZCk7CiAgICAgZWxzZSBp
ZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KG5vZGUpKQogICAgICAgICBwb3N0Tm90aWZpY2F0aW9u
KG5vZGUsIEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQpOwpAQCAtMjEwNSw3ICsyMTQ1LDcgQEAgdm9p
ZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBY3RpdmVEZXNjZW5kYW50Q2hhbmdlKEVsZW1lbnQmIGVs
ZW1lbnQsIGNvbnN0IEF0b21TdHIKICAgICAgICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKHRh
cmdldCwgQVhOb3RpZmljYXRpb246OkFYQWN0aXZlRGVzY2VuZGFudENoYW5nZWQpOwogCiAgICAg
ICAgIC8vIFRhYmxlIGNlbGwgYWN0aXZlIGRlc2NlbmRhbnQgY2hhbmdlcyBzaG91bGQgdHJpZ2dl
ciBzZWxlY3RlZCBjZWxsIGNoYW5nZXMuCi0gICAgICAgIGlmICh0YXJnZXQtPmlzVGFibGUoKSAm
JiBhY3RpdmVEZXNjZW5kYW50LT5pc1RhYmxlQ2VsbCgpKSB7CisgICAgICAgIGlmICh0YXJnZXQt
PmlzVGFibGUoKSAmJiBhY3RpdmVEZXNjZW5kYW50LT5pc0V4cG9zZWRUYWJsZUNlbGwoKSkgewog
I2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgICAgICAgICB1cGRh
dGVJc29sYXRlZFRyZWUodGFyZ2V0LCBBWE5vdGlmaWNhdGlvbjo6QVhTZWxlY3RlZENlbGxzQ2hh
bmdlZCk7CiAjZW5kaWYKQEAgLTIyMDMsNiArMjI0MywyNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWRO
YW1lJgogICAgIEFYTE9HKG1ha2VTdHJpbmcoImF0dHJpYnV0ZSAiLCBhdHRyTmFtZS5sb2NhbE5h
bWUoKSwgIiBmb3IgZWxlbWVudCAiLCBlbGVtZW50ID8gZWxlbWVudC0+ZGVidWdEZXNjcmlwdGlv
bigpIDogU3RyaW5nKCJudWxscHRyIl9zKSkpOwogICAgIEFYTE9HKG1ha2VTdHJpbmcoIm9sZCB2
YWx1ZTogIiwgb2xkVmFsdWUsICIgbmV3IHZhbHVlOiAiLCBuZXdWYWx1ZSkpOwogCisgICAgZW51
bSBjbGFzcyBUYWJsZVByb3BlcnR5IDogdWludDhfdCB7IEV4cG9zZWQgPSAxIDw8IDAsIENlbGxT
bG90cyA9IDEgPDwgMSB9OworICAgIGF1dG8gcmVjb21wdXRlUGFyZW50VGFibGVQcm9wZXJ0aWVz
ID0gW3RoaXNdIChFbGVtZW50KiBlbGVtZW50LCBPcHRpb25TZXQ8VGFibGVQcm9wZXJ0eT4gcHJv
cGVydGllcykgeworICAgICAgICBBU1NFUlQoIXByb3BlcnRpZXMuaXNFbXB0eSgpKTsKKworICAg
ICAgICBpZiAoIXByb3BlcnRpZXMuY29udGFpbnMoVGFibGVQcm9wZXJ0eTo6Q2VsbFNsb3RzKSkg
eworICAgICAgICAgICAgLy8gSWYgd2UncmUgcmUtY29tcHV0aW5nIHRoZSBleHBvc2VkIHN0YXRl
IG9mIHRoZSB0YWJsZSwgd2Ugb25seSBuZWVkIHRvIGRvIHdvcmsgZm9yIG5vbi1BUklBIHRhYmxl
cywgYWxsb3dpbmcgdXMgdG8KKyAgICAgICAgICAgIC8vIGRvIGEgY2hlYXAgZHluYW1pY0Rvd25j
YXN0IGNoZWNrIGZvciBhbiBIVE1MVGFibGVQYXJ0RWxlbWVudCByYXRoZXIgdGhhbiBjYWxsaW5n
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OnBhcmVudFRhYmxlKCkuCisgICAgICAgICAgICAvLyAo
QVJJQSB0YWJsZXMgYXJlIGluaGVyZW50bHkgYWx3YXlzIGV4cG9zZWQpLgorICAgICAgICAgICAg
aWYgKGF1dG8qIHRhYmxlUGFydEVsZW1lbnQgPSBkeW5hbWljRG93bmNhc3Q8SFRNTFRhYmxlUGFy
dEVsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgICAgIGRlZmVyUmVjb21wdXRlVGFibGVJ
c0V4cG9zZWQoY29uc3RfY2FzdDxIVE1MVGFibGVFbGVtZW50Kj4odGFibGVQYXJ0RWxlbWVudC0+
ZmluZFBhcmVudFRhYmxlKCkuZ2V0KCkpKTsKKyAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBheENl
bGwgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oZ2V0T3JDcmVhdGUo
ZWxlbWVudCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogcGFyZW50VGFibGUgPSBheENlbGwt
PnBhcmVudFRhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJvcGVydGllcy5jb250YWlu
cyhUYWJsZVByb3BlcnR5OjpFeHBvc2VkKSAmJiAhcGFyZW50VGFibGUtPmlzQXJpYVRhYmxlKCkp
CisgICAgICAgICAgICAgICAgICAgIGRlZmVyUmVjb21wdXRlVGFibGVJc0V4cG9zZWQocGFyZW50
VGFibGUtPmVsZW1lbnQoKSk7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMuY29udGFp
bnMoVGFibGVQcm9wZXJ0eTo6Q2VsbFNsb3RzKSkKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJS
ZWNvbXB1dGVUYWJsZUNlbGxTbG90cygqcGFyZW50VGFibGUpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfTsKKwogICAgIGlmICghc2hvdWxkUHJvY2Vzc0F0dHJpYnV0ZUNoYW5nZShl
bGVtZW50LCBhdHRyTmFtZSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjI0NSwxNiArMjMwNSwx
NyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZShFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IG9w
ZW5BdHRyICYmIGlzPEhUTUxEaWFsb2dFbGVtZW50PigqZWxlbWVudCkpIHsKICAgICAgICAgZGVm
ZXJNb2RhbENoYW5nZShlbGVtZW50KTsKICAgICAgICAgcmVjb21wdXRlSXNJZ25vcmVkKGVsZW1l
bnQtPnBhcmVudE5vZGUoKSk7CisgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSByb3dzcGFuQXR0
cikgeworICAgICAgICBwb3N0Tm90aWZpY2F0aW9uKGVsZW1lbnQsIEFYUm93U3BhbkNoYW5nZWQp
OworICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgVGFibGVQ
cm9wZXJ0eTo6Q2VsbFNsb3RzKTsKKyAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGNvbHNwYW5B
dHRyKSB7CisgICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhDb2x1bW5TcGFuQ2hh
bmdlZCk7CisgICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlUHJvcGVydGllcyhlbGVtZW50LCBU
YWJsZVByb3BlcnR5OjpDZWxsU2xvdHMpOwogICAgIH0KIAogICAgIGlmICghYXR0ck5hbWUubG9j
YWxOYW1lKCkuc3RyaW5nKCkuc3RhcnRzV2l0aCgiYXJpYS0iX3MpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHJlY29tcHV0ZVBhcmVudFRhYmxlRXhwb3N1cmUgPSBbdGhpc10gKEVsZW1l
bnQqIGVsZW1lbnQpIHsKLSAgICAgICAgaWYgKGF1dG8qIHRhYmxlUGFydEVsZW1lbnQgPSBkeW5h
bWljRG93bmNhc3Q8SFRNTFRhYmxlUGFydEVsZW1lbnQ+KGVsZW1lbnQpKQotICAgICAgICAgICAg
ZGVmZXJSZWNvbXB1dGVUYWJsZUlzRXhwb3NlZChjb25zdF9jYXN0PEhUTUxUYWJsZUVsZW1lbnQq
Pih0YWJsZVBhcnRFbGVtZW50LT5maW5kUGFyZW50VGFibGUoKS5nZXQoKSkpOwotICAgIH07Ci0K
ICAgICBpZiAoYXR0ck5hbWUgPT0gYXJpYV9hY3RpdmVkZXNjZW5kYW50QXR0cikKICAgICAgICAg
aGFuZGxlQWN0aXZlRGVzY2VuZGFudENoYW5nZSgqZWxlbWVudCwgb2xkVmFsdWUsIG5ld1ZhbHVl
KTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2F0b21pY0F0dHIpCkBAIC0yMjc0LDEw
ICsyMzM1LDEwIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlKEVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgICAgIGRlZmVyUmVjb21w
dXRlVGFibGVJc0V4cG9zZWQoZHluYW1pY0Rvd25jYXN0PEhUTUxUYWJsZUVsZW1lbnQ+KGVsZW1l
bnQpKTsKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfY29saW5kZXhBdHRyKSB7CiAg
ICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhDb2x1bW5JbmRleENoYW5nZWQpOwot
ICAgICAgICByZWNvbXB1dGVQYXJlbnRUYWJsZUV4cG9zdXJlKGVsZW1lbnQpOworICAgICAgICBy
ZWNvbXB1dGVQYXJlbnRUYWJsZVByb3BlcnRpZXMoZWxlbWVudCwgVGFibGVQcm9wZXJ0eTo6RXhw
b3NlZCk7CiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBhcmlhX2NvbHNwYW5BdHRyKSB7CiAg
ICAgICAgIHBvc3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhDb2x1bW5TcGFuQ2hhbmdlZCk7Ci0g
ICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlRXhwb3N1cmUoZWxlbWVudCk7CisgICAgICAgIHJl
Y29tcHV0ZVBhcmVudFRhYmxlUHJvcGVydGllcyhlbGVtZW50LCB7IFRhYmxlUHJvcGVydHk6OkNl
bGxTbG90cywgVGFibGVQcm9wZXJ0eTo6RXhwb3NlZCB9KTsKICAgICB9CiAgICAgZWxzZSBpZiAo
YXR0ck5hbWUgPT0gYXJpYV9kZXNjcmliZWRieUF0dHIpCiAgICAgICAgIHBvc3ROb3RpZmljYXRp
b24oZWxlbWVudCwgQVhEZXNjcmliZWRCeUNoYW5nZWQpOwpAQCAtMjI5Nyw3ICsyMzU4LDcgQEAg
dm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50
LCBBWFBsYWNlaG9sZGVyQ2hhbmdlZCk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9y
b3dpbmRleEF0dHIpIHsKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWFJvd0lu
ZGV4Q2hhbmdlZCk7Ci0gICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlRXhwb3N1cmUoZWxlbWVu
dCk7CisgICAgICAgIHJlY29tcHV0ZVBhcmVudFRhYmxlUHJvcGVydGllcyhlbGVtZW50LCB7IFRh
YmxlUHJvcGVydHk6OkNlbGxTbG90cywgVGFibGVQcm9wZXJ0eTo6RXhwb3NlZCB9KTsKICAgICB9
CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV92YWx1ZW1heEF0dHIpCiAgICAgICAgIHBv
c3ROb3RpZmljYXRpb24oZWxlbWVudCwgQVhNYXhpbXVtVmFsdWVDaGFuZ2VkKTsKQEAgLTIzNTUs
OSArMjQxNiw4IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlQXR0cmlidXRlQ2hhbmdlKEVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgICAgIGhhbmRsZVJvd0Nv
dW50Q2hhbmdlZChnZXQoZWxlbWVudCksIGVsZW1lbnQgPyAmZWxlbWVudC0+ZG9jdW1lbnQoKSA6
IG51bGxwdHIpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IGFyaWFfcm93c3BhbkF0dHIpIHsK
ICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWFJvd1NwYW5DaGFuZ2VkKTsKLSAg
ICAgICAgcmVjb21wdXRlUGFyZW50VGFibGVFeHBvc3VyZShlbGVtZW50KTsKLSAgICB9Ci0gICAg
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJpYV9zb3J0QXR0cikKKyAgICAgICAgcmVjb21wdXRlUGFy
ZW50VGFibGVQcm9wZXJ0aWVzKGVsZW1lbnQsIHsgVGFibGVQcm9wZXJ0eTo6Q2VsbFNsb3RzLCBU
YWJsZVByb3BlcnR5OjpFeHBvc2VkIH0pOworICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gYXJp
YV9zb3J0QXR0cikKICAgICAgICAgcG9zdE5vdGlmaWNhdGlvbihlbGVtZW50LCBBWE9iamVjdENh
Y2hlOjpBWFNvcnREaXJlY3Rpb25DaGFuZ2VkKTsKIH0KIApAQCAtMzY3Miw2ICszNzMyLDEyIEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKQogICAgICAg
ICBoYW5kbGVDaGlsZHJlbkNoYW5nZWQoKmNoaWxkKTsKICAgICBtX2RlZmVycmVkQ2hpbGRyZW5D
aGFuZ2VkTGlzdC5jbGVhcigpOwogCisgICAgQVhMT0dEZWZlcnJlZENvbGxlY3Rpb24oIlJlY29t
cHV0ZVRhYmxlQ2VsbFNsb3RzTGlzdCJfcywgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlQ2VsbFNs
b3RzTGlzdCk7CisgICAgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlQ2VsbFNsb3RzTGlzdC5mb3JF
YWNoKFt0aGlzXSAoYXV0byYgYXhUYWJsZSkgeworICAgICAgICBoYW5kbGVSZWNvbXB1dGVDZWxs
U2xvdHMoYXhUYWJsZSk7CisgICAgfSk7CisgICAgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlQ2Vs
bFNsb3RzTGlzdC5jbGVhcigpOworCiAgICAgQVhMT0dEZWZlcnJlZENvbGxlY3Rpb24oIlRleHRD
aGFuZ2VkTGlzdCJfcywgbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdCk7CiAgICAgZm9yIChhdXRv
KiBub2RlIDogbV9kZWZlcnJlZFRleHRDaGFuZ2VkTGlzdCkKICAgICAgICAgaGFuZGxlVGV4dENo
YW5nZWQoZ2V0T3JDcmVhdGUobm9kZSkpOwpAQCAtMzg0MSw2ICszOTA3LDEwIEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6dXBkYXRlSXNvbGF0ZWRUcmVlKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8UmVm
UHRyPEFjY2Vzc2liaWxpCiAgICAgICAgIGNhc2UgQVhBdXRvZmlsbFR5cGVDaGFuZ2VkOgogICAg
ICAgICAgICAgdHJlZS0+dXBkYXRlTm9kZVByb3BlcnR5KCpub3RpZmljYXRpb24uZmlyc3QsIEFY
UHJvcGVydHlOYW1lOjpWYWx1ZUF1dG9maWxsQnV0dG9uVHlwZSk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBBWENlbGxTbG90c0NoYW5nZWQ6CisgICAgICAgICAgICBBU1NFUlQo
bm90aWZpY2F0aW9uLmZpcnN0LT5pc1RhYmxlKCkpOworICAgICAgICAgICAgdHJlZS0+dXBkYXRl
Tm9kZVByb3BlcnR5KCpub3RpZmljYXRpb24uZmlyc3QsIEFYUHJvcGVydHlOYW1lOjpDZWxsU2xv
dHMpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVhDaGVja2VkU3RhdGVDaGFu
Z2VkOgogICAgICAgICAgICAgdHJlZS0+dXBkYXRlTm9kZVByb3BlcnR5KCpub3RpZmljYXRpb24u
Zmlyc3QsIEFYUHJvcGVydHlOYW1lOjpJc0NoZWNrZWQpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC00MDAyLDYgKzQwNzIsMTMgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpkZWZlclJlY29tcHV0ZVRh
YmxlSXNFeHBvc2VkKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIG1fcGVyZm9ybUNhY2hlVXBk
YXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiB9CiAKK3ZvaWQgQVhPYmplY3RDYWNoZTo6ZGVm
ZXJSZWNvbXB1dGVUYWJsZUNlbGxTbG90cyhBY2Nlc3NpYmlsaXR5VGFibGUmIGF4VGFibGUpCit7
CisgICAgbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlQ2VsbFNsb3RzTGlzdC5hZGQoYXhUYWJsZSk7
CisgICAgaWYgKCFtX3BlcmZvcm1DYWNoZVVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAg
IG1fcGVyZm9ybUNhY2hlVXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Cit9CisKIHZvaWQg
QVhPYmplY3RDYWNoZTo6ZGVmZXJUZXh0Q2hhbmdlZElmTmVlZGVkKE5vZGUqIG5vZGUpCiB7CiAg
ICAgaWYgKCFub2RlQW5kUmVuZGVyZXJBcmVWYWxpZChub2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggZjg0YTRhMWZhZmIxLi5kODYwZDIw
ZmFiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
CkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBI
VE1MQXJlYUVsZW1lbnQ7CiBjbGFzcyBIVE1MVGFibGVFbGVtZW50OwpAQCAtMjIwLDcgKzIyMSw4
IEBAIHB1YmxpYzoKICAgICAgICAgLCBWZWN0b3I8QXR0cmlidXRlQ2hhbmdlPgogICAgICAgICAs
IFZlY3RvcjxzdGQ6OnBhaXI8Tm9kZSosIE5vZGUqPj4KICAgICAgICAgLCBXZWFrSGFzaFNldDxF
bGVtZW50LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+Ci0gICAgICAgICwgV2Vha0hh
c2hTZXQ8SFRNTFRhYmxlRWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPj47
CisgICAgICAgICwgV2Vha0hhc2hTZXQ8SFRNTFRhYmxlRWxlbWVudCwgV2Vha1B0ckltcGxXaXRo
RXZlbnRUYXJnZXREYXRhPgorICAgICAgICAsIFdlYWtIYXNoU2V0PEFjY2Vzc2liaWxpdHlUYWJs
ZT4+OwogICAgIHZvaWQgZGVmZXJNb2RhbENoYW5nZShFbGVtZW50Kik7CiAgICAgdm9pZCBkZWZl
ck1lbnVMaXN0VmFsdWVDaGFuZ2UoRWxlbWVudCopOwogICAgIHZvaWQgZGVmZXJOb2RlQWRkZWRP
clJlbW92ZWQoTm9kZSopOwpAQCAtMzIwLDYgKzMyMiw3IEBAIHB1YmxpYzoKICAgICAgICAgQVhB
Y3RpdmVEZXNjZW5kYW50Q2hhbmdlZCwKICAgICAgICAgQVhBdXRvY29ycmVjdGlvbk9jY3VyZWQs
CiAgICAgICAgIEFYQXV0b2ZpbGxUeXBlQ2hhbmdlZCwKKyAgICAgICAgQVhDZWxsU2xvdHNDaGFu
Z2VkLAogICAgICAgICBBWENoZWNrZWRTdGF0ZUNoYW5nZWQsCiAgICAgICAgIEFYQ2hpbGRyZW5D
aGFuZ2VkLAogICAgICAgICBBWENvbHVtbkNvdW50Q2hhbmdlZCwKQEAgLTQzNyw2ICs0NDAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkZWZlclJlY29tcHV0ZUlzSWdub3JlZElmTmVlZGVkKEVsZW1l
bnQqKTsKICAgICB2b2lkIGRlZmVyUmVjb21wdXRlSXNJZ25vcmVkKEVsZW1lbnQqKTsKICAgICB2
b2lkIGRlZmVyUmVjb21wdXRlVGFibGVJc0V4cG9zZWQoRWxlbWVudCopOworICAgIHZvaWQgZGVm
ZXJSZWNvbXB1dGVUYWJsZUNlbGxTbG90cyhBY2Nlc3NpYmlsaXR5VGFibGUmKTsKICAgICB2b2lk
IGRlZmVyVGV4dENoYW5nZWRJZk5lZWRlZChOb2RlKik7CiAgICAgdm9pZCBkZWZlclNlbGVjdGVk
Q2hpbGRyZW5DaGFuZ2VkSWZOZWVkZWQoRWxlbWVudCYpOwogICAgIHZvaWQgcGVyZm9ybURlZmVy
cmVkQ2FjaGVVcGRhdGUoKTsKQEAgLTU2NCw2ICs1NjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
aGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUq
IG5ld0ZvY3VzZWROb2RlLCBVcGRhdGVNb2RhbCA9IFVwZGF0ZU1vZGFsOjpZZXMpOwogICAgIHZv
aWQgaGFuZGxlTWVudUxpc3RWYWx1ZUNoYW5nZWQoRWxlbWVudCYpOwogICAgIHZvaWQgaGFuZGxl
VGV4dENoYW5nZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIHZvaWQgaGFuZGxlUmVjb21w
dXRlQ2VsbFNsb3RzKEFjY2Vzc2liaWxpdHlUYWJsZSYpOwogCiAgICAgLy8gYXJpYS1tb2RhbCBv
ciBtb2RhbCA8ZGlhbG9nPiByZWxhdGVkCiAgICAgYm9vbCBpc01vZGFsRWxlbWVudChFbGVtZW50
JikgY29uc3Q7CkBAIC02MzYsNiArNjQxLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PEFYSUQ+
IG1fZGVmZXJyZWRSZW1vdmVkT2JqZWN0czsKICAgICBXZWFrSGFzaFNldDxFbGVtZW50LCBXZWFr
UHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+IG1fZGVmZXJyZWRSZWNvbXB1dGVJc0lnbm9yZWRM
aXN0OwogICAgIFdlYWtIYXNoU2V0PEhUTUxUYWJsZUVsZW1lbnQsIFdlYWtQdHJJbXBsV2l0aEV2
ZW50VGFyZ2V0RGF0YT4gbV9kZWZlcnJlZFJlY29tcHV0ZVRhYmxlSXNFeHBvc2VkTGlzdDsKKyAg
ICBXZWFrSGFzaFNldDxBY2Nlc3NpYmlsaXR5VGFibGU+IG1fZGVmZXJyZWRSZWNvbXB1dGVUYWJs
ZUNlbGxTbG90c0xpc3Q7CiAgICAgTGlzdEhhc2hTZXQ8Tm9kZSo+IG1fZGVmZXJyZWRUZXh0Q2hh
bmdlZExpc3Q7CiAgICAgV2Vha0hhc2hTZXQ8RWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRU
YXJnZXREYXRhPiBtX2RlZmVycmVkU2VsZWN0ZWRDaGlsZHJlZENoYW5nZWRMaXN0OwogICAgIExp
c3RIYXNoU2V0PFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0Pj4gbV9kZWZlcnJlZENoaWxkcmVu
Q2hhbmdlZExpc3Q7CkBAIC02ODAsNiArNjg2LDggQEAgcHJpdmF0ZToKIH07CiAKIGJvb2wgbm9k
ZUhhc1JvbGUoTm9kZSosIFN0cmluZ1ZpZXcgcm9sZSk7Citib29sIG5vZGVIYXNHcmlkUm9sZShO
b2RlKik7Citib29sIG5vZGVIYXNDZWxsUm9sZShOb2RlKik7CiAvLyBUaGlzIHdpbGwgbGV0IHlv
dSBrbm93IGlmIGFyaWEtaGlkZGVuIHdhcyBleHBsaWNpdGx5IHNldCB0byBmYWxzZS4KIGJvb2wg
aXNOb2RlQXJpYVZpc2libGUoTm9kZSopOwogICAgIApAQCAtNzA1LDYgKzcxMyw4IEBAIGlubGlu
ZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNldEZvcmNlRGVmZXJyZWRTcGVsbENoZWNraW5nKGJvb2wp
IHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGlzYWJsZUFjY2Vzc2liaWxpdHkoKSB7
IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNldEVuaGFuY2VkVXNlckludGVyZmFjZUFj
Y2Vzc2liaWxpdHkoYm9vbCkgeyB9CiBpbmxpbmUgYm9vbCBub2RlSGFzUm9sZShOb2RlKiwgU3Ry
aW5nVmlldykgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIG5vZGVIYXNHcmlkUm9sZShO
b2RlKikgeyByZXR1cm4gZmFsc2U7IH0KK2lubGluZSBib29sIG5vZGVIYXNDZWxsUm9sZShOb2Rl
KikgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0YXJ0Q2Fj
aGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlc1VudGlsVHJlZU11dGF0ZXMoKSB7IH0KIGlubGlu
ZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVz
KCkgeyB9CiBpbmxpbmUgYm9vbCBpc05vZGVBcmlhVmlzaWJsZShOb2RlKikgeyByZXR1cm4gdHJ1
ZTsgfQpAQCAtNzMxLDYgKzc0MSw3IEBAIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVy
UmVjb21wdXRlSXNJZ25vcmVkKEVsZW1lbnQqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmRlZmVyVGV4dENoYW5nZWRJZk5lZWRlZChOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBBWE9i
amVjdENhY2hlOjpkZWZlclNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkSWZOZWVkZWQoRWxlbWVudCYp
IHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJUZXh0UmVwbGFjZW1lbnROb3Rp
ZmljYXRpb25Gb3JUZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYsIGNvbnN0
IFN0cmluZyYpIHsgfQoraW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6ZGVmZXJSZWNvbXB1dGVU
YWJsZUNlbGxTbG90cyhBY2Nlc3NpYmlsaXR5VGFibGUmKSB7IH0KICNpZiAhUExBVEZPUk0oQ09D
T0EpICYmICFVU0UoQVRTUEkpCiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFw
cGVyKEFYQ29yZU9iamVjdCosIEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSkgeyB9CiAjZW5k
aWYKQEAgLTc2NCw2ICs3NzUsNyBAQCBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4
dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKE5vZGUqLCBBWFRleHRFZGl0VHlwZQogaW5saW5lIHZv
aWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihOb2RlKiwg
Y29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikg
eyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpyZWNvbXB1dGVJc0lnbm9yZWQoUmVuZGVy
T2JqZWN0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVUZXh0Q2hhbmdl
ZChBY2Nlc3NpYmlsaXR5T2JqZWN0KikgeyB9CitpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpo
YW5kbGVSZWNvbXB1dGVDZWxsU2xvdHMoQWNjZXNzaWJpbGl0eVRhYmxlJikgeyB9CiBpbmxpbmUg
dm9pZCBBWE9iamVjdENhY2hlOjpvblJlbmRlcmVyQ3JlYXRlZChFbGVtZW50JikgeyB9CiBpbmxp
bmUgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVMb2FkaW5nUHJvZ3Jlc3MoZG91YmxlKSB7IH0K
IGlubGluZSBTaW1wbGVSYW5nZSBBWE9iamVjdENhY2hlOjpyYW5nZUZvck5vZGVDb250ZW50cyhO
b2RlJiBub2RlKSB7IHJldHVybiBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMobm9kZSk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUFSSUFHcmlkLmNwcAppbmRleCBlNGU1Zjg1YzJiN2UuLjVhNDg5OTI2Njk4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmNwcApAQCAtNTEsOTIgKzUxLDEwIEBAIFJlZjxBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ+IEFjY2Vz
c2liaWxpdHlBUklBR3JpZDo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eUFSSUFHcmlkKHJlbmRlcmVyKSk7CiB9CiAK
LWJvb2wgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRUYWJsZUNlbGxDaGlsZChBWENvcmVPYmpl
Y3QqIGNoaWxkLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1
bnNpZ25lZCYgY29sdW1uQ291bnQpCi17Ci0gICAgaWYgKCFjaGlsZCB8fCAoIWlzPEFjY2Vzc2li
aWxpdHlUYWJsZVJvdz4oKmNoaWxkKSAmJiAhY2hpbGQtPmlzQVJJQVRyZWVHcmlkUm93KCkpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvJiByb3cgPSBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGVSb3c+KCpjaGlsZCk7Ci0gICAgaWYgKGFwcGVuZGVkUm93cy5jb250YWlucygm
cm93KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gc3RvcmUgdGhlIG1heGltdW0g
bnVtYmVyIG9mIGNvbHVtbnMKLSAgICB1bnNpZ25lZCByb3dDZWxsQ291bnQgPSByb3cuY2hpbGRy
ZW4oKS5zaXplKCk7Ci0gICAgaWYgKHJvd0NlbGxDb3VudCA+IGNvbHVtbkNvdW50KQotICAgICAg
ICBjb2x1bW5Db3VudCA9IHJvd0NlbGxDb3VudDsKLQotICAgIHJvdy5zZXRSb3dJbmRleCgoaW50
KW1fcm93cy5zaXplKCkpOwotICAgIG1fcm93cy5hcHBlbmQoJnJvdyk7Ci0gICAgYWRkQ2hpbGQo
JnJvdyk7Ci0gICAgYXBwZW5kZWRSb3dzLmFkZCgmcm93KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQogYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QK
IHsKICAgICBjb25zdCBBdG9tU3RyaW5nJiBhcmlhTXVsdGlTZWxlY3RhYmxlID0gZ2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6YXJpYV9tdWx0aXNlbGVjdGFibGVBdHRyKTsKICAgICByZXR1cm4gIWVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGFyaWFNdWx0aVNlbGVjdGFibGUsICJmYWxzZSJf
cyk7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eUFSSUFHcmlkOjphZGRSb3dEZXNjZW5kYW50KEFY
Q29yZU9iamVjdCogcm93Q2hpbGQsIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBl
bmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCkKLXsKLSAgICBpZiAoIXJvd0NoaWxkKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXJvd0NoaWxkLT5pc1RhYmxlUm93KCkgfHwgIXJv
d0NoaWxkLT5ub2RlKCkpIHsKLSAgICAgICAgLy8gQWx0aG91Z2ggYSAiZ3JpZCIgc2hvdWxkIGhh
dmUgcm93cyBhcyBpdHMgZGlyZWN0IGRlc2NlbmRhbnRzLCBpZiB0aGlzIGlzIG5vdCBhIHRhYmxl
IHJvdywKLSAgICAgICAgLy8gb3IgdGhpcyByb3cgaXMgYW5vbnltb3VzLCBkaXZlIGRlZXBlciBp
bnRvIHRoZSBkZXNjZW5kYW50cyB0byB0cnkgdG8gZmluZCBhIHZhbGlkIHJvdy4KLSAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHJvd0NoaWxkLT5jaGlsZHJlbigpKQotICAgICAgICAg
ICAgYWRkUm93RGVzY2VuZGFudChjaGlsZC5nZXQoKSwgYXBwZW5kZWRSb3dzLCBjb2x1bW5Db3Vu
dCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGFkZFRhYmxlQ2VsbENoaWxkKHJvd0NoaWxkLCBhcHBl
bmRlZFJvd3MsIGNvbHVtbkNvdW50KTsKLX0KLQotdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6
OmFkZENoaWxkcmVuKCkKLXsKLSAgICBBU1NFUlQoIW1fY2hpbGRyZW5Jbml0aWFsaXplZCk7IAot
ICAgIAotICAgIGlmICghaXNFeHBvc2FibGUoKSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphZGRDaGlsZHJlbigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAot
ICAgIG1fY2hpbGRyZW5Jbml0aWFsaXplZCA9IHRydWU7Ci0gICAgYXV0byogZG9jdW1lbnQgPSB0
aGlzLT5kb2N1bWVudCgpOwotICAgIGF1dG8qIGF4Q2FjaGUgPSBkb2N1bWVudCA/IGRvY3VtZW50
LT5heE9iamVjdENhY2hlKCkgOiBudWxscHRyOwotCi0gICAgLy8gQWRkIHRoZSBjaGlsZHJlbiBy
b3dzIGJ1dCBiZSBtaW5kZnVsIGluIGNhc2UgdGhlcmUgYXJlIGZvb3RlciBzZWN0aW9ucyBpbiB0
aGlzIHRhYmxlLgotICAgIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+IGFwcGVuZGVkUm93
czsKLSAgICB1bnNpZ25lZCBjb2x1bW5Db3VudCA9IDA7Ci0gICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIGZvb3RlclNlY3Rpb25zOwotICAgIGZvciAoUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkgewotICAgICAgICBib29sIGZvb3RlclNlY3Rpb24gPSBmYWxzZTsKLSAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogY2hpbGRSZW5kZXJlciA9IGNoaWxkLT5yZW5kZXJlcigpKSB7Ci0g
ICAgICAgICAgICBpZiAoaXM8UmVuZGVyVGFibGVTZWN0aW9uPigqY2hpbGRSZW5kZXJlcikpIHsK
LSAgICAgICAgICAgICAgICBSZW5kZXJUYWJsZVNlY3Rpb24mIGNoaWxkU2VjdGlvbiA9IGRvd25j
YXN0PFJlbmRlclRhYmxlU2VjdGlvbj4oKmNoaWxkUmVuZGVyZXIpOwotICAgICAgICAgICAgICAg
IGlmICgmY2hpbGRTZWN0aW9uID09IGNoaWxkU2VjdGlvbi50YWJsZSgpLT5mb290ZXIoKSkgewot
ICAgICAgICAgICAgICAgICAgICBmb290ZXJTZWN0aW9ucy5hcHBlbmQoY2hpbGQpOwotICAgICAg
ICAgICAgICAgICAgICBmb290ZXJTZWN0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFmb290ZXJTZWN0aW9uKQotICAg
ICAgICAgICAgYWRkUm93RGVzY2VuZGFudChjaGlsZC5nZXQoKSwgYXBwZW5kZWRSb3dzLCBjb2x1
bW5Db3VudCk7Ci0gICAgfQotICAgIAotICAgIGZvciAoY29uc3QgYXV0byYgZm9vdGVyU2VjdGlv
biA6IGZvb3RlclNlY3Rpb25zKQotICAgICAgICBhZGRSb3dEZXNjZW5kYW50KGZvb3RlclNlY3Rp
b24uZ2V0KCksIGFwcGVuZGVkUm93cywgY29sdW1uQ291bnQpOwotICAgIAotICAgIC8vIG1ha2Ug
dGhlIGNvbHVtbnMgYmFzZWQgb24gdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBmaXJzdCBi
b2R5Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvbHVtbkNvdW50OyArK2kpIHsKLSAg
ICAgICAgYXV0byYgY29sdW1uID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uPigq
YXhDYWNoZS0+Y3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW4pKTsKLSAgICAgICAgY29s
dW1uLnNldENvbHVtbkluZGV4KGkpOwotICAgICAgICBjb2x1bW4uc2V0UGFyZW50KHRoaXMpOwot
ICAgICAgICBtX2NvbHVtbnMuYXBwZW5kKCZjb2x1bW4pOwotICAgICAgICBhZGRDaGlsZCgmY29s
dW1uLCBEZXNjZW5kSWZJZ25vcmVkOjpObyk7Ci0gICAgfQotCi0gICAgYWRkQ2hpbGQoaGVhZGVy
Q29udGFpbmVyKCksIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsKLX0KLSAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZC5oCmluZGV4IGFlY2M5YThiYmI0ZS4uZTI4YmE5NmEzYjBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmgKQEAgLTQwLDkgKzQwLDcgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eUFSSUFHcmlkIGZpbmFs
IDogcHVibGljIEFjY2Vzc2liaWxpdHlUYWJsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWQ+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFs
IH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWQoKTsKLSAgICAKLSAgICB2b2lkIGFkZENoaWxkcmVuKCkg
b3ZlcnJpZGU7Ci0gICAgCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eUFS
SUFHcmlkKFJlbmRlck9iamVjdCopOwogICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRJ
bnN0YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTUyLDkgKzUwLDYg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNBcmlhVGFibGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgCi0gICAgdm9pZCBhZGRSb3dEZXNj
ZW5kYW50KEFYQ29yZU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBl
bmRlZFJvd3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7Ci0gICAgYm9vbCBhZGRUYWJsZUNlbGxD
aGlsZChBWENvcmVPYmplY3QqLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5k
ZWRSb3dzLCB1bnNpZ25lZCYgY29sdW1uQ291bnQpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZENlbGwuY3BwCmluZGV4IGFmZWExZjMyYWQ2OS4uZGU0ODY5NzNiZDIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlB
UklBR3JpZENlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKQEAgLTYxLDExMyArNjEsNiBAQCBBY2Nlc3NpYmlsaXR5
VGFibGUqIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6OnBhcmVudFRhYmxlKCkgY29uc3QKICAg
ICB9KSk7CiB9CiAgICAgCi1zdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsOjpyb3dJbmRleFJhbmdlKCkgY29uc3QKLXsKLSAgICBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiByb3dSYW5nZSB7IDAsIDEgfTsKLSAgICBBWENvcmVPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlmICghcGFyZW50KQotICAg
ICAgICByZXR1cm4gcm93UmFuZ2U7Ci0KLSAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93
PigqcGFyZW50KSkgewotICAgICAgICAvLyBXZSBhbHJlYWR5IGdvdCBhIHRhYmxlIHJvdywgdXNl
IGl0cyBBUEkuCi0gICAgICAgIHJvd1JhbmdlLmZpcnN0ID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlUm93PigqcGFyZW50KS5yb3dJbmRleCgpOwotICAgIH0gZWxzZSBpZiAoaXM8QWNjZXNz
aWJpbGl0eVRhYmxlPigqcGFyZW50KSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpw
YXJlbnQpLmlzRXhwb3NhYmxlKCkpIHsKLSAgICAgICAgLy8gV2UgcmVhY2hlZCB0aGUgcGFyZW50
IHRhYmxlLCBzbyB3ZSBuZWVkIHRvIGluc3BlY3QgaXRzCi0gICAgICAgIC8vIGNoaWxkcmVuIHRv
IGRldGVybWluZSB0aGUgcm93IGluZGV4IGZvciB0aGUgY2VsbCBpbiBpdC4KLSAgICAgICAgdW5z
aWduZWQgY29sdW1uQ291bnQgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQp
LmNvbHVtbkNvdW50KCk7Ci0gICAgICAgIGlmICghY29sdW1uQ291bnQpCi0gICAgICAgICAgICBy
ZXR1cm4gcm93UmFuZ2U7Ci0KLSAgICAgICAgY29uc3QgYXV0byYgc2libGluZ3MgPSBwYXJlbnQt
PmNoaWxkcmVuKCk7Ci0gICAgICAgIHVuc2lnbmVkIGNoaWxkcmVuU2l6ZSA9IHNpYmxpbmdzLnNp
emUoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNoaWxkcmVuU2l6ZTsgKytr
KSB7Ci0gICAgICAgICAgICBpZiAoc2libGluZ3Nba10uZ2V0KCkgPT0gdGhpcykgewotICAgICAg
ICAgICAgICAgIHJvd1JhbmdlLmZpcnN0ID0gayAvIGNvbHVtbkNvdW50OwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQVJJ
QSAxLjEsIGFyaWEtcm93c3BhbiBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgZm9yIGNlbGxzIGFuZCBn
cmlkY2VsbHMgd2hpY2ggYXJlIG5vdCBjb250YWluZWQgaW4gYSBuYXRpdmUgdGFibGUuCi0gICAg
Ly8gU28gd2Ugc2hvdWxkIGNoZWNrIGZvciB0aGF0IGF0dHJpYnV0ZSBoZXJlLgotICAgIHJvd1Jh
bmdlLnNlY29uZCA9IGF4Um93U3BhbldpdGhSb3dJbmRleChyb3dSYW5nZS5maXJzdCk7Ci0KLSAg
ICByZXR1cm4gcm93UmFuZ2U7Ci19Ci0KLXVuc2lnbmVkIEFjY2Vzc2liaWxpdHlBUklBR3JpZENl
bGw6OmF4Um93U3BhbldpdGhSb3dJbmRleCh1bnNpZ25lZCByb3dJbmRleCkgY29uc3QKLXsKLSAg
ICBpbnQgcm93U3BhbiA9IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmF4Um93U3BhbigpOwotICAg
IGlmIChyb3dTcGFuID09IC0xKSB7Ci0gICAgICAgIGF1dG8gcmFuZ2UgPSBBY2Nlc3NpYmlsaXR5
VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om1heChyYW5n
ZS5zZWNvbmQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7Ci0gICAgfQotCi0gICAgQVhDb3Jl
T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKLSAgICBpZiAoIXBhcmVu
dCkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgCi0gICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgdG8g
MCBpbmRpY2F0ZXMgdGhhdCB0aGUgY2VsbCBvciBncmlkY2VsbCBpcyB0byBzcGFuIGFsbCB0aGUg
cmVtYWluaW5nIHJvd3MgaW4gdGhlIHJvdyBncm91cC4KLSAgICBpZiAoIXJvd1NwYW4pIHsKLSAg
ICAgICAgLy8gcm93U3BhbiBkZWZhdWx0cyB0byAxLgotICAgICAgICByb3dTcGFuID0gMTsKLSAg
ICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudFJvd0dyb3VwID0gdGhpcy0+cGFy
ZW50Um93R3JvdXAoKSkgewotICAgICAgICAgICAgLy8gSWYgdGhlIHJvdyBncm91cCBpcyB0aGUg
cGFyZW50IHRhYmxlLCB3ZSB1c2UgdG90YWwgcm93IGNvdW50IHRvIGNhbGN1bGF0ZSB0aGUgc3Bh
bi4KLSAgICAgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnRSb3dHcm91
cCkpCi0gICAgICAgICAgICAgICAgcm93U3BhbiA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZT4oKnBhcmVudFJvd0dyb3VwKS5yb3dDb3VudCgpIC0gcm93SW5kZXg7Ci0gICAgICAgICAgICAv
LyBPdGhlcndpc2UsIHdlIGhhdmUgdG8gZ2V0IHRoZSBpbmRleCBmb3IgdGhlIGN1cnJlbnQgcm93
IHdpdGhpbiB0aGUgcGFyZW50IHJvdyBncm91cC4KLSAgICAgICAgICAgIGVsc2UgaWYgKGlzPEFj
Y2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVudCkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBh
dXRvJiBzaWJsaW5ncyA9IHBhcmVudFJvd0dyb3VwLT5jaGlsZHJlbigpOwotICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHJvd0NvdW50ID0gc2libGluZ3Muc2l6ZSgpOwotICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgayA9IDA7IGsgPCByb3dDb3VudDsgKytrKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChzaWJsaW5nc1trXS5nZXQoKSA9PSBwYXJlbnQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJvd1NwYW4gPSByb3dDb3VudCAtIGs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByb3dTcGFuOwotfQotCi1z
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjpj
b2x1bW5JbmRleFJhbmdlKCkgY29uc3QKLXsKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiBjb2x1bW5SYW5nZSB7IDAsIDEgfTsKLSAgICBBWENvcmVPYmplY3QqIHBhcmVudCA9IHBh
cmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm4g
Y29sdW1uUmFuZ2U7Ci0KLSAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnBhcmVu
dCkKLSAgICAgICAgJiYgIShpczxBY2Nlc3NpYmlsaXR5VGFibGU+KCpwYXJlbnQpICYmIGRvd25j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKnBhcmVudCkuaXNFeHBvc2FibGUoKSkpCi0gICAgICAg
IHJldHVybiBjb2x1bW5SYW5nZTsKLQotICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYgc2libGluZ3MgPSBwYXJlbnQtPmNoaWxkcmVuKCk7Ci0gICAgdW5zaWduZWQgY2hpbGRy
ZW5TaXplID0gc2libGluZ3Muc2l6ZSgpOwotICAgIHVuc2lnbmVkIGluZGV4V2l0aFNwYW4gPSAw
OwotICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBjaGlsZHJlblNpemU7ICsraykgewotICAg
ICAgICBhdXRvKiBjaGlsZCA9IHNpYmxpbmdzW2tdLmdldCgpOwotICAgICAgICBpZiAoY2hpbGQg
PT0gdGhpcykgewotICAgICAgICAgICAgY29sdW1uUmFuZ2UuZmlyc3QgPSBpbmRleFdpdGhTcGFu
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaW5kZXhXaXRoU3BhbiAr
PSBpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqY2hpbGQpID8gc3RkOjptYXgoZG93bmNhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKmNoaWxkKS5heENvbHVtblNwYW4oKSwgMSkgOiAxOwot
ICAgIH0KLSAgICAKLSAgICAvLyBBUklBIDEuMSwgYXJpYS1jb2xzcGFuIGF0dHJpYnV0ZSBpcyBp
bnRlbmRlZCBmb3IgY2VsbHMgYW5kIGdyaWRjZWxscyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZCBp
biBhIG5hdGl2ZSB0YWJsZS4KLSAgICAvLyBTbyB3ZSBzaG91bGQgY2hlY2sgZm9yIHRoYXQgYXR0
cmlidXRlIGhlcmUuCi0gICAgaW50IGNvbHVtblNwYW4gPSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
OjpheENvbHVtblNwYW4oKTsKLSAgICBpZiAoY29sdW1uU3BhbiA9PSAtMSkgewotICAgICAgICBh
dXRvIHJhbmdlID0gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sdW1uSW5kZXhSYW5nZSgpOwot
ICAgICAgICBjb2x1bW5TcGFuID0gcmFuZ2Uuc2Vjb25kOwotICAgIH0KLQotICAgIGNvbHVtblJh
bmdlLnNlY29uZCA9IHN0ZDo6bWF4KGNvbHVtblNwYW4sIDEpOwotCi0gICAgcmV0dXJuIGNvbHVt
blJhbmdlOwotfQotCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRD
ZWxsOjpwYXJlbnRSb3dHcm91cCgpIGNvbnN0CiB7CiAgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBh
cmVudE9iamVjdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCmluZGV4IDhhY2FhOWI5NTU2MS4uMTBmMjQ5
NmNiMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlBUklBR3JpZENlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaApAQCAtNDEsMTQgKzQxLDggQEAgcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsKFJlbmRlck9iamVjdCopOwogICAg
IGJvb2wgaXNBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsSW5zdGFuY2UoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBh
bmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCi0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25l
ZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIC8vIFJldHVybnMgdGhlIHN0
YXJ0IGxvY2F0aW9uIGFuZCBjb2x1bW4gc3BhbiBvZiB0aGUgY2VsbC4KLSAgICBzdGQ6OnBhaXI8
dW5zaWduZWQsIHVuc2lnbmVkPiBjb2x1bW5JbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
ICAgICBBY2Nlc3NpYmlsaXR5VGFibGUqIHBhcmVudFRhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50Um93R3JvdXAoKSBjb25zdDsKLSAgICB1bnNp
Z25lZCBheFJvd1NwYW5XaXRoUm93SW5kZXgodW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAgIFN0
cmluZyByZWFkT25seVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OyAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNw
cAppbmRleCA0NTRlOGVmMzFlZGMuLmFhOGQ5NDZhNWUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAg
LTI1NSw3ICsyNTUsNyBAQCBMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojpib3Vu
ZGluZ0JveFJlY3QoKSBjb25zdAogICAgIC8vIHRoZSB3aWR0aCBvZiB0aGF0IGFuY2VzdG9yLCBh
bmQgYWJvdXQgdGhlIGhlaWdodCBvZiBhIGxpbmUgb2YgdGV4dCwgc28gaXQncyBjbGVhciB0aGlz
IG9iamVjdCBpcwogICAgIC8vIGEgZGVzY2VuZGFudCBvZiB0aGF0IGFuY2VzdG9yLgogICAgIGZv
ciAoUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGFuY2VzdG9yID0gcGFyZW50T2JqZWN0KCk7
IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnRPYmplY3QoKSkgewotICAgICAg
ICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q+KGFuY2VzdG9yKSkKKyAgICAgICAg
aWYgKCFhbmNlc3Rvci0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBhdXRvIGFuY2VzdG9yUmVjdCA9IGFuY2VzdG9yLT5lbGVtZW50UmVjdCgpOwogICAgICAgICBp
ZiAoYW5jZXN0b3JSZWN0LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDlmNWE1ODE2YTlkZi4uMmE2
YmZkN2QyOGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTMwODksNyArMzA4OSw3IEBAIEFYQ29yZU9iamVjdDo6
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGVk
Q2VsbHMoKQogICAgIH0KIAogICAgIGlmIChhdXRvKiBhY3RpdmVEZXNjZW5kYW50ID0gdGhpcy0+
YWN0aXZlRGVzY2VuZGFudCgpKSB7Ci0gICAgICAgIGlmIChhY3RpdmVEZXNjZW5kYW50LT5pc1Rh
YmxlQ2VsbCgpICYmICFzZWxlY3RlZENlbGxzLmNvbnRhaW5zKGFjdGl2ZURlc2NlbmRhbnQpKQor
ICAgICAgICBpZiAoYWN0aXZlRGVzY2VuZGFudC0+aXNFeHBvc2VkVGFibGVDZWxsKCkgJiYgIXNl
bGVjdGVkQ2VsbHMuY29udGFpbnMoYWN0aXZlRGVzY2VuZGFudCkpCiAgICAgICAgICAgICBzZWxl
Y3RlZENlbGxzLmFwcGVuZChhY3RpdmVEZXNjZW5kYW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggOGI0
YTU4YTQ3MDA3Li4yYWY2ZTU5NGZjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0xNTQsOSArMTU0LDExIEBAIHB1Ymxp
YzoKICAgICBBWENvcmVPYmplY3QqIGhlYWRlckNvbnRhaW5lcigpIG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KICAgICBpbnQgYXhDb2x1bW5Db3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIDA7IH0KICAgICBpbnQgYXhSb3dDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7
IH0KKyAgICB2aXJ0dWFsIFZlY3RvcjxWZWN0b3I8QVhJRD4+IGNlbGxTbG90cygpIHsgcmV0dXJu
IHsgfTsgfQogCiAgICAgLy8gVGFibGUgY2VsbCBzdXBwb3J0LgogICAgIGJvb2wgaXNUYWJsZUNl
bGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNFeHBvc2Vk
VGFibGVDZWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICAvLyBSZXR1
cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCiAgICAgc3Rk
OjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHsgMCwgMSB9OyB9CiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQgbG9jYXRpb24g
YW5kIGNvbHVtbiBzcGFuIG9mIHRoZSBjZWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAppbmRleCA2
MTBmNzkzMDg3ZDMuLjM0MTBlOWExM2UyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTg4
Nyw2ICs4ODcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUYWJsZSBjZWxsIHN1cHBvcnQuCiAgICAg
dmlydHVhbCBib29sIGlzVGFibGVDZWxsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0V4cG9zZWRUYWJsZUNlbGwoKSBjb25zdCA9IDA7CiAgICAgLy8gUmV0dXJucyB0aGUgc3RhcnQg
bG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIHRoZSBjZWxsLgogICAgIHZpcnR1YWwgc3RkOjpwYWly
PHVuc2lnbmVkLCB1bnNpZ25lZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0ID0gMDsKICAgICAvLyBS
ZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgdGhlIGNlbGwuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5oCmluZGV4IDM5MGJhMWQ3Mzc5Ny4uNmVhZWQ4NDI3ODFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTGF5b3V0UmVjdCBi
b3VuZGluZ0JveFJlY3QoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlbmRlcmVyLmdldCgpOyB9CisgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVuZGVyZXIu
Z2V0KCk7IH0KICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyQm94TW9kZWxPYmplY3Qo
KSBjb25zdDsKICAgICBOb2RlKiBub2RlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCAz
YTdlZmJlNTkwYzcuLmE3NWU4YTlkMDI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogCi0jaW5j
bHVkZSAiQVhMb2dnZXIuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbi5oIgpAQCAtMzcsMjAgKzM2LDE5IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmgiCiAjaW5jbHVkZSAiRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3JJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
VGFibGVDZWxsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJSZW5kZXJP
YmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxl
Q2VsbC5oIgotI2luY2x1ZGUgIlJlbmRlclRhYmxlU2VjdGlvbi5oIgotI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CisjaW5jbHVkZSA8cXVldWU+CiAKLXVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFjY2Vzc2liaWxp
dHlUYWJsZTo6QWNjZXNzaWJpbGl0eVRhYmxlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAg
OiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJlbmRlcmVyKQpAQCAtNTksNiArNTcsMTMgQEAg
QWNjZXNzaWJpbGl0eVRhYmxlOjpBY2Nlc3NpYmlsaXR5VGFibGUoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikKIHsKIH0KIAorQWNjZXNzaWJpbGl0eVRhYmxlOjpBY2Nlc3NpYmlsaXR5VGFibGUoTm9k
ZSYgbm9kZSkKKyAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qobm9kZSkKKyAgICAsIG1f
aGVhZGVyQ29udGFpbmVyKG51bGxwdHIpCisgICAgLCBtX2lzRXhwb3NhYmxlKHRydWUpCit7Cit9
CisKIEFjY2Vzc2liaWxpdHlUYWJsZTo6fkFjY2Vzc2liaWxpdHlUYWJsZSgpID0gZGVmYXVsdDsK
IAogdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmluaXQoKQpAQCAtNzIsNiArNzcsMTEgQEAgUmVm
PEFjY2Vzc2liaWxpdHlUYWJsZT4gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VGFi
bGUocmVuZGVyZXIpKTsKIH0KIAorUmVmPEFjY2Vzc2liaWxpdHlUYWJsZT4gQWNjZXNzaWJpbGl0
eVRhYmxlOjpjcmVhdGUoTm9kZSYgbm9kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBB
Y2Nlc3NpYmlsaXR5VGFibGUobm9kZSkpOworfQorCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6
aGFzTm9uVGFibGVBUklBUm9sZSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChhcmlhUm9sZUF0dHJp
YnV0ZSgpKSB7CkBAIC04NSwxMSArOTUsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aGFz
Tm9uVGFibGVBUklBUm9sZSgpIGNvbnN0CiAgICAgfQogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlU
YWJsZTo6aXNFeHBvc2FibGUoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzRXhwb3NhYmxlICYm
IChtX3JlbmRlcmVyIHx8IGlzPEhUTUxUYWJsZUVsZW1lbnQ+KG5vZGUoKSkpOwotfQotCiBIVE1M
VGFibGVFbGVtZW50KiBBY2Nlc3NpYmlsaXR5VGFibGU6OnRhYmxlRWxlbWVudCgpIGNvbnN0CiB7
CiAgICAgaWYgKGF1dG8qIHRhYmxlRWxlbWVudCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MVGFibGVF
bGVtZW50Pihub2RlKCkpKQpAQCAtMTExLDEzICsxMTYsMTcgQEAgSFRNTFRhYmxlRWxlbWVudCog
QWNjZXNzaWJpbGl0eVRhYmxlOjp0YWJsZUVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBhbmNl
c3RvcnNPZlR5cGU8SFRNTFRhYmxlRWxlbWVudD4oKihmaXJzdENoaWxkLT5ub2RlKCkpKS5maXJz
dCgpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25zdAor
c3RhdGljIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZUZyb20oRWxlbWVudCYgZWxlbWVudCkKIHsK
LSAgICBpZiAoIW1fcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoYXV0
byogcmVuZGVyU3R5bGUgPSBlbGVtZW50LnJlbmRlclN0eWxlKCkpCisgICAgICAgIHJldHVybiBy
ZW5kZXJTdHlsZTsKKyAgICByZXR1cm4gZWxlbWVudC5leGlzdGluZ0NvbXB1dGVkU3R5bGUoKTsK
K30KIAotICAgIGF1dG8qIG9iamVjdENhY2hlID0gYXhPYmplY3RDYWNoZSgpOwotICAgIGlmICgh
b2JqZWN0Q2FjaGUpCitib29sIEFjY2Vzc2liaWxpdHlUYWJsZTo6aXNEYXRhVGFibGUoKSBjb25z
dAoreworICAgIFdlYWtQdHIgY2FjaGUgPSBheE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNo
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRG8gbm90IGNvbnNpZGVyIGl0IGEg
ZGF0YSB0YWJsZSBpZiBpdCBoYXMgYSBub24tdGFibGUgQVJJQSByb2xlLgpAQCAtMTMwLDE0ICsx
MzksMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgY29uc3QKICAg
ICBpZiAobm9kZSgpICYmIG5vZGUoKS0+aGFzRWRpdGFibGVTdHlsZSgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIGlmICghaXM8UmVuZGVyVGFibGU+KCptX3JlbmRlcmVyKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCiAgICAgLy8gVGhpcyBlbXBsb3lzIGEgaGV1cmlzdGljIHRvIGRl
dGVybWluZSBpZiB0aGlzIHRhYmxlIHNob3VsZCBhcHBlYXIuCiAgICAgLy8gT25seSAiZGF0YSIg
dGFibGVzIHNob3VsZCBiZSBleHBvc2VkIGFzIHRhYmxlcy4KICAgICAvLyBVbmZvcnR1bmF0ZWx5
LCB0aGVyZSBpcyBubyBnb29kIHdheSB0byBkZXRlcm1pbmUgdGhlIGRpZmZlcmVuY2UKICAgICAv
LyBiZXR3ZWVuIGEgImxheW91dCIgdGFibGUgYW5kIGEgImRhdGEiIHRhYmxlLgotICAgIGlmIChI
VE1MVGFibGVFbGVtZW50KiB0YWJsZUVsZW1lbnQgPSB0aGlzLT50YWJsZUVsZW1lbnQoKSkgewor
ICAgIGlmIChXZWFrUHRyIHRhYmxlRWxlbWVudCA9IHRoaXMtPnRhYmxlRWxlbWVudCgpKSB7CiAg
ICAgICAgIC8vIElmIHRoZXJlIGlzIGEgY2FwdGlvbiBlbGVtZW50LCBzdW1tYXJ5LCBUSEVBRCwg
b3IgVEZPT1Qgc2VjdGlvbiwgaXQncyBtb3N0IGNlcnRhaW5seSBhIGRhdGEgdGFibGUuCiAgICAg
ICAgIGlmICghdGFibGVFbGVtZW50LT5zdW1tYXJ5KCkuaXNFbXB0eSgpCiAgICAgICAgICAgICB8
fCAodGFibGVFbGVtZW50LT50SGVhZCgpICYmIHRhYmxlRWxlbWVudC0+dEhlYWQoKS0+cmVuZGVy
ZXIoKSkKQEAgLTE2MiwxNzcgKzE2OCwxODYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6Omlz
RGF0YVRhYmxlKCkgY29uc3QKICAgICAKICAgICAvLyBJZiB0aGUgYXV0aG9yIGhhcyB1c2VkIEFS
SUEgdG8gc3BlY2lmeSBhIHZhbGlkIGNvbHVtbiBvciByb3cgY291bnQsIGFzc3VtZSB0aGV5CiAg
ICAgLy8gd2FudCB1cyB0byB0cmVhdCB0aGUgdGFibGUgYXMgYSBkYXRhIHRhYmxlLgotICAgIGlu
dCBheENvbHVtbkNvdW50ID0gZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9jb2xjb3VudEF0dHIp
OwotICAgIGlmIChheENvbHVtbkNvdW50ID09IC0xIHx8IGF4Q29sdW1uQ291bnQgPiAwKQorICAg
IGF1dG8gYXJpYVJvd09yQ29sQ291bnRJc1NldCA9IFt0aGlzXSAoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0cmlidXRlKSB7CisgICAgICAgIGludCByZXN1bHQgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0
ZShhdHRyaWJ1dGUpOworICAgICAgICByZXR1cm4gcmVzdWx0ID09IC0xIHx8IHJlc3VsdCA+IDA7
CisgICAgfTsKKyAgICBpZiAoYXJpYVJvd09yQ29sQ291bnRJc1NldChhcmlhX2NvbGNvdW50QXR0
cikgfHwgYXJpYVJvd09yQ29sQ291bnRJc1NldChhcmlhX3Jvd2NvdW50QXR0cikpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaW50IGF4Um93Q291bnQgPSBnZXRJbnRlZ3JhbEF0dHJpYnV0
ZShhcmlhX3Jvd2NvdW50QXR0cik7Ci0gICAgaWYgKGF4Um93Q291bnQgPT0gLTEgfHwgYXhSb3dD
b3VudCA+IDApCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIGJvb2wgZGlkVG9wU2VjdGlvbkNo
ZWNrID0gZmFsc2U7CisgICAgYXV0byB0b3BTZWN0aW9uSW5kaWNhdGVzTGF5b3V0VGFibGUgPSBb
Jl0gKEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50KiB0YWJsZVNlY3Rpb25FbGVtZW50KSB7CisgICAg
ICAgIGlmIChkaWRUb3BTZWN0aW9uQ2hlY2sgfHwgIXRhYmxlU2VjdGlvbkVsZW1lbnQpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRpZFRvcFNlY3Rpb25DaGVjayA9IHRydWU7
CiAKLSAgICBSZW5kZXJUYWJsZSYgdGFibGUgPSBkb3duY2FzdDxSZW5kZXJUYWJsZT4oKm1fcmVu
ZGVyZXIpOwotICAgIC8vIGdvIHRocm91Z2ggdGhlIGNlbGwncyBhbmQgY2hlY2sgZm9yIHRlbGwt
dGFsZSBzaWducyBvZiAiZGF0YSIgdGFibGUgc3RhdHVzCi0gICAgLy8gY2VsbHMgaGF2ZSBib3Jk
ZXJzLCBvciB1c2UgYXR0cmlidXRlcyBsaWtlIGhlYWRlcnMsIGFiYnIsIHNjb3BlIG9yIGF4aXMK
LSAgICB0YWJsZS5yZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7Ci0gICAgUmVuZGVyVGFibGVTZWN0
aW9uKiBmaXJzdEJvZHkgPSB0YWJsZS5maXJzdEJvZHkoKTsKLSAgICBpZiAoIWZpcnN0Qm9keSkK
KyAgICAgICAgLy8gSWYgdGhlIHRvcCBzZWN0aW9uIGhhcyBhbnkgbm9uLWdyb3VwIHJvbGUsIHRo
ZW4gZG9uJ3QgbWFrZSB0aGlzIGEgZGF0YSB0YWJsZS4gVGhlIGF1dGhvciBwcm9iYWJseSB3YW50
cyB0byB1c2UgdGhlIHJvbGUgb24gdGhlIHNlY3Rpb24uCisgICAgICAgIGlmIChhdXRvKiBheFRh
YmxlU2VjdGlvbiA9IGNhY2hlLT5nZXRPckNyZWF0ZSh0YWJsZVNlY3Rpb25FbGVtZW50KSkgewor
ICAgICAgICAgICAgYXV0byByb2xlID0gYXhUYWJsZVNlY3Rpb24tPnJvbGVWYWx1ZSgpOworICAg
ICAgICAgICAgaWYgKCFheFRhYmxlU2VjdGlvbi0+aXNHcm91cCgpICYmIHJvbGUgIT0gQWNjZXNz
aWJpbGl0eVJvbGU6OlVua25vd24gJiYgcm9sZSAhPSBBY2Nlc3NpYmlsaXR5Um9sZTo6SWdub3Jl
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfTsKIAotICAgIC8vIElmIHRoZSB0Ym9keSBoYXMgYW55IG5vbi1ncm91
cCByb2xlLCB0aGVuIGRvbid0IG1ha2UgdGhpcyBhIGRhdGEgdGFibGUuIFRoZSBhdXRob3IgcHJv
YmFibHkgd2FudHMgdG8gdXNlIHRoZSByb2xlIGluc2lkZSB0aGUgPHRib2R5Pi4KLSAgICBpZiAo
YXV0byogdG9wU2VjdGlvbiA9IG9iamVjdENhY2hlLT5nZXRPckNyZWF0ZSh0YWJsZS50b3BTZWN0
aW9uKCkpKSB7Ci0gICAgICAgIGF1dG8gcm9sZSA9IHRvcFNlY3Rpb24tPnJvbGVWYWx1ZSgpOwot
ICAgICAgICBpZiAoIXRvcFNlY3Rpb24tPmlzR3JvdXAoKSAmJiByb2xlICE9IEFjY2Vzc2liaWxp
dHlSb2xlOjpVbmtub3duICYmIHJvbGUgIT0gQWNjZXNzaWJpbGl0eVJvbGU6Oklnbm9yZWQpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgaW50IG51bUNvbHMgPSBmaXJz
dEJvZHktPm51bUNvbHVtbnMoKTsKLSAgICBpbnQgbnVtUm93cyA9IGZpcnN0Qm9keS0+bnVtUm93
cygpOwotICAgIAotICAgIC8vIElmIHRoZXJlIGFyZSBhdCBsZWFzdCAyMCByb3dzLCB3ZSdsbCBj
YWxsIGl0IGEgZGF0YSB0YWJsZS4KLSAgICBpZiAoKG51bVJvd3MgPj0gMjAgJiYgbnVtQ29scyA+
PSAyKSB8fCAobnVtUm93cyA+PSAyICYmIG51bUNvbHMgPj0gMjApKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAKICAgICAvLyBTdG9yZSB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdGFi
bGUgdG8gY2hlY2sgYWdhaW5zdCBjZWxsJ3MgYmFja2dyb3VuZCBjb2xvcnMuCi0gICAgY29uc3Qg
UmVuZGVyU3R5bGUmIHRhYmxlU3R5bGUgPSB0YWJsZS5zdHlsZSgpOwotICAgIENvbG9yIHRhYmxl
QkdDb2xvciA9IHRhYmxlU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKLSAgICAKLSAgICAvLyBjaGVjayBlbm91Z2ggb2YgdGhlIGNlbGxzIHRv
IGZpbmQgaWYgdGhlIHRhYmxlIG1hdGNoZXMgb3VyIGNyaXRlcmlhCi0gICAgLy8gQ3JpdGVyaWE6
IAotICAgIC8vICAgMSkgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSB2YWxpZCBjZWxsIChhbmQpCi0g
ICAgLy8gICAyKSBhdCBsZWFzdCBoYWxmIG9mIGNlbGxzIGhhdmUgYm9yZGVycyAob3IpCi0gICAg
Ly8gICAzKSBhdCBsZWFzdCBoYWxmIG9mIGNlbGxzIGhhdmUgZGlmZmVyZW50IGJnIGNvbG9ycyB0
aGFuIHRoZSB0YWJsZSwgYW5kIHRoZXJlIGlzIGNlbGwgc3BhY2luZyAob3IpCi0gICAgLy8gICA0
KSB0aGUgdmFsaWQgY2VsbCBoYXMgYW4gQVJJQSBjZWxsLXJlbGF0ZWQgcHJvcGVydHkKLSAgICB1
bnNpZ25lZCB2YWxpZENlbGxDb3VudCA9IDA7CisgICAgY29uc3QgYXV0byogdGFibGVTdHlsZSA9
IHRoaXMtPnN0eWxlKCk7CisgICAgQ29sb3IgdGFibGVCYWNrZ3JvdW5kQ29sb3IgPSB0YWJsZVN0
eWxlID8gdGFibGVTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKSA6IENvbG9yOjp3aGl0ZTsKKyAgICB1bnNpZ25lZCB0YWJsZUhvcml6b250YWxC
b3JkZXJTcGFjaW5nID0gdGFibGVTdHlsZSA/IHRhYmxlU3R5bGUtPmhvcml6b250YWxCb3JkZXJT
cGFjaW5nKCkgOiAwOworICAgIHVuc2lnbmVkIHRhYmxlVmVydGljYWxCb3JkZXJTcGFjaW5nID0g
dGFibGVTdHlsZSA/IHRhYmxlU3R5bGUtPnZlcnRpY2FsQm9yZGVyU3BhY2luZygpIDogMDsKKwor
ICAgIHVuc2lnbmVkIGNlbGxDb3VudCA9IDA7CiAgICAgdW5zaWduZWQgYm9yZGVyZWRDZWxsQ291
bnQgPSAwOwogICAgIHVuc2lnbmVkIGJhY2tncm91bmREaWZmZXJlbmNlQ2VsbENvdW50ID0gMDsK
ICAgICB1bnNpZ25lZCBjZWxsc1dpdGhUb3BCb3JkZXIgPSAwOwogICAgIHVuc2lnbmVkIGNlbGxz
V2l0aEJvdHRvbUJvcmRlciA9IDA7CiAgICAgdW5zaWduZWQgY2VsbHNXaXRoTGVmdEJvcmRlciA9
IDA7CiAgICAgdW5zaWduZWQgY2VsbHNXaXRoUmlnaHRCb3JkZXIgPSAwOwotICAgIAorCisgICAg
SGFzaE1hcDxOb2RlKiwgdW5zaWduZWQ+IGNlbGxDb3VudEZvckVhY2hSb3c7CiAgICAgQ29sb3Ig
YWx0ZXJuYXRpbmdSb3dDb2xvcnNbNV07CiAgICAgaW50IGFsdGVybmF0aW5nUm93Q29sb3JDb3Vu
dCA9IDA7Ci0gICAgCi0gICAgaW50IGhlYWRlcnNJbkZpcnN0Q29sdW1uQ291bnQgPSAwOwotICAg
IGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IG51bVJvd3M7ICsrcm93KSB7Ci0gICAgCi0gICAgICAg
IGludCBoZWFkZXJzSW5GaXJzdFJvd0NvdW50ID0gMDsKLSAgICAgICAgZm9yIChpbnQgY29sID0g
MDsgY29sIDwgbnVtQ29sczsgKytjb2wpIHsgICAgCi0gICAgICAgICAgICBSZW5kZXJUYWJsZUNl
bGwqIGNlbGwgPSBmaXJzdEJvZHktPnByaW1hcnlDZWxsQXQocm93LCBjb2wpOwotICAgICAgICAg
ICAgaWYgKCFjZWxsKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIHVuc2lnbmVkIHJv
d0NvdW50ID0gMDsKKyAgICB1bnNpZ25lZCBtYXhDb2x1bW5Db3VudCA9IDA7CiAKLSAgICAgICAg
ICAgIEVsZW1lbnQqIGNlbGxFbGVtZW50ID0gY2VsbC0+ZWxlbWVudCgpOwotICAgICAgICAgICAg
aWYgKCFjZWxsRWxlbWVudCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgaWYgKGNlbGwtPndpZHRoKCkgPCAxIHx8IGNlbGwtPmhlaWdodCgpIDwg
MSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
Kyt2YWxpZENlbGxDb3VudDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgYm9vbCBpc1RIQ2Vs
bCA9IGNlbGxFbGVtZW50LT5oYXNUYWdOYW1lKHRoVGFnKTsKLSAgICAgICAgICAgIC8vIElmIHRo
ZSBmaXJzdCByb3cgaXMgY29tcHJpc2VkIG9mIGFsbCA8dGg+IHRhZ3MsIGFzc3VtZSBpdCBpcyBh
IGRhdGEgdGFibGUuCi0gICAgICAgICAgICBpZiAoIXJvdyAmJiBpc1RIQ2VsbCkKLSAgICAgICAg
ICAgICAgICArK2hlYWRlcnNJbkZpcnN0Um93Q291bnQ7Ci0KLSAgICAgICAgICAgIC8vIElmIHRo
ZSBmaXJzdCBjb2x1bW4gaXMgY29tcHJpc2VkIG9mIGFsbCA8dGg+IHRhZ3MsIGFzc3VtZSBpdCBp
cyBhIGRhdGEgdGFibGUuCi0gICAgICAgICAgICBpZiAoIWNvbCAmJiBpc1RIQ2VsbCkKLSAgICAg
ICAgICAgICAgICArK2hlYWRlcnNJbkZpcnN0Q29sdW1uQ291bnQ7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgdGhlIGRldmVsb3BlciBleHBsaWNpdGx5IGFzc2ln
bmVkIGEgImRhdGEiIHRhYmxlIGF0dHJpYnV0ZS4KLSAgICAgICAgICAgIGlmIChpczxIVE1MVGFi
bGVDZWxsRWxlbWVudD4oKmNlbGxFbGVtZW50KSkgewotICAgICAgICAgICAgICAgIEhUTUxUYWJs
ZUNlbGxFbGVtZW50JiB0YWJsZUNlbGxFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFRhYmxlQ2VsbEVs
ZW1lbnQ+KCpjZWxsRWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgaWYgKCF0YWJsZUNlbGxFbGVt
ZW50LmhlYWRlcnMoKS5pc0VtcHR5KCkgfHwgIXRhYmxlQ2VsbEVsZW1lbnQuYWJicigpLmlzRW1w
dHkoKQotICAgICAgICAgICAgICAgICAgICB8fCAhdGFibGVDZWxsRWxlbWVudC5heGlzKCkuaXNF
bXB0eSgpIHx8ICF0YWJsZUNlbGxFbGVtZW50LnNjb3BlKCkuaXNFbXB0eSgpKQorICAgIGF1dG8g
aXNEYXRhVGFibGVCYXNlZE9uUm93Q29sdW1uQ291bnQgPSBbJl0gKCkgeworICAgICAgICAvLyBJ
ZiB0aGVyZSBhcmUgYXQgbGVhc3QgMjAgcm93cywgd2UnbGwgY2FsbCBpdCBhIGRhdGEgdGFibGUu
CisgICAgICAgIHJldHVybiAocm93Q291bnQgPj0gMjAgJiYgbWF4Q29sdW1uQ291bnQgPj0gMikg
fHwgKHJvd0NvdW50ID49IDIgJiYgbWF4Q29sdW1uQ291bnQgPj0gMjApOworICAgIH07CisKKyAg
ICBib29sIGZpcnN0Q29sdW1uSGFzQWxsSGVhZGVyQ2VsbHMgPSB0cnVlOworICAgIFdlYWtQdHI8
SFRNTFRhYmxlUm93RWxlbWVudCwgV2Vha1B0ckltcGxXaXRoRXZlbnRUYXJnZXREYXRhPiBmaXJz
dFJvdzsKKyAgICBXZWFrUHRyPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LCBXZWFrUHRySW1wbFdp
dGhFdmVudFRhcmdldERhdGE+IGZpcnN0Qm9keTsKKyAgICBXZWFrUHRyPEhUTUxUYWJsZVNlY3Rp
b25FbGVtZW50LCBXZWFrUHRySW1wbFdpdGhFdmVudFRhcmdldERhdGE+IGZpcnN0Rm9vdDsKKwor
ICAgIC8vIERvIGEgYnJlYWR0aC1maXJzdCBzZWFyY2ggdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMg
YSBkYXRhIHRhYmxlLgorICAgIHN0ZDo6cXVldWU8V2Vha1B0cjxFbGVtZW50LCBXZWFrUHRySW1w
bFdpdGhFdmVudFRhcmdldERhdGE+PiBlbGVtZW50c1RvVmlzaXQ7CisgICAgZWxlbWVudHNUb1Zp
c2l0LnB1c2goZHluYW1pY0Rvd25jYXN0PEVsZW1lbnQ+KG5vZGUoKSkpOworICAgIHdoaWxlICgh
ZWxlbWVudHNUb1Zpc2l0LmVtcHR5KCkpIHsKKyAgICAgICAgV2Vha1B0ciBjdXJyZW50UGFyZW50
ID0gZWxlbWVudHNUb1Zpc2l0LmZyb250KCk7CisgICAgICAgIGVsZW1lbnRzVG9WaXNpdC5wb3Ao
KTsKKyAgICAgICAgYm9vbCByb3dJc0FsbFRhYmxlSGVhZGVyQ2VsbHMgPSB0cnVlOworICAgICAg
ICBmb3IgKGF1dG8qIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudFBhcmVudCA/IGN1cnJlbnRQYXJl
bnQtPmZpcnN0RWxlbWVudENoaWxkKCkgOiBudWxscHRyOyBjdXJyZW50RWxlbWVudDsgY3VycmVu
dEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAg
ICAgICAgIGlmIChhdXRvKiB0YWJsZVNlY3Rpb25FbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhU
TUxUYWJsZVNlY3Rpb25FbGVtZW50PihjdXJyZW50RWxlbWVudCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAodGFibGVTZWN0aW9uRWxlbWVudC0+aGFzVGFnTmFtZSh0aGVhZFRhZykpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHRvcFNlY3Rpb25JbmRpY2F0ZXNMYXlvdXRUYWJsZSh0YWJsZVNl
Y3Rpb25FbGVtZW50KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRhYmxlU2VjdGlvbkVsZW1lbnQtPmhhc1RhZ05hbWUo
dGJvZHlUYWcpKQorICAgICAgICAgICAgICAgICAgICBmaXJzdEJvZHkgPSBmaXJzdEJvZHkgPyBm
aXJzdEJvZHkgOiB0YWJsZVNlY3Rpb25FbGVtZW50OworICAgICAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHRhYmxlU2VjdGlvbkVsZW1l
bnQtPmhhc1RhZ05hbWUodGZvb3RUYWcpLCAidGFibGUgc2VjdGlvbiBlbGVtZW50cyBzaG91bGQg
YWx3YXlzIGhhdmUgZWl0aGVyIHRoZWFkLCB0Ym9keSwgb3IgdGZvb3QgdGFnIik7CisgICAgICAg
ICAgICAgICAgICAgIGZpcnN0Rm9vdCA9IGZpcnN0Rm9vdCA/IGZpcnN0Rm9vdCA6IHRhYmxlU2Vj
dGlvbkVsZW1lbnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChh
dXRvKiB0YWJsZVJvdyA9IGR5bmFtaWNEb3duY2FzdDxIVE1MVGFibGVSb3dFbGVtZW50PihjdXJy
ZW50RWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBmaXJzdFJvdyA9IGZpcnN0Um93ID8gZmly
c3RSb3cgOiB0YWJsZVJvdzsKKworICAgICAgICAgICAgICAgIHJvd0NvdW50ICs9IDE7CisgICAg
ICAgICAgICAgICAgaWYgKGlzRGF0YVRhYmxlQmFzZWRPblJvd0NvbHVtbkNvdW50KCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAvLyBJZiB0aGUgYXV0aG9yIGhhcyB1c2VkIEFSSUEgdG8gc3BlY2lmeSBhIHZhbGlkIGNvbHVt
biBvciByb3cgaW5kZXgsIGFzc3VtZSB0aGV5IHdhbnQgdXMKLSAgICAgICAgICAgIC8vIHRvIHRy
ZWF0IHRoZSB0YWJsZSBhcyBhIGRhdGEgdGFibGUuCi0gICAgICAgICAgICBpbnQgYXhDb2x1bW5J
bmRleCA9IGNlbGxFbGVtZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2NvbGluZGV4QXR0
cik7Ci0gICAgICAgICAgICBpZiAoYXhDb2x1bW5JbmRleCA+PSAxKQotICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGlmICh0YWJsZVJvdy0+Z2V0SW50ZWdyYWxB
dHRyaWJ1dGUoYXJpYV9yb3dpbmRleEF0dHIpID49IDEgfHwgdGFibGVSb3ctPmdldEludGVncmFs
QXR0cmlidXRlKGFyaWFfY29saW5kZXhBdHRyKSB8fCBub2RlSGFzUm9sZSh0YWJsZVJvdywgInJv
dyJfcykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgICAgICBp
bnQgYXhSb3dJbmRleCA9IGNlbGxFbGVtZW50LT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jv
d2luZGV4QXR0cik7Ci0gICAgICAgICAgICBpZiAoYXhSb3dJbmRleCA+PSAxKQotICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIC8vIEZvciB0aGUgZmlyc3QgNSBy
b3dzLCBjYWNoZSB0aGUgYmFja2dyb3VuZCBjb2xvciBzbyB3ZSBjYW4gY2hlY2sgaWYgdGhpcyB0
YWJsZSBoYXMgemVicmEtc3RyaXBlZCByb3dzLgorICAgICAgICAgICAgICAgIGlmIChhbHRlcm5h
dGluZ1Jvd0NvbG9yQ291bnQgPCA1KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdCBh
dXRvKiByb3dTdHlsZSA9IHN0eWxlRnJvbSgqdGFibGVSb3cpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhbHRlcm5hdGluZ1Jvd0NvbG9yc1thbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnRdID0g
cm93U3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cik7CisgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnQrKzsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoYXV0byogY2VsbCA9IGR5bmFtaWNEb3duY2FzdDxIVE1MVGFibGVDZWxsRWxlbWVu
dD4oY3VycmVudEVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgY2VsbENvdW50Kys7CisKKyAg
ICAgICAgICAgICAgICBib29sIGlzVEhDZWxsID0gY2VsbC0+aGFzVGFnTmFtZSh0aFRhZyk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpc1RIQ2VsbCAmJiByb3dJc0FsbFRhYmxlSGVhZGVyQ2VsbHMp
CisgICAgICAgICAgICAgICAgICAgIHJvd0lzQWxsVGFibGVIZWFkZXJDZWxscyA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgIGlmIChhdXRvKiBwYXJlbnROb2RlID0gY2VsbC0+cGFyZW50Tm9kZSgp
KSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gY2VsbENvdW50Rm9yUm93SXRlcmF0b3IgPSBj
ZWxsQ291bnRGb3JFYWNoUm93LmVuc3VyZShwYXJlbnROb2RlLCBbJl0geworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhbiBlbnRyeSBmb3IgdGhpcyBwYXJlbnQg
eWV0LCBpdCBtdXN0IGJlIHRoZSBmaXJzdCBjb2x1bW4uCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIWlzVEhDZWxsICYmIGZpcnN0Q29sdW1uSGFzQWxsSGVhZGVyQ2VsbHMpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmlyc3RDb2x1bW5IYXNBbGxIZWFkZXJDZWxscyA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAg
IH0pLml0ZXJhdG9yOworICAgICAgICAgICAgICAgICAgICBjZWxsQ291bnRGb3JSb3dJdGVyYXRv
ci0+dmFsdWUgKz0gMTsKKyAgICAgICAgICAgICAgICAgICAgbWF4Q29sdW1uQ291bnQgPSBzdGQ6
Om1heChjZWxsQ291bnRGb3JSb3dJdGVyYXRvci0+dmFsdWUsIG1heENvbHVtbkNvdW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzRGF0YVRhYmxlQmFzZWRPblJvd0NvbHVtbkNvdW50KCkp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmIChhdXRvIGNlbGxQYXJlbnRFbGVtZW50ID0gY2VsbEVsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIGF4Um93SW5kZXggPSBjZWxsUGFy
ZW50RWxlbWVudC0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9yb3dpbmRleEF0dHIpOwotICAg
ICAgICAgICAgICAgIGlmIChheFJvd0luZGV4ID49IDEpCisgICAgICAgICAgICAgICAgLy8gSW4g
dGhpcyBjYXNlLCB0aGUgZGV2ZWxvcGVyIGV4cGxpY2l0bHkgYXNzaWduZWQgYSAiZGF0YSIgdGFi
bGUgYXR0cmlidXRlLgorICAgICAgICAgICAgICAgIGlmICghY2VsbC0+aGVhZGVycygpLmlzRW1w
dHkoKSB8fCAhY2VsbC0+YWJicigpLmlzRW1wdHkoKSB8fCAhY2VsbC0+YXhpcygpLmlzRW1wdHko
KSB8fCAhY2VsbC0+c2NvcGUoKS5pc0VtcHR5KCkgfHwgbm9kZUhhc0NlbGxSb2xlKGNlbGwpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgLy8gSWYgdGhlIGF1dGhvciBoYXMgdXNlZCBBUklBIHRvIHNwZWNpZnkgYSBjb2x1bW4g
b3Igcm93IHNwYW4sIHdlJ3JlIHN1cHBvc2VkIHRvIGlnbm9yZQotICAgICAgICAgICAgLy8gdGhl
IHZhbHVlIGZvciB0aGUgcHVycG9zZXMgb2YgZXhwb3NpbmcgdGhlIHNwYW4uIEJ1dCBhc3N1bWUg
dGhleSB3YW50IHVzIHRvIHRyZWF0IHRoZQotICAgICAgICAgICAgLy8gdGFibGUgYXMgYSBkYXRh
IHRhYmxlLgotICAgICAgICAgICAgaW50IGF4Q29sdW1uU3BhbiA9IGNlbGxFbGVtZW50LT5nZXRJ
bnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2NvbHNwYW5BdHRyKTsKLSAgICAgICAgICAgIGlmIChheENv
bHVtblNwYW4gPj0gMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAvLyBJZiB0aGUgYXV0aG9yIGhhcyB1c2VkIEFSSUEgdG8gc3BlY2lmeSBhIHZhbGlkIGNv
bHVtbiBvciByb3cgaW5kZXgsIGFzc3VtZSB0aGV5IHdhbnQgdXMKKyAgICAgICAgICAgICAgICAv
LyB0byB0cmVhdCB0aGUgdGFibGUgYXMgYSBkYXRhIHRhYmxlLgorICAgICAgICAgICAgICAgIGlm
IChjZWxsLT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX2NvbGluZGV4QXR0cikgPj0gMSB8fCBj
ZWxsLT5nZXRJbnRlZ3JhbEF0dHJpYnV0ZShhcmlhX3Jvd2luZGV4QXR0cikgPj0gMSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgICAgIGludCBheFJvd1NwYW4g
PSBjZWxsRWxlbWVudC0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9yb3dzcGFuQXR0cik7Ci0g
ICAgICAgICAgICBpZiAoYXhSb3dTcGFuID49IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGF1dGhvciBoYXMgdXNlZCBBUklBIHRvIHNw
ZWNpZnkgYSBjb2x1bW4gb3Igcm93IHNwYW4sIHdlJ3JlIHN1cHBvc2VkIHRvIGlnbm9yZQorICAg
ICAgICAgICAgICAgIC8vIHRoZSB2YWx1ZSBmb3IgdGhlIHB1cnBvc2VzIG9mIGV4cG9zaW5nIHRo
ZSBzcGFuLiBCdXQgYXNzdW1lIHRoZXkgd2FudCB1cyB0byB0cmVhdCB0aGUKKyAgICAgICAgICAg
ICAgICAvLyB0YWJsZSBhcyBhIGRhdGEgdGFibGUuCisgICAgICAgICAgICAgICAgaWYgKGNlbGwt
PmdldEludGVncmFsQXR0cmlidXRlKGFyaWFfY29sc3BhbkF0dHIpID49IDEgfHwgY2VsbC0+Z2V0
SW50ZWdyYWxBdHRyaWJ1dGUoYXJpYV9yb3dzcGFuQXR0cikgPj0gMSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiByZW5k
ZXJTdHlsZSA9IGNlbGwtPnN0eWxlKCk7CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byogY2Vs
bFN0eWxlID0gc3R5bGVGcm9tKCpjZWxsKTsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZW1w
dHktY2VsbHMgc3R5bGUgaXMgc2V0LCB3ZSdsbCBjYWxsIGl0IGEgZGF0YSB0YWJsZS4KKyAgICAg
ICAgICAgICAgICBpZiAoY2VsbFN0eWxlICYmIGNlbGxTdHlsZS0+ZW1wdHlDZWxscygpID09IEVt
cHR5Q2VsbDo6SGlkZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAg
ICAgICAgIC8vIElmIHRoZSBlbXB0eS1jZWxscyBzdHlsZSBpcyBzZXQsIHdlJ2xsIGNhbGwgaXQg
YSBkYXRhIHRhYmxlLgotICAgICAgICAgICAgaWYgKHJlbmRlclN0eWxlLmVtcHR5Q2VsbHMoKSA9
PSBFbXB0eUNlbGw6OkhpZGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGNlbGxSZW5kZXJlciA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJC
bG9jaz4oY2VsbC0+cmVuZGVyZXIoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNC
b3JkZXJUb3AgPSBjZWxsUmVuZGVyZXItPmJvcmRlclRvcCgpID4gMDsKKyAgICAgICAgICAgICAg
ICAgICAgYm9vbCBoYXNCb3JkZXJCb3R0b20gPSBjZWxsUmVuZGVyZXItPmJvcmRlckJvdHRvbSgp
ID4gMDsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNCb3JkZXJMZWZ0ID0gY2VsbFJlbmRl
cmVyLT5ib3JkZXJMZWZ0KCkgPiAwOworICAgICAgICAgICAgICAgICAgICBib29sIGhhc0JvcmRl
clJpZ2h0ID0gY2VsbFJlbmRlcmVyLT5ib3JkZXJSaWdodCgpID4gMDsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gSWYgYSBjZWxsIGhhcyBtYXRjaGluZyBib3JkZXJlZCBzaWRlcywgY2FsbCBpdCBh
IChmdWxseSkgYm9yZGVyZWQgY2VsbC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKChoYXNCb3Jk
ZXJUb3AgJiYgaGFzQm9yZGVyQm90dG9tKSB8fCAoaGFzQm9yZGVyTGVmdCAmJiBoYXNCb3JkZXJS
aWdodCkpCisgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJlZENlbGxDb3VudCsrOworCisg
ICAgICAgICAgICAgICAgICAgIC8vIEFsc28ga2VlcCB0cmFjayBvZiBlYWNoIGluZGl2aWR1YWwg
Ym9yZGVyLCBzbyB3ZSBjYW4gY2F0Y2ggdGFibGVzIHdoZXJlIG1vc3QKKyAgICAgICAgICAgICAg
ICAgICAgLy8gY2VsbHMgaGF2ZSBhIGJvdHRvbSBib3JkZXIsIGZvciBleGFtcGxlLgorICAgICAg
ICAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyVG9wKQorICAgICAgICAgICAgICAgICAgICAgICAg
Y2VsbHNXaXRoVG9wQm9yZGVyKys7CisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJC
b3R0b20pCisgICAgICAgICAgICAgICAgICAgICAgICBjZWxsc1dpdGhCb3R0b21Cb3JkZXIrKzsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0JvcmRlckxlZnQpCisgICAgICAgICAgICAgICAg
ICAgICAgICBjZWxsc1dpdGhMZWZ0Qm9yZGVyKys7CisgICAgICAgICAgICAgICAgICAgIGlmICho
YXNCb3JkZXJSaWdodCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxzV2l0aFJpZ2h0Qm9y
ZGVyKys7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvLyBJZiBhIGNlbGwgaGFz
IG1hdGNoaW5nIGJvcmRlcmVkIHNpZGVzLCBjYWxsIGl0IGEgKGZ1bGx5KSBib3JkZXJlZCBjZWxs
LgotICAgICAgICAgICAgaWYgKChjZWxsLT5ib3JkZXJUb3AoKSA+IDAgJiYgY2VsbC0+Ym9yZGVy
Qm90dG9tKCkgPiAwKQotICAgICAgICAgICAgICAgIHx8IChjZWxsLT5ib3JkZXJMZWZ0KCkgPiAw
ICYmIGNlbGwtPmJvcmRlclJpZ2h0KCkgPiAwKSkKLSAgICAgICAgICAgICAgICArK2JvcmRlcmVk
Q2VsbENvdW50OwotCi0gICAgICAgICAgICAvLyBBbHNvIGtlZXAgdHJhY2sgb2YgZWFjaCBpbmRp
dmlkdWFsIGJvcmRlciwgc28gd2UgY2FuIGNhdGNoIHRhYmxlcyB3aGVyZSBtb3N0Ci0gICAgICAg
ICAgICAvLyBjZWxscyBoYXZlIGEgYm90dG9tIGJvcmRlciwgZm9yIGV4YW1wbGUuCi0gICAgICAg
ICAgICBpZiAoY2VsbC0+Ym9yZGVyVG9wKCkgPiAwKQotICAgICAgICAgICAgICAgICsrY2VsbHNX
aXRoVG9wQm9yZGVyOwotICAgICAgICAgICAgaWYgKGNlbGwtPmJvcmRlckJvdHRvbSgpID4gMCkK
LSAgICAgICAgICAgICAgICArK2NlbGxzV2l0aEJvdHRvbUJvcmRlcjsKLSAgICAgICAgICAgIGlm
IChjZWxsLT5ib3JkZXJMZWZ0KCkgPiAwKQotICAgICAgICAgICAgICAgICsrY2VsbHNXaXRoTGVm
dEJvcmRlcjsKLSAgICAgICAgICAgIGlmIChjZWxsLT5ib3JkZXJSaWdodCgpID4gMCkKLSAgICAg
ICAgICAgICAgICArK2NlbGxzV2l0aFJpZ2h0Qm9yZGVyOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICAvLyBJZiB0aGUgY2VsbCBoYXMgYSBkaWZmZXJlbnQgY29sb3IgZnJvbSB0aGUgdGFibGUg
YW5kIHRoZXJlIGlzIGNlbGwgc3BhY2luZywKLSAgICAgICAgICAgIC8vIHRoZW4gaXQgaXMgcHJv
YmFibHkgYSBkYXRhIHRhYmxlIGNlbGwgKHNwYWNpbmcgYW5kIGNvbG9ycyB0YWtlIHRoZSBwbGFj
ZSBvZiBib3JkZXJzKS4KLSAgICAgICAgICAgIENvbG9yIGNlbGxDb2xvciA9IHJlbmRlclN0eWxl
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Ci0gICAg
ICAgICAgICBpZiAodGFibGUuaEJvcmRlclNwYWNpbmcoKSA+IDAgJiYgdGFibGUudkJvcmRlclNw
YWNpbmcoKSA+IDAKLSAgICAgICAgICAgICAgICAmJiB0YWJsZUJHQ29sb3IgIT0gY2VsbENvbG9y
ICYmIGNlbGxDb2xvci5hbHBoYUJ5dGUoKSAhPSAxKSAvLyBGSVhNRSAoaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDUzNyk6IFRoaXMgY29tcGFyaXNvbiB0byAxIGlz
IGxpa2VseSBpbmNvcnJlY3QuIEl0IGxpa2VseSBzaG91bGQgYmUgY2hlY2tpbmcgIWNlbGxDb2xv
ci5pc09wYXF1ZSgpLgotICAgICAgICAgICAgICAgICsrYmFja2dyb3VuZERpZmZlcmVuY2VDZWxs
Q291bnQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIElmIHdlJ3ZlIGZvdW5kIDEwICJn
b29kIiBjZWxscywgd2UgZG9uJ3QgbmVlZCB0byBrZWVwIHNlYXJjaGluZy4KLSAgICAgICAgICAg
IGlmIChib3JkZXJlZENlbGxDb3VudCA+PSAxMCB8fCBiYWNrZ3JvdW5kRGlmZmVyZW5jZUNlbGxD
b3VudCA+PSAxMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgLy8gRm9yIHRoZSBmaXJzdCA1IHJvd3MsIGNhY2hlIHRoZSBiYWNrZ3JvdW5k
IGNvbG9yIHNvIHdlIGNhbiBjaGVjayBpZiB0aGlzIHRhYmxlIGhhcyB6ZWJyYS1zdHJpcGVkIHJv
d3MuCi0gICAgICAgICAgICBpZiAocm93IDwgNSAmJiByb3cgPT0gYWx0ZXJuYXRpbmdSb3dDb2xv
ckNvdW50KSB7Ci0gICAgICAgICAgICAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyUm93ID0gY2Vs
bC0+cGFyZW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJUYWJsZVJvdz4ocmVu
ZGVyUm93KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIHJvd1JlbmRlclN0eWxlID0gcmVuZGVyUm93LT5zdHlsZSgpOwot
ICAgICAgICAgICAgICAgIENvbG9yIHJvd0NvbG9yID0gcm93UmVuZGVyU3R5bGUudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICAgICAgICAgICAg
ICBhbHRlcm5hdGluZ1Jvd0NvbG9yc1thbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnRdID0gcm93Q29s
b3I7Ci0gICAgICAgICAgICAgICAgKythbHRlcm5hdGluZ1Jvd0NvbG9yQ291bnQ7CisgICAgICAg
ICAgICAgICAgLy8gSWYgdGhlIGNlbGwgaGFzIGEgZGlmZmVyZW50IGNvbG9yIGZyb20gdGhlIHRh
YmxlIGFuZCB0aGVyZSBpcyBjZWxsIHNwYWNpbmcsCisgICAgICAgICAgICAgICAgLy8gdGhlbiBp
dCBpcyBwcm9iYWJseSBhIGRhdGEgdGFibGUgY2VsbCAoc3BhY2luZyBhbmQgY29sb3JzIHRha2Ug
dGhlIHBsYWNlIG9mIGJvcmRlcnMpLgorICAgICAgICAgICAgICAgIENvbG9yIGNlbGxDb2xvciA9
IGNlbGxTdHlsZSA/IGNlbGxTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
QmFja2dyb3VuZENvbG9yKSA6IENvbG9yOjp3aGl0ZTsKKyAgICAgICAgICAgICAgICBpZiAodGFi
bGVIb3Jpem9udGFsQm9yZGVyU3BhY2luZyA+IDAgJiYgdGFibGVWZXJ0aWNhbEJvcmRlclNwYWNp
bmcgPiAwICYmIHRhYmxlQmFja2dyb3VuZENvbG9yICE9IGNlbGxDb2xvciAmJiAhY2VsbENvbG9y
LmlzT3BhcXVlKCkpCisgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmREaWZmZXJlbmNlQ2Vs
bENvdW50Kys7CisKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSd2ZSBmb3VuZCAxMCAiZ29vZCIg
Y2VsbHMsIHdlIGRvbid0IG5lZWQgdG8ga2VlcCBzZWFyY2hpbmcuCisgICAgICAgICAgICAgICAg
aWYgKGJvcmRlcmVkQ2VsbENvdW50ID49IDEwIHx8IGJhY2tncm91bmREaWZmZXJlbmNlQ2VsbENv
dW50ID49IDEwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoaXM8SFRNTFRhYmxlRWxlbWVudD4oY3VycmVudEVsZW1lbnQpKSB7CisgICAg
ICAgICAgICAgICAgLy8gRG8gbm90IGRlc2NlbmQgaW50byBuZXN0ZWQgdGFibGVzLiAoSW1wbGVt
ZW50ZWQgYnkgY29udGludWluZyBiZWZvcmUgcHVzaGluZyB0aGUgY3VycmVudCBlbGVtZW50IGlu
dG8gdGhlIEJGUyBlbGVtZW50c1RvVmlzaXQgcXVldWUpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbGVtZW50c1RvVmlzaXQucHVzaChjdXJy
ZW50RWxlbWVudCk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICghcm93ICYmIGhl
YWRlcnNJbkZpcnN0Um93Q291bnQgPT0gbnVtQ29scyAmJiBudW1Db2xzID4gMSkKKworICAgICAg
ICAvLyBJZiB0aGUgZmlyc3Qgcm93IGlzIGNvbXByaXNlZCBvZiBhbGwgPHRoPiB0YWdzLCBhc3N1
bWUgaXQgaXMgYSBkYXRhIHRhYmxlLgorICAgICAgICBpZiAoZmlyc3RSb3cgJiYgY3VycmVudFBh
cmVudCA9PSBmaXJzdFJvdyAmJiByb3dJc0FsbFRhYmxlSGVhZGVyQ2VsbHMgJiYgY2VsbENvdW50
Rm9yRWFjaFJvdy5nZXQoY3VycmVudFBhcmVudC5nZXQoKSkgPj0gMSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChoZWFkZXJzSW5GaXJzdENvbHVtbkNvdW50ID09
IG51bVJvd3MgJiYgbnVtUm93cyA+IDEpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAg
IC8vIGlmIHRoZXJlIGlzIGxlc3MgdGhhbiB0d28gdmFsaWQgY2VsbHMsIGl0J3Mgbm90IGEgZGF0
YSB0YWJsZQotICAgIGlmICh2YWxpZENlbGxDb3VudCA8PSAxKQorICAgIC8vIElmIHRoZXJlIGlz
IGxlc3MgdGhhbiB0d28gdmFsaWQgY2VsbHMsIGl0J3Mgbm90IGEgZGF0YSB0YWJsZS4KKyAgICBp
ZiAoY2VsbENvdW50IDw9IDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBo
YWxmIG9mIHRoZSBjZWxscyBoYWQgYm9yZGVycywgaXQncyBhIGRhdGEgdGFibGUKLSAgICB1bnNp
Z25lZCBuZWVkZWRDZWxsQ291bnQgPSB2YWxpZENlbGxDb3VudCAvIDI7CisKKyAgICBpZiAodG9w
U2VjdGlvbkluZGljYXRlc0xheW91dFRhYmxlKGZpcnN0Qm9keS5nZXQoKSkgfHwgdG9wU2VjdGlv
bkluZGljYXRlc0xheW91dFRhYmxlKGZpcnN0Rm9vdC5nZXQoKSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChmaXJzdENvbHVtbkhhc0FsbEhlYWRlckNlbGxzICYmIHJvd0NvdW50
ID49IDIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gQXQgbGVhc3QgaGFsZiBvZiB0
aGUgY2VsbHMgaGFkIGJvcmRlcnMsIGl0J3MgYSBkYXRhIHRhYmxlLgorICAgIHVuc2lnbmVkIG5l
ZWRlZENlbGxDb3VudCA9IGNlbGxDb3VudCAvIDI7CiAgICAgaWYgKGJvcmRlcmVkQ2VsbENvdW50
ID49IG5lZWRlZENlbGxDb3VudAogICAgICAgICB8fCBjZWxsc1dpdGhUb3BCb3JkZXIgPj0gbmVl
ZGVkQ2VsbENvdW50CiAgICAgICAgIHx8IGNlbGxzV2l0aEJvdHRvbUJvcmRlciA+PSBuZWVkZWRD
ZWxsQ291bnQKQEAgLTM0MCwzNiArMzU1LDMzIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpp
c0RhdGFUYWJsZSgpIGNvbnN0CiAgICAgICAgIHx8IGNlbGxzV2l0aFJpZ2h0Qm9yZGVyID49IG5l
ZWRlZENlbGxDb3VudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgLy8gaGFsZiBo
YWQgZGlmZmVyZW50IGJhY2tncm91bmQgY29sb3JzLCBpdCdzIGEgZGF0YSB0YWJsZQorICAgIC8v
IEF0IGxlYXN0IGhhbGYgb2YgdGhlIGNlbGxzIGhhZCBkaWZmZXJlbnQgYmFja2dyb3VuZCBjb2xv
cnMsIGl0J3MgYSBkYXRhIHRhYmxlLgogICAgIGlmIChiYWNrZ3JvdW5kRGlmZmVyZW5jZUNlbGxD
b3VudCA+PSBuZWVkZWRDZWxsQ291bnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgaWYg
KGlzRGF0YVRhYmxlQmFzZWRPblJvd0NvbHVtbkNvdW50KCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYW4gYWx0ZXJuYXRpbmcgcm93IGJhY2tncm91
bmQgY29sb3IgaW5kaWNhdGluZyBhIHplYnJhIHN0cmlwZWQgc3R5bGUgcGF0dGVybi4KICAgICBp
ZiAoYWx0ZXJuYXRpbmdSb3dDb2xvckNvdW50ID4gMikgewogICAgICAgICBDb2xvciBmaXJzdENv
bG9yID0gYWx0ZXJuYXRpbmdSb3dDb2xvcnNbMF07CiAgICAgICAgIGZvciAoaW50IGsgPSAxOyBr
IDwgYWx0ZXJuYXRpbmdSb3dDb2xvckNvdW50OyBrKyspIHsKLSAgICAgICAgICAgIC8vIElmIGFu
IG9kZCByb3cgd2FzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBmaXJzdCByb3csIGl0cyBub3QgYWx0
ZXJuYXRpbmcuCisgICAgICAgICAgICAvLyBJZiBhbiBvZGQgcm93IHdhcyB0aGUgc2FtZSBjb2xv
ciBhcyB0aGUgZmlyc3Qgcm93LCBpdCdzIG5vdCBhbHRlcm5hdGluZy4KICAgICAgICAgICAgIGlm
IChrICUgMiA9PSAxICYmIGFsdGVybmF0aW5nUm93Q29sb3JzW2tdID09IGZpcnN0Q29sb3IpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgLy8gSWYgYW4gZXZlbiBy
b3cgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBmaXJzdCByb3csIGl0cyBub3QgYWx0ZXJuYXRpbmcu
CisgICAgICAgICAgICAvLyBJZiBhbiBldmVuIHJvdyBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGZp
cnN0IHJvdywgaXQncyBub3QgYWx0ZXJuYXRpbmcuCiAgICAgICAgICAgICBpZiAoIShrICUgMikg
JiYgYWx0ZXJuYXRpbmdSb3dDb2xvcnNba10gIT0gZmlyc3RDb2xvcikKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQot
ICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorLy8gVGhlIGZvbGxvd2luZyBpcyBhIGhldXJp
c3RpYyB1c2VkIHRvIGRldGVybWluZSBpZiBhIDx0YWJsZT4gc2hvdWxkIGJlIGV4cG9zZWQgYXMg
YW4gQVhUYWJsZS4KKy8vIFRoZSBnb2FsIGlzIHRvIG9ubHkgc2hvdyAiZGF0YSIgdGFibGVzLgog
Ym9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFj
Y2Vzc2liaWxpdHkoKSBjb25zdAogewotICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgYSBoZXVyaXN0
aWMgdXNlZCB0byBkZXRlcm1pbmUgaWYgYQotICAgIC8vIDx0YWJsZT4gc2hvdWxkIGJlIGV4cG9z
ZWQgYXMgYW4gQVhUYWJsZS4gVGhlIGdvYWwKLSAgICAvLyBpcyB0byBvbmx5IHNob3cgImRhdGEi
IHRhYmxlcy4KLQotICAgIGlmICghbV9yZW5kZXJlciAmJiAhaXM8SFRNTFRhYmxlRWxlbWVudD4o
bm9kZSgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgLy8gSWYgaXQgaGFzIGEgbm9u
LXRhYmxlIEFSSUEgcm9sZSwgaXQgc2hvdWxkbid0IGJlIGV4cG9zZWQgYXMgYSB0YWJsZS4KICAg
ICBpZiAoaGFzTm9uVGFibGVBUklBUm9sZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0z
NzcsOSArMzg5LDEyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRlSXNUYWJsZUV4
cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3QKICAgICByZXR1cm4gaXNEYXRhVGFi
bGUoKTsKIH0KIAotCiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJsZTo6cmVjb21wdXRlSXNFeHBvc2Fi
bGUoKQogeworICAgIC8vIE1ha2Ugc3VyZSBjaGlsZHJlbiBhcmUgdXAtdG8tZGF0ZSwgYmVjYXVz
ZSBpZiB3ZSBkbyBlbmQgdXAgY2hhbmdpbmcgaXMtZXhwb3NlZCBzdGF0ZSwgd2Ugd2FudCB0byBt
YWtlCisgICAgLy8gc3VyZSB1cGRhdGVDaGlsZHJlblJvbGVzIGl0ZXJhdGVzIG92ZXIgdGhvc2Ug
Y2hpbGRyZW4gYmVmb3JlIHRoZXkgY2hhbmdlLgorICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3Nh
cnkoKTsKKwogICAgIGJvb2wgcHJldmlvdXNseUV4cG9zYWJsZSA9IG1faXNFeHBvc2FibGU7CiAg
ICAgbV9pc0V4cG9zYWJsZSA9IGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKTsKICAgICBpZiAocHJldmlvdXNseUV4cG9zYWJsZSAhPSBtX2lzRXhwb3NhYmxlKSB7
CkBAIC0zOTQsNiArNDA5LDI0IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjpyZWNvbXB1dGVJ
c0V4cG9zYWJsZSgpCiAgICAgfQogfQogCitWZWN0b3I8VmVjdG9yPEFYSUQ+PiBBY2Nlc3NpYmls
aXR5VGFibGU6OmNlbGxTbG90cygpCit7CisgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgp
OworICAgIHJldHVybiBtX2NlbGxTbG90czsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6
OnNldENlbGxTbG90c0RpcnR5KCkKK3sKKyAgICAvLyBCZWNhdXNlIHRoZSBjZWxsLXNsb3RzIGdy
aWQgaXMgKG5lY2Vzc2FyaWx5KSBjb21wdXRlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGNoaWxkcmVu
LCBtYXJrCisgICAgLy8gdGhlIGNoaWxkcmVuIGFzIGRpcnR5IGJ5IGNsZWFyaW5nIHRoZW0uCisg
ICAgLy8KKyAgICAvLyBJdCdzIG5lY2Vzc2FyeSB0byBjb21wdXRlIHRoZSBjZWxsLXNsb3RzIGdy
aWQgdG9nZXRoZXIgd2l0aCBjaGlsZHJlbiBiZWNhdXNlIHRoZXkgYXJlIGJvdGgKKyAgICAvLyBp
bmZsdWVuY2VkIGJ5IHRoZSBzYW1lIGZhY3RvcnMuIEZvciBleGFtcGxlLCBpZiBgc2V0Q2VsbFNs
b3RzRGlydHlgIGlzIGNhbGxlZCBiZWNhdXNlCisgICAgLy8gYSBjaGlsZCBpbmNyZWFzZWQgaW4g
Y29sdW1uIHNwYW4sIHRoYXQgbWF5IGFsc28gcmVzdWx0IGluIG1vcmUgY29sdW1uIGNoaWxkcmVu
IGJlaW5nCisgICAgLy8gYWRkZWQgaWYgdGhhdCBjb2x1bW4gc3BhbiBjaGFuZ2UgaW5jcmVhc2Vk
IHRoZSAid2lkdGgiIG9mIHRoZSB0YWJsZS4KKyAgICBjbGVhckNoaWxkcmVuKCk7Cit9CisKIHZv
aWQgQWNjZXNzaWJpbGl0eVRhYmxlOjp1cGRhdGVDaGlsZHJlblJvbGVzKCkKIHsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHJvdyA6IG1fcm93cykgewpAQCAtNDA4LDYgKzQ0MSw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVRhYmxlOjpjbGVhckNoaWxkcmVuKCkKICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpjbGVhckNoaWxkcmVuKCk7CiAgICAgbV9yb3dzLmNsZWFyKCk7CiAgICAgbV9jb2x1
bW5zLmNsZWFyKCk7CisgICAgbV9jZWxsU2xvdHMuY2xlYXIoKTsKIAogICAgIGlmIChtX2hlYWRl
ckNvbnRhaW5lcikgewogICAgICAgICBtX2hlYWRlckNvbnRhaW5lci0+ZGV0YWNoRnJvbVBhcmVu
dCgpOwpAQCAtNDIxLDQyICs0NTUsMjE4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRD
aGlsZHJlbigpCiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVu
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgQVNTRVJUKCFtX2NoaWxkcmVu
SW5pdGlhbGl6ZWQpOyAKLSAgICAKKworICAgIEFTU0VSVCghbV9jaGlsZHJlbkluaXRpYWxpemVk
KTsKICAgICBtX2NoaWxkcmVuSW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIGlmICghaXM8UmVuZGVy
VGFibGU+KHJlbmRlcmVyKCkpKQorICAgIFdlYWtQdHIgY2FjaGUgPSBheE9iamVjdENhY2hlKCk7
CisgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFJlbmRlclRhYmxl
JiB0YWJsZSA9IGRvd25jYXN0PFJlbmRlclRhYmxlPigqbV9yZW5kZXJlcik7Ci0gICAgLy8gR28g
dGhyb3VnaCBhbGwgdGhlIGF2YWlsYWJsZSBzZWN0aW9ucyB0byBwdWxsIG91dCB0aGUgcm93cyBh
bmQgYWRkIHRoZW0gYXMgY2hpbGRyZW4uCi0gICAgdGFibGUucmVjYWxjU2VjdGlvbnNJZk5lZWRl
ZCgpOwotICAgIAotICAgIGlmIChIVE1MVGFibGVFbGVtZW50KiB0YWJsZUVsZW1lbnQgPSB0aGlz
LT50YWJsZUVsZW1lbnQoKSkgewotICAgICAgICBpZiAoYXV0byBjYXB0aW9uID0gdGFibGVFbGVt
ZW50LT5jYXB0aW9uKCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4Q2Fw
dGlvbiA9IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoY2FwdGlvbi5nZXQoKSk7Ci0gICAg
ICAgICAgICBhZGRDaGlsZChheENhcHRpb24sIERlc2NlbmRJZklnbm9yZWQ6Ok5vKTsKKworICAg
IC8vIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgImZvcm1pbmcgYSB0YWJsZSIgYWxnb3Jp
dGhtIGZvciBkZXRlcm1pbmluZworICAgIC8vIHRoZSBjb3JyZWN0IGNlbGwgcG9zaXRpb25zIGFu
ZCBzcGFucyAoYW5kIHN0b3JpbmcgdGhvc2UgaW4gbV9jZWxsU2xvdHMgZm9yIGxhdGVyIHVzZSku
CisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0
bWwjZm9ybWluZy1hLXRhYmxlCisKKyAgICAvLyBTdGVwIDEuCisgICAgdW5zaWduZWQgeFdpZHRo
ID0gMDsKKyAgICAvLyBTdGVwIDIuCisgICAgdW5zaWduZWQgeUhlaWdodCA9IDA7CisgICAgLy8g
U3RlcCAzOiBMZXQgcGVuZGluZyB0Zm9vdCBlbGVtZW50cyBiZSBhIGxpc3Qgb2YgdGZvb3QgZWxl
bWVudHMsIGluaXRpYWxseSBlbXB0eS4KKyAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBwZW5kaW5n
VGZvb3RFbGVtZW50czsKKyAgICAvLyBTdGVwIDEwLgorICAgIHVuc2lnbmVkIHlDdXJyZW50ID0g
MDsKKyAgICBSZWZQdHI8SFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQ+IGNhcHRpb25FbGVtZW50Owor
CisgICAgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4gYXBwZW5kZWRSb3dzOworICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RhYmxlcy5odG1sI2FsZ29y
aXRobS1mb3ItcHJvY2Vzc2luZy1yb3dzCisgICAgYXV0byBwcm9jZXNzUm93ID0gWyYsIHRoaXNd
IChBY2Nlc3NpYmlsaXR5VGFibGVSb3cqIHJvdykgeworICAgICAgICBpZiAoIXJvdyB8fCBhcHBl
bmRlZFJvd3MuY29udGFpbnMocm93KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXBw
ZW5kZWRSb3dzLmFkZChyb3cpOworICAgICAgICAvLyBTdGVwIDE6IElmIHloZWlnaHQgaXMgZXF1
YWwgdG8geWN1cnJlbnQsIHRoZW4gaW5jcmVhc2UgeWhlaWdodCBieSAxLiAoeWN1cnJlbnQgbXVz
dCBuZXZlciBiZSBncmVhdGVyIHRoYW4geWhlaWdodC4pCisgICAgICAgIGlmICh5SGVpZ2h0IDw9
IHlDdXJyZW50KQorICAgICAgICAgICAgeUhlaWdodCA9IHlDdXJyZW50ICsgMTsKKworICAgICAg
ICAvLyBTdGVwIDIuCisgICAgICAgIHVuc2lnbmVkIHhDdXJyZW50ID0gMDsKKyAgICAgICAgLy8g
U3RlcCAzOiBSdW4gdGhlIGFsZ29yaXRobSBmb3IgZ3Jvd2luZyBkb3dud2FyZC1ncm93aW5nIGNl
bGxzIChub3QgaW1wbGVtZW50ZWQpLgorCisgICAgICAgIC8vIFN0ZXAgNDogSWYgdGhlIHRyIGVs
ZW1lbnQgYmVpbmcgcHJvY2Vzc2VkIGhhcyBubyB0ZCBvciB0aCBlbGVtZW50IGNoaWxkcmVuLCB0
aGVuIGluY3JlYXNlIHljdXJyZW50IGJ5IDEsIGFib3J0IHRoaXMgc2V0IG9mIHN0ZXBzLCBhbmQg
cmV0dXJuIHRvIHRoZSBhbGdvcml0aG0gYWJvdmUuCisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
Y2hpbGQgOiByb3ctPmNoaWxkcmVuKCkpIHsKKyAgICAgICAgICAgIGF1dG8qIGN1cnJlbnRDZWxs
ID0gZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KGNoaWxkLmdldCgpKTsK
KyAgICAgICAgICAgIGlmICghY3VycmVudENlbGwpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIC8vIFN0ZXAgNjogV2hpbGUgdGhlIHNsb3Qgd2l0aCBjb29yZGluYXRl
ICh4Y3VycmVudCwgeWN1cnJlbnQpIGFscmVhZHkgaGFzIGEgY2VsbCBhc3NpZ25lZCB0byBpdCwg
aW5jcmVhc2UgeGN1cnJlbnQgYnkgMS4KKyAgICAgICAgICAgIGVuc3VyZVJvd0FuZENvbHVtbih5
Q3VycmVudCwgeEN1cnJlbnQpOworICAgICAgICAgICAgd2hpbGUgKG1fY2VsbFNsb3RzW3lDdXJy
ZW50XVt4Q3VycmVudF0uaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgeEN1cnJlbnQgKz0g
MTsKKyAgICAgICAgICAgICAgICBlbnN1cmVSb3dBbmRDb2x1bW4oeUN1cnJlbnQsIHhDdXJyZW50
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFN0ZXAgNzogSWYgeGN1cnJlbnQgaXMg
ZXF1YWwgdG8geHdpZHRoLCBpbmNyZWFzZSB4d2lkdGggYnkgMS4gKHhjdXJyZW50IGlzIG5ldmVy
IGdyZWF0ZXIgdGhhbiB4d2lkdGguKQorICAgICAgICAgICAgaWYgKHhDdXJyZW50ID49IHhXaWR0
aCkKKyAgICAgICAgICAgICAgICB4V2lkdGggPSB4Q3VycmVudCArIDE7CisgICAgICAgICAgICAv
LyBTdGVwIDg6IElmIHRoZSBjdXJyZW50IGNlbGwgaGFzIGEgY29sc3BhbiBhdHRyaWJ1dGUsIHRo
ZW4gcGFyc2UgdGhhdCBhdHRyaWJ1dGUncyB2YWx1ZSwgYW5kIGxldCBjb2xzcGFuIGJlIHRoZSBy
ZXN1bHQuCisgICAgICAgICAgICB1bnNpZ25lZCBjb2xTcGFuID0gY3VycmVudENlbGwtPmNvbFNw
YW4oKTsKKyAgICAgICAgICAgIC8vIFN0ZXAgOTogSWYgdGhlIGN1cnJlbnQgY2VsbCBoYXMgYSBy
b3dzcGFuIGF0dHJpYnV0ZSwgdGhlbiBwYXJzZSB0aGF0IGF0dHJpYnV0ZSdzIHZhbHVlLCBhbmQg
bGV0IHJvd3NwYW4gYmUgdGhlIHJlc3VsdC4KKyAgICAgICAgICAgIHVuc2lnbmVkIHJvd1NwYW4g
PSBjdXJyZW50Q2VsbC0+cm93U3BhbigpOworCisgICAgICAgICAgICAvLyBTdGVwIDEwOiBJZiBy
b3dzcGFuIGlzIHplcm8gYW5kIHRoZSB0YWJsZSBlbGVtZW50J3Mgbm9kZSBkb2N1bWVudCBpcyBu
b3Qgc2V0IHRvIHF1aXJrcyBtb2RlLCB0aGVuIGxldAorICAgICAgICAgICAgLy8gY2VsbCBncm93
cyBkb3dud2FyZCBiZSB0cnVlLCBhbmQgc2V0IHJvd3NwYW4gdG8gMS4gT3RoZXJ3aXNlLCBsZXQg
Y2VsbCBncm93cyBkb3dud2FyZCBiZSBmYWxzZS4KKyAgICAgICAgICAgIC8vIE5PVEU6IFdlIGlu
dGVudGlvbmFsbHkgZG9uJ3QgaW1wbGVtZW50IHRoaXMgc3RlcCBiZWNhdXNlIHRoZSByZW5kZXJp
bmcgY29kZSBkb2Vzbid0LCBzbyBpbXBsZW1lbnRpbmcgaXQKKyAgICAgICAgICAgIC8vIHdvdWxk
IGNhdXNlIEFYIHRvIG5vdCBtYXRjaCB0aGUgdmlzdWFsIHN0YXRlIG9mIHRoZSBwYWdlLgorCisg
ICAgICAgICAgICAvLyBTdGVwIDExOiBJZiB4d2lkdGggPCB4Y3VycmVudCtjb2xzcGFuLCB0aGVu
IGxldCB4d2lkdGggYmUgeGN1cnJlbnQrY29sc3Bhbi4KKyAgICAgICAgICAgIGlmICh4V2lkdGgg
PCB4Q3VycmVudCArIGNvbFNwYW4pCisgICAgICAgICAgICAgICAgeFdpZHRoID0geEN1cnJlbnQg
KyBjb2xTcGFuOworCisgICAgICAgICAgICAvLyBTdGVwIDEyOiBJZiB5aGVpZ2h0IDwgeWN1cnJl
bnQrcm93c3BhbiwgdGhlbiBsZXQgeWhlaWdodCBiZSB5Y3VycmVudCtyb3dzcGFuLgorICAgICAg
ICAgICAgaWYgKHlIZWlnaHQgPCB5Q3VycmVudCArIHJvd1NwYW4pCisgICAgICAgICAgICAgICAg
eUhlaWdodCA9IHlDdXJyZW50ICsgcm93U3BhbjsKKworICAgICAgICAgICAgLy8gU3RlcCAxMzog
TGV0IHRoZSBzbG90cyB3aXRoIGNvb3JkaW5hdGVzICh4LCB5KSBzdWNoIHRoYXQgeGN1cnJlbnQg
4omkIHggPCB4Y3VycmVudCtjb2xzcGFuIGFuZAorICAgICAgICAgICAgLy8geWN1cnJlbnQg4omk
IHkgPCB5Y3VycmVudCtyb3dzcGFuIGJlIGNvdmVyZWQgYnkgYSBuZXcgY2VsbCBjLCBhbmNob3Jl
ZCBhdCAoeGN1cnJlbnQsIHljdXJyZW50KSwKKyAgICAgICAgICAgIC8vIHdoaWNoIGhhcyB3aWR0
aCBjb2xzcGFuIGFuZCBoZWlnaHQgcm93c3BhbiwgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVu
dCBjZWxsIGVsZW1lbnQuCisgICAgICAgICAgICBjdXJyZW50Q2VsbC0+c2V0Um93SW5kZXgoeUN1
cnJlbnQpOworICAgICAgICAgICAgY3VycmVudENlbGwtPnNldENvbHVtbkluZGV4KHhDdXJyZW50
KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgeSA9IHlDdXJyZW50OyB5IDwgeUN1cnJlbnQg
KyByb3dTcGFuOyB5KyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHggPSB4Q3Vy
cmVudDsgeCA8IHhDdXJyZW50ICsgY29sU3BhbjsgeCsrKSB7CisgICAgICAgICAgICAgICAgICAg
IGVuc3VyZVJvd0FuZENvbHVtbih5LCB4KTsKKyAgICAgICAgICAgICAgICAgICAgbV9jZWxsU2xv
dHNbeV1beF0gPSBjdXJyZW50Q2VsbC0+b2JqZWN0SUQoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFN0ZXAgMTQ6IElmIGNlbGwgZ3Jvd3MgZG93
bndhcmQgaXMgdHJ1ZSwgdGhlbiBhZGQgdGhlIHR1cGxlIHtjLCB4Y3VycmVudCwgY29sc3Bhbn0g
dG8gdGhlCisgICAgICAgICAgICAvLyBsaXN0IG9mIGRvd253YXJkLWdyb3dpbmcgY2VsbHMuIE5v
dCBpbXBsZW1lbnRlZC4KKworICAgICAgICAgICAgLy8gU3RlcCAxNS4KKyAgICAgICAgICAgIHhD
dXJyZW50ICs9IGNvbFNwYW47CisKKyAgICAgICAgICAgIC8vIFN0ZXAgMTYgaGFuZGxlZCBiZWxv
dy4KKyAgICAgICAgICAgIC8vIFN0ZXAgMTcgYW5kIDE4OiBMZXQgY3VycmVudCBjZWxsIGJlIHRo
ZSBuZXh0IHRkIG9yIHRoIGVsZW1lbnQgY2hpbGQgaW4gdGhlIHRyIGVsZW1lbnQgYmVpbmcgcHJv
Y2Vzc2VkLiAoVGhpcyBpcyBpbXBsZW1lbnRlZCBieSBhbGxvd2luZyB0aGUgbG9vcCB0byBjb250
aW51ZSBhYm92ZSkuCiAgICAgICAgIH0KLSAgICB9CiAKLSAgICB1bnNpZ25lZCBtYXhDb2x1bW5D
b3VudCA9IDA7Ci0gICAgUmVuZGVyVGFibGVTZWN0aW9uKiBmb290ZXIgPSB0YWJsZS5mb290ZXIo
KTsKLSAgICAKLSAgICBmb3IgKFJlbmRlclRhYmxlU2VjdGlvbiogdGFibGVTZWN0aW9uID0gdGFi
bGUudG9wU2VjdGlvbigpOyB0YWJsZVNlY3Rpb247IHRhYmxlU2VjdGlvbiA9IHRhYmxlLnNlY3Rp
b25CZWxvdyh0YWJsZVNlY3Rpb24sIFNraXBFbXB0eVNlY3Rpb25zKSkgewotICAgICAgICBpZiAo
dGFibGVTZWN0aW9uID09IGZvb3RlcikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBh
ZGRDaGlsZHJlbkZyb21TZWN0aW9uKHRhYmxlU2VjdGlvbiwgbWF4Q29sdW1uQ291bnQpOworICAg
ICAgICAvLyBOb3Qgc3BlY2lmaWVkOiB1cGRhdGUgc29tZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVy
ZXMuCisgICAgICAgIG1fcm93cy5hcHBlbmQocm93KTsKKyAgICAgICAgcm93LT5zZXRSb3dJbmRl
eCh5Q3VycmVudCk7CisgICAgICAgIGFkZENoaWxkKHJvdyk7CisKKyAgICAgICAgLy8gU3RlcCAx
NjogSWYgY3VycmVudCBjZWxsIGlzIHRoZSBsYXN0IHRkIG9yIHRoIGVsZW1lbnQgY2hpbGQgaW4g
dGhlIHRyIGVsZW1lbnQgYmVpbmcgcHJvY2Vzc2VkLCB0aGVuIGluY3JlYXNlIHljdXJyZW50IGJ5
IDEsIGFib3J0IHRoaXMgc2V0IG9mIHN0ZXBzLCBhbmQgcmV0dXJuIHRvIHRoZSBhbGdvcml0aG0g
YWJvdmUuCisgICAgICAgIHlDdXJyZW50ICs9IDE7CisgICAgfTsKKyAgICBhdXRvIG5lZWRzVG9E
ZXNjZW5kID0gWyZhcHBlbmRlZFJvd3NdIChBWENvcmVPYmplY3QmIGF4T2JqZWN0KSB7CisgICAg
ICAgIHJldHVybiAoIWF4T2JqZWN0LmlzVGFibGVSb3coKSB8fCAhYXhPYmplY3Qubm9kZSgpKQor
ICAgICAgICAgICAgJiYgIWFwcGVuZGVkUm93cy5jb250YWlucyhkeW5hbWljRG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eU9iamVjdD4oYXhPYmplY3QpKTsKKyAgICB9OworICAgIHN0ZDo6ZnVuY3Rpb248
dm9pZChBWENvcmVPYmplY3QqKT4gcHJvY2Vzc1Jvd0Rlc2NlbmRpbmdJZk5lZWRlZCA9IFsmXSAo
QVhDb3JlT2JqZWN0KiBheE9iamVjdCkgeworICAgICAgICBpZiAoIWF4T2JqZWN0KQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAvLyBEZXNjZW5kIHBhc3QgYW5vbnltb3VzIHJlbmRlcmVy
cyBhbmQgbm9uLXJvd3MuCisgICAgICAgIGlmIChuZWVkc1RvRGVzY2VuZCgqYXhPYmplY3QpKSB7
CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogYXhPYmplY3QtPmNoaWxkcmVu
KCkpCisgICAgICAgICAgICAgICAgcHJvY2Vzc1Jvd0Rlc2NlbmRpbmdJZk5lZWRlZChjaGlsZC5n
ZXQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcHJvY2Vzc1JvdyhkeW5hbWljRG93
bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93PihheE9iamVjdCkpOworICAgIH07CisgICAgLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwjYWxnb3Jp
dGhtLWZvci1lbmRpbmctYS1yb3ctZ3JvdXAKKyAgICBhdXRvIGVuZFJvd0dyb3VwID0gWyZdICgp
IHsKKyAgICAgICAgaWYgKHlDdXJyZW50IDwgeUhlaWdodCkKKyAgICAgICAgICAgIHlDdXJyZW50
ID0geUhlaWdodDsKKyAgICB9OworICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3RhYmxlcy5odG1sI2FsZ29yaXRobS1mb3ItcHJvY2Vzc2luZy1yb3ctZ3JvdXBz
CisgICAgYXV0byBwcm9jZXNzUm93R3JvdXAgPSBbJl0gKEVsZW1lbnQmIHNlY3Rpb25FbGVtZW50
KSB7CisgICAgICAgIC8vIFN0ZXAgMTogTGV0IHlzdGFydCBoYXZlIHRoZSB2YWx1ZSBvZiB5aGVp
Z2h0LiBOb3QgaW1wbGVtZW50ZWQgYmVjYXVzZSBpdCdzIG9ubHkgdXNlZnVsIGZvciBzdGVwIDMs
IHdoaWNoIHdlIHNraXAuCisKKyAgICAgICAgLy8gU3RlcCAyOiBGb3IgZWFjaCB0ciBlbGVtZW50
IHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQsCisgICAgICAg
IC8vIGluIHRyZWUgb3JkZXIsIHJ1biB0aGUgYWxnb3JpdGhtIGZvciBwcm9jZXNzaW5nIHJvd3Mu
CisgICAgICAgIGlmIChSZWZQdHIgdGFibGVTZWN0aW9uID0gZHluYW1pY0Rvd25jYXN0PEhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50PihzZWN0aW9uRWxlbWVudCkpIHsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgcm93IDogY2hpbGRyZW5PZlR5cGU8SFRNTFRhYmxlUm93RWxlbWVudD4oKnRhYmxlU2Vj
dGlvbikpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHIgdGFibGVSb3cgPSBkeW5hbWljRG93bmNh
c3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93PihjYWNoZS0+Z2V0T3JDcmVhdGUoJnJvdykpOworICAg
ICAgICAgICAgICAgIHByb2Nlc3NSb3codGFibGVSb3cuZ2V0KCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgaWYgKFJlZlB0ciBzZWN0aW9uQXhPYmplY3QgPSBjYWNoZS0+Z2V0T3JD
cmVhdGUoJnNlY3Rpb25FbGVtZW50KSkgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShub2RlSGFzUm9sZSgmc2VjdGlvbkVsZW1lbnQsICJyb3dncm91cCJfcyksICJwcm9jZXNzUm93
R3JvdXAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggbmF0aXZlIHRhYmxlIHNlY3Rpb24gZWxl
bWVudHMsIG9yIHJvbGU9cm93Z3JvdXAgZWxlbWVudHMiKTsKKyAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgY2hpbGQgOiBzZWN0aW9uQXhPYmplY3QtPmNoaWxkcmVuKCkpCisgICAgICAgICAg
ICAgICAgcHJvY2Vzc1Jvd0Rlc2NlbmRpbmdJZk5lZWRlZChjaGlsZC5nZXQoKSk7CisgICAgICAg
IH0KKyAgICAgICAgLy8gU3RlcCAzOiBJZiB5aGVpZ2h0ID4geXN0YXJ0LCB0aGVuIGxldCBhbGwg
dGhlIGxhc3Qgcm93cyBpbiB0aGUgdGFibGUgZnJvbSB5PXlzdGFydCB0byB5PXloZWlnaHQtMQor
ICAgICAgICAvLyBmb3JtIGEgbmV3IHJvdyBncm91cCwgYW5jaG9yZWQgYXQgdGhlIHNsb3Qgd2l0
aCBjb29yZGluYXRlICgwLCB5c3RhcnQpLCB3aXRoIGhlaWdodCB5aGVpZ2h0LXlzdGFydCwKKyAg
ICAgICAgLy8gY29ycmVzcG9uZGluZyB0byB0aGUgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQuIE5v
dCBpbXBsZW1lbnRlZC4KKworICAgICAgICAvLyBTdGVwIDQ6IFJ1biB0aGUgYWxnb3JpdGhtIGZv
ciBlbmRpbmcgYSByb3cgZ3JvdXAuCisgICAgICAgIGVuZFJvd0dyb3VwKCk7CisgICAgfTsKKwor
ICAgIC8vIFN0ZXAgNDogTGV0IHRoZSB0YWJsZSBiZSB0aGUgdGFibGUgcmVwcmVzZW50ZWQgYnkg
dGhlIHRhYmxlIGVsZW1lbnQuCisgICAgUmVmUHRyIHRhYmxlRWxlbWVudCA9IHRoaXMtPm5vZGUo
KTsKKyAgICAvLyBgaXNBcmlhVGFibGUoKWAgd2lsbCByZXR1cm4gdHJ1ZSBmb3IgdGFibGUtbGlr
ZSBBUklBIHN0cnVjdHVyZXMgKGdyaWQsIHRyZWVncmlkLCB0YWJsZSkuCisgICAgaWYgKCFpczxI
VE1MVGFibGVFbGVtZW50Pih0YWJsZUVsZW1lbnQuZ2V0KCkpICYmICFpc0FyaWFUYWJsZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoTm9kZSopPiBwcm9jZXNz
VGFibGVEZXNjZW5kYW50ID0gWyYsIHRoaXNdIChOb2RlKiBub2RlKSB7CisgICAgICAgIC8vIFN0
ZXAgODogV2hpbGUgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBub3Qgb25lIG9mIHRoZSBmb2xsb3dp
bmcgZWxlbWVudHMsIGFkdmFuY2UgdGhlCisgICAgICAgIC8vIGN1cnJlbnQgZWxlbWVudCB0byB0
aGUgbmV4dCBjaGlsZCBvZiB0aGUgdGFibGUuCisgICAgICAgIGlmIChhdXRvKiBjYXB0aW9uID0g
ZHluYW1pY0Rvd25jYXN0PEhUTUxUYWJsZUNhcHRpb25FbGVtZW50Pihub2RlKSkgeworICAgICAg
ICAgICAgLy8gU3RlcCA2OiBBc3NvY2lhdGUgdGhlIGZpcnN0IGNhcHRpb24gZWxlbWVudCBjaGls
ZCBvZiB0aGUgdGFibGUgZWxlbWVudCB3aXRoIHRoZSB0YWJsZS4KKyAgICAgICAgICAgIGlmICgh
Y2FwdGlvbkVsZW1lbnQpCisgICAgICAgICAgICAgICAgY2FwdGlvbkVsZW1lbnQgPSBjYXB0aW9u
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byogZWxlbWVu
dCA9IGR5bmFtaWNEb3duY2FzdDxFbGVtZW50Pihub2RlKTsKKyAgICAgICAgYm9vbCBkZXNjZW5k
YW50SXNSb3cgPSBlbGVtZW50ICYmIChlbGVtZW50LT5oYXNUYWdOYW1lKHRyVGFnKSB8fCBub2Rl
SGFzUm9sZShlbGVtZW50LCAicm93Il9zKSk7CisgICAgICAgIGJvb2wgZGVzY2VuZGFudElzUm93
R3JvdXAgPSBlbGVtZW50ICYmICFkZXNjZW5kYW50SXNSb3cgJiYgKGVsZW1lbnQtPmhhc1RhZ05h
bWUodGhlYWRUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUodGJvZHlUYWcpIHx8IGVsZW1lbnQt
Pmhhc1RhZ05hbWUodGZvb3RUYWcpIHx8IG5vZGVIYXNSb2xlKGVsZW1lbnQsICJyb3dncm91cCJf
cykpOworCisgICAgICAgIC8vIFN0ZXAgOTogSGFuZGxlIHRoZSBjb2xncm91cCBlbGVtZW50LiBO
b3QgaW1wbGVtZW50ZWQuCisgICAgICAgIC8vIFN0ZXAgMTA6IEhhbmRsZWQgYWJvdmUuCisgICAg
ICAgIC8vIFN0ZXAgMTE6IFNraXBwZWQuIE5vdCBjdXJyZW50bHkgaW1wbGVtZW50aW5nICJkb3du
d2FyZC1ncm93aW5nIGNlbGxzIiBhbGdvcml0aG0uCisgICAgICAgIC8vIFN0ZXAgMTI6IFdoaWxl
IHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgbm90IG9uZSBvZiB0aGUgZm9sbG93aW5nIGVsZW1lbnRz
LCBhZHZhbmNlIHRoZSBjdXJyZW50IGVsZW1lbnQgdG8gdGhlIG5leHQgY2hpbGQgb2YgdGhlIHRh
YmxlCisgICAgICAgIGlmICghZGVzY2VuZGFudElzUm93ICYmICFkZXNjZW5kYW50SXNSb3dHcm91
cCkgeworICAgICAgICAgICAgaWYgKGlzQXJpYVRhYmxlKCkpIHsKKyAgICAgICAgICAgICAgICAv
LyBXZSBhcmUgZm9yZ2l2aW5nIHdpdGggQVJJQSBncmlkIG1hcmt1cCwgZGVzY2VuZGluZyBwYXN0
IGRpc2FsbG93ZWQgZWxlbWVudHMgdG8gYnVpbGQgdGhlIGdyaWQgc3RydWN0dXJlICh0aGlzIGlz
IG5vdCBzcGVjaWZpZWQsIGJ1dCBjb25zaXN0ZW50IHdpdGggb3RoZXIgYnJvd3NlcnMpLgorICAg
ICAgICAgICAgICAgIGlmIChhdXRvKiBheE9iamVjdCA9IGNhY2hlLT5nZXRPckNyZWF0ZShub2Rl
KTsgYXhPYmplY3QgJiYgbmVlZHNUb0Rlc2NlbmQoKmF4T2JqZWN0KSkgeworICAgICAgICAgICAg
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogYXhPYmplY3QtPmNoaWxkcmVuKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzVGFibGVEZXNjZW5kYW50KGNoaWxkID8gY2hp
bGQtPm5vZGUoKSA6IG51bGxwdHIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN0ZXAgMTM6IElm
IHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgYSB0ciwgdGhlbiBydW4gdGhlIGFsZ29yaXRobSBmb3Ig
cHJvY2Vzc2luZyByb3dzLAorICAgICAgICAvLyBhZHZhbmNlIHRoZSBjdXJyZW50IGVsZW1lbnQg
dG8gdGhlIG5leHQgY2hpbGQgb2YgdGhlIHRhYmxlLCBhbmQgcmV0dXJuIHRvIHRoZSBzdGVwIGxh
YmVsZWQgcm93cy4KKyAgICAgICAgaWYgKGRlc2NlbmRhbnRJc1JvdykKKyAgICAgICAgICAgIHBy
b2Nlc3NSb3coZHluYW1pY0Rvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oY2FjaGUtPmdl
dE9yQ3JlYXRlKGVsZW1lbnQpKSk7CisKKyAgICAgICAgLy8gU3RlcCAxNDogUnVuIHRoZSBhbGdv
cml0aG0gZm9yIGVuZGluZyBhIHJvdyBncm91cC4KKyAgICAgICAgZW5kUm93R3JvdXAoKTsKKwor
ICAgICAgICAvLyBTdGVwIDE1OiBJZiB0aGUgY3VycmVudCBlbGVtZW50IGlzIGEgdGZvb3QuLi4K
KyAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUodGZvb3RUYWcpKSB7CisgICAgICAgICAg
ICAvLyAuLi50aGVuIGFkZCB0aGF0IGVsZW1lbnQgdG8gdGhlIGxpc3Qgb2YgcGVuZGluZyB0Zm9v
dCBlbGVtZW50cworICAgICAgICAgICAgcGVuZGluZ1Rmb290RWxlbWVudHMuYXBwZW5kKCplbGVt
ZW50KTsKKyAgICAgICAgICAgIC8vIC4uLmFkdmFuY2UgdGhlIGN1cnJlbnQgZWxlbWVudCB0byB0
aGUgbmV4dCBjaGlsZCBvZiB0aGUgdGFibGUuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICAvLyBTdGVwIDE2OiBJZiB0aGUgY3VycmVudCBlbGVtZW50IGlzIGVpdGhl
ciBhIHRoZWFkIG9yIGEgdGJvZHksIHJ1biB0aGUgYWxnb3JpdGhtIGZvciBwcm9jZXNzaW5nIHJv
dyBncm91cHMuIChOb3Qgc3BlY2lmaWVkOiBpbmNsdWRlIHJvbGU9InJvd2dyb3VwcyIpLgorICAg
ICAgICBpZiAoZGVzY2VuZGFudElzUm93R3JvdXApCisgICAgICAgICAgICBwcm9jZXNzUm93R3Jv
dXAoKmVsZW1lbnQpOworICAgIH07CisgICAgLy8gU3RlcCA3OiBMZXQgdGhlIGN1cnJlbnQgZWxl
bWVudCBiZSB0aGUgZmlyc3QgZWxlbWVudCBjaGlsZCBvZiB0aGUgdGFibGUgZWxlbWVudC4KKyAg
ICBmb3IgKFJlZlB0ciBjdXJyZW50RWxlbWVudCA9IHRhYmxlRWxlbWVudC0+Zmlyc3RDaGlsZCgp
OyBjdXJyZW50RWxlbWVudDsgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC0+bmV4dFNp
YmxpbmcoKSkgeworICAgICAgICBwcm9jZXNzVGFibGVEZXNjZW5kYW50KGN1cnJlbnRFbGVtZW50
LmdldCgpKTsKKyAgICAgICAgLy8gU3RlcCAxNyArIDE4OiBBZHZhbmNlIHRoZSBjdXJyZW50IGVs
ZW1lbnQgdG8gdGhlIG5leHQgY2hpbGQgb2YgdGhlIHRhYmxlLgogICAgIH0KLSAgICAKLSAgICAv
LyBQcm9jZXNzIHRoZSBmb290ZXIgbGFzdCwgaW4gY2FzZSBpdCB3YXMgb3JkZXJlZCBlYXJsaWVy
IGluIHRoZSBET00uCi0gICAgaWYgKGZvb3RlcikKLSAgICAgICAgYWRkQ2hpbGRyZW5Gcm9tU2Vj
dGlvbihmb290ZXIsIG1heENvbHVtbkNvdW50KTsKLSAgICAKLSAgICBhdXRvKiBheENhY2hlID0g
ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpOwotICAgIC8vIG1ha2UgdGhlIGNvbHVtbnMgYmFz
ZWQgb24gdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBmaXJzdCBib2R5Ci0gICAgdW5zaWdu
ZWQgbGVuZ3RoID0gbWF4Q29sdW1uQ291bnQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbj4oKmF4Q2FjaGUtPmNyZWF0ZShBY2Nlc3NpYmlsaXR5Um9sZTo6Q29s
dW1uKSk7CisKKyAgICAvLyBTdGVwIDE5OiBGb3IgZWFjaCB0Zm9vdCBlbGVtZW50IGluIHRoZSBs
aXN0IG9mIHBlbmRpbmcgdGZvb3QgZWxlbWVudHMsIGluIHRyZWUgb3JkZXIsCisgICAgLy8gcnVu
IHRoZSBhbGdvcml0aG0gZm9yIHByb2Nlc3Npbmcgcm93IGdyb3Vwcy4KKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHRmb290RWxlbWVudCA6IHBlbmRpbmdUZm9vdEVsZW1lbnRzKQorICAgICAgICBwcm9j
ZXNzUm93R3JvdXAodGZvb3RFbGVtZW50LmdldCgpKTsKKworICAgIC8vIFRoZSByZW1haW5kZXIg
b2YgdGhpcyBmdW5jdGlvbiBpcyB1bnNwZWNpZmllZCB1cGRhdGluZyBvZiBpbnRlcm5hbCBkYXRh
IHN0cnVjdHVyZXMuCisgICAgYWRkQ2hpbGQoY2FjaGUtPmdldE9yQ3JlYXRlKGNhcHRpb25FbGVt
ZW50LmdldCgpKSwgRGVzY2VuZElmSWdub3JlZDo6Tm8pOworCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHhXaWR0aDsgKytpKSB7CisgICAgICAgIGF1dG8mIGNvbHVtbiA9IGRvd25jYXN0
PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbj4oKmNhY2hlLT5jcmVhdGUoQWNjZXNzaWJpbGl0eVJv
bGU6OkNvbHVtbikpOwogICAgICAgICBjb2x1bW4uc2V0Q29sdW1uSW5kZXgoaSk7CiAgICAgICAg
IGNvbHVtbi5zZXRQYXJlbnQodGhpcyk7CiAgICAgICAgIG1fY29sdW1ucy5hcHBlbmQoJmNvbHVt
bik7CkBAIC00NzEsNjYgKzY4MSw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjphZGRDaGls
ZHJlbigpCiAgICAgdXBkYXRlQ2hpbGRyZW5Sb2xlcygpOwogfQogCi12b2lkIEFjY2Vzc2liaWxp
dHlUYWJsZTo6YWRkVGFibGVDZWxsQ2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCogcm93T2JqZWN0
LCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYg
Y29sdW1uQ291bnQpCi17Ci0gICAgaWYgKCFyb3dPYmplY3QgfHwgIWlzPEFjY2Vzc2liaWxpdHlU
YWJsZVJvdz4oKnJvd09iamVjdCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIHJvdyA9
IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4oKnJvd09iamVjdCk7Ci0gICAgLy8gV2Ug
bmVlZCB0byBjaGVjayBldmVyeSBjZWxsIGZvciBhIG5ldyByb3csIGJlY2F1c2UgY2VsbCBzcGFu
cwotICAgIC8vIGNhbiBjYXVzZSB1cyB0byBtaXNzIHJvd3MgaWYgd2UganVzdCBjaGVjayB0aGUg
Zmlyc3QgY29sdW1uLgotICAgIGlmIChhcHBlbmRlZFJvd3MuY29udGFpbnMoJnJvdykpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICByb3cuc2V0Um93SW5kZXgoc3RhdGljX2Nhc3Q8aW50Piht
X3Jvd3Muc2l6ZSgpKSk7Ci0gICAgbV9yb3dzLmFwcGVuZCgmcm93KTsKLSAgICBhZGRDaGlsZCgm
cm93LCBEZXNjZW5kSWZJZ25vcmVkOjpObyk7Ci0gICAgYXBwZW5kZWRSb3dzLmFkZCgmcm93KTsK
LSAgICAgICAgCi0gICAgLy8gc3RvcmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbHVtbnMKLSAg
ICB1bnNpZ25lZCByb3dDZWxsQ291bnQgPSByb3cuY2hpbGRyZW4oKS5zaXplKCk7Ci0gICAgaWYg
KHJvd0NlbGxDb3VudCA+IGNvbHVtbkNvdW50KQotICAgICAgICBjb2x1bW5Db3VudCA9IHJvd0Nl
bGxDb3VudDsKLX0KLQotdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmFkZENoaWxkcmVuRnJvbVNl
Y3Rpb24oUmVuZGVyVGFibGVTZWN0aW9uKiB0YWJsZVNlY3Rpb24sIHVuc2lnbmVkJiBtYXhDb2x1
bW5Db3VudCkKLXsKLSAgICBBU1NFUlQodGFibGVTZWN0aW9uKTsKLSAgICBpZiAoIXRhYmxlU2Vj
dGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8qIGF4Q2FjaGUgPSBkb2N1bWVu
dCgpLT5heE9iamVjdENhY2hlKCk7Ci0gICAgSGFzaFNldDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4g
YXBwZW5kZWRSb3dzOwotICAgIHVuc2lnbmVkIG51bVJvd3MgPSB0YWJsZVNlY3Rpb24tPm51bVJv
d3MoKTsKLSAgICBmb3IgKHVuc2lnbmVkIHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCBudW1Sb3dz
OyArK3Jvd0luZGV4KSB7Ci0gICAgICAgIAotICAgICAgICBSZW5kZXJUYWJsZVJvdyogcmVuZGVy
Um93ID0gdGFibGVTZWN0aW9uLT5yb3dSZW5kZXJlckF0KHJvd0luZGV4KTsKLSAgICAgICAgaWYg
KCFyZW5kZXJSb3cpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QmIHJvd09iamVjdCA9ICpheENhY2hlLT5nZXRPckNyZWF0ZShyZW5k
ZXJSb3cpOwotICAgICAgICAKLSAgICAgICAgLy8gSWYgdGhlIHJvdyBpcyBhbm9ueW1vdXMsIHdl
IHNob3VsZCBkaXZlIGRlZXBlciBpbnRvIHRoZSBkZXNjZW5kYW50cyB0byB0cnkgdG8gZmluZCBh
IHZhbGlkIHJvdy4KLSAgICAgICAgaWYgKHJlbmRlclJvdy0+aXNBbm9ueW1vdXMoKSkgewotICAg
ICAgICAgICAgRGVxdWU8QWNjZXNzaWJpbGl0eU9iamVjdCo+IHF1ZXVlOwotICAgICAgICAgICAg
cXVldWUuYXBwZW5kKCZyb3dPYmplY3QpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB3aGls
ZSAoIXF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iaiA9IHF1ZXVlLnRha2VGaXJzdCgpOwotICAgICAgICAgICAgICAgIGlmIChvYmotPm5v
ZGUoKSAmJiBpczxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpvYmopKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGFkZFRhYmxlQ2VsbENoaWxkKG9iaiwgYXBwZW5kZWRSb3dzLCBtYXhDb2x1bW5Db3Vu
dCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBmb3IgKGF1dG8qIGNoaWxkID0gb2JqLT5maXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQotICAgICAgICAgICAgICAgICAgICBxdWV1
ZS5hcHBlbmQoY2hpbGQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGFkZFRhYmxlQ2VsbENoaWxkKCZyb3dPYmplY3QsIGFwcGVuZGVkUm93cywgbWF4Q29sdW1u
Q291bnQpOwotICAgIH0KLSAgICAKLSAgICBtYXhDb2x1bW5Db3VudCA9IHN0ZDo6bWF4KHRhYmxl
U2VjdGlvbi0+bnVtQ29sdW1ucygpLCBtYXhDb2x1bW5Db3VudCk7Ci19Ci0gICAgCiBBWENvcmVP
YmplY3QqIEFjY2Vzc2liaWxpdHlUYWJsZTo6aGVhZGVyQ29udGFpbmVyKCkKIHsKICAgICBpZiAo
bV9oZWFkZXJDb250YWluZXIpCkBAIC01NTAsNyArNzAwLDcgQEAgQVhDb3JlT2JqZWN0KiBBY2Nl
c3NpYmlsaXR5VGFibGU6OmhlYWRlckNvbnRhaW5lcigpCiBBWENvcmVPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBBY2Nlc3NpYmlsaXR5VGFibGU6OmNvbHVtbnMoKQogewogICAg
IHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgCisKICAgICByZXR1cm4gbV9j
b2x1bW5zOwogfQogCkBAIC02NDIsMzAgKzc5MiwxMSBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxl
Ojp0YWJsZUxldmVsKCkgY29uc3QKIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlOjpj
ZWxsRm9yQ29sdW1uQW5kUm93KHVuc2lnbmVkIGNvbHVtbiwgdW5zaWduZWQgcm93KQogewogICAg
IHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKTsKLSAgICBpZiAoY29sdW1uID49IGNvbHVtbkNv
dW50KCkgfHwgcm93ID49IHJvd0NvdW50KCkpCisgICAgaWYgKHJvdyA+PSBtX2NlbGxTbG90cy5z
aXplKCkgfHwgY29sdW1uID49IG1fY2VsbFNsb3RzW3Jvd10uc2l6ZSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAKLSAgICAvLyBJdGVyYXRlIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSBy
b3dzIGluIGNhc2UgdGhlIGRlc2lyZWQgY2VsbCBoYXMgYSByb3dzcGFuIGFuZCBleGlzdHMgaW4g
YSBwcmV2aW91cyByb3cuCi0gICAgZm9yICh1bnNpZ25lZCByb3dJbmRleENvdW50ZXIgPSByb3cg
KyAxOyByb3dJbmRleENvdW50ZXIgPiAwOyAtLXJvd0luZGV4Q291bnRlcikgewotICAgICAgICB1
bnNpZ25lZCByb3dJbmRleCA9IHJvd0luZGV4Q291bnRlciAtIDE7Ci0gICAgICAgIGNvbnN0IGF1
dG8mIGNoaWxkcmVuID0gbV9yb3dzW3Jvd0luZGV4XS0+Y2hpbGRyZW4oKTsKLSAgICAgICAgLy8g
U2luY2Ugc29tZSBjZWxscyBtYXkgaGF2ZSBjb2xzcGFucywgd2UgaGF2ZSB0byBjaGVjayB0aGUg
YWN0dWFsIHJhbmdlIG9mIGVhY2gKLSAgICAgICAgLy8gY2VsbCB0byBkZXRlcm1pbmUgd2hpY2gg
aXMgdGhlIHJpZ2h0IG9uZS4KLSAgICAgICAgZm9yICh1bnNpZ25lZCBjb2xJbmRleENvdW50ZXIg
PSBzdGQ6Om1pbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hpbGRyZW4uc2l6ZSgpKSwgY29sdW1u
ICsgMSk7IGNvbEluZGV4Q291bnRlciA+IDA7IC0tY29sSW5kZXhDb3VudGVyKSB7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBjb2xJbmRleCA9IGNvbEluZGV4Q291bnRlciAtIDE7Ci0gICAgICAgICAg
ICBBWENvcmVPYmplY3QqIGNoaWxkID0gY2hpbGRyZW5bY29sSW5kZXhdLmdldCgpOwotICAgICAg
ICAgICAgaWYgKCFjaGlsZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAg
ICAgYXV0byBjb2x1bW5SYW5nZSA9IGNoaWxkLT5jb2x1bW5JbmRleFJhbmdlKCk7Ci0gICAgICAg
ICAgICBhdXRvIHJvd1JhbmdlID0gY2hpbGQtPnJvd0luZGV4UmFuZ2UoKTsKLQotICAgICAgICAg
ICAgaWYgKChjb2x1bW4gPj0gY29sdW1uUmFuZ2UuZmlyc3QgJiYgY29sdW1uIDwgKGNvbHVtblJh
bmdlLmZpcnN0ICsgY29sdW1uUmFuZ2Uuc2Vjb25kKSkKLSAgICAgICAgICAgICAgICAmJiAocm93
ID49IHJvd1JhbmdlLmZpcnN0ICYmIHJvdyA8IChyb3dSYW5nZS5maXJzdCArIHJvd1JhbmdlLnNl
Y29uZCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZDsKLSAgICAgICAgfQotICAgIH0K
IAorICAgIGlmIChBWElEIGNlbGxJRCA9IG1fY2VsbFNsb3RzW3Jvd11bY29sdW1uXSkKKyAgICAg
ICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+b2JqZWN0Rm9ySUQoY2VsbElEKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApAQCAtNzQ2LDQgKzg3NywxNyBAQCBpbnQgQWNjZXNzaWJpbGl0eVRh
YmxlOjpheFJvd0NvdW50KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAordm9pZCBBY2Nlc3Np
YmlsaXR5VGFibGU6OmVuc3VyZVJvdyh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBpZiAobV9jZWxs
U2xvdHMuc2l6ZSgpIDwgaW5kZXggKyAxKQorICAgICAgICBtX2NlbGxTbG90cy5ncm93KGluZGV4
ICsgMSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlOjplbnN1cmVSb3dBbmRDb2x1bW4o
dW5zaWduZWQgcm93SW5kZXgsIHVuc2lnbmVkIGNvbHVtbkluZGV4KQoreworICAgIGVuc3VyZVJv
dyhyb3dJbmRleCk7CisgICAgaWYgKG1fY2VsbFNsb3RzW3Jvd0luZGV4XS5zaXplKCkgPCBjb2x1
bW5JbmRleCArIDEpCisgICAgICAgIG1fY2VsbFNsb3RzW3Jvd0luZGV4XS5ncm93KGNvbHVtbklu
ZGV4ICsgMSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCmluZGV4IDI3NDZiZTM5NWEy
OS4uODI4NGJjOTZjY2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlLmgKQEAgLTI5LDE3ICsyOSwxNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlUm93OwogY2xhc3MgSFRNTFRh
YmxlRWxlbWVudDsKLWNsYXNzIFJlbmRlclRhYmxlU2VjdGlvbjsKLSAgICAKKwogY2xhc3MgQWNj
ZXNzaWJpbGl0eVRhYmxlIDogcHVibGljIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVRhYmxlPiBjcmVhdGUoUmVuZGVyT2Jq
ZWN0Kik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGU+IGNyZWF0ZShOb2RlJik7
CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eVRhYmxlKCk7CiAKICAgICB2b2lkIGluaXQoKSBm
aW5hbDsKQEAgLTQ3LDE1ICs0NywxNSBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3QgZmluYWw7CiAgICAgdmlydHVhbCBib29sIGlzQXJpYVRhYmxlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGFkZENoaWxkcmVuKCkgZmluYWw7CiAgICAgdm9pZCBjbGVhckNoaWxkcmVu
KCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVDaGlsZHJlblJvbGVzKCk7CiAKICAgICBBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29sdW1ucygpIG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciByb3dzKCkgb3ZlcnJpZGU7CiAKLSAgICB1bnNpZ25lZCBjb2x1bW5D
b3VudCgpIG92ZXJyaWRlOwotICAgIHVuc2lnbmVkIHJvd0NvdW50KCkgb3ZlcnJpZGU7CisgICAg
dW5zaWduZWQgY29sdW1uQ291bnQoKSBmaW5hbDsKKyAgICB1bnNpZ25lZCByb3dDb3VudCgpIGZp
bmFsOwogICAgIGludCB0YWJsZUxldmVsKCkgY29uc3QgZmluYWw7CiAKICAgICBTdHJpbmcgdGl0
bGUoKSBjb25zdCBmaW5hbDsKQEAgLTcxLDE5ICs3MSwyOCBAQCBwdWJsaWM6CiAgICAgLy8gUmV0
dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucywgYXMgY2hpbGRyZW4sIGFsbCB0aGUgb2JqZWN0
cyB0aGF0IGFjdCBhcyBoZWFkZXJzLgogICAgIEFYQ29yZU9iamVjdCogaGVhZGVyQ29udGFpbmVy
KCkgb3ZlcnJpZGU7CiAKLSAgICBib29sIGlzVGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgYm9vbCBpc1RhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIC8vIFJldHVybnMgd2hldGhlciBpdCBpcyBleHBvc2VkIGFzIGFuIEFjY2Vzc2liaWxp
dHlUYWJsZSB0byB0aGUgcGxhdGZvcm0uCi0gICAgYm9vbCBpc0V4cG9zYWJsZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgaXNFeHBvc2FibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
RXhwb3NhYmxlOyB9CiAgICAgdm9pZCByZWNvbXB1dGVJc0V4cG9zYWJsZSgpOwogCi0gICAgaW50
IGF4Q29sdW1uQ291bnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQgYXhSb3dDb3VudCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIGludCBheENvbHVtbkNvdW50KCkgY29uc3QgZmluYWw7CisgICAg
aW50IGF4Um93Q291bnQoKSBjb25zdCBmaW5hbDsKKworICAgIC8vIENlbGwgaW5kZXhlcyBhcmUg
YXNzaWduZWQgZHVyaW5nIGNoaWxkIGNyZWF0aW9uLCBzbyBtYWtlIHN1cmUgY2hpbGRyZW4gYXJl
IHVwLXRvLWRhdGUuCisgICAgdm9pZCBlbnN1cmVDZWxsSW5kZXhlc1VwVG9EYXRlKCkgeyB1cGRh
dGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7IH0KKyAgICBWZWN0b3I8VmVjdG9yPEFYSUQ+PiBjZWxs
U2xvdHMoKSBmaW5hbDsKKyAgICB2b2lkIHNldENlbGxTbG90c0RpcnR5KCk7CiAKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VGFibGUoUmVuZGVyT2JqZWN0Kik7CisgICAg
ZXhwbGljaXQgQWNjZXNzaWJpbGl0eVRhYmxlKE5vZGUmKTsKIAogICAgIEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBtX3Jvd3M7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIG1f
Y29sdW1uczsKKyAgICAvLyAyRCBtYXRyaXggb2YgdGhlIGNlbGxzIGFzc2lnbmVkIHRvIGVhY2gg
InNsb3QiIGluIHRoaXMgdGFibGUuCisgICAgLy8gKCJTbG90IiBhcyBkZWZpbmVkIGhlcmU6IGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3RhYmxlcy5odG1sI2NvbmNlcHQt
c2xvdHMpCisgICAgVmVjdG9yPFZlY3RvcjxBWElEPj4gbV9jZWxsU2xvdHM7CiAKICAgICBSZWZQ
dHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbV9oZWFkZXJDb250YWluZXI7CiAgICAgYm9vbCBtX2lz
RXhwb3NhYmxlOwpAQCAtOTMsMTIgKzEwMiwxNSBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgZmluYWw7CiAKKyAgICB2b2lkIGFk
ZFJvdyhBY2Nlc3NpYmlsaXR5VGFibGVSb3cmLCB1bnNpZ25lZCwgdW5zaWduZWQmIG1heENvbHVt
bkNvdW50KTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUlzVGFibGVFeHBv
c2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIGNvbnN0OwogICAgIHZvaWQgdGl0bGVFbGVtZW50
VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JikgY29uc3QgZmluYWw7CiAgICAgSFRNTFRh
YmxlRWxlbWVudCogdGFibGVFbGVtZW50KCkgY29uc3Q7Ci0gICAgdm9pZCBhZGRDaGlsZHJlbkZy
b21TZWN0aW9uKFJlbmRlclRhYmxlU2VjdGlvbiosIHVuc2lnbmVkJiBtYXhDb2x1bW5Db3VudCk7
Ci0gICAgdm9pZCBhZGRUYWJsZUNlbGxDaGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSGFzaFNl
dDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4mIGFwcGVuZGVkUm93cywgdW5zaWduZWQmIGNvbHVtbkNv
dW50KTsKKworICAgIHZvaWQgZW5zdXJlUm93KHVuc2lnbmVkKTsKKyAgICB2b2lkIGVuc3VyZVJv
d0FuZENvbHVtbih1bnNpZ25lZCAvKiByb3dJbmRleCAqLywgdW5zaWduZWQgLyogY29sdW1uSW5k
ZXggKi8pOwogCiAgICAgYm9vbCBoYXNOb25UYWJsZUFSSUFSb2xlKCkgY29uc3Q7CiAgICAgLy8g
aXNEYXRhVGFibGUgaXMgd2hldGhlciBpdCBpcyBleHBvc2VkIGFzIGFuIEFjY2Vzc2liaWxpdHlU
YWJsZSBiZWNhdXNlIHRoZSBoZXVyaXN0aWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4IDAyNTlmZmE0OWJi
OC4uZjA1NjZmNDdjZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKQEAgLTI5LDIzICsyOSwyMSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIKIAot
I2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKLSNpbmNsdWRlICJFbGVtZW50
SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MVGFibGVD
ZWxsRWxlbWVudC5oIgotI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1M
UGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGFibGVDZWxsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLXVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OkFjY2Vzc2liaWxpdHlU
YWJsZUNlbGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICA6IEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QocmVuZGVyZXIpCi0gICAgLCBtX2F4Q29sSW5kZXhGcm9tUm93KC0xKQoreworfQor
CitBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKE5vZGUmIG5v
ZGUpCisgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KG5vZGUpCiB7CiB9CiAKQEAgLTU2
LDYgKzU0LDExIEBAIFJlZjxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPiBBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlCiAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChyZW5kZXJlcikpOwogfQogCitSZWY8QWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbD4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKE5vZGUmIG5v
ZGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbChu
b2RlKSk7Cit9CisKIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29tcHV0ZUFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNp
b24gZGVjaXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7CkBAIC02NiwxMSArNjksMTEg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpIGNvbnN0CiAgICAgCiAgICAgLy8gSWdub3JlIGFub255bW91cyB0YWJsZSBjZWxscyBh
cyBsb25nIGFzIHRoZXkncmUgbm90IGluIGEgdGFibGUgKGllLiB3aGVuIGRpc3BsYXk6dGFibGUg
aXMgdXNlZCkuCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJUYWJsZSA9IGlzPFJlbmRlclRhYmxl
Q2VsbD4ocmVuZGVyZXIoKSkgPyBkb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KCptX3JlbmRlcmVy
KS50YWJsZSgpIDogbnVsbHB0cjsKLSAgICBib29sIGluVGFibGUgPSByZW5kZXJUYWJsZSAmJiBy
ZW5kZXJUYWJsZS0+bm9kZSgpICYmIChyZW5kZXJUYWJsZS0+bm9kZSgpLT5oYXNUYWdOYW1lKHRh
YmxlVGFnKSB8fCBub2RlSGFzUm9sZShyZW5kZXJUYWJsZS0+bm9kZSgpLCAiZ3JpZCJfcykpOwor
ICAgIGJvb2wgaW5UYWJsZSA9IHJlbmRlclRhYmxlICYmIHJlbmRlclRhYmxlLT5ub2RlKCkgJiYg
KHJlbmRlclRhYmxlLT5ub2RlKCktPmhhc1RhZ05hbWUodGFibGVUYWcpIHx8IG5vZGVIYXNHcmlk
Um9sZShyZW5kZXJUYWJsZS0+bm9kZSgpKSk7CiAgICAgaWYgKCFub2RlKCkgJiYgIWluVGFibGUp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKLSAgICBpZiAoIWlzVGFibGVDZWxsKCkp
CisgICAgaWYgKCFpc0V4cG9zZWRUYWJsZUNlbGwoKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7CiAgICAg
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE4LDcgKzEyMSw3IEBAIEFjY2Vzc2liaWxpdHlUYWJs
ZSogQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6cGFyZW50VGFibGUoKSBjb25zdAogICAgIHJldHVy
biBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPih0YWJsZUZyb21SZW5kZXJUcmVl
KTsKIH0KICAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6aXNUYWJsZUNlbGwoKSBj
b25zdAorYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc0V4cG9zZWRUYWJsZUNlbGwoKSBj
b25zdAogewogICAgIC8vIElmIHRoZSBwYXJlbnQgdGFibGUgaXMgYW4gYWNjZXNzaWJpbGl0eSB0
YWJsZSwgdGhlbiB3ZSBhcmUgYSB0YWJsZSBjZWxsLgogICAgIC8vIFRoaXMgdXNlZCB0byBjaGVj
ayBpZiB0aGUgdW5pZ25vcmVkUGFyZW50IHdhcyBhIHJvdywgYnV0IHRoYXQgZXhwbG9kZWQgcGVy
Zm9ybWFuY2UgaWYKQEAgLTEzNiw3ICsxMzksNyBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiAgICAgaWYgKGRl
ZmF1bHRSb2xlID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIgfHwgZGVmYXVsdFJv
bGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OlJvd0hlYWRlciB8fCBkZWZhdWx0Um9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Q2VsbCB8fCBkZWZhdWx0Um9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6
R3JpZENlbGwpCiAgICAgICAgIHJldHVybiBkZWZhdWx0Um9sZTsKIAotICAgIGlmICghaXNUYWJs
ZUNlbGwoKSkKKyAgICBpZiAoIWlzRXhwb3NlZFRhYmxlQ2VsbCgpKQogICAgICAgICByZXR1cm4g
ZGVmYXVsdFJvbGU7CiAgICAgaWYgKGlzQ29sdW1uSGVhZGVyQ2VsbCgpKQogICAgICAgICByZXR1
cm4gQWNjZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlcjsKQEAgLTE0OCw3ICsxNTEsMjMgQEAg
QWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6ZGV0ZXJtaW5lQWNjZXNz
aWJpbGl0eVJvbGUoKQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjppc1RhYmxl
SGVhZGVyQ2VsbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhhc1Rh
Z05hbWUodGhUYWcpOworICAgIGF1dG8qIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgaWYgKCFu
b2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0
aFRhZykpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUo
dGRUYWcpKSB7CisgICAgICAgIGF1dG8qIGN1cnJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7Cisg
ICAgICAgIC8vIGkgPCAyIGlzIHVzZWQgaGVyZSBiZWNhdXNlIGluIGEgcHJvcGVybHkgc3RydWN0
dXJlZCB0YWJsZSwgdGhlIHRoZWFkIHNob3VsZCBiZSAyIGxldmVscyBhd2F5IGZyb20gdGhlIHRk
LgorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDIgJiYgY3VycmVudDsgaSsrKSB7CisgICAg
ICAgICAgICBpZiAoY3VycmVudC0+aGFzVGFnTmFtZSh0aGVhZFRhZykpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC0+cGFyZW50Tm9k
ZSgpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjppc0NvbHVtbkhlYWRlckNlbGwoKSBjb25zdApAQCAtMzE3LDY4
ICszMzYsMzMgQEAgQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxs
OjpwYXJlbnRSb3coKSBjb25zdAogewogICAgIGlmIChhdXRvIG93bmVyUGFyZW50ID0gYXJpYU93
bmVkQnlQYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIG93bmVyUGFyZW50OwotICAgIAotICAgIEFY
Q29yZU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFp
czxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+KCpwYXJlbnQpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXR1cm4gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93PihwYXJlbnQpOwor
ICAgIHJldHVybiBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlUm93PihwYXJlbnRP
YmplY3RVbmlnbm9yZWQoKSk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6ZW5z
dXJlSW5kZXhlc1VwVG9EYXRlKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogcGFyZW50VGFibGUg
PSB0aGlzLT5wYXJlbnRUYWJsZSgpKQorICAgICAgICBwYXJlbnRUYWJsZS0+ZW5zdXJlQ2VsbElu
ZGV4ZXNVcFRvRGF0ZSgpOwogfQogCiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsOjpyb3dJbmRleFJhbmdlKCkgY29uc3QKIHsKLSAgICBhdXRvKiBw
YXJlbnRSb3cgPSB0aGlzLT5wYXJlbnRSb3coKTsKLSAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiByb3dSYW5nZSB7IHBhcmVudFJvdyA/IHBhcmVudFJvdy0+cm93SW5kZXgoKSA6IDAs
IDEgfTsKLQotICAgIC8vIEFSSUEgMS4xJ3MgYXJpYS1yb3dzcGFuIGF0dHJpYnV0ZSBpcyBpbnRl
bmRlZCBmb3IgY2VsbHMgYW5kIGdyaWRjZWxscyB3aGljaCBhcmUgbm90IGNvbnRhaW5lZAotICAg
IC8vIGluIGEgbmF0aXZlIHRhYmxlLiBCdXQgaWYgd2UgaGF2ZSBhIHZhbGlkIGF1dGhvci1wcm92
aWRlZCB2YWx1ZSBhbmQgZG8gbm90IGhhdmUgYW4gZXhwbGljaXQKLSAgICAvLyBuYXRpdmUgaG9z
dCBsYW5ndWFnZSB2YWx1ZSBmb3IgdGhlIHJvd3NwYW4sIGV4cG9zZSB0aGUgQVJJQSB2YWx1ZS4K
LSAgICByb3dSYW5nZS5zZWNvbmQgPSBheFJvd1NwYW4oKTsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8
aW50Pihyb3dSYW5nZS5zZWNvbmQpID09IC0xKSB7Ci0gICAgICAgIC8vIEl0J3MgZmFzdGVyIHRv
IGdldCByb3dzcGFuIGZyb20gUmVuZGVyVGFibGVDZWxsIGJlY2F1c2UgaXQgaGFzIGJ1aWx0IGlu
IGNhY2hlcyB0byBhdm9pZAotICAgICAgICAvLyByZWFkaW5nIGZyb20gdGhlIERPTSwgc28gdHJ5
IHRoYXQgZmlyc3QuCi0gICAgICAgIGlmIChhdXRvKiByZW5kZXJUYWJsZUNlbGwgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcigpKSkKLSAgICAgICAgICAgIHJvd1Jh
bmdlLnNlY29uZCA9IHJlbmRlclRhYmxlQ2VsbC0+cm93U3BhbigpOwotICAgICAgICBlbHNlIGlm
IChhdXRvKiB0YWJsZUNlbGxFbGVtZW50ID0gZHluYW1pY0Rvd25jYXN0PEhUTUxUYWJsZUNlbGxF
bGVtZW50Pihub2RlKCkpKQotICAgICAgICAgICAgcm93UmFuZ2Uuc2Vjb25kID0gc3RkOjptaW48
dW5zaWduZWQ+KHRhYmxlQ2VsbEVsZW1lbnQtPnJvd1NwYW4oKSwgbWF4Um93SW5kZXgpOwotI2lm
IEVOQUJMRShNQVRITUwpCi0gICAgICAgIGVsc2UgaWYgKGF1dG8qIG1hdGhNTEVsZW1lbnQgPSBk
eW5hbWljRG93bmNhc3Q8TWF0aE1MRWxlbWVudD4obm9kZSgpKTsgbWF0aE1MRWxlbWVudCAmJiBt
YXRoTUxFbGVtZW50LT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptdGRUYWcpKQotICAgICAgICAg
ICAgcm93UmFuZ2Uuc2Vjb25kID0gc3RkOjptaW48dW5zaWduZWQ+KG1hdGhNTEVsZW1lbnQtPnJv
d1NwYW4oKSwgbWF4Um93SW5kZXgpOwotI2VuZGlmCi0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgLy8gRGVmYXVsdCBiYWNrIHRvIDEuCi0gICAgICAgICAgICByb3dSYW5nZS5zZWNvbmQgPSAx
OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByb3dSYW5nZTsKKyAgICBlbnN1cmVJbmRl
eGVzVXBUb0RhdGUoKTsKKyAgICByZXR1cm4geyBtX3Jvd0luZGV4LCByb3dTcGFuKCkgfTsKIH0K
ICAgICAKIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IEFjY2Vzc2liaWxpdHlUYWJsZUNl
bGw6OmNvbHVtbkluZGV4UmFuZ2UoKSBjb25zdAogewotICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+IGNvbHVtblJhbmdlIHsgMCwgMSB9OwotICAgIGlmICghaXM8UmVuZGVyVGFibGVD
ZWxsPihyZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuIGNvbHVtblJhbmdlOwotCi0gICAgY29u
c3QgUmVuZGVyVGFibGVDZWxsJiBjZWxsID0gZG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPigqbV9y
ZW5kZXJlcik7Ci0gICAgY29sdW1uUmFuZ2UuZmlyc3QgPSBjZWxsLnRhYmxlKCktPmNvbFRvRWZm
Q29sKGNlbGwuY29sKCkpOwotCi0gICAgLy8gQVJJQSAxLjEncyBhcmlhLWNvbHNwYW4gYXR0cmli
dXRlIGlzIGludGVuZGVkIGZvciBjZWxscyBhbmQgZ3JpZGNlbGxzIHdoaWNoIGFyZSBub3QgY29u
dGFpbmVkCi0gICAgLy8gaW4gYSBuYXRpdmUgdGFibGUuIEJ1dCBpZiB3ZSBoYXZlIGEgdmFsaWQg
YXV0aG9yLXByb3ZpZGVkIHZhbHVlIGFuZCBkbyBub3QgaGF2ZSBhbiBleHBsaWNpdAotICAgIC8v
IG5hdGl2ZSBob3N0IGxhbmd1YWdlIHZhbHVlIGZvciB0aGUgY29sc3BhbiwgZXhwb3NlIHRoZSBB
UklBIHZhbHVlLgotICAgIGNvbHVtblJhbmdlLnNlY29uZCA9IGF4Q29sdW1uU3BhbigpOwotICAg
IGlmIChzdGF0aWNfY2FzdDxpbnQ+KGNvbHVtblJhbmdlLnNlY29uZCkgIT0gLTEpCi0gICAgICAg
IHJldHVybiBjb2x1bW5SYW5nZTsKLQotICAgIGNvbHVtblJhbmdlLnNlY29uZCA9IGNlbGwudGFi
bGUoKS0+Y29sVG9FZmZDb2woY2VsbC5jb2woKSArIGNlbGwuY29sU3BhbigpKSAtIGNvbHVtblJh
bmdlLmZpcnN0OwotCi0gICAgcmV0dXJuIGNvbHVtblJhbmdlOworICAgIGVuc3VyZUluZGV4ZXNV
cFRvRGF0ZSgpOworICAgIHJldHVybiB7IG1fY29sdW1uSW5kZXgsIGNvbFNwYW4oKSB9OwogfQot
ICAgIAorCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjp0aXRs
ZVVJRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgLy8gVHJ5IHRvIGZpbmQgaWYgdGhlIGZpcnN0IGNl
bGwgaW4gdGhpcyByb3cgaXMgYSA8dGg+LiBJZiBpdCBpcywKICAgICAvLyB0aGVuIGl0IGNhbiBh
Y3QgYXMgdGhlIHRpdGxlIHVpIGVsZW1lbnQuIChUaGlzIGlzIG9ubHkgaW4gdGhlCiAgICAgLy8g
Y2FzZSB3aGVuIHRoZSB0YWJsZSBpcyBub3QgYXBwZWFyaW5nIGFzIGFuIEFYVGFibGUuKQotICAg
IGlmIChpc1RhYmxlQ2VsbCgpIHx8ICFpczxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKCkpKQor
ICAgIGlmIChpc0V4cG9zZWRUYWJsZUNlbGwoKSB8fCAhaXM8UmVuZGVyVGFibGVDZWxsPihyZW5k
ZXJlcigpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBUYWJsZSBjZWxscyB0
aGF0IGFyZSB0aCBjYW5ub3QgaGF2ZSB0aXRsZSB1aSBlbGVtZW50cywgc2luY2UgYnkgZGVmaW5p
dGlvbgpAQCAtNDE4LDEwICs0MDIsOSBAQCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhD
b2x1bW5JbmRleCgpIGNvbnN0CiAgICAgLy8gIkFSSUEgMS4xOiBJZiB0aGUgc2V0IG9mIGNvbHVt
bnMgd2hpY2ggaXMgcHJlc2VudCBpbiB0aGUgRE9NIGlzIGNvbnRpZ3VvdXMsIGFuZCBpZiB0aGVy
ZSBhcmUgbm8gY2VsbHMgd2hpY2ggc3BhbiBtb3JlIHRoYW4gb25lIHJvdwogICAgIC8vIG9yIGNv
bHVtbiBpbiB0aGF0IHNldCwgdGhlbiBhdXRob3JzIG1heSBwbGFjZSBhcmlhLWNvbGluZGV4IG9u
IGVhY2ggcm93LCBzZXR0aW5nIHRoZSB2YWx1ZSB0byB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNv
bHVtbiBvZiB0aGUgc2V0LiIKICAgICAvLyBIZXJlLCB3ZSBsZXQgaXRzIHBhcmVudCByb3cgdG8g
c2V0IGl0cyBpbmRleCBiZWZvcmVoYW5kLCBzbyB3ZSBkb24ndCBoYXZlIHRvIGdvIHRocm91Z2gg
dGhlIHNpYmxpbmdzIHRvIGNhbGN1bGF0ZSB0aGUgaW5kZXguCi0gICAgQWNjZXNzaWJpbGl0eVRh
YmxlUm93KiBwYXJlbnRSb3cgPSB0aGlzLT5wYXJlbnRSb3coKTsKLSAgICBpZiAocGFyZW50Um93
ICYmIG1fYXhDb2xJbmRleEZyb21Sb3cgIT0gLTEpCisgICAgaWYgKG1fYXhDb2xJbmRleEZyb21S
b3cgIT0gLTEgJiYgcGFyZW50Um93KCkpCiAgICAgICAgIHJldHVybiBtX2F4Q29sSW5kZXhGcm9t
Um93OwotICAgIAorCiAgICAgcmV0dXJuIC0xOwogfQogICAgIApAQCAtNDM4LDYgKzQyMSwzMyBA
QCBpbnQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dJbmRleCgpIGNvbnN0CiAgICAgcmV0
dXJuIC0xOwogfQogCit1bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpyb3dTcGFuKCkg
Y29uc3QKK3sKKyAgICAvLyBBY2NvcmRpbmcgdG8gdGhlIEFSSUEgc3BlYywgIklmIGFyaWEtcm93
c3BhbiBpcyB1c2VkIG9uIGFuIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBob3N0IGxhbmd1YWdlCisg
ICAgLy8gcHJvdmlkZXMgYW4gZXF1aXZhbGVudCBhdHRyaWJ1dGUsIHVzZXIgYWdlbnRzIG11c3Qg
aWdub3JlIHRoZSB2YWx1ZSBvZiBhcmlhLXJvd3NwYW4uIgorICAgIGlmIChhdXRvIHJvd1NwYW4g
PSBwYXJzZUhUTUxJbnRlZ2VyKGdldEF0dHJpYnV0ZShyb3dzcGFuQXR0cikpOyByb3dTcGFuICYm
ICpyb3dTcGFuID49IDEpIHsKKyAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2UvdGFibGVzLmh0bWwKKyAgICAgICAgLy8gSWYgcm93c3BhbiBpcyBncmVhdGVy
IHRoYW4gNjU1MzQsIGxldCBpdCBiZSA2NTUzNCBpbnN0ZWFkLgorICAgICAgICByZXR1cm4gc3Rk
OjptaW4oc3RkOjptYXgoKnJvd1NwYW4sIDEpLCA2NTUzNCk7CisgICAgfQorICAgIGlmIChhdXRv
IGFyaWFSb3dTcGFuID0gcGFyc2VIVE1MSW50ZWdlcihnZXRBdHRyaWJ1dGUoYXJpYV9yb3dzcGFu
QXR0cikpOyBhcmlhUm93U3BhbiAmJiAqYXJpYVJvd1NwYW4gPj0gMSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bWluKHN0ZDo6bWF4KCphcmlhUm93U3BhbiwgMSksIDY1NTM0KTsKKyAgICByZXR1cm4g
MTsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y29sU3BhbigpIGNvbnN0
Cit7CisgICAgaWYgKGF1dG8gY29sU3BhbiA9IHBhcnNlSFRNTEludGVnZXIoZ2V0QXR0cmlidXRl
KGNvbHNwYW5BdHRyKSk7IGNvbFNwYW4gJiYgKmNvbFNwYW4gPj0gMSkgeworICAgICAgICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS90YWJsZXMuaHRtbAorICAgICAg
ICAvLyBJZiBjb2xzcGFuIGlzIGdyZWF0ZXIgdGhhbiAxMDAwLCBsZXQgaXQgYmUgMTAwMCBpbnN0
ZWFkLgorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgoKmNvbFNwYW4sIDEpLCAxMDAw
KTsKKyAgICB9CisgICAgaWYgKGF1dG8gYXJpYUNvbFNwYW4gPSBwYXJzZUhUTUxJbnRlZ2VyKGdl
dEF0dHJpYnV0ZShhcmlhX2NvbHNwYW5BdHRyKSk7IGFyaWFDb2xTcGFuICYmICphcmlhQ29sU3Bh
biA+PSAxKQorICAgICAgICByZXR1cm4gc3RkOjptaW4oc3RkOjptYXgoKmFyaWFDb2xTcGFuLCAx
KSwgMTAwMCk7CisgICAgcmV0dXJuIDE7Cit9CisKKyNpZiBVU0UoQVRTUEkpCiBpbnQgQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbDo6YXhDb2x1bW5TcGFuKCkgY29uc3QKIHsKICAgICAvLyBBY2NvcmRp
bmcgdG8gdGhlIEFSSUEgc3BlYywgIklmIGFyaWEtY29scGFuIGlzIHVzZWQgb24gYW4gZWxlbWVu
dCBmb3Igd2hpY2ggdGhlIGhvc3QgbGFuZ3VhZ2UKQEAgLTQ2OCw1ICs0NzgsNiBAQCBpbnQgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbDo6YXhSb3dTcGFuKCkgY29uc3QKIAogICAgIHJldHVybiAtMTsK
IH0KLSAgICAKKyNlbmRpZiAvLyBVU0UoQVRTUEkpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsLmgKaW5kZXggZjQwYjgyZGMxNGEyLi44NjI1MmFiNzliMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oCkBA
IC0zOCwzNyArMzgsNTAgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlUm93OwogY2xhc3MgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IGNyZWF0ZShS
ZW5kZXJPYmplY3QqKTsKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+IGNy
ZWF0ZShOb2RlJik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCgpOworICAg
IGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBi
b29sIGlzVGFibGVDZWxsKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBpc0V4cG9zZWRUYWJsZUNl
bGwoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGlzVGFibGVIZWFkZXJDZWxsKCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0NvbHVtbkhlYWRlckNlbGwoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlz
Um93SGVhZGVyQ2VsbCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5VGFibGUqIHBhcmVudFRhYmxlKCkgY29uc3Q7CisKICAgICAvLyBSZXR1cm5zIHRoZSBzdGFy
dCBsb2NhdGlvbiBhbmQgcm93IHNwYW4gb2YgdGhlIGNlbGwuCi0gICAgc3RkOjpwYWlyPHVuc2ln
bmVkLCB1bnNpZ25lZD4gcm93SW5kZXhSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHJvd0luZGV4UmFuZ2UoKSBjb25zdCBmaW5hbDsKICAg
ICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgdGhlIGNl
bGwuCi0gICAgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gY29sdW1uSW5kZXhSYW5nZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IGNvbHVt
bkluZGV4UmFuZ2UoKSBjb25zdCBmaW5hbDsKIAogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBjb2x1bW5IZWFkZXJzKCkgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIHJvd0hlYWRlcnMoKSBvdmVycmlkZTsKIAogICAgIGludCBheENvbHVtbkluZGV4KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgaW50IGF4Um93SW5kZXgoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB1bnNpZ25lZCBjb2xTcGFuKCkgY29uc3Q7CisgICAgdW5zaWduZWQgcm93U3BhbigpIGNvbnN0
OworICAgIHZvaWQgc2V0QVhDb2xJbmRleEZyb21Sb3coaW50IGluZGV4KSB7IG1fYXhDb2xJbmRl
eEZyb21Sb3cgPSBpbmRleDsgfQorCisgICAgdm9pZCBzZXRSb3dJbmRleCh1bnNpZ25lZCBpbmRl
eCkgeyBtX3Jvd0luZGV4ID0gaW5kZXg7IH0KKyAgICB2b2lkIHNldENvbHVtbkluZGV4KHVuc2ln
bmVkIGluZGV4KSB7IG1fY29sdW1uSW5kZXggPSBpbmRleDsgfQorCisjaWYgVVNFKEFUU1BJKQog
ICAgIGludCBheENvbHVtblNwYW4oKSBjb25zdDsKICAgICBpbnQgYXhSb3dTcGFuKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRBWENvbEluZGV4RnJvbVJvdyhpbnQgaW5kZXgpIHsgbV9heENvbEluZGV4
RnJvbVJvdyA9IGluZGV4OyB9CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwoUmVuZGVyT2JqZWN0Kik7CisgICAgZXhwbGljaXQgQWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbChOb2RlJik7CiAKICAgICBBY2Nlc3NpYmlsaXR5VGFibGVSb3cqIHBh
cmVudFJvdygpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVRhYmxlKiBwYXJlbnRU
YWJsZSgpIGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxp
dHlSb2xlKCkgZmluYWw7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0VW5p
Z25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBpbnQgbV9yb3dJbmRleDsKLSAgICBpbnQg
bV9heENvbEluZGV4RnJvbVJvdzsKKyAgICB1bnNpZ25lZCBtX3Jvd0luZGV4IHsgMCB9OworICAg
IHVuc2lnbmVkIG1fY29sdW1uSW5kZXggeyAwIH07CisgICAgaW50IG1fYXhDb2xJbmRleEZyb21S
b3cgeyAtMSB9OwogCiBwcml2YXRlOgogICAgIC8vIElmIGEgdGFibGUgY2VsbCBpcyBub3QgZXhw
b3NlZCBhcyBhIHRhYmxlIGNlbGwsIGEgVEggZWxlbWVudCBjYW4gc2VydmUgYXMgaXRzIHRpdGxl
IFVJIGVsZW1lbnQuCkBAIC03OCw2ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGV4cGFu
ZGVkVGV4dFZhbHVlKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c0V4cGFuZGVkVGV4
dFZhbHVlKCkgY29uc3QgZmluYWw7CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlUm93KiBhcmlhT3du
ZWRCeVBhcmVudCgpIGNvbnN0OworICAgIHZvaWQgZW5zdXJlSW5kZXhlc1VwVG9EYXRlKCkgY29u
c3Q7CiAKICAgICBib29sIGlzVGFibGVDZWxsSW5TYW1lUm93R3JvdXAoQVhDb3JlT2JqZWN0Kik7
CiAgICAgYm9vbCBpc1RhYmxlQ2VsbEluU2FtZUNvbEdyb3VwKEFYQ29yZU9iamVjdCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
b2x1bW4uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVDb2x1bW4uY3BwCmluZGV4IGFjNDJhZDMwNGIwZC4uNjg2YjM2NWQyOTBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVD
b2x1bW4uY3BwCkBAIC0yOSwxNyArMjksOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIgogCi0jaW5jbHVkZSAiQVhPYmplY3RDYWNo
ZS5oIgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIKLSNpbmNsdWRlICJIVE1M
RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIlJlbmRlclRhYmxl
LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGFibGVT
ZWN0aW9uLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLSAgICAKLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEFjY2Vzc2liaWxp
dHlUYWJsZUNvbHVtbjo6QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKCkgPSBkZWZhdWx0OwogCkBA
IC03MSwxMDIgKzYzLDE3IEBAIExheW91dFJlY3QgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpl
bGVtZW50UmVjdCgpIGNvbnN0CiAKIEFYQ29yZU9iamVjdCogQWNjZXNzaWJpbGl0eVRhYmxlQ29s
dW1uOjpjb2x1bW5IZWFkZXIoKQogewotICAgIGlmICghbV9wYXJlbnQgfHwgIWlzPEFjY2Vzc2li
aWxpdHlUYWJsZT4oKm1fcGFyZW50KQotICAgICAgICB8fCAhbV9wYXJlbnQtPmlzRXhwb3NhYmxl
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IG1fcGFyZW50LT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCisgICAgYXV0byog
cGFyZW50VGFibGUgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihtX3BhcmVu
dC5nZXQoKSk7CisgICAgaWYgKCFwYXJlbnRUYWJsZSB8fCAhcGFyZW50VGFibGUtPmlzRXhwb3Nh
YmxlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byYgcGFyZW50VGFibGUg
PSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGU+KCptX3BhcmVudCk7Ci0KLSAgICBpZiAocGFy
ZW50VGFibGUuaXNBcmlhVGFibGUoKSkgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNlbGwg
OiBjaGlsZHJlbigpKSB7Ci0gICAgICAgICAgICBpZiAoY2VsbC0+cm9sZVZhbHVlKCkgPT0gQWNj
ZXNzaWJpbGl0eVJvbGU6OkNvbHVtbkhlYWRlcikKLSAgICAgICAgICAgICAgICByZXR1cm4gY2Vs
bC5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGZvciAo
Y29uc3QgYXV0byYgY2VsbCA6IGNoaWxkcmVuKCkpIHsKKyAgICAgICAgaWYgKGNlbGwtPnJvbGVW
YWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpDb2x1bW5IZWFkZXIpCisgICAgICAgICAgICBy
ZXR1cm4gY2VsbC5nZXQoKTsKICAgICB9Ci0KLSAgICBpZiAoIWlzPFJlbmRlclRhYmxlPigqcmVu
ZGVyZXIpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBSZW5kZXJUYWJsZSYg
dGFibGUgPSBkb3duY2FzdDxSZW5kZXJUYWJsZT4oKnJlbmRlcmVyKTsKLQotICAgIC8vIHRyeSB0
aGUgPHRoZWFkPiBzZWN0aW9uIGZpcnN0LiB0aGlzIGRvZXNuJ3QgcmVxdWlyZSB0aCB0YWdzCi0g
ICAgaWYgKGF1dG8qIGhlYWRlck9iamVjdCA9IGhlYWRlck9iamVjdEZvclNlY3Rpb24odGFibGUu
aGVhZGVyKCksIGZhbHNlKSkKLSAgICAgICAgcmV0dXJuIGhlYWRlck9iamVjdDsKLSAgICAKLSAg
ICBSZW5kZXJUYWJsZVNlY3Rpb24qIGJvZHlTZWN0aW9uID0gdGFibGUuZmlyc3RCb2R5KCk7Ci0g
ICAgd2hpbGUgKGJvZHlTZWN0aW9uICYmIGJvZHlTZWN0aW9uLT5pc0Fub255bW91cygpKQotICAg
ICAgICBib2R5U2VjdGlvbiA9IHRhYmxlLnNlY3Rpb25CZWxvdyhib2R5U2VjdGlvbiwgU2tpcEVt
cHR5U2VjdGlvbnMpOwotICAgIAotICAgIC8vIG5vdyB0cnkgZm9yIDx0aD4gdGFncyBpbiB0aGUg
Zmlyc3QgYm9keS4gSWYgdGhlIGZpcnN0IGJvZHkgaXMgCi0gICAgcmV0dXJuIGhlYWRlck9iamVj
dEZvclNlY3Rpb24oYm9keVNlY3Rpb24sIHRydWUpOworICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW46OmhlYWRlck9i
amVjdEZvclNlY3Rpb24oUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uLCBib29sIHRoVGFnUmVx
dWlyZWQpCi17Ci0gICAgaWYgKCFzZWN0aW9uKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAKLSAgICB1bnNpZ25lZCBudW1Db2xzID0gc2VjdGlvbi0+bnVtQ29sdW1ucygpOwotICAgIGlm
IChtX2NvbHVtbkluZGV4ID49IG51bUNvbHMpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IAotICAgIGlmICghc2VjdGlvbi0+bnVtUm93cygpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAKLSAgICBSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSBudWxscHRyOwotICAgIC8vIGFsc28g
YWNjb3VudCBmb3IgY2VsbHMgdGhhdCBoYXZlIGEgc3BhbgotICAgIGZvciAoaW50IHRlc3RDb2wg
PSBtX2NvbHVtbkluZGV4OyB0ZXN0Q29sID49IDA7IC0tdGVzdENvbCkgewotICAgICAgICAKLSAg
ICAgICAgLy8gUnVuIGRvd24gdGhlIHJvd3MgaW4gY2FzZSBpbml0aWFsIHJvd3MgYXJlIGludmFs
aWQgKGxpa2Ugd2hlbiBhIDxjYXB0aW9uPiBpcyB1c2VkKS4KLSAgICAgICAgdW5zaWduZWQgcm93
Q291bnQgPSBzZWN0aW9uLT5udW1Sb3dzKCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgdGVzdFJv
dyA9IDA7IHRlc3RSb3cgPCByb3dDb3VudDsgdGVzdFJvdysrKSB7Ci0gICAgICAgICAgICBSZW5k
ZXJUYWJsZUNlbGwqIHRlc3RDZWxsID0gc2VjdGlvbi0+cHJpbWFyeUNlbGxBdCh0ZXN0Um93LCB0
ZXN0Q29sKTsKLSAgICAgICAgICAgIC8vIE5vIGNlbGwgYXQgdGhpcyBpbmRleCwga2VlcCBjaGVj
a2luZyBtb3JlIHJvd3MgYW5kIGNvbHVtbnMuCi0gICAgICAgICAgICBpZiAoIXRlc3RDZWxsKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBJ
ZiB3ZSd2ZSByZWFjaGVkIGEgY2VsbCB0aGF0IGRvZXNuJ3QgZXZlbiBvdmVybGFwIG91ciBjb2x1
bW4gaXQgY2FuJ3QgYmUgdGhlIGhlYWRlci4KLSAgICAgICAgICAgIGlmICgodGVzdENlbGwtPmNv
bCgpICsgKHRlc3RDZWxsLT5jb2xTcGFuKCktMSkpIDwgbV9jb2x1bW5JbmRleCkKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZSogdGVzdENlbGxO
b2RlID0gdGVzdENlbGwtPmVsZW1lbnQoKTsKLSAgICAgICAgICAgIC8vIElmIHRoZSBSZW5kZXJU
YWJsZUNlbGwgZG9lc24ndCBoYXZlIGFuIGVsZW1lbnQgYmVjYXVzZSBpdHMgYW5vbnltb3VzLAot
ICAgICAgICAgICAgLy8gdHJ5IHRvIHNlZSBpZiB3ZSBjYW4gZmluZCB0aGUgb3JpZ2luYWwgY2Vs
bCBlbGVtZW50IHRvIGNoZWNrIGlmIGl0IGhhcyBhIDx0aD4gdGFnLgotICAgICAgICAgICAgaWYg
KCF0ZXN0Q2VsbE5vZGUgJiYgdGVzdENlbGwtPmlzQW5vbnltb3VzKCkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoRWxlbWVudCogcGFyZW50RWxlbWVudCA9IHRlc3RDZWxsLT5wYXJlbnQoKSA/IHRl
c3RDZWxsLT5wYXJlbnQoKS0+ZWxlbWVudCgpIDogbnVsbHB0cikgewotICAgICAgICAgICAgICAg
ICAgICBpZiAocGFyZW50RWxlbWVudC0+aGFzVGFnTmFtZSh0clRhZykgJiYgdGVzdENvbCA8IHN0
YXRpY19jYXN0PGludD4ocGFyZW50RWxlbWVudC0+Y291bnRDaGlsZE5vZGVzKCkpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdENlbGxOb2RlID0gcGFyZW50RWxlbWVudC0+dHJhdmVyc2VU
b0NoaWxkQXQodGVzdENvbCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBpZiAoIXRlc3RDZWxsTm9kZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gSWYgdGggaXMgcmVxdWlyZWQsIGJ1dCB3ZSBm
b3VuZCBhbiBlbGVtZW50IHRoYXQgZG9lc24ndCBoYXZlIGEgdGggdGFnLCB3ZSBjYW4gc3RvcCBs
b29raW5nLgotICAgICAgICAgICAgaWYgKHRoVGFnUmVxdWlyZWQgJiYgIXRlc3RDZWxsTm9kZS0+
aGFzVGFnTmFtZSh0aFRhZykpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIGNlbGwgPSB0ZXN0Q2VsbDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgfQotICAgIAotICAgIGlmICghY2VsbCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBhdXRvKiBjZWxsT2JqZWN0ID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShj
ZWxsKTsKLSAgICBpZiAoIWNlbGxPYmplY3QgfHwgY2VsbE9iamVjdC0+YWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgCi0gICAgcmV0dXJu
IGNlbGxPYmplY3Q7Ci19Ci0gICAgCiBib29sIEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbjo6Y29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogewogICAgIGlmICghbV9wYXJlbnQp
CkBAIC0xODIsMjIgKzg5LDE4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uOjpjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB2b2lkIEFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbjo6YWRkQ2hpbGRyZW4oKQogewogICAgIEFTU0VSVCghbV9jaGlsZHJlbkluaXRpYWxp
emVkKTsgCi0gICAgCiAgICAgbV9jaGlsZHJlbkluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICBpZiAo
IWlzPEFjY2Vzc2liaWxpdHlUYWJsZT4obV9wYXJlbnQpKQotICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvJiBwYXJlbnRUYWJsZSA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZT4oKm1fcGFy
ZW50KTsKLSAgICBpZiAoIXBhcmVudFRhYmxlLmlzRXhwb3NhYmxlKCkpCisgICAgYXV0byogcGFy
ZW50VGFibGUgPSBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlPihtX3BhcmVudC5n
ZXQoKSk7CisgICAgaWYgKCFwYXJlbnRUYWJsZSB8fCAhcGFyZW50VGFibGUtPmlzRXhwb3NhYmxl
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpbnQgbnVtUm93cyA9IHBhcmVudFRhYmxl
LnJvd0NvdW50KCk7Ci0gICAgCisKKyAgICBpbnQgbnVtUm93cyA9IHBhcmVudFRhYmxlLT5yb3dD
b3VudCgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtUm93czsgKytpKSB7Ci0gICAgICAg
IGF1dG8qIGNlbGwgPSBwYXJlbnRUYWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KG1fY29sdW1uSW5k
ZXgsIGkpOworICAgICAgICBhdXRvKiBjZWxsID0gcGFyZW50VGFibGUtPmNlbGxGb3JDb2x1bW5B
bmRSb3cobV9jb2x1bW5JbmRleCwgaSk7CiAgICAgICAgIGlmICghY2VsbCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAKKwogICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIGxhc3Qgb25l
IGlzbid0IHRoZSBzYW1lIGFzIHRoaXMgb25lIChyb3dzcGFuIGNlbGxzKQogICAgICAgICBpZiAo
bV9jaGlsZHJlbi5zaXplKCkgPiAwICYmIG1fY2hpbGRyZW4ubGFzdCgpID09IGNlbGwpCiAgICAg
ICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oCmluZGV4IDZiMWFjY2QwZjUwNi4uYjA1YjI5
MzhlN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNvbHVtbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgKQEAgLTI5LDggKzI5LDYgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCIKLSNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5VGFibGUuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAKQEAgLTU2LDcgKzU0LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBBY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4oKTsKICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFk
ZXJPYmplY3RGb3JTZWN0aW9uKFJlbmRlclRhYmxlU2VjdGlvbiosIGJvb2wgdGhUYWdSZXF1aXJl
ZCk7CiAgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgaXNUYWJsZUNvbHVtbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGVSb3cuY3BwCmluZGV4IDVlM2JhYmUzNjZjMi4uMGEzYmMzNjEyZmQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVSb3cuY3BwCkBAIC0yOSwyNCArMjksMjUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKIAotI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5VGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTFRh
YmxlUm93RWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgotI2luY2x1ZGUgIlJl
bmRlclRhYmxlQ2VsbC5oIgotI2luY2x1ZGUgIlJlbmRlclRhYmxlUm93LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLSAgICAKKwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLSAgICAKKwog
QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpBY2Nlc3NpYmlsaXR5VGFibGVSb3coUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKICAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QocmVuZGVyZXIpCiB7
CiB9CiAKK0FjY2Vzc2liaWxpdHlUYWJsZVJvdzo6QWNjZXNzaWJpbGl0eVRhYmxlUm93KE5vZGUm
IG5vZGUpCisgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KG5vZGUpCit7Cit9CisKIEFj
Y2Vzc2liaWxpdHlUYWJsZVJvdzo6fkFjY2Vzc2liaWxpdHlUYWJsZVJvdygpID0gZGVmYXVsdDsK
IAogUmVmPEFjY2Vzc2liaWxpdHlUYWJsZVJvdz4gQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVh
dGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTU0LDYgKzU1LDExIEBAIFJlZjxBY2Nlc3Np
YmlsaXR5VGFibGVSb3c+IEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6Y3JlYXRlKFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVRhYmxl
Um93KHJlbmRlcmVyKSk7CiB9CiAKK1JlZjxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+IEFjY2Vzc2li
aWxpdHlUYWJsZVJvdzo6Y3JlYXRlKE5vZGUmIG5vZGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQWNjZXNzaWJpbGl0eVRhYmxlUm93KG5vZGUpKTsKK30KKwogQWNjZXNzaWJpbGl0eVJv
bGUgQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpCiB7
CiAgICAgaWYgKCFpc1RhYmxlUm93KCkpCkBAIC0xMTMsMTkgKzExOSwxOSBAQCBBY2Nlc3NpYmls
aXR5VGFibGUqIEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6cGFyZW50VGFibGUoKSBjb25zdAogQVhD
b3JlT2JqZWN0KiBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmhlYWRlck9iamVjdCgpCiB7CiAgICAg
Y29uc3QgYXV0byYgcm93Q2hpbGRyZW4gPSBjaGlsZHJlbigpOwotICAgIGlmICghcm93Q2hpbGRy
ZW4uc2l6ZSgpKQorICAgIGlmIChyb3dDaGlsZHJlbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIAotICAgIGF1dG8qIGNlbGwgPSByb3dDaGlsZHJlblswXS5nZXQoKTsK
LSAgICBpZiAoIWlzPEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw+KGNlbGwpIHx8ICFjZWxsLT5ub2Rl
KCkgfHwgIWNlbGwtPm5vZGUoKS0+aGFzVGFnTmFtZSh0aFRhZykpCisgICAgYXV0byogZmlyc3RD
ZWxsID0gcm93Q2hpbGRyZW5bMF0uZ2V0KCk7CisgICAgaWYgKCFmaXJzdENlbGwgfHwgIWZpcnN0
Q2VsbC0+bm9kZSgpIHx8ICFmaXJzdENlbGwtPm5vZGUoKS0+aGFzVGFnTmFtZSh0aFRhZykpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHJv
dyBoZWFkZXIgaXMgbm90IHBhcnQgb2YgYW4gZW50aXJlIHJvdyBvZiBoZWFkZXJzLgogICAgIC8v
IEluIHRoYXQgY2FzZSwgaXQgaXMgdW5saWtlbHkgdGhpcyBpcyBhIHJvdyBoZWFkZXIuCiAgICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IHJvd0NoaWxkcmVuKSB7CiAgICAgICAgIC8vIFdlIGZv
dW5kIGEgbm9uLWhlYWRlciBjZWxsLCBzbyB0aGlzIGlzIG5vdCBhbiBlbnRpcmUgcm93IG9mIGhl
YWRlcnMgLS0gcmV0dXJuIHRoZSBvcmlnaW5hbCBoZWFkZXIgY2VsbC4KICAgICAgICAgaWYgKGNo
aWxkLT5ub2RlKCkgJiYgIWNoaWxkLT5ub2RlKCktPmhhc1RhZ05hbWUodGhUYWcpKQotICAgICAg
ICAgICAgcmV0dXJuIGNlbGw7CisgICAgICAgICAgICByZXR1cm4gZmlyc3RDZWxsOwogICAgIH0K
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5oCmluZGV4IDk1MzU4Y2YyMjZhNC4uZWRiZGFj
Nzg1ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRhYmxlUm93LmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eVRh
YmxlOwogY2xhc3MgQWNjZXNzaWJpbGl0eVRhYmxlUm93IDogcHVibGljIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVRhYmxl
Um93PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5
VGFibGVSb3c+IGNyZWF0ZShOb2RlJik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eVRhYmxl
Um93KCk7CiAKICAgICAvLyByZXRyaWV2ZXMgdGhlICJyb3ciIGhlYWRlciAoYSB0aCB0YWcgaW4g
dGhlIHJpZ2h0bW9zdCBjb2x1bW4pCkBAIC01Nyw2ICs1OCw3IEBAIHB1YmxpYzoKIAogcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUYWJsZVJvdyhSZW5kZXJPYmplY3QqKTsK
KyAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VGFibGVSb3coTm9kZSYpOwogCiAgICAgQWNjZXNz
aWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0VGFibGVBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0Fj
Y2Vzc2liaWxpdHlPYmplY3RUYWJsZUF0c3BpLmNwcAppbmRleCA4NTVkYTBlMzcwZjcuLmQ1NTY1
MzU1NjY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGFibGVBdHNwaS5jcHAKQEAgLTky
LDcgKzkyLDcgQEAgR0RCdXNJbnRlcmZhY2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
OjpzX3RhYmxlRnVuY3Rpb25zID0gewogICAgICAgICAgICAgYXV0byByb3cgPSBhdHNwaU9iamVj
dC0+cm93QXRJbmRleChpbmRleCk7CiAgICAgICAgICAgICBhdXRvIGNvbHVtbiA9IGF0c3BpT2Jq
ZWN0LT5jb2x1bW5BdEluZGV4KGluZGV4KTsKICAgICAgICAgICAgIGF1dG8qIGNlbGwgPSBhdHNw
aU9iamVjdC0+bV9jb3JlT2JqZWN0ID8gYXRzcGlPYmplY3QtPm1fY29yZU9iamVjdC0+Y2VsbEZv
ckNvbHVtbkFuZFJvdygqY29sdW1uLCAqcm93KSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBnX2Ri
dXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9u
ZXcoIihiaWlpaWIpIiwgY2VsbCAmJiBjZWxsLT5pc1RhYmxlQ2VsbCgpID8gVFJVRSA6IEZBTFNF
LAorICAgICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZv
Y2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIoYmlpaWliKSIsIGNlbGwgJiYgY2VsbC0+aXNFeHBvc2Vk
VGFibGVDZWxsKCkgPyBUUlVFIDogRkFMU0UsCiAgICAgICAgICAgICAgICAgcm93LnZhbHVlX29y
KC0xKSwgY29sdW1uLnZhbHVlX29yKC0xKSwgcm93ICYmIGNvbHVtbiA/IGF0c3BpT2JqZWN0LT5y
b3dFeHRlbnQoKnJvdywgKmNvbHVtbikgOiAtMSwKICAgICAgICAgICAgICAgICByb3cgJiYgY29s
dW1uID8gYXRzcGlPYmplY3QtPmNvbHVtbkV4dGVudCgqcm93LCAqY29sdW1uKSA6IC0xLCBGQUxT
RSkpOwogICAgICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIkdldFNlbGVj
dGVkUm93cyIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUYWJsZUNlbGxBdHNwaS5jcHAK
aW5kZXggZDRhNDUyYjVjYjBjLi4xMGEyZWUzOWJiNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRhYmxlQ2VsbEF0c3Bp
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUYWJsZUNlbGxBdHNwaS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgR0RCdXNJbnRlcmZh
Y2VWVGFibGUgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzX3RhYmxlQ2VsbEZ1bmN0aW9ucyA9
IHsKICAgICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X2ludDMyKGF0c3BpT2JqZWN0LT5y
b3dTcGFuKCkpOwogICAgICAgICBpZiAoIWdfc3RyY21wMChwcm9wZXJ0eU5hbWUsICJUYWJsZSIp
KSB7CiAgICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9IGF0c3BpT2JqZWN0LT5tX2NvcmVPYmpl
Y3Q7Ci0gICAgICAgICAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+aXNUYWJsZUNlbGwo
KSkKKyAgICAgICAgICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5pc0V4cG9zZWRUYWJs
ZUNlbGwoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5n
bGV0b24oKS5udWxsUmVmZXJlbmNlKCk7CiAKICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaSogd3JhcHBlciA9IGF0c3BpT2JqZWN0LnB0cigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBmYWQ5MTFlNjYyYjUuLjljZDQwZDlmZjkwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTEyODYsNyArMTI4Niw3
IEBAIC0gKEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqKXRhYmxlQ2VsbFBhcmVudAogewogICAgIC8v
IEZpbmQgaWYgdGhpcyBlbGVtZW50IGlzIGluIGEgdGFibGUgY2VsbC4KICAgICBpZiAoQVhDb3Jl
T2JqZWN0KiBwYXJlbnQgPSBBY2Nlc3NpYmlsaXR5OjpmaW5kQW5jZXN0b3I8QVhDb3JlT2JqZWN0
Pigqc2VsZi5heEJhY2tpbmdPYmplY3QsIHRydWUsIFtdIChjb25zdCBBWENvcmVPYmplY3QmIG9i
amVjdCkgewotICAgICAgICByZXR1cm4gb2JqZWN0LmlzVGFibGVDZWxsKCk7CisgICAgICAgIHJl
dHVybiBvYmplY3QuaXNFeHBvc2VkVGFibGVDZWxsKCk7CiAgICAgfSkpCiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4ocGFyZW50KTsKICAgICByZXR1
cm4gbmlsOwpAQCAtMTM0Nyw3ICsxMzQ3LDcgQEAgLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlI
ZWFkZXJFbGVtZW50cwogICAgIC8vIFdlIHNob3VsZCBjb25zaWRlciB0aGUgY2FzZXMgd2hlcmUg
dGhlIHJvdyBudW1iZXIgZG9lcyBOT1QgbWF0Y2ggdGhlIGluZGV4IGluCiAgICAgLy8gcm93SGVh
ZGVycywgdGhlIG1vc3QgY29tbW9uIGNhc2UgaXMgd2hlbiByb3cwL2NvbDAgZG9lcyBub3QgaGF2
ZSBhIGhlYWRlci4KICAgICBmb3IgKGNvbnN0IGF1dG8mIHJvd0hlYWRlciA6IHJvd0hlYWRlcnMp
IHsKLSAgICAgICAgaWYgKCFpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPigqcm93SGVhZGVyKSkK
KyAgICAgICAgaWYgKCFyb3dIZWFkZXItPmlzRXhwb3NlZFRhYmxlQ2VsbCgpKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGF1dG8gcm93SGVhZGVyUmFuZ2UgPSByb3dIZWFkZXItPnJvd0lu
ZGV4UmFuZ2UoKTsKICAgICAgICAgaWYgKHJvd1JhbmdlSW5kZXggPj0gcm93SGVhZGVyUmFuZ2Uu
Zmlyc3QgJiYgcm93UmFuZ2VJbmRleCA8IHJvd0hlYWRlclJhbmdlLmZpcnN0ICsgcm93SGVhZGVy
UmFuZ2Uuc2Vjb25kKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDQ2NWQ0ZWJh
MTE1Ni4uYTM0YWQ5NTBhZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMTk3
LDE3ICsxOTcsMTYgQEAgdm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGll
cyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4mIGF4T2IKICAgICAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzU2VsZWN0ZWRSb3dzLCBvYmplY3Quc3VwcG9ydHNT
ZWxlY3RlZFJvd3MoKSk7CiAgICAgICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVy
dHlOYW1lOjpDb2x1bW5zLCBvYmplY3QuY29sdW1ucygpKTsKICAgICAgICAgc2V0T2JqZWN0VmVj
dG9yUHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJvd3MsIG9iamVjdC5yb3dzKCkpOwotICAgICAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q29sdW1uQ291bnQsIG9iamVjdC5jb2x1bW5D
b3VudCgpKTsKLSAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OlJvd0NvdW50LCBv
YmplY3Qucm93Q291bnQoKSk7CiAgICAgICAgIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJv
cGVydHlOYW1lOjpDZWxscywgb2JqZWN0LmNlbGxzKCkpOwogICAgICAgICBzZXRPYmplY3RWZWN0
b3JQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VmlzaWJsZVJvd3MsIG9iamVjdC52aXNpYmxlUm93
cygpKTsKICAgICAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkhlYWRlckNv
bnRhaW5lciwgb2JqZWN0LmhlYWRlckNvbnRhaW5lcigpKTsKICAgICAgICAgc2V0UHJvcGVydHko
QVhQcm9wZXJ0eU5hbWU6OkFYQ29sdW1uQ291bnQsIG9iamVjdC5heENvbHVtbkNvdW50KCkpOwog
ICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QVhSb3dDb3VudCwgb2JqZWN0LmF4
Um93Q291bnQoKSk7CisgICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpDZWxsU2xv
dHMsIG9iamVjdC5jZWxsU2xvdHMoKSk7CiAgICAgfQogCi0gICAgaWYgKG9iamVjdC5pc1RhYmxl
Q2VsbCgpKSB7Ci0gICAgICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpJc1RhYmxlQ2Vs
bCwgdHJ1ZSk7CisgICAgaWYgKG9iamVjdC5pc0V4cG9zZWRUYWJsZUNlbGwoKSkgeworICAgICAg
ICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6SXNFeHBvc2VkVGFibGVDZWxsLCB0cnVlKTsK
ICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkNvbHVtbkluZGV4UmFuZ2UsIG9i
amVjdC5jb2x1bW5JbmRleFJhbmdlKCkpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6Um93SW5kZXhSYW5nZSwgb2JqZWN0LnJvd0luZGV4UmFuZ2UoKSk7CiAgICAgICAgIHNl
dFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpBWENvbHVtbkluZGV4LCBvYmplY3QuYXhDb2x1bW5J
bmRleCgpKTsKQEAgLTQ5MSwxNSArNDkwLDIwIEBAIGJvb2wgQVhJc29sYXRlZE9iamVjdDo6aXNE
ZXRhY2hlZEZyb21QYXJlbnQoKQogCiBBWENvcmVPYmplY3QqIEFYSXNvbGF0ZWRPYmplY3Q6OmNl
bGxGb3JDb2x1bW5BbmRSb3codW5zaWduZWQgY29sdW1uSW5kZXgsIHVuc2lnbmVkIHJvd0luZGV4
KQogewotICAgIEFYSUQgY2VsbElEID0gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21N
YWluVGhyZWFkPEFYSUQ+KFsmY29sdW1uSW5kZXgsICZyb3dJbmRleCwgdGhpc10gKCkgLT4gQVhJ
RCB7Ci0gICAgICAgIGlmIChhdXRvKiBvYmplY3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKSkgewot
ICAgICAgICAgICAgaWYgKGF1dG8gY2VsbCA9IG9iamVjdC0+Y2VsbEZvckNvbHVtbkFuZFJvdyhj
b2x1bW5JbmRleCwgcm93SW5kZXgpKQotICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLT5vYmpl
Y3RJRCgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfSk7Ci0KLSAgICBy
ZXR1cm4gdHJlZSgpLT5vYmplY3RGb3JJRChjZWxsSUQpLmdldCgpOworICAgIC8vIEFYUHJvcGVy
dHlOYW1lOjpDZWxsU2xvdHMgY2FuIGJlIGJpZywgc28gbWFrZSBzdXJlIG5vdCB0byBjb3B5IGl0
LgorICAgIGF1dG8gY2VsbFNsb3RzSXRlcmF0b3IgPSBtX3Byb3BlcnR5TWFwLmZpbmQoQVhQcm9w
ZXJ0eU5hbWU6OkNlbGxTbG90cyk7CisgICAgaWYgKGNlbGxTbG90c0l0ZXJhdG9yID09IG1fcHJv
cGVydHlNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQVhJRCBjZWxs
SUQgPSBXVEY6OnN3aXRjaE9uKGNlbGxTbG90c0l0ZXJhdG9yLT52YWx1ZSwKKyAgICAgICAgWyZd
IChWZWN0b3I8VmVjdG9yPEFYSUQ+PiYgY2VsbFNsb3RzKSB7CisgICAgICAgICAgICBpZiAocm93
SW5kZXggPj0gY2VsbFNsb3RzLnNpemUoKSB8fCBjb2x1bW5JbmRleCA+PSBjZWxsU2xvdHNbcm93
SW5kZXhdLnNpemUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQVhJRCgpOworICAgICAgICAg
ICAgcmV0dXJuIGNlbGxTbG90c1tyb3dJbmRleF1bY29sdW1uSW5kZXhdOworICAgICAgICB9LAor
ICAgICAgICBbXSAoYXV0byYpIHsgcmV0dXJuIEFYSUQoKTsgfQorICAgICk7CisgICAgcmV0dXJu
IGNlbGxJRCA/IHRyZWUoKS0+b2JqZWN0Rm9ySUQoY2VsbElEKS5nZXQoKSA6IG51bGxwdHI7CiB9
CiAKIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6YWNjZXNzaWJpbGl0eVRleHQoVmVjdG9yPEFjY2Vz
c2liaWxpdHlUZXh0PiYgdGV4dHMpIGNvbnN0CkBAIC0xNjU0LDYgKzE2NTgsMTIgQEAgYm9vbCBB
WElzb2xhdGVkT2JqZWN0Ojppc01vZGFsTm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCitib29sIEFYSXNvbGF0ZWRPYmplY3Q6OmlzVGFibGVDZWxsKCkgY29uc3QKK3sKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIEFYQ29yZU9iamVj
dCogQVhJc29sYXRlZE9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IElu
dFBvaW50JikgY29uc3QKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRPYmplY3QuaAppbmRleCBlZWViNmQyMmZjNzAuLmM3OWM4MDBmYjJlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRPYmplY3QuaApAQCAtMTM5LDEwICsxMzksMTAgQEAgcHJpdmF0ZToKICAgICBBWElzb2xh
dGVkT2JqZWN0KiBleHBvc2VkVGFibGVBbmNlc3Rvcihib29sIGluY2x1ZGVTZWxmID0gZmFsc2Up
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OmV4cG9zZWRUYWJsZUFuY2VzdG9y
KCp0aGlzLCBpbmNsdWRlU2VsZik7IH0KICAgICBpbnQgdGFibGVMZXZlbCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGludEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpUYWJsZUxldmVs
KTsgfQogICAgIGJvb2wgc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzU2VsZWN0ZWRS
b3dzKTsgfQotICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb2x1bW5zKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0ZVZhbHVlPEFY
SUQ+KEFYUHJvcGVydHlOYW1lOjpDb2x1bW5zKSk7IH0KLSAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3Igcm93cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0ZvcklEcyh2
ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6Um93cykpOyB9Ci0gICAg
dW5zaWduZWQgY29sdW1uQ291bnQoKSBvdmVycmlkZSB7IHJldHVybiB1bnNpZ25lZEF0dHJpYnV0
ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpDb2x1bW5Db3VudCk7IH0KLSAgICB1bnNpZ25lZCByb3dD
b3VudCgpIG92ZXJyaWRlIHsgcmV0dXJuIHVuc2lnbmVkQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0
eU5hbWU6OlJvd0NvdW50KTsgfQorICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb2x1
bW5zKCkgZmluYWwgeyByZXR1cm4gdHJlZSgpLT5vYmplY3RzRm9ySURzKHZlY3RvckF0dHJpYnV0
ZVZhbHVlPEFYSUQ+KEFYUHJvcGVydHlOYW1lOjpDb2x1bW5zKSk7IH0KKyAgICBBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3Igcm93cygpIGZpbmFsIHsgcmV0dXJuIHRyZWUoKS0+b2JqZWN0c0Zv
cklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5TmFtZTo6Um93cykpOyB9
CisgICAgdW5zaWduZWQgY29sdW1uQ291bnQoKSBmaW5hbCB7IHJldHVybiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oY29sdW1ucygpLnNpemUoKSk7IH0KKyAgICB1bnNpZ25lZCByb3dDb3VudCgpIGZp
bmFsIHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyb3dzKCkuc2l6ZSgpKTsgfQogICAg
IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjZWxscygpIG92ZXJyaWRlIHsgcmV0dXJuIHRy
ZWUoKS0+b2JqZWN0c0ZvcklEcyh2ZWN0b3JBdHRyaWJ1dGVWYWx1ZTxBWElEPihBWFByb3BlcnR5
TmFtZTo6Q2VsbHMpKTsgfQogICAgIEFYQ29yZU9iamVjdCogY2VsbEZvckNvbHVtbkFuZFJvdyh1
bnNpZ25lZCwgdW5zaWduZWQpIG92ZXJyaWRlOwogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBjb2x1bW5IZWFkZXJzKCkgb3ZlcnJpZGU7CkBAIC0xNTMsNyArMTUzLDggQEAgcHJpdmF0
ZToKICAgICBpbnQgYXhSb3dDb3VudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGludEF0dHJp
YnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpBWFJvd0NvdW50KTsgfQogCiAgICAgLy8gVGFibGUg
Y2VsbCBzdXBwb3J0LgotICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBib29sQXR0cmlidXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OklzVGFibGVDZWxsKTsgfQor
ICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzRXhwb3NlZFRh
YmxlQ2VsbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3Bl
cnR5TmFtZTo6SXNFeHBvc2VkVGFibGVDZWxsKTsgfQogICAgIC8vIFJldHVybnMgdGhlIHN0YXJ0
IGxvY2F0aW9uIGFuZCByb3cgc3BhbiBvZiB0aGUgY2VsbC4KICAgICBzdGQ6OnBhaXI8dW5zaWdu
ZWQsIHVuc2lnbmVkPiByb3dJbmRleFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcGFp
ckF0dHJpYnV0ZVZhbHVlPHVuc2lnbmVkPihBWFByb3BlcnR5TmFtZTo6Um93SW5kZXhSYW5nZSk7
IH0KICAgICAvLyBSZXR1cm5zIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2Yg
dGhlIGNlbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggYmM4NTk1MmNiMmNhLi4xNjA5
MDE0MDk4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTUxNCw2ICs1MTQsOSBAQCB2
b2lkIEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlUHJvcGVydGllcyhBWENvcmVPYmplY3QmIGF4
T2JqZWN0LCBjb25zdCBWZWN0b3I8QQogICAgICAgICBjYXNlIEFYUHJvcGVydHlOYW1lOjpDYW5T
ZXRWYWx1ZUF0dHJpYnV0ZToKICAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5
TmFtZTo6Q2FuU2V0VmFsdWVBdHRyaWJ1dGUsIGF4T2JqZWN0LmNhblNldFZhbHVlQXR0cmlidXRl
KCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQVhQcm9wZXJ0eU5hbWU6OkNl
bGxTbG90czoKKyAgICAgICAgICAgIHByb3BlcnR5TWFwLnNldChBWFByb3BlcnR5TmFtZTo6Q2Vs
bFNsb3RzLCBkeW5hbWljRG93bmNhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdD4oYXhPYmplY3QpLT5j
ZWxsU2xvdHMoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBWFByb3BlcnR5
TmFtZTo6Q3VycmVudFN0YXRlOgogICAgICAgICAgICAgcHJvcGVydHlNYXAuc2V0KEFYUHJvcGVy
dHlOYW1lOjpDdXJyZW50U3RhdGUsIHN0YXRpY19jYXN0PGludD4oYXhPYmplY3QuY3VycmVudFN0
YXRlKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjA4LDggKzYxMSwyNCBAQCB2b2lkIEFY
SXNvbGF0ZWRUcmVlOjp1cGRhdGVOb2RlQW5kRGVwZW5kZW50UHJvcGVydGllcyhBY2Nlc3NpYmls
aXR5T2JqZWN0JiBheE9iagogCiAgICAgdXBkYXRlTm9kZShheE9iamVjdCk7CiAKLSAgICBpZiAo
YXV0byogdHJlZUFuY2VzdG9yID0gQWNjZXNzaWJpbGl0eTo6ZmluZEFuY2VzdG9yKGF4T2JqZWN0
LCB0cnVlLCBbXSAoY29uc3QgYXV0byYgb2JqZWN0KSB7IHJldHVybiBvYmplY3QuaXNUcmVlKCk7
IH0pKQotICAgICAgICB1cGRhdGVOb2RlUHJvcGVydHkoKnRyZWVBbmNlc3RvciwgQVhQcm9wZXJ0
eU5hbWU6OkFSSUFUcmVlUm93cyk7CisgICAgLy8gV2hlbiBhIHJvdyBnYWlucyBvciBsb3NlcyBj
ZWxscywgdGhlIGNvbHVtbiBjb3VudCBvZiB0aGUgdGFibGUgY2FuIGNoYW5nZS4KKyAgICBib29s
IHVwZGF0ZVRhYmxlQW5jZXN0b3JDb2x1bW5zID0gaXM8QWNjZXNzaWJpbGl0eVRhYmxlUm93Pihh
eE9iamVjdCk7CisgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IGF4T2JqZWN0LnBhcmVudE9iamVj
dCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50T2JqZWN0KCkpIHsKKyAg
ICAgICAgaWYgKGFuY2VzdG9yLT5pc1RyZWUoKSkgeworICAgICAgICAgICAgdXBkYXRlTm9kZVBy
b3BlcnR5KCphbmNlc3RvciwgQVhQcm9wZXJ0eU5hbWU6OkFSSUFUcmVlUm93cyk7CisgICAgICAg
ICAgICBpZiAoIXVwZGF0ZVRhYmxlQW5jZXN0b3JDb2x1bW5zKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHVwZGF0ZVRhYmxlQW5jZXN0b3JDb2x1bW5z
ICYmIGFuY2VzdG9yLT5pc0FjY2Vzc2liaWxpdHlUYWJsZUluc3RhbmNlKCkpIHsKKyAgICAgICAg
ICAgIC8vIE9ubHkgYHVwZGF0ZUNoaWxkcmVuYCBpZiB0aGUgdGFibGUgaXMgdW5pZ25vcmVkLCBi
ZWNhdXNlIG90aGVyd2lzZSBgdXBkYXRlQ2hpbGRyZW5gIHdpbGwgYXNjZW5kIGFuZCB1cGRhdGUg
dGhlIG5leHQgaGlnaGVzdCB1bmlnbm9yZWQgYW5jZXN0b3IsIHdoaWNoIGRvZXNuJ3QgYWNjb21w
bGlzaCBvdXIgZ29hbCBvZiB1cGRhdGluZyB0YWJsZSBjb2x1bW5zLgorICAgICAgICAgICAgaWYg
KGFuY2VzdG9yLT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAvLyBVc2UgYHVwZGF0ZUNoaWxkcmVuYCByYXRoZXIgdGhhbiBgdXBk
YXRlTm9kZVByb3BlcnR5YCBiZWNhdXNlIGB1cGRhdGVDaGlsZHJlbmAgd2lsbCBlbnN1cmUgdGhl
IGNvbHVtbnMgKHdoaWNoIGFyZSBjaGlsZHJlbikgd2lsbCBoYXZlIGFzc29jaWF0ZWQgaXNvbGF0
ZWQgb2JqZWN0cyBjcmVhdGVkLgorICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW4oKmFuY2VzdG9y
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIEFYSXNv
bGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5T2JqZWN0JiBheE9iamVjdCwg
UmVzb2x2ZU5vZGVDaGFuZ2VzIHJlc29sdmVOb2RlQ2hhbmdlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5o
CmluZGV4IGJlZTQ5MjE3OTU0NC4uNjRjNGFkODNlYmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgK
QEAgLTc3LDkgKzc3LDkgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsK
ICAgICBDYXJldEJyb3dzaW5nRW5hYmxlZCwKICNlbmRpZgogICAgIENlbGxzLAorICAgIENlbGxT
bG90cywKICAgICBDb2xvclZhbHVlLAogICAgIENvbHVtbnMsCi0gICAgQ29sdW1uQ291bnQsCiAg
ICAgQ29sdW1uSGVhZGVyLAogICAgIENvbHVtbkhlYWRlcnMsCiAgICAgQ29sdW1uSW5kZXgsCkBA
IC0xMjIsNiArMTIyLDcgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsK
ICAgICBJc0VuYWJsZWQsCiAgICAgSXNFeHBhbmRlZCwKICAgICBJc0V4cG9zYWJsZSwKKyAgICBJ
c0V4cG9zZWRUYWJsZUNlbGwsCiAgICAgSXNGaWVsZHNldCwKICAgICBJc0ZvY3VzZWQsCiAgICAg
SXNJbmRldGVybWluYXRlLApAQCAtMTUxLDcgKzE1Miw2IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0
eU5hbWUgOiB1aW50MTZfdCB7CiAgICAgSXNTZWxlY3RlZCwKICAgICBJc1NlbGVjdGVkT3B0aW9u
QWN0aXZlLAogICAgIElzVGFibGUsCi0gICAgSXNUYWJsZUNlbGwsCiAgICAgSXNUYWJsZUNvbHVt
biwKICAgICBJc1RhYmxlUm93LAogICAgIElzVHJlZSwKQEAgLTE5Niw3ICsxOTYsNiBAQCBlbnVt
IGNsYXNzIEFYUHJvcGVydHlOYW1lIDogdWludDE2X3QgewogICAgIFJvbGVQbGF0Zm9ybVN0cmlu
ZywKICAgICBSb2xlRGVzY3JpcHRpb24sCiAgICAgUm93cywKLSAgICBSb3dDb3VudCwKICAgICBS
b3dIZWFkZXJzLAogICAgIFJvd0luZGV4LAogICAgIFJvd0luZGV4UmFuZ2UsCkBAIC0yNDAsNyAr
MjM5LDcgQEAgZW51bSBjbGFzcyBBWFByb3BlcnR5TmFtZSA6IHVpbnQxNl90IHsKICAgICBWaXNp
YmxlUm93cywKIH07CiAKLXVzaW5nIEFYUHJvcGVydHlWYWx1ZVZhcmlhbnQgPSBzdGQ6OnZhcmlh
bnQ8c3RkOjpudWxscHRyX3QsIEFYSUQsIFN0cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91
YmxlLCBmbG9hdCwgdWludDY0X3QsIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSwgQ29sb3IsIFVS
TCwgTGF5b3V0UmVjdCwgRmxvYXRQb2ludCwgRmxvYXRSZWN0LCBJbnRQb2ludCwgSW50UmVjdCwg
UEFMOjpTZXNzaW9uSUQsIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+LCBWZWN0b3I8QWNj
ZXNzaWJpbGl0eVRleHQ+LCBWZWN0b3I8QVhJRD4sIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJ
RD4+LCBWZWN0b3I8U3RyaW5nPiwgUGF0aCwgT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiwgUmV0
YWluUHRyPE5TQXR0cmlidXRlZFN0cmluZz4sIEluc2lkZUxpbmssIENoYXJhY3RlclJhbmdlPjsK
K3VzaW5nIEFYUHJvcGVydHlWYWx1ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8c3RkOjpudWxscHRy
X3QsIEFYSUQsIFN0cmluZywgYm9vbCwgaW50LCB1bnNpZ25lZCwgZG91YmxlLCBmbG9hdCwgdWlu
dDY0X3QsIEFjY2Vzc2liaWxpdHlCdXR0b25TdGF0ZSwgQ29sb3IsIFVSTCwgTGF5b3V0UmVjdCwg
RmxvYXRQb2ludCwgRmxvYXRSZWN0LCBJbnRQb2ludCwgSW50UmVjdCwgUEFMOjpTZXNzaW9uSUQs
IHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+
LCBWZWN0b3I8QVhJRD4sIFZlY3RvcjxzdGQ6OnBhaXI8QVhJRCwgQVhJRD4+LCBWZWN0b3I8U3Ry
aW5nPiwgUGF0aCwgT3B0aW9uU2V0PEFYQW5jZXN0b3JGbGFnPiwgUmV0YWluUHRyPE5TQXR0cmli
dXRlZFN0cmluZz4sIEluc2lkZUxpbmssIFZlY3RvcjxWZWN0b3I8QVhJRD4+LCBDaGFyYWN0ZXJS
YW5nZT47CiB1c2luZyBBWFByb3BlcnR5TWFwID0gSGFzaE1hcDxBWFByb3BlcnR5TmFtZSwgQVhQ
cm9wZXJ0eVZhbHVlVmFyaWFudCwgSW50SGFzaDxBWFByb3BlcnR5TmFtZT4sIFdURjo6U3Ryb25n
RW51bUhhc2hUcmFpdHM8QVhQcm9wZXJ0eU5hbWU+PjsKIAogc3RydWN0IEFYUHJvcGVydHlDaGFu
Z2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA1NWU1ZWYz
MjgyZjguLjMwZTE5NTYyY2FiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMubW0KQEAgLTExODksNyArMTE4OSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFibGVBdHRycy5nZXQoKS5nZXQo
KTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5pc1RhYmxlQ29sdW1uKCkpCiAgICAgICAg
IG9iamVjdEF0dHJpYnV0ZXMgPSB0YWJsZUNvbEF0dHJzLmdldCgpLmdldCgpOwotICAgIGVsc2Ug
aWYgKGJhY2tpbmdPYmplY3QtPmlzVGFibGVDZWxsKCkpCisgICAgZWxzZSBpZiAoYmFja2luZ09i
amVjdC0+aXNFeHBvc2VkVGFibGVDZWxsKCkpCiAgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0
YWJsZUNlbGxBdHRycy5nZXQoKS5nZXQoKTsKICAgICBlbHNlIGlmIChiYWNraW5nT2JqZWN0LT5p
c1RhYmxlUm93KCkpIHsKICAgICAgICAgLy8gQW4gQVJJQSB0YWJsZSByb3cgY2FuIGJlIGNvbGxh
cHNlZCBhbmQgZXhwYW5kZWQsIHNvIGl0IG5lZWRzIHRoZSBleHRyYSBhdHRyaWJ1dGVzLgpAQCAt
MTg0Niw3ICsxODQ2LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoYmFja2luZ09iamVjdC0+aXNUYWJsZUNlbGwoKSkg
eworICAgIGlmIChiYWNraW5nT2JqZWN0LT5pc0V4cG9zZWRUYWJsZUNlbGwoKSkgewogICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd0lu
ZGV4UmFuZ2VBdHRyaWJ1dGVdKSB7CiAgICAgICAgICAgICBhdXRvIHJvd1JhbmdlID0gYmFja2lu
Z09iamVjdC0+cm93SW5kZXhSYW5nZSgpOwogICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZh
bHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHJvd1JhbmdlLmZpcnN0LCByb3dSYW5nZS5zZWNvbmQp
XTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRy
aWJ1dGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10YWJs
ZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCBhZTMxYTU4MDVjYTkuLjg4NWQxNjZiZGMy
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJp
YnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS10
YWJsZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dApAQCAtMTEsNyArMTEsNyBAQCBQQVNTOiBjZWxs
Mi5udW1iZXJBdHRyaWJ1dGVWYWx1ZSgnQVhBUklBUm93SW5kZXgnKSA9PT0gOAogUEFTUzogY2Vs
bDQubnVtYmVyQXR0cmlidXRlVmFsdWUoJ0FYQVJJQUNvbHVtbkluZGV4JykgPT09IDMKIFBBU1M6
IGNlbGwyLnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAyfScKIFBBU1M6IGNlbGw1LmNvbHVtbklu
ZGV4UmFuZ2UoKSA9PT0gJ3syLCAzfScKLVBBU1M6IGNlbGwzLnJvd0luZGV4UmFuZ2UoKSA9PT0g
J3sxLCAyfScKK1BBU1M6IGNlbGwzLnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3sxLCAzfScKIFBBU1M6
IGNlbGw2LnJvd0luZGV4UmFuZ2UoKSA9PT0gJ3swLCAyfScKIFBBU1M6IGNlbGw3LnJvd0luZGV4
UmFuZ2UoKSA9PT0gJ3swLCAyfScKIFBBU1M6ICNncmlkIEFYQVJJQVJvd0NvdW50IGR5bmFtaWNh
bGx5IGNoYW5nZWQgdG8gNjAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtdGFibGUtYXR0cmlidXRlcy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9h
cmlhLXRhYmxlLWF0dHJpYnV0ZXMuaHRtbAppbmRleCA2YWNhZGNlZmNjMmEuLjVjMzUyYWIxYjg4
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlLWF0dHJp
YnV0ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtdGFibGUtYXR0
cmlidXRlcy5odG1sCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICA8c3BhbiByb2xlPSJncmlkY2Vs
bCIgYXJpYS1jb2xpbmRleD0iMiIgYXJpYS1yb3dpbmRleD0iOCI+RnJlZDwvc3Bhbj4KICAgICAg
IDxzcGFuIHJvbGU9ImdyaWRjZWxsIiBhcmlhLWNvbGluZGV4PSIzIiBhcmlhLXJvd2luZGV4PSI4
Ij5KYWNrc29uPC9zcGFuPgogICAgICAgPHNwYW4gaWQ9ImNlbGwyIiByb2xlPSJncmlkY2VsbCIg
YXJpYS1jb2xpbmRleD0iNCIgYXJpYS1yb3dpbmRleD0iOCIgYXJpYS1yb3dzcGFuPSIyIj5BY21l
LCBJbmMuPC9zcGFuPgotICAgICAgPHNwYW4gaWQ9ImNlbGwzIiByb2xlPSJncmlkY2VsbCIgYXJp
YS1jb2xpbmRleD0iNSIgYXJpYS1yb3dpbmRleD0iOCIgYXJpYS1yb3dzcGFuPSIwIj4xMjMgQnJv
YWQgU3QuPC9zcGFuPgorICAgICAgPHNwYW4gaWQ9ImNlbGwzIiByb2xlPSJncmlkY2VsbCIgYXJp
YS1jb2xpbmRleD0iNSIgYXJpYS1yb3dpbmRleD0iOCIgYXJpYS1yb3dzcGFuPSIzIj4xMjMgQnJv
YWQgU3QuPC9zcGFuPgogICAgIDwvZGl2PgogICAgIDxkaXYgcm9sZT0icm93IiBhcmlhLXJvd2lu
ZGV4PSI5Ij4KICAgICAgIDxzcGFuIHJvbGU9ImdyaWRjZWxsIiBhcmlhLWNvbGluZGV4PSIyIj5T
YXJhPC9zcGFuPgpAQCAtNDksNyArNDksNyBAQAogPGRpdiBpZD0iZ3JpZDMiIHJvbGU9ImdyaWQi
PgogICA8ZGl2IHJvbGU9InJvdyI+CiAgICAgPHNwYW4gcm9sZT0iZ3JpZGNlbGwiPkNlbGw8L3Nw
YW4+Ci0gICAgPHNwYW4gaWQ9ImNlbGw2IiByb2xlPSJncmlkY2VsbCIgYXJpYS1yb3dzcGFuPSIw
Ij5TcGFuIENlbGw8L3NwYW4+CisgICAgPHNwYW4gaWQ9ImNlbGw2IiByb2xlPSJncmlkY2VsbCIg
YXJpYS1yb3dzcGFuPSIyIj5TcGFuIENlbGw8L3NwYW4+CiAgIDwvZGl2PgogICA8ZGl2IHJvbGU9
InJvdyI+CiAgICAgPHNwYW4gcm9sZT0iZ3JpZGNlbGwiPkNlbGw8L3NwYW4+CkBAIC05MywxMCAr
OTMsMTAgQEAKICAgICAgICAgLy8gYXJpYS1jb2xpbmRleCBmcm9tIHBhcmVudCByb3cKICAgICAg
ICAgdGVzdE91dHB1dCArPSBleHBlY3QoImNlbGw0Lm51bWJlckF0dHJpYnV0ZVZhbHVlKCdBWEFS
SUFDb2x1bW5JbmRleCcpIiwgIjMiKTsKIAotICAgICAgICAvLyBhcmlhLWNvbHNwYW4gYW5kIGFy
aWEtcm93c3BhbiwgaW5jbHVkaW5nIGFyaWEtcm93c3Bhbj0iMCIKKyAgICAgICAgLy8gYXJpYS1j
b2xzcGFuIGFuZCBhcmlhLXJvd3NwYW4KICAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoImNl
bGwyLnJvd0luZGV4UmFuZ2UoKSIsICInezEsIDJ9JyIpOwogICAgICAgICB0ZXN0T3V0cHV0ICs9
IGV4cGVjdCgiY2VsbDUuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MiwgM30nIik7Ci0gICAgICAg
IHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJjZWxsMy5yb3dJbmRleFJhbmdlKCkiLCAiJ3sxLCAyfSci
KTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoImNlbGwzLnJvd0luZGV4UmFuZ2UoKSIs
ICInezEsIDN9JyIpOwogCiAgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJjZWxsNi5yb3dJ
bmRleFJhbmdlKCkiLCAiJ3swLCAyfSciKTsKICAgICAgICAgLy8gdXNlIHJvd3NwYW4gZm9yIG5h
dGl2ZSB0YWJsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20t
ZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9j
dXN0b20tZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQudHh0CmluZGV4IDFlMzZiMThiNTgwMy4uNTc1
OGZiN2ZlMjAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1l
bGVtZW50cy90YWJsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQudHh0CkBAIC0zMCwxMyArMzAsMTMgQEAg
UEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJvdy0y
Iikucm9sZSBpcyAiQVhSb2xlOiBBWFIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLnJvbGUgaXMgIkFYUm9sZTogQVhDZWxsIgogUEFT
UyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1Iiku
bnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQVJvd0luZGV4IikgaXMgOAogUEFTUyBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1IikubnVtYmVyQXR0
cmlidXRlVmFsdWUoIkFYQVJJQUNvbHVtbkluZGV4IikgaXMgMgotUEFTUyBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1Iikucm93SW5kZXhSYW5nZSgp
IGlzICJ7MiwgMX0iCitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgiY2VsbDUiKS5yb3dJbmRleFJhbmdlKCkgaXMgIns0LCAxfSIKIFBBU1MgYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLmNvbHVtbklu
ZGV4UmFuZ2UoKSBpcyAiezAsIDJ9IgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoInJvdy0zIikucm9sZSBpcyAiQVhSb2xlOiBBWFJvdyIKIFBBU1Mg
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLnJv
bGUgaXMgIkFYUm9sZTogQVhDZWxsIgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQVJv
d0luZGV4IikgaXMgOQogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImNlbGw2IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQUNvbHVtbkluZGV4
IikgaXMgMgotUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoImNlbGw2Iikucm93SW5kZXhSYW5nZSgpIGlzICJ7MywgMX0iCitQQVNTIGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5yb3dJbmRleFJhbmdl
KCkgaXMgIns1LCAxfSIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjZWxsNiIpLmNvbHVtbkluZGV4UmFuZ2UoKSBpcyAiezAsIDN9IgogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50cy90YWJsZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUuaHRtbAppbmRleCAwNjc5NmI5NDE4YWYuLmQ1
Yjg1ZDRmYWZmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jdXN0b20t
ZWxlbWVudHMvdGFibGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2N1c3Rv
bS1lbGVtZW50cy90YWJsZS5odG1sCkBAIC0xMTEsMTQgKzExMSwxNCBAQCBlbHNlIHsKICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgiY2VsbDUiKS5yb2xlJywgJ0FYUm9sZTogQVhDZWxsJyk7CiAgICAgc2hvdWxk
QmUoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDUi
KS5udW1iZXJBdHRyaWJ1dGVWYWx1ZSgiQVhBUklBUm93SW5kZXgiKScsICc4Jyk7CiAgICAgc2hv
dWxkQmUoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2Vs
bDUiKS5udW1iZXJBdHRyaWJ1dGVWYWx1ZSgiQVhBUklBQ29sdW1uSW5kZXgiKScsICcyJyk7Ci0g
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoImNlbGw1Iikucm93SW5kZXhSYW5nZSgpJywgJ3syLCAxfScpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJjZWxsNSIpLnJvd0luZGV4UmFuZ2UoKScsICd7NCwgMX0nKTsKICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgiY2VsbDUiKS5jb2x1bW5JbmRleFJhbmdlKCknLCAnezAsIDJ9Jyk7CiAKICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgicm93LTMiKS5yb2xlJywgJ0FYUm9sZTogQVhSb3cnKTsKICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgiY2VsbDYiKS5yb2xlJywgJ0FYUm9sZTogQVhDZWxsJyk7CiAgICAgc2hvdWxkQmUo
J2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5u
dW1iZXJBdHRyaWJ1dGVWYWx1ZSgiQVhBUklBUm93SW5kZXgiKScsICc5Jyk7CiAgICAgc2hvdWxk
QmUoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYi
KS5udW1iZXJBdHRyaWJ1dGVWYWx1ZSgiQVhBUklBQ29sdW1uSW5kZXgiKScsICcyJyk7Ci0gICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoImNlbGw2Iikucm93SW5kZXhSYW5nZSgpJywgJ3szLCAxfScpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjZWxsNiIpLnJvd0luZGV4UmFuZ2UoKScsICd7NSwgMX0nKTsKICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgiY2VsbDYiKS5jb2x1bW5JbmRleFJhbmdlKCknLCAnezAsIDN9Jyk7CiAKIH0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZGlzcGxheS1jb250ZW50cy90YWJs
ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Rpc3BsYXktY29udGVu
dHMvdGFibGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uY2NhN2QwMDUzMDg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9kaXNwbGF5LWNvbnRlbnRzL3RhYmxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDg4
IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGEgdGFibGUgd2l0aCBkaXNwbGF5OmNvbnRlbnRz
IGNvbXBvbmVudHMgaXMgYWNjZXNzaWJsZS4KKworUEFTUzogdGFibGUucm93Q291bnQgPT09IDQK
K1BBU1M6IHRhYmxlLmNvbHVtbkNvdW50ID09PSAzCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1u
QW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIgPT09ICJyMGMwIgorUEFTUzogdGFibGUuY2VsbEZv
ckNvbHVtbkFuZFJvdygxLCAwKS5kb21JZGVudGlmaWVyID09PSAicjBjMSIKK1BBU1M6IHRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCkuZG9tSWRlbnRpZmllciA9PT0gInIwYzIiCitQQVNT
OiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDEpLmRvbUlkZW50aWZpZXIgPT09ICJyMWMw
IgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygxLCAxKS5kb21JZGVudGlmaWVyID09
PSAicjFjMSIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMSkuZG9tSWRlbnRp
ZmllciA9PT0gInIxYzIiCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDIpLmRv
bUlkZW50aWZpZXIgPT09ICJyMmMwIgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygx
LCAyKS5kb21JZGVudGlmaWVyID09PSAicjJjMSIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5B
bmRSb3coMiwgMikuZG9tSWRlbnRpZmllciA9PT0gInIyYzIiCitQQVNTOiB0YWJsZS5jZWxsRm9y
Q29sdW1uQW5kUm93KDAsIDMpLmRvbUlkZW50aWZpZXIgPT09ICJyM2MwIgorUEFTUzogdGFibGUu
Y2VsbEZvckNvbHVtbkFuZFJvdygxLCAzKS5kb21JZGVudGlmaWVyID09PSAicjNjMSIKK1BBU1M6
IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMykuZG9tSWRlbnRpZmllciA9PT0gInIzYzIi
CisKK1BlcmZvcm1pbmcgc2VhcmNoIHRyYXZlcnNhbCBvZiBib2R5LgorCit7I3RhYmxlIEFYUm9s
ZTogQVhUYWJsZX0gKHBhcmVudDogeyNib2R5IEFYUm9sZTogQVhHcm91cH0pCisKK3sjcjAgQVhS
b2xlOiBBWFJvd30gKHBhcmVudDogeyN0YWJsZSBBWFJvbGU6IEFYVGFibGV9KQorCit7I3IwYzAg
QVhSb2xlOiBBWENlbGx9IChwYXJlbnQ6IHsjcjAgQVhSb2xlOiBBWFJvd30pCisKK3tBWFJvbGU6
IEFYU3RhdGljVGV4dCBBWFZhbHVlOiBBdXRob3J9IChwYXJlbnQ6IHsjcjBjMCBBWFJvbGU6IEFY
Q2VsbH0pCisKK3sjcjBjMSBBWFJvbGU6IEFYQ2VsbH0gKHBhcmVudDogeyNyMCBBWFJvbGU6IEFY
Um93fSkKKwore0FYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IFRpdGxlfSAocGFyZW50OiB7
I3IwYzEgQVhSb2xlOiBBWENlbGx9KQorCit7I3IwYzIgQVhSb2xlOiBBWENlbGx9IChwYXJlbnQ6
IHsjcjAgQVhSb2xlOiBBWFJvd30pCisKK3tBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiBZ
ZWFyfSAocGFyZW50OiB7I3IwYzIgQVhSb2xlOiBBWENlbGx9KQorCit7I3IxIEFYUm9sZTogQVhS
b3d9IChwYXJlbnQ6IHsjdGFibGUgQVhSb2xlOiBBWFRhYmxlfSkKKworeyNyMWMwIEFYUm9sZTog
QVhDZWxsfSAocGFyZW50OiB7I3IxIEFYUm9sZTogQVhSb3d9KQorCit7QVhSb2xlOiBBWFN0YXRp
Y1RleHQgQVhWYWx1ZTogU3RlcGhlbiBIYXdraW5nfSAocGFyZW50OiB7I3IxYzAgQVhSb2xlOiBB
WENlbGx9KQorCit7I3IxYzEgQVhSb2xlOiBBWENlbGx9IChwYXJlbnQ6IHsjcjEgQVhSb2xlOiBB
WFJvd30pCisKK3tBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiBBIEJyaWVmIEhpc3Rvcnkg
b2YgVGltZX0gKHBhcmVudDogeyNyMWMxIEFYUm9sZTogQVhDZWxsfSkKKworeyNyMWMyIEFYUm9s
ZTogQVhDZWxsfSAocGFyZW50OiB7I3IxIEFYUm9sZTogQVhSb3d9KQorCit7QVhSb2xlOiBBWFN0
YXRpY1RleHQgQVhWYWx1ZTogMTk4OH0gKHBhcmVudDogeyNyMWMyIEFYUm9sZTogQVhDZWxsfSkK
KworeyNyMiBBWFJvbGU6IEFYUm93fSAocGFyZW50OiB7I3RhYmxlIEFYUm9sZTogQVhUYWJsZX0p
CisKK3sjcjJjMCBBWFJvbGU6IEFYQ2VsbH0gKHBhcmVudDogeyNyMiBBWFJvbGU6IEFYUm93fSkK
Kwore0FYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IENhcmwgU2FnYW59IChwYXJlbnQ6IHsj
cjJjMCBBWFJvbGU6IEFYQ2VsbH0pCisKK3sjcjJjMSBBWFJvbGU6IEFYQ2VsbH0gKHBhcmVudDog
eyNyMiBBWFJvbGU6IEFYUm93fSkKKwore0FYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IENv
c21vc30gKHBhcmVudDogeyNyMmMxIEFYUm9sZTogQVhDZWxsfSkKKworeyNyMmMyIEFYUm9sZTog
QVhDZWxsfSAocGFyZW50OiB7I3IyIEFYUm9sZTogQVhSb3d9KQorCit7QVhSb2xlOiBBWFN0YXRp
Y1RleHQgQVhWYWx1ZTogMTk4MH0gKHBhcmVudDogeyNyMmMyIEFYUm9sZTogQVhDZWxsfSkKKwor
eyNyMyBBWFJvbGU6IEFYUm93fSAocGFyZW50OiB7I3RhYmxlIEFYUm9sZTogQVhUYWJsZX0pCisK
K3sjcjNjMCBBWFJvbGU6IEFYQ2VsbH0gKHBhcmVudDogeyNyMyBBWFJvbGU6IEFYUm93fSkKKwor
e0FYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IFdpbGwgR2F0ZXJ9IChwYXJlbnQ6IHsjcjNj
MCBBWFJvbGU6IEFYQ2VsbH0pCisKK3sjcjNjMSBBWFJvbGU6IEFYQ2VsbH0gKHBhcmVudDogeyNy
MyBBWFJvbGU6IEFYUm93fSkKKwore0FYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6IFRoZSBN
eXN0ZXJpZXMgb2YgdGhlIFVuaXZlcnNlfSAocGFyZW50OiB7I3IzYzEgQVhSb2xlOiBBWENlbGx9
KQorCit7I3IzYzIgQVhSb2xlOiBBWENlbGx9IChwYXJlbnQ6IHsjcjMgQVhSb2xlOiBBWFJvd30p
CisKK3tBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiAyMDIwfSAocGFyZW50OiB7I3IzYzIg
QVhSb2xlOiBBWENlbGx9KQorCit7QVhSb2xlOiBBWFRhYmxlfSAocGFyZW50OiB7I2JvZHkgQVhS
b2xlOiBBWEdyb3VwfSkKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCitUaGlzIGlzIGEgdGFibGUgY2FwdGlvbgorQXV0aG9yIFRpdGxlIFllYXIKK1N0
ZXBoZW4gSGF3a2luZyBBIEJyaWVmIEhpc3Rvcnkgb2YgVGltZSAxOTg4CitDYXJsIFNhZ2FuIENv
c21vcyAxOTgwCitXaWxsIEdhdGVyIFRoZSBNeXN0ZXJpZXMgb2YgdGhlIFVuaXZlcnNlIDIwMjAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9kaXNwbGF5LWNvbnRlbnRz
L3RhYmxlLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Rpc3BsYXktY29udGVudHMv
dGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI4MWQy
ZDIxNmU1YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZGlz
cGxheS1jb250ZW50cy90YWJsZS5odG1sCkBAIC0wLDAgKzEsODIgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3R5
bGU+Cit0YWJsZSwgdHIsIHRkLCB0aCB7CisgIGRpc3BsYXk6IGNvbnRlbnRzOworfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5IHJvbGU9Imdyb3VwIiBpZD0iYm9keSI+CisKKzx0YWJsZSBpZD0i
dGFibGUiPgorPGNhcHRpb24+VGhpcyBpcyBhIHRhYmxlIGNhcHRpb248L2NhcHRpb24+Cis8dGhl
YWQ+CisgICAgPHRyIGlkPSJyMCI+CisgICAgICAgIDx0aCBpZD0icjBjMCI+QXV0aG9yPC90aD4K
KyAgICAgICAgPHRoIGlkPSJyMGMxIj5UaXRsZTwvdGg+CisgICAgICAgIDx0aCBpZD0icjBjMiI+
WWVhcjwvdGg+CisgICAgPC90cj4KKzwvdGhlYWQ+Cis8dGJvZHk+CisgICAgPHRyIGlkPSJyMSI+
CisgICAgICAgIDx0ZCBpZD0icjFjMCI+U3RlcGhlbiBIYXdraW5nPC90ZD4KKyAgICAgICAgPHRk
IGlkPSJyMWMxIj5BIEJyaWVmIEhpc3Rvcnkgb2YgVGltZTwvdGQ+CisgICAgICAgIDx0ZCBpZD0i
cjFjMiI+MTk4ODwvdGQ+CisgICAgPC90cj4KKyAgICA8dHIgaWQ9InIyIj4KKyAgICAgICAgPHRk
IGlkPSJyMmMwIj5DYXJsIFNhZ2FuPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyMmMxIj5Db3Ntb3M8
L3RkPgorICAgICAgICA8dGQgaWQ9InIyYzIiPjE5ODA8L3RkPgorICAgIDwvdHI+CisgICAgPHRy
IGlkPSJyMyI+CisgICAgICAgIDx0ZCBpZD0icjNjMCI+V2lsbCBHYXRlcjwvdGQ+CisgICAgICAg
IDx0ZCBpZD0icjNjMSI+VGhlIE15c3RlcmllcyBvZiB0aGUgVW5pdmVyc2U8L3RkPgorICAgICAg
ICA8dGQgaWQ9InIzYzIiPjIwMjA8L3RkPgorICAgIDwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT4K
KworPHNjcmlwdD4KK3ZhciBvdXRwdXQgPSAiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhIHRhYmxl
IHdpdGggZGlzcGxheTpjb250ZW50cyBjb21wb25lbnRzIGlzIGFjY2Vzc2libGUuXG5cbiI7CisK
K2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB2YXIgdGFibGUgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIik7Cisg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUucm93Q291bnQiLCAiNCIpOworICAgIG91dHB1dCAr
PSBleHBlY3QoInRhYmxlLmNvbHVtbkNvdW50IiwgIjMiKTsKKworICAgIGZvciAobGV0IHJvdyA9
IDA7IHJvdyA8IDQ7IHJvdysrKSB7CisgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVt
biA8IDM7IGNvbHVtbisrKQorICAgICAgICAgICAgb3V0cHV0ICs9IGV4cGVjdChgdGFibGUuY2Vs
bEZvckNvbHVtbkFuZFJvdygke2NvbHVtbn0sICR7cm93fSkuZG9tSWRlbnRpZmllcmAsIGAiciR7
cm93fWMke2NvbHVtbn0iYCk7CisgICAgfQorCisgICAgb3V0cHV0ICs9IGBcblBlcmZvcm1pbmcg
c2VhcmNoIHRyYXZlcnNhbCBvZiBib2R5LlxuYDsKKyAgICBmdW5jdGlvbiBlbGVtZW50RGVzY3Jp
cHRpb24oYXhFbGVtZW50KSB7CisgICAgICAgIGlmICghYXhFbGVtZW50KQorICAgICAgICAgICAg
cmV0dXJuICJudWxsIjsKKworICAgICAgICBjb25zdCByb2xlID0gYXhFbGVtZW50LnJvbGU7Cisg
ICAgICAgIGNvbnN0IGlkID0gYXhFbGVtZW50LmRvbUlkZW50aWZpZXI7CisgICAgICAgIGxldCBy
ZXN1bHQgPSBgJHtpZCA/IGAjJHtpZH0gYCA6ICIifSR7cm9sZX1gOworICAgICAgICBpZiAocm9s
ZS5pbmNsdWRlcygiU3RhdGljVGV4dCIpKQorICAgICAgICAgICAgcmVzdWx0ICs9IGAgJHthY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5wbGF0Zm9ybU5hbWUgPT09ICJpb3MiID8gYXhFbGVtZW50LmRl
c2NyaXB0aW9uIDogYXhFbGVtZW50LnN0cmluZ1ZhbHVlfWA7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCisgICAgY29uc3QgY29udGFpbmVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJib2R5Iik7CisgICAgbGV0IHNlYXJjaFJlc3VsdCA9
IG51bGw7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgc2VhcmNoUmVzdWx0ID0gY29udGFp
bmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzZWFyY2hSZXN1bHQsIHRydWUsICJBWEFu
eVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOworICAgICAgICBpZiAoIXNlYXJjaFJlc3VsdCkK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjb25zdCBwYXJlbnRPdXRwdXQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5wbGF0Zm9ybU5hbWUgPT09ICJpb3MiID8gIiIgOiBgIChwYXJlbnQ6
IHske2VsZW1lbnREZXNjcmlwdGlvbihzZWFyY2hSZXN1bHQucGFyZW50RWxlbWVudCgpKX19KWA7
CisgICAgICAgIG91dHB1dCArPSBgXG57JHtlbGVtZW50RGVzY3JpcHRpb24oc2VhcmNoUmVzdWx0
KX19JHtwYXJlbnRPdXRwdXR9XG5gOworICAgIH0KKyAgICBkZWJ1ZyhvdXRwdXQpOworfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmUzOGZlYzk3M2MyMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xzcGFuLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDIyIEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSAnY2VsbCBmb3IgY29sdW1u
IGFuZCByb3cnIEFQSSB3b3JrcyBjb3JyZWN0bHkgYWZ0ZXIgZHluYW1pYyBjb2xzcGFuIGNoYW5n
ZXMuCisKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkuZG9tSWRlbnRpZmll
ciA9PT0gJ3IwYzAnCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDEsIDApLmRvbUlk
ZW50aWZpZXIgPT09ICdyMGMxJworUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAw
KSA9PT0gbnVsbCA9PT0gdHJ1ZQorUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpID09PSAnezEsIDF9Jwor
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCAn
MicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApLmRvbUlkZW50aWZpZXIg
PT09ICdyMGMxJworUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpID09PSAnezEsIDJ9JworZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5yZW1vdmVBdHRyaWJ1dGUoJ2NvbHNwYW4nKQorUEFTUzog
dGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKSA9PT0gbnVsbCA9PT0gdHJ1ZQorUEFTUzog
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMGMxJykuY29s
dW1uSW5kZXhSYW5nZSgpID09PSAnezEsIDF9JworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Iw
YzEnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29sc3BhbicsICcyJykKK1BBU1M6IHRhYmxlLmNlbGxG
b3JDb2x1bW5BbmRSb3coMiwgMCkuZG9tSWRlbnRpZmllciA9PT0gJ3IwYzEnCitQQVNTOiBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5J
bmRleFJhbmdlKCkgPT09ICd7MSwgMn0nCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorSGVhZGVyIDAJSGVhZGVyIDEKK1IxQzAJUjFDMQlSMUMyCitS
MkMwCVIyQzEJUjJDMgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9keW5h
bWljLWNvbHNwYW4uaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZHluYW1pYy1jb2xz
cGFuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43N2E0YTI4
NzBkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFt
aWMtY29sc3Bhbi5odG1sCkBAIC0wLDAgKzEsNjkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cit0ZCwgdGggewor
ICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorCis8dGFibGUgaWQ9InRhYmxlIj4KKzx0aGVhZCBpZD0idGhlYWQiPgorICAgIDx0ciBpZD0i
cjAiPgorICAgICAgICA8dGggaWQ9InIwYzAiPkhlYWRlciAwPC90aD4KKyAgICAgICAgPHRoIGlk
PSJyMGMxIj5IZWFkZXIgMTwvdGg+CisgICAgPC90cj4KKzwvdGhlYWQ+Cis8dGJvZHkgaWQ9InRi
b2R5Ij4KKyAgICA8dHIgaWQ9InIxIj4KKyAgICAgICAgPHRkIGlkPSJyMWMwIj5SMUMwPC90ZD4K
KyAgICAgICAgPHRkIGlkPSJyMWMxIj5SMUMxPC90ZD4KKyAgICAgICAgPHRkIGlkPSJyMWMyIj5S
MUMyPC90ZD4KKyAgICA8L3RyPgorICAgIDx0ciBpZD0icjIiPgorICAgICAgICA8dGQgaWQ9InIy
YzAiPlIyQzA8L3RkPgorICAgICAgICA8dGQgaWQ9InIyYzEiPlIyQzE8L3RkPgorICAgICAgICA8
dGQgaWQ9InIyYzEiPlIyQzI8L3RkPgorICAgIDwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT4KKwor
PHNjcmlwdD4KK3ZhciBvdXRwdXQgPSAiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUgJ2NlbGwg
Zm9yIGNvbHVtbiBhbmQgcm93JyBBUEkgd29ya3MgY29ycmVjdGx5IGFmdGVyIGR5bmFtaWMgY29s
c3BhbiBjaGFuZ2VzLlxuXG4iOworCitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgdmFyIHRhYmxlID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsZSIpOwor
ICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkuZG9t
SWRlbnRpZmllciIsICIncjBjMCciKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxs
Rm9yQ29sdW1uQW5kUm93KDEsIDApLmRvbUlkZW50aWZpZXIiLCAiJ3IwYzEnIik7CisgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKSA9PT0gbnVsbCIs
ICJ0cnVlIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMGMxJykuY29sdW1uSW5kZXhSYW5nZSgpIiwgIid7MSwg
MX0nIik7CisKKyAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3IwYzEnKS5zZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nLCAnMicpIik7CisgICAgc2V0VGlt
ZW91dChhc3luYyBmdW5jdGlvbigpIHsKKyAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiB0YWJs
ZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApICE9PSBudWxsKTsKKyAgICAgICAgb3V0cHV0ICs9
IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKS5kb21JZGVudGlmaWVyIiwg
IidyMGMxJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5JbmRleFJhbmdlKCkiLCAi
J3sxLCAyfSciKTsKKworICAgICAgICBvdXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5yZW1vdmVBdHRyaWJ1dGUoJ2NvbHNwYW4nKSIpOworICAg
ICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLmNlbGxGb3JDb2x1bW5BbmRS
b3coMiwgMCkgPT09IG51bGwiLCAidHJ1ZSIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1
bW5JbmRleFJhbmdlKCkiLCAiJ3sxLCAxfSciKTsKKworICAgICAgICBvdXRwdXQgKz0gZXZhbEFu
ZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IwYzEnKS5zZXRBdHRyaWJ1dGUoJ2Fy
aWEtY29sc3BhbicsICcyJykiKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiB0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApICE9PSBudWxsKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAwKS5kb21JZGVudGlmaWVyIiwgIidy
MGMxJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IwYzEnKS5jb2x1bW5JbmRleFJhbmdlKCkiLCAiJ3sx
LCAyfSciKTsKKworICAgICAgICBkZWJ1ZyhvdXRwdXQpOworICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICB9LCAwKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zMWI1MzNlYjdmMjcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93
c3Bhbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhh
dCB0aGUgJ2NlbGwgZm9yIGNvbHVtbiBhbmQgcm93JyBBUEkgd29ya3MgY29ycmVjdGx5IGFmdGVy
IGR5bmFtaWMgcm93c3BhbiBjaGFuZ2VzLgorCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5k
Um93KDAsIDApLmRvbUlkZW50aWZpZXIgPT09ICdyMGMwJworUEFTUzogdGFibGUuY2VsbEZvckNv
bHVtbkFuZFJvdygyLCAyKSA9PT0gbnVsbCA9PT0gdHJ1ZQorUEFTUzogYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpID09
PSAnezEsIDF9JworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IxYzInKS5zZXRBdHRyaWJ1dGUo
J3Jvd3NwYW4nLCAnMicpCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpLmRv
bUlkZW50aWZpZXIgPT09ICdyMWMyJworUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpID09PSAnezEsIDJ9Jwor
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IxYzInKS5yZW1vdmVBdHRyaWJ1dGUoJ3Jvd3NwYW4n
KQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAyKSA9PT0gbnVsbCA9PT0gdHJ1
ZQorUEFTUzogYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdy
MWMyJykucm93SW5kZXhSYW5nZSgpID09PSAnezEsIDF9JworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3IxYzInKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtcm93c3BhbicsICcyJykKK1BBU1M6IHRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikuZG9tSWRlbnRpZmllciA9PT0gJ3IxYzInCitQQVNT
OiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoJ3IxYzInKS5y
b3dJbmRleFJhbmdlKCkgPT09ICd7MSwgMn0nCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorSGVhZGVyIDAJSGVhZGVyIDEJSGVhZGVyIDIKK1IxQzAJ
UjFDMQlSMUMyCitSMkMwCVIyQzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvZHluYW1pYy1yb3dzcGFuLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFt
aWMtcm93c3Bhbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
ZTA5OTMxNWE4YjdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9keW5hbWljLXJvd3NwYW4uaHRtbApAQCAtMCwwICsxLDY4IEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHN0eWxlPgordGQs
IHRoIHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKworPHRhYmxlIGlkPSJ0YWJsZSI+Cis8dGhlYWQgaWQ9InRoZWFkIj4KKyAgICA8
dHIgaWQ9InIwIj4KKyAgICAgICAgPHRoIGlkPSJyMGMwIj5IZWFkZXIgMDwvdGg+CisgICAgICAg
IDx0aCBpZD0icjBjMSI+SGVhZGVyIDE8L3RoPgorICAgICAgICA8dGggaWQ9InIwYzIiPkhlYWRl
ciAyPC90aD4KKyAgICA8L3RyPgorPC90aGVhZD4KKzx0Ym9keSBpZD0idGJvZHkiPgorICAgIDx0
ciBpZD0icjEiPgorICAgICAgICA8dGQgaWQ9InIxYzAiPlIxQzA8L3RkPgorICAgICAgICA8dGQg
aWQ9InIxYzEiPlIxQzE8L3RkPgorICAgICAgICA8dGQgaWQ9InIxYzIiPlIxQzI8L3RkPgorICAg
IDwvdHI+CisgICAgPHRyIGlkPSJyMiI+CisgICAgICAgIDx0ZCBpZD0icjJjMCI+UjJDMDwvdGQ+
CisgICAgICAgIDx0ZCBpZD0icjJjMSI+UjJDMTwvdGQ+CisgICAgPC90cj4KKzwvdGJvZHk+Cis8
L3RhYmxlPgorCis8c2NyaXB0PgordmFyIG91dHB1dCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0
IHRoZSAnY2VsbCBmb3IgY29sdW1uIGFuZCByb3cnIEFQSSB3b3JrcyBjb3JyZWN0bHkgYWZ0ZXIg
ZHluYW1pYyByb3dzcGFuIGNoYW5nZXMuXG5cbiI7CisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICB2
YXIgdGFibGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
InRhYmxlIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJv
dygwLCAwKS5kb21JZGVudGlmaWVyIiwgIidyMGMwJyIpOworICAgIG91dHB1dCArPSBleHBlY3Qo
InRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikgPT09IG51bGwiLCAidHJ1ZSIpOworICAg
IG91dHB1dCArPSBleHBlY3QoImFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgncjFjMicpLnJvd0luZGV4UmFuZ2UoKSIsICInezEsIDF9JyIpOworCisgICAgb3V0
cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMWMyJykuc2V0
QXR0cmlidXRlKCdyb3dzcGFuJywgJzInKSIpOworICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rp
b24oKSB7CisgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gdGFibGUuY2VsbEZvckNvbHVtbkFu
ZFJvdygyLCAyKSAhPT0gbnVsbCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNl
bGxGb3JDb2x1bW5BbmRSb3coMiwgMikuZG9tSWRlbnRpZmllciIsICIncjFjMiciKTsKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpIiwgIid7MSwgMn0nIik7CisKKyAgICAg
ICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMWMy
JykucmVtb3ZlQXR0cmlidXRlKCdyb3dzcGFuJykiKTsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0
IGV4cGVjdEFzeW5jKCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpID09PSBudWxsIiwg
InRydWUiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyMWMyJykucm93SW5kZXhSYW5nZSgpIiwgIid7MSwg
MX0nIik7CisKKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdyMWMyJykuc2V0QXR0cmlidXRlKCdhcmlhLXJvd3NwYW4nLCAnMicpIik7Cisg
ICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCAy
KSAhPT0gbnVsbCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxGb3JDb2x1
bW5BbmRSb3coMiwgMikuZG9tSWRlbnRpZmllciIsICIncjFjMiciKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgiYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCdyMWMyJykucm93SW5kZXhSYW5nZSgpIiwgIid7MSwgMn0nIik7CisKKyAgICAgICAgZGVidWco
b3V0cHV0KTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfSwgMCk7Cit9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hZjA0NTQxMGQyYzEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVz
Y2VuZGFudHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1RoaXMgdGVzdCBlbnN1cmVz
IHRoYXQgdGhlICdjZWxsIGZvciBjb2x1bW4gYW5kIHJvdycgQVBJIHdvcmtzIGNvcnJlY3RseSBh
ZnRlciBkeW5hbWljIERPTSBjaGlsZCBjaGFuZ2VzLgorCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29s
dW1uQW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIgPT09ICdyMGMwJworUEFTUzogdGFibGUucm93
Q291bnQgPT09IDMKK1BBU1M6IHRhYmxlLmNvbHVtbkNvdW50ID09PSAyCitQQVNTOiB0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMpID09PSBudWxsID09PSB0cnVlCitkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGJvZHknKS5hcHBlbmRDaGlsZChjcmVhdGVGb3VydGhSb3coKSkKK1BBU1M6
IHRhYmxlLnJvd0NvdW50ID09PSA0CitQQVNTOiB0YWJsZS5jb2x1bW5Db3VudCA9PT0gMworUEFT
UzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKS5kb21JZGVudGlmaWVyID09PSAncjNj
MCcKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMycpLmFwcGVuZENoaWxkKGR5bmFtaWNDZWxs
KQorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCAzKS5kb21JZGVudGlmaWVyID09
PSAnZHluYW1pYy1jZWxsJworUEFTUzogdGFibGUuY29sdW1uQ291bnQgPT09IDQKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkeW5hbWljLWNlbGwnKS5yZW1vdmUoKQorUEFTUzogdGFibGUuY2Vs
bEZvckNvbHVtbkFuZFJvdygyLCA0KSA9PT0gbnVsbCA9PT0gdHJ1ZQorUEFTUzogdGFibGUuY29s
dW1uQ291bnQgPT09IDMKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyMycpLnJlbW92ZSgpCitQ
QVNTOiB0YWJsZS5yb3dDb3VudCA9PT0gMworUEFTUzogdGFibGUuY29sdW1uQ291bnQgPT09IDIK
K1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykgPT09IG51bGwgPT09IHRydWUK
K25ld1Rib2R5LmFwcGVuZENoaWxkKGNyZWF0ZUZvdXJ0aFJvdygpKQorZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3RhYmxlJykuYXBwZW5kQ2hpbGQobmV3VGJvZHkpCitQQVNTOiB0YWJsZS5yb3dD
b3VudCA9PT0gNAorUEFTUzogdGFibGUuY29sdW1uQ291bnQgPT09IDMKK1BBU1M6IHRhYmxlLmNl
bGxGb3JDb2x1bW5BbmRSb3coMCwgMykuZG9tSWRlbnRpZmllciA9PT0gJ3IzYzAnCisKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSGVhZGVyIDAJSGVh
ZGVyIDEKK1IxQzAJUjFDMQorUjJDMAlSMkMxCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvZHluYW1pYy10YWJsZS1kZXNjZW5kYW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9keW5hbWljLXRhYmxlLWRlc2NlbmRhbnRzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jZWE0YmU3OTVlNmQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVzY2VuZGFudHMu
aHRtbApAQCAtMCwwICsxLDEwNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
YWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KK3RkLCB0aCB7CisgICAgYm9yZGVy
OiAxcHggc29saWQgYmxhY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzx0YWJs
ZSBpZD0idGFibGUiPgorPHRoZWFkIGlkPSJ0aGVhZCI+CisgICAgPHRyIGlkPSJyMCI+CisgICAg
ICAgIDx0aCBpZD0icjBjMCI+SGVhZGVyIDA8L3RoPgorICAgICAgICA8dGggaWQ9InIwYzEiPkhl
YWRlciAxPC90aD4KKyAgICA8L3RyPgorPC90aGVhZD4KKzx0Ym9keSBpZD0idGJvZHkiPgorICAg
IDx0ciBpZD0icjEiPgorICAgICAgICA8dGQgaWQ9InIxYzAiPlIxQzA8L3RkPgorICAgICAgICA8
dGQgaWQ9InIxYzEiPlIxQzE8L3RkPgorICAgIDwvdHI+CisgICAgPHRyIGlkPSJyMiI+CisgICAg
ICAgIDx0ZCBpZD0icjJjMCI+UjJDMDwvdGQ+CisgICAgICAgIDx0ZCBpZD0icjJjMSI+UjJDMTwv
dGQ+CisgICAgPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPgorCis8c2NyaXB0PgordmFyIG91dHB1
dCA9ICJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSAnY2VsbCBmb3IgY29sdW1uIGFuZCByb3cn
IEFQSSB3b3JrcyBjb3JyZWN0bHkgYWZ0ZXIgZHluYW1pYyBET00gY2hpbGQgY2hhbmdlcy5cblxu
IjsKKworZnVuY3Rpb24gY3JlYXRlRm91cnRoUm93KCkgeworICAgIGNvbnN0IHRyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgidHIiKTsKKyAgICB0ci5pZCA9ICJyMyI7CisKKyAgICBjb25zdCBj
ZWxsT25lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICBjZWxsT25lLmlkID0g
InIzYzAiOworICAgIGNvbnN0IGNlbGxUd28gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIp
OworICAgIGNlbGxUd28uaWQgPSAicjNjMSI7CisgICAgY29uc3QgY2VsbFRocmVlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICBjZWxsVHdvLmlkID0gInIzYzIiOworCisgICAg
dHIuYXBwZW5kQ2hpbGQoY2VsbE9uZSk7CisgICAgdHIuYXBwZW5kQ2hpbGQoY2VsbFR3byk7Cisg
ICAgdHIuYXBwZW5kQ2hpbGQoY2VsbFRocmVlKTsKKyAgICByZXR1cm4gdHI7Cit9CisKK2lmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICB2YXIgbmV3VGJvZHkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
Ym9keSIpOworICAgIHZhciBkeW5hbWljQ2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRk
Iik7CisgICAgZHluYW1pY0NlbGwuaWQgPSAiZHluYW1pYy1jZWxsIjsKKworICAgIHZhciB0YWJs
ZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGFibGUi
KTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDAp
LmRvbUlkZW50aWZpZXIiLCAiJ3IwYzAnIik7CisgICAgb3V0cHV0ICs9IGV4cGVjdCgidGFibGUu
cm93Q291bnQiLCAiMyIpOworICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNvbHVtbkNvdW50
IiwgIjIiKTsKKyAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93
KDAsIDMpID09PSBudWxsIiwgInRydWUiKTsKKworICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJu
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGJvZHknKS5hcHBlbmRDaGlsZChjcmVhdGVGb3Vy
dGhSb3coKSkiKTsKKyAgICBzZXRUaW1lb3V0KGFzeW5jIGZ1bmN0aW9uKCkgeworICAgICAgICBv
dXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLnJvd0NvdW50IiwgIjQiKTsKKyAgICAg
ICAgLy8gVGhlIGZvdXJ0aCByb3cgaGFzIHRocmVlIGNlbGxzIGluIGl0ICh2cy4gdGhlIHR3byBj
ZWxscyBpbiBldmVyeSBvdGhlciByb3cpLgorICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0
QXN5bmMoInRhYmxlLmNvbHVtbkNvdW50IiwgIjMiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVj
dCgidGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKS5kb21JZGVudGlmaWVyIiwgIidyM2Mw
JyIpOworCisgICAgICAgIC8vIE5vdyBhcHBlbmQgYSBjZWxsIHRvIGEgcm93LgorICAgICAgICBv
dXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3IzJykuYXBw
ZW5kQ2hpbGQoZHluYW1pY0NlbGwpIik7CisgICAgICAgIGF3YWl0IHdhaXRGb3IoKCkgPT4gdGFi
bGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCAzKSk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
InRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMywgMykuZG9tSWRlbnRpZmllciIsICInZHluYW1p
Yy1jZWxsJyIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLmNv
bHVtbkNvdW50IiwgIjQiKTsKKworICAgICAgICAvLyBBbmQgcmVtb3ZlIGl0LgorICAgICAgICBv
dXRwdXQgKz0gZXZhbEFuZFJldHVybigiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R5bmFtaWMt
Y2VsbCcpLnJlbW92ZSgpIik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygi
dGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygyLCA0KSA9PT0gbnVsbCIsICJ0cnVlIik7CisgICAg
ICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygidGFibGUuY29sdW1uQ291bnQiLCAiMyIp
OworCisgICAgICAgIC8vIFJlbW92ZSB0aGUgZHluYW1pY2FsbHkgYWRkZWQgZm91cnRoIHJvdy4K
KyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRSZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyMycpLnJlbW92ZSgpIik7CisgICAgICAgIG91dHB1dCArPSBhd2FpdCBleHBlY3RBc3luYygi
dGFibGUucm93Q291bnQiLCAiMyIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5
bmMoInRhYmxlLmNvbHVtbkNvdW50IiwgIjIiKTsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0IGV4
cGVjdEFzeW5jKCJ0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMpID09PSBudWxsIiwgInRy
dWUiKTsKKworICAgICAgICAvLyBUaGVuIGFkZCB0aGUgZm91cnRoIHJvdyBiYWNrIHRvIHRoZSBu
ZXcgdGJvZHkuCisgICAgICAgIG91dHB1dCArPSBldmFsQW5kUmV0dXJuKCJuZXdUYm9keS5hcHBl
bmRDaGlsZChjcmVhdGVGb3VydGhSb3coKSkiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV2YWxBbmRS
ZXR1cm4oImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWJsZScpLmFwcGVuZENoaWxkKG5ld1Ri
b2R5KSIpOworICAgICAgICBvdXRwdXQgKz0gYXdhaXQgZXhwZWN0QXN5bmMoInRhYmxlLnJvd0Nv
dW50IiwgIjQiKTsKKyAgICAgICAgb3V0cHV0ICs9IGF3YWl0IGV4cGVjdEFzeW5jKCJ0YWJsZS5j
b2x1bW5Db3VudCIsICIzIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRhYmxlLmNlbGxG
b3JDb2x1bW5BbmRSb3coMCwgMykuZG9tSWRlbnRpZmllciIsICIncjNjMCciKTsKKworICAgICAg
ICBkZWJ1ZyhvdXRwdXQpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9LCAwKTsKK30K
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24tZXhwZWN0ZWQudHh0CmluZGV4IDRkZjQ1MDZjMGRh
MC4uODEyNmM1ZTM4YzRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xp
c3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtNTYsNyArNTYsNyBAQCBQQVNTIGF4RWxl
bWVudC5yb2xlID09ICdBWFJvbGU6IEFYTGlzdCcgaXMgdHJ1ZQogCiAKIElubGluZSBsaXN0IGVs
ZW1lbnRzIHdpdGggYW4gYXJpYSByb2xlIHNob3VsZCBiZSBhIGxpc3QKLVBBU1MgYXhFbGVtZW50
LnJvbGUgPT0gJ0FYUm9sZTogQVhMaXN0JyBpcyB0cnVlCitQQVNTIGF4RWxlbWVudC5yb2xlID09
ICdBWFJvbGU6IEFYTGlzdCcgaXMgZmFsc2UKIAogCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLmh0bWwK
aW5kZXggMjAwYmU1OTY0N2M2Li4zZjFlMDAxNTBmM2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbGlzdC1kZXRlY3Rpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLmh0bWwKQEAgLTYzLDcgKzYzLDcgQEAKIDxkaXY+aXRl
bTwvZGl2PgogPC91bD4KIAotPHVsIGlkPSJsaXN0MTQiIHJvbGU9Imxpc3QiIHRlc3QtZGVzY3Jp
cHRpb249IklubGluZSBsaXN0IGVsZW1lbnRzIHdpdGggYW4gYXJpYSByb2xlIHNob3VsZCBiZSBh
IGxpc3QiIGlzLWxpc3Q9InRydWUiIHN0eWxlPSJkaXNwbGF5OiB0YWJsZTsiPgorPHVsIGlkPSJs
aXN0MTQiIHJvbGU9Imxpc3QiIHRlc3QtZGVzY3JpcHRpb249IklubGluZSBsaXN0IGVsZW1lbnRz
IHdpdGggYW4gYXJpYSByb2xlIHNob3VsZCBiZSBhIGxpc3QiIGlzLWxpc3Q9ImZhbHNlIiBzdHls
ZT0iZGlzcGxheTogdGFibGU7Ij4KICAgPGxpIHJvbGU9Imxpc3RpdGVtIiBzdHlsZT0iZGlzcGxh
eTogaW5saW5lLWJsb2NrOyI+SXRlbSAxPC9saT4KICAgPGxpIHJvbGU9Imxpc3RpdGVtIiBzdHls
ZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI+SXRlbSAyPC9saT4KICAgPGxpIHJvbGU9Imxpc3Rp
dGVtIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyI+SXRlbSAzPC9saT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtaW5jb3JyZWN0LWNvbHNwYW4tY2Vs
bC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWluY29ycmVj
dC1jb2xzcGFuLWNlbGwtZXhwZWN0ZWQudHh0CmluZGV4IDFiZGUxYmE5MDBkMS4uZjc0ZWQ0NWYz
ODY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLWluY29ycmVj
dC1jb2xzcGFuLWNlbGwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvdGFibGUtaW5jb3JyZWN0LWNvbHNwYW4tY2VsbC1leHBlY3RlZC50eHQKQEAgLTUsMTcgKzUs
MzUgQEAgVGhpcyB0ZXN0cyB0aGUgcm93UmFuZ2UgYW5kIGNvbHVtblJhbmdlIGF0dHJpYnV0ZXMg
b2YgdGFibGUgY2VsbHMgaW4gYSB0YWJsZSB3aXQKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
IAogCi1UYWJsZTogUm93czogMiwgQ29sdW1uczogMworVGFibGU6IFJvd3M6IDIsIENvbHVtbnM6
IDYKIFtUYWJsZSBjZWxsIGF0IHJvdzogMCwgY29sdW1uOiAwXSBSb3cgcmFuZ2U6IHswLCAxfSwg
Q29sdW1uIHJhbmdlOiB7MCwgMX0KIAlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDAsIDAp
Ci1bVGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogMF0gUm93IHJhbmdlOiB7MSwgMX0sIENv
bHVtbiByYW5nZTogezAsIDJ9CitbVGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogMF0gUm93
IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezAsIDR9CiAJUEFTU0VEIENlbGwgaXMgc2Ft
ZSBjZWxsIGF0ICgxLCAwKQogCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMSkKLVtU
YWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1uOiAxXSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29sdW1u
IHJhbmdlOiB7MCwgMn0KKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDIpCisJUEFT
U0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAzKQorW1RhYmxlIGNlbGwgYXQgcm93OiAxLCBj
b2x1bW46IDFdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6IHswLCA0fQorCVBBU1NF
RCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMCkKKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwg
YXQgKDEsIDEpCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAyKQorCVBBU1NFRCBD
ZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMykKK1tUYWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1u
OiAyXSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29sdW1uIHJhbmdlOiB7MCwgNH0KKwlQQVNTRUQgQ2Vs
bCBpcyBzYW1lIGNlbGwgYXQgKDEsIDApCisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgx
LCAxKQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMikKKwlQQVNTRUQgQ2VsbCBp
cyBzYW1lIGNlbGwgYXQgKDEsIDMpCitbVGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogM10g
Um93IHJhbmdlOiB7MSwgMX0sIENvbHVtbiByYW5nZTogezAsIDR9CiAJUEFTU0VEIENlbGwgaXMg
c2FtZSBjZWxsIGF0ICgxLCAwKQogCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgMSkK
LVtUYWJsZSBjZWxsIGF0IHJvdzogMSwgY29sdW1uOiAyXSBSb3cgcmFuZ2U6IHsxLCAxfSwgQ29s
dW1uIHJhbmdlOiB7MiwgMX0KIAlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNlbGwgYXQgKDEsIDIpCisJ
UEFTU0VEIENlbGwgaXMgc2FtZSBjZWxsIGF0ICgxLCAzKQorW1RhYmxlIGNlbGwgYXQgcm93OiAx
LCBjb2x1bW46IDRdIFJvdyByYW5nZTogezEsIDF9LCBDb2x1bW4gcmFuZ2U6IHs0LCAyfQorCVBB
U1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgNCkKKwlQQVNTRUQgQ2VsbCBpcyBzYW1lIGNl
bGwgYXQgKDEsIDUpCitbVGFibGUgY2VsbCBhdCByb3c6IDEsIGNvbHVtbjogNV0gUm93IHJhbmdl
OiB7MSwgMX0sIENvbHVtbiByYW5nZTogezQsIDJ9CisJUEFTU0VEIENlbGwgaXMgc2FtZSBjZWxs
IGF0ICgxLCA0KQorCVBBU1NFRCBDZWxsIGlzIHNhbWUgY2VsbCBhdCAoMSwgNSkKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1tdWx0aXBsZS10Ym9kaWVzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtbXVsdGlwbGUtdGJvZGllcy1leHBl
Y3RlZC50eHQKaW5kZXggMmFlZDM2NjVjMWFkLi40ODJiNWVmNTg5OTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtbXVsdGlwbGUtdGJvZGllcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1tdWx0aXBsZS10Ym9kaWVz
LWV4cGVjdGVkLnR4dApAQCAtMTAxOCw3ICsxMDE4LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAo
bnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdl
OiBOU1JhbmdlOiB7MSwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1B
WENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRl
clVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxh
cnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAt
MQpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGln
aGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7
MiwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRl
clVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6
IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXpl
IDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtMTI1OCw3
ICsxMjU4LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxl
QW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7MywgMX0KIEFYQ29s
dW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6
IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBz
aXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFD
b2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtMTM3OCw3ICsxMzc4LDcgQEAg
QVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChu
dWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7NCwgMX0KIEFYQ29sdW1uSW5kZXhSYW5n
ZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBz
aXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJv
d0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDog
LTEKIEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtMTQ5OCw3ICsxNDk4LDcgQEAgQVhFZGl0YWJsZUFu
Y2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJ
bmRleFJhbmdlOiBOU1JhbmdlOiB7NSwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTog
ezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENv
bHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxl
bWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJv
d0luZGV4OiAtMQpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVs
bCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBO
U1JhbmdlOiB7NiwgMX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENv
bHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJ
RWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJh
eSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpA
QCAtMTczOCw3ICsxNzM4LDcgQEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVz
dEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7Nywg
MX0KIEFYQ29sdW1uSW5kZXhSYW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJ
RWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxh
cnJheSBvZiBzaXplIDE+CiBBWFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDA+
CiBBWEFSSUFDb2x1bW5JbmRleDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS10aGVhZC10Zm9vdC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXRoZWFkLXRmb290LWV4cGVjdGVkLnR4
dAppbmRleCBlNDQ4M2Y0MmJlMjAuLjVmZjE3ZjIyNGM4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90YWJsZS10aGVhZC10Zm9vdC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS10aGVhZC10Zm9vdC1leHBlY3RlZC50eHQKQEAg
LTcyMiw3ICs3MjIsNyBAQCBBWEVkaXRhYmxlQW5jZXN0b3I6IChudWxsKQogQVhIaWdoZXN0RWRp
dGFibGVBbmNlc3RvcjogKG51bGwpCiBBWFJvd0luZGV4UmFuZ2U6IE5TUmFuZ2U6IHsxLCAxfQog
QVhDb2x1bW5JbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KLUFYQ29sdW1uSGVhZGVyVUlFbGVt
ZW50czogPGFycmF5IG9mIHNpemUgMD4KK0FYQ29sdW1uSGVhZGVyVUlFbGVtZW50czogPGFycmF5
IG9mIHNpemUgMT4KIEFYUm93SGVhZGVyVUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMT4KIEFY
QVJJQUNvbHVtbkluZGV4OiAtMQogQVhBUklBUm93SW5kZXg6IC0xCkBAIC04NDIsNyArODQyLDcg
QEAgQVhFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYSGlnaGVzdEVkaXRhYmxlQW5jZXN0b3I6
IChudWxsKQogQVhSb3dJbmRleFJhbmdlOiBOU1JhbmdlOiB7MiwgMX0KIEFYQ29sdW1uSW5kZXhS
YW5nZTogTlNSYW5nZTogezIsIDF9Ci1BWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBv
ZiBzaXplIDA+CitBWENvbHVtbkhlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBB
WFJvd0hlYWRlclVJRWxlbWVudHM6IDxhcnJheSBvZiBzaXplIDE+CiBBWEFSSUFDb2x1bW5JbmRl
eDogLTEKIEFYQVJJQVJvd0luZGV4OiAtMQpAQCAtOTYyLDcgKzk2Miw3IEBAIEFYRWRpdGFibGVB
bmNlc3RvcjogKG51bGwpCiBBWEhpZ2hlc3RFZGl0YWJsZUFuY2VzdG9yOiAobnVsbCkKIEFYUm93
SW5kZXhSYW5nZTogTlNSYW5nZTogezMsIDF9CiBBWENvbHVtbkluZGV4UmFuZ2U6IE5TUmFuZ2U6
IHsyLCAxfQotQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgorQVhD
b2x1bW5IZWFkZXJVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAxPgogQVhSb3dIZWFkZXJVSUVs
ZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAwPgogQVhBUklBQ29sdW1uSW5kZXg6IC0xCiBBWEFSSUFS
b3dJbmRleDogLTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvYWNjZXNz
aWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVtZW50cy90YWJsZS1leHBlY3Rl
ZC50eHQKaW5kZXggMTg1ZTU5ZjlkMDZkLi4zMzk0ZjVhZDM1MjAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2dsaWIvYWNjZXNzaWJpbGl0eS9jdXN0b20tZWxlbWVudHMvdGFibGUt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvYWNjZXNzaWJpbGl0
eS9jdXN0b20tZWxlbWVudHMvdGFibGUtZXhwZWN0ZWQudHh0CkBAIC0zMCwxMyArMzAsMTMgQEAg
UEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJvdy0y
Iikucm9sZSBpcyAiQVhSb2xlOiBBWFIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLnJvbGUgaXMgIkFYUm9sZTogQVhDZWxsIgogUEFT
UyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1Iiku
bnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQVJvd0luZGV4IikgaXMgOAogUEFTUyBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1IikubnVtYmVyQXR0
cmlidXRlVmFsdWUoIkFYQVJJQUNvbHVtbkluZGV4IikgaXMgMgotUEFTUyBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNlbGw1Iikucm93SW5kZXhSYW5nZSgp
IGlzICJ7MiwgMX0iCitQQVNTIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgiY2VsbDUiKS5yb3dJbmRleFJhbmdlKCkgaXMgIns0LCAxfSIKIFBBU1MgYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNSIpLmNvbHVtbklu
ZGV4UmFuZ2UoKSBpcyAiezAsIDJ9IgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoInJvdy0zIikucm9sZSBpcyAiQVhSb2xlOiBBWFJvdyIKIFBBU1Mg
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjZWxsNiIpLnJv
bGUgaXMgIkFYUm9sZTogQVhDZWxsIgogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoImNlbGw2IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQVJv
d0luZGV4IikgaXMgOQogUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImNlbGw2IikubnVtYmVyQXR0cmlidXRlVmFsdWUoIkFYQVJJQUNvbHVtbkluZGV4
IikgaXMgMgotUEFTUyBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoImNlbGw2Iikucm93SW5kZXhSYW5nZSgpIGlzICJ7MywgMX0iCitQQVNTIGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY2VsbDYiKS5yb3dJbmRleFJhbmdl
KCkgaXMgIns1LCAxfSIKIFBBU1MgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjZWxsNiIpLmNvbHVtbkluZGV4UmFuZ2UoKSBpcyAiezAsIDN9IgogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9nbGliL2FjY2Vzc2liaWxpdHkvZGlzcGxheS1jb250ZW50cy90YWJsZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2FjY2Vzc2liaWxpdHkvZGlzcGxheS1jb250
ZW50cy90YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi41NTM5YzhkYjM4ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9nbGliL2FjY2Vzc2liaWxpdHkvZGlzcGxheS1jb250ZW50cy90YWJsZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyOCBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBhIHRhYmxlIHdpdGgg
ZGlzcGxheTpjb250ZW50cyBjb21wb25lbnRzIGlzIGFjY2Vzc2libGUuCisKK1BBU1M6IHRhYmxl
LnJvd0NvdW50ID09PSA0CitQQVNTOiB0YWJsZS5jb2x1bW5Db3VudCA9PT0gMworUEFTUzogdGFi
bGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKS5kb21JZGVudGlmaWVyID09PSAicjBjMCIKK1BB
U1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMCkuZG9tSWRlbnRpZmllciA9PT0gInIw
YzEiCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDApLmRvbUlkZW50aWZpZXIg
PT09ICJyMGMyIgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAxKS5kb21JZGVu
dGlmaWVyID09PSAicjFjMCIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMSku
ZG9tSWRlbnRpZmllciA9PT0gInIxYzEiCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93
KDIsIDEpLmRvbUlkZW50aWZpZXIgPT09ICJyMWMyIgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVt
bkFuZFJvdygwLCAyKS5kb21JZGVudGlmaWVyID09PSAicjJjMCIKK1BBU1M6IHRhYmxlLmNlbGxG
b3JDb2x1bW5BbmRSb3coMSwgMikuZG9tSWRlbnRpZmllciA9PT0gInIyYzEiCitQQVNTOiB0YWJs
ZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDIpLmRvbUlkZW50aWZpZXIgPT09ICJyMmMyIgorUEFT
UzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKS5kb21JZGVudGlmaWVyID09PSAicjNj
MCIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMykuZG9tSWRlbnRpZmllciA9
PT0gInIzYzEiCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDIsIDMpLmRvbUlkZW50
aWZpZXIgPT09ICJyM2MyIgorCitQZXJmb3JtaW5nIHNlYXJjaCB0cmF2ZXJzYWwgb2YgYm9keS4K
KworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitUaGlz
IGlzIGEgdGFibGUgY2FwdGlvbgorQXV0aG9yIFRpdGxlIFllYXIKK1N0ZXBoZW4gSGF3a2luZyBB
IEJyaWVmIEhpc3Rvcnkgb2YgVGltZSAxOTg4CitDYXJsIFNhZ2FuIENvc21vcyAxOTgwCitXaWxs
IEdhdGVyIFRoZSBNeXN0ZXJpZXMgb2YgdGhlIFVuaXZlcnNlIDIwMjAKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvYWNjZXNzaWJpbGl0eS9saXN0
LWRldGVjdGlvbi1leHBlY3RlZC50eHQKaW5kZXggZWZkNGZlNjZlMDczLi42OTg5MTY1MmIzMGMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvYWNjZXNzaWJpbGl0eS9saXN0
LWRldGVjdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9h
Y2Nlc3NpYmlsaXR5L2xpc3QtZGV0ZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtNTYsNyArNTYsNyBA
QCBQQVNTIGF4RWxlbWVudC5yb2xlID09ICdBWFJvbGU6IEFYTGlzdCcgaXMgdHJ1ZQogCiAKIElu
bGluZSBsaXN0IGVsZW1lbnRzIHdpdGggYW4gYXJpYSByb2xlIHNob3VsZCBiZSBhIGxpc3QKLVBB
U1MgYXhFbGVtZW50LnJvbGUgPT0gJ0FYUm9sZTogQVhMaXN0JyBpcyB0cnVlCitQQVNTIGF4RWxl
bWVudC5yb2xlID09ICdBWFJvbGU6IEFYTGlzdCcgaXMgZmFsc2UKIAogCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGli
L2FjY2Vzc2liaWxpdHkvdGFibGUtbXVsdGlwbGUtdGJvZGllcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9nbGliL2FjY2Vzc2liaWxpdHkvdGFibGUtbXVsdGlwbGUtdGJvZGll
cy1leHBlY3RlZC50eHQKaW5kZXggYzlkZmExNmJiMWE0Li4yNjYxM2EzMTE0ZDAgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2dsaWIvYWNjZXNzaWJpbGl0eS90YWJsZS1tdWx0aXBs
ZS10Ym9kaWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2Fj
Y2Vzc2liaWxpdHkvdGFibGUtbXVsdGlwbGUtdGJvZGllcy1leHBlY3RlZC50eHQKQEAgLTM3LDcg
KzM3LDcgQEAgQVhSZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCiBBWFBsYXRmb3JtQXR0cmlidXRl
czogY29tcHV0ZWQtcm9sZTpjb2x1bW5oZWFkZXIsIHRhZzp0aAogLS0tLS0tLS0tLS0tCi1BWFJv
bGU6IEFYQ2VsbAorQVhSb2xlOiBBWENvbHVtbkhlYWRlcgogQVhQYXJlbnQ6IEFYUm93CiBBWENo
aWxkcmVuOiAwCiBBWFBvc2l0aW9uOiAgeyA0MDkuMDAwLCA5LjAwMDAwIH0KQEAgLTQ3LDE0ICs0
NywxNCBAQCBBWERlc2NyaXB0aW9uOgogQVhWYWx1ZTogYgogQVhGb2N1c2FibGU6IDAKIEFYRm9j
dXNlZDogMAotQVhTZWxlY3RhYmxlOiAxCitBWFNlbGVjdGFibGU6IDAKIEFYU2VsZWN0ZWQ6IDAK
IEFYTXVsdGlTZWxlY3RhYmxlOiAwCiBBWEVuYWJsZWQ6IDEKIEFYRXhwYW5kZWQ6IDAKIEFYUmVx
dWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAotQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGNvbXB1dGVkLXJv
bGU6Y2VsbCwgdGFnOnRkCitBWFBsYXRmb3JtQXR0cmlidXRlczogY29tcHV0ZWQtcm9sZTpjb2x1
bW5oZWFkZXIsIHRhZzp0ZAogLS0tLS0tLS0tLS0tCiAKIEFYUm9sZTogQVhDb2x1bW5IZWFkZXIK
QEAgLTM3NSw3ICszNzUsNyBAQCBBWFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKIEFYUGxhdGZv
cm1BdHRyaWJ1dGVzOiBjb21wdXRlZC1yb2xlOmNvbHVtbmhlYWRlciwgdGFnOnRoCiAtLS0tLS0t
LS0tLS0KLUFYUm9sZTogQVhDZWxsCitBWFJvbGU6IEFYQ29sdW1uSGVhZGVyCiBBWFBhcmVudDog
QVhSb3cKIEFYQ2hpbGRyZW46IDAKIEFYUG9zaXRpb246ICB7IDQwOS4wMDAsIDkuMDAwMDAgfQpA
QCAtMzg1LDE0ICszODUsMTQgQEAgQVhEZXNjcmlwdGlvbjoKIEFYVmFsdWU6IGIKIEFYRm9jdXNh
YmxlOiAwCiBBWEZvY3VzZWQ6IDAKLUFYU2VsZWN0YWJsZTogMQorQVhTZWxlY3RhYmxlOiAwCiBB
WFNlbGVjdGVkOiAwCiBBWE11bHRpU2VsZWN0YWJsZTogMAogQVhFbmFibGVkOiAxCiBBWEV4cGFu
ZGVkOiAwCiBBWFJlcXVpcmVkOiAwCiBBWENoZWNrZWQ6IDAKLUFYUGxhdGZvcm1BdHRyaWJ1dGVz
OiBjb21wdXRlZC1yb2xlOmNlbGwsIHRhZzp0ZAorQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGNvbXB1
dGVkLXJvbGU6Y29sdW1uaGVhZGVyLCB0YWc6dGQKIC0tLS0tLS0tLS0tLQogQVhSb2xlOiBBWFJv
d0hlYWRlcgogQVhQYXJlbnQ6IEFYUm93CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9nbGliL2FjY2Vzc2liaWxpdHkvdGFibGUtdGhlYWQtdGZvb3QtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L3RhYmxlLXRoZWFkLXRmb290LWV4
cGVjdGVkLnR4dAppbmRleCA4ZjZkMjY5YzMwYTYuLmRjM2E0ZDA2YzFiZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ2xpYi9hY2Nlc3NpYmlsaXR5L3RhYmxlLXRoZWFkLXRmb290
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9nbGliL2FjY2Vzc2liaWxp
dHkvdGFibGUtdGhlYWQtdGZvb3QtZXhwZWN0ZWQudHh0CkBAIC0zNyw3ICszNyw3IEBAIEFYUmVx
dWlyZWQ6IDAKIEFYQ2hlY2tlZDogMAogQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGNvbXB1dGVkLXJv
bGU6Y29sdW1uaGVhZGVyLCB0YWc6dGgKIC0tLS0tLS0tLS0tLQotQVhSb2xlOiBBWENlbGwKK0FY
Um9sZTogQVhDb2x1bW5IZWFkZXIKIEFYUGFyZW50OiBBWFJvdwogQVhDaGlsZHJlbjogMAogQVhQ
b3NpdGlvbjogIHsgNDA5LjAwMCwgNjMuMDAwMCB9CkBAIC00NywxNCArNDcsMTQgQEAgQVhEZXNj
cmlwdGlvbjoKIEFYVmFsdWU6IGIKIEFYRm9jdXNhYmxlOiAwCiBBWEZvY3VzZWQ6IDAKLUFYU2Vs
ZWN0YWJsZTogMQorQVhTZWxlY3RhYmxlOiAwCiBBWFNlbGVjdGVkOiAwCiBBWE11bHRpU2VsZWN0
YWJsZTogMAogQVhFbmFibGVkOiAxCiBBWEV4cGFuZGVkOiAwCiBBWFJlcXVpcmVkOiAwCiBBWENo
ZWNrZWQ6IDAKLUFYUGxhdGZvcm1BdHRyaWJ1dGVzOiBjb21wdXRlZC1yb2xlOmNlbGwsIHRhZzp0
ZAorQVhQbGF0Zm9ybUF0dHJpYnV0ZXM6IGNvbXB1dGVkLXJvbGU6Y29sdW1uaGVhZGVyLCB0YWc6
dGQKIC0tLS0tLS0tLS0tLQogCiBBWFJvbGU6IEFYQ29sdW1uSGVhZGVyCkBAIC0yMjcsNyArMjI3
LDcgQEAgQVhSZXF1aXJlZDogMAogQVhDaGVja2VkOiAwCiBBWFBsYXRmb3JtQXR0cmlidXRlczog
Y29tcHV0ZWQtcm9sZTpjb2x1bW5oZWFkZXIsIHRhZzp0aAogLS0tLS0tLS0tLS0tCi1BWFJvbGU6
IEFYQ2VsbAorQVhSb2xlOiBBWENvbHVtbkhlYWRlcgogQVhQYXJlbnQ6IEFYUm93CiBBWENoaWxk
cmVuOiAwCiBBWFBvc2l0aW9uOiAgeyA0MDkuMDAwLCA2My4wMDAwIH0KQEAgLTIzNywxNCArMjM3
LDE0IEBAIEFYRGVzY3JpcHRpb246CiBBWFZhbHVlOiBiCiBBWEZvY3VzYWJsZTogMAogQVhGb2N1
c2VkOiAwCi1BWFNlbGVjdGFibGU6IDEKK0FYU2VsZWN0YWJsZTogMAogQVhTZWxlY3RlZDogMAog
QVhNdWx0aVNlbGVjdGFibGU6IDAKIEFYRW5hYmxlZDogMQogQVhFeHBhbmRlZDogMAogQVhSZXF1
aXJlZDogMAogQVhDaGVja2VkOiAwCi1BWFBsYXRmb3JtQXR0cmlidXRlczogY29tcHV0ZWQtcm9s
ZTpjZWxsLCB0YWc6dGQKK0FYUGxhdGZvcm1BdHRyaWJ1dGVzOiBjb21wdXRlZC1yb2xlOmNvbHVt
bmhlYWRlciwgdGFnOnRkCiAtLS0tLS0tLS0tLS0KIEFYUm9sZTogQVhSb3dIZWFkZXIKIEFYUGFy
ZW50OiBBWFJvdwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCBkZDljZjg4ZjQyZWEuLmJkYWM2ZThjMDcxNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIxODMsNiArMjE4Myw3IEBAIGFjY2Vzc2liaWxpdHkvZGlh
bG9nLXNsb3R0ZWQtY29udGVudC5odG1sIFsgUGFzcyBdCiBhY2Nlc3NpYmlsaXR5L2Rpc3BsYXkt
Y29udGVudHMvZHluYW1pY2FsbHktYWRkZWQtY2hpbGRyZW4uaHRtbCBbIFBhc3MgXQogYWNjZXNz
aWJpbGl0eS9kaXNwbGF5LWNvbnRlbnRzL2VsZW1lbnQtcm9sZXMuaHRtbCBbIFBhc3MgXQogYWNj
ZXNzaWJpbGl0eS9kaXNwbGF5LWNvbnRlbnRzL29iamVjdC1vcmRlcmluZy5odG1sIFsgUGFzcyBd
CithY2Nlc3NpYmlsaXR5L2Rpc3BsYXktY29udGVudHMvdGFibGUuaHRtbCBbIFBhc3MgXQogYWNj
ZXNzaWJpbGl0eS9keW5hbWljYWxseS1pZ25vcmVkLWNhbnZhcy5odG1sIFsgUGFzcyBdCiBhY2Nl
c3NpYmlsaXR5L2VsZW1lbnQtaGFzcG9wdXAuaHRtbCBbIFBhc3MgXQogYWNjZXNzaWJpbGl0eS9l
bXB0eS10ZXh0LXVuZGVyLWVsZW1lbnQtY2FjaGVkLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9hY2Nlc3NpYmlsaXR5L2Rpc3BsYXktY29udGVudHMv
dGFibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2FjY2Vzc2liaWxp
dHkvZGlzcGxheS1jb250ZW50cy90YWJsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NWYxNjkyMzNmNzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvYWNjZXNzaWJpbGl0eS9kaXNwbGF5LWNvbnRlbnRzL3Rh
YmxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU0IEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0
IGEgdGFibGUgd2l0aCBkaXNwbGF5OmNvbnRlbnRzIGNvbXBvbmVudHMgaXMgYWNjZXNzaWJsZS4K
KworUEFTUzogdGFibGUucm93Q291bnQgPT09IDQKK1BBU1M6IHRhYmxlLmNvbHVtbkNvdW50ID09
PSAzCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApLmRvbUlkZW50aWZpZXIg
PT09ICJyMGMwIgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygxLCAwKS5kb21JZGVu
dGlmaWVyID09PSAicjBjMSIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMCku
ZG9tSWRlbnRpZmllciA9PT0gInIwYzIiCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93
KDAsIDEpLmRvbUlkZW50aWZpZXIgPT09ICJyMWMwIgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVt
bkFuZFJvdygxLCAxKS5kb21JZGVudGlmaWVyID09PSAicjFjMSIKK1BBU1M6IHRhYmxlLmNlbGxG
b3JDb2x1bW5BbmRSb3coMiwgMSkuZG9tSWRlbnRpZmllciA9PT0gInIxYzIiCitQQVNTOiB0YWJs
ZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDIpLmRvbUlkZW50aWZpZXIgPT09ICJyMmMwIgorUEFT
UzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygxLCAyKS5kb21JZGVudGlmaWVyID09PSAicjJj
MSIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMiwgMikuZG9tSWRlbnRpZmllciA9
PT0gInIyYzIiCitQQVNTOiB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMpLmRvbUlkZW50
aWZpZXIgPT09ICJyM2MwIgorUEFTUzogdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygxLCAzKS5k
b21JZGVudGlmaWVyID09PSAicjNjMSIKK1BBU1M6IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3co
MiwgMykuZG9tSWRlbnRpZmllciA9PT0gInIzYzIiCisKK1BlcmZvcm1pbmcgc2VhcmNoIHRyYXZl
cnNhbCBvZiBib2R5LgorCit7U3RhdGljVGV4dCBBWExhYmVsOiBBdXRob3J9CisKK3tTdGF0aWNU
ZXh0IEFYTGFiZWw6IFRpdGxlfQorCit7U3RhdGljVGV4dCBBWExhYmVsOiBZZWFyfQorCit7U3Rh
dGljVGV4dCBBWExhYmVsOiBTdGVwaGVuIEhhd2tpbmd9CisKK3tTdGF0aWNUZXh0IEFYTGFiZWw6
IEEgQnJpZWYgSGlzdG9yeSBvZiBUaW1lfQorCit7U3RhdGljVGV4dCBBWExhYmVsOiAxOTg4fQor
Cit7U3RhdGljVGV4dCBBWExhYmVsOiBDYXJsIFNhZ2FufQorCit7U3RhdGljVGV4dCBBWExhYmVs
OiBDb3Ntb3N9CisKK3tTdGF0aWNUZXh0IEFYTGFiZWw6IDE5ODB9CisKK3tTdGF0aWNUZXh0IEFY
TGFiZWw6IFdpbGwgR2F0ZXJ9CisKK3tTdGF0aWNUZXh0IEFYTGFiZWw6IFRoZSBNeXN0ZXJpZXMg
b2YgdGhlIFVuaXZlcnNlfQorCit7U3RhdGljVGV4dCBBWExhYmVsOiAyMDIwfQorCit7VGFibGV9
CisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorVGhp
cyBpcyBhIHRhYmxlIGNhcHRpb24KK0F1dGhvciBUaXRsZSBZZWFyCitTdGVwaGVuIEhhd2tpbmcg
QSBCcmllZiBIaXN0b3J5IG9mIFRpbWUgMTk4OAorQ2FybCBTYWdhbiBDb3Ntb3MgMTk4MAorV2ls
bCBHYXRlciBUaGUgTXlzdGVyaWVzIG9mIHRoZSBVbml2ZXJzZSAyMDIwCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkZTQ2ZDA1NGY2ZDcu
LmU4MzU0YTk3Yjc5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtODA4LDYgKzgwOCwxMSBAQCBhY2Nlc3NpYmlsaXR5L2N1c3RvbS1lbGVt
ZW50cy8gWyBTa2lwIF0KIGFjY2Vzc2liaWxpdHkvYXgtb2JqZWN0LWRlc3Ryb3llZC1vbi1yZWxv
YWQuaHRtbCBbIFNraXAgXQogYWNjZXNzaWJpbGl0eS9wYWdlLXJlbG9hZC1kZWFkbG9jay5odG1s
IFsgU2tpcCBdCiAKKyMgU2tpcCBiZWNhdXNlIFdLMSBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBF
bGVtZW50OjpzZXRBdHRyaWJ1dGUuCithY2Nlc3NpYmlsaXR5L2R5bmFtaWMtcm93c3Bhbi5odG1s
IFsgU2tpcCBdCithY2Nlc3NpYmlsaXR5L2R5bmFtaWMtY29sc3Bhbi5odG1sIFsgU2tpcCBdCith
Y2Nlc3NpYmlsaXR5L2R5bmFtaWMtdGFibGUtZGVzY2VuZGFudHMuaHRtbCBbIFNraXAgXSAKKwog
IyBNaXNzaW5nIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5kZXRlcm1pbmF0ZSgpIGltcGxl
bWVudGF0aW9uLgogYWNjZXNzaWJpbGl0eS9wcm9ncmVzcy1pbmRldGVybWluYXRlLXZhbHVlLmh0
bWwgWyBTa2lwIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvZ2VuZXJhdGVkLWNvbnRlbnQtd2l0aC1kaXNwbGF5LXRhYmxlLWNyYXNoLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2dlbmVyYXRl
ZC1jb250ZW50LXdpdGgtZGlzcGxheS10YWJsZS1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggZjUx
ODgwNGVhMjQzLi43Y2JhNDE3NjY3MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L2dlbmVyYXRlZC1jb250ZW50LXdpdGgtZGlzcGxheS10YWJsZS1j
cmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvZ2VuZXJhdGVkLWNvbnRlbnQtd2l0aC1kaXNwbGF5LXRhYmxlLWNyYXNoLWV4cGVjdGVk
LnR4dApAQCAtNyw3ICs3LDggQEAgQVhSb2xlOiBBWFdlYkFyZWEgQVhWYWx1ZToKICAgICAgICAg
QVhSb2xlOiBBWFN0YXRpY1RleHQgQVhWYWx1ZTogZm9vCiAgICAgICAgIEFYUm9sZTogQVhTdGF0
aWNUZXh0IEFYVmFsdWU6ICEKICAgICBBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiBiYXIK
LSAgICBBWFJvbGU6IEFYU3RhdGljVGV4dCBBWFZhbHVlOiAhCisgICAgQVhSb2xlOiBBWEdyb3Vw
IEFYVmFsdWU6CisgICAgICAgIEFYUm9sZTogQVhTdGF0aWNUZXh0IEFYVmFsdWU6ICEKICAgICBB
WFJvbGU6IEFYR3JvdXAgQVhWYWx1ZToKICAgICAgICAgQVhSb2xlOiBBWFN0YXRpY1RleHQgQVhW
YWx1ZTogYmF6CiAgICAgQVhSb2xlOiBBWEdyb3VwIEFYVmFsdWU6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>