<?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>71446</bug_id>
          
          <creation_ts>2011-11-03 01:23:30 -0700</creation_ts>
          <short_desc>[Part 5] Parse the custom() function in -webkit-filter: add the filter operation</short_desc>
          <delta_ts>2013-04-22 16:15:00 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://dvcs.w3.org/hg/FXTF/raw-file/tip/custom/index.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71443</dependson>
    
    <dependson>72378</dependson>
    
    <dependson>72478</dependson>
    
    <dependson>72700</dependson>
    
    <dependson>94998</dependson>
          <blocked>71395</blocked>
    
    <blocked>71442</blocked>
    
    <blocked>71444</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>krit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>495259</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-11-03 01:23:30 -0700</bug_when>
    <thetext>Add code in CSSStyleSelector that will take the CSSValues from the CSSParser and fill a filter operation. 

It would be nice to have this task done before 71442, 71443, 71444, so that each of those bugs could add both code in CSSParser and in CSSStyleSelector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502808</commentid>
    <comment_count>1</comment_count>
      <attachid>115142</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-11-15 04:43:38 -0800</bug_when>
    <thetext>Created attachment 115142
Big patch

Posting a big patch, so that we can have a big picture of how this will look in the end. I will break this patch into smaller ones (different bugs).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879504</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-04-22 16:15:00 -0700</bug_when>
    <thetext>The sub bugs are closed. Remaining issues are already filed and depend on other bugs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115142</attachid>
            <date>2011-11-15 04:43:38 -0800</date>
            <delta_ts>2011-11-15 04:43:38 -0800</delta_ts>
            <desc>Big patch</desc>
            <filename>bug71446_big.patch</filename>
            <type>text/plain</type>
            <size>68496</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20tZmlsdGVyLXByb3Bl
cnR5LWNvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVy
cy9jdXN0b20tZmlsdGVyLXByb3BlcnR5LWNvbXB1dGVkLXN0eWxlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmYyODIwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3RvbS1maWx0ZXItcHJvcGVydHktY29tcHV0
ZWQtc3R5bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEyIEBACitUZXN0IHRoZSBwYXJzaW5n
IG9mIHRoZSBjdXN0b20oKSBmdW5jdGlvbiBvZiB0aGUgLXdlYmtpdC1maWx0ZXIgcHJvcGVydHku
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisKK0N1c3RvbSB3aXRoIHZlcnRleCBz
aGFkZXIgOiBjdXN0b20odXJsKHZlcnRleC5zaGFkZXIpKQorUEFTUyByZW1vdmVCYXNlVVJMKGZp
bHRlclN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZmlsdGVyJykpIGlzICdjdXN0b20o
dXJsKHZlcnRleC5zaGFkZXIpKScKK1BBU1MganNXcmFwcGVyQ2xhc3MoZmlsdGVyUnVsZSkgaXMg
J0NTU1ZhbHVlTGlzdCcKK1BBU1MganNXcmFwcGVyQ2xhc3MoZmlsdGVyUnVsZS5fX3Byb3RvX18p
IGlzICdDU1NWYWx1ZUxpc3RQcm90b3R5cGUnCitQQVNTIGpzV3JhcHBlckNsYXNzKGZpbHRlclJ1
bGUuY29uc3RydWN0b3IpIGlzICdDU1NWYWx1ZUxpc3RDb25zdHJ1Y3RvcicKK1BBU1MgZmlsdGVy
UnVsZS5sZW5ndGggaXMgMQorUEFTUyBzdWJSdWxlLm9wZXJhdGlvblR5cGUgaXMgV2ViS2l0Q1NT
RmlsdGVyVmFsdWUuQ1NTX0ZJTFRFUl9DVVNUT00KK1BBU1MgcmVtb3ZlQmFzZVVSTChzdWJSdWxl
LmNzc1RleHQpIGlzICdjdXN0b20odXJsKHZlcnRleC5zaGFkZXIpKScKKworQ3VzdG9tIHdpdGgg
ZnJhZ21lbnQgc2hhZGVyIDogY3VzdG9tKG5vbmUgdXJsKGZyYWdtZW50LnNoYWRlcikpCitQQVNT
IHJlbW92ZUJhc2VVUkwoZmlsdGVyU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1maWx0
ZXInKSkgaXMgJ2N1c3RvbShub25lIHVybChmcmFnbWVudC5zaGFkZXIpKScKK1BBU1MganNXcmFw
cGVyQ2xhc3MoZmlsdGVyUnVsZSkgaXMgJ0NTU1ZhbHVlTGlzdCcKK1BBU1MganNXcmFwcGVyQ2xh
c3MoZmlsdGVyUnVsZS5fX3Byb3RvX18pIGlzICdDU1NWYWx1ZUxpc3RQcm90b3R5cGUnCitQQVNT
IGpzV3JhcHBlckNsYXNzKGZpbHRlclJ1bGUuY29uc3RydWN0b3IpIGlzICdDU1NWYWx1ZUxpc3RD
b25zdHJ1Y3RvcicKK1BBU1MgZmlsdGVyUnVsZS5sZW5ndGggaXMgMQorUEFTUyBzdWJSdWxlLm9w
ZXJhdGlvblR5cGUgaXMgV2ViS2l0Q1NTRmlsdGVyVmFsdWUuQ1NTX0ZJTFRFUl9DVVNUT00KK1BB
U1MgcmVtb3ZlQmFzZVVSTChzdWJSdWxlLmNzc1RleHQpIGlzICdjdXN0b20obm9uZSB1cmwoZnJh
Z21lbnQuc2hhZGVyKSknCisKK0N1c3RvbSB3aXRoIGJvdGggc2hhZGVycyA6IGN1c3RvbSh1cmwo
dmVydGV4LnNoYWRlcikgdXJsKGZyYWdtZW50LnNoYWRlcikpCitQQVNTIHJlbW92ZUJhc2VVUkwo
ZmlsdGVyU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1maWx0ZXInKSkgaXMgJ2N1c3Rv
bSh1cmwodmVydGV4LnNoYWRlcikgdXJsKGZyYWdtZW50LnNoYWRlcikpJworUEFTUyBqc1dyYXBw
ZXJDbGFzcyhmaWx0ZXJSdWxlKSBpcyAnQ1NTVmFsdWVMaXN0JworUEFTUyBqc1dyYXBwZXJDbGFz
cyhmaWx0ZXJSdWxlLl9fcHJvdG9fXykgaXMgJ0NTU1ZhbHVlTGlzdFByb3RvdHlwZScKK1BBU1Mg
anNXcmFwcGVyQ2xhc3MoZmlsdGVyUnVsZS5jb25zdHJ1Y3RvcikgaXMgJ0NTU1ZhbHVlTGlzdENv
bnN0cnVjdG9yJworUEFTUyBmaWx0ZXJSdWxlLmxlbmd0aCBpcyAxCitQQVNTIHN1YlJ1bGUub3Bl
cmF0aW9uVHlwZSBpcyBXZWJLaXRDU1NGaWx0ZXJWYWx1ZS5DU1NfRklMVEVSX0NVU1RPTQorUEFT
UyByZW1vdmVCYXNlVVJMKHN1YlJ1bGUuY3NzVGV4dCkgaXMgJ2N1c3RvbSh1cmwodmVydGV4LnNo
YWRlcikgdXJsKGZyYWdtZW50LnNoYWRlcikpJworCitDdXN0b20gd2l0aCBtZXNoIHNpemUgOiBj
dXN0b20odXJsKHZlcnRleC5zaGFkZXIpLCAxMCkKK1BBU1MgcmVtb3ZlQmFzZVVSTChmaWx0ZXJT
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWZpbHRlcicpKSBpcyAnY3VzdG9tKHVybCh2
ZXJ0ZXguc2hhZGVyKSwgMTApJworUEFTUyBqc1dyYXBwZXJDbGFzcyhmaWx0ZXJSdWxlKSBpcyAn
Q1NTVmFsdWVMaXN0JworUEFTUyBqc1dyYXBwZXJDbGFzcyhmaWx0ZXJSdWxlLl9fcHJvdG9fXykg
aXMgJ0NTU1ZhbHVlTGlzdFByb3RvdHlwZScKK1BBU1MganNXcmFwcGVyQ2xhc3MoZmlsdGVyUnVs
ZS5jb25zdHJ1Y3RvcikgaXMgJ0NTU1ZhbHVlTGlzdENvbnN0cnVjdG9yJworUEFTUyBmaWx0ZXJS
dWxlLmxlbmd0aCBpcyAxCitQQVNTIHN1YlJ1bGUub3BlcmF0aW9uVHlwZSBpcyBXZWJLaXRDU1NG
aWx0ZXJWYWx1ZS5DU1NfRklMVEVSX0NVU1RPTQorUEFTUyByZW1vdmVCYXNlVVJMKHN1YlJ1bGUu
Y3NzVGV4dCkgaXMgJ2N1c3RvbSh1cmwodmVydGV4LnNoYWRlciksIDEwKScKKworQ3VzdG9tIHdp
dGggYm90aCBtZXNoIHNpemVzIDogY3VzdG9tKG5vbmUgdXJsKGZyYWdtZW50LnNoYWRlciksIDEw
IDIwKQorUEFTUyByZW1vdmVCYXNlVVJMKGZpbHRlclN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy13
ZWJraXQtZmlsdGVyJykpIGlzICdjdXN0b20obm9uZSB1cmwoZnJhZ21lbnQuc2hhZGVyKSwgMTAg
MjApJworUEFTUyBqc1dyYXBwZXJDbGFzcyhmaWx0ZXJSdWxlKSBpcyAnQ1NTVmFsdWVMaXN0Jwor
UEFTUyBqc1dyYXBwZXJDbGFzcyhmaWx0ZXJSdWxlLl9fcHJvdG9fXykgaXMgJ0NTU1ZhbHVlTGlz
dFByb3RvdHlwZScKK1BBU1MganNXcmFwcGVyQ2xhc3MoZmlsdGVyUnVsZS5jb25zdHJ1Y3Rvcikg
aXMgJ0NTU1ZhbHVlTGlzdENvbnN0cnVjdG9yJworUEFTUyBmaWx0ZXJSdWxlLmxlbmd0aCBpcyAx
CitQQVNTIHN1YlJ1bGUub3BlcmF0aW9uVHlwZSBpcyBXZWJLaXRDU1NGaWx0ZXJWYWx1ZS5DU1Nf
RklMVEVSX0NVU1RPTQorUEFTUyByZW1vdmVCYXNlVVJMKHN1YlJ1bGUuY3NzVGV4dCkgaXMgJ2N1
c3RvbShub25lIHVybChmcmFnbWVudC5zaGFkZXIpLCAxMCAyMCknCisKK0N1c3RvbSB3aXRoIGRl
dGFjaGVkIG1lc2ggOiBjdXN0b20obm9uZSB1cmwoZnJhZ21lbnQuc2hhZGVyKSwgZGV0YWNoZWQp
CitQQVNTIHJlbW92ZUJhc2VVUkwoZmlsdGVyU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtp
dC1maWx0ZXInKSkgaXMgJ2N1c3RvbShub25lIHVybChmcmFnbWVudC5zaGFkZXIpLCBkZXRhY2hl
ZCknCitQQVNTIGpzV3JhcHBlckNsYXNzKGZpbHRlclJ1bGUpIGlzICdDU1NWYWx1ZUxpc3QnCitQ
QVNTIGpzV3JhcHBlckNsYXNzKGZpbHRlclJ1bGUuX19wcm90b19fKSBpcyAnQ1NTVmFsdWVMaXN0
UHJvdG90eXBlJworUEFTUyBqc1dyYXBwZXJDbGFzcyhmaWx0ZXJSdWxlLmNvbnN0cnVjdG9yKSBp
cyAnQ1NTVmFsdWVMaXN0Q29uc3RydWN0b3InCitQQVNTIGZpbHRlclJ1bGUubGVuZ3RoIGlzIDEK
K1BBU1Mgc3ViUnVsZS5vcGVyYXRpb25UeXBlIGlzIFdlYktpdENTU0ZpbHRlclZhbHVlLkNTU19G
SUxURVJfQ1VTVE9NCitQQVNTIHJlbW92ZUJhc2VVUkwoc3ViUnVsZS5jc3NUZXh0KSBpcyAnY3Vz
dG9tKG5vbmUgdXJsKGZyYWdtZW50LnNoYWRlciksIGRldGFjaGVkKScKKworQ3VzdG9tIHdpdGgg
ZGV0YWNoZWQgYW5kIG1lc2ggc2l6ZSA6IGN1c3RvbShub25lIHVybChmcmFnbWVudC5zaGFkZXIp
LCAxMCAyMCBkZXRhY2hlZCkKK1BBU1MgcmVtb3ZlQmFzZVVSTChmaWx0ZXJTdHlsZS5nZXRQcm9w
ZXJ0eVZhbHVlKCctd2Via2l0LWZpbHRlcicpKSBpcyAnY3VzdG9tKG5vbmUgdXJsKGZyYWdtZW50
LnNoYWRlciksIDEwIDIwIGRldGFjaGVkKScKK1BBU1MganNXcmFwcGVyQ2xhc3MoZmlsdGVyUnVs
ZSkgaXMgJ0NTU1ZhbHVlTGlzdCcKK1BBU1MganNXcmFwcGVyQ2xhc3MoZmlsdGVyUnVsZS5fX3By
b3RvX18pIGlzICdDU1NWYWx1ZUxpc3RQcm90b3R5cGUnCitQQVNTIGpzV3JhcHBlckNsYXNzKGZp
bHRlclJ1bGUuY29uc3RydWN0b3IpIGlzICdDU1NWYWx1ZUxpc3RDb25zdHJ1Y3RvcicKK1BBU1Mg
ZmlsdGVyUnVsZS5sZW5ndGggaXMgMQorUEFTUyBzdWJSdWxlLm9wZXJhdGlvblR5cGUgaXMgV2Vi
S2l0Q1NTRmlsdGVyVmFsdWUuQ1NTX0ZJTFRFUl9DVVNUT00KK1BBU1MgcmVtb3ZlQmFzZVVSTChz
dWJSdWxlLmNzc1RleHQpIGlzICdjdXN0b20obm9uZSB1cmwoZnJhZ21lbnQuc2hhZGVyKSwgMTAg
MjAgZGV0YWNoZWQpJworCitDdXN0b20gd2l0aCBudW1iZXIgcGFyYW1ldGVycyA6IGN1c3RvbShu
b25lIHVybChmcmFnbWVudC5zaGFkZXIpLCBwMSAxLCBwMiAyIDMsIHAzIDMgNCA1LCBwNCA0IDUg
NiA3KQorUEFTUyByZW1vdmVCYXNlVVJMKGZpbHRlclN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy13
ZWJraXQtZmlsdGVyJykpIGlzICdjdXN0b20obm9uZSB1cmwoZnJhZ21lbnQuc2hhZGVyKSwgcDEg
MSwgcDIgMiAzLCBwMyAzIDQgNSwgcDQgNCA1IDYgNyknCitQQVNTIGpzV3JhcHBlckNsYXNzKGZp
bHRlclJ1bGUpIGlzICdDU1NWYWx1ZUxpc3QnCitQQVNTIGpzV3JhcHBlckNsYXNzKGZpbHRlclJ1
bGUuX19wcm90b19fKSBpcyAnQ1NTVmFsdWVMaXN0UHJvdG90eXBlJworUEFTUyBqc1dyYXBwZXJD
bGFzcyhmaWx0ZXJSdWxlLmNvbnN0cnVjdG9yKSBpcyAnQ1NTVmFsdWVMaXN0Q29uc3RydWN0b3In
CitQQVNTIGZpbHRlclJ1bGUubGVuZ3RoIGlzIDEKK1BBU1Mgc3ViUnVsZS5vcGVyYXRpb25UeXBl
IGlzIFdlYktpdENTU0ZpbHRlclZhbHVlLkNTU19GSUxURVJfQ1VTVE9NCitQQVNTIHJlbW92ZUJh
c2VVUkwoc3ViUnVsZS5jc3NUZXh0KSBpcyAnY3VzdG9tKG5vbmUgdXJsKGZyYWdtZW50LnNoYWRl
ciksIHAxIDEsIHAyIDIgMywgcDMgMyA0IDUsIHA0IDQgNSA2IDcpJworCitDdXN0b20gd2l0aCBm
bG9hdCBwYXJhbWV0ZXJzIDogY3VzdG9tKG5vbmUgdXJsKGZyYWdtZW50LnNoYWRlciksIHAxIDEu
MSwgcDIgMi4yIDMuMywgcDMgMy4xIDQuMSA1LjEsIHA0IDQuMSA1LjIgNi4zIDcuNCkKK1BBU1Mg
cmVtb3ZlQmFzZVVSTChmaWx0ZXJTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LWZpbHRl
cicpKSBpcyAnY3VzdG9tKG5vbmUgdXJsKGZyYWdtZW50LnNoYWRlciksIHAxIDEuMSwgcDIgMi4y
IDMuMywgcDMgMy4xIDQuMSA1LjEsIHA0IDQuMSA1LjIgNi4zIDcuNCknCitQQVNTIGpzV3JhcHBl
ckNsYXNzKGZpbHRlclJ1bGUpIGlzICdDU1NWYWx1ZUxpc3QnCitQQVNTIGpzV3JhcHBlckNsYXNz
KGZpbHRlclJ1bGUuX19wcm90b19fKSBpcyAnQ1NTVmFsdWVMaXN0UHJvdG90eXBlJworUEFTUyBq
c1dyYXBwZXJDbGFzcyhmaWx0ZXJSdWxlLmNvbnN0cnVjdG9yKSBpcyAnQ1NTVmFsdWVMaXN0Q29u
c3RydWN0b3InCitQQVNTIGZpbHRlclJ1bGUubGVuZ3RoIGlzIDEKK1BBU1Mgc3ViUnVsZS5vcGVy
YXRpb25UeXBlIGlzIFdlYktpdENTU0ZpbHRlclZhbHVlLkNTU19GSUxURVJfQ1VTVE9NCitQQVNT
IHJlbW92ZUJhc2VVUkwoc3ViUnVsZS5jc3NUZXh0KSBpcyAnY3VzdG9tKG5vbmUgdXJsKGZyYWdt
ZW50LnNoYWRlciksIHAxIDEuMSwgcDIgMi4yIDMuMywgcDMgMy4xIDQuMSA1LjEsIHA0IDQuMSA1
LjIgNi4zIDcuNCknCisKK0N1c3RvbSB3aXRoIG1lc2ggc2l6ZSBhbmQgbnVtYmVyIHBhcmFtZXRl
cnMgOiBjdXN0b20obm9uZSB1cmwoZnJhZ21lbnQuc2hhZGVyKSwgMTAgMjAsIHAxIDEsIHAyIDIg
MywgcDMgMyA0IDUsIHA0IDQgNSA2IDcpCitQQVNTIHJlbW92ZUJhc2VVUkwoZmlsdGVyU3R5bGUu
Z2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC1maWx0ZXInKSkgaXMgJ2N1c3RvbShub25lIHVybChm
cmFnbWVudC5zaGFkZXIpLCAxMCAyMCwgcDEgMSwgcDIgMiAzLCBwMyAzIDQgNSwgcDQgNCA1IDYg
NyknCitQQVNTIGpzV3JhcHBlckNsYXNzKGZpbHRlclJ1bGUpIGlzICdDU1NWYWx1ZUxpc3QnCitQ
QVNTIGpzV3JhcHBlckNsYXNzKGZpbHRlclJ1bGUuX19wcm90b19fKSBpcyAnQ1NTVmFsdWVMaXN0
UHJvdG90eXBlJworUEFTUyBqc1dyYXBwZXJDbGFzcyhmaWx0ZXJSdWxlLmNvbnN0cnVjdG9yKSBp
cyAnQ1NTVmFsdWVMaXN0Q29uc3RydWN0b3InCitQQVNTIGZpbHRlclJ1bGUubGVuZ3RoIGlzIDEK
K1BBU1Mgc3ViUnVsZS5vcGVyYXRpb25UeXBlIGlzIFdlYktpdENTU0ZpbHRlclZhbHVlLkNTU19G
SUxURVJfQ1VTVE9NCitQQVNTIHJlbW92ZUJhc2VVUkwoc3ViUnVsZS5jc3NUZXh0KSBpcyAnY3Vz
dG9tKG5vbmUgdXJsKGZyYWdtZW50LnNoYWRlciksIDEwIDIwLCBwMSAxLCBwMiAyIDMsIHAzIDMg
NCA1LCBwNCA0IDUgNiA3KScKKworTXVsdGlwbGUgd2l0aCBmcmFnbWVudCBzaGFkZXIgOiBncmF5
c2NhbGUoKSBjdXN0b20obm9uZSB1cmwoZnJhZ21lbnQuc2hhZGVyKSkgc2VwaWEoKQorUEFTUyBy
ZW1vdmVCYXNlVVJMKGZpbHRlclN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZmlsdGVy
JykpIGlzICdncmF5c2NhbGUoMSkgY3VzdG9tKG5vbmUgdXJsKGZyYWdtZW50LnNoYWRlcikpIHNl
cGlhKDEpJworUEFTUyBqc1dyYXBwZXJDbGFzcyhmaWx0ZXJSdWxlKSBpcyAnQ1NTVmFsdWVMaXN0
JworUEFTUyBqc1dyYXBwZXJDbGFzcyhmaWx0ZXJSdWxlLl9fcHJvdG9fXykgaXMgJ0NTU1ZhbHVl
TGlzdFByb3RvdHlwZScKK1BBU1MganNXcmFwcGVyQ2xhc3MoZmlsdGVyUnVsZS5jb25zdHJ1Y3Rv
cikgaXMgJ0NTU1ZhbHVlTGlzdENvbnN0cnVjdG9yJworUEFTUyBmaWx0ZXJSdWxlLmxlbmd0aCBp
cyAzCitQQVNTIHN1YlJ1bGUub3BlcmF0aW9uVHlwZSBpcyBXZWJLaXRDU1NGaWx0ZXJWYWx1ZS5D
U1NfRklMVEVSX0dSQVlTQ0FMRQorUEFTUyByZW1vdmVCYXNlVVJMKHN1YlJ1bGUuY3NzVGV4dCkg
aXMgJ2dyYXlzY2FsZSgxKScKK1BBU1Mgc3ViUnVsZS5vcGVyYXRpb25UeXBlIGlzIFdlYktpdENT
U0ZpbHRlclZhbHVlLkNTU19GSUxURVJfQ1VTVE9NCitQQVNTIHJlbW92ZUJhc2VVUkwoc3ViUnVs
ZS5jc3NUZXh0KSBpcyAnY3VzdG9tKG5vbmUgdXJsKGZyYWdtZW50LnNoYWRlcikpJworUEFTUyBz
dWJSdWxlLm9wZXJhdGlvblR5cGUgaXMgV2ViS2l0Q1NTRmlsdGVyVmFsdWUuQ1NTX0ZJTFRFUl9T
RVBJQQorUEFTUyByZW1vdmVCYXNlVVJMKHN1YlJ1bGUuY3NzVGV4dCkgaXMgJ3NlcGlhKDEpJwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20tZmlsdGVyLXByb3BlcnR5LWNv
bXB1dGVkLXN0eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tLWZpbHRl
ci1wcm9wZXJ0eS1jb21wdXRlZC1zdHlsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjZmN2FjNmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2Zp
bHRlcnMvY3VzdG9tLWZpbHRlci1wcm9wZXJ0eS1jb21wdXRlZC1zdHlsZS5odG1sCkBAIC0wLDAg
KzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL2N1c3RvbS1maWx0ZXItcHJvcGVydHktY29tcHV0ZWQtc3R5
bGUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvc2NyaXB0LXRlc3RzL2N1c3RvbS1maWx0ZXItcHJvcGVy
dHktY29tcHV0ZWQtc3R5bGUuanMgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvc2NyaXB0LXRl
c3RzL2N1c3RvbS1maWx0ZXItcHJvcGVydHktY29tcHV0ZWQtc3R5bGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEzMTIyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9zY3JpcHQtdGVzdHMvY3VzdG9tLWZpbHRlci1wcm9wZXJ0eS1j
b21wdXRlZC1zdHlsZS5qcwpAQCAtMCwwICsxLDEwNyBAQAorZGVzY3JpcHRpb24oIlRlc3QgdGhl
IHBhcnNpbmcgb2YgdGhlIGN1c3RvbSgpIGZ1bmN0aW9uIG9mIHRoZSAtd2Via2l0LWZpbHRlciBw
cm9wZXJ0eS4iKTsKKworZnVuY3Rpb24ganNXcmFwcGVyQ2xhc3Mobm9kZSkKK3sKKyAgICBpZiAo
IW5vZGUpCisgICAgICAgIHJldHVybiAiW251bGxdIjsKKyAgICB2YXIgc3RyaW5nID0gT2JqZWN0
LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShub2RlKTsKKyAgICByZXR1cm4gc3RyaW5nLnN1YnN0
cig4LCBzdHJpbmcubGVuZ3RoIC0gOSk7Cit9CisKKy8vIE5lZWQgdG8gcmVtb3ZlIHRoZSBiYXNl
IFVSTCB0byBhdm9pZCBoYXZpbmcgbG9jYWwgcGF0aHMgaW4gdGhlIGV4cGVjdGVkIHJlc3VsdHMu
CitmdW5jdGlvbiByZW1vdmVCYXNlVVJMKHNyYykgeworICAgIHZhciB1cmxSZWdleHAgPSAvdXJs
XCgoW15cKV0qKVwpL2c7CisgICAgcmV0dXJuIHNyYy5yZXBsYWNlKHVybFJlZ2V4cCwgZnVuY3Rp
b24obWF0Y2gsIHVybCkgeworICAgICAgICByZXR1cm4gInVybCgiICsgdXJsLnN1YnN0cih1cmwu
bGFzdEluZGV4T2YoIi8iKSArIDEpICsgIikiOworICAgIH0pOworfQorCitmdW5jdGlvbiBzaG91
bGRCZVR5cGUoZXhwcmVzc2lvbiwgY2xhc3NOYW1lLCBwcm90b3R5cGVOYW1lLCBjb25zdHJ1Y3Rv
ck5hbWUpCit7CisgICAgaWYgKCFwcm90b3R5cGVOYW1lKQorICAgICAgICBwcm90b3R5cGVOYW1l
ID0gY2xhc3NOYW1lICsgIlByb3RvdHlwZSI7CisgICAgaWYgKCFjb25zdHJ1Y3Rvck5hbWUpCisg
ICAgICAgIGNvbnN0cnVjdG9yTmFtZSA9IGNsYXNzTmFtZSArICJDb25zdHJ1Y3RvciI7CisgICAg
c2hvdWxkQmUoImpzV3JhcHBlckNsYXNzKCIgKyBleHByZXNzaW9uICsgIikiLCAiJyIgKyBjbGFz
c05hbWUgKyAiJyIpOworICAgIHNob3VsZEJlKCJqc1dyYXBwZXJDbGFzcygiICsgZXhwcmVzc2lv
biArICIuX19wcm90b19fKSIsICInIiArIHByb3RvdHlwZU5hbWUgKyAiJyIpOworICAgIHNob3Vs
ZEJlKCJqc1dyYXBwZXJDbGFzcygiICsgZXhwcmVzc2lvbiArICIuY29uc3RydWN0b3IpIiwgIici
ICsgY29uc3RydWN0b3JOYW1lICsgIiciKTsKK30KKworLy8gVGhlc2UgaGF2ZSB0byBiZSBnbG9i
YWwgZm9yIHRoZSB0ZXN0IGhlbHBlcnMgdG8gc2VlIHRoZW0uCit2YXIgc3R5bGVzaGVldCwgY3Nz
UnVsZSwgZGVjbGFyYXRpb24sIGZpbHRlclJ1bGUsIHN1YlJ1bGU7CisKK2Z1bmN0aW9uIHRlc3RG
aWx0ZXJSdWxlKGRlc2NyaXB0aW9uLCBydWxlLCBleHBlY3RlZFZhbHVlLCBleHBlY3RlZFR5cGVz
LCBleHBlY3RlZFRleHRzKQoreworICAgIGRlYnVnKCIiKTsKKyAgICBkZWJ1ZyhkZXNjcmlwdGlv
biArICIgOiAiICsgcnVsZSk7CisKKyAgICBzdHlsZXNoZWV0ID0gZG9jdW1lbnQuc3R5bGVTaGVl
dHMuaXRlbSgwKTsKKyAgICBzdHlsZXNoZWV0Lmluc2VydFJ1bGUoImJvZHkgeyAtd2Via2l0LWZp
bHRlcjogIiArIHJ1bGUgKyAiOyB9IiwgMCk7CisKKyAgICBmaWx0ZXJTdHlsZSA9IHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpOworICAgIAorICAgIHNob3VsZEJlKCJyZW1v
dmVCYXNlVVJMKGZpbHRlclN0eWxlLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtZmlsdGVyJykp
IiwgIiciICsgZXhwZWN0ZWRWYWx1ZSArICInIik7CisKKyAgICBmaWx0ZXJSdWxlID0gZmlsdGVy
U3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1ZSgnLXdlYmtpdC1maWx0ZXInKTsKKyAgICBzaG91bGRC
ZVR5cGUoImZpbHRlclJ1bGUiLCAiQ1NTVmFsdWVMaXN0Iik7CisKKyAgICBpZiAoIWV4cGVjdGVk
VHlwZXMpIHsKKyAgICAgICAgZXhwZWN0ZWRUeXBlcyA9IFsiV2ViS2l0Q1NTRmlsdGVyVmFsdWUu
Q1NTX0ZJTFRFUl9DVVNUT00iXTsKKyAgICAgICAgZXhwZWN0ZWRUZXh0cyA9IFtleHBlY3RlZFZh
bHVlXTsKKyAgICB9CisgICAgCisgICAgc2hvdWxkQmUoImZpbHRlclJ1bGUubGVuZ3RoIiwgIiIg
KyBleHBlY3RlZFR5cGVzLmxlbmd0aCk7IC8vIHNob3VsZEJlIGV4cGVjdHMgc3RyaW5nIGFyZ3Vt
ZW50cworICAKKyAgICBpZiAoZmlsdGVyUnVsZSkgeworICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGV4cGVjdGVkVHlwZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHN1YlJ1bGUgPSBm
aWx0ZXJSdWxlW2ldOworICAgICAgICAgICAgc2hvdWxkQmUoInN1YlJ1bGUub3BlcmF0aW9uVHlw
ZSIsIGV4cGVjdGVkVHlwZXNbaV0pOworICAgICAgICAgICAgc2hvdWxkQmUoInJlbW92ZUJhc2VV
Ukwoc3ViUnVsZS5jc3NUZXh0KSIsICInIiArIGV4cGVjdGVkVGV4dHNbaV0gKyAiJyIpOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIHN0eWxlc2hlZXQuZGVsZXRlUnVsZSgwKTsKK30KKwor
dGVzdEZpbHRlclJ1bGUoIkN1c3RvbSB3aXRoIHZlcnRleCBzaGFkZXIiLAorICAgICAgICAgICAg
ICAgImN1c3RvbSh1cmwodmVydGV4LnNoYWRlcikpIiwgImN1c3RvbSh1cmwodmVydGV4LnNoYWRl
cikpIik7CisKK3Rlc3RGaWx0ZXJSdWxlKCJDdXN0b20gd2l0aCBmcmFnbWVudCBzaGFkZXIiLAor
ICAgICAgICAgICAgICAiY3VzdG9tKG5vbmUgdXJsKGZyYWdtZW50LnNoYWRlcikpIiwgImN1c3Rv
bShub25lIHVybChmcmFnbWVudC5zaGFkZXIpKSIpOworCit0ZXN0RmlsdGVyUnVsZSgiQ3VzdG9t
IHdpdGggYm90aCBzaGFkZXJzIiwKKyAgICAgICAgICAgICJjdXN0b20odXJsKHZlcnRleC5zaGFk
ZXIpIHVybChmcmFnbWVudC5zaGFkZXIpKSIsICJjdXN0b20odXJsKHZlcnRleC5zaGFkZXIpIHVy
bChmcmFnbWVudC5zaGFkZXIpKSIpOworICAgICAgICAgICAgCit0ZXN0RmlsdGVyUnVsZSgiQ3Vz
dG9tIHdpdGggbWVzaCBzaXplIiwKKyAgICAgICAgICAgICJjdXN0b20odXJsKHZlcnRleC5zaGFk
ZXIpLCAxMCkiLCAiY3VzdG9tKHVybCh2ZXJ0ZXguc2hhZGVyKSwgMTApIik7CisKK3Rlc3RGaWx0
ZXJSdWxlKCJDdXN0b20gd2l0aCBib3RoIG1lc2ggc2l6ZXMiLAorICAgICAgICAgICAgImN1c3Rv
bShub25lIHVybChmcmFnbWVudC5zaGFkZXIpLCAxMCAyMCkiLCAiY3VzdG9tKG5vbmUgdXJsKGZy
YWdtZW50LnNoYWRlciksIDEwIDIwKSIpOworCit0ZXN0RmlsdGVyUnVsZSgiQ3VzdG9tIHdpdGgg
ZGV0YWNoZWQgbWVzaCIsCisgICAgICAgICAgICAiY3VzdG9tKG5vbmUgdXJsKGZyYWdtZW50LnNo
YWRlciksIGRldGFjaGVkKSIsICJjdXN0b20obm9uZSB1cmwoZnJhZ21lbnQuc2hhZGVyKSwgZGV0
YWNoZWQpIik7CisgICAgICAgICAgICAKK3Rlc3RGaWx0ZXJSdWxlKCJDdXN0b20gd2l0aCBkZXRh
Y2hlZCBhbmQgbWVzaCBzaXplIiwKKyAgICAgICAgICAgICJjdXN0b20obm9uZSB1cmwoZnJhZ21l
bnQuc2hhZGVyKSwgMTAgMjAgZGV0YWNoZWQpIiwgImN1c3RvbShub25lIHVybChmcmFnbWVudC5z
aGFkZXIpLCAxMCAyMCBkZXRhY2hlZCkiKTsKKwordGVzdEZpbHRlclJ1bGUoIkN1c3RvbSB3aXRo
IG51bWJlciBwYXJhbWV0ZXJzIiwKKyAgICAgICAgICAgICJjdXN0b20obm9uZSB1cmwoZnJhZ21l
bnQuc2hhZGVyKSwgcDEgMSwgcDIgMiAzLCBwMyAzIDQgNSwgcDQgNCA1IDYgNykiLAorICAgICAg
ICAgICAgImN1c3RvbShub25lIHVybChmcmFnbWVudC5zaGFkZXIpLCBwMSAxLCBwMiAyIDMsIHAz
IDMgNCA1LCBwNCA0IDUgNiA3KSIpOworCit0ZXN0RmlsdGVyUnVsZSgiQ3VzdG9tIHdpdGggZmxv
YXQgcGFyYW1ldGVycyIsCisgICAgICAgICAgICAiY3VzdG9tKG5vbmUgdXJsKGZyYWdtZW50LnNo
YWRlciksIHAxIDEuMSwgcDIgMi4yIDMuMywgcDMgMy4xIDQuMSA1LjEsIHA0IDQuMSA1LjIgNi4z
IDcuNCkiLAorICAgICAgICAgICAgImN1c3RvbShub25lIHVybChmcmFnbWVudC5zaGFkZXIpLCBw
MSAxLjEsIHAyIDIuMiAzLjMsIHAzIDMuMSA0LjEgNS4xLCBwNCA0LjEgNS4yIDYuMyA3LjQpIik7
CisKKwordGVzdEZpbHRlclJ1bGUoIkN1c3RvbSB3aXRoIG1lc2ggc2l6ZSBhbmQgbnVtYmVyIHBh
cmFtZXRlcnMiLAorICAgICAgICAgICAgImN1c3RvbShub25lIHVybChmcmFnbWVudC5zaGFkZXIp
LCAxMCAyMCwgcDEgMSwgcDIgMiAzLCBwMyAzIDQgNSwgcDQgNCA1IDYgNykiLAorICAgICAgICAg
ICAgImN1c3RvbShub25lIHVybChmcmFnbWVudC5zaGFkZXIpLCAxMCAyMCwgcDEgMSwgcDIgMiAz
LCBwMyAzIDQgNSwgcDQgNCA1IDYgNykiKTsKKwordGVzdEZpbHRlclJ1bGUoIk11bHRpcGxlIHdp
dGggZnJhZ21lbnQgc2hhZGVyIiwKKyAgICAgICAgICAgICJncmF5c2NhbGUoKSBjdXN0b20obm9u
ZSB1cmwoZnJhZ21lbnQuc2hhZGVyKSkgc2VwaWEoKSIsICJncmF5c2NhbGUoMSkgY3VzdG9tKG5v
bmUgdXJsKGZyYWdtZW50LnNoYWRlcikpIHNlcGlhKDEpIiwKKyAgICAgICAgICAgIFsiV2ViS2l0
Q1NTRmlsdGVyVmFsdWUuQ1NTX0ZJTFRFUl9HUkFZU0NBTEUiLAorICAgICAgICAgICAgIldlYktp
dENTU0ZpbHRlclZhbHVlLkNTU19GSUxURVJfQ1VTVE9NIiwKKyAgICAgICAgICAgICJXZWJLaXRD
U1NGaWx0ZXJWYWx1ZS5DU1NfRklMVEVSX1NFUElBIl0sCisgICAgICAgICAgICBbImdyYXlzY2Fs
ZSgxKSIsCisgICAgICAgICAgICAiY3VzdG9tKG5vbmUgdXJsKGZyYWdtZW50LnNoYWRlcikpIiwK
KyAgICAgICAgICAgICJzZXBpYSgxKSJdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzOTg0YTkyLi40ZmFlZjI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MzYzLDYgKzEzNjMsOSBAQAogCQk0RkQ4RDBGMzExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NF
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZE
OEQwRjExMTlDNzE4QjAwMkZBODI1IC8qIFNjcmlwdEdDRXZlbnQuaCAqLzsgfTsKIAkJNTAxQkE5
RTIxMzkzQ0VBMDAwRjdBQ0VCIC8qIENTU1dyYXBTaGFwZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwMUJBOUUxMTM5M0NFQTAwMEY3QUNFQiAvKiBD
U1NXcmFwU2hhcGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTAxQkFBQTkxMzk1MEUyQzAwRjdBQ0VCIC8qIFdpbmRSdWxlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFBODEzOTUwRTJDMDBG
N0FDRUIgLyogV2luZFJ1bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk1MDM4QkMwNzE0NzExQ0RCMDA5NUUwRDEgLyogV2ViS2l0Q1NTU2hhZGVy
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTAzOEJDMDYxNDcxMUNEQjAwOTVFMEQxIC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmNwcCAqLzsg
fTsKKwkJNTAzOEJDMEExNDcxMUQzNDAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDM4QkMw
ODE0NzExRDM0MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcCAqLzsgfTsKKwkJ
NTAzOEJDMEIxNDcxMUQzNDAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTAzOEJDMDkxNDcxMUQz
NDAwOTVFMEQxIC8qIEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oICovOyB9OwogCQk1MDhDQ0E0RjEz
Q0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTA4Q0NBNEQxM0NGMTA2QjAwMzE1MUYzIC8qIFJl
bmRlckZsb3dUaHJlYWQuaCAqLzsgfTsKIAkJNTA4Q0NBNTAxM0NGMTA2QjAwMzE1MUYzIC8qIFJl
bmRlckZsb3dUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTA4Q0NBNEUxM0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuY3Bw
ICovOyB9OwogCQk1MEU1NjZENjEzOUUzOEM1MDAyMTQ0MzMgLyogQ1NTV3JhcFNoYXBlcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MDFCQUFCMTEz
OTUxMTRCMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5jcHAgKi87IH07CkBAIC04NTUyLDYgKzg1
NTUsOSBAQAogCQk1MDFCQTlFMTEzOTNDRUEwMDBGN0FDRUIgLyogQ1NTV3JhcFNoYXBlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NXcmFwU2hhcGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwMUJBQUE4MTM5NTBFMkMwMEY3QUNFQiAvKiBXaW5kUnVs
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kUnVsZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MDFCQUFCMTEzOTUxMTRCMDBGN0FDRUIgLyogQ1NTV3Jh
cFNoYXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NXcmFw
U2hhcGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTAzOEJDMDYxNDcxMUNE
QjAwOTVFMEQxIC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdENTU1NoYWRlclZhbHVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTAzOEJDMDgxNDcxMUQzNDAwOTVFMEQxIC8qIEN1c3RvbUZpbHRl
ck9wZXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDdXN0
b21GaWx0ZXJPcGVyYXRpb24uY3BwOyBwYXRoID0gZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MDM4QkMwOTE0NzExRDM0MDA5
NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEN1c3RvbUZpbHRlck9wZXJhdGlvbi5oOyBwYXRoID0gZmlsdGVycy9DdXN0b21G
aWx0ZXJPcGVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTA4Q0NBNEQx
M0NGMTA2QjAwMzE1MUYzIC8qIFJlbmRlckZsb3dUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxvd1RocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MDhDQ0E0RTEzQ0YxMDZCMDAzMTUxRjMgLyogUmVuZGVyRmxvd1RocmVhZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJGbG93VGhyZWFkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTBCNDIxNTcxNDY5NzY5NjAwODdFNjA0
IC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYktpdENTU1NoYWRlclZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNzU4Myw2ICsxNzU4OSw4IEBACiAJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0
ZXJzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MDM4
QkMwODE0NzExRDM0MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcCAqLywKKwkJ
CQk1MDM4QkMwOTE0NzExRDM0MDA5NUUwRDEgLyogQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggKi8s
CiAJCQkJMTk4NDFCRkExMzY4MzZBMTAwNkVCQkI5IC8qIGFybSAqLywKIAkJCQlBMUUxMTU0MzEz
MDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNwcCAqLywKIAkJCQk4NDczMEQ1
QTEyNDhGMEIzMDBEM0E5QzkgLyogRGlzdGFudExpZ2h0U291cmNlLmggKi8sCkBAIC0yMDU2Niw2
ICsyMDU3NCw4IEBACiAJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUwMzhCQzA2MTQ3MTFDREIw
MDk1RTBEMSAvKiBXZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAgKi8sCisJCQkJNTBCNDIxNTcxNDY5
NzY5NjAwODdFNjA0IC8qIFdlYktpdENTU1NoYWRlclZhbHVlLmggKi8sCiAJCQkJQUQwM0FBRjgx
NDY4NDUzOTAwQTM5QjVCIC8qIENTU1ZhbHVlLmNwcCAqLywKIAkJCQlDQUU5RjkwRDE0NjQ0MUYw
MDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8sCiAJCQkJQ0FFOUY5MEUxNDY0
NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuaCAqLywKQEAgLTI0NjkxLDYgKzI0
NzAxLDcgQEAKIAkJCQkyOUNENjFERTE0NkQwMjg5MDA2OEU4MkEgLyogV2ViS2l0Q1NTU2hhZGVy
VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjY1Q0M4MTQ1QjFFNzUwMEM0QzdBQSAvKiBN
ZWRpYUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjY1Q0NBMTQ1QjQ0ODgwMEM0
QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUw
MzhCQzBCMTQ3MTFEMzQwMDk1RTBEMSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMjc1NjAsNiArMjc1NzEsOCBAQAogCQkJCTcxMzQ0OTZEMTQ2OTQxQjMwMDcy
MDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NEQyREE0
MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1cml0eVBvbGljeS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMTMxM0Y2NTE0NDNCMzVGMDA2RTJBOTAgLyogRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTAzOEJDMDcxNDcxMUNEQjAwOTVFMEQxIC8qIFdlYktpdENTU1No
YWRlclZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUwMzhCQzBBMTQ3MTFEMzQwMDk1RTBE
MSAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGZk
MWZiMzIuLjk5MGJlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00MCw2ICs0MCw5IEBACiAjaW5jbHVkZSAiQ1NTU2Vs
ZWN0b3IuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVMaXN0LmgiCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIkN1c3Rv
bUZpbHRlck9wZXJhdGlvbi5oIgorI2VuZGlmCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRm9udEZlYXR1cmVTZXR0aW5ncy5oIgpA
QCAtNjAsNiArNjMsOCBAQAogI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lvbi5oIgogI2VuZGlmCiAK
KyNpbmNsdWRlIDxhbGdvcml0aG0+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gTGlzdCBv
ZiBhbGwgcHJvcGVydGllcyB3ZSBrbm93IGhvdyB0byBjb21wdXRlLCBvbWl0dGluZyBzaG9ydGhh
bmRzLgpAQCAtNjQ4LDYgKzY1MywxMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY29t
cHV0ZWRUcmFuc2Zvcm0oUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZAogfQogCiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQorc3RhdGljIGJvb2wgc3RyaW5nQ29tcGFyYXRvcihjb25z
dCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikKK3sKKyAgICByZXR1cm4gY29kZVBvaW50Q29t
cGFyZShhLCBiKSA8IDA7Cit9CisKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JGaWx0ZXIoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAog
ewogICAgIENTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUqIHByaW1pdGl2ZVZhbHVlQ2FjaGUgPSBtX25v
ZGUtPmRvY3VtZW50KCktPmNzc1ByaW1pdGl2ZVZhbHVlQ2FjaGUoKS5nZXQoKTsKQEAgLTczOSw2
ICs3NDksNDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjp2YWx1ZUZvckZpbHRlcihSZW5kZXJTdHlsZSogc3QKICAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OkNVU1RPTTogewogICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBjdXN0
b20gc2hhZGVyIGZ1bmN0aW9uLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxMzk2CisgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRp
b24qIGN1c3RvbU9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEN1c3RvbUZpbHRlck9wZXJhdGlvbio+
KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBmaWx0ZXJWYWx1ZSA9IFdlYktpdENTU0Zp
bHRlclZhbHVlOjpjcmVhdGUoV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkN1c3RvbUZpbHRlck9wZXJh
dGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHNo
YWRlcnNMaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAg
ICAgICAgaWYgKGN1c3RvbU9wZXJhdGlvbi0+dmVydGV4U2hhZGVyKCkpCisgICAgICAgICAgICAg
ICAgc2hhZGVyc0xpc3QtPmFwcGVuZChjdXN0b21PcGVyYXRpb24tPnZlcnRleFNoYWRlcigpLT5j
c3NWYWx1ZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzaGFkZXJzTGlz
dC0+YXBwZW5kKHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vbmUpKTsKKyAgICAgICAgICAgIGlmIChjdXN0b21PcGVyYXRpb24tPmZyYWdtZW50U2hh
ZGVyKCkpCisgICAgICAgICAgICAgICAgc2hhZGVyc0xpc3QtPmFwcGVuZChjdXN0b21PcGVyYXRp
b24tPmZyYWdtZW50U2hhZGVyKCktPmNzc1ZhbHVlKCkpOworICAgICAgICAgICAgZmlsdGVyVmFs
dWUtPmFwcGVuZChzaGFkZXJzTGlzdC5yZWxlYXNlKCkpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBtZXNoUGFyYW1ldGVycyA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGlmIChjdXN0b21PcGVyYXRpb24t
Pm1lc2hSb3dzKCkgPiAwIHx8IGN1c3RvbU9wZXJhdGlvbi0+bWVzaENvbHVtbnMoKSA+IDApIHsK
KyAgICAgICAgICAgICAgICBtZXNoUGFyYW1ldGVycy0+YXBwZW5kKHByaW1pdGl2ZVZhbHVlQ2Fj
aGUtPmNyZWF0ZVZhbHVlKGN1c3RvbU9wZXJhdGlvbi0+bWVzaFJvd3MoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgICAgICAgICBpZiAoY3VzdG9tT3BlcmF0aW9u
LT5tZXNoUm93cygpICE9IGN1c3RvbU9wZXJhdGlvbi0+bWVzaENvbHVtbnMoKSkKKyAgICAgICAg
ICAgICAgICAgICAgbWVzaFBhcmFtZXRlcnMtPmFwcGVuZChwcmltaXRpdmVWYWx1ZUNhY2hlLT5j
cmVhdGVWYWx1ZShjdXN0b21PcGVyYXRpb24tPm1lc2hDb2x1bW5zKCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY3VzdG9t
T3BlcmF0aW9uLT5tZXNoQm94VHlwZSgpICE9IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6RklMVEVS
X0JPWCkKKyAgICAgICAgICAgICAgICBtZXNoUGFyYW1ldGVycy0+YXBwZW5kKHByaW1pdGl2ZVZh
bHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKGN1c3RvbU9wZXJhdGlvbi0+bWVzaEJveFR5cGUoKSkpOwor
ICAgICAgICAgICAgaWYgKGN1c3RvbU9wZXJhdGlvbi0+bWVzaFR5cGUoKSA9PSBDdXN0b21GaWx0
ZXJPcGVyYXRpb246OkRFVEFDSEVEKSAKKyAgICAgICAgICAgICAgICBtZXNoUGFyYW1ldGVycy0+
YXBwZW5kKHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZURldGFjaGVkKSk7CisgICAgICAgICAgICBpZiAobWVzaFBhcmFtZXRlcnMtPmxlbmd0aCgpKQor
ICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlLT5hcHBlbmQobWVzaFBhcmFtZXRlcnMucmVsZWFz
ZSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZmls
dGVyUGFyYW1ldGVycyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAg
ICAgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMgPSBjdXN0
b21PcGVyYXRpb24tPnBhcmFtdGVycygpOworICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gbmFt
ZXM7CisgICAgICAgICAgICBjb3B5S2V5c1RvVmVjdG9yKHBhcmFtZXRlcnMsIG5hbWVzKTsKKyAg
ICAgICAgICAgIHN0ZDo6c29ydChuYW1lcy5iZWdpbigpLCBuYW1lcy5lbmQoKSwgc3RyaW5nQ29t
cGFyYXRvcik7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5hbWVzLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyczo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHBhcmFtZXRlcnMuZmluZChuYW1lcy5hdChpKSk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKGl0ZXIgIT0gcGFyYW1ldGVycy5lbmQoKSk7CisgICAgICAgICAgICAgICAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyYW1ldGVyID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgICAgIHBhcmFtZXRlci0+YXBwZW5kKHByaW1pdGl2
ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKGl0ZXItPmZpcnN0LCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORykpOworICAgICAgICAgICAgICAgIHBhcmFtZXRlci0+YXBwZW5kKGl0ZXItPnNl
Y29uZC5jc3NWYWx1ZShwcmltaXRpdmVWYWx1ZUNhY2hlKSk7CisgICAgICAgICAgICAgICAgZmls
dGVyUGFyYW1ldGVycy0+YXBwZW5kKHBhcmFtZXRlci5yZWxlYXNlKCkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKGZpbHRlclBhcmFtZXRlcnMtPmxlbmd0aCgpKQorICAgICAgICAg
ICAgICAgIGZpbHRlclZhbHVlLT5hcHBlbmQoZmlsdGVyUGFyYW1ldGVycy5yZWxlYXNlKCkpOwor
ICAgICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRleCBkNWFm
ZWYwLi4yZWI2ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgKQEAgLTQ1LDYgKzQ1LDEwIEBACiAjaW5jbHVkZSAiVGhlbWVUeXBlcy5oIgog
I2luY2x1ZGUgIlVuaWNvZGVCaWRpLmgiCiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5j
bHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMxMTgsNiArMzEyMiw0NSBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRVNwZWFrKCkg
Y29uc3QKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpNZXNoQm94VHlwZSBtZXNoQm94VHlwZSkKKyAgICA6IENTU1ZhbHVlKFByaW1pdGl2
ZUNsYXNzKQoreworICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfSURFTlQ7CisgICAgc3dp
dGNoIChtZXNoQm94VHlwZSkgeworICAgIGNhc2UgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpGSUxU
RVJfQk9YOgorICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVGaWx0ZXJCb3g7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpCT1JERVJfQk9YOgor
ICAgICAgICBtX3ZhbHVlLmlkZW50ID0gQ1NTVmFsdWVCb3JkZXJCb3g7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpQQURESU5HX0JPWDoKKyAgICAgICAg
bV92YWx1ZS5pZGVudCA9IENTU1ZhbHVlUGFkZGluZ0JveDsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkNPTlRFTlRfQk9YOgorICAgICAgICBtX3ZhbHVl
LmlkZW50ID0gQ1NTVmFsdWVDb250ZW50Qm94OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisK
K3RlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBDdXN0b21GaWx0
ZXJPcGVyYXRpb246Ok1lc2hCb3hUeXBlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdmFsdWUu
aWRlbnQpIHsKKyAgICBjYXNlIENTU1ZhbHVlRmlsdGVyQm94OgorICAgICAgICByZXR1cm4gQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpGSUxURVJfQk9YOworICAgIGNhc2UgQ1NTVmFsdWVCb3JkZXJC
b3g6CisgICAgICAgIHJldHVybiBDdXN0b21GaWx0ZXJPcGVyYXRpb246OkJPUkRFUl9CT1g7Cisg
ICAgY2FzZSBDU1NWYWx1ZVBhZGRpbmdCb3g6CisgICAgICAgIHJldHVybiBDdXN0b21GaWx0ZXJP
cGVyYXRpb246OlBBRERJTkdfQk9YOworICAgIGNhc2UgQ1NTVmFsdWVDb250ZW50Qm94OgorICAg
ICAgICByZXR1cm4gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpDT05URU5UX0JPWDsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIEN1c3Rv
bUZpbHRlck9wZXJhdGlvbjo6RklMVEVSX0JPWDsKKyAgICB9Cit9CisjZW5kaWYKKwogI2lmIEVO
QUJMRShTVkcpCiAKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmlt
aXRpdmVWYWx1ZShMaW5lQ2FwIGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAKaW5kZXggMDVkMTQ2My4uNDM2ZDc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcApAQCAtNTUsNiArNTUsOSBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgog
I2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ291bnRlci5oIgorI2lmIEVOQUJM
RShDU1NfU0hBREVSUykKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCIKKyNlbmRp
ZgogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJPcGVyYXRpb24uaCIK
ICNlbmRpZgpAQCAtOTYsOCArOTksMTUgQEAKICNpbmNsdWRlICJTaGFkb3dWYWx1ZS5oIgogI2lu
Y2x1ZGUgIlNrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJTdHlsZUNhY2hlZElt
YWdlLmgiCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIlN0eWxlQ2FjaGVkU2hh
ZGVyLmgiCisjZW5kaWYKICNpbmNsdWRlICJTdHlsZVBlbmRpbmdJbWFnZS5oIgogI2luY2x1ZGUg
IlN0eWxlR2VuZXJhdGVkSW1hZ2UuaCIKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVk
ZSAiU3R5bGVQZW5kaW5nU2hhZGVyLmgiCisjaW5jbHVkZSAiU3R5bGVTaGFkZXIuaCIKKyNlbmRp
ZgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1
ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCkBAIC0xMDgsNiArMTE4LDkgQEAKICNlbmRpZgog
I2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lUnVsZS5oIgogI2luY2x1ZGUgIldlYktpdENTU0tl
eWZyYW1lc1J1bGUuaCIKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiV2ViS2l0
Q1NTU2hhZGVyVmFsdWUuaCIKKyNlbmRpZgogI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmgiCiAjaW5jbHVkZSAiV2ViS2l0Rm9udEZhbWlseU5hbWVzLmgiCiAjaW5jbHVkZSAiWE1M
TmFtZXMuaCIKQEAgLTM0OSw2ICszNjIsOSBAQCBDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNl
bGVjdG9yKERvY3VtZW50KiBkb2N1bWVudCwgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZQogICAg
ICwgbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUodHJ1ZSkKICAgICAsIG1fYXBwbHlQcm9w
ZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSkKICAgICAsIG1fYXBwbHlQcm9wZXJ0eShDU1NT
dHlsZUFwcGx5UHJvcGVydHk6OnNoYXJlZENTU1N0eWxlQXBwbHlQcm9wZXJ0eSgpKQorI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKKyAgICAsIG1faGFzUGVuZGluZ1NoYWRlcnMoZmFsc2UpCisjZW5k
aWYKIHsKICAgICBFbGVtZW50KiByb290ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwog
CkBAIC0xMzA3LDYgKzEzMjMsMTEgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVT
ZWxlY3Rvcjo6c3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSogZWwKIAogICAgIC8v
IFN0YXJ0IGxvYWRpbmcgaW1hZ2VzIHJlZmVyZW5jZWQgYnkgdGhpcyBzdHlsZS4KICAgICBsb2Fk
UGVuZGluZ0ltYWdlcygpOworICAgIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAvLyBT
dGFydCBsb2FkaW5nIHRoZSBzaGFkZXJzIHJlZmVyZW5jZWQgYnkgdGhpcyBzdHlsZS4KKyAgICBs
b2FkUGVuZGluZ1NoYWRlcnMoKTsKKyNlbmRpZgogCiAgICAgLy8gQWRkIGFsbCB0aGUgYW5pbWF0
aW5nIHByb3BlcnRpZXMgdG8gdGhlIGtleWZyYW1lLgogICAgIGlmIChrZXlmcmFtZVJ1bGUtPnN0
eWxlKCkpIHsKQEAgLTE0MTYsNiArMTQzNywxMSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBD
U1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQgcHNldWRvLAog
ICAgIC8vIFN0YXJ0IGxvYWRpbmcgaW1hZ2VzIHJlZmVyZW5jZWQgYnkgdGhpcyBzdHlsZS4KICAg
ICBsb2FkUGVuZGluZ0ltYWdlcygpOwogCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIC8v
IFN0YXJ0IGxvYWRpbmcgdGhlIHNoYWRlcnMgcmVmZXJlbmNlZCBieSB0aGlzIHN0eWxlLgorICAg
IGxvYWRQZW5kaW5nU2hhZGVycygpOworI2VuZGlmCisKICAgICAvLyBOb3cgcmV0dXJuIHRoZSBz
dHlsZS4KICAgICByZXR1cm4gbV9zdHlsZS5yZWxlYXNlKCk7CiB9CkBAIC0xNDQ5LDYgKzE0NzUs
MTEgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JQ
YWdlKGludCBwYWdlSW5kZXgpCiAgICAgLy8gU3RhcnQgbG9hZGluZyBpbWFnZXMgcmVmZXJlbmNl
ZCBieSB0aGlzIHN0eWxlLgogICAgIGxvYWRQZW5kaW5nSW1hZ2VzKCk7CiAKKyNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCisgICAgLy8gU3RhcnQgbG9hZGluZyB0aGUgc2hhZGVycyByZWZlcmVuY2Vk
IGJ5IHRoaXMgc3R5bGUuCisgICAgbG9hZFBlbmRpbmdTaGFkZXJzKCk7CisjZW5kaWYKKwogICAg
IC8vIE5vdyByZXR1cm4gdGhlIHN0eWxlLgogICAgIHJldHVybiBtX3N0eWxlLnJlbGVhc2UoKTsK
IH0KQEAgLTIzMDUsNyArMjMzNiwxMSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5TWF0
Y2hlZERlY2xhcmF0aW9ucyhjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQpCiAgICAgYXBw
bHlEZWNsYXJhdGlvbnM8ZmFsc2U+KHRydWUsIG1hdGNoUmVzdWx0LmZpcnN0VUFSdWxlLCBtYXRj
aFJlc3VsdC5sYXN0VUFSdWxlLCBhcHBseUluaGVyaXRlZE9ubHkpOwogICAgIAogICAgIGxvYWRQ
ZW5kaW5nSW1hZ2VzKCk7Ci0gICAgICAgIAorICAgIAorI2lmIEVOQUJMRShDU1NfU0hBREVSUykK
KyAgICBsb2FkUGVuZGluZ1NoYWRlcnMoKTsKKyNlbmRpZgorICAgIAogICAgIEFTU0VSVCghbV9m
b250RGlydHkpOwogICAgIAogICAgIGlmIChjYWNoZWRTdHlsZSB8fCAhY2FjaGVIYXNoKQpAQCAt
NTQwOCw2ICs1NDQzLDE4OSBAQCBzdGF0aWMgRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBl
IGZpbHRlck9wZXJhdGlvbkZvclR5cGUoV2ViS2l0Q1NTRmlsdGVyVmFsdQogICAgIHJldHVybiBG
aWx0ZXJPcGVyYXRpb246Ok5PTkU7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCitTdHls
ZVNoYWRlciogQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVTaGFkZXIoQ1NTVmFsdWUqIHZhbHVlKQor
eworICAgIGlmICh2YWx1ZS0+aXNXZWJLaXRDU1NTaGFkZXJWYWx1ZSgpKQorICAgICAgICByZXR1
cm4gY2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKHN0YXRpY19jYXN0PFdlYktpdENTU1NoYWRlclZh
bHVlKj4odmFsdWUpKTsKKyAgICByZXR1cm4gMDsKK30KKworU3R5bGVTaGFkZXIqIENTU1N0eWxl
U2VsZWN0b3I6OmNhY2hlZE9yUGVuZGluZ0Zyb21WYWx1ZShXZWJLaXRDU1NTaGFkZXJWYWx1ZSog
dmFsdWUpCit7CisgICAgU3R5bGVTaGFkZXIqIHNoYWRlciA9IHZhbHVlLT5jYWNoZWRPclBlbmRp
bmdTaGFkZXIoKTsKKyAgICBpZiAoc2hhZGVyICYmIHNoYWRlci0+aXNQZW5kaW5nU2hhZGVyKCkp
CisgICAgICAgIG1faGFzUGVuZGluZ1NoYWRlcnMgPSB0cnVlOworICAgIHJldHVybiBzaGFkZXI7
Cit9CisKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bG9hZFBlbmRpbmdTaGFkZXJzKCkKK3sKKyNp
ZiAwCisgICAgaWYgKCFtX3N0eWxlLT5oYXNGaWx0ZXIoKSB8fCAhbV9oYXNQZW5kaW5nU2hhZGVy
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJl
c291cmNlTG9hZGVyID0gbV9lbGVtZW50LT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpOworCisgICAgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+ID4mIGZpbHRlck9wZXJh
dGlvbnMgPSBtX3N0eWxlLT5maWx0ZXIoKS5vcGVyYXRpb25zKCk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGZpbHRlck9wZXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gZmlsdGVyT3BlcmF0aW9uID0gZmlsdGVyT3BlcmF0aW9ucy5h
dChpKTsKKyAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpID09
IEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NKSB7CisgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVy
YXRpb24qIGN1c3RvbUZpbHRlciA9IHN0YXRpY19jYXN0PEN1c3RvbUZpbHRlck9wZXJhdGlvbio+
KGZpbHRlck9wZXJhdGlvbi5nZXQoKSk7CisgICAgICAgICAgICBpZiAoY3VzdG9tRmlsdGVyLT52
ZXJ0ZXhTaGFkZXIoKSAmJiBjdXN0b21GaWx0ZXItPnZlcnRleFNoYWRlcigpLT5pc1BlbmRpbmdT
aGFkZXIoKSkgeworICAgICAgICAgICAgICAgIFdlYktpdENTU1NoYWRlclZhbHVlKiBzaGFkZXJW
YWx1ZSA9IHN0YXRpY19jYXN0PFN0eWxlUGVuZGluZ1NoYWRlcio+KGN1c3RvbUZpbHRlci0+dmVy
dGV4U2hhZGVyKCkpLT5jc3NTaGFkZXJWYWx1ZSgpOworICAgICAgICAgICAgICAgIGN1c3RvbUZp
bHRlci0+c2V0VmVydGV4U2hhZGVyKHNoYWRlclZhbHVlLT5jYWNoZWRTaGFkZXIoY2FjaGVkUmVz
b3VyY2VMb2FkZXIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjdXN0b21GaWx0
ZXItPmZyYWdtZW50U2hhZGVyKCkgJiYgY3VzdG9tRmlsdGVyLT5mcmFnbWVudFNoYWRlcigpLT5p
c1BlbmRpbmdTaGFkZXIoKSkgeworICAgICAgICAgICAgICAgIFdlYktpdENTU1NoYWRlclZhbHVl
KiBzaGFkZXJWYWx1ZSA9IHN0YXRpY19jYXN0PFN0eWxlUGVuZGluZ1NoYWRlcio+KGN1c3RvbUZp
bHRlci0+ZnJhZ21lbnRTaGFkZXIoKSktPmNzc1NoYWRlclZhbHVlKCk7CisgICAgICAgICAgICAg
ICAgY3VzdG9tRmlsdGVyLT5zZXRGcmFnbWVudFNoYWRlcihzaGFkZXJWYWx1ZS0+Y2FjaGVkU2hh
ZGVyKGNhY2hlZFJlc291cmNlTG9hZGVyKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisjZW5kaWYKKyAgICBtX2hhc1BlbmRpbmdTaGFkZXJzID0gZmFsc2U7Cit9CisKK3N0YXRp
YyBib29sIGlzQ1NTTnVtYmVyUHJpbWl0aXZlKENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICByZXR1
cm4gKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUik7Cit9CisKK3N0YXRpYyBkb3VibGUgY3NzVmFsdWVUb0RvdWJsZShDU1NWYWx1ZSog
dmFsdWUpCit7CisgICAgQVNTRVJUKGlzQ1NTTnVtYmVyUHJpbWl0aXZlKHZhbHVlKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXREb3VibGVW
YWx1ZSgpOworfQorCitQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gQ1NTU3R5bGVT
ZWxlY3Rvcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKFdlYktpdENTU0ZpbHRlclZhbHVl
KiBmaWx0ZXJWYWx1ZSkKK3sKKyAgICBBU1NFUlQoZmlsdGVyVmFsdWUtPmxlbmd0aCgpKTsKKyAg
ICAgICAgCisgICAgUmVmUHRyPFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXI7CisgICAgUmVmUHRy
PFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlcjsKKyAgICAKKyAgICBDU1NWYWx1ZSogc2hhZGVy
c1ZhbHVlID0gZmlsdGVyVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCk7CisgICAgQVNT
RVJUKHNoYWRlcnNWYWx1ZS0+aXNWYWx1ZUxpc3QoKSk7CisgICAgQ1NTVmFsdWVMaXN0KiBzaGFk
ZXJzTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHNoYWRlcnNWYWx1ZSk7CisKKyAg
ICBBU1NFUlQoc2hhZGVyc0xpc3QtPmxlbmd0aCgpKTsKKyAgICB2ZXJ0ZXhTaGFkZXIgPSBzdHls
ZVNoYWRlcihzaGFkZXJzTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7CisgICAgaWYg
KHNoYWRlcnNMaXN0LT5sZW5ndGgoKSA+IDEpCisgICAgICAgIGZyYWdtZW50U2hhZGVyID0gc3R5
bGVTaGFkZXIoc2hhZGVyc0xpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOworICAgIAor
ICAgIHVuc2lnbmVkIG1lc2hSb3dzID0gMDsKKyAgICB1bnNpZ25lZCBtZXNoQ29sdW1ucyA9IDA7
CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNoVHlwZSA9IEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6QVRUQUNIRUQ7CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNo
Qm94VHlwZSBtZXNoQm94VHlwZSA9IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6RklMVEVSX0JPWDsK
KyAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgCisgICAgaWYgKGZp
bHRlclZhbHVlLT5sZW5ndGgoKSA+IDEpIHsKKyAgICAgICAgQ1NTVmFsdWUqIHNlY29uZEZpbHRl
clZhbHVlID0gZmlsdGVyVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSk7CisgICAgICAg
IEFTU0VSVChzZWNvbmRGaWx0ZXJWYWx1ZS0+aXNWYWx1ZUxpc3QoKSk7CisgICAgICAgIENTU1Zh
bHVlTGlzdCogbWVzaFZhbHVlc0xpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPihzZWNv
bmRGaWx0ZXJWYWx1ZSk7CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBuZXh0VmFsdWVJbmRl
eCA9IDA7CisgICAgICAgIC8vIFRoZSBzZWNvbmQgdmFsdWUgbWlnaHQgYmUgdGhlIG1lc2ggYm94
IG9yIHRoZSBsaXN0IG9mIHBhcmFtdGVyczoKKyAgICAgICAgLy8gSWYgaXQgc3RhcnRzIHdpdGgg
YSBudW1iZXIgb3IgYW55IG9mIHRoZSBtZXNoLWJveCBpZGVudGlmaWVycyBpdCBpcyAKKyAgICAg
ICAgLy8gdGhlIG1lc2gtYm94IGxpc3QsIGlmIG5vdCBpdCBtZWFucyBpdCBpcyB0aGUgcGFyYW1l
dGVycyBsaXN0LgorCisgICAgICAgIEFTU0VSVChtZXNoVmFsdWVzTGlzdC0+bGVuZ3RoKCkpOwor
ICAgICAgICBDU1NWYWx1ZSogY3NzVmFsdWUgPSBtZXNoVmFsdWVzTGlzdC0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjayhuZXh0VmFsdWVJbmRleCk7CisgICAgICAgIGlmIChjc3NWYWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKSB7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNzc1ZhbHVlKTsKKyAgICAg
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgb25seSBvbmUgaW50
ZWdlciB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IHdpbGwgc2V0IGJvdGgKKyAgICAgICAgICAgICAg
ICAvLyB0aGUgcm93cyBhbmQgdGhlIGNvbHVtbnMuCisgICAgICAgICAgICAgICAgbWVzaFJvd3Mg
PSBtZXNoQ29sdW1ucyA9IHByaW1pdGl2ZVZhbHVlLT5nZXRJbnRWYWx1ZSgpOworICAgICAgICAg
ICAgICAgICsrbmV4dFZhbHVlSW5kZXg7CisgICAgICAgICAgICAgICAgLy8gVHJ5IHRvIG1hdGNo
IGFub3RoZXIgbnVtYmVyIGZvciB0aGUgY29sdW1ucy4KKyAgICAgICAgICAgICAgICBjc3NWYWx1
ZSA9IG1lc2hWYWx1ZXNMaXN0LT5pdGVtKG5leHRWYWx1ZUluZGV4KTsKKyAgICAgICAgICAgICAg
ICBpZiAoY3NzVmFsdWUgJiYgY3NzVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAg
ICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGNzc1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lc2hDb2x1bW5zID0gcHJp
bWl0aXZlVmFsdWUtPmdldEludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICArK25l
eHRWYWx1ZUluZGV4OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjc3NWYWx1ZSA9IG1l
c2hWYWx1ZXNMaXN0LT5pdGVtKG5leHRWYWx1ZUluZGV4KTsKKyAgICAgICAgaWYgKGNzc1ZhbHVl
ICYmIGNzc1ZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4oY3NzVmFsdWUpOworICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVU
eXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAKKyAgICAgICAgICAgICAgICAm
JiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVCb3JkZXJCb3gKKyAgICAg
ICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVQ
YWRkaW5nQm94CisgICAgICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlQ29udGVudEJveAorICAgICAgICAgICAgICAgICAgICB8fCBwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUZpbHRlckJveCkpIHsKKyAgICAgICAgICAg
ICAgICBtZXNoQm94VHlwZSA9ICpwcmltaXRpdmVWYWx1ZTsKKyAgICAgICAgICAgICAgICArK25l
eHRWYWx1ZUluZGV4OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBjc3NWYWx1ZSA9IG1lc2hWYWx1ZXNMaXN0LT5pdGVtKG5leHRWYWx1ZUluZGV4KTsKKyAgICAg
ICAgaWYgKGNzc1ZhbHVlICYmIGNzc1ZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oY3NzVmFsdWUpOworICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAKKyAg
ICAgICAgICAgICAgICAmJiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVE
ZXRhY2hlZCkpIHsKKyAgICAgICAgICAgICAgICBtZXNoVHlwZSA9IEN1c3RvbUZpbHRlck9wZXJh
dGlvbjo6REVUQUNIRUQ7CisgICAgICAgICAgICAgICAgKytuZXh0VmFsdWVJbmRleDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIG5leHRWYWx1ZUluZGV4ID09IDAg
dGhlbiB3ZSBoYXZlbid0IHVzZWQgYW55IG9mIHRoZSB2YWx1ZXMgb2YgdGhlIHNlY29uZCB2YWx1
ZSBmb3IgdGhlIG1lc2guIEl0IG1lYW5zLAorICAgICAgICAvLyB0aGUgc2Vjb25kIHZhbHVlIGlz
IGFjdHVhbGx5IHRoZSBwYXJhbWV0ZXJzIGxpc3QuIElmIG5leHRWYWx1ZUluZGV4ID4gMCB0aGVu
IHdlJ3ZlIHBhcnNlZCBhdCBsZWFzdCBvbmUgCisgICAgICAgIC8vIHZhbHVlIGZvciB0aGUgbWVz
aCwgc28gd2UgbmVlZCB0byBtb3ZlIHRvIHRoZSBmb2xsb3dpbmcgaXRlbSBpbiB0aGUgZmlsdGVy
VmFsdWUuCisgICAgICAgIENTU1ZhbHVlKiB0aGlyZEZpbHRlclZhbHVlID0gbmV4dFZhbHVlSW5k
ZXggPiAwID8gZmlsdGVyVmFsdWUtPml0ZW0oMikgOiBzZWNvbmRGaWx0ZXJWYWx1ZTsKKyAgICAg
ICAgaWYgKHRoaXJkRmlsdGVyVmFsdWUpIHsKKyAgICAgICAgICAgIEFTU0VSVCh0aGlyZEZpbHRl
clZhbHVlLT5pc1ZhbHVlTGlzdCgpKTsKKyAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogcGFyYW1l
dGVyc0xpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih0aGlyZEZpbHRlclZhbHVlKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gUGFyc2UgdGhlIHBhcmFtdGVycyBoZXJlLgor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCB2YWx1ZUluZGV4ID0gMDsgdmFsdWVJbmRleCA8IHBh
cmFtZXRlcnNMaXN0LT5sZW5ndGgoKTsgKyt2YWx1ZUluZGV4KSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKHBhcmFtZXRlcnNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKHZhbHVlSW5kZXgp
LT5pc1ZhbHVlTGlzdCgpKTsKKyAgICAgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIHBhcmFtZXRl
clZhbHVlc0xpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPihwYXJhbWV0ZXJzTGlzdC0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjayh2YWx1ZUluZGV4KSk7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtZXRlclZhbHVlc0xpc3QtPmxlbmd0aCgpID09IDIp
OworICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbWV0ZXJWYWx1ZXNMaXN0LT5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDApLT5pc1ByaW1pdGl2ZVZhbHVlKCkpOworICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBuYW1lVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHBhcmFtZXRlclZhbHVlc0xpc3QtPml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soMCkpOworICAgICAgICAgICAgICAgIFN0cmluZyBwYXJhbWV0ZXJOYW1lID0gbmFt
ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlciB2YWx1ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBDU1NWYWx1ZSogcGFyYW1ldGVyVmFsdWUgPSBwYXJhbWV0ZXJWYWx1ZXNMaXN0
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpOworICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0
ZXJWYWx1ZS0+aXNWYWx1ZUxpc3QoKSkgeworICAgICAgICAgICAgICAgICAgICBDU1NWYWx1ZUxp
c3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPihwYXJhbWV0ZXJWYWx1ZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChsaXN0LT5sZW5ndGgoKSAmJiBsaXN0LT5sZW5ndGgoKSA8
PSA0IAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgaXNDU1NOdW1iZXJQcmltaXRpdmUobGlz
dC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIE51bWJlciB0eXBlLiBSZWFkIGFsbCB0aGUgY29tcG9uZW50cy4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIEN1
c3RvbUZpbHRlclBhcmFtZXRlcjo6TnVtYmVyOjpWYWx1ZVR5cGUgY29tcG9uZW50cyA9IHswLjAs
IDAuMCwgMC4wLCAwLjB9OworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IGluZGV4IDwg
bGlzdC0+bGVuZ3RoKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NWYWx1ZSogY29tcG9uZW50VmFsdWUgPSBsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGlu
ZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzQ1NTTnVtYmVyUHJpbWl0
aXZlKGNvbXBvbmVudFZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50c1tpbmRleF0gPSBj
c3NWYWx1ZVRvRG91YmxlKGNvbXBvbmVudFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
KEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6TnVtYmVyOjpjcmVhdGUoaW5kZXgsIGNvbXBvbmVudHMp
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogUGFyc2UgYWxsIHRoZSBvdGhlciBwYXJh
bWV0ZXIgdHlwZXMKKyAgICAgICAgICAgICAgICAvLyB0ZXh0dXJlczogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDQyCisgICAgICAgICAgICAgICAgLy8gM2QtdHJh
bnNmb3JtczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDQzCisg
ICAgICAgICAgICAgICAgLy8gbWF0MiwgbWF0MywgbWF0NDogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxNDQ0CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlLnR5cGUo
KSAhPSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OklOVkFMSUQpCisgICAgICAgICAgICAgICAgICAg
IHBhcmFtZXRlcnMuc2V0KHBhcmFtZXRlck5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGUodmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlciwgbWVzaFJvd3MsIG1lc2hDb2x1bW5z
LCBtZXNoVHlwZSwgbWVzaEJveFR5cGUsIHBhcmFtZXRlcnMpOworfQorI2VuZGlmCisKIGJvb2wg
Q1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1
ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBGaWx0ZXJPcGVy
YXRpb25zJiBvdXRPcGVyYXRpb25zKQogewogICAgIGlmICghaW5WYWx1ZSB8fCAhaW5WYWx1ZS0+
aXNWYWx1ZUxpc3QoKSkgewpAQCAtNTQyNyw4ICs1NjQ1LDkgQEAgYm9vbCBDU1NTdHlsZVNlbGVj
dG9yOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKENTU1ZhbHVlKiBpblZhbHVlLCBSZW5kZXJTdHls
ZSogc3QKIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICAgICAgaWYgKG9wZXJhdGlvblR5
cGUgPT0gRmlsdGVyT3BlcmF0aW9uOjpDVVNUT00pIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhlIGZpbHRlciBvcGVyYXRpb24gZm9yIHRoZSBjdXN0b20gc2hhZGVyLgotICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNDQ2
CisgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uPiBvcGVyYXRpb24gPSBj
cmVhdGVDdXN0b21GaWx0ZXJPcGVyYXRpb24oZmlsdGVyVmFsdWUpOworICAgICAgICAgICAgaWYg
KG9wZXJhdGlvbikKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBl
bmQob3BlcmF0aW9uKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCmluZGV4IGRmYjllYWMuLmM5NmY2Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtNTMsNiArNTMsNyBAQCBj
bGFzcyBDU1NTdHlsZVJ1bGU7CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ1NTVmFsdWU7
CiBjbGFzcyBDb250YWluZXJOb2RlOworY2xhc3MgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOwogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CkBAIC02NiwxMSArNjcs
MTQgQEAgY2xhc3MgUnVsZURhdGE7CiBjbGFzcyBSdWxlU2V0OwogY2xhc3MgU2V0dGluZ3M7CiBj
bGFzcyBTdHlsZUltYWdlOworY2xhc3MgU3R5bGVTaGFkZXI7CiBjbGFzcyBTdHlsZVNoZWV0Owog
Y2xhc3MgU3R5bGVTaGVldExpc3Q7CiBjbGFzcyBTdHlsZWRFbGVtZW50OwogY2xhc3MgV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlOwogY2xhc3MgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZTsKK2NsYXNzIFdl
YktpdENTU0ZpbHRlclZhbHVlOworY2xhc3MgV2ViS2l0Q1NTU2hhZGVyVmFsdWU7CiAKIGNsYXNz
IE1lZGlhUXVlcnlSZXN1bHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1lZGlhUXVlcnlS
ZXN1bHQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTIwMiw3ICsyMDYsMTMgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogICAgIGJvb2wgY3JlYXRlRmlsdGVyT3Bl
cmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5bGUqIGluU3R5bGUsIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIEZpbHRlck9wZXJhdGlvbnMmIG91dE9wZXJhdGlvbnMpOworI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKKyAgICBTdHlsZVNoYWRlciogc3R5bGVTaGFkZXIoQ1NTVmFsdWUq
KTsKKyAgICBTdHlsZVNoYWRlciogY2FjaGVkT3JQZW5kaW5nRnJvbVZhbHVlKFdlYktpdENTU1No
YWRlclZhbHVlKik7CisgICAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJPcGVyYXRpb24+IGNyZWF0
ZUN1c3RvbUZpbHRlck9wZXJhdGlvbihXZWJLaXRDU1NGaWx0ZXJWYWx1ZSopOworICAgIHZvaWQg
bG9hZFBlbmRpbmdTaGFkZXJzKCk7CiAjZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCiAKICAgICBzdHJ1Y3QgRmVhdHVyZXMgewogICAgICAgICBGZWF0dXJlcygpOwpAQCAtMzg2
LDYgKzM5NiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hcHBseVByb3BlcnR5VG9SZWd1bGFy
U3R5bGU7CiAgICAgYm9vbCBtX2FwcGx5UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGU7CiAgICAg
Y29uc3QgQ1NTU3R5bGVBcHBseVByb3BlcnR5JiBtX2FwcGx5UHJvcGVydHk7CisgICAgCisjaWYg
RU5BQkxFKENTU19TSEFERVJTKQorICAgIGJvb2wgbV9oYXNQZW5kaW5nU2hhZGVyczsKKyNlbmRp
ZgogCiAgICAgZnJpZW5kIGNsYXNzIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTsKICAgICBmcmllbmQg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdGNoZWRTdHlsZURlY2xhcmF0aW9uJiwgY29uc3QgTWF0
Y2hlZFN0eWxlRGVjbGFyYXRpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hh
ZGVyVmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MzZmY2UK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFs
dWUuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIldl
YktpdENTU1NoYWRlclZhbHVlLmgiCisKKyNpbmNsdWRlICJTdHlsZUNhY2hlZFNoYWRlci5oIgor
I2luY2x1ZGUgIlN0eWxlUGVuZGluZ1NoYWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1dlYktpdENTU1NoYWRlclZhbHVlOjpXZWJLaXRDU1NTaGFkZXJWYWx1ZShjb25zdCBTdHJpbmcm
IHVybCkKKyAgICA6IENTU1ByaW1pdGl2ZVZhbHVlKFdlYktpdENTU1NoYWRlckNsYXNzLCB1cmws
IENTU19VUkkpCisgICAgLCBtX2FjY2Vzc2VkU2hhZGVyKGZhbHNlKQoreworfQorCitXZWJLaXRD
U1NTaGFkZXJWYWx1ZTo6fldlYktpdENTU1NoYWRlclZhbHVlKCkKK3sKK30KKworU3R5bGVDYWNo
ZWRTaGFkZXIqIFdlYktpdENTU1NoYWRlclZhbHVlOjpjYWNoZWRTaGFkZXIoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGxvYWRlcikKK3sKKyAgICBBU1NFUlQobG9hZGVyKTsKKworICAgIGlmICghbV9h
Y2Nlc3NlZFNoYWRlcikgeworICAgICAgICBtX2FjY2Vzc2VkU2hhZGVyID0gdHJ1ZTsKKyAgICAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGUgQ2FjaGVkU2hhZGVyCisgICAgICAgIG1fc2hhZGVy
ID0gU3R5bGVDYWNoZWRTaGFkZXI6OmNyZWF0ZSgpOworICAgIH0KKworICAgIHJldHVybiAobV9z
aGFkZXIgJiYgbV9zaGFkZXItPmlzQ2FjaGVkU2hhZGVyKCkpID8gc3RhdGljX2Nhc3Q8U3R5bGVD
YWNoZWRTaGFkZXIqPihtX3NoYWRlci5nZXQoKSkgOiAwOworfQorCitTdHlsZVNoYWRlciogV2Vi
S2l0Q1NTU2hhZGVyVmFsdWU6OmNhY2hlZE9yUGVuZGluZ1NoYWRlcigpCit7CisgICAgaWYgKCFt
X3NoYWRlcikKKyAgICAgICAgbV9zaGFkZXIgPSBTdHlsZVBlbmRpbmdTaGFkZXI6OmNyZWF0ZSh0
aGlzKTsKKworICAgIHJldHVybiBtX3NoYWRlci5nZXQoKTsKK30KKworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oCmluZGV4IDU1ZmE2NWMuLmE0ZjgyYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oCkBAIC0zNiwxNSArMzYsMjMg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
K2NsYXNzIFN0eWxlQ2FjaGVkU2hhZGVyOworY2xhc3MgU3R5bGVTaGFkZXI7CisKIGNsYXNzIFdl
YktpdENTU1NoYWRlclZhbHVlIDogcHVibGljIENTU1ByaW1pdGl2ZVZhbHVlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRDU1NTaGFkZXJWYWx1ZT4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgdXJsKSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0Q1NTU2hhZGVyVmFsdWUo
dXJsKSk7IH0KKyAgICB+V2ViS2l0Q1NTU2hhZGVyVmFsdWUoKTsKIAorICAgIFN0eWxlQ2FjaGVk
U2hhZGVyKiBjYWNoZWRTaGFkZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsKKyAgICBTdHlsZVNo
YWRlciogY2FjaGVkT3JQZW5kaW5nU2hhZGVyKCk7CisgICAgCiBwcml2YXRlOgotICAgIFdlYktp
dENTU1NoYWRlclZhbHVlKGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IENTU1ByaW1pdGl2
ZVZhbHVlKFdlYktpdENTU1NoYWRlckNsYXNzLCB1cmwsIENTU19VUkkpCi0gICAgewotICAgIH0K
KyAgICBXZWJLaXRDU1NTaGFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIHVybCk7CisgICAgCisgICAg
UmVmUHRyPFN0eWxlU2hhZGVyPiBtX3NoYWRlcjsKKyAgICBib29sIG1fYWNjZXNzZWRTaGFkZXI7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJh
dGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM3M2ZkNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtMCwwICsxLDIyNyBAQAorLyoKKyAqIENvcHly
aWdodCAyMDExIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgiCisKKyNpbmNsdWRlICJD
U1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlQ2FjaGUuaCIK
KyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29s
IEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6TnVtYmVyOjpvcGVyYXRvcj09KGNvbnN0IE51bWJlciYg
b3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1fY291bnQgIT0gb3RoZXIubV9jb3VudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jb3VudDsgKytp
KQorICAgICAgICBpZiAobV92YWx1ZVtpXSAhPSBvdGhlci5tX3ZhbHVlW2ldKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyYgYSwgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1l
dGVycyYgYikKK3sKKyAgICBpZiAoYS5zaXplKCkgIT0gYi5zaXplKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzOjpjb25zdF9pdGVyYXRv
ciBpdGVyQSA9IGEuYmVnaW4oKTsKKyAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzOjpjb25zdF9p
dGVyYXRvciBlbmRBID0gYS5lbmQoKTsKKyAgICBmb3IgKCA7IGl0ZXJBICE9IGVuZEE7ICsraXRl
ckEpIHsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSBpdGVyQS0+Zmlyc3Q7CisgICAgICAgIEN1c3Rv
bUZpbHRlclBhcmFtZXRlcnM6OmNvbnN0X2l0ZXJhdG9yIGl0ZXJCID0gYi5maW5kKG5hbWUpOwor
ICAgICAgICBpZiAoaXRlckIgPT0gYi5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgCisgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgcGFyYW1BID0g
aXRlckEtPnNlY29uZDsKKyAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyJiBwYXJh
bUIgPSBpdGVyQi0+c2Vjb25kOworICAgICAgICBpZiAocGFyYW1BICE9IHBhcmFtQikKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K0N1c3RvbUZpbHRlclBhcmFtZXRlcjo6Q3VzdG9tRmlsdGVyUGFyYW1ldGVyKGNvbnN0IEN1c3Rv
bUZpbHRlclBhcmFtZXRlciYgb3RoZXIpCisgICAgOiBtX3R5cGUob3RoZXIubV90eXBlKQorewor
ICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBCT09MRUFOOgorICAgICAgICBtX3ZhbHVl
LmJvb2xlYW4gPSBvdGhlci5tX3ZhbHVlLmJvb2xlYW47CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTlVNQkVSOgorICAgICAgICBtX3ZhbHVlLm51bWJlciA9IG90aGVyLm1fdmFsdWUubnVtYmVy
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFSUkFZOgorICAgICAgICBtX3ZhbHVlLmFycmF5
ID0gbmV3IEFycmF5KCpvdGhlci5tX3ZhbHVlLmFycmF5KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBUUkFOU0ZPUk06CisgICAgICAgIG1fdmFsdWUudHJhbnNmb3JtID0gbmV3IFRyYW5zZm9y
bU9wZXJhdGlvbnMob3RoZXIubV92YWx1ZS50cmFuc2Zvcm0pOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIE1BVFJJWDI6CisgICAgICAgIGNvcHlWYWx1ZXMobV92YWx1ZS5tYXRyaXgyLCBvdGhl
ci5tX3ZhbHVlLm1hdHJpeDIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1BVFJJWDM6Cisg
ICAgICAgIGNvcHlWYWx1ZXMobV92YWx1ZS5tYXRyaXgzLCBvdGhlci5tX3ZhbHVlLm1hdHJpeDMp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1BVFJJWDQ6CisgICAgICAgIGNvcHlWYWx1ZXMo
bV92YWx1ZS5tYXRyaXg0LCBvdGhlci5tX3ZhbHVlLm1hdHJpeDQpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIElOVkFMSUQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworQ3VzdG9tRmls
dGVyUGFyYW1ldGVyJiBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6Om9wZXJhdG9yPShjb25zdCBDdXN0
b21GaWx0ZXJQYXJhbWV0ZXImIG90aGVyKQoreworICAgIGRlc3Ryb3lWYWx1ZSgpOworICAgIG1f
dHlwZSA9IG90aGVyLm1fdHlwZTsKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgQk9P
TEVBTjoKKyAgICAgICAgbV92YWx1ZS5ib29sZWFuID0gb3RoZXIubV92YWx1ZS5ib29sZWFuOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VTUJFUjoKKyAgICAgICAgbV92YWx1ZS5udW1iZXIg
PSBvdGhlci5tX3ZhbHVlLm51bWJlcjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBUlJBWToK
KyAgICAgICAgbV92YWx1ZS5hcnJheSA9IG5ldyBBcnJheSgqb3RoZXIubV92YWx1ZS5hcnJheSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFJBTlNGT1JNOgorICAgICAgICBtX3ZhbHVlLnRy
YW5zZm9ybSA9IG5ldyBUcmFuc2Zvcm1PcGVyYXRpb25zKG90aGVyLm1fdmFsdWUudHJhbnNmb3Jt
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNQVRSSVgyOgorICAgICAgICBjb3B5VmFsdWVz
KG1fdmFsdWUubWF0cml4Miwgb3RoZXIubV92YWx1ZS5tYXRyaXgyKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBNQVRSSVgzOgorICAgICAgICBjb3B5VmFsdWVzKG1fdmFsdWUubWF0cml4Mywg
b3RoZXIubV92YWx1ZS5tYXRyaXgzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNQVRSSVg0
OgorICAgICAgICBjb3B5VmFsdWVzKG1fdmFsdWUubWF0cml4NCwgb3RoZXIubV92YWx1ZS5tYXRy
aXg0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJTlZBTElEOgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiAqdGhpczsK
K30KKwordm9pZCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OmRlc3Ryb3lWYWx1ZSgpCit7CisgICAg
c3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIEFSUkFZOgorICAgICAgICBkZWxldGUgbV92YWx1
ZS5hcnJheTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUUkFOU0ZPUk06CisgICAgICAgIGRl
bGV0ZSBtX3ZhbHVlLnRyYW5zZm9ybTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCT09MRUFO
OgorICAgIGNhc2UgTlVNQkVSOgorICAgIGNhc2UgTUFUUklYMjoKKyAgICBjYXNlIE1BVFJJWDM6
CisgICAgY2FzZSBNQVRSSVg0OgorICAgICAgICAvLyBEbyBub3RoaW5nIGZvciB0aGUgUE9EIHN0
cnVjdHVyZXMuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSU5WQUxJRDoKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCitDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6On5DdXN0b21GaWx0ZXJQYXJh
bWV0ZXIoKQoreworICAgIGRlc3Ryb3lWYWx1ZSgpOworfQorCitib29sIEN1c3RvbUZpbHRlclBh
cmFtZXRlcjo6b3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXImIG90aGVyKSBj
b25zdAoreworICAgIGlmIChtX3R5cGUgIT0gb3RoZXIubV90eXBlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIEJPT0xFQU46Cisg
ICAgICAgIHJldHVybiBtX3ZhbHVlLmJvb2xlYW4gPT0gb3RoZXIubV92YWx1ZS5ib29sZWFuOwor
ICAgIGNhc2UgTlVNQkVSOgorICAgICAgICByZXR1cm4gbV92YWx1ZS5udW1iZXIgPT0gb3RoZXIu
bV92YWx1ZS5udW1iZXI7CisgICAgY2FzZSBBUlJBWToKKyAgICAgICAgcmV0dXJuICptX3ZhbHVl
LmFycmF5ID09ICpvdGhlci5tX3ZhbHVlLmFycmF5OworICAgIGNhc2UgVFJBTlNGT1JNOgorICAg
ICAgICByZXR1cm4gKm1fdmFsdWUudHJhbnNmb3JtID09ICpvdGhlci5tX3ZhbHVlLnRyYW5zZm9y
bTsKKyAgICBjYXNlIE1BVFJJWDI6CisgICAgICAgIHJldHVybiBtX3ZhbHVlLm1hdHJpeDIgPT0g
b3RoZXIubV92YWx1ZS5tYXRyaXgyOworICAgIGNhc2UgTUFUUklYMzoKKyAgICAgICAgcmV0dXJu
IG1fdmFsdWUubWF0cml4MyA9PSBvdGhlci5tX3ZhbHVlLm1hdHJpeDM7CisgICAgY2FzZSBNQVRS
SVg0OgorICAgICAgICByZXR1cm4gbV92YWx1ZS5tYXRyaXg0ID09IG90aGVyLm1fdmFsdWUubWF0
cml4NDsKKyAgICBjYXNlIElOVkFMSUQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKKyAgICAvLyBGaXhpbmcgY29tcGlsZXIgd2FybmluZy4KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+IEN1c3Rv
bUZpbHRlclBhcmFtZXRlcjo6Y3NzVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWVDYWNoZSogcHJpbWl0
aXZlVmFsdWVDYWNoZSkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2Ug
TlVNQkVSOiB7CisgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgIGNvbnN0IE51bWJlcjo6VmFsdWVU
eXBlJiB2YWx1ZSA9IG1fdmFsdWUubnVtYmVyLnZhbHVlKCk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3ZhbHVlLm51bWJlci5jb3VudCgpOyArK2kpCisgICAgICAgICAgICBs
aXN0LT5hcHBlbmQocHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUodmFsdWVbaV0sIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgIHJldHVybiBsaXN0LnJlbGVh
c2UoKTsKKyAgICB9CisgICAgY2FzZSBCT09MRUFOOgorICAgIGNhc2UgQVJSQVk6CisgICAgY2Fz
ZSBUUkFOU0ZPUk06CisgICAgY2FzZSBNQVRSSVgyOgorICAgIGNhc2UgTUFUUklYMzoKKyAgICBj
YXNlIE1BVFJJWDQ6CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlc2UuCisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgSU5WQUxJRDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworQ3VzdG9t
RmlsdGVyT3BlcmF0aW9uOjp+Q3VzdG9tRmlsdGVyT3BlcmF0aW9uKCkKK3sKKyAgICAvLyBUaGUg
ZGVzdHJ1Y3RvciBvZiBDdXN0b21GaWx0ZXJPcGVyYXRpb24gd2lsbCBnZW5lcmF0ZSBhIGxvdCBv
ZiBjb2RlLAorICAgIC8vIHNvIEkga2VlcCBpdCBoZXJlIHRvIGF2b2lkIGdlbmVyYXRpbmcgaXQg
bXVsdGlwbGUgdGltZXMuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShDU1NfU0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZmZlODAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9w
ZXJhdGlvbi5oCkBAIC0wLDAgKzEsMzU4IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uX2gKKyNkZWZpbmUgQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uX2gKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKworI2luY2x1ZGUgIkZpbHRlck9w
ZXJhdGlvbi5oIgorI2luY2x1ZGUgIlN0eWxlU2hhZGVyLmgiCisjaW5jbHVkZSAiVHJhbnNmb3Jt
T3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisvLyBDU1MgU2hhZGVycworCitjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZUNhY2hl
OworY2xhc3MgQ1NTVmFsdWU7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordm9pZCBjb3B5VmFs
dWVzKFQmIGRlc3QsIGNvbnN0IFQmIHNvdXJjZSkKK3sKKyAgICBjb25zdCBzaXplX3Qgc2l6ZSA9
IHNpemVvZihUKSAvIHNpemVvZihzb3VyY2VbMF0pOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQorICAgICAgICBkZXN0W2ldID0gc291cmNlW2ldOworfQorCitjbGFzcyBD
dXN0b21GaWx0ZXJQYXJhbWV0ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIGVudW0gUGFyYW1ldGVyVHlwZSB7CisgICAgICAgIElOVkFMSUQsCisgICAgICAg
IEJPT0xFQU4sCisgICAgICAgIE5VTUJFUiwKKyAgICAgICAgQVJSQVksCisgICAgICAgIFRSQU5T
Rk9STSwgLy8gVHJhbnNmb3JtT3BlcmF0aW9ucworICAgICAgICBNQVRSSVgyLAorICAgICAgICBN
QVRSSVgzLAorICAgICAgICBNQVRSSVg0LAorICAgICAgICAKKyAgICAgICAgLy8gRklYTUU6IElt
cGxlbWVudCB0ZXh0dXJlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzE0NDIKKyAgICAgICAgLy8gVEVYVFVSRQorICAgIH07CisgICAgCisgICAgLy8gVGhlIG51bWJl
ciBjYW4gaGF2ZSB1cCB0byA0IGNvbXBvbmVudHMuCisgICAgY2xhc3MgTnVtYmVyIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIHR5cGVkZWYgZG91YmxlIFZhbHVlVHlwZVs0XTsKKyAgICAgICAgCisg
ICAgICAgIC8vIEF2b2lkaW5nIGEgY29uc3RydWN0b3IgZm9yIHRoaXMgdHlwZS4KKyAgICAgICAg
c3RhdGljIE51bWJlciBjcmVhdGUodW5zaWduZWQgY291bnQsIGNvbnN0IFZhbHVlVHlwZSYgdmFs
dWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChjb3VudCA8PSA0KTsKKyAgICAgICAg
ICAgIE51bWJlciByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQubV9jb3VudCA9IGNvdW50Owor
ICAgICAgICAgICAgY29weVZhbHVlcyhyZXN1bHQubV92YWx1ZSwgdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdW5zaWduZWQg
Y291bnQoKSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9CisgICAgICAgIHZvaWQgc2V0Q291bnQo
dW5zaWduZWQgY291bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2NvdW50IDw9
IDQpOworICAgICAgICAgICAgbV9jb3VudCA9IGNvdW50OworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIHsgY29weVZhbHVl
cyhtX3ZhbHVlLCB2YWx1ZSk7IH0KKyAgICAgICAgY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBOdW1iZXImKSBjb25zdDsKKyAgICBwcml2YXRlOgorICAgICAgICB1bnNpZ25lZCBt
X2NvdW50OworICAgICAgICBWYWx1ZVR5cGUgbV92YWx1ZTsKKyAgICB9OworICAgIAorICAgIHR5
cGVkZWYgVmVjdG9yPGZsb2F0PiBBcnJheTsKKyAgICAvLyBUaGUgdmFsdWVzIG9mIHRoZSBtYXRy
aWNlcyBhcmUgaW4gY29sdW1uIG1ham9yIG9yZGVyLgorICAgIHR5cGVkZWYgZmxvYXQgTWF0cml4
Mls0XTsKKyAgICB0eXBlZGVmIGZsb2F0IE1hdHJpeDNbOV07CisgICAgdHlwZWRlZiBmbG9hdCBN
YXRyaXg0WzE2XTsKKyAgICAKKyAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIoKQorICAgICAgICA6
IG1fdHlwZShJTlZBTElEKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQ3VzdG9tRmlsdGVyUGFy
YW1ldGVyKGJvb2wgYm9vbGVhbikKKyAgICAgICAgOiBtX3R5cGUoQk9PTEVBTikKKyAgICB7Cisg
ICAgICAgIG1fdmFsdWUuYm9vbGVhbiA9IGJvb2xlYW47CisgICAgfQorICAgIAorICAgIEN1c3Rv
bUZpbHRlclBhcmFtZXRlcihjb25zdCBOdW1iZXImIG51bWJlcikKKyAgICAgICAgOiBtX3R5cGUo
TlVNQkVSKQorICAgIHsKKyAgICAgICAgbV92YWx1ZS5udW1iZXIgPSBudW1iZXI7CisgICAgfQor
ICAgIAorICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlcihjb25zdCBBcnJheSYgYXJyYXkpCisgICAg
ICAgIDogbV90eXBlKEFSUkFZKQorICAgIHsKKyAgICAgICAgbV92YWx1ZS5hcnJheSA9IG5ldyBB
cnJheShhcnJheSk7CisgICAgfQorICAgIAorICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlcihjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvcGVyYXRpb25zKQorICAgICAgICA6IG1fdHlwZShUUkFO
U0ZPUk0pCisgICAgeworICAgICAgICBtX3ZhbHVlLnRyYW5zZm9ybSA9IG5ldyBUcmFuc2Zvcm1P
cGVyYXRpb25zKG9wZXJhdGlvbnMpOworICAgIH0KKyAgICAKKyAgICBDdXN0b21GaWx0ZXJQYXJh
bWV0ZXIoY29uc3QgTWF0cml4MiYgbWF0cml4MikKKyAgICAgICAgOiBtX3R5cGUoTUFUUklYMikK
KyAgICB7CisgICAgICAgIGNvcHlWYWx1ZXMobV92YWx1ZS5tYXRyaXgyLCBtYXRyaXgyKTsKKyAg
ICB9CisgICAgCisgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyKGNvbnN0IE1hdHJpeDMmIG1hdHJp
eDMpCisgICAgICAgIDogbV90eXBlKE1BVFJJWDMpCisgICAgeworICAgICAgICBjb3B5VmFsdWVz
KG1fdmFsdWUubWF0cml4MywgbWF0cml4Myk7CisgICAgfQorICAgIAorICAgIEN1c3RvbUZpbHRl
clBhcmFtZXRlcihjb25zdCBNYXRyaXg0JiBtYXRyaXg0KQorICAgICAgICA6IG1fdHlwZShNQVRS
SVg0KQorICAgIHsKKyAgICAgICAgY29weVZhbHVlcyhtX3ZhbHVlLm1hdHJpeDQsIG1hdHJpeDQp
OworICAgIH0KKyAgICAKKyAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXIoY29uc3QgQ3VzdG9tRmls
dGVyUGFyYW1ldGVyJik7CisgICAgfkN1c3RvbUZpbHRlclBhcmFtZXRlcigpOworICAgIAorICAg
IEN1c3RvbUZpbHRlclBhcmFtZXRlciYgb3BlcmF0b3I9KGNvbnN0IEN1c3RvbUZpbHRlclBhcmFt
ZXRlciYpOworICAgIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQYXJh
bWV0ZXImKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ3VzdG9tRmlsdGVyUGFy
YW1ldGVyJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKKyAgICB9CisgICAgCisgICAgUGFyYW1ldGVyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CisKKyAgICB2b2lkIHNldEJvb2xlYW4oYm9vbCB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQk9PTEVBTik7CisgICAgICAgIG1fdmFsdWUuYm9vbGVh
biA9IHZhbHVlOworICAgIH0KKyAgICAKKyAgICBib29sIGFzQm9vbGVhbigpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV90eXBlID09IEJPT0xFQU4pOworICAgICAgICByZXR1cm4gbV92
YWx1ZS5ib29sZWFuOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldE51bWJlcihjb25zdCBOdW1i
ZXImIG51bWJlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gTlVNQkVSKTsKKyAg
ICAgICAgbV92YWx1ZS5udW1iZXIgPSBudW1iZXI7CisgICAgfQorICAgIAorICAgIGNvbnN0IE51
bWJlciYgYXNOdW1iZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBO
VU1CRVIpOworICAgICAgICByZXR1cm4gbV92YWx1ZS5udW1iZXI7CisgICAgfQorICAgIAorICAg
IHZvaWQgc2V0QXJyYXkoY29uc3QgVmVjdG9yPGZsb2F0PiYgYXJyYXkpCisgICAgeworICAgICAg
ICBBU1NFUlQobV90eXBlID09IEFSUkFZKTsKKyAgICAgICAgKm1fdmFsdWUuYXJyYXkgPSBhcnJh
eTsKKyAgICB9CisgICAgCisgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgYXNBcnJheSgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IEFSUkFZKTsKKyAgICAgICAgcmV0dXJu
ICptX3ZhbHVlLmFycmF5OworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldFRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm0pCisgICAgeworICAgICAgICBBU1NFUlQo
bV90eXBlID09IFRSQU5TRk9STSk7CisgICAgICAgICptX3ZhbHVlLnRyYW5zZm9ybSA9IHRyYW5z
Zm9ybTsKKyAgICB9CisgICAgCisgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgYXNUcmFu
c2Zvcm0oKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUUkFOU0ZPUk0p
OworICAgICAgICByZXR1cm4gKm1fdmFsdWUudHJhbnNmb3JtOworICAgIH0KKyAgICAKKyAgICB2
b2lkIHNldE1hdHJpeDIoY29uc3QgTWF0cml4MiYgbWF0cml4MikKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gTUFUUklYMik7CisgICAgICAgIGNvcHlWYWx1ZXMobV92YWx1ZS5tYXRy
aXgyLCBtYXRyaXgyKTsKKyAgICB9CisgICAgCisgICAgY29uc3QgTWF0cml4MiYgYXNNYXRyaXgy
KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gTUFUUklYMik7CisgICAg
ICAgIHJldHVybiBtX3ZhbHVlLm1hdHJpeDI7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0TWF0
cml4Myhjb25zdCBNYXRyaXgzJiBtYXRyaXgzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBNQVRSSVgzKTsKKyAgICAgICAgY29weVZhbHVlcyhtX3ZhbHVlLm1hdHJpeDMsIG1hdHJp
eDMpOworICAgIH0KKyAgICAKKyAgICBjb25zdCBNYXRyaXgzJiBhc01hdHJpeDMoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBNQVRSSVgzKTsKKyAgICAgICAgcmV0dXJu
IG1fdmFsdWUubWF0cml4MzsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRNYXRyaXg0KGNvbnN0
IE1hdHJpeDQmIG1hdHJpeDQpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IE1BVFJJ
WDQpOworICAgICAgICBjb3B5VmFsdWVzKG1fdmFsdWUubWF0cml4NCwgbWF0cml4NCk7CisgICAg
fQorICAgIAorICAgIGNvbnN0IE1hdHJpeDQmIGFzTWF0cml4NCgpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQobV90eXBlID09IE1BVFJJWDQpOworICAgICAgICByZXR1cm4gbV92YWx1ZS5t
YXRyaXg0OworICAgIH0KKyAgICAKKyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZUNhY2hlKikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIHZvaWQg
ZGVzdHJveVZhbHVlKCk7CisgICAgCisgICAgUGFyYW1ldGVyVHlwZSBtX3R5cGU7CisgICAgdW5p
b24geworICAgICAgICBib29sIGJvb2xlYW47CisgICAgICAgIE51bWJlciBudW1iZXI7CisgICAg
ICAgIEFycmF5KiBhcnJheTsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyogdHJhbnNmb3Jt
OworICAgICAgICBNYXRyaXgyIG1hdHJpeDI7CisgICAgICAgIE1hdHJpeDMgbWF0cml4MzsKKyAg
ICAgICAgTWF0cml4NCBtYXRyaXg0OworICAgIH0gbV92YWx1ZTsKK307CisKK3R5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
czsKKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlcnMmLCBjb25z
dCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJzJik7CisKK2NsYXNzIEN1c3RvbUZpbHRlck9wZXJhdGlv
bjogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgZW51bSBNZXNoVHlwZSB7
CisgICAgICAgIEFUVEFDSEVELAorICAgICAgICBERVRBQ0hFRAorICAgIH07CisgICAgCisgICAg
ZW51bSBNZXNoQm94VHlwZSB7CisgICAgICAgIEZJTFRFUl9CT1gsCisgICAgICAgIEJPUkRFUl9C
T1gsCisgICAgICAgIFBBRERJTkdfQk9YLAorICAgICAgICBDT05URU5UX0JPWAorICAgIH07Cisg
ICAgCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUo
UGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBQYXNzUmVmUHRyPFN0eWxlU2hh
ZGVyPiBmcmFnbWVudFNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBtZXNoUm93cywgdW5zaWduZWQgbWVzaENvbHVtbnMsIE1lc2hUeXBlIG1lc2hUeXBlLCBNZXNo
Qm94VHlwZSBtZXNoQm94VHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVycyYgcGFyYW1ldGVycykKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKHZlcnRleFNoYWRlciwgZnJhZ21l
bnRTaGFkZXIsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaFR5cGUsIG1lc2hCb3hUeXBlLCBw
YXJhbWV0ZXJzKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0VmVydGV4U2hhZGVyKFBhc3NS
ZWZQdHI8U3R5bGVTaGFkZXI+IHNoYWRlcikgeyBtX3ZlcnRleFNoYWRlciA9IHNoYWRlcjsgfQor
ICAgIFN0eWxlU2hhZGVyKiB2ZXJ0ZXhTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNo
YWRlci5nZXQoKTsgfQorICAgIAorICAgIHZvaWQgc2V0RnJhZ21lbnRTaGFkZXIoUGFzc1JlZlB0
cjxTdHlsZVNoYWRlcj4gc2hhZGVyKSB7IG1fZnJhZ21lbnRTaGFkZXIgPSBzaGFkZXI7IH0KKyAg
ICBTdHlsZVNoYWRlciogZnJhZ21lbnRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50
U2hhZGVyLmdldCgpOyB9CisgICAgCisgICAgdW5zaWduZWQgbWVzaFJvd3MoKSBjb25zdCB7IHJl
dHVybiBtX21lc2hSb3dzOyB9CisgICAgdW5zaWduZWQgbWVzaENvbHVtbnMoKSBjb25zdCB7IHJl
dHVybiBtX21lc2hDb2x1bW5zOyB9CisgICAgCisgICAgTWVzaFR5cGUgbWVzaFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX21lc2hUeXBlOyB9CisgICAgTWVzaEJveFR5cGUgbWVzaEJveFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX21lc2hCb3hUeXBlOyB9CisgICAgCisgICAgY29uc3QgQ3VzdG9tRmls
dGVyUGFyYW1ldGVycyYgcGFyYW10ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9
CisgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyYgcGFyYW10ZXJzKCkgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzOyB9CisgICAgCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghaXNTYW1l
VHlwZShvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjb25zdCBDdXN0
b21GaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3VzdG9tRmlsdGVy
T3BlcmF0aW9uKj4oJm8pOworICAgICAgICByZXR1cm4gbV92ZXJ0ZXhTaGFkZXIuZ2V0KCkgPT0g
b3RoZXItPm1fdmVydGV4U2hhZGVyLmdldCgpCisgICAgICAgICAgICAmJiBtX2ZyYWdtZW50U2hh
ZGVyLmdldCgpID09IG90aGVyLT5tX2ZyYWdtZW50U2hhZGVyLmdldCgpCisgICAgICAgICAgICAm
JiBtX21lc2hSb3dzID09IG90aGVyLT5tX21lc2hSb3dzCisgICAgICAgICAgICAmJiBtX21lc2hD
b2x1bW5zID09IG90aGVyLT5tX21lc2hDb2x1bW5zCisgICAgICAgICAgICAmJiBtX21lc2hUeXBl
ID09IG90aGVyLT5tX21lc2hUeXBlCisgICAgICAgICAgICAmJiBtX21lc2hCb3hUeXBlID09IG90
aGVyLT5tX21lc2hCb3hUeXBlCisgICAgICAgICAgICAmJiBtX3BhcmFtZXRlcnMgPT0gb3RoZXIt
Pm1fcGFyYW1ldGVyczsKKyAgICB9CisgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKFBhc3NSZWZQ
dHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJh
Z21lbnRTaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVzaFJv
d3MsIHVuc2lnbmVkIG1lc2hDb2x1bW5zLCBNZXNoVHlwZSBtZXNoVHlwZSwgTWVzaEJveFR5cGUg
bWVzaEJveFR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEN1c3RvbUZp
bHRlclBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCisgICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKENV
U1RPTSkKKyAgICAgICAgLCBtX3ZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIpCisgICAgICAgICwg
bV9mcmFnbWVudFNoYWRlcihmcmFnbWVudFNoYWRlcikKKyAgICAgICAgLCBtX21lc2hSb3dzKG1l
c2hSb3dzKQorICAgICAgICAsIG1fbWVzaENvbHVtbnMobWVzaENvbHVtbnMpCisgICAgICAgICwg
bV9tZXNoVHlwZShtZXNoVHlwZSkKKyAgICAgICAgLCBtX21lc2hCb3hUeXBlKG1lc2hCb3hUeXBl
KQorICAgICAgICAsIG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgfkN1c3RvbUZpbHRlck9wZXJhdGlvbigpOworICAgIAorICAgIFJlZlB0cjxTdHlsZVNo
YWRlcj4gbV92ZXJ0ZXhTaGFkZXI7CisgICAgUmVmUHRyPFN0eWxlU2hhZGVyPiBtX2ZyYWdtZW50
U2hhZGVyOworICAgIHVuc2lnbmVkIG1fbWVzaFJvd3M7CisgICAgdW5zaWduZWQgbV9tZXNoQ29s
dW1uczsKKyAgICBNZXNoVHlwZSBtX21lc2hUeXBlOworICAgIE1lc2hCb3hUeXBlIG1fbWVzaEJv
eFR5cGU7CisgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCisK
KyNlbmRpZiAvLyBDdXN0b21GaWx0ZXJPcGVyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBkOGIyYTUwLi45YTA5MTU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtODU2LDYgKzg1
Niw3IEBAIHB1YmxpYzoKICAgICBFU3BlYWsgc3BlYWsoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxF
U3BlYWs+KHJhcmVJbmhlcml0ZWREYXRhLT5zcGVhayk7IH0KIAogI2lmIEVOQUJMRShDU1NfRklM
VEVSUykKKyAgICBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXIoKSB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9maWx0ZXIuYWNjZXNzKCktPm1fb3BlcmF0aW9uczsgfQog
ICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2ZpbHRlci0+bV9vcGVyYXRpb25zOyB9CiAgICAgYm9vbCBoYXNG
aWx0ZXIoKSBjb25zdCB7IHJldHVybiAhcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmlsdGVyLT5t
X29wZXJhdGlvbnMub3BlcmF0aW9ucygpLmlzRW1wdHkoKTsgfQogI2Vsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkU2hhZGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM1N2MzNQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZFNoYWRlci5oCkBAIC0wLDAg
KzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRl
ZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFT
IElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisg
KiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdHlsZUNhY2hl
ZFNoYWRlcl9oCisjZGVmaW5lIFN0eWxlQ2FjaGVkU2hhZGVyX2gKKworI2lmIEVOQUJMRShDU1Nf
U0hBREVSUykKKworI2luY2x1ZGUgIlN0eWxlU2hhZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU3R5bGVDYWNoZWRTaGFkZXIgOiBwdWJsaWMgU3R5bGVTaGFkZXIgeworcHVi
bGljOgorICAgIC8vIEZJWE1FOiBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBhY3R1YWwgQ2FjaGVk
U2hhZGVyIGluIHRoaXMgY2xhc3MuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVDYWNoZWRT
aGFkZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZUNhY2hlZFNoYWRlcigp
KTsgfQorICAgIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBj
b25zdCB7IHJldHVybiAwOyB9OworICAgIAorcHJpdmF0ZToKKyAgICBTdHlsZUNhY2hlZFNoYWRl
cigpCisgICAgeworICAgICAgICAgbV9pc0NhY2hlZFNoYWRlciA9IHRydWU7CisgICAgfQorfTsK
KworfQorI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKKworI2VuZGlmIC8vIFN0eWxlQ2Fj
aGVkU2hhZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVBlbmRpbmdTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVBlbmRpbmdTaGFkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDQ2
YzgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUGVuZGluZ1NoYWRlci5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAx
MSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
ICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBTdHlsZVBlbmRpbmdTaGFkZXJfaAorI2RlZmluZSBTdHlsZVBlbmRp
bmdTaGFkZXJfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorCisjaW5jbHVkZSAiQ1NTVmFs
dWUuaCIKKyNpbmNsdWRlICJTdHlsZVNoYWRlci5oIgorI2luY2x1ZGUgIldlYktpdENTU1NoYWRl
clZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBXZWJLaXRDU1NTaGFkZXJWYWx1ZTsKKworY2xhc3MgU3R5bGVQZW5kaW5n
U2hhZGVyIDogcHVibGljIFN0eWxlU2hhZGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHlsZVBlbmRpbmdTaGFkZXI+IGNyZWF0ZShXZWJLaXRDU1NTaGFkZXJWYWx1ZSogdmFs
dWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVBlbmRpbmdTaGFkZXIodmFsdWUpKTsgfQor
ICAgIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlOyB9CisgICAgV2ViS2l0Q1NTU2hhZGVyVmFsdWUqIGNzc1NoYWRlclZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorcHJpdmF0ZToKKyAgICBTdHlsZVBlbmRp
bmdTaGFkZXIoV2ViS2l0Q1NTU2hhZGVyVmFsdWUqIHZhbHVlKQorICAgICAgICA6IG1fdmFsdWUo
dmFsdWUpCisgICAgeworICAgICAgICAgbV9pc1BlbmRpbmdTaGFkZXIgPSB0cnVlOworICAgIH0K
KyAgICAKKyAgICBXZWJLaXRDU1NTaGFkZXJWYWx1ZSogbV92YWx1ZTsgLy8gTm90IHJldGFpbmVk
OyBpdCBvd25zIHVzLgorfTsKKworfQorI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKKwor
I2VuZGlmIC8vIFN0eWxlUGVuZGluZ1NoYWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVNoYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjQ0MDE0OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVTaGFkZXIuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IDIwMTEg
QWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUgorICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgU3R5bGVTaGFkZXJfaAorI2RlZmluZSBTdHlsZVNoYWRlcl9oCisKKyNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1ZhbHVlOworICAgIAorY2xhc3MgU3R5bGVT
aGFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVNoYWRlcj4geworcHVibGljOgorICAgIHZp
cnR1YWwgflN0eWxlU2hhZGVyKCkgeyB9CisKKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNo
ZWRTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX2lzQ2FjaGVkU2hhZGVyOyB9CisgICAgQUxXQVlT
X0lOTElORSBib29sIGlzUGVuZGluZ1NoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faXNQZW5kaW5n
U2hhZGVyOyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1
ZSgpIGNvbnN0ID0gMDsKKyAgICAKK3Byb3RlY3RlZDoKKyAgICBTdHlsZVNoYWRlcigpCisgICAg
ICAgIDogbV9pc0NhY2hlZFNoYWRlcihmYWxzZSkKKyAgICAgICAgLCBtX2lzUGVuZGluZ1NoYWRl
cihmYWxzZSkKKyAgICB7CisgICAgfQorICAgIGJvb2wgbV9pc0NhY2hlZFNoYWRlcjoxOworICAg
IGJvb2wgbV9pc1BlbmRpbmdTaGFkZXI6MTsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShD
U1NfU0hBREVSUykKKworI2VuZGlmIC8vIFN0eWxlU2hhZGVyX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>