<?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>213084</bug_id>
          
          <creation_ts>2020-06-11 11:05:05 -0700</creation_ts>
          <short_desc>Replace uses of black/white list with block/allow list</short_desc>
          <delta_ts>2020-07-15 12:46:56 -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>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214371</see_also>
          <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>213092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1661648</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-11 11:05:05 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661654</commentid>
    <comment_count>1</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-06-11 11:13:32 -0700</bug_when>
    <thetext>Less important than just making the change but exclude/include might fit better too, depending on the context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661656</commentid>
    <comment_count>2</comment_count>
      <attachid>401659</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-11 11:18:19 -0700</bug_when>
    <thetext>Created attachment 401659
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661657</commentid>
    <comment_count>3</comment_count>
      <attachid>401659</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-06-11 11:19:01 -0700</bug_when>
    <thetext>Comment on attachment 401659
patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661658</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-06-11 11:19:16 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661662</commentid>
    <comment_count>5</comment_count>
      <attachid>401659</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-11 11:23:39 -0700</bug_when>
    <thetext>Comment on attachment 401659
patch

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

&gt; Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py:134
&gt; +        allowlist = set(ObjCGenerator.DOMAINS_TO_GENERATE)

Capitalize the L to be consistent with how we do it elsewhere?

&gt; Source/JavaScriptCore/tools/FunctionAllowList.cpp:2
&gt; + * Copyright (C) 2014, 2016, 2020 Apple Inc. All rights reserved.

Just use &quot;2014-2020&quot; instead.

&gt; Source/JavaScriptCore/tools/FunctionAllowList.h:2
&gt; + * Copyright (C) 2014, 2016, 2020 Apple Inc. All rights reserved.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661669</commentid>
    <comment_count>6</comment_count>
      <attachid>401659</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-11 11:31:39 -0700</bug_when>
    <thetext>Comment on attachment 401659
patch

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

&gt;&gt; Source/JavaScriptCore/inspector/scripts/codegen/objc_generator.py:134
&gt;&gt; +        allowlist = set(ObjCGenerator.DOMAINS_TO_GENERATE)
&gt; 
&gt; Capitalize the L to be consistent with how we do it elsewhere?

I should probably do
allow_list to be consistent in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661670</commentid>
    <comment_count>7</comment_count>
      <attachid>401659</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-06-11 11:35:37 -0700</bug_when>
    <thetext>Comment on attachment 401659
patch

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

Personally I&apos;d vote for a lowercase &quot;l&quot;, but whichever works.

&gt; Source/JavaScriptCore/tools/FunctionAllowList.h:35
&gt; +class FunctionWhitelist {

Seems like this file got renamed but its contents weren&apos;t updated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661673</commentid>
    <comment_count>8</comment_count>
      <attachid>401659</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-11 11:40:53 -0700</bug_when>
    <thetext>Comment on attachment 401659
patch

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

&gt;&gt; Source/JavaScriptCore/tools/FunctionAllowList.h:35
&gt;&gt; +class FunctionAllowList {
&gt; 
&gt; Seems like this file got renamed but its contents weren&apos;t updated?

This is just bugzilla showing diff in two parts I believe</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661691</commentid>
    <comment_count>9</comment_count>
      <attachid>401669</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-11 12:31:28 -0700</bug_when>
    <thetext>Created attachment 401669
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661763</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-11 15:47:26 -0700</bug_when>
    <thetext>Committed r262928: &lt;https://trac.webkit.org/changeset/262928&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401669.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661764</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-11 15:48:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/64273619&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671874</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2020-07-15 12:46:56 -0700</bug_when>
    <thetext>R=me too.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401659</attachid>
            <date>2020-06-11 11:18:19 -0700</date>
            <delta_ts>2020-06-11 12:31:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>35999</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyOTExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDIwLTA2LTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFJlcGxhY2UgdXNlcyBvZiBibGFjay93aGl0ZSBsaXN0IHdpdGggYmxvY2svYWxsb3cgbGlzdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2hvdWxk
IGJlIHVzaW5nIHJhY2lhbGx5IG5ldXRyYWwgbmFtZXMgaW4gb3VyIGNvZGUuIEZyb20gQ2hyb21p
dW0gc3R5bGUgZ3VpZGU6CisgICAgICAgIAorICAgICAgICAiVGVybXMgc3VjaCBhcyAnYmxhY2ts
aXN0JyBhbmQgJ3doaXRlbGlzdCcgcmVpbmZvcmNlIHRoZSBub3Rpb24gdGhhdAorICAgICAgICBi
bGFjaz09YmFkIGFuZCB3aGl0ZT09Z29vZC4iCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIGIzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
QWlyOjpsb3dlckFmdGVyUmVnQWxsb2MpOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmVuc3VyZUdsb2JhbERGR0FsbG93TGlzdCk6CisgICAgICAgIChK
U0M6OkRGRzo6Y29tcGlsZUltcGwpOgorICAgICAgICAoSlNDOjpERkc6OmVuc3VyZUdsb2JhbERG
R1doaXRlbGlzdCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0
aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmVuc3VyZUdsb2JhbEZUTEFsbG93TGlz
dCk6CisgICAgICAgIChKU0M6OkRGRzo6VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZTo6cnVuKToK
KyAgICAgICAgKEpTQzo6REZHOjplbnN1cmVHbG9iYWxGVExXaGl0ZWxpc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoT2JqQ0dlbmVy
YXRvci5zaG91bGRfZ2VuZXJhdGVfdHlwZXNfZm9yX2RvbWFpbik6CisgICAgICAgIChPYmpDR2Vu
ZXJhdG9yLnNob3VsZF9nZW5lcmF0ZV9jb21tYW5kc19mb3JfZG9tYWluKToKKyAgICAgICAgKE9i
akNHZW5lcmF0b3Iuc2hvdWxkX2dlbmVyYXRlX2V2ZW50c19mb3JfZG9tYWluKToKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjplbnN1cmVH
bG9iYWxKSVRBbGxvd0xpc3QpOgorICAgICAgICAoSlNDOjpMTEludDo6c2hvdWxkSklUKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmVuc3VyZUdsb2JhbEpJVFdoaXRlbGlzdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHRvb2xzL0Z1bmN0aW9u
QWxsb3dMaXN0LmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1
bmN0aW9uV2hpdGVsaXN0LmNwcC4KKyAgICAgICAgKEpTQzo6RnVuY3Rpb25BbGxvd0xpc3Q6OkZ1
bmN0aW9uQWxsb3dMaXN0KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25BbGxvd0xpc3Q6OmNvbnRh
aW5zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25XaGl0ZWxpc3Q6OkZ1bmN0aW9uV2hp
dGVsaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RnVuY3Rpb25XaGl0ZWxpc3Q6OmNvbnRh
aW5zIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiB0b29scy9GdW5jdGlvbkFsbG93TGlzdC5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25XaGl0ZWxp
c3QuaC4KKyAgICAgICAgKiB0b29scy9GdW5jdGlvbldoaXRlbGlzdC5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogdG9vbHMvRnVuY3Rpb25XaGl0ZWxpc3QuaDogUmVtb3ZlZC4KKwogMjAyMC0wNi0x
MSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgUmVn
RXhwLnByb3RvdHlwZSBnZXR0ZXJzIHNob3VsZCB0aHJvdyBvbiBjcm9zcy1yZWFsbSBhY2Nlc3MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI2MjkwOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAwOSw4
ICsxMDA5LDggQEAgSlNDQnVpbHRpbnMuY3BwCiAKIHRvb2xzL0NlbGxMaXN0LmNwcAogdG9vbHMv
Q29tcGlsZXJUaW1pbmdTY29wZS5jcHAKK3Rvb2xzL0Z1bmN0aW9uQWxsb3dMaXN0LmNwcAogdG9v
bHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCi10b29scy9GdW5jdGlvbldoaXRlbGlzdC5jcHAKIHRv
b2xzL0hlYXBWZXJpZmllci5jcHAKIHRvb2xzL0ludGVncml0eS5jcHAKIHRvb2xzL0pTRG9sbGFy
Vk0uY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjYyOTA4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTkwMSw2ICs5MDEsNyBAQAogCQk1MjY3OEY4
RjFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjY3OEY4RDFBMDMxMDA5MDA2QTMwNkQg
LyogQmFzaWNCbG9ja0xvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTI2NzhGOTExQTA0MTc3QzAwNkEzMDZEIC8qIENvbnRyb2xGbG93
UHJvZmlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUyNjc4RjkwMUEwNDE3N0MwMDZBMzA2RCAvKiBDb250cm9sRmxvd1Byb2ZpbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI2QUM0QjcxRTk3
N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNkFDNEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29k
ZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTI3NzBBMEEyNDkyQTdDQTAwNkQ2QjYwIC8qIEZ1bmN0aW9uQWxsb3dMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Mjc3MEEwOTI0OTJBN0JE
MDA2RDZCNjAgLyogRnVuY3Rpb25BbGxvd0xpc3QuaCAqLzsgfTsKIAkJNTI3Q0UzNTQyMjU1NUZF
NTAwQzZGMzgyIC8qIEpTVG9XYXNtSUNDYWxsZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyN0NFMzUzMjI1NTVGREQwMEM2RjM4MiAvKiBKU1RvV2Fz
bUlDQ2FsbGVlLmggKi87IH07CiAJCTUyODQ3QURDMjFGRkI4NjkwMDYxQTlEQiAvKiBXYXNtQWly
SVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUyODQ3QURBMjFGRkI4NjMwMDYxQTlEQiAvKiBXYXNtQWlySVJHZW5lcmF0b3IuaCAqLzsg
fTsKIAkJNTJCMzEwRkIxOTc0QUU2MTAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNo
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJCMzEw
RkExOTc0QUU2MTAwODA4NTdDIC8qIEZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xOTMxLDcgKzE5MzIs
NiBAQAogCQlGRTk5QjI0OTFDMjRDM0QzMDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTk5QjI0ODFDMjRC
NkQzMDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmggKi87IH07CiAJCUZFQTA4NjIwMTgyQjdB
MDQwMEY2RDg1MSAvKiBCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFQTA4
NjIxMTgyQjdBMDQwMEY2RDg1MSAvKiBEZWJ1Z2dlclByaW1pdGl2ZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQTA4NjFGMTgyQjdBMDQwMEY2RDg1
MSAvKiBEZWJ1Z2dlclByaW1pdGl2ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlGRUEwQzQwMzFDREQ3RDFEMDA0ODE5OTEgLyogRnVuY3Rpb25X
aGl0ZWxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFQTBDNDAxMUNERDdEMEUwMDQ4MTk5MSAvKiBGdW5jdGlvbldoaXRlbGlzdC5oICovOyB9Owog
CQlGRUEzQkJBODIxMkI2NTU5MDBFOTNBRDEgLyogQ2FsbEZyYW1lSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBM0JCQTcyMTJCNjU1ODAw
RTkzQUQxIC8qIENhbGxGcmFtZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGRUEzQkJBQzIxMkM5N0NCMDBFOTNBRDEgLyogREZHQ0ZH
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUEzQkJB
QjIxMkM5N0NCMDBFOTNBRDEgLyogREZHQ0ZHLmggKi87IH07CiAJCUZFQjUxRjZDMUE5N0I2ODgw
MDFGOTIxQyAvKiBSZWdyZXNzMTQxODA5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVCNTFGNkIxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4
MDkubW0gKi87IH07CkBAIC0zNTczLDYgKzM1NzMsOCBAQAogCQk1MjZBQzRCNDFFOTc3QzVEMDAz
NTAwRTEgLyogV2FzbUNvZGVCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXYXNtQ29kZUJsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTI2QUM0QjUxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNvZGVCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MjcyOTg3QjIzNUZDOEJBMDA1Qzk4MkMgLyogR0NNZW1vcnlPcGVyYXRpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdDTWVtb3J5T3BlcmF0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1Mjc3MEEwODI0OTJBN0JEMDA2RDZCNjAgLyogRnVuY3Rpb25BbGxvd0xp
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25BbGxvd0xpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1Mjc3MEEwOTI0OTJBN0JEMDA2RDZCNjAgLyogRnVuY3Rp
b25BbGxvd0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25BbGxvd0xpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3NzczREQxQUFGODNBQzAwQkRFN0U4IC8qIFJ1bnRp
bWVUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bnRpbWVU
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3Q0UzNTIyMjU1NUZERDAw
QzZGMzgyIC8qIEpTVG9XYXNtSUNDYWxsZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNUb1dh
c21JQ0NhbGxlZS5jcHA7IHBhdGggPSBqcy9KU1RvV2FzbUlDQ2FsbGVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3Q0UzNTMyMjU1NUZERDAwQzZGMzgyIC8qIEpTVG9XYXNt
SUNDYWxsZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNUb1dhc21JQ0NhbGxlZS5oOyBwYXRoID0ganMv
SlNUb1dhc21JQ0NhbGxlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTIyNSw4
ICs1MjI3LDYgQEAKIAkJRkU5OUIyNDgxQzI0QjZEMzAwQzgyMTU5IC8qIEpJVE5lZ0dlbmVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVROZWdHZW5lcmF0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8q
IEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnJlYWtwb2lu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUEwODYxRjE4MkI3QTA0MDBGNkQ4
NTEgLyogRGVidWdnZXJQcmltaXRpdmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERlYnVnZ2VyUHJpbWl0aXZlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlG
RUEwQzQwMDFDREQ3RDBFMDA0ODE5OTEgLyogRnVuY3Rpb25XaGl0ZWxpc3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rpb25XaGl0ZWxpc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRUEwQzQwMTFDREQ3RDBFMDA0ODE5OTEgLyogRnVu
Y3Rpb25XaGl0ZWxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rp
b25XaGl0ZWxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBM0JCQTcyMTJC
NjU1ODAwRTkzQUQxIC8qIENhbGxGcmFtZUlubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FsbEZyYW1lSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRUEzQkJBQjIxMkM5N0NCMDBFOTNBRDEgLyogREZHQ0ZHLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGRy5oOyBwYXRoID0gZGZnL0RGR0NGRy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRUIxMzc1NjFCQjExRUVFMDBDRDUxMDAgLyogTWFjcm9B
c3NlbWJsZXJBUk02NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
YWNyb0Fzc2VtYmxlckFSTTY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc3
NDEsMTAgKzc3NDEsMTAgQEAKIAkJCQkwRjRGMTFFNjIwOUJDREExMDA3MDk2NTQgLyogQ29tcGls
ZXJUaW1pbmdTY29wZS5oICovLAogCQkJCUZFNEJGRjI5MUFENDc2RTcwMDA4OEY4NyAvKiBGdW5j
dGlvbk92ZXJyaWRlcy5jcHAgKi8sCiAJCQkJRkU0QkZGMkExQUQ0NzZFNzAwMDg4Rjg3IC8qIEZ1
bmN0aW9uT3ZlcnJpZGVzLmggKi8sCi0JCQkJRkVBMEM0MDAxQ0REN0QwRTAwNDgxOTkxIC8qIEZ1
bmN0aW9uV2hpdGVsaXN0LmNwcCAqLywKLQkJCQlGRUEwQzQwMTFDREQ3RDBFMDA0ODE5OTEgLyog
RnVuY3Rpb25XaGl0ZWxpc3QuaCAqLywKIAkJCQlGRTFCRDAyMjFFNzIwNTJGMDAxMzRCQzkgLyog
SGVhcFZlcmlmaWVyLmNwcCAqLywKIAkJCQlGRTFCRDAyMzFFNzIwNTJGMDAxMzRCQzkgLyogSGVh
cFZlcmlmaWVyLmggKi8sCisJCQkJNTI3NzBBMDgyNDkyQTdCRDAwNkQ2QjYwIC8qIEZ1bmN0aW9u
QWxsb3dMaXN0LmNwcCAqLywKKwkJCQk1Mjc3MEEwOTI0OTJBN0JEMDA2RDZCNjAgLyogRnVuY3Rp
b25BbGxvd0xpc3QuaCAqLywKIAkJCQlGRUM1Nzk3NDIzMTA1RjQyMDBCQ0E4M0YgLyogSW50ZWdy
aXR5LmNwcCAqLywKIAkJCQlGRUM1Nzk3NTIzMTA1RjQzMDBCQ0E4M0YgLyogSW50ZWdyaXR5Lmgg
Ki8sCiAJCQkJRkVDNTc5NzcyMzEwOTU0QjAwQkNBODNGIC8qIEludGVncml0eUlubGluZXMuaCAq
LywKQEAgLTkyMDcsNiArOTIwNyw3IEBACiAJCQkJRkUxQkQwMUUxRTcyMDAyQTAwMTM0QkM5IC8q
IENlbGxMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTFCRDAyMTFFNzIwMjc5MDAxMzRCQzkg
LyogQ2VsbFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQzE2MDMyMjMzOUU5RjkwMEEw
NENCOCAvKiBDZWxsU2l6ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTI3NzBBMEEyNDkyQTdDQTAw
NkQ2QjYwIC8qIEZ1bmN0aW9uQWxsb3dMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFDM0RE
QTFCQkNFMDlFMDBFNTIzRTQgLyogQ2VsbFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MzM4
RTJBNzIzOTZFRkZCMDBDNjFCQUQgLyogQ2hlY2twb2ludE9TUkV4aXRTaWRlU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNkFBQUU1MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCBp
biBIZWFkZXJzICovLApAQCAtOTU4NSw3ICs5NTg2LDYgQEAKIAkJCQlGRTRCRkYyQzFBRDQ3NkU3
MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDA1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjJEMkQzOTAxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUZFQTBDNDAzMUNERDdEMUQwMDQ4MTk5MSAvKiBGdW5jdGlvbldoaXRl
bGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzQTk0OTcyMjU1MzIzMzAwRDQyQjA2IC8qIEZ1
enplckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNGQUQzNjIzNzJEQUQwMDAyOTE1OTkg
LyogRnV6emVyUHJlZGljdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVB
MDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJl
Z0FsbG9jLmNwcAkocmV2aXNpb24gMjYyOTA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsMTAg
KzExMSwxMCBAQCB2b2lkIGxvd2VyQWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2RlKQogICAgIC8vIElm
IHdlIHJ1biBhZnRlciBzdGFjayBhbGxvY2F0aW9uIHRoZW4gd2UgY2Fubm90IHVzZSB0aG9zZSBj
YWxsZWUgc2F2ZXMgdGhhdCBhcmVuJ3QgaW4KICAgICAvLyB0aGUgY2FsbGVlIHNhdmUgbGlzdC4g
Tm90ZSB0aGF0IHdlIGFyZSBvbmx5IHJ1biBhZnRlciBzdGFjayBhbGxvY2F0aW9uIGluIC1PMSwg
c28gdGhpcwogICAgIC8vIGtpbmQgb2Ygc2xvcCBpcyBPSy4KLSAgICBSZWdpc3RlclNldCBibGFj
a2xpc3RlZENhbGxlZVNhdmVzOworICAgIFJlZ2lzdGVyU2V0IGRpc2FsbG93ZWRDYWxsZWVTYXZl
czsKICAgICBpZiAoY29kZS5zdGFja0lzQWxsb2NhdGVkKCkpIHsKLSAgICAgICAgYmxhY2tsaXN0
ZWRDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAg
ICAgIGJsYWNrbGlzdGVkQ2FsbGVlU2F2ZXMuZXhjbHVkZShjb2RlLmNhbGxlZVNhdmVSZWdpc3Rl
cnMoKSk7CisgICAgICAgIGRpc2FsbG93ZWRDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0OjpjYWxs
ZWVTYXZlUmVnaXN0ZXJzKCk7CisgICAgICAgIGRpc2FsbG93ZWRDYWxsZWVTYXZlcy5leGNsdWRl
KGNvZGUuY2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICB9CiAgICAgCiAgICAgYXV0byBnZXRT
Y3JhdGNoZXMgPSBbJl0gKFJlZ2lzdGVyU2V0IHNldCwgQmFuayBiYW5rKSAtPiBzdGQ6OmFycmF5
PEFyZywgMj4gewpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENv
ZGUmIGNvZGUpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyOyArK2kpIHsKICAg
ICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6
IGNvZGUucmVnc0luUHJpb3JpdHlPcmRlcihiYW5rKSkgewotICAgICAgICAgICAgICAgIGlmICgh
c2V0LmdldChyZWcpICYmICFibGFja2xpc3RlZENhbGxlZVNhdmVzLmdldChyZWcpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFzZXQuZ2V0KHJlZykgJiYgIWRpc2FsbG93ZWRDYWxsZWVTYXZlcy5n
ZXQocmVnKSkgewogICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBUbXAocmVnKTsKICAg
ICAgICAgICAgICAgICAgICAgc2V0LnNldChyZWcpOwogICAgICAgICAgICAgICAgICAgICBmb3Vu
ZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShy
ZXZpc2lvbiAyNjI5MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJERkdQbGFuLmgi
CiAjaW5jbHVkZSAiREZHVGh1bmtzLmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKLSNpbmNs
dWRlICJGdW5jdGlvbldoaXRlbGlzdC5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uQWxsb3dMaXN0Lmgi
CiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJU
aHVua0dlbmVyYXRvcnMuaCIKQEAgLTQ4LDE1ICs0OCwxNSBAQCB1bnNpZ25lZCBnZXROdW1Db21w
aWxhdGlvbnMoKQogfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi1zdGF0aWMgRnVuY3Rpb25XaGl0
ZWxpc3QmIGVuc3VyZUdsb2JhbERGR1doaXRlbGlzdCgpCitzdGF0aWMgRnVuY3Rpb25BbGxvd0xp
c3QmIGVuc3VyZUdsb2JhbERGR0FsbG93TGlzdCgpCiB7Ci0gICAgc3RhdGljIExhenlOZXZlckRl
c3Ryb3llZDxGdW5jdGlvbldoaXRlbGlzdD4gZGZnV2hpdGVsaXN0OwotICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBpbml0aWFsaXplV2hpdGVsaXN0RmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShp
bml0aWFsaXplV2hpdGVsaXN0RmxhZywgW10gewotICAgICAgICBjb25zdCBjaGFyKiBmdW5jdGlv
bldoaXRlbGlzdEZpbGUgPSBPcHRpb25zOjpkZmdXaGl0ZWxpc3QoKTsKLSAgICAgICAgZGZnV2hp
dGVsaXN0LmNvbnN0cnVjdChmdW5jdGlvbldoaXRlbGlzdEZpbGUpOworICAgIHN0YXRpYyBMYXp5
TmV2ZXJEZXN0cm95ZWQ8RnVuY3Rpb25BbGxvd0xpc3Q+IGRmZ0FsbG93TGlzdDsKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUFsbG93TGlzdEZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2UoaW5pdGlhbGl6ZUFsbG93TGlzdEZsYWcsIFtdIHsKKyAgICAgICAgY29uc3QgY2hhciog
ZnVuY3Rpb25BbGxvd0xpc3RGaWxlID0gT3B0aW9uczo6ZGZnQWxsb3dMaXN0KCk7CisgICAgICAg
IGRmZ0FsbG93TGlzdC5jb25zdHJ1Y3QoZnVuY3Rpb25BbGxvd0xpc3RGaWxlKTsKICAgICB9KTsK
LSAgICByZXR1cm4gZGZnV2hpdGVsaXN0OworICAgIHJldHVybiBkZmdBbGxvd0xpc3Q7CiB9CiAK
IHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKQEAgLTY1LDcgKzY1LDcgQEAg
c3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAogICAgIFJlZjxEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFPcHRpb25zOjpieXRl
Y29kZVJhbmdlVG9ERkdDb21waWxlKCkuaXNJblJhbmdlKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
U2l6ZSgpKQotICAgICAgICB8fCAhZW5zdXJlR2xvYmFsREZHV2hpdGVsaXN0KCkuY29udGFpbnMo
Y29kZUJsb2NrKSkKKyAgICAgICAgfHwgIWVuc3VyZUdsb2JhbERGR0FsbG93TGlzdCgpLmNvbnRh
aW5zKGNvZGVCbG9jaykpCiAgICAgICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsKICAgICAK
ICAgICBudW1Db21waWxhdGlvbnMrKzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjYyOTA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0lu
amVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjEgKzMzLDIxIEBACiAjaW5j
bHVkZSAiREZHTmF0dXJhbExvb3BzLmgiCiAjaW5jbHVkZSAiREZHUGhhc2UuaCIKICNpbmNsdWRl
ICJGVExDYXBhYmlsaXRpZXMuaCIKLSNpbmNsdWRlICJGdW5jdGlvbldoaXRlbGlzdC5oIgorI2lu
Y2x1ZGUgIkZ1bmN0aW9uQWxsb3dMaXN0LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogCi1zdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZU
TFdoaXRlbGlzdCgpCitzdGF0aWMgRnVuY3Rpb25BbGxvd0xpc3QmIGVuc3VyZUdsb2JhbEZUTEFs
bG93TGlzdCgpCiB7Ci0gICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxGdW5jdGlvbldoaXRl
bGlzdD4gZnRsV2hpdGVsaXN0OwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXpl
V2hpdGVsaXN0RmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplV2hpdGVsaXN0Rmxh
ZywgW10gewotICAgICAgICBjb25zdCBjaGFyKiBmdW5jdGlvbldoaXRlbGlzdEZpbGUgPSBPcHRp
b25zOjpmdGxXaGl0ZWxpc3QoKTsKLSAgICAgICAgZnRsV2hpdGVsaXN0LmNvbnN0cnVjdChmdW5j
dGlvbldoaXRlbGlzdEZpbGUpOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8RnVuY3Rp
b25BbGxvd0xpc3Q+IGZ0bEFsbG93TGlzdDsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5p
dGlhbGl6ZUFsbG93TGlzdEZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUFsbG93
TGlzdEZsYWcsIFtdIHsKKyAgICAgICAgY29uc3QgY2hhciogZnVuY3Rpb25BbGxvd0xpc3RGaWxl
ID0gT3B0aW9uczo6ZnRsQWxsb3dMaXN0KCk7CisgICAgICAgIGZ0bEFsbG93TGlzdC5jb25zdHJ1
Y3QoZnVuY3Rpb25BbGxvd0xpc3RGaWxlKTsKICAgICB9KTsKLSAgICByZXR1cm4gZnRsV2hpdGVs
aXN0OworICAgIHJldHVybiBmdGxBbGxvd0xpc3Q7CiB9CiAKIHVzaW5nIE5hdHVyYWxMb29wID0g
Q1BTTmF0dXJhbExvb3A7CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFP
cHRpb25zOjpieXRlY29kZVJhbmdlVG9GVExDb21waWxlKCkuaXNJblJhbmdlKG1fZ3JhcGgubV9w
cm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnNTaXplKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIGlmICghZW5zdXJlR2xvYmFsRlRMV2hpdGVsaXN0KCkuY29udGFpbnMo
bV9ncmFwaC5tX3Byb2ZpbGVkQmxvY2spKQorICAgICAgICBpZiAoIWVuc3VyZUdsb2JhbEZUTEFs
bG93TGlzdCgpLmNvbnRhaW5zKG1fZ3JhcGgubV9wcm9maWxlZEJsb2NrKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgCiAjaWYgRU5BQkxFKEZUTF9KSVQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAJKHJl
dmlzaW9uIDI2MjkwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFj
a01hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgdm9p
ZCBjb3B5TWVtb3J5KHZvaWQqIGRzdCwgY29uc3QgCiAvLyBhY3F1aXJlIGEgbG9jay4gU2luY2Ug
J3RocmVhZCcgaXMgc3VzcGVuZGVkLCB0cnlpbmcgdG8gYWNxdWlyZSBhIGxvY2sKIC8vIHdpbGwg
ZGVhZGxvY2sgaWYgJ3RocmVhZCcgaG9sZHMgdGhhdCBsb2NrLgogLy8gVGhpcyBmdW5jdGlvbiwg
c3BlY2lmaWNhbGx5IHRoZSBtZW1vcnkgY29weWluZywgd2FzIGNhdXNpbmcgcHJvYmxlbXMgd2l0
aCBBZGRyZXNzIFNhbml0aXplciBpbgotLy8gYXBwcy4gU2luY2Ugd2UgY2Fubm90IGJsYWNrbGlz
dCB0aGUgc3lzdGVtIG1lbWNweSB3ZSBtdXN0IHVzZSBvdXIgb3duIG5haXZlIGltcGxlbWVudGF0
aW9uLAorLy8gYXBwcy4gU2luY2Ugd2UgY2Fubm90IGRpc2FsbG93IHRoZSBzeXN0ZW0gbWVtY3B5
IHdlIG11c3QgdXNlIG91ciBvd24gbmFpdmUgaW1wbGVtZW50YXRpb24sCiAvLyBjb3B5TWVtb3J5
LCBmb3IgQVNhbiB0byB3b3JrIG9uIGVpdGhlciBpbnN0cnVtZW50ZWQgb3Igbm9uLWluc3RydW1l
bnRlZCBidWlsZHMuIFRoaXMgaXMgbm90IGEKIC8vIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGxv
c3MgYXMgdHJ5Q29weU90aGVyVGhyZWFkU3RhY2sgaXMgb25seSBjYWxsZWQgYXMgcGFydCBvZiBh
biBPKGhlYXBzaXplKQogLy8gb3BlcmF0aW9uLiBBcyB0aGUgaGVhcCBpcyBnZW5lcmFsbHkgbXVj
aCBsYXJnZXIgdGhhbiB0aGUgc3RhY2sgdGhlIHBlcmZvcm1hbmNlIGhpdCBpcyBtaW5pbWFsLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2Jq
Y19nZW5lcmF0b3IucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkJKHJldmlzaW9uIDI2MjkwOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNf
Z2VuZXJhdG9yLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsOSArMTMxLDkgQEAgY2xhc3MgT2Jq
Q0dlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3Jr
IGlzIEZyYW1ld29ya3MuVGVzdDoKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAgICAg
d2hpdGVsaXN0ID0gc2V0KE9iakNHZW5lcmF0b3IuRE9NQUlOU19UT19HRU5FUkFURSkKLSAgICAg
ICAgd2hpdGVsaXN0LnVwZGF0ZShzZXQoWydDb25zb2xlJywgJ0RlYnVnZ2VyJywgJ1J1bnRpbWUn
XSkpCi0gICAgICAgIHJldHVybiBkb21haW4uZG9tYWluX25hbWUgaW4gd2hpdGVsaXN0CisgICAg
ICAgIGFsbG93bGlzdCA9IHNldChPYmpDR2VuZXJhdG9yLkRPTUFJTlNfVE9fR0VORVJBVEUpCisg
ICAgICAgIGFsbG93bGlzdC51cGRhdGUoc2V0KFsnQ29uc29sZScsICdEZWJ1Z2dlcicsICdSdW50
aW1lJ10pKQorICAgICAgICByZXR1cm4gZG9tYWluLmRvbWFpbl9uYW1lIGluIGFsbG93bGlzdAog
CiAgICAgZGVmIHNob3VsZF9nZW5lcmF0ZV9jb21tYW5kc19mb3JfZG9tYWluKHNlbGYsIGRvbWFp
bik6CiAgICAgICAgIGlmIG5vdCBsZW4oc2VsZi5jb21tYW5kc19mb3JfZG9tYWluKGRvbWFpbikp
OgpAQCAtMTQyLDggKzE0Miw4IEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAg
ICAgICAgaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBGcmFtZXdvcmtzLlRlc3Q6CiAgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgICAgIHdoaXRlbGlzdCA9IHNldChPYmpDR2VuZXJh
dG9yLkRPTUFJTlNfVE9fR0VORVJBVEUpCi0gICAgICAgIHJldHVybiBkb21haW4uZG9tYWluX25h
bWUgaW4gd2hpdGVsaXN0CisgICAgICAgIGFsbG93bGlzdCA9IHNldChPYmpDR2VuZXJhdG9yLkRP
TUFJTlNfVE9fR0VORVJBVEUpCisgICAgICAgIHJldHVybiBkb21haW4uZG9tYWluX25hbWUgaW4g
YWxsb3dsaXN0CiAKICAgICBkZWYgc2hvdWxkX2dlbmVyYXRlX2V2ZW50c19mb3JfZG9tYWluKHNl
bGYsIGRvbWFpbik6CiAgICAgICAgIGlmIG5vdCBsZW4oc2VsZi5ldmVudHNfZm9yX2RvbWFpbihk
b21haW4pKToKQEAgLTE1Miw5ICsxNTIsOSBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yKEdlbmVyYXRv
cik6CiAgICAgICAgIGlmIHNlbGYubW9kZWwoKS5mcmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5UZXN0
OgogICAgICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgICAgICB3aGl0ZWxpc3QgPSBzZXQoT2Jq
Q0dlbmVyYXRvci5ET01BSU5TX1RPX0dFTkVSQVRFKQotICAgICAgICB3aGl0ZWxpc3QuYWRkKCdD
b25zb2xlJykKLSAgICAgICAgcmV0dXJuIGRvbWFpbi5kb21haW5fbmFtZSBpbiB3aGl0ZWxpc3QK
KyAgICAgICAgYWxsb3dsaXN0ID0gc2V0KE9iakNHZW5lcmF0b3IuRE9NQUlOU19UT19HRU5FUkFU
RSkKKyAgICAgICAgYWxsb3dsaXN0LmFkZCgnQ29uc29sZScpCisgICAgICAgIHJldHVybiBkb21h
aW4uZG9tYWluX25hbWUgaW4gYWxsb3dsaXN0CiAKICAgICAjIE9iakMgZW51bSBhbmQgdHlwZSBu
YW1lcy4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCShyZXZpc2lvbiAyNjI5MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uRnV6ei5oIgogI2luY2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgogI2lu
Y2x1ZGUgIkZ1bmN0aW9uQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiRnVuY3Rpb25XaGl0ZWxpc3Qu
aCIKKyNpbmNsdWRlICJGdW5jdGlvbkFsbG93TGlzdC5oIgogI2luY2x1ZGUgIkdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJKSVRFeGNl
cHRpb25zLmgiCkBAIC0zNDAsMjEgKzM0MCwyMSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFj
ZSkKIGVudW0gRW50cnlLaW5kIHsgUHJvbG9ndWUsIEFyaXR5Q2hlY2sgfTsKIAogI2lmIEVOQUJM
RShKSVQpCi1zdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEpJVFdoaXRlbGlz
dCgpCitzdGF0aWMgRnVuY3Rpb25BbGxvd0xpc3QmIGVuc3VyZUdsb2JhbEpJVEFsbG93TGlzdCgp
CiB7Ci0gICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxGdW5jdGlvbldoaXRlbGlzdD4gYmFz
ZWxpbmVXaGl0ZWxpc3Q7Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVXaGl0
ZWxpc3RGbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVXaGl0ZWxpc3RGbGFnLCBb
XSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGZ1bmN0aW9uV2hpdGVsaXN0RmlsZSA9IE9wdGlvbnM6
OmppdFdoaXRlbGlzdCgpOwotICAgICAgICBiYXNlbGluZVdoaXRlbGlzdC5jb25zdHJ1Y3QoZnVu
Y3Rpb25XaGl0ZWxpc3RGaWxlKTsKKyAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPEZ1bmN0
aW9uQWxsb3dMaXN0PiBiYXNlbGluZUFsbG93TGlzdDsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgaW5pdGlhbGl6ZUFsbG93TGlzdEZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6
ZUFsbG93TGlzdEZsYWcsIFtdIHsKKyAgICAgICAgY29uc3QgY2hhciogZnVuY3Rpb25BbGxvd0xp
c3RGaWxlID0gT3B0aW9uczo6aml0QWxsb3dMaXN0KCk7CisgICAgICAgIGJhc2VsaW5lQWxsb3dM
aXN0LmNvbnN0cnVjdChmdW5jdGlvbkFsbG93TGlzdEZpbGUpOwogICAgIH0pOwotICAgIHJldHVy
biBiYXNlbGluZVdoaXRlbGlzdDsKKyAgICByZXR1cm4gYmFzZWxpbmVBbGxvd0xpc3Q7CiB9CiAK
IGlubGluZSBib29sIHNob3VsZEpJVChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBpZiAo
IU9wdGlvbnM6OmJ5dGVjb2RlUmFuZ2VUb0pJVENvbXBpbGUoKS5pc0luUmFuZ2UoY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnNTaXplKCkpCi0gICAgICAgIHx8ICFlbnN1cmVHbG9iYWxKSVRXaGl0ZWxp
c3QoKS5jb250YWlucyhjb2RlQmxvY2spKQorICAgICAgICB8fCAhZW5zdXJlR2xvYmFsSklUQWxs
b3dMaXN0KCkuY29udGFpbnMoY29kZUJsb2NrKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgcmV0dXJuIFZNOjpjYW5Vc2VKSVQoKSAmJiBPcHRpb25zOjp1c2VCYXNlbGluZUpJVCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCShyZXZp
c2lvbiAyNjI5MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsOSArMTM1LDkgQEAgY29uc3RleHByIGJvb2wgZW5h
YmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIHYoT3B0aW9uUmFuZ2UsIGJ5dGVjb2RlUmFuZ2VU
b0pJVENvbXBpbGUsIDAsIE5vcm1hbCwgImJ5dGVjb2RlIHNpemUgcmFuZ2UgdG8gYWxsb3cgY29t
cGlsYXRpb24gb24sIGUuZy4gMToxMDAiKSBcCiAgICAgdihPcHRpb25SYW5nZSwgYnl0ZWNvZGVS
YW5nZVRvREZHQ29tcGlsZSwgMCwgTm9ybWFsLCAiYnl0ZWNvZGUgc2l6ZSByYW5nZSB0byBhbGxv
dyBERkcgY29tcGlsYXRpb24gb24sIGUuZy4gMToxMDAiKSBcCiAgICAgdihPcHRpb25SYW5nZSwg
Ynl0ZWNvZGVSYW5nZVRvRlRMQ29tcGlsZSwgMCwgTm9ybWFsLCAiYnl0ZWNvZGUgc2l6ZSByYW5n
ZSB0byBhbGxvdyBGVEwgY29tcGlsYXRpb24gb24sIGUuZy4gMToxMDAiKSBcCi0gICAgdihPcHRp
b25TdHJpbmcsIGppdFdoaXRlbGlzdCwgbnVsbHB0ciwgTm9ybWFsLCAiZmlsZSB3aXRoIGxpc3Qg
b2YgZnVuY3Rpb24gc2lnbmF0dXJlcyB0byBhbGxvdyBjb21waWxhdGlvbiBvbiIpIFwKLSAgICB2
KE9wdGlvblN0cmluZywgZGZnV2hpdGVsaXN0LCBudWxscHRyLCBOb3JtYWwsICJmaWxlIHdpdGgg
bGlzdCBvZiBmdW5jdGlvbiBzaWduYXR1cmVzIHRvIGFsbG93IERGRyBjb21waWxhdGlvbiBvbiIp
IFwKLSAgICB2KE9wdGlvblN0cmluZywgZnRsV2hpdGVsaXN0LCBudWxscHRyLCBOb3JtYWwsICJm
aWxlIHdpdGggbGlzdCBvZiBmdW5jdGlvbiBzaWduYXR1cmVzIHRvIGFsbG93IEZUTCBjb21waWxh
dGlvbiBvbiIpIFwKKyAgICB2KE9wdGlvblN0cmluZywgaml0QWxsb3dMaXN0LCBudWxscHRyLCBO
b3JtYWwsICJmaWxlIHdpdGggbmV3bGluZSBzZXBhcmF0ZWQgbGlzdCBvZiBmdW5jdGlvbiBzaWdu
YXR1cmVzIHRvIGFsbG93IGNvbXBpbGF0aW9uIG9uIikgXAorICAgIHYoT3B0aW9uU3RyaW5nLCBk
ZmdBbGxvd0xpc3QsIG51bGxwdHIsIE5vcm1hbCwgImZpbGUgd2l0aCBuZXdsaW5lIHNlcGFyYXRl
ZCBsaXN0IG9mIGZ1bmN0aW9uIHNpZ25hdHVyZXMgdG8gYWxsb3cgREZHIGNvbXBpbGF0aW9uIG9u
IikgXAorICAgIHYoT3B0aW9uU3RyaW5nLCBmdGxBbGxvd0xpc3QsIG51bGxwdHIsIE5vcm1hbCwg
ImZpbGUgd2l0aCBuZXdsaW5lIHNlcGFyYXRlZCBsaXN0IG9mIGZ1bmN0aW9uIHNpZ25hdHVyZXMg
dG8gYWxsb3cgRlRMIGNvbXBpbGF0aW9uIG9uIikgXAogICAgIHYoQm9vbCwgZHVtcFNvdXJjZUF0
REZHVGltZSwgZmFsc2UsIE5vcm1hbCwgImR1bXBzIHNvdXJjZSBjb2RlIG9mIEpTIGZ1bmN0aW9u
IGJlaW5nIERGRyBjb21waWxlZCIpIFwKICAgICB2KEJvb2wsIGR1bXBCeXRlY29kZUF0REZHVGlt
ZSwgZmFsc2UsIE5vcm1hbCwgImR1bXBzIGJ5dGVjb2RlIG9mIEpTIGZ1bmN0aW9uIGJlaW5nIERG
RyBjb21waWxlZCIpIFwKICAgICB2KEJvb2wsIGR1bXBHcmFwaEFmdGVyUGFyc2luZywgZmFsc2Us
IE5vcm1hbCwgbnVsbHB0cikgXApAQCAtMzY3LDcgKzM2Nyw3IEBAIGNvbnN0ZXhwciBib29sIGVu
YWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICB2KEJvb2wsIGNvbGxlY3RTYW1wbGluZ1Byb2Zp
bGVyRGF0YUZvckpTQ1NoZWxsLCBmYWxzZSwgTm9ybWFsLCAiVGhpcyBjb3JyZXNwb25kcyB0byB0
aGUgSlNDIHNoZWxsJ3MgLS1zYW1wbGUgb3B0aW9uLiIpIFwKICAgICB2KFVuc2lnbmVkLCBzYW1w
bGluZ1Byb2ZpbGVyVG9wRnVuY3Rpb25zQ291bnQsIDEyLCBOb3JtYWwsICJOdW1iZXIgb2YgdG9w
IGZ1bmN0aW9ucyB0byByZXBvcnQgd2hlbiB1c2luZyB0aGUgY29tbWFuZCBsaW5lIGludGVyZmFj
ZS4iKSBcCiAgICAgdihVbnNpZ25lZCwgc2FtcGxpbmdQcm9maWxlclRvcEJ5dGVjb2Rlc0NvdW50
LCA0MCwgTm9ybWFsLCAiTnVtYmVyIG9mIHRvcCBieXRlY29kZXMgdG8gcmVwb3J0IHdoZW4gdXNp
bmcgdGhlIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuIikgXAotICAgIHYoT3B0aW9uU3RyaW5nLCBz
YW1wbGluZ1Byb2ZpbGVyUGF0aCwgbnVsbHB0ciwgTm9ybWFsLCAiVGhlIHBhdGggdG8gdGhlIGRp
cmVjdG9yeSB0byB3cml0ZSBzYW1waWxpbmcgcHJvZmlsZXIgb3V0cHV0IHRvLiBUaGlzIHByb2Jh
Ymx5IHdpbGwgbm90IHdvcmsgd2l0aCBXSzIgdW5sZXNzIHRoZSBwYXRoIGlzIGluIHRoZSB3aGl0
ZWxpc3QuIikgXAorICAgIHYoT3B0aW9uU3RyaW5nLCBzYW1wbGluZ1Byb2ZpbGVyUGF0aCwgbnVs
bHB0ciwgTm9ybWFsLCAiVGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSB0byB3cml0ZSBzYW1waWxp
bmcgcHJvZmlsZXIgb3V0cHV0IHRvLiBUaGlzIHByb2JhYmx5IHdpbGwgbm90IHdvcmsgd2l0aCBX
SzIgdW5sZXNzIHRoZSBwYXRoIGlzIGluIHRoZSBzYW5kYm94LiIpIFwKICAgICB2KEJvb2wsIHNh
bXBsZUNDb2RlLCBmYWxzZSwgTm9ybWFsLCAiQ2F1c2VzIHRoZSBzYW1wbGluZyBwcm9maWxlciB0
byByZWNvcmQgcHJvZmlsaW5nIGRhdGEgZm9yIEMgZnJhbWVzLiIpIFwKICAgICBcCiAgICAgdihC
b29sLCBhbHdheXNHZW5lcmF0ZVBDVG9Db2RlT3JpZ2luTWFwLCBmYWxzZSwgTm9ybWFsLCAiVGhp
cyB3aWxsIG1ha2Ugc3VyZSB3ZSBhbHdheXMgZ2VuZXJhdGUgYSBQQ1RvQ29kZU9yaWdpbk1hcCBm
b3IgSklUZWQgY29kZS4iKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVu
Y3Rpb25BbGxvd0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9GdW5jdGlvbkFsbG93TGlzdC5jcHAJKHJldmlzaW9uIDI2MjkwOCkJKGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uV2hpdGVsaXN0LmNwcDoyNjI5MDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd0xpc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25XaGl0ZWxpc3QuaCIKKworI2lmIEVOQUJMRShKSVQp
CisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUg
PHN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworRnVuY3Rpb25XaGl0ZWxpc3Q6OkZ1bmN0
aW9uV2hpdGVsaXN0KGNvbnN0IGNoYXIqIGZpbGVuYW1lKQoreworICAgIGlmICghZmlsZW5hbWUp
CisgICAgICAgIHJldHVybjsKKworICAgIEZJTEUqIGYgPSBmb3BlbihmaWxlbmFtZSwgInIiKTsK
KyAgICBpZiAoIWYpIHsKKyAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMu
IERpZCB5b3UgYWRkIHRoZSBmaWxlLXJlYWQtZGF0YSBlbnRpdGxlbWVudCB0byBXZWJQcm9jZXNz
LnNiP1xuIiwgZmlsZW5hbWUpOyAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faGFz
QWN0aXZlV2hpdGVsaXN0ID0gdHJ1ZTsKKworICAgIGNoYXIqIGxpbmU7CisgICAgY2hhciBidWZm
ZXJbQlVGU0laXTsKKyAgICB3aGlsZSAoKGxpbmUgPSBmZ2V0cyhidWZmZXIsIHNpemVvZihidWZm
ZXIpLCBmKSkpIHsKKyAgICAgICAgaWYgKHN0cnN0cihsaW5lLCAiLy8iKSA9PSBsaW5lKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gR2V0IHJpZCBvZiBuZXdsaW5lcyBhdCB0
aGUgZW5kcyBvZiB0aGUgc3RyaW5ncy4KKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbihs
aW5lKTsKKyAgICAgICAgaWYgKGxpbmVbbGVuZ3RoIC0gMV0gPT0gJ1xuJykgeworICAgICAgICAg
ICAgbGluZVtsZW5ndGggLSAxXSA9ICdcMCc7CisgICAgICAgICAgICBsZW5ndGgtLTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFNraXAgZW1wdHkgbGluZXMuCisgICAgICAgIGlmICghbGVuZ3Ro
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBtX2VudHJpZXMuYWRk
KFN0cmluZyhsaW5lLCBsZW5ndGgpKTsKKyAgICB9CisKKyAgICBpbnQgcmVzdWx0ID0gZmNsb3Nl
KGYpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIGRhdGFMb2dGKCJGYWlsZWQgdG8gY2xvc2Ug
ZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOworfQorCitib29sIEZ1
bmN0aW9uV2hpdGVsaXN0Ojpjb250YWlucyhDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QKK3sK
KyAgICBpZiAoIW1faGFzQWN0aXZlV2hpdGVsaXN0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIGlmIChtX2VudHJpZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBTdHJpbmcgbmFtZSA9IFN0cmluZzo6ZnJvbVVURjgoY29kZUJsb2NrLT5pbmZlcnJlZE5hbWUo
KSk7CisgICAgaWYgKG1fZW50cmllcy5jb250YWlucyhuYW1lKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBTdHJpbmcgaGFzaCA9IFN0cmluZzo6ZnJvbVVURjgoY29kZUJsb2NrLT5oYXNo
QXNTdHJpbmdJZlBvc3NpYmxlKCkpOworICAgIGlmIChtX2VudHJpZXMuY29udGFpbnMoaGFzaCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIG1fZW50cmllcy5jb250YWlucyhu
YW1lICsgJyMnICsgaGFzaCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9u
QWxsb3dMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
RnVuY3Rpb25BbGxvd0xpc3QuY3BwCShyZXZpc2lvbiAyNjI5MDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYsIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkZ1bmN0aW9uV2hpdGVsaXN0LmgiCisjaW5jbHVkZSAiRnVuY3Rpb25BbGxvd0xpc3QuaCIK
IAogI2lmIEVOQUJMRShKSVQpCiAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLUZ1bmN0aW9uV2hpdGVsaXN0OjpGdW5jdGlvbldoaXRlbGlzdChjb25zdCBjaGFyKiBmaWxl
bmFtZSkKK0Z1bmN0aW9uQWxsb3dMaXN0OjpGdW5jdGlvbkFsbG93TGlzdChjb25zdCBjaGFyKiBm
aWxlbmFtZSkKIHsKICAgICBpZiAoIWZpbGVuYW1lKQogICAgICAgICByZXR1cm47CkBAIC00NSw3
ICs0NSw3IEBAIEZ1bmN0aW9uV2hpdGVsaXN0OjpGdW5jdGlvbldoaXRlbGlzdChjb24KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faGFzQWN0aXZlV2hpdGVsaXN0ID0gdHJ1ZTsKKyAg
ICBtX2hhc0FjdGl2ZUFsbG93TGlzdCA9IHRydWU7CiAKICAgICBjaGFyKiBsaW5lOwogICAgIGNo
YXIgYnVmZmVyW0JVRlNJWl07CkBAIC03Miw5ICs3Miw5IEBAIEZ1bmN0aW9uV2hpdGVsaXN0OjpG
dW5jdGlvbldoaXRlbGlzdChjb24KICAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBm
aWxlICVzOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CiB9CiAKLWJvb2wgRnVu
Y3Rpb25XaGl0ZWxpc3Q6OmNvbnRhaW5zKENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAorYm9v
bCBGdW5jdGlvbkFsbG93TGlzdDo6Y29udGFpbnMoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0
CiB7Ci0gICAgaWYgKCFtX2hhc0FjdGl2ZVdoaXRlbGlzdCkKKyAgICBpZiAoIW1faGFzQWN0aXZl
QWxsb3dMaXN0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChtX2VudHJpZXMuaXNF
bXB0eSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dM
aXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9u
QWxsb3dMaXN0LmgJKHJldmlzaW9uIDI2MjkwOCkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0Z1bmN0aW9uV2hpdGVsaXN0Lmg6MjYyOTA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpT
QyB7IAorCitjbGFzcyBDb2RlQmxvY2s7CisKK2NsYXNzIEZ1bmN0aW9uV2hpdGVsaXN0IHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBGdW5jdGlvbldoaXRlbGlzdChjb25zdCBjaGFyKik7CisKKyAg
ICBib29sIGNvbnRhaW5zKENvZGVCbG9jayopIGNvbnN0OworCitwcml2YXRlOgorICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX2VudHJpZXM7CisgICAgYm9vbCBtX2hhc0FjdGl2ZVdoaXRlbGlzdCB7IGZh
bHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9GdW5jdGlvbkFsbG93TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93TGlzdC5oCShyZXZpc2lvbiAyNjI5MDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd0xpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAy
MDE2LCAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTUgKzMyLDE1IEBAIG5hbWVzcGFjZSBKU0MgeyAKIAog
Y2xhc3MgQ29kZUJsb2NrOwogCi1jbGFzcyBGdW5jdGlvbldoaXRlbGlzdCB7CitjbGFzcyBGdW5j
dGlvbkFsbG93TGlzdCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRnVuY3Rpb25XaGl0ZWxpc3Qo
Y29uc3QgY2hhciopOworICAgIGV4cGxpY2l0IEZ1bmN0aW9uQWxsb3dMaXN0KGNvbnN0IGNoYXIq
KTsKIAogICAgIGJvb2wgY29udGFpbnMoQ29kZUJsb2NrKikgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgSGFzaFNldDxTdHJpbmc+IG1fZW50cmllczsKLSAgICBib29sIG1faGFzQWN0aXZlV2hpdGVs
aXN0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzQWN0aXZlQWxsb3dMaXN0IHsgZmFsc2UgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0Z1bmN0aW9uV2hpdGVsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvRnVuY3Rpb25XaGl0ZWxpc3QuY3BwCShyZXZpc2lvbiAyNjI5MDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25XaGl0ZWxpc3QuY3BwCShub25leGlz
dGVudCkKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJGdW5jdGlvbldoaXRlbGlzdC5oIgotCi0jaWYgRU5BQkxFKEpJVCkK
LQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8
c3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1GdW5jdGlvbldoaXRlbGlzdDo6RnVuY3Rp
b25XaGl0ZWxpc3QoY29uc3QgY2hhciogZmlsZW5hbWUpCi17Ci0gICAgaWYgKCFmaWxlbmFtZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgRklMRSogZiA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOwot
ICAgIGlmICghZikgewotICAgICAgICBkYXRhTG9nRigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcy4g
RGlkIHlvdSBhZGQgdGhlIGZpbGUtcmVhZC1kYXRhIGVudGl0bGVtZW50IHRvIFdlYlByb2Nlc3Mu
c2I/XG4iLCBmaWxlbmFtZSk7IAotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9oYXNB
Y3RpdmVXaGl0ZWxpc3QgPSB0cnVlOwotCi0gICAgY2hhciogbGluZTsKLSAgICBjaGFyIGJ1ZmZl
cltCVUZTSVpdOwotICAgIHdoaWxlICgobGluZSA9IGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZl
ciksIGYpKSkgewotICAgICAgICBpZiAoc3Ryc3RyKGxpbmUsICIvLyIpID09IGxpbmUpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBHZXQgcmlkIG9mIG5ld2xpbmVzIGF0IHRo
ZSBlbmRzIG9mIHRoZSBzdHJpbmdzLgotICAgICAgICBzaXplX3QgbGVuZ3RoID0gc3RybGVuKGxp
bmUpOwotICAgICAgICBpZiAobGluZVtsZW5ndGggLSAxXSA9PSAnXG4nKSB7Ci0gICAgICAgICAg
ICBsaW5lW2xlbmd0aCAtIDFdID0gJ1wwJzsKLSAgICAgICAgICAgIGxlbmd0aC0tOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gU2tpcCBlbXB0eSBsaW5lcy4KLSAgICAgICAgaWYgKCFsZW5ndGgp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIG1fZW50cmllcy5hZGQo
U3RyaW5nKGxpbmUsIGxlbmd0aCkpOwotICAgIH0KLQotICAgIGludCByZXN1bHQgPSBmY2xvc2Uo
Zik7Ci0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBm
aWxlICVzOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7Ci19Ci0KLWJvb2wgRnVu
Y3Rpb25XaGl0ZWxpc3Q6OmNvbnRhaW5zKENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAotewot
ICAgIGlmICghbV9oYXNBY3RpdmVXaGl0ZWxpc3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgaWYgKG1fZW50cmllcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IFN0cmluZyBuYW1lID0gU3RyaW5nOjpmcm9tVVRGOChjb2RlQmxvY2stPmluZmVycmVkTmFtZSgp
KTsKLSAgICBpZiAobV9lbnRyaWVzLmNvbnRhaW5zKG5hbWUpKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIFN0cmluZyBoYXNoID0gU3RyaW5nOjpmcm9tVVRGOChjb2RlQmxvY2stPmhhc2hB
c1N0cmluZ0lmUG9zc2libGUoKSk7Ci0gICAgaWYgKG1fZW50cmllcy5jb250YWlucyhoYXNoKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gbV9lbnRyaWVzLmNvbnRhaW5zKG5h
bWUgKyAnIycgKyBoYXNoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBF
TkFCTEUoSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25X
aGl0ZWxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVu
Y3Rpb25XaGl0ZWxpc3QuaAkocmV2aXNpb24gMjYyOTA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0Z1bmN0aW9uV2hpdGVsaXN0LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSlND
IHsgCi0KLWNsYXNzIENvZGVCbG9jazsKLQotY2xhc3MgRnVuY3Rpb25XaGl0ZWxpc3QgewotcHVi
bGljOgotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV2hpdGVsaXN0KGNvbnN0IGNoYXIqKTsKLQotICAg
IGJvb2wgY29udGFpbnMoQ29kZUJsb2NrKikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgSGFzaFNl
dDxTdHJpbmc+IG1fZW50cmllczsKLSAgICBib29sIG1faGFzQWN0aXZlV2hpdGVsaXN0IHsgZmFs
c2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>
<flag name="review"
          id="417076"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401669</attachid>
            <date>2020-06-11 12:31:28 -0700</date>
            <delta_ts>2020-06-11 15:47:26 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>38696</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjYyOTExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDIwLTA2LTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFJlcGxhY2UgdXNlcyBvZiBibGFjay93aGl0ZSBsaXN0IHdpdGggYmxvY2svYWxsb3cgbGlzdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMDg0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAgIFdlIHNob3VsZCBi
ZSB1c2luZyByYWNpYWxseSBuZXV0cmFsIG5hbWVzIGluIG91ciBjb2RlLiBGcm9tIENocm9taXVt
IHN0eWxlIGd1aWRlOgorICAgICAgICAKKyAgICAgICAgIlRlcm1zIHN1Y2ggYXMgJ2JsYWNrbGlz
dCcgYW5kICd3aGl0ZWxpc3QnIHJlaW5mb3JjZSB0aGUgbm90aW9uIHRoYXQKKyAgICAgICAgYmxh
Y2s9PWJhZCBhbmQgd2hpdGU9PWdvb2QuIgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBiMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6bG93ZXJBZnRlclJlZ0FsbG9jKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjplbnN1cmVHbG9iYWxERkdBbGxvd2xpc3QpOgorICAgICAgICAoSlND
OjpERkc6OmNvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6REZHOjplbnN1cmVHbG9iYWxERkdX
aGl0ZWxpc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjplbnN1cmVHbG9iYWxGVExBbGxvd2xpc3Qp
OgorICAgICAgICAoSlNDOjpERkc6OlRpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2U6OnJ1bik6Cisg
ICAgICAgIChKU0M6OkRGRzo6ZW5zdXJlR2xvYmFsRlRMV2hpdGVsaXN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weToKKyAgICAgICAgKE9iakNHZW5lcmF0
b3Iuc2hvdWxkX2dlbmVyYXRlX3R5cGVzX2Zvcl9kb21haW4pOgorICAgICAgICAoT2JqQ0dlbmVy
YXRvci5zaG91bGRfZ2VuZXJhdGVfY29tbWFuZHNfZm9yX2RvbWFpbik6CisgICAgICAgIChPYmpD
R2VuZXJhdG9yLnNob3VsZF9nZW5lcmF0ZV9ldmVudHNfZm9yX2RvbWFpbik6CisgICAgICAgICog
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6ZW5zdXJlR2xv
YmFsSklUQWxsb3dsaXN0KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNob3VsZEpJVCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjplbnN1cmVHbG9iYWxKSVRXaGl0ZWxpc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiB0b29scy9GdW5jdGlvbkFs
bG93bGlzdC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5j
dGlvbldoaXRlbGlzdC5jcHAuCisgICAgICAgIChKU0M6OkZ1bmN0aW9uQWxsb3dsaXN0OjpGdW5j
dGlvbkFsbG93bGlzdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQWxsb3dsaXN0Ojpjb250YWlu
cyBjb25zdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uV2hpdGVsaXN0OjpGdW5jdGlvbldoaXRl
bGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZ1bmN0aW9uV2hpdGVsaXN0Ojpjb250YWlu
cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3QuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uV2hpdGVsaXN0
LmguCisgICAgICAgICogdG9vbHMvRnVuY3Rpb25XaGl0ZWxpc3QuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHRvb2xzL0Z1bmN0aW9uV2hpdGVsaXN0Lmg6IFJlbW92ZWQuCisKIDIwMjAtMDYtMTEg
IEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFJlZ0V4
cC5wcm90b3R5cGUgZ2V0dGVycyBzaG91bGQgdGhyb3cgb24gY3Jvc3MtcmVhbG0gYWNjZXNzCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNjI5MDgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwMDksOCAr
MTAwOSw4IEBAIEpTQ0J1aWx0aW5zLmNwcAogCiB0b29scy9DZWxsTGlzdC5jcHAKIHRvb2xzL0Nv
bXBpbGVyVGltaW5nU2NvcGUuY3BwCit0b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAKIHRvb2xz
L0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAotdG9vbHMvRnVuY3Rpb25XaGl0ZWxpc3QuY3BwCiB0b29s
cy9IZWFwVmVyaWZpZXIuY3BwCiB0b29scy9JbnRlZ3JpdHkuY3BwCiB0b29scy9KU0RvbGxhclZN
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MjkwOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05MTEsNiArOTExLDcgQEAKIAkJNTJDRDBGNUQy
MjQyRjU2OTAwNEExOEE1IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMEVCNjEwNUM4NkM2QjAwRTZERjFC
IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQk1MkNEMEY1RTIyNDJGNTY5MDA0QTE4
QTUgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyRjVCRDkwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFT
Y3JpcHRDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJNTJDRDBGNjgyMjQyRjcxQzAwNEExOEE1IC8q
IHRlc3RkZmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTJDRDBGNjcyMjQyRjcxQzAwNEExOEE1IC8qIHRlc3RkZmcuY3BwICovOyB9OworCQk1MkVF
RDc5NDI0OTJCODcwMDA4RjRDOTMgLyogRnVuY3Rpb25BbGxvd2xpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRUVENzkzMjQ5MkI4NjgwMDhGNEM5
MyAvKiBGdW5jdGlvbkFsbG93bGlzdC5oICovOyB9OwogCQk1MkY2QzM1RTFFNzFFQjA4MDA4MUY0
Q0MgLyogV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRjZDMzVDMUU3MUVCMDgwMDgxRjRDQyAvKiBXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oICovOyB9OwogCQk1MzBBNjZCOTFGQTNFNzhCMDAyNkE1
NDUgLyogVW5pZmllZFNvdXJjZTMtbW0ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MzBBNjZCMTFGQTNFNzdBMDAyNkE1NDUgLyogVW5pZmllZFNvdXJj
ZTMtbW0ubW0gKi87IH07CiAJCTUzMEE2NkJBMUZBM0U3OEIwMDI2QTU0NSAvKiBVbmlmaWVkU291
cmNlNC1tbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzMEE2NkI4MUZBM0U3N0UwMDI2QTU0NSAvKiBVbmlmaWVkU291cmNlNC1tbS5tbSAqLzsgfTsK
QEAgLTE5MzEsNyArMTkzMiw2IEBACiAJCUZFOTlCMjQ5MUMyNEMzRDMwMEM4MjE1OSAvKiBKSVRO
ZWdHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFOTlCMjQ4MUMyNEI2RDMwMEM4MjE1OSAvKiBKSVROZWdHZW5lcmF0b3IuaCAqLzsgfTsK
IAkJRkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1
MSAvKiBCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRkVBMDg2MjExODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBMDg2
MUYxODJCN0EwNDAwRjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZFQTBDNDAzMUNERDdEMUQwMDQ4
MTk5MSAvKiBGdW5jdGlvbldoaXRlbGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVBMEM0MDExQ0REN0QwRTAwNDgxOTkxIC8qIEZ1bmN0aW9uV2hp
dGVsaXN0LmggKi87IH07CiAJCUZFQTNCQkE4MjEyQjY1NTkwMEU5M0FEMSAvKiBDYWxsRnJhbWVJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUEzQkJBNzIxMkI2NTU4MDBFOTNBRDEgLyogQ2FsbEZyYW1lSW5saW5lcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFQTNCQkFDMjEyQzk3Q0Iw
MEU5M0FEMSAvKiBERkdDRkcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFQTNCQkFCMjEyQzk3Q0IwMEU5M0FEMSAvKiBERkdDRkcuaCAqLzsgfTsKIAkJ
RkVCNTFGNkMxQTk3QjY4ODAwMUY5MjFDIC8qIFJlZ3Jlc3MxNDE4MDkubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUI1MUY2QjFBOTdCNjg4MDAxRjky
MUMgLyogUmVncmVzczE0MTgwOS5tbSAqLzsgfTsKQEAgLTM1OTEsNiArMzU5MSw4IEBACiAJCTUy
Q0QwRjY0MjI0MkY1NjkwMDRBMThBNSAvKiB0ZXN0ZGZnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBp
bmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSB0ZXN0ZGZnOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQk1MkNEMEY2NzIyNDJGNzFDMDA0QTE4QTUgLyogdGVzdGRmZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSB0ZXN0ZGZnLmNwcDsgcGF0aCA9
IGRmZy90ZXN0ZGZnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJEMTMwOEYy
MjFDRTAzQTAwOUM4MzZDIC8qIGZvby5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgcGF0aCA9IGZvby5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJFRUQ3OTIy
NDkyQjg2ODAwOEY0QzkzIC8qIEZ1bmN0aW9uQWxsb3dsaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZ1bmN0aW9uQWxsb3dsaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTJFRUQ3OTMyNDkyQjg2ODAwOEY0QzkzIC8qIEZ1bmN0aW9uQWxsb3dsaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZ1bmN0aW9uQWxsb3dsaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUyRjZDMzVCMUU3MUVCMDgwMDgxRjRDQyAvKiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi5jcHA7IHBhdGggPSBqcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRjZDMzVDMUU3MUVCMDgwMDgxRjRDQyAv
KiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oOyBwYXRoID0ganMvV2ViQXNzZW1i
bHlXcmFwcGVyRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMwQTYz
NDAxRkEzRTMxQzAwMjZBNTQ1IC8qIFNvdXJjZXNDb2NvYS50eHQgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gU291cmNlc0NvY29hLnR4dDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUy
MjUsOCArNTIyNyw2IEBACiAJCUZFOTlCMjQ4MUMyNEI2RDMwMEM4MjE1OSAvKiBKSVROZWdHZW5l
cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUTmVnR2VuZXJhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1
MSAvKiBCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyZWFr
cG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVBMDg2MUYxODJCN0EwNDAw
RjZEODUxIC8qIERlYnVnZ2VyUHJpbWl0aXZlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZWJ1Z2dlclByaW1pdGl2ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRkVBMEM0MDAxQ0REN0QwRTAwNDgxOTkxIC8qIEZ1bmN0aW9uV2hpdGVsaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZ1bmN0aW9uV2hpdGVsaXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVBMEM0MDExQ0REN0QwRTAwNDgxOTkxIC8q
IEZ1bmN0aW9uV2hpdGVsaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1
bmN0aW9uV2hpdGVsaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQTNCQkE3
MjEyQjY1NTgwMEU5M0FEMSAvKiBDYWxsRnJhbWVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENhbGxGcmFtZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkVBM0JCQUIyMTJDOTdDQjAwRTkzQUQxIC8qIERGR0NGRy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkcuaDsgcGF0aCA9IGRmZy9ERkdDRkcuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCMTM3NTYxQkIxMUVFRTAwQ0Q1MTAwIC8qIE1h
Y3JvQXNzZW1ibGVyQVJNNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWFjcm9Bc3NlbWJsZXJBUk02NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03NzQxLDEwICs3NzQxLDEwIEBACiAJCQkJMEY0RjExRTYyMDlCQ0RBMTAwNzA5NjU0IC8qIENv
bXBpbGVyVGltaW5nU2NvcGUuaCAqLywKIAkJCQlGRTRCRkYyOTFBRDQ3NkU3MDAwODhGODcgLyog
RnVuY3Rpb25PdmVycmlkZXMuY3BwICovLAogCQkJCUZFNEJGRjJBMUFENDc2RTcwMDA4OEY4NyAv
KiBGdW5jdGlvbk92ZXJyaWRlcy5oICovLAotCQkJCUZFQTBDNDAwMUNERDdEMEUwMDQ4MTk5MSAv
KiBGdW5jdGlvbldoaXRlbGlzdC5jcHAgKi8sCi0JCQkJRkVBMEM0MDExQ0REN0QwRTAwNDgxOTkx
IC8qIEZ1bmN0aW9uV2hpdGVsaXN0LmggKi8sCiAJCQkJRkUxQkQwMjIxRTcyMDUyRjAwMTM0QkM5
IC8qIEhlYXBWZXJpZmllci5jcHAgKi8sCiAJCQkJRkUxQkQwMjMxRTcyMDUyRjAwMTM0QkM5IC8q
IEhlYXBWZXJpZmllci5oICovLAorCQkJCTUyRUVENzkyMjQ5MkI4NjgwMDhGNEM5MyAvKiBGdW5j
dGlvbkFsbG93bGlzdC5jcHAgKi8sCisJCQkJNTJFRUQ3OTMyNDkyQjg2ODAwOEY0QzkzIC8qIEZ1
bmN0aW9uQWxsb3dsaXN0LmggKi8sCiAJCQkJRkVDNTc5NzQyMzEwNUY0MjAwQkNBODNGIC8qIElu
dGVncml0eS5jcHAgKi8sCiAJCQkJRkVDNTc5NzUyMzEwNUY0MzAwQkNBODNGIC8qIEludGVncml0
eS5oICovLAogCQkJCUZFQzU3OTc3MjMxMDk1NEIwMEJDQTgzRiAvKiBJbnRlZ3JpdHlJbmxpbmVz
LmggKi8sCkBAIC05Mzg3LDYgKzkzODcsNyBAQAogCQkJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0
MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY1ODc0RUUxOTRGRUIxMjAwQUFCMkMxIC8qIERGR01heUV4aXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkJEQzQ1MTUyMjgwMUIwMENEODkxMCAvKiBERkdNaW5pZmllZEdyYXBoLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MkVFRDc5NDI0OTJCODcwMDA4RjRDOTMgLyogRnVuY3Rpb25BbGxvd2xp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkU4OTJEMTZEMDJCQUYwMDlFNEZEMiAvKiBERkdN
aW5pZmllZElELmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzg1MEIxNTIyNkVENjQxMDA5QUJGOUMg
LyogREZHTWluaWZpZWRJRElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkJEQzQ2MTUy
MjgwMjAwMENEODkxMCAvKiBERkdNaW5pZmllZE5vZGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTU4
NSw3ICs5NTg2LDYgQEAKIAkJCQlGRTRCRkYyQzFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25P
dmVycmlkZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA1MEUxNkY1Q0QwMEIzNDQ2MCAv
KiBGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjJEMkQzOTAxQURGMTAz
RjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFQTBD
NDAzMUNERDdEMUQwMDQ4MTk5MSAvKiBGdW5jdGlvbldoaXRlbGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTMzQTk0OTcyMjU1MzIzMzAwRDQyQjA2IC8qIEZ1enplckFnZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRUNGQUQzNjIzNzJEQUQwMDAyOTE1OTkgLyogRnV6emVyUHJlZGljdGlvbnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2
aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAkocmV2aXNpb24g
MjYyOTA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVn
QWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsMTAgKzExMSwxMCBAQCB2b2lkIGxvd2Vy
QWZ0ZXJSZWdBbGxvYyhDb2RlJiBjb2RlKQogICAgIC8vIElmIHdlIHJ1biBhZnRlciBzdGFjayBh
bGxvY2F0aW9uIHRoZW4gd2UgY2Fubm90IHVzZSB0aG9zZSBjYWxsZWUgc2F2ZXMgdGhhdCBhcmVu
J3QgaW4KICAgICAvLyB0aGUgY2FsbGVlIHNhdmUgbGlzdC4gTm90ZSB0aGF0IHdlIGFyZSBvbmx5
IHJ1biBhZnRlciBzdGFjayBhbGxvY2F0aW9uIGluIC1PMSwgc28gdGhpcwogICAgIC8vIGtpbmQg
b2Ygc2xvcCBpcyBPSy4KLSAgICBSZWdpc3RlclNldCBibGFja2xpc3RlZENhbGxlZVNhdmVzOwor
ICAgIFJlZ2lzdGVyU2V0IGRpc2FsbG93ZWRDYWxsZWVTYXZlczsKICAgICBpZiAoY29kZS5zdGFj
a0lzQWxsb2NhdGVkKCkpIHsKLSAgICAgICAgYmxhY2tsaXN0ZWRDYWxsZWVTYXZlcyA9IFJlZ2lz
dGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGJsYWNrbGlzdGVkQ2FsbGVl
U2F2ZXMuZXhjbHVkZShjb2RlLmNhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CisgICAgICAgIGRpc2Fs
bG93ZWRDYWxsZWVTYXZlcyA9IFJlZ2lzdGVyU2V0OjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCk7Cisg
ICAgICAgIGRpc2FsbG93ZWRDYWxsZWVTYXZlcy5leGNsdWRlKGNvZGUuY2FsbGVlU2F2ZVJlZ2lz
dGVycygpKTsKICAgICB9CiAgICAgCiAgICAgYXV0byBnZXRTY3JhdGNoZXMgPSBbJl0gKFJlZ2lz
dGVyU2V0IHNldCwgQmFuayBiYW5rKSAtPiBzdGQ6OmFycmF5PEFyZywgMj4gewpAQCAtMTIyLDcg
KzEyMiw3IEBAIHZvaWQgbG93ZXJBZnRlclJlZ0FsbG9jKENvZGUmIGNvZGUpCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCAyOyArK2kpIHsKICAgICAgICAgICAgIGJvb2wgZm91bmQg
PSBmYWxzZTsKICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IGNvZGUucmVnc0luUHJpb3JpdHlP
cmRlcihiYW5rKSkgewotICAgICAgICAgICAgICAgIGlmICghc2V0LmdldChyZWcpICYmICFibGFj
a2xpc3RlZENhbGxlZVNhdmVzLmdldChyZWcpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzZXQu
Z2V0KHJlZykgJiYgIWRpc2FsbG93ZWRDYWxsZWVTYXZlcy5nZXQocmVnKSkgewogICAgICAgICAg
ICAgICAgICAgICByZXN1bHRbaV0gPSBUbXAocmVnKTsKICAgICAgICAgICAgICAgICAgICAgc2V0
LnNldChyZWcpOwogICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAyNjI5MDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJERkdQbGFuLmgiCiAjaW5jbHVkZSAiREZHVGh1bmtz
LmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKLSNpbmNsdWRlICJGdW5jdGlvbldoaXRlbGlz
dC5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uQWxsb3dsaXN0LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5o
IgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKQEAg
LTQ4LDE1ICs0OCwxNSBAQCB1bnNpZ25lZCBnZXROdW1Db21waWxhdGlvbnMoKQogfQogCiAjaWYg
RU5BQkxFKERGR19KSVQpCi1zdGF0aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbERG
R1doaXRlbGlzdCgpCitzdGF0aWMgRnVuY3Rpb25BbGxvd2xpc3QmIGVuc3VyZUdsb2JhbERGR0Fs
bG93bGlzdCgpCiB7Ci0gICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxGdW5jdGlvbldoaXRl
bGlzdD4gZGZnV2hpdGVsaXN0OwotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXpl
V2hpdGVsaXN0RmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplV2hpdGVsaXN0Rmxh
ZywgW10gewotICAgICAgICBjb25zdCBjaGFyKiBmdW5jdGlvbldoaXRlbGlzdEZpbGUgPSBPcHRp
b25zOjpkZmdXaGl0ZWxpc3QoKTsKLSAgICAgICAgZGZnV2hpdGVsaXN0LmNvbnN0cnVjdChmdW5j
dGlvbldoaXRlbGlzdEZpbGUpOworICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8RnVuY3Rp
b25BbGxvd2xpc3Q+IGRmZ0FsbG93bGlzdDsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5p
dGlhbGl6ZUFsbG93bGlzdEZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUFsbG93
bGlzdEZsYWcsIFtdIHsKKyAgICAgICAgY29uc3QgY2hhciogZnVuY3Rpb25BbGxvd2xpc3RGaWxl
ID0gT3B0aW9uczo6ZGZnQWxsb3dsaXN0KCk7CisgICAgICAgIGRmZ0FsbG93bGlzdC5jb25zdHJ1
Y3QoZnVuY3Rpb25BbGxvd2xpc3RGaWxlKTsKICAgICB9KTsKLSAgICByZXR1cm4gZGZnV2hpdGVs
aXN0OworICAgIHJldHVybiBkZmdBbGxvd2xpc3Q7CiB9CiAKIHN0YXRpYyBDb21waWxhdGlvblJl
c3VsdCBjb21waWxlSW1wbCgKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIENvbXBpbGF0aW9uUmVz
dWx0IGNvbXBpbGVJbXBsKAogICAgIFJlZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYg
Y2FsbGJhY2spCiB7CiAgICAgaWYgKCFPcHRpb25zOjpieXRlY29kZVJhbmdlVG9ERkdDb21waWxl
KCkuaXNJblJhbmdlKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zU2l6ZSgpKQotICAgICAgICB8fCAh
ZW5zdXJlR2xvYmFsREZHV2hpdGVsaXN0KCkuY29udGFpbnMoY29kZUJsb2NrKSkKKyAgICAgICAg
fHwgIWVuc3VyZUdsb2JhbERGR0FsbG93bGlzdCgpLmNvbnRhaW5zKGNvZGVCbG9jaykpCiAgICAg
ICAgIHJldHVybiBDb21waWxhdGlvbkZhaWxlZDsKICAgICAKICAgICBudW1Db21waWxhdGlvbnMr
KzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hlY2tJbmplY3Rp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjYyOTA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMjEgKzMzLDIxIEBACiAjaW5jbHVkZSAiREZHTmF0dXJhbExvb3Bz
LmgiCiAjaW5jbHVkZSAiREZHUGhhc2UuaCIKICNpbmNsdWRlICJGVExDYXBhYmlsaXRpZXMuaCIK
LSNpbmNsdWRlICJGdW5jdGlvbldoaXRlbGlzdC5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uQWxsb3ds
aXN0LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1zdGF0
aWMgRnVuY3Rpb25XaGl0ZWxpc3QmIGVuc3VyZUdsb2JhbEZUTFdoaXRlbGlzdCgpCitzdGF0aWMg
RnVuY3Rpb25BbGxvd2xpc3QmIGVuc3VyZUdsb2JhbEZUTEFsbG93bGlzdCgpCiB7Ci0gICAgc3Rh
dGljIExhenlOZXZlckRlc3Ryb3llZDxGdW5jdGlvbldoaXRlbGlzdD4gZnRsV2hpdGVsaXN0Owot
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplV2hpdGVsaXN0RmxhZzsKLSAgICBz
dGQ6OmNhbGxfb25jZShpbml0aWFsaXplV2hpdGVsaXN0RmxhZywgW10gewotICAgICAgICBjb25z
dCBjaGFyKiBmdW5jdGlvbldoaXRlbGlzdEZpbGUgPSBPcHRpb25zOjpmdGxXaGl0ZWxpc3QoKTsK
LSAgICAgICAgZnRsV2hpdGVsaXN0LmNvbnN0cnVjdChmdW5jdGlvbldoaXRlbGlzdEZpbGUpOwor
ICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8RnVuY3Rpb25BbGxvd2xpc3Q+IGZ0bEFsbG93
bGlzdDsKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZUFsbG93bGlzdEZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZUFsbG93bGlzdEZsYWcsIFtdIHsKKyAgICAg
ICAgY29uc3QgY2hhciogZnVuY3Rpb25BbGxvd2xpc3RGaWxlID0gT3B0aW9uczo6ZnRsQWxsb3ds
aXN0KCk7CisgICAgICAgIGZ0bEFsbG93bGlzdC5jb25zdHJ1Y3QoZnVuY3Rpb25BbGxvd2xpc3RG
aWxlKTsKICAgICB9KTsKLSAgICByZXR1cm4gZnRsV2hpdGVsaXN0OworICAgIHJldHVybiBmdGxB
bGxvd2xpc3Q7CiB9CiAKIHVzaW5nIE5hdHVyYWxMb29wID0gQ1BTTmF0dXJhbExvb3A7CkBAIC03
Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFPcHRpb25zOjpieXRlY29kZVJhbmdl
VG9GVExDb21waWxlKCkuaXNJblJhbmdlKG1fZ3JhcGgubV9wcm9maWxlZEJsb2NrLT5pbnN0cnVj
dGlvbnNTaXplKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICgh
ZW5zdXJlR2xvYmFsRlRMV2hpdGVsaXN0KCkuY29udGFpbnMobV9ncmFwaC5tX3Byb2ZpbGVkQmxv
Y2spKQorICAgICAgICBpZiAoIWVuc3VyZUdsb2JhbEZUTEFsbG93bGlzdCgpLmNvbnRhaW5zKG1f
Z3JhcGgubV9wcm9maWxlZEJsb2NrKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgCiAjaWYgRU5BQkxFKEZUTF9KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmNwcAkocmV2aXNpb24gMjYyOTA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDMsNyArMTMwMyw3IEBAIE5FVkVSX0lOTElORSBi
b29sIEhlYXA6OnJ1bkJlZ2luUGhhc2UoR0MKIAogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIFBhcmFsbGVsTW9kZUVuYWJsZXIgcGFyYWxsZWxNb2RlRW5hYmxlcigqc2xvdFZpc2l0b3Ip
OwotICAgICAgICAgICAgICAgIHNsb3RWaXNpdG9yLT5kcmFpbkZyb21TaGFyZWQoU2xvdFZpc2l0
b3I6OlNsYXZlRHJhaW4pOworICAgICAgICAgICAgICAgIHNsb3RWaXNpdG9yLT5kcmFpbkZyb21T
aGFyZWQoU2xvdFZpc2l0b3I6OkhlbHBlckRyYWluKTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFy
a2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5l
U3RhY2tNYXJrZXIuY3BwCShyZXZpc2lvbiAyNjI5MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyAr
MTAwLDcgQEAgc3RhdGljIHZvaWQgY29weU1lbW9yeSh2b2lkKiBkc3QsIGNvbnN0IAogLy8gYWNx
dWlyZSBhIGxvY2suIFNpbmNlICd0aHJlYWQnIGlzIHN1c3BlbmRlZCwgdHJ5aW5nIHRvIGFjcXVp
cmUgYSBsb2NrCiAvLyB3aWxsIGRlYWRsb2NrIGlmICd0aHJlYWQnIGhvbGRzIHRoYXQgbG9jay4K
IC8vIFRoaXMgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB0aGUgbWVtb3J5IGNvcHlpbmcsIHdhcyBj
YXVzaW5nIHByb2JsZW1zIHdpdGggQWRkcmVzcyBTYW5pdGl6ZXIgaW4KLS8vIGFwcHMuIFNpbmNl
IHdlIGNhbm5vdCBibGFja2xpc3QgdGhlIHN5c3RlbSBtZW1jcHkgd2UgbXVzdCB1c2Ugb3VyIG93
biBuYWl2ZSBpbXBsZW1lbnRhdGlvbiwKKy8vIGFwcHMuIFNpbmNlIHdlIGNhbm5vdCBkaXNhbGxv
dyB0aGUgc3lzdGVtIG1lbWNweSB3ZSBtdXN0IHVzZSBvdXIgb3duIG5haXZlIGltcGxlbWVudGF0
aW9uLAogLy8gY29weU1lbW9yeSwgZm9yIEFTYW4gdG8gd29yayBvbiBlaXRoZXIgaW5zdHJ1bWVu
dGVkIG9yIG5vbi1pbnN0cnVtZW50ZWQgYnVpbGRzLiBUaGlzIGlzIG5vdCBhCiAvLyBzaWduaWZp
Y2FudCBwZXJmb3JtYW5jZSBsb3NzIGFzIHRyeUNvcHlPdGhlclRocmVhZFN0YWNrIGlzIG9ubHkg
Y2FsbGVkIGFzIHBhcnQgb2YgYW4gTyhoZWFwc2l6ZSkKIC8vIG9wZXJhdGlvbi4gQXMgdGhlIGhl
YXAgaXMgZ2VuZXJhbGx5IG11Y2ggbGFyZ2VyIHRoYW4gdGhlIHN0YWNrIHRoZSBwZXJmb3JtYW5j
ZSBoaXQgaXMgbWluaW1hbC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RW
aXNpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90
VmlzaXRvci5jcHAJKHJldmlzaW9uIDI2MjkwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE2LDcgKzYxNiw3IEBAIE5F
VkVSX0lOTElORSBTbG90VmlzaXRvcjo6U2hhcmVkRHJhaW5SZXMKICAgICAgICAgICAgICAgICBt
X2hlYXAubV9udW1iZXJPZkFjdGl2ZVBhcmFsbGVsTWFya2Vycy0tOwogICAgICAgICAgICAgbV9o
ZWFwLm1fbnVtYmVyT2ZXYWl0aW5nUGFyYWxsZWxNYXJrZXJzKys7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChzaGFyZWREcmFpbk1vZGUgPT0gTWFzdGVyRHJhaW4pIHsKKyAgICAgICAg
ICAgIGlmIChzaGFyZWREcmFpbk1vZGUgPT0gTWFpbkRyYWluKSB7CiAgICAgICAgICAgICAgICAg
d2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0VsYXBzZWQodGltZW91
dCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVkRHJhaW5SZXN1bHQ6OlRp
bWVkT3V0OwpAQCAtNjMyLDcgKzYzMiw3IEBAIE5FVkVSX0lOTElORSBTbG90VmlzaXRvcjo6U2hh
cmVkRHJhaW5SZXMKICAgICAgICAgICAgICAgICAgICAgbV9oZWFwLm1fbWFya2luZ0NvbmRpdGlv
blZhcmlhYmxlLndhaXRVbnRpbChtX2hlYXAubV9tYXJraW5nTXV0ZXgsIHRpbWVvdXQpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKHNoYXJlZERyYWluTW9kZSA9PSBTbGF2ZURyYWluKTsKKyAgICAgICAgICAgICAgICBBU1NF
UlQoc2hhcmVkRHJhaW5Nb2RlID09IEhlbHBlckRyYWluKTsKIAogICAgICAgICAgICAgICAgIGlm
IChoYXNFbGFwc2VkKHRpbWVvdXQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2hhcmVk
RHJhaW5SZXN1bHQ6OlRpbWVkT3V0OwpAQCAtNzA4LDcgKzcwOCw3IEBAIE5FVkVSX0lOTElORSBT
bG90VmlzaXRvcjo6U2hhcmVkRHJhaW5SZXMKIFNsb3RWaXNpdG9yOjpTaGFyZWREcmFpblJlc3Vs
dCBTbG90VmlzaXRvcjo6ZHJhaW5JblBhcmFsbGVsKE1vbm90b25pY1RpbWUgdGltZW91dCkKIHsK
ICAgICBkb25hdGVBbmREcmFpbih0aW1lb3V0KTsKLSAgICByZXR1cm4gZHJhaW5Gcm9tU2hhcmVk
KE1hc3RlckRyYWluLCB0aW1lb3V0KTsKKyAgICByZXR1cm4gZHJhaW5Gcm9tU2hhcmVkKE1haW5E
cmFpbiwgdGltZW91dCk7CiB9CiAKIFNsb3RWaXNpdG9yOjpTaGFyZWREcmFpblJlc3VsdCBTbG90
VmlzaXRvcjo6ZHJhaW5JblBhcmFsbGVsUGFzc2l2ZWx5KE1vbm90b25pY1RpbWUgdGltZW91dCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkocmV2aXNpb24g
MjYyOTA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYWluKE1v
bm90b25pY1RpbWUgdGltZW91dCA9IE1vbm90b25pY1RpbWU6OmluZmluaXR5KCkpOwogICAgIHZv
aWQgZG9uYXRlQW5kRHJhaW4oTW9ub3RvbmljVGltZSB0aW1lb3V0ID0gTW9ub3RvbmljVGltZTo6
aW5maW5pdHkoKSk7CiAgICAgCi0gICAgZW51bSBTaGFyZWREcmFpbk1vZGUgeyBTbGF2ZURyYWlu
LCBNYXN0ZXJEcmFpbiB9OworICAgIGVudW0gU2hhcmVkRHJhaW5Nb2RlIHsgSGVscGVyRHJhaW4s
IE1haW5EcmFpbiB9OwogICAgIGVudW0gY2xhc3MgU2hhcmVkRHJhaW5SZXN1bHQgeyBEb25lLCBU
aW1lZE91dCB9OwogICAgIFNoYXJlZERyYWluUmVzdWx0IGRyYWluRnJvbVNoYXJlZChTaGFyZWRE
cmFpbk1vZGUsIE1vbm90b25pY1RpbWUgdGltZW91dCA9IE1vbm90b25pY1RpbWU6OmluZmluaXR5
KCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9vYmpjX2dlbmVyYXRvci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQkocmV2aXNpb24g
MjYyOTA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vb2JqY19nZW5lcmF0b3IucHkJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw5ICsxMzEsOSBAQCBj
bGFzcyBPYmpDR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGlmIHNlbGYubW9kZWwoKS5m
cmFtZXdvcmsgaXMgRnJhbWV3b3Jrcy5UZXN0OgogICAgICAgICAgICAgcmV0dXJuIFRydWUKIAot
ICAgICAgICB3aGl0ZWxpc3QgPSBzZXQoT2JqQ0dlbmVyYXRvci5ET01BSU5TX1RPX0dFTkVSQVRF
KQotICAgICAgICB3aGl0ZWxpc3QudXBkYXRlKHNldChbJ0NvbnNvbGUnLCAnRGVidWdnZXInLCAn
UnVudGltZSddKSkKLSAgICAgICAgcmV0dXJuIGRvbWFpbi5kb21haW5fbmFtZSBpbiB3aGl0ZWxp
c3QKKyAgICAgICAgYWxsb3dsaXN0ID0gc2V0KE9iakNHZW5lcmF0b3IuRE9NQUlOU19UT19HRU5F
UkFURSkKKyAgICAgICAgYWxsb3dsaXN0LnVwZGF0ZShzZXQoWydDb25zb2xlJywgJ0RlYnVnZ2Vy
JywgJ1J1bnRpbWUnXSkpCisgICAgICAgIHJldHVybiBkb21haW4uZG9tYWluX25hbWUgaW4gYWxs
b3dsaXN0CiAKICAgICBkZWYgc2hvdWxkX2dlbmVyYXRlX2NvbW1hbmRzX2Zvcl9kb21haW4oc2Vs
ZiwgZG9tYWluKToKICAgICAgICAgaWYgbm90IGxlbihzZWxmLmNvbW1hbmRzX2Zvcl9kb21haW4o
ZG9tYWluKSk6CkBAIC0xNDIsOCArMTQyLDggQEAgY2xhc3MgT2JqQ0dlbmVyYXRvcihHZW5lcmF0
b3IpOgogICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuVGVz
dDoKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICAgICAgd2hpdGVsaXN0ID0gc2V0KE9i
akNHZW5lcmF0b3IuRE9NQUlOU19UT19HRU5FUkFURSkKLSAgICAgICAgcmV0dXJuIGRvbWFpbi5k
b21haW5fbmFtZSBpbiB3aGl0ZWxpc3QKKyAgICAgICAgYWxsb3dsaXN0ID0gc2V0KE9iakNHZW5l
cmF0b3IuRE9NQUlOU19UT19HRU5FUkFURSkKKyAgICAgICAgcmV0dXJuIGRvbWFpbi5kb21haW5f
bmFtZSBpbiBhbGxvd2xpc3QKIAogICAgIGRlZiBzaG91bGRfZ2VuZXJhdGVfZXZlbnRzX2Zvcl9k
b21haW4oc2VsZiwgZG9tYWluKToKICAgICAgICAgaWYgbm90IGxlbihzZWxmLmV2ZW50c19mb3Jf
ZG9tYWluKGRvbWFpbikpOgpAQCAtMTUyLDkgKzE1Miw5IEBAIGNsYXNzIE9iakNHZW5lcmF0b3Io
R2VuZXJhdG9yKToKICAgICAgICAgaWYgc2VsZi5tb2RlbCgpLmZyYW1ld29yayBpcyBGcmFtZXdv
cmtzLlRlc3Q6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgICAgIHdoaXRlbGlzdCA9
IHNldChPYmpDR2VuZXJhdG9yLkRPTUFJTlNfVE9fR0VORVJBVEUpCi0gICAgICAgIHdoaXRlbGlz
dC5hZGQoJ0NvbnNvbGUnKQotICAgICAgICByZXR1cm4gZG9tYWluLmRvbWFpbl9uYW1lIGluIHdo
aXRlbGlzdAorICAgICAgICBhbGxvd2xpc3QgPSBzZXQoT2JqQ0dlbmVyYXRvci5ET01BSU5TX1RP
X0dFTkVSQVRFKQorICAgICAgICBhbGxvd2xpc3QuYWRkKCdDb25zb2xlJykKKyAgICAgICAgcmV0
dXJuIGRvbWFpbi5kb21haW5fbmFtZSBpbiBhbGxvd2xpc3QKIAogICAgICMgT2JqQyBlbnVtIGFu
ZCB0eXBlIG5hbWVzLgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI2MjkwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3
LDggQEAKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6Lmgi
CiAjaW5jbHVkZSAiRnJhbWVUcmFjZXJzLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25BbGxvd2xpc3Qu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkZ1bmN0aW9uV2hp
dGVsaXN0LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTM0MCwyMSArMzQw
LDIxIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlKQogZW51bSBFbnRyeUtpbmQgeyBQcm9s
b2d1ZSwgQXJpdHlDaGVjayB9OwogCiAjaWYgRU5BQkxFKEpJVCkKLXN0YXRpYyBGdW5jdGlvbldo
aXRlbGlzdCYgZW5zdXJlR2xvYmFsSklUV2hpdGVsaXN0KCkKK3N0YXRpYyBGdW5jdGlvbkFsbG93
bGlzdCYgZW5zdXJlR2xvYmFsSklUQWxsb3dsaXN0KCkKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVy
RGVzdHJveWVkPEZ1bmN0aW9uV2hpdGVsaXN0PiBiYXNlbGluZVdoaXRlbGlzdDsKLSAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZVdoaXRlbGlzdEZsYWc7Ci0gICAgc3RkOjpjYWxs
X29uY2UoaW5pdGlhbGl6ZVdoaXRlbGlzdEZsYWcsIFtdIHsKLSAgICAgICAgY29uc3QgY2hhciog
ZnVuY3Rpb25XaGl0ZWxpc3RGaWxlID0gT3B0aW9uczo6aml0V2hpdGVsaXN0KCk7Ci0gICAgICAg
IGJhc2VsaW5lV2hpdGVsaXN0LmNvbnN0cnVjdChmdW5jdGlvbldoaXRlbGlzdEZpbGUpOworICAg
IHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8RnVuY3Rpb25BbGxvd2xpc3Q+IGJhc2VsaW5lQWxs
b3dsaXN0OworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplQWxsb3dsaXN0Rmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplQWxsb3dsaXN0RmxhZywgW10geworICAg
ICAgICBjb25zdCBjaGFyKiBmdW5jdGlvbkFsbG93bGlzdEZpbGUgPSBPcHRpb25zOjpqaXRBbGxv
d2xpc3QoKTsKKyAgICAgICAgYmFzZWxpbmVBbGxvd2xpc3QuY29uc3RydWN0KGZ1bmN0aW9uQWxs
b3dsaXN0RmlsZSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIGJhc2VsaW5lV2hpdGVsaXN0OworICAg
IHJldHVybiBiYXNlbGluZUFsbG93bGlzdDsKIH0KIAogaW5saW5lIGJvb2wgc2hvdWxkSklUKENv
ZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIGlmICghT3B0aW9uczo6Ynl0ZWNvZGVSYW5nZVRv
SklUQ29tcGlsZSgpLmlzSW5SYW5nZShjb2RlQmxvY2stPmluc3RydWN0aW9uc1NpemUoKSkKLSAg
ICAgICAgfHwgIWVuc3VyZUdsb2JhbEpJVFdoaXRlbGlzdCgpLmNvbnRhaW5zKGNvZGVCbG9jaykp
CisgICAgICAgIHx8ICFlbnN1cmVHbG9iYWxKSVRBbGxvd2xpc3QoKS5jb250YWlucyhjb2RlQmxv
Y2spKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gVk06OmNhblVzZUpJVCgp
ICYmIE9wdGlvbnM6OnVzZUJhc2VsaW5lSklUKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHJldmlzaW9uIDI2MjkwOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEz
NSw5ICsxMzUsOSBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluCiAg
ICAgdihPcHRpb25SYW5nZSwgYnl0ZWNvZGVSYW5nZVRvSklUQ29tcGlsZSwgMCwgTm9ybWFsLCAi
Ynl0ZWNvZGUgc2l6ZSByYW5nZSB0byBhbGxvdyBjb21waWxhdGlvbiBvbiwgZS5nLiAxOjEwMCIp
IFwKICAgICB2KE9wdGlvblJhbmdlLCBieXRlY29kZVJhbmdlVG9ERkdDb21waWxlLCAwLCBOb3Jt
YWwsICJieXRlY29kZSBzaXplIHJhbmdlIHRvIGFsbG93IERGRyBjb21waWxhdGlvbiBvbiwgZS5n
LiAxOjEwMCIpIFwKICAgICB2KE9wdGlvblJhbmdlLCBieXRlY29kZVJhbmdlVG9GVExDb21waWxl
LCAwLCBOb3JtYWwsICJieXRlY29kZSBzaXplIHJhbmdlIHRvIGFsbG93IEZUTCBjb21waWxhdGlv
biBvbiwgZS5nLiAxOjEwMCIpIFwKLSAgICB2KE9wdGlvblN0cmluZywgaml0V2hpdGVsaXN0LCBu
dWxscHRyLCBOb3JtYWwsICJmaWxlIHdpdGggbGlzdCBvZiBmdW5jdGlvbiBzaWduYXR1cmVzIHRv
IGFsbG93IGNvbXBpbGF0aW9uIG9uIikgXAotICAgIHYoT3B0aW9uU3RyaW5nLCBkZmdXaGl0ZWxp
c3QsIG51bGxwdHIsIE5vcm1hbCwgImZpbGUgd2l0aCBsaXN0IG9mIGZ1bmN0aW9uIHNpZ25hdHVy
ZXMgdG8gYWxsb3cgREZHIGNvbXBpbGF0aW9uIG9uIikgXAotICAgIHYoT3B0aW9uU3RyaW5nLCBm
dGxXaGl0ZWxpc3QsIG51bGxwdHIsIE5vcm1hbCwgImZpbGUgd2l0aCBsaXN0IG9mIGZ1bmN0aW9u
IHNpZ25hdHVyZXMgdG8gYWxsb3cgRlRMIGNvbXBpbGF0aW9uIG9uIikgXAorICAgIHYoT3B0aW9u
U3RyaW5nLCBqaXRBbGxvd2xpc3QsIG51bGxwdHIsIE5vcm1hbCwgImZpbGUgd2l0aCBuZXdsaW5l
IHNlcGFyYXRlZCBsaXN0IG9mIGZ1bmN0aW9uIHNpZ25hdHVyZXMgdG8gYWxsb3cgY29tcGlsYXRp
b24gb24iKSBcCisgICAgdihPcHRpb25TdHJpbmcsIGRmZ0FsbG93bGlzdCwgbnVsbHB0ciwgTm9y
bWFsLCAiZmlsZSB3aXRoIG5ld2xpbmUgc2VwYXJhdGVkIGxpc3Qgb2YgZnVuY3Rpb24gc2lnbmF0
dXJlcyB0byBhbGxvdyBERkcgY29tcGlsYXRpb24gb24iKSBcCisgICAgdihPcHRpb25TdHJpbmcs
IGZ0bEFsbG93bGlzdCwgbnVsbHB0ciwgTm9ybWFsLCAiZmlsZSB3aXRoIG5ld2xpbmUgc2VwYXJh
dGVkIGxpc3Qgb2YgZnVuY3Rpb24gc2lnbmF0dXJlcyB0byBhbGxvdyBGVEwgY29tcGlsYXRpb24g
b24iKSBcCiAgICAgdihCb29sLCBkdW1wU291cmNlQXRERkdUaW1lLCBmYWxzZSwgTm9ybWFsLCAi
ZHVtcHMgc291cmNlIGNvZGUgb2YgSlMgZnVuY3Rpb24gYmVpbmcgREZHIGNvbXBpbGVkIikgXAog
ICAgIHYoQm9vbCwgZHVtcEJ5dGVjb2RlQXRERkdUaW1lLCBmYWxzZSwgTm9ybWFsLCAiZHVtcHMg
Ynl0ZWNvZGUgb2YgSlMgZnVuY3Rpb24gYmVpbmcgREZHIGNvbXBpbGVkIikgXAogICAgIHYoQm9v
bCwgZHVtcEdyYXBoQWZ0ZXJQYXJzaW5nLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCkBAIC0z
NjcsNyArMzY3LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgog
ICAgIHYoQm9vbCwgY29sbGVjdFNhbXBsaW5nUHJvZmlsZXJEYXRhRm9ySlNDU2hlbGwsIGZhbHNl
LCBOb3JtYWwsICJUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBKU0Mgc2hlbGwncyAtLXNhbXBsZSBv
cHRpb24uIikgXAogICAgIHYoVW5zaWduZWQsIHNhbXBsaW5nUHJvZmlsZXJUb3BGdW5jdGlvbnND
b3VudCwgMTIsIE5vcm1hbCwgIk51bWJlciBvZiB0b3AgZnVuY3Rpb25zIHRvIHJlcG9ydCB3aGVu
IHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLiIpIFwKICAgICB2KFVuc2lnbmVkLCBz
YW1wbGluZ1Byb2ZpbGVyVG9wQnl0ZWNvZGVzQ291bnQsIDQwLCBOb3JtYWwsICJOdW1iZXIgb2Yg
dG9wIGJ5dGVjb2RlcyB0byByZXBvcnQgd2hlbiB1c2luZyB0aGUgY29tbWFuZCBsaW5lIGludGVy
ZmFjZS4iKSBcCi0gICAgdihPcHRpb25TdHJpbmcsIHNhbXBsaW5nUHJvZmlsZXJQYXRoLCBudWxs
cHRyLCBOb3JtYWwsICJUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHRvIHdyaXRlIHNhbXBpbGlu
ZyBwcm9maWxlciBvdXRwdXQgdG8uIFRoaXMgcHJvYmFibHkgd2lsbCBub3Qgd29yayB3aXRoIFdL
MiB1bmxlc3MgdGhlIHBhdGggaXMgaW4gdGhlIHdoaXRlbGlzdC4iKSBcCisgICAgdihPcHRpb25T
dHJpbmcsIHNhbXBsaW5nUHJvZmlsZXJQYXRoLCBudWxscHRyLCBOb3JtYWwsICJUaGUgcGF0aCB0
byB0aGUgZGlyZWN0b3J5IHRvIHdyaXRlIHNhbXBpbGluZyBwcm9maWxlciBvdXRwdXQgdG8uIFRo
aXMgcHJvYmFibHkgd2lsbCBub3Qgd29yayB3aXRoIFdLMiB1bmxlc3MgdGhlIHBhdGggaXMgaW4g
dGhlIHNhbmRib3guIikgXAogICAgIHYoQm9vbCwgc2FtcGxlQ0NvZGUsIGZhbHNlLCBOb3JtYWws
ICJDYXVzZXMgdGhlIHNhbXBsaW5nIHByb2ZpbGVyIHRvIHJlY29yZCBwcm9maWxpbmcgZGF0YSBm
b3IgQyBmcmFtZXMuIikgXAogICAgIFwKICAgICB2KEJvb2wsIGFsd2F5c0dlbmVyYXRlUENUb0Nv
ZGVPcmlnaW5NYXAsIGZhbHNlLCBOb3JtYWwsICJUaGlzIHdpbGwgbWFrZSBzdXJlIHdlIGFsd2F5
cyBnZW5lcmF0ZSBhIFBDVG9Db2RlT3JpZ2luTWFwIGZvciBKSVRlZCBjb2RlLiIpIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNw
cAkocmV2aXNpb24gMjYyOTA4KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVu
Y3Rpb25XaGl0ZWxpc3QuY3BwOjI2MjkwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9GdW5jdGlvbkFsbG93bGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGdW5jdGlv
bldoaXRlbGlzdC5oIgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitGdW5jdGlvbldoaXRlbGlzdDo6RnVuY3Rpb25XaGl0ZWxpc3QoY29uc3QgY2hhciog
ZmlsZW5hbWUpCit7CisgICAgaWYgKCFmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
RklMRSogZiA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOworICAgIGlmICghZikgeworICAgICAgICBk
YXRhTG9nRigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcy4gRGlkIHlvdSBhZGQgdGhlIGZpbGUtcmVh
ZC1kYXRhIGVudGl0bGVtZW50IHRvIFdlYlByb2Nlc3Muc2I/XG4iLCBmaWxlbmFtZSk7IAorICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9oYXNBY3RpdmVXaGl0ZWxpc3QgPSB0cnVlOwor
CisgICAgY2hhciogbGluZTsKKyAgICBjaGFyIGJ1ZmZlcltCVUZTSVpdOworICAgIHdoaWxlICgo
bGluZSA9IGZnZXRzKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGYpKSkgeworICAgICAgICBpZiAo
c3Ryc3RyKGxpbmUsICIvLyIpID09IGxpbmUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAvLyBHZXQgcmlkIG9mIG5ld2xpbmVzIGF0IHRoZSBlbmRzIG9mIHRoZSBzdHJpbmdzLgor
ICAgICAgICBzaXplX3QgbGVuZ3RoID0gc3RybGVuKGxpbmUpOworICAgICAgICBpZiAobGluZVts
ZW5ndGggLSAxXSA9PSAnXG4nKSB7CisgICAgICAgICAgICBsaW5lW2xlbmd0aCAtIDFdID0gJ1ww
JzsKKyAgICAgICAgICAgIGxlbmd0aC0tOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2tpcCBl
bXB0eSBsaW5lcy4KKyAgICAgICAgaWYgKCFsZW5ndGgpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgCisgICAgICAgIG1fZW50cmllcy5hZGQoU3RyaW5nKGxpbmUsIGxlbmd0aCkpOwor
ICAgIH0KKworICAgIGludCByZXN1bHQgPSBmY2xvc2UoZik7CisgICAgaWYgKHJlc3VsdCkKKyAg
ICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxlICVzOiAlc1xuIiwgZmlsZW5hbWUs
IHN0cmVycm9yKGVycm5vKSk7Cit9CisKK2Jvb2wgRnVuY3Rpb25XaGl0ZWxpc3Q6OmNvbnRhaW5z
KENvZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAoreworICAgIGlmICghbV9oYXNBY3RpdmVXaGl0
ZWxpc3QpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1fZW50cmllcy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpm
cm9tVVRGOChjb2RlQmxvY2stPmluZmVycmVkTmFtZSgpKTsKKyAgICBpZiAobV9lbnRyaWVzLmNv
bnRhaW5zKG5hbWUpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFN0cmluZyBoYXNoID0g
U3RyaW5nOjpmcm9tVVRGOChjb2RlQmxvY2stPmhhc2hBc1N0cmluZ0lmUG9zc2libGUoKSk7Cisg
ICAgaWYgKG1fZW50cmllcy5jb250YWlucyhoYXNoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gbV9lbnRyaWVzLmNvbnRhaW5zKG5hbWUgKyAnIycgKyBoYXNoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAJKHJl
dmlzaW9uIDI2MjkwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbkFs
bG93bGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGdW5jdGlvbldoaXRlbGlzdC5oIgorI2luY2x1
ZGUgIkZ1bmN0aW9uQWxsb3dsaXN0LmgiCiAKICNpZiBFTkFCTEUoSklUKQogCkBAIC0zNCw3ICsz
NCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1GdW5jdGlvbldoaXRlbGlzdDo6RnVuY3Rpb25X
aGl0ZWxpc3QoY29uc3QgY2hhciogZmlsZW5hbWUpCitGdW5jdGlvbkFsbG93bGlzdDo6RnVuY3Rp
b25BbGxvd2xpc3QoY29uc3QgY2hhciogZmlsZW5hbWUpCiB7CiAgICAgaWYgKCFmaWxlbmFtZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDUsNyArNDUsNyBAQCBGdW5jdGlvbldoaXRlbGlzdDo6RnVu
Y3Rpb25XaGl0ZWxpc3QoY29uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2hhc0Fj
dGl2ZVdoaXRlbGlzdCA9IHRydWU7CisgICAgbV9oYXNBY3RpdmVBbGxvd2xpc3QgPSB0cnVlOwog
CiAgICAgY2hhciogbGluZTsKICAgICBjaGFyIGJ1ZmZlcltCVUZTSVpdOwpAQCAtNzIsOSArNzIs
OSBAQCBGdW5jdGlvbldoaXRlbGlzdDo6RnVuY3Rpb25XaGl0ZWxpc3QoY29uCiAgICAgICAgIGRh
dGFMb2dGKCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBzdHJlcnJv
cihlcnJubykpOwogfQogCi1ib29sIEZ1bmN0aW9uV2hpdGVsaXN0Ojpjb250YWlucyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaykgY29uc3QKK2Jvb2wgRnVuY3Rpb25BbGxvd2xpc3Q6OmNvbnRhaW5zKENv
ZGVCbG9jayogY29kZUJsb2NrKSBjb25zdAogewotICAgIGlmICghbV9oYXNBY3RpdmVXaGl0ZWxp
c3QpCisgICAgaWYgKCFtX2hhc0FjdGl2ZUFsbG93bGlzdCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBpZiAobV9lbnRyaWVzLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5oCShyZXZpc2lvbiAyNjI5MDgpCShm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbldoaXRlbGlzdC5oOjI2Mjkw
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeyAKKworY2xhc3MgQ29kZUJsb2NrOworCitjbGFz
cyBGdW5jdGlvbldoaXRlbGlzdCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRnVuY3Rpb25XaGl0
ZWxpc3QoY29uc3QgY2hhciopOworCisgICAgYm9vbCBjb250YWlucyhDb2RlQmxvY2sqKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9lbnRyaWVzOworICAgIGJvb2wg
bV9oYXNBY3RpdmVXaGl0ZWxpc3QgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xp
c3QuaAkocmV2aXNpb24gMjYyOTA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1
bmN0aW9uQWxsb3dsaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMTUgKzMyLDE1IEBAIG5h
bWVzcGFjZSBKU0MgeyAKIAogY2xhc3MgQ29kZUJsb2NrOwogCi1jbGFzcyBGdW5jdGlvbldoaXRl
bGlzdCB7CitjbGFzcyBGdW5jdGlvbkFsbG93bGlzdCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
RnVuY3Rpb25XaGl0ZWxpc3QoY29uc3QgY2hhciopOworICAgIGV4cGxpY2l0IEZ1bmN0aW9uQWxs
b3dsaXN0KGNvbnN0IGNoYXIqKTsKIAogICAgIGJvb2wgY29udGFpbnMoQ29kZUJsb2NrKikgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fZW50cmllczsKLSAgICBib29s
IG1faGFzQWN0aXZlV2hpdGVsaXN0IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzQWN0aXZlQWxs
b3dsaXN0IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uV2hpdGVsaXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25XaGl0ZWxpc3QuY3BwCShyZXZp
c2lvbiAyNjI5MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25XaGl0
ZWxpc3QuY3BwCShub25leGlzdGVudCkKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJGdW5jdGlvbldoaXRlbGlzdC5oIgot
Ci0jaWYgRU5BQkxFKEpJVCkKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgPHN0
ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1GdW5jdGlv
bldoaXRlbGlzdDo6RnVuY3Rpb25XaGl0ZWxpc3QoY29uc3QgY2hhciogZmlsZW5hbWUpCi17Ci0g
ICAgaWYgKCFmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRklMRSogZiA9IGZvcGVu
KGZpbGVuYW1lLCAiciIpOwotICAgIGlmICghZikgewotICAgICAgICBkYXRhTG9nRigiRmFpbGVk
IHRvIG9wZW4gZmlsZSAlcy4gRGlkIHlvdSBhZGQgdGhlIGZpbGUtcmVhZC1kYXRhIGVudGl0bGVt
ZW50IHRvIFdlYlByb2Nlc3Muc2I/XG4iLCBmaWxlbmFtZSk7IAotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgbV9oYXNBY3RpdmVXaGl0ZWxpc3QgPSB0cnVlOwotCi0gICAgY2hhciogbGlu
ZTsKLSAgICBjaGFyIGJ1ZmZlcltCVUZTSVpdOwotICAgIHdoaWxlICgobGluZSA9IGZnZXRzKGJ1
ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGYpKSkgewotICAgICAgICBpZiAoc3Ryc3RyKGxpbmUsICIv
LyIpID09IGxpbmUpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBHZXQgcmlk
IG9mIG5ld2xpbmVzIGF0IHRoZSBlbmRzIG9mIHRoZSBzdHJpbmdzLgotICAgICAgICBzaXplX3Qg
bGVuZ3RoID0gc3RybGVuKGxpbmUpOwotICAgICAgICBpZiAobGluZVtsZW5ndGggLSAxXSA9PSAn
XG4nKSB7Ci0gICAgICAgICAgICBsaW5lW2xlbmd0aCAtIDFdID0gJ1wwJzsKLSAgICAgICAgICAg
IGxlbmd0aC0tOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU2tpcCBlbXB0eSBsaW5lcy4KLSAg
ICAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAg
ICAgIG1fZW50cmllcy5hZGQoU3RyaW5nKGxpbmUsIGxlbmd0aCkpOwotICAgIH0KLQotICAgIGlu
dCByZXN1bHQgPSBmY2xvc2UoZik7Ci0gICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0Yo
IkZhaWxlZCB0byBjbG9zZSBmaWxlICVzOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5v
KSk7Ci19Ci0KLWJvb2wgRnVuY3Rpb25XaGl0ZWxpc3Q6OmNvbnRhaW5zKENvZGVCbG9jayogY29k
ZUJsb2NrKSBjb25zdAotewotICAgIGlmICghbV9oYXNBY3RpdmVXaGl0ZWxpc3QpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgaWYgKG1fZW50cmllcy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpmcm9tVVRGOChjb2RlQmxv
Y2stPmluZmVycmVkTmFtZSgpKTsKLSAgICBpZiAobV9lbnRyaWVzLmNvbnRhaW5zKG5hbWUpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFN0cmluZyBoYXNoID0gU3RyaW5nOjpmcm9tVVRG
OChjb2RlQmxvY2stPmhhc2hBc1N0cmluZ0lmUG9zc2libGUoKSk7Ci0gICAgaWYgKG1fZW50cmll
cy5jb250YWlucyhoYXNoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gbV9l
bnRyaWVzLmNvbnRhaW5zKG5hbWUgKyAnIycgKyBoYXNoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
SlNDCi0KLSNlbmRpZiAvLyBFTkFCTEUoSklUKQotCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25XaGl0ZWxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvRnVuY3Rpb25XaGl0ZWxpc3QuaAkocmV2aXNpb24gMjYyOTA4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uV2hpdGVsaXN0LmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgSlNDIHsgCi0KLWNsYXNzIENvZGVCbG9jazsKLQotY2xhc3MgRnVuY3Rp
b25XaGl0ZWxpc3QgewotcHVibGljOgotICAgIGV4cGxpY2l0IEZ1bmN0aW9uV2hpdGVsaXN0KGNv
bnN0IGNoYXIqKTsKLQotICAgIGJvb2wgY29udGFpbnMoQ29kZUJsb2NrKikgY29uc3Q7Ci0KLXBy
aXZhdGU6Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fZW50cmllczsKLSAgICBib29sIG1faGFzQWN0
aXZlV2hpdGVsaXN0IHsgZmFsc2UgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>