<?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>201760</bug_id>
          
          <creation_ts>2019-09-13 05:45:27 -0700</creation_ts>
          <short_desc>Eliminate separate simple line layout path from TextIterator</short_desc>
          <delta_ts>2019-09-18 02:32:30 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>201863</dependson>
    
    <dependson>201911</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1570561</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-13 05:45:27 -0700</bug_when>
    <thetext>By using line layout iterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570565</commentid>
    <comment_count>1</comment_count>
      <attachid>378726</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-13 06:07:19 -0700</bug_when>
    <thetext>Created attachment 378726
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570868</commentid>
    <comment_count>2</comment_count>
      <attachid>378794</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-14 05:33:56 -0700</bug_when>
    <thetext>Created attachment 378794
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570869</commentid>
    <comment_count>3</comment_count>
      <attachid>378794</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-14 05:46:46 -0700</bug_when>
    <thetext>Comment on attachment 378794
patch

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

&gt; Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp:105
&gt; +//        bool isSingleTab = !multipleWhitespace &amp;&amp; m_currentSegment-&gt;text[m_currentSegment-&gt;toSegmentPosition(startPosition)] == &apos;\t&apos;;

I guess this is a leftover</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570881</commentid>
    <comment_count>4</comment_count>
      <attachid>378799</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-14 08:58:04 -0700</bug_when>
    <thetext>Created attachment 378799
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571063</commentid>
    <comment_count>5</comment_count>
      <attachid>378853</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-16 03:50:26 -0700</bug_when>
    <thetext>Created attachment 378853
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571065</commentid>
    <comment_count>6</comment_count>
      <attachid>378854</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-16 04:38:46 -0700</bug_when>
    <thetext>Created attachment 378854
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571085</commentid>
    <comment_count>7</comment_count>
      <attachid>378854</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-16 07:31:43 -0700</bug_when>
    <thetext>Comment on attachment 378854
patch

Clearing flags on attachment: 378854

Committed r249895: &lt;https://trac.webkit.org/changeset/249895&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571086</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-16 07:31:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571087</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-16 07:32:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/55399318&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378726</attachid>
            <date>2019-09-13 06:07:19 -0700</date>
            <delta_ts>2019-09-14 05:33:56 -0700</delta_ts>
            <desc>wip</desc>
            <filename>lineapi-textiterator.patch</filename>
            <type>text/plain</type>
            <size>35142</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBiOGQyN2ZjNDFmNC4uZmQ0OGFhZjgyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MzMsNyArMTgzMyw3IEBACiAJ
CTU4MjRBQkE3MUFFODEzODQwMDkwNzRCNyAvKiBSdWJ5VGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4MjRBQkE1MUFFODEzODQwMDkw
NzRCNyAvKiBSdWJ5VGV4dEVsZW1lbnQuaCAqLzsgfTsKIAkJNTgyQ0IwNTMxQTc4QTE0QjAwQUZG
Q0M0IC8qIFNpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTgyQ0IwNTIxQTc4QTE0QjAwQUZG
Q0M0IC8qIFNpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oICovOyB9OwogCQk1
ODJERTMyNTFDMzBDODU0MDBCRTAyQTggLyogVGV4dERlY29yYXRpb25QYWludGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODJERTMyMzFDMzBDODU0
MDBCRTAyQTggLyogVGV4dERlY29yYXRpb25QYWludGVyLmggKi87IH07Ci0JCTU4NUQ2RTA0MUEx
QTc5MkUwMEZBNEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODVENkUwMjFBMUE3OTJFMDBG
QTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oICovOyB9OworCQk1ODVENkUw
NDFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg1RDZFMDIxQTFBNzky
RTAwRkE0RjEyIC8qIFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1ODk1NTZFRDE4RDRBNDQwMDA3
NjRCMDMgLyogQm9yZGVyRWRnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTg5NTU2RUMxOEQ0QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCAqLzsg
fTsKIAkJNThCMkY5RjQyMjMyRDQ1MzAwOTM4RDYzIC8qIFJlc2l6ZU9ic2VydmF0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OEIyRjlGMzIyMzJE
NDNGMDA5MzhENjMgLyogUmVzaXplT2JzZXJ2YXRpb24uaCAqLzsgfTsKIAkJNThCMkY5RjUyMjMy
RDQ1ODAwOTM4RDYzIC8qIFJlc2l6ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OEIyRjlFQzIyMzJENDNCMDA5MzhENjMgLyogUmVzaXpl
T2JzZXJ2ZXIuaCAqLzsgfTsKQEAgLTQ3OTYsNyArNDc5Niw3IEBACiAJCUU0N0MzOTMzMUZFNkUx
MDgwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyNzFGRTZFMERDMDBCQkJD
NkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oICovOyB9OwogCQlFNDdFMjc2NTE2
MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAv
KiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUU0ODEzN0I5MURCM0I1MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlk
aXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDgx
MzdCODFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUU0ODRBMzNFMjMwNTUzMjUwMDlBREU2
QSAvKiBMaW5lTGF5b3V0SW50ZXJmYWNlVGV4dEJveGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDg0QTMzQjIzMDU1MzAzMDA5QURFNkEgLyogTGlu
ZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oICovOyB9OworCQlFNDg0QTMzRTIzMDU1MzI1MDA5
QURFNkEgLyogTGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4NEEzM0IyMzA1NTMwMzAwOUFERTZBIC8q
IExpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDg5NDRBMzE4MEI1N0Q4MDBGMTY1RDggLyogU2lt
cGxlTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTQ4OTQ0QTExODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxpbmVMYXlvdXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDkxNkZGNzE5
NURGNkEwMDA1QUIzNDkgLyogTGF5ZXJGbHVzaFRocm90dGxlU3RhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTE2RkY2MTk1REY2QTAwMDVBQjM0
OSAvKiBMYXllckZsdXNoVGhyb3R0bGVTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OTQ2RUFGMTU2RTY0REQwMEQzMjk3RiAvKiBTdHls
ZVJ1bGVJbXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0OTQ2RUFEMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDgzMyw3ICs0ODMz
LDcgQEAKIAkJRTRFOEI0RUMyMTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNv
cmVUZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
NEU4QjRFQTIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCAq
LzsgfTsKIAkJRTRFOEI0RjUyMTZCOTU2NTAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RThC
NEYyMjE2QjhCNjAwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRFOTRENjEyMkZGMTU4
QTAwREQxOTFGIC8qIENvbXBsZXhMaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEExQUM3ODIyRkFGRDUwMDAxN0I3NUIgLyogQ29tcGxl
eExpbmVMYXlvdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlFNEU5QjExOTE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29s
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU5
QjExODE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggKi87IH07
CisJCUU0RTlCMTE5MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTlCMTE4
MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEU5QjExRDE4MTQ1NjlD
MDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFOUIxMUMxODE0NTY5QzAwM0FDQ0RGIC8q
IFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCAqLzsgfTsKIAkJRTRGOUVFRjMxNTZEQTAwNzAw
RDIzRTdFIC8qIFN0eWxlU2hlZXRDb250ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTRGOUVFRjExNTZEODRDNDAwRDIzRTdFIC8qIFN0eWxlU2hl
ZXRDb250ZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUU1MTY2OTkxMjBGRjk5MTgwMDlEMkMyNyAvKiBMaXN0QnV0dG9uQXJyb3dAMngucG5n
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNTE2Njk4
RjIwRkY5OTE2MDA5RDJDMjcgLyogTGlzdEJ1dHRvbkFycm93QDJ4LnBuZyAqLzsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBhMWEzOTAzZjY3Yi4uYjVkMWNk
YTc1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTQ3NCw4
ICs0NzQsOCBAQCB2b2lkIFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAKICAgICBpZiAoIW1fdGV4
dEJveCAmJiBtX3JlbWFpbmluZ1RleHRCb3gpIHsKICAgICAgICAgbV90ZXh0Qm94ID0gbV9yZW1h
aW5pbmdUZXh0Qm94OwotICAgICAgICBtX3JlbWFpbmluZ1RleHRCb3ggPSBudWxscHRyOwotICAg
ICAgICBtX2ZpcnN0TGV0dGVyVGV4dCA9IG51bGxwdHI7CisgICAgICAgIG1fcmVtYWluaW5nVGV4
dEJveCA9IHsgfTsKKyAgICAgICAgbV9maXJzdExldHRlclRleHQgPSB7IH07CiAgICAgICAgIG1f
b2Zmc2V0ID0gMDsKICAgICB9CiAgICAgLy8gaGFuZGxlIHJlbWVtYmVyZWQgdGV4dCBib3gKQEAg
LTU3NCwyNSArNTc0LDYgQEAgc3RhdGljIGJvb2wgaGFzVmlzaWJsZVRleHROb2RlKFJlbmRlclRl
eHQmIHJlbmRlcmVyKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIHRl
eHROb2RlT2Zmc2V0SW5GbG93KGNvbnN0IFRleHQmIGZpcnN0VGV4dE5vZGVJblJhbmdlKQotewot
ICAgIC8vIENhbGN1bGF0ZSB0aGUgdGV4dCBvZmZzZXQgZm9yIHNpbXBsZSBsaW5lcy4KLSAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZmlyc3RUZXh0Tm9kZUluUmFuZ2UucmVuZGVyZXIoKTsK
LSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICB1bnNpZ25lZCB0ZXh0
T2Zmc2V0ID0gMDsKLSAgICBmb3IgKHJlbmRlcmVyID0gcmVuZGVyZXItPnByZXZpb3VzU2libGlu
ZygpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+cHJldmlvdXNTaWJsaW5nKCkpIHsK
LSAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkKLSAgICAgICAgICAgIHRleHRP
ZmZzZXQgKz0gZG93bmNhc3Q8UmVuZGVyVGV4dD4ocmVuZGVyZXIpLT50ZXh0KCkubGVuZ3RoKCk7
Ci0gICAgfQotICAgIHJldHVybiB0ZXh0T2Zmc2V0OwotfQotCi1zdGF0aWMgYm9vbCBpc05ld0xp
bmVPclRhYkNoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIpCi17Ci0gICAgcmV0dXJuIGNoYXJhY3Rl
ciA9PSAnXG4nIHx8IGNoYXJhY3RlciA9PSAnXHQnOwotfQotCiBib29sIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dE5vZGUoKQogewogICAgIFRleHQmIHRleHROb2RlID0gZG93bmNhc3Q8VGV4dD4o
Km1fbm9kZSk7CkBAIC02MTcsNyArNTk4LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHROb2RlKCkKICAgICAgICAgICAgICAgICBTdHJpbmcgZmlyc3RMZXR0ZXIgPSBtX2ZpcnN0TGV0
dGVyVGV4dC0+dGV4dCgpOwogICAgICAgICAgICAgICAgIGVtaXRUZXh0KHRleHROb2RlLCAqbV9m
aXJzdExldHRlclRleHQsIG1fb2Zmc2V0LCBtX29mZnNldCArIGZpcnN0TGV0dGVyLmxlbmd0aCgp
KTsKICAgICAgICAgICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4dCA9IG51bGxwdHI7Ci0gICAgICAg
ICAgICAgICAgbV90ZXh0Qm94ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBtX3RleHRCb3gg
PSB7IH07CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC02MzQsMTAyICs2MTUsMTMgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHROb2RlKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKGNvbnN0IGF1
dG8qIGxheW91dCA9IHJlbmRlcmVyLnNpbXBsZUxpbmVMYXlvdXQoKSkgewotICAgICAgICBpZiAo
cmVuZGVyZXIuc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAh
KG1fYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBBU1NFUlQocmVuZGVyZXIucGFyZW50KCkpOwot
ICAgICAgICBBU1NFUlQoaXM8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50KCkpKTsK
LSAgICAgICAgY29uc3QgYXV0byYgYmxvY2tGbG93ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93
PigqcmVuZGVyZXIucGFyZW50KCkpOwotICAgICAgICAvLyBVc2UgdGhlIHNpbXBsZSBsYXlvdXQg
cnVucyB0byBpdGVyYXRlIG92ZXIgdGhlIHRleHQgY29udGVudC4KLSAgICAgICAgYm9vbCBpc05l
d1RleHROb2RlID0gbV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93ICYmIG1fcHJldmlvdXNT
aW1wbGVUZXh0Tm9kZUluRmxvdyAhPSAmdGV4dE5vZGU7Ci0gICAgICAgIC8vIFNpbXBsZSBsaW5l
IGxheW91dCBydW4gcG9zaXRpb25zIGFyZSBhbGwgYWJzb2x1dGUgdG8gdGhlIHBhcmVudCBmbG93
LgotICAgICAgICAvLyBPZmZzZXR0aW5nIGlzIHJlcXVpcmVkIHdoZW4gbXVsdGlwbGUgcmVuZGVy
ZXJzIGFyZSBwcmVzZW50LgotICAgICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aElu
RmxvdyArPSBpc05ld1RleHROb2RlID8gbV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93LT5y
ZW5kZXJlcigpLT50ZXh0KCkubGVuZ3RoKCkgOiAwOwotICAgICAgICBtX3ByZXZpb3VzU2ltcGxl
VGV4dE5vZGVJbkZsb3cgPSAmdGV4dE5vZGU7Ci0KLSAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRp
b24gPSAobV9ub2RlID09IG1fZW5kQ29udGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X2VuZE9mZnNldCkgOiByZW5kZXJlclRleHQubGVuZ3RoKCk7Ci0gICAgICAgIGlmICghbV9mbG93
UnVuUmVzb2x2ZXJDYWNoZSB8fCAmbV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+ZmxvdygpICE9ICZi
bG9ja0Zsb3cpIHsKLSAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5G
bG93ID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA/IDAgOiB0ZXh0Tm9kZU9mZnNldEluRmxvdyh0
ZXh0Tm9kZSk7Ci0gICAgICAgICAgICBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID0gbWFrZVVuaXF1
ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsKLSAg
ICAgICAgfQotICAgICAgICAvLyBTa2lwIHRvIG1fb2Zmc2V0IHBvc2l0aW9uLgotICAgICAgICBh
dXRvIHJhbmdlID0gbV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+cmFuZ2VGb3JSZW5kZXJlcihyZW5k
ZXJlcik7Ci0gICAgICAgIGF1dG8gaXQgPSByYW5nZS5iZWdpbigpOwotICAgICAgICBhdXRvIGVu
ZCA9IHJhbmdlLmVuZCgpOwotICAgICAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9vZmZzZXQpICsgbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZs
b3c7Ci0gICAgICAgIHdoaWxlIChpdCAhPSBlbmQgJiYgKCppdCkuZW5kKCkgPD0gc3RhcnRQb3Np
dGlvbikKLSAgICAgICAgICAgICsraXQ7Ci0gICAgICAgIGlmIChtX25leHRSdW5OZWVkc1doaXRl
c3BhY2UgJiYgcmVuZGVyZXJUZXh0W21fb2Zmc2V0IC0gMV0gPT0gJ1xuJykgewotICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcignICcsIHRleHROb2RlLCBudWxscHRyLCBtX29mZnNldCwgbV9vZmZz
ZXQgKyAxKTsKLSAgICAgICAgICAgIHJldHVybiBpdCA9PSBlbmQ7Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGl0ID09IGVuZCkgewotICAgICAgICAgICAgLy8gQ29sbGFwc2VkIHRyYWlsaW5nIHdo
aXRlc3BhY2UuCi0gICAgICAgICAgICBtX29mZnNldCA9IGVuZFBvc2l0aW9uOwotICAgICAgICAg
ICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9IHRydWU7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9uZXh0UnVuTmVlZHNX
aGl0ZXNwYWNlKSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgdGV4dE5vZGUsIG51
bGxwdHIsIG1fb2Zmc2V0LCBtX29mZnNldCArIDEpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgICAgIC8vIElmIHRoZSBwb3NpdGlvbiB3ZSBhcmUgbG9va2luZyBm
b3IgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJlbmRlcmVyJ3MgZmlyc3QgcnVuLCBpdCBjb3VsZCBt
ZWFuIHRoYXQKLSAgICAgICAgLy8gdGhlIHJ1bnMgYW5kIHRoZSByZW5kZXJlcnMgYXJlIG91dCBv
ZiBzeW5jIChlLmcuIHdlIHNraXBwZWQgYSByZW5kZXJlciBpbiBiZXR3ZWVuKS4KLSAgICAgICAg
Ly8gQmV0dGVyIGJhaWwgb3V0IGF0IHRoaXMgcG9pbnQuCi0gICAgICAgIGF1dG8gcnVuID0gKml0
OwotICAgICAgICBpZiAocnVuLnN0YXJ0KCkgPiBzdGFydFBvc2l0aW9uKSB7Ci0gICAgICAgICAg
ICBBU1NFUlQobV9mbG93UnVuUmVzb2x2ZXJDYWNoZSk7Ci0gICAgICAgICAgICBpZiAoJihyZW5k
ZXJlckZvclBvc2l0aW9uKG1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPmZsb3dDb250ZW50cygpLCBz
dGFydFBvc2l0aW9uKSkgIT0gJnJlbmRlcmVyKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKHJ1bi5lbmQoKSAtIHJ1bi5zdGFydCgpIDw9IHJl
bmRlcmVyVGV4dC5sZW5ndGgoKSk7Ci0gICAgICAgIC8vIGNvbnRlbnRTdGFydCBza2lwcyBsZWFk
aW5nIHdoaXRlc3BhY2UuCi0gICAgICAgIHVuc2lnbmVkIGNvbnRlbnRTdGFydCA9IHN0ZDo6bWF4
PHVuc2lnbmVkPihtX29mZnNldCwgcnVuLnN0YXJ0KCkgLSBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4
dExlbmd0aEluRmxvdyk7Ci0gICAgICAgIHVuc2lnbmVkIGNvbnRlbnRFbmQgPSBzdGQ6Om1pbihl
bmRQb3NpdGlvbiwgcnVuLmVuZCgpIC0gbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZs
b3cpOwotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZW50U3Rh
cnQgPD0gY29udGVudEVuZCk7Ci0gICAgICAgIC8vIENoZWNrIGlmIHdoaXRlc3BhY2UgYWRqdXN0
bWVudCBpcyBuZWVkZWQgd2hlbiBjcm9zc2luZyByZW5kZXJlciBib3VuZGFyeS4KLSAgICAgICAg
aWYgKGlzTmV3VGV4dE5vZGUpIHsKLSAgICAgICAgICAgIGJvb2wgbGFzdENoYXJhY3RlcklzTm90
V2hpdGVzcGFjZSA9IG1fbGFzdENoYXJhY3RlciAmJiAhcmVuZGVyZXIuc3R5bGUoKS5pc0NvbGxh
cHNpYmxlV2hpdGVTcGFjZShtX2xhc3RDaGFyYWN0ZXIpOwotICAgICAgICAgICAgYm9vbCBhZGRU
cmFpbGluZ1doaXRlc3BhY2VGb3JQcmV2aW91cyA9IG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29s
bGFwc2VkU3BhY2UgJiYgbGFzdENoYXJhY3RlcklzTm90V2hpdGVzcGFjZTsKLSAgICAgICAgICAg
IGJvb2wgbGVhZGluZ1doaXRlc3BhY2VJc05lZWRlZEZvckN1cnJlbnQgPSBjb250ZW50U3RhcnQg
PiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpICYmIGxhc3RDaGFyYWN0ZXJJc05vdFdo
aXRlc3BhY2U7Ci0gICAgICAgICAgICBpZiAoYWRkVHJhaWxpbmdXaGl0ZXNwYWNlRm9yUHJldmlv
dXMgfHwgbGVhZGluZ1doaXRlc3BhY2VJc05lZWRlZEZvckN1cnJlbnQpIHsKLSAgICAgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgdGV4dE5vZGUsIG51bGxwdHIsIG1fb2Zmc2V0LCBtX29m
ZnNldCArIDEpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICAvLyBcbiBcdCBzaW5nbGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJz
IG5lZWQgcmVwbGFjaW5nIHNvIHRoYXQgdGhlIG5ldyBsaW5lL3RhYiBjaGFyYWN0ZXJzIGRvbid0
IHNob3cgdXAuCi0gICAgICAgIHVuc2lnbmVkIHN0b3BQb3NpdGlvbiA9IGNvbnRlbnRTdGFydDsK
LSAgICAgICAgd2hpbGUgKHN0b3BQb3NpdGlvbiA8IGNvbnRlbnRFbmQgJiYgIWlzTmV3TGluZU9y
VGFiQ2hhcmFjdGVyKHJlbmRlcmVyVGV4dFtzdG9wUG9zaXRpb25dKSkKLSAgICAgICAgICAgICsr
c3RvcFBvc2l0aW9uOwotICAgICAgICAvLyBFbWl0IHRoZSB0ZXh0IHVwIHRvIHRoZSBuZXcgbGlu
ZS90YWIgY2hhcmFjdGVyLgotICAgICAgICBpZiAoc3RvcFBvc2l0aW9uIDwgY29udGVudEVuZCkg
ewotICAgICAgICAgICAgaWYgKHN0b3BQb3NpdGlvbiA9PSBjb250ZW50U3RhcnQpIHsKLSAgICAg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgdGV4dE5vZGUsIG51bGxwdHIsIGNvbnRlbnRT
dGFydCwgY29udGVudFN0YXJ0ICsgMSk7Ci0gICAgICAgICAgICAgICAgbV9vZmZzZXQgPSBjb250
ZW50U3RhcnQgKyAxOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVtaXRUZXh0KHRleHROb2RlLCByZW5kZXJlciwgY29udGVudFN0YXJ0
LCBzdG9wUG9zaXRpb24pOwotICAgICAgICAgICAgbV9vZmZzZXQgPSBzdG9wUG9zaXRpb24gKyAx
OwotICAgICAgICAgICAgbV9uZXh0UnVuTmVlZHNXaGl0ZXNwYWNlID0gdHJ1ZTsKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwg
cmVuZGVyZXIsIGNvbnRlbnRTdGFydCwgY29udGVudEVuZCk7Ci0gICAgICAgIC8vIFdoZW4gbGlu
ZSBlbmRpbmcgd2l0aCBjb2xsYXBzZWQgd2hpdGVzcGFjZSBpcyBwcmVzZW50LCB3ZSBuZWVkIHRv
IGNhcnJ5IG92ZXIgb25lIHdoaXRlc3BhY2U6IGZvbyhlbmQgb2YgbGluZSliYXIgLT4gZm9vIGJh
ciAob3RoZXJ3aXNlIHdlIHdvdWxkIGVuZCB1cCB3aXRoIGZvb2JhcikuCi0gICAgICAgIG1fbmV4
dFJ1bk5lZWRzV2hpdGVzcGFjZSA9IHJ1bi5pc0VuZE9mTGluZSgpICYmIGNvbnRlbnRFbmQgPCBl
bmRQb3NpdGlvbiAmJiByZW5kZXJlci5zdHlsZSgpLmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKHJl
bmRlcmVyVGV4dFtjb250ZW50RW5kXSk7Ci0gICAgICAgIG1fb2Zmc2V0ID0gY29udGVudEVuZDsK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCkgPT0gZW5kUG9z
aXRpb247Ci0gICAgfQotCi0gICAgaWYgKHJlbmRlcmVyLmZpcnN0VGV4dEJveCgpKQotICAgICAg
ICBtX3RleHRCb3ggPSByZW5kZXJlci5maXJzdFRleHRCb3goKTsKKyAgICBtX3RleHRCb3ggPSBt
X2xpbmVMYXlvdXRQcm92aWRlci5maXJzdFRleHRCb3hGb3IocmVuZGVyZXIpOwogCiAgICAgYm9v
bCBzaG91bGRIYW5kbGVGaXJzdExldHRlciA9ICFtX2hhbmRsZWRGaXJzdExldHRlciAmJiBpczxS
ZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKSAmJiAhbV9vZmZzZXQ7CiAgICAgaWYgKHNob3Vs
ZEhhbmRsZUZpcnN0TGV0dGVyKQogICAgICAgICBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKGRv
d25jYXN0PFJlbmRlclRleHRGcmFnbWVudD4ocmVuZGVyZXIpKTsKIAotICAgIGlmICghcmVuZGVy
ZXIuZmlyc3RUZXh0Qm94KCkgJiYgcmVuZGVyZXJUZXh0Lmxlbmd0aCgpICYmICFzaG91bGRIYW5k
bGVGaXJzdExldHRlcikgeworICAgIGlmICghbV90ZXh0Qm94ICYmIHJlbmRlcmVyVGV4dC5sZW5n
dGgoKSAmJiAhc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIpIHsKICAgICAgICAgaWYgKHJlbmRlcmVy
LnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIShtX2JlaGF2
aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3Bh
Y2UgPSB0cnVlOyAvLyBlbnRpcmUgYmxvY2sgaXMgY29sbGFwc2VkIHNwYWNlCkBAIC03NDQsNyAr
NjM2LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgICAg
IG1fc29ydGVkVGV4dEJveGVzLmFwcGVuZCh0ZXh0Qm94KTsKICAgICAgICAgc3RkOjpzb3J0KG1f
c29ydGVkVGV4dEJveGVzLmJlZ2luKCksIG1fc29ydGVkVGV4dEJveGVzLmVuZCgpLCBJbmxpbmVU
ZXh0Qm94Ojpjb21wYXJlQnlTdGFydCk7CiAgICAgICAgIG1fc29ydGVkVGV4dEJveGVzUG9zaXRp
b24gPSAwOwotICAgICAgICBtX3RleHRCb3ggPSBtX3NvcnRlZFRleHRCb3hlcy5pc0VtcHR5KCkg
PyBudWxscHRyIDogbV9zb3J0ZWRUZXh0Qm94ZXNbMF07CisgICAgICAgIG1fdGV4dEJveCA9IG1f
bGluZUxheW91dFByb3ZpZGVyLml0ZXJhdG9yRm9ySW5saW5lVGV4dEJveChtX3NvcnRlZFRleHRC
b3hlcy5pc0VtcHR5KCkgPyBudWxscHRyIDogbV9zb3J0ZWRUZXh0Qm94ZXNbMF0pOwogICAgIH0K
IAogICAgIGhhbmRsZVRleHRCb3goKTsKQEAgLTc1Nyw5ICs2NDksMTcgQEAgdm9pZCBUZXh0SXRl
cmF0b3I6OmhhbmRsZVRleHRCb3goKQogCiAgICAgYXV0byYgcmVuZGVyZXIgPSBtX2ZpcnN0TGV0
dGVyVGV4dCA/ICptX2ZpcnN0TGV0dGVyVGV4dCA6ICp0ZXh0Tm9kZS5yZW5kZXJlcigpOwogICAg
IGlmIChyZW5kZXJlci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
ICYmICEobV9iZWhhdmlvciAmIFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKSB7
Ci0gICAgICAgIG1fdGV4dEJveCA9IG51bGxwdHI7CisgICAgICAgIG1fdGV4dEJveCA9IHsgfTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGF1dG8gZmlyc3RUZXh0Qm94ID0gWyZdIHsK
KyAgICAgICAgaWYgKHJlbmRlcmVyLmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpCisgICAgICAgICAg
ICByZXR1cm4gbV9saW5lTGF5b3V0UHJvdmlkZXIuaXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KG1f
c29ydGVkVGV4dEJveGVzLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX3NvcnRlZFRleHRCb3hlc1sw
XSk7CisKKyAgICAgICAgcmV0dXJuIG1fbGluZUxheW91dFByb3ZpZGVyLmZpcnN0VGV4dEJveEZv
cihyZW5kZXJlcik7CisgICAgfSgpOworCiAgICAgU3RyaW5nIHJlbmRlcmVyVGV4dCA9IHJlbmRl
cmVyLnRleHQoKTsKICAgICB1bnNpZ25lZCBzdGFydCA9IG1fb2Zmc2V0OwogICAgIHVuc2lnbmVk
IGVuZCA9ICgmdGV4dE5vZGUgPT0gbV9lbmRDb250YWluZXIpID8gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fZW5kT2Zmc2V0KSA6IFVJTlRfTUFYOwpAQCAtNzY4LDcgKzY2OCw2IEBAIHZvaWQgVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAgICAgdW5zaWduZWQgcnVuU3RhcnQgPSBz
dGQ6Om1heCh0ZXh0Qm94U3RhcnQsIHN0YXJ0KTsKIAogICAgICAgICAvLyBDaGVjayBmb3IgY29s
bGFwc2VkIHNwYWNlIGF0IHRoZSBzdGFydCBvZiB0aGlzIHJ1bi4KLSAgICAgICAgSW5saW5lVGV4
dEJveCogZmlyc3RUZXh0Qm94ID0gcmVuZGVyZXIuY29udGFpbnNSZXZlcnNlZFRleHQoKSA/ICht
X3NvcnRlZFRleHRCb3hlcy5pc0VtcHR5KCkgPyBudWxscHRyIDogbV9zb3J0ZWRUZXh0Qm94ZXNb
MF0pIDogcmVuZGVyZXIuZmlyc3RUZXh0Qm94KCk7CiAgICAgICAgIGJvb2wgbmVlZFNwYWNlID0g
bV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSB8fCAobV90ZXh0Qm94ID09IGZp
cnN0VGV4dEJveCAmJiB0ZXh0Qm94U3RhcnQgPT0gcnVuU3RhcnQgJiYgcnVuU3RhcnQpOwogICAg
ICAgICBpZiAobmVlZFNwYWNlICYmICFyZW5kZXJlci5zdHlsZSgpLmlzQ29sbGFwc2libGVXaGl0
ZVNwYWNlKG1fbGFzdENoYXJhY3RlcikgJiYgbV9sYXN0Q2hhcmFjdGVyKSB7CiAgICAgICAgICAg
ICBpZiAobV9sYXN0VGV4dE5vZGUgPT0gJnRleHROb2RlICYmIHJ1blN0YXJ0ICYmIHJlbmRlcmVy
VGV4dFtydW5TdGFydCAtIDFdID09ICcgJykgewpAQCAtNzg0LDEzICs2ODMsMTUgQEAgdm9pZCBU
ZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3goKQogICAgICAgICB1bnNpZ25lZCBydW5FbmQgPSBz
dGQ6Om1pbih0ZXh0Qm94RW5kLCBlbmQpOwogICAgICAgICAKICAgICAgICAgLy8gRGV0ZXJtaW5l
IHdoYXQgdGhlIG5leHQgdGV4dCBib3ggd2lsbCBiZSwgYnV0IGRvbid0IGFkdmFuY2UgeWV0Ci0g
ICAgICAgIElubGluZVRleHRCb3gqIG5leHRUZXh0Qm94ID0gbnVsbHB0cjsKKyAgICAgICAgTGlu
ZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9yIG5leHRUZXh0Qm94OwogICAgICAgICBp
ZiAocmVuZGVyZXIuY29udGFpbnNSZXZlcnNlZFRleHQoKSkgeworICAgICAgICAgICAgLy8gRklY
TUU6IEhhbmRsZSByZXZlcnNlZCB0ZXh0IGluIHRoZSBsaW5lIGxheW91dCBpdGVyYXRvci4KICAg
ICAgICAgICAgIGlmIChtX3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uICsgMSA8IG1fc29ydGVkVGV4
dEJveGVzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBuZXh0VGV4dEJveCA9IG1fc29ydGVkVGV4
dEJveGVzW21fc29ydGVkVGV4dEJveGVzUG9zaXRpb24gKyAxXTsKLSAgICAgICAgfSBlbHNlIAot
ICAgICAgICAgICAgbmV4dFRleHRCb3ggPSBtX3RleHRCb3gtPm5leHRUZXh0Qm94KCk7Ci0gICAg
ICAgIEFTU0VSVCghbmV4dFRleHRCb3ggfHwgJm5leHRUZXh0Qm94LT5yZW5kZXJlcigpID09ICZy
ZW5kZXJlcik7CisgICAgICAgICAgICAgICAgbmV4dFRleHRCb3ggPSBtX2xpbmVMYXlvdXRQcm92
aWRlci5pdGVyYXRvckZvcklubGluZVRleHRCb3gobV9zb3J0ZWRUZXh0Qm94ZXNbbV9zb3J0ZWRU
ZXh0Qm94ZXNQb3NpdGlvbiArIDFdKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5l
eHRUZXh0Qm94ID0gbV90ZXh0Qm94OworICAgICAgICAgICAgKytuZXh0VGV4dEJveDsKKyAgICAg
ICAgfQogCiAgICAgICAgIGlmIChydW5TdGFydCA8IHJ1bkVuZCkgewogICAgICAgICAgICAgLy8g
SGFuZGxlIGVpdGhlciBhIHNpbmdsZSBuZXdsaW5lIGNoYXJhY3RlciAod2hpY2ggYmVjb21lcyBh
IHNwYWNlKSwKQEAgLTgzMiw4ICs3MzMsOCBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4
dEJveCgpCiAgICAgfQogICAgIGlmICghbV90ZXh0Qm94ICYmIG1fcmVtYWluaW5nVGV4dEJveCkg
ewogICAgICAgICBtX3RleHRCb3ggPSBtX3JlbWFpbmluZ1RleHRCb3g7Ci0gICAgICAgIG1fcmVt
YWluaW5nVGV4dEJveCA9IG51bGxwdHI7Ci0gICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0gbnVs
bHB0cjsKKyAgICAgICAgbV9yZW1haW5pbmdUZXh0Qm94ID0geyB9OworICAgICAgICBtX2ZpcnN0
TGV0dGVyVGV4dCA9IHsgfTsKICAgICAgICAgbV9vZmZzZXQgPSAwOwogICAgICAgICBoYW5kbGVU
ZXh0Qm94KCk7CiAgICAgfQpAQCAtODU2LDcgKzc1Nyw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpo
YW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVudCYgcmVuZGVyZXIpCiAg
ICAgICAgIGlmIChhdXRvKiBmaXJzdExldHRlclRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZpcnN0
TGV0dGVyKGZpcnN0TGV0dGVyKSkgewogICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIg
PSB0cnVlOwogICAgICAgICAgICAgbV9yZW1haW5pbmdUZXh0Qm94ID0gbV90ZXh0Qm94OwotICAg
ICAgICAgICAgbV90ZXh0Qm94ID0gZmlyc3RMZXR0ZXJUZXh0LT5maXJzdFRleHRCb3goKTsKKyAg
ICAgICAgICAgIG1fdGV4dEJveCA9IG1fbGluZUxheW91dFByb3ZpZGVyLmZpcnN0VGV4dEJveEZv
cigqZmlyc3RMZXR0ZXJUZXh0KTsKICAgICAgICAgICAgIG1fc29ydGVkVGV4dEJveGVzLmNsZWFy
KCk7CiAgICAgICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4dCA9IGZpcnN0TGV0dGVyVGV4dDsKICAg
ICAgICAgfQpAQCAtMTIyMiw3ICsxMTIzLDYgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRDaGFy
YWN0ZXIoVUNoYXIgY2hhcmFjdGVyLCBOb2RlJiBjaGFyYWN0ZXJOb2RlLCBOb2RlKiBvZmYKICAg
ICBtX3RleHQgPSBtX2NvcHlhYmxlVGV4dC50ZXh0KCk7CiAgICAgbV9sYXN0Q2hhcmFjdGVyID0g
Y2hhcmFjdGVyOwogICAgIG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgPSBm
YWxzZTsKLSAgICBtX25leHRSdW5OZWVkc1doaXRlc3BhY2UgPSBmYWxzZTsKIH0KIAogdm9pZCBU
ZXh0SXRlcmF0b3I6OmVtaXRUZXh0KFRleHQmIHRleHROb2RlLCBSZW5kZXJUZXh0JiByZW5kZXJl
ciwgaW50IHRleHRTdGFydE9mZnNldCwgaW50IHRleHRFbmRPZmZzZXQpCkBAIC0xMjQ3LDcgKzEx
NDcsNiBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQoVGV4dCYgdGV4dE5vZGUsIFJlbmRl
clRleHQmIHJlbmRlcmVyLCBpbnQgdGV4dFN0YXJ0TwogICAgIG1fdGV4dCA9IG1fY29weWFibGVU
ZXh0LnRleHQoKTsKIAogICAgIG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2Ug
PSBmYWxzZTsKLSAgICBtX25leHRSdW5OZWVkc1doaXRlc3BhY2UgPSBmYWxzZTsKICAgICBtX2hh
c0VtaXR0ZWQgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApp
bmRleCAxZjRmZGRmZWY3NS4uZWJjMjUzMjkzMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuaApAQCAtMjgsNiArMjgsNyBAQAogLy8gRklYTUU6IE1vdmUgZWFjaCBpdGVyYXRv
ciBjbGFzcyBpbnRvIGEgc2VwYXJhdGUgaGVhZGVyIGZpbGUuCiAKICNpbmNsdWRlICJGaW5kT3B0
aW9ucy5oIgorI2luY2x1ZGUgIkxpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuaCIKICNpbmNs
dWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTY3LDEwICsxNjgsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8v
IFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBzb21lIHBlbmRpbmcgdGV4dCBmcm9tIHRoZSBjdXJy
ZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZhbHNlIGFuZCBudWxsLCB3ZSBnbyBiYWNrIHRvIG5v
cm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSogbV9ub2RlRm9yQWRkaXRpb25hbE5ld2xpbmUgeyBu
dWxscHRyIH07Ci0gICAgSW5saW5lVGV4dEJveCogbV90ZXh0Qm94IHsgbnVsbHB0ciB9OworICAg
IExpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvciBtX3RleHRCb3g7CiAKICAgICAv
LyBVc2VkIHdoZW4gaXRlcmF0aW5nIG92ZXIgOmZpcnN0LWxldHRlciB0ZXh0IHRvIHNhdmUgcG9p
bnRlciB0byByZW1haW5pbmcgdGV4dCBib3guCi0gICAgSW5saW5lVGV4dEJveCogbV9yZW1haW5p
bmdUZXh0Qm94IHsgbnVsbHB0ciB9OworICAgIExpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJ
dGVyYXRvciBtX3JlbWFpbmluZ1RleHRCb3g7CiAKICAgICAvLyBVc2VkIHRvIHBvaW50IHRvIFJl
bmRlclRleHQgb2JqZWN0IGZvciA6Zmlyc3QtbGV0dGVyLgogICAgIFJlbmRlclRleHQqIG1fZmly
c3RMZXR0ZXJUZXh0IHsgbnVsbHB0ciB9OwpAQCAtMTgwLDExICsxODEsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSB7IGZhbHNlIH07
CiAgICAgVUNoYXIgbV9sYXN0Q2hhcmFjdGVyIHsgMCB9OwogCi0gICAgLy8gVXNlZCB0byBkbyBz
aW1wbGUgbGluZSBsYXlvdXQgcnVuIGxvZ2ljLgotICAgIGJvb2wgbV9uZXh0UnVuTmVlZHNXaGl0
ZXNwYWNlIHsgZmFsc2UgfTsKLSAgICB1bnNpZ25lZCBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExl
bmd0aEluRmxvdyB7IDAgfTsKLSAgICBUZXh0KiBtX3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJbkZs
b3cgeyBudWxscHRyIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1
blJlc29sdmVyPiBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlOworICAgIExpbmVMYXlvdXRJbnRlcmZh
Y2U6OlByb3ZpZGVyIG1fbGluZUxheW91dFByb3ZpZGVyOwogCiAgICAgLy8gVXNlZCB3aGVuIHRl
eHQgYm94ZXMgYXJlIG91dCBvZiBvcmRlciAoSGVicmV3L0FyYWJpYyB3aXRoIGVtYmVkZGVkIExU
UiB0ZXh0KQogICAgIFZlY3RvcjxJbmxpbmVUZXh0Qm94Kj4gbV9zb3J0ZWRUZXh0Qm94ZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYTA3
YzRkMDQxOTAuLjhkNGVkOTJmOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwCkBAIC0yMDIsOCArMjAyLDggQEAgdm9pZCBSZW5kZXJUcmVlQXNU
ZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0
JiBvLAogICAgICAgICAvLyBtYW55IHRlc3QgcmVzdWx0cy4KICAgICAgICAgY29uc3QgUmVuZGVy
VGV4dCYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KG8pOwogICAgICAgICByID0gSW50UmVj
dCh0ZXh0LmZpcnN0UnVuTG9jYXRpb24oKSwgdGV4dC5saW5lc0JvdW5kaW5nQm94KCkuc2l6ZSgp
KTsKLSAgICAgICAgYXV0byB0ZXh0Qm94ZXMgPSBMaW5lTGF5b3V0SW50ZXJmYWNlOjp0ZXh0Qm94
ZXModGV4dCk7Ci0gICAgICAgIGlmICh0ZXh0Qm94ZXMuYmVnaW4oKSA9PSB0ZXh0Qm94ZXMuZW5k
KCkpCisgICAgICAgIExpbmVMYXlvdXRJbnRlcmZhY2U6OlByb3ZpZGVyIGxpbmVMYXlvdXRQcm92
aWRlcjsKKyAgICAgICAgaWYgKCFsaW5lTGF5b3V0UHJvdmlkZXIuZmlyc3RUZXh0Qm94Rm9yKHRl
eHQpKQogICAgICAgICAgICAgYWRqdXN0Rm9yVGFibGVDZWxscyA9IGZhbHNlOwogICAgIH0gZWxz
ZSBpZiAoby5pc0JSKCkpIHsKICAgICAgICAgY29uc3QgUmVuZGVyTGluZUJyZWFrJiBiciA9IGRv
d25jYXN0PFJlbmRlckxpbmVCcmVhaz4obyk7CkBAIC01NDksOCArNTQ5LDkgQEAgdm9pZCB3cml0
ZShUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBPcHRpb25TZXQ8UmVuZGVy
QXNUZXh0RmxhZz4gYmUKICAgICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0
cyk7CiAKICAgICBpZiAoaXM8UmVuZGVyVGV4dD4obykpIHsKKyAgICAgICAgTGluZUxheW91dElu
dGVyZmFjZTo6UHJvdmlkZXIgbGluZUxheW91dFByb3ZpZGVyOwogICAgICAgICBhdXRvJiB0ZXh0
ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4obyk7Ci0gICAgICAgIGZvciAoYXV0byB0ZXh0Qm94IDog
TGluZUxheW91dEludGVyZmFjZTo6dGV4dEJveGVzKHRleHQpKSB7CisgICAgICAgIGZvciAoYXV0
byYgdGV4dEJveCA6IGxpbmVMYXlvdXRQcm92aWRlci50ZXh0Qm94UmFuZ2VGb3IodGV4dCkpIHsK
ICAgICAgICAgICAgIHRzIDw8IGluZGVudDsKICAgICAgICAgICAgIHdyaXRlVGV4dEJveCh0cywg
dGV4dCwgdGV4dEJveCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5jcHAKaW5kZXggMDBmMDM4MTY3MDguLmQy
MWQ5NjJkYjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dFJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dFJlc29sdmVyLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHVuc2lnbmVkIFJ1blJl
c29sdmVyOjpSdW46OmxvY2FsRW5kKCkgY29uc3QKIH0KIAogUnVuUmVzb2x2ZXI6Okl0ZXJhdG9y
OjpJdGVyYXRvcihjb25zdCBSdW5SZXNvbHZlciYgcmVzb2x2ZXIsIHVuc2lnbmVkIHJ1bkluZGV4
LCB1bnNpZ25lZCBsaW5lSW5kZXgpCi0gICAgOiBtX3Jlc29sdmVyKHJlc29sdmVyKQorICAgIDog
bV9yZXNvbHZlcigmcmVzb2x2ZXIpCiAgICAgLCBtX3J1bkluZGV4KHJ1bkluZGV4KQogICAgICwg
bV9saW5lSW5kZXgobGluZUluZGV4KQogewpAQCAtMTI5LDggKzEyOSw4IEBAIFJ1blJlc29sdmVy
OjpJdGVyYXRvciYgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjphZHZhbmNlKCkKIAogUnVuUmVzb2x2
ZXI6Okl0ZXJhdG9yJiBSdW5SZXNvbHZlcjo6SXRlcmF0b3I6OmFkdmFuY2VMaW5lcyh1bnNpZ25l
ZCBsaW5lQ291bnQpCiB7Ci0gICAgdW5zaWduZWQgcnVuQ291bnQgPSBtX3Jlc29sdmVyLm1fbGF5
b3V0LnJ1bkNvdW50KCk7Ci0gICAgaWYgKHJ1bkNvdW50ID09IG1fcmVzb2x2ZXIubV9sYXlvdXQu
bGluZUNvdW50KCkpIHsKKyAgICB1bnNpZ25lZCBydW5Db3VudCA9IHJlc29sdmVyKCkubV9sYXlv
dXQucnVuQ291bnQoKTsKKyAgICBpZiAocnVuQ291bnQgPT0gcmVzb2x2ZXIoKS5tX2xheW91dC5s
aW5lQ291bnQoKSkgewogICAgICAgICBtX3J1bkluZGV4ID0gc3RkOjptaW4ocnVuQ291bnQsIG1f
cnVuSW5kZXggKyBsaW5lQ291bnQpOwogICAgICAgICBtX2xpbmVJbmRleCA9IG1fcnVuSW5kZXg7
CiAgICAgICAgIHJldHVybiAqdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaAppbmRleCA0NTU5MjYwZjJhZC4uNmFiNzAzMTcw
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
UmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dFJlc29sdmVyLmgKQEAgLTk0LDEwICs5NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVk
IGxpbmVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUluZGV4OyB9CiAgICAgICAgIEl0ZXJh
dG9yJiBhZHZhbmNlKCk7CiAgICAgICAgIEl0ZXJhdG9yJiBhZHZhbmNlTGluZXModW5zaWduZWQp
OwotICAgICAgICBjb25zdCBSdW5SZXNvbHZlciYgcmVzb2x2ZXIoKSBjb25zdCB7IHJldHVybiBt
X3Jlc29sdmVyOyB9Ci0gICAgICAgIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvbHZlci5tX2luUXVpcmtzTW9kZTsgfQorICAgICAgICBjb25zdCBSdW5SZXNvbHZlciYg
cmVzb2x2ZXIoKSBjb25zdCB7IHJldHVybiAqbV9yZXNvbHZlcjsgfQorICAgICAgICBib29sIGlu
UXVpcmtzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHJlc29sdmVyKCkubV9pblF1aXJrc01vZGU7IH0K
IAotICAgICAgICBjb25zdCBSdW5SZXNvbHZlciYgbV9yZXNvbHZlcjsKKyAgICAgICAgY29uc3Qg
UnVuUmVzb2x2ZXIqIG1fcmVzb2x2ZXI7CiAgICAgICAgIHVuc2lnbmVkIG1fcnVuSW5kZXg7CiAg
ICAgICAgIHVuc2lnbmVkIG1fbGluZUluZGV4OwogICAgIH07CkBAIC0yMzgsNyArMjM4LDcgQEAg
aW5saW5lIFJ1blJlc29sdmVyOjpJdGVyYXRvciYgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVy
YXRvci0tKCkKIAogaW5saW5lIGJvb2wgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVyYXRvcj09
KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKIHsKLSAgICBBU1NFUlQoJm1fcmVzb2x2ZXIg
PT0gJm90aGVyLm1fcmVzb2x2ZXIpOworICAgIEFTU0VSVChtX3Jlc29sdmVyID09IG90aGVyLm1f
cmVzb2x2ZXIpOwogICAgIHJldHVybiBtX3J1bkluZGV4ID09IG90aGVyLm1fcnVuSW5kZXg7CiB9
CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCBpbmxpbmUgUnVuUmVzb2x2ZXI6OlJ1biBSdW5SZXNvbHZl
cjo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0CiAKIGlubGluZSBjb25zdCBTaW1wbGVMaW5l
TGF5b3V0OjpSdW4mIFJ1blJlc29sdmVyOjpJdGVyYXRvcjo6c2ltcGxlUnVuKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9yZXNvbHZlci5tX2xheW91dC5ydW5BdChtX3J1bkluZGV4KTsKKyAgICBy
ZXR1cm4gcmVzb2x2ZXIoKS5tX2xheW91dC5ydW5BdChtX3J1bkluZGV4KTsKIH0KIAogaW5saW5l
IFJ1blJlc29sdmVyOjpJdGVyYXRvciBSdW5SZXNvbHZlcjo6YmVnaW4oKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRl
eHRCb3hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50
ZXJmYWNlVGV4dEJveGVzLmNwcAppbmRleCBkYWE4NjNiMWNkYy4uNDM1MmFjYjBmYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VU
ZXh0Qm94ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlv
dXRJbnRlcmZhY2VUZXh0Qm94ZXMuY3BwCkBAIC0zNSw0NiArMzUsNDYgQEAgbmFtZXNwYWNlIExp
bmVMYXlvdXRJbnRlcmZhY2UgewogCiBGbG9hdFJlY3QgVGV4dEJveDo6cmVjdCgpIGNvbnN0CiB7
Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZl
cjo6SXRlcmF0b3Igc2ltcGxlTGluZUl0ZXJhdG9yKSB7Ci0gICAgICAgIHJldHVybiAoKnNpbXBs
ZUxpbmVJdGVyYXRvcikucmVjdCgpOworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJv
eEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRl
cmF0b3IpLnJlY3QoKTsKICAgICB9OwogCiAgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5s
aW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgewogICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJv
eC0+ZnJhbWVSZWN0KCk7CiAgICAgfTsKIAotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1faXRl
cmF0b3IubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKKyAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CiB9CiAK
IEZsb2F0UmVjdCBUZXh0Qm94Ojpsb2dpY2FsUmVjdCgpIGNvbnN0CiB7Ci0gICAgYXV0byBzaW1w
bGUgPSBbXShjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3Igc2lt
cGxlTGluZUl0ZXJhdG9yKSB7Ci0gICAgICAgIHJldHVybiAoKnNpbXBsZUxpbmVJdGVyYXRvciku
cmVjdCgpOworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1w
bGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLnJlY3QoKTsK
ICAgICB9OwogCiAgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5s
aW5lVGV4dEJveCkgewogICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+bG9naWNhbEZyYW1l
UmVjdCgpOwogICAgIH07CiAKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2l0ZXJhdG9yLm1f
cGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
aXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwogfQogCiBib29sIFRl
eHRCb3g6Omhhc0h5cGhlbigpIGNvbnN0CiB7Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBT
aW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3Igc2ltcGxlTGluZUl0ZXJhdG9y
KSB7Ci0gICAgICAgIHJldHVybiAoKnNpbXBsZUxpbmVJdGVyYXRvcikuaGFzSHlwaGVuKCk7Cisg
ICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBh
dGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikuaGFzSHlwaGVuKCk7CiAgICAg
fTsKIAogICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRl
eHRCb3gpIHsKICAgICAgICAgcmV0dXJuIGlubGluZVRleHRCb3gtPmhhc0h5cGhlbigpOwogICAg
IH07CiAKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2l0ZXJhdG9yLm1fcGF0aFZhcmlhbnQs
IHNpbXBsZSwgY29tcGxleCk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5t
X3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwogfQogCiBib29sIFRleHRCb3g6OmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdAogewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3Qg
U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yKSB7CisgICAgYXV0byBzaW1w
bGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmKSB7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH07CiAKQEAgLTgyLDEyICs4MiwxMiBAQCBib29sIFRleHRCb3g6Omlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdAogICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJv
eC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgIH07CiAKLSAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihtX2l0ZXJhdG9yLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CisgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNv
bXBsZXgpOwogfQogCiBib29sIFRleHRCb3g6OmRpck92ZXJyaWRlKCkgY29uc3QKIHsKLSAgICBh
dXRvIHNpbXBsZSA9IFtdKGNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVy
YXRvcikgeworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1w
bGVQYXRoJikgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfTsKIApAQCAtOTUsMjAgKzk1
LDY0IEBAIGJvb2wgVGV4dEJveDo6ZGlyT3ZlcnJpZGUoKSBjb25zdAogICAgICAgICByZXR1cm4g
aW5saW5lVGV4dEJveC0+ZGlyT3ZlcnJpZGUoKTsKICAgICB9OwogCi0gICAgcmV0dXJuIFdURjo6
c3dpdGNoT24obV9pdGVyYXRvci5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBj
b21wbGV4KTsKIH0KIAogU3RyaW5nVmlldyBUZXh0Qm94Ojp0ZXh0KCkgY29uc3QKIHsKLSAgICBh
dXRvIHNpbXBsZSA9IFtdKGNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVy
YXRvciBzaW1wbGVMaW5lSXRlcmF0b3IpIHsKLSAgICAgICAgcmV0dXJuICgqc2ltcGxlTGluZUl0
ZXJhdG9yKS50ZXh0KCk7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0
b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvciku
dGV4dCgpOwogICAgIH07CiAKICAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0
Qm94KiBpbmxpbmVUZXh0Qm94KSB7CiAgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KGlubGluZVRl
eHRCb3gtPnJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmcoaW5saW5lVGV4dEJveC0+c3RhcnQo
KSwgaW5saW5lVGV4dEJveC0+bGVuKCkpOwogICAgIH07CiAKLSAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX2l0ZXJhdG9yLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CisgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBs
ZXgpOworfQorCit1bnNpZ25lZCBUZXh0Qm94OjpzdGFydCgpIGNvbnN0Cit7CisgICAgYXV0byBz
aW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAg
ICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikubG9jYWxTdGFydCgpOworICAgIH07CisKKyAg
ICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7
CisgICAgICAgIHJldHVybiBpbmxpbmVUZXh0Qm94LT5zdGFydCgpOworICAgIH07CisKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29t
cGxleCk7Cit9CisKK3Vuc2lnbmVkIFRleHRCb3g6OmVuZCgpIGNvbnN0Cit7CisgICAgYXV0byBz
aW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAg
ICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikubG9jYWxFbmQoKTsKKyAgICB9OworCisgICAg
YXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgewor
ICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+ZW5kKCk7CisgICAgfTsKKworICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4
KTsKK30KKwordW5zaWduZWQgVGV4dEJveDo6bGVuKCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBs
ZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAg
ICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5lbmQoKSAtICgqcGF0aC5pdGVyYXRvcikuc3RhcnQo
KTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCog
aW5saW5lVGV4dEJveCkgeworICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+bGVuKCk7Cisg
ICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFu
dCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKworaW5saW5lIGNvbnN0IFRleHRCb3hJdGVyYXRvciYg
VGV4dEJveDo6aXRlcmF0b3IoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBUZXh0Qm94SXRlcmF0b3ImPigqdGhpcyk7CiB9CiAKIFRleHRCb3hJdGVyYXRvcjo6VGV4dEJv
eEl0ZXJhdG9yKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpCkBAIC0xMTYsMTUg
KzE2MCwxNSBAQCBUZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVU
ZXh0Qm94KiBpbmxpbmVUZXh0Qm94KQogewogfQogCi1UZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJ
dGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3Igc2ltcGxlTGlu
ZUl0ZXJhdG9yKQotICAgIDogbV9wYXRoVmFyaWFudChzaW1wbGVMaW5lSXRlcmF0b3IpCitUZXh0
Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZl
cjo6SXRlcmF0b3IgaXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVy
YXRvciBlbmQpCisgICAgOiBtX3BhdGhWYXJpYW50KFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0
aCB7IGl0ZXJhdG9yLCBlbmQgfSkKIHsKIH0KIAogVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRl
cmF0b3I6OnRyYXZlcnNlTmV4dCgpCiB7Ci0gICAgYXV0byBzaW1wbGUgPSBbXShTaW1wbGVMaW5l
TGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3ImIHNpbXBsZUxpbmVJdGVyYXRvcikgewotICAg
ICAgICArK3NpbXBsZUxpbmVJdGVyYXRvcjsKKyAgICBhdXRvIHNpbXBsZSA9IFtdKFRleHRCb3hJ
dGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICArK3BhdGguaXRlcmF0b3I7CiAg
ICAgfTsKIAogICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqJiBpbmxp
bmVUZXh0Qm94KSB7CkBAIC0xNDEsOCArMTg1LDggQEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9w
ZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICBpZiAobV9w
YXRoVmFyaWFudC5pbmRleCgpICE9IG90aGVyLm1fcGF0aFZhcmlhbnQuaW5kZXgoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzaW1wbGUgPSBbJl0oY29uc3QgU2ltcGxlTGlu
ZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIHNpbXBsZUxpbmVJdGVyYXRvcikgewotICAg
ICAgICByZXR1cm4gc2ltcGxlTGluZUl0ZXJhdG9yID09IFdURjo6Z2V0PFNpbXBsZUxpbmVMYXlv
dXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvcj4ob3RoZXIubV9wYXRoVmFyaWFudCk7CisgICAgYXV0
byBzaW1wbGUgPSBbJl0oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7
CisgICAgICAgIHJldHVybiBwYXRoLml0ZXJhdG9yID09IFdURjo6Z2V0PFRleHRCb3hJdGVyYXRv
cjo6U2ltcGxlUGF0aD4ob3RoZXIubV9wYXRoVmFyaWFudCkuaXRlcmF0b3I7CiAgICAgfTsKIAog
ICAgIGF1dG8gY29tcGxleCA9IFsmXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94
KSB7CkBAIC0xNTIsMzIgKzE5Niw0NyBAQCBib29sIFRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3I9
PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CiB9CiAKLXN0YXRpYyBPcHRp
b25hbDxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4gc2ltcGxlTGluZVJ1blJlc29sdmVy
Rm9yVGV4dChjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQorYm9vbCBUZXh0Qm94SXRlcmF0b3I6OmF0
RW5kKCkgY29uc3QKIHsKLSAgICBpZiAoIXRleHQuc2ltcGxlTGluZUxheW91dCgpKQotICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiBTaW1wbGVMaW5lTGF5b3V0OjpydW5S
ZXNvbHZlcihkb3duY2FzdDxjb25zdCBSZW5kZXJCbG9ja0Zsb3c+KCp0ZXh0LnBhcmVudCgpKSwg
KnRleHQuc2ltcGxlTGluZUxheW91dCgpKTsKKyAgICBhdXRvIHNpbXBsZSA9IFsmXShjb25zdCBU
ZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGgu
aXRlcmF0b3IgPT0gcGF0aC5lbmQ7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFsmXShj
b25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7CisgICAgICAgIHJldHVybiAhaW5s
aW5lVGV4dEJveDsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFy
aWFudCwgc2ltcGxlLCBjb21wbGV4KTsKIH0KIAotc3RhdGljIGF1dG8gcmFuZ2VGb3JUZXh0KGNv
bnN0IFJlbmRlclRleHQmIHRleHQsIE9wdGlvbmFsPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29s
dmVyPiYgc2ltcGxlTGluZVJ1blJlc29sdmVyKQorUHJvdmlkZXI6OlByb3ZpZGVyKCkgPSBkZWZh
dWx0OworCitUZXh0Qm94SXRlcmF0b3IgUHJvdmlkZXI6OmZpcnN0VGV4dEJveEZvcihjb25zdCBS
ZW5kZXJUZXh0JiB0ZXh0KQogewotICAgIGlmIChzaW1wbGVMaW5lUnVuUmVzb2x2ZXIpIHsKLSAg
ICAgICAgYXV0byByYW5nZSA9IHNpbXBsZUxpbmVSdW5SZXNvbHZlci0+cmFuZ2VGb3JSZW5kZXJl
cih0ZXh0KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bWFrZUl0ZXJhdG9yUmFuZ2UoVGV4dEJveEl0
ZXJhdG9yKHJhbmdlLmJlZ2luKCkpLCBUZXh0Qm94SXRlcmF0b3IocmFuZ2UuZW5kKCkpKTsKKyAg
ICBpZiAoYXV0byogc2ltcGxlTGluZUxheW91dCA9IHRleHQuc2ltcGxlTGluZUxheW91dCgpKSB7
CisgICAgICAgIGF1dG8mIHBhcmVudCA9IGRvd25jYXN0PGNvbnN0IFJlbmRlckJsb2NrRmxvdz4o
KnRleHQucGFyZW50KCkpOworICAgICAgICBhdXRvJiByZXNvbHZlciA9IG1fc2ltcGxlTGluZUxh
eW91dFJlc29sdmVycy5lbnN1cmUoJnBhcmVudCwgWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPihwYXJlbnQsICpzaW1wbGVM
aW5lTGF5b3V0KTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgICAgIGF1dG8g
cmFuZ2UgPSByZXNvbHZlci0+cmFuZ2VGb3JSZW5kZXJlcih0ZXh0KTsKKyAgICAgICAgcmV0dXJu
IFRleHRCb3hJdGVyYXRvcihyYW5nZS5iZWdpbigpLCByYW5nZS5lbmQoKSk7CiAgICAgfQotICAg
IHJldHVybiBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKFRleHRCb3hJdGVyYXRvcih0ZXh0LmZpcnN0
VGV4dEJveCgpKSwgVGV4dEJveEl0ZXJhdG9yKG51bGxwdHIpKTsKKworICAgIHJldHVybiBUZXh0
Qm94SXRlcmF0b3IodGV4dC5maXJzdFRleHRCb3goKSk7CiB9CiAKLVRleHRCb3hSYW5nZTo6VGV4
dEJveFJhbmdlKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCi0gICAgOiBtX3NpbXBsZUxpbmVSdW5S
ZXNvbHZlcihzaW1wbGVMaW5lUnVuUmVzb2x2ZXJGb3JUZXh0KHRleHQpKQotICAgICwgbV9yYW5n
ZShyYW5nZUZvclRleHQodGV4dCwgbV9zaW1wbGVMaW5lUnVuUmVzb2x2ZXIpKQorVGV4dEJveFJh
bmdlIFByb3ZpZGVyOjp0ZXh0Qm94UmFuZ2VGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKIHsK
KyAgICByZXR1cm4geyBmaXJzdFRleHRCb3hGb3IodGV4dCkgfTsKIH0KIAotVGV4dEJveFJhbmdl
IHRleHRCb3hlcyhjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQorVGV4dEJveEl0ZXJhdG9yIFByb3Zp
ZGVyOjppdGVyYXRvckZvcklubGluZVRleHRCb3goY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5l
VGV4dEJveCkKIHsKLSAgICByZXR1cm4geyB0ZXh0IH07CisgICAgcmV0dXJuIFRleHRCb3hJdGVy
YXRvcihpbmxpbmVUZXh0Qm94KTsKIH0KIAorCisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMu
aAppbmRleCA0NjRjMjJhNzNmYi4uODBiNDc4ZTg0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50ZXJmYWNlVGV4dEJveGVz
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IlNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KQEAgLTM0LDYgKzM1LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5saW5lVGV4dEJveDsKK2NsYXNzIFByb3ZpZGVyOwog
Y2xhc3MgUmVuZGVyVGV4dDsKIAogbmFtZXNwYWNlIExpbmVMYXlvdXRJbnRlcmZhY2UgewpAQCAt
NDEsMTIgKzQzLDEwIEBAIG5hbWVzcGFjZSBMaW5lTGF5b3V0SW50ZXJmYWNlIHsKIGNsYXNzIFRl
eHRCb3hDb250ZXh0OwogY2xhc3MgVGV4dEJveEl0ZXJhdG9yOwogCitzdHJ1Y3QgRW5kSXRlcmF0
b3IgeyB9OworCiBjbGFzcyBUZXh0Qm94IHsKIHB1YmxpYzoKLSAgICBUZXh0Qm94KGNvbnN0IFRl
eHRCb3hJdGVyYXRvciYgaXRlcmF0b3IpCi0gICAgICAgIDogbV9pdGVyYXRvcihpdGVyYXRvcikK
LSAgICB7IH0KLQogICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3Q7CiAgICAgRmxvYXRSZWN0IGxv
Z2ljYWxSZWN0KCkgY29uc3Q7CiAKQEAgLTU2LDQ1ICs1Niw4MiBAQCBwdWJsaWM6CiAKICAgICBT
dHJpbmdWaWV3IHRleHQoKSBjb25zdDsKIAorICAgIHVuc2lnbmVkIHN0YXJ0KCkgY29uc3Q7Cisg
ICAgdW5zaWduZWQgZW5kKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbGVuKCkgY29uc3Q7CisKK3By
b3RlY3RlZDoKKyAgICBUZXh0Qm94KCkgPSBkZWZhdWx0OworICAgIFRleHRCb3goY29uc3QgVGV4
dEJveCYpID0gZGVmYXVsdDsKKyAgICBUZXh0Qm94KFRleHRCb3gmJikgPSBkZWZhdWx0OworICAg
IFRleHRCb3gmIG9wZXJhdG9yPShjb25zdCBUZXh0Qm94JikgPSBkZWZhdWx0OworICAgIFRleHRC
b3gmIG9wZXJhdG9yPShUZXh0Qm94JiYpID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKLSAgICBjb25z
dCBUZXh0Qm94SXRlcmF0b3ImIG1faXRlcmF0b3I7CisgICAgY29uc3QgVGV4dEJveEl0ZXJhdG9y
JiBpdGVyYXRvcigpIGNvbnN0OwogfTsKIAotY2xhc3MgVGV4dEJveEl0ZXJhdG9yIHsKK2NsYXNz
IFRleHRCb3hJdGVyYXRvciA6IHByaXZhdGUgVGV4dEJveCB7CiBwdWJsaWM6Ci0gICAgVGV4dEJv
eEl0ZXJhdG9yKGNvbnN0IElubGluZVRleHRCb3gqKTsKLSAgICBUZXh0Qm94SXRlcmF0b3IoU2lt
cGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yKTsKKyAgICBUZXh0Qm94SXRlcmF0
b3IoKSA6IG1fcGF0aFZhcmlhbnQobnVsbHB0cikgeyB9OwogCiAgICAgVGV4dEJveEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0KCk7IH0KIAorICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQorCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFRleHRCb3hJdGVyYXRvciYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQogCi0gICAgVGV4dEJveCBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiB7
ICp0aGlzIH07IH0KKyAgICBib29sIG9wZXJhdG9yPT0oRW5kSXRlcmF0b3IpIGNvbnN0IHsgcmV0
dXJuIGF0RW5kKCk7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oRW5kSXRlcmF0b3IpIGNvbnN0IHsg
cmV0dXJuICFhdEVuZCgpOyB9CisKKyAgICBjb25zdCBUZXh0Qm94JiBvcGVyYXRvciooKSBjb25z
dCB7IHJldHVybiAqdGhpczsgfQorICAgIGNvbnN0IFRleHRCb3gqIG9wZXJhdG9yLT4oKSBjb25z
dCB7IHJldHVybiB0aGlzOyB9CisKKyAgICBib29sIGF0RW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIFRleHRCb3g7CisgICAgZnJpZW5kIGNsYXNzIFByb3ZpZGVyOwor
CisgICAgZXhwbGljaXQgVGV4dEJveEl0ZXJhdG9yKGNvbnN0IElubGluZVRleHRCb3gqKTsKKyAg
ICBUZXh0Qm94SXRlcmF0b3IoU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9y
LCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgZW5kKTsKIAogICAgIFRl
eHRCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0KCk7CiAKLSAgICBWYXJpYW50PFNpbXBsZUxpbmVM
YXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciwgY29uc3QgSW5saW5lVGV4dEJveCo+IG1fcGF0
aFZhcmlhbnQ7CisgICAgc3RydWN0IFNpbXBsZVBhdGggeworICAgICAgICBTaW1wbGVMaW5lTGF5
b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgaXRlcmF0b3I7CisgICAgICAgIFNpbXBsZUxpbmVM
YXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQ7CisgICAgfTsKKyAgICBWYXJpYW50PFNp
bXBsZVBhdGgsIGNvbnN0IElubGluZVRleHRCb3gqPiBtX3BhdGhWYXJpYW50OwogfTsKIAogY2xh
c3MgVGV4dEJveFJhbmdlIHsKIHB1YmxpYzoKLSAgICBUZXh0Qm94UmFuZ2UoY29uc3QgUmVuZGVy
VGV4dCYpOworICAgIFRleHRCb3hSYW5nZShUZXh0Qm94SXRlcmF0b3IgYmVnaW4pIDogbV9iZWdp
bihiZWdpbikKKyAgICB7CisgICAgfQogCi0gICAgVGV4dEJveEl0ZXJhdG9yIGJlZ2luKCkgY29u
c3QgeyByZXR1cm4gbV9yYW5nZS5iZWdpbigpOyB9Ci0gICAgVGV4dEJveEl0ZXJhdG9yIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2UuZW5kKCk7IH0KKyAgICBUZXh0Qm94SXRlcmF0b3IgYmVn
aW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CisgICAgRW5kSXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4geyB9OyB9CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFRleHRCb3hJ
dGVyYXRvcjsKLQotICAgIE9wdGlvbmFsPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPiBt
X3NpbXBsZUxpbmVSdW5SZXNvbHZlcjsKLSAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8VGV4dEJveEl0
ZXJhdG9yPiBtX3JhbmdlOworICAgIFRleHRCb3hJdGVyYXRvciBtX2JlZ2luOwogfTsKIAotVGV4
dEJveFJhbmdlIHRleHRCb3hlcyhjb25zdCBSZW5kZXJUZXh0Jik7CitjbGFzcyBQcm92aWRlciB7
CitwdWJsaWM6CisgICAgUHJvdmlkZXIoKTsKKworICAgIFRleHRCb3hJdGVyYXRvciBmaXJzdFRl
eHRCb3hGb3IoY29uc3QgUmVuZGVyVGV4dCYpOworICAgIFRleHRCb3hSYW5nZSB0ZXh0Qm94UmFu
Z2VGb3IoY29uc3QgUmVuZGVyVGV4dCYpOworCisgICAgLy8gRklYTUU6IFJlbW92ZS4KKyAgICBU
ZXh0Qm94SXRlcmF0b3IgaXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KGNvbnN0IElubGluZVRleHRC
b3gqKTsKKworcHJpdmF0ZToKKyAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckJsb2NrRmxvdyosIHN0
ZDo6dW5pcXVlX3B0cjxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4+IG1fc2ltcGxlTGlu
ZUxheW91dFJlc29sdmVyczsKK307CiAKIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378794</attachid>
            <date>2019-09-14 05:33:56 -0700</date>
            <delta_ts>2019-09-14 08:58:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>lineapi-textiterator-3.patch</filename>
            <type>text/plain</type>
            <size>58289</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNjVmMGRhZmZjYi4uN2Q1Yzg5NzIzZmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAor
MjAxOS0wOS0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
RWxpbWluYXRlIHNlcGFyYXRlIHNpbXBsZSBsaW5lIGxheW91dCBwYXRoIGZyb20gVGV4dEl0ZXJh
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3
NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIG1ha2VzIHNpbXBsZSBhbmQgY29tcGxleCBsaW5lIGxheW91dCBwYXRoIHJlc3VsdHMg
ZnJvbSBUZXh0SXRlcmF0b3IgbWF0Y2gsIGNhdXNpbmcgc29tZSB3aGl0ZXNwYWNlIGNoYW5nZXMu
CisKKyAgICAgICAgKiBhbmltYXRpb25zL2xpbmVoZWlnaHQtYW5pbWF0aW9uLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBhbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC10cmFuc2Zvcm0tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGFuaW1hdGlvbnMvd2lkdGgtdXNpbmctZW1zLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBjb21wb3NpdGluZy9zaGFyZWQtYmFja2luZy9vdmVyZmxvdy1zY3Jv
bGwvYWJzb2x1dGUtaW4tc3RhY2tpbmctcmVsYXRpdmUtaW4tc2Nyb2xsZXItZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGNzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItZG9lcy1u
b3Qtc2l6ZS1wcm9wZXJseS1hYnNvbHV0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9l
dmVudHMvd2luZG93LWV2ZW50cy1idWJibGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL3dpbmRvdy1ldmVudHMtYnViYmxlMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC90b2tlbml6ZXIvc2NyaXB0X2V4dHJhX2Nsb3NlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBs
ZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9hbmltYXRpb25zL2xpbmVoZWlnaHQtYW5pbWF0aW9uLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBsZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9hbmltYXRpb25z
L3NpbXVsdGFuZW91cy1zdGFydC10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNj
cm9sbGluZ2Nvb3JkaW5hdG9yL3Njcm9sbGluZy10cmVlL25lc3RlZC1hYnNvbHV0ZS1pbi1vdmVy
Zmxvdy1leHBlY3RlZC50eHQ6CisKIDIwMTktMDktMTQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6ICFyZW5kZXJlcigpIGluICBX
ZWJDb3JlOjpUZXh0Ojp+VGV4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9s
aW5laGVpZ2h0LWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25z
L2xpbmVoZWlnaHQtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCAzOTIzNmIzNDBkNC4uNDE3
MmE4YzU2ZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbGluZWhlaWdodC1h
bmltYXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbGluZWhl
aWdodC1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAotVGhpcyB0ZXN0IHBl
cmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgbGluZS1oZWlnaHQgcHJvcGVydHkuIEl0IHRlc3Rz
IHdoZXRoZXIgb3Igbm90IHdlIGFyZSBwcm9wZXJseSBnZXR0aW5nIHRoZSBmb250LXNpemUuSGVy
ZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVy
ZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVy
ZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVy
ZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4KK1Ro
aXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIGxpbmUtaGVpZ2h0IHByb3BlcnR5
LiBJdCB0ZXN0cyB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgcHJvcGVybHkgZ2V0dGluZyB0aGUgZm9u
dC1zaXplLiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29t
ZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29t
ZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29t
ZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29t
ZSB0ZXh0LgogUEFTUyAtICJsaW5lSGVpZ2h0IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBh
dCAwLjFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEwCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC10cmFuc2Zvcm0tZXhw
ZWN0ZWQudHh0CmluZGV4IGFjNWJlMzJiNzIwLi5kOWU4NzIyZjQ3ZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC10cmFu
c2Zvcm0tZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGhpcyB0ZXN0IHBlcmZvcm1zIGFu
IGFuaW1hdGlvbiBvZiB0aGUgdHJhbnNmb3JtIHByb3BlcnR5LiBJdCBhbmltYXRlcyBvdmVyIDEw
IHNlY29uZHMuIEl0IHRha2VzIDMgc25hcHNob3RzIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRv
IGJlIHdpdGhpbiBhIHNwZWNpZmllZCByYW5nZS5QQVNTIC0gIndlYmtpdFRyYW5zZm9ybSIgcHJv
cGVydHkgZm9yICJib3gxIiBlbGVtZW50IGF0IDJzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDAu
MzA5MDE3LDAuOTUxMDU3CitUaGlzIHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSB0
cmFuc2Zvcm0gcHJvcGVydHkuIEl0IGFuaW1hdGVzIG92ZXIgMTAgc2Vjb25kcy4gSXQgdGFrZXMg
MyBzbmFwc2hvdHMgYW5kIGV4cGVjdHMgZWFjaCByZXN1bHQgdG8gYmUgd2l0aGluIGEgc3BlY2lm
aWVkIHJhbmdlLiBQQVNTIC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3gxIiBl
bGVtZW50IGF0IDJzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDAuMzA5MDE3LDAuOTUxMDU3CiBQ
QVNTIC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3gyIiBlbGVtZW50IGF0IDJz
IHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDAuMzA5MDE3LDAuOTUxMDU3CiBQQVNTIC0gIndlYmtp
dFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3gxIiBhbmQgImJveDIiIGVsZW1lbnRzIGF0IDJz
IGFyZSBjbG9zZSBlbm91Z2ggdG8gZWFjaCBvdGhlcgogUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0i
IHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCA1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRv
OiAtMSwwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3dpZHRoLXVzaW5nLWVt
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3dpZHRoLXVzaW5nLWVtcy1l
eHBlY3RlZC50eHQKaW5kZXggZGZiNzM3ZDRkOTYuLmJjZjYxOTEyZTAzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9hbmltYXRpb25zL3dpZHRoLXVzaW5nLWVtcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy93aWR0aC11c2luZy1lbXMtZXhwZWN0ZWQudHh0CkBAIC0x
LDMgKzEsMyBAQAotVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgd2lkdGgg
cHJvcGVydHkgdXNpbmcgJ2VtJyB1bml0cy4gSXQgdGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJl
IHByb3Blcmx5IGdldHRpbmcgdGhlIGRlZmF1bHQgZm9udC1zaXplLkhlcmUgaXMgc29tZSB0ZXh0
LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0
LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuCitUaGlzIHRlc3QgcGVyZm9y
bXMgYW4gYW5pbWF0aW9uIG9mIHRoZSB3aWR0aCBwcm9wZXJ0eSB1c2luZyAnZW0nIHVuaXRzLiBJ
dCB0ZXN0cyB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgcHJvcGVybHkgZ2V0dGluZyB0aGUgZGVmYXVs
dCBmb250LXNpemUuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBp
cyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBp
cyBzb21lIHRleHQuCiBQQVNTIC0gIndpZHRoIiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBh
dCAwLjMzM3Mgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTMzCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NvbXBvc2l0aW5nL3NoYXJlZC1iYWNraW5nL292ZXJmbG93LXNjcm9sbC9hYnNvbHV0
ZS1pbi1zdGFja2luZy1yZWxhdGl2ZS1pbi1zY3JvbGxlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9zaGFyZWQtYmFja2luZy9vdmVyZmxvdy1zY3JvbGwvYWJzb2x1dGUt
aW4tc3RhY2tpbmctcmVsYXRpdmUtaW4tc2Nyb2xsZXItZXhwZWN0ZWQudHh0CmluZGV4IGUxYmUy
OTA5ZmJlLi4wMjhlYTgyY2I2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
c2hhcmVkLWJhY2tpbmcvb3ZlcmZsb3ctc2Nyb2xsL2Fic29sdXRlLWluLXN0YWNraW5nLXJlbGF0
aXZlLWluLXNjcm9sbGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9zaGFyZWQtYmFja2luZy9vdmVyZmxvdy1zY3JvbGwvYWJzb2x1dGUtaW4tc3RhY2tpbmctcmVs
YXRpdmUtaW4tc2Nyb2xsZXItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotcmVsYXRpdmVh
YnNvbHV0ZQorcmVsYXRpdmUgYWJzb2x1dGUKIChHcmFwaGljc0xheWVyCiAgIChhbmNob3IgMC4w
MCAwLjAwKQogICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLWRvZXMtbm90LXNpemUtcHJv
cGVybHktYWJzb2x1dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2Jh
Y2tkcm9wL2JhY2tkcm9wLWZpbHRlci1kb2VzLW5vdC1zaXplLXByb3Blcmx5LWFic29sdXRlLWV4
cGVjdGVkLnR4dAppbmRleCA2ODRkNjE2N2JhZS4uM2NmMGFmYTIzNzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2NzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItZG9lcy1ub3Qt
c2l6ZS1wcm9wZXJseS1hYnNvbHV0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY3Nz
My9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci1kb2VzLW5vdC1zaXplLXByb3Blcmx5
LWFic29sdXRlLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLWZvb2Zvb2JhcgorZm9vIGZv
b2JhcgogKEdyYXBoaWNzTGF5ZXIKICAgKGFuY2hvciAwLjAwIDAuMDApCiAgIChib3VuZHMgODAw
LjAwIDYwMC4wMCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1l
dmVudHMtYnViYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRv
dy1ldmVudHMtYnViYmxlLWV4cGVjdGVkLnR4dAppbmRleCBlYzBkMTMwNmFiNi4uZjg4MDU2NTNk
MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1ldmVudHMtYnVi
YmxlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZl
bnRzLWJ1YmJsZS1leHBlY3RlZC50eHQKQEAgLTEgKzEgQEAKLVRlc3QgdGhhdCBzdG9wUHJvcGFn
YXRpb24oKSB3aWxsIG5vdCBhbGxvdyB3aW5kb3cgZXZlbnRzIHRvIGJ1YmJsZS4gQ2xpY2tpbmcg
b24gdGhpcyBzaG91bGQgbm90IGZpcmUgd2luZG93Lm9uY2xpY2suIFRoaXMgbWF0Y2hlcyBvdXIg
b2xkIGJlaGF2aW9yIGFuZCBGaXJlZm94IGJlaGF2aW9yLnN0b3BQcm9wYWdhdGlvbiBjYWxsZWQu
IFRlc3QgUGFzc2VkLgorVGVzdCB0aGF0IHN0b3BQcm9wYWdhdGlvbigpIHdpbGwgbm90IGFsbG93
IHdpbmRvdyBldmVudHMgdG8gYnViYmxlLiBDbGlja2luZyBvbiB0aGlzIHNob3VsZCBub3QgZmly
ZSB3aW5kb3cub25jbGljay4gVGhpcyBtYXRjaGVzIG91ciBvbGQgYmVoYXZpb3IgYW5kIEZpcmVm
b3ggYmVoYXZpb3IuIHN0b3BQcm9wYWdhdGlvbiBjYWxsZWQuIFRlc3QgUGFzc2VkLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LWV2ZW50cy1idWJibGUyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1ldmVudHMtYnViYmxlMi1l
eHBlY3RlZC50eHQKaW5kZXggOTgyOTRlMzNjNWQuLjNhM2UzNzY1OTA4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZTItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1ldmVudHMtYnViYmxlMi1leHBl
Y3RlZC50eHQKQEAgLTEgKzEgQEAKLVRlc3RzIHRoYXQgcHJldmVudERlZmF1bHQoKSB3aWxsIHN0
aWxsIGFsbG93IHdpbmRvdyBldmVudHMgdG8gYnViYmxlLiBDbGlja2luZyBoZXJlIHNob3VsZCBm
aXJlIHdpbmRvdy5vbmNsaWNrLiBUaGlzIHdpbGwgbWF0Y2ggRmlyZWZveCBiZWhhdmlvci5XaW5k
b3cub25DbGljayBmaXJlZC4gVGVzdCBQYXNzZWQuCitUZXN0cyB0aGF0IHByZXZlbnREZWZhdWx0
KCkgd2lsbCBzdGlsbCBhbGxvdyB3aW5kb3cgZXZlbnRzIHRvIGJ1YmJsZS4gQ2xpY2tpbmcgaGVy
ZSBzaG91bGQgZmlyZSB3aW5kb3cub25jbGljay4gVGhpcyB3aWxsIG1hdGNoIEZpcmVmb3ggYmVo
YXZpb3IuIFdpbmRvdy5vbkNsaWNrIGZpcmVkLiBUZXN0IFBhc3NlZC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvdG9rZW5pemVyL3NjcmlwdF9leHRyYV9jbG9zZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3Rva2VuaXplci9zY3JpcHRfZXh0cmFfY2xvc2UtZXhwZWN0ZWQu
dHh0CmluZGV4IDQyZmE4ZDgzZDhjLi43OWViOWE2MjQ1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC90b2tlbml6ZXIvc2NyaXB0X2V4dHJhX2Nsb3NlLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3Rva2VuaXplci9zY3JpcHRfZXh0cmFfY2xvc2UtZXhwZWN0ZWQudHh0
CkBAIC0xICsxIEBACi1URVNULi4uIFBBU1NFRC4gVGhpcyB0ZXh0IHNob3VsZCBzaG93IHVwLgor
VEVTVC4uLglQQVNTRUQuIFRoaXMgdGV4dCBzaG91bGQgc2hvdyB1cC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCmluZGV4IGEyN2NmNzAyNGZkLi5lNTgwZTI5YTI0ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDktMTQgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIEVsaW1pbmF0ZSBzZXBhcmF0ZSBz
aW1wbGUgbGluZSBsYXlvdXQgcGF0aCBmcm9tIFRleHRJdGVyYXRvcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNzYwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1ncmlkL2FsaWdubWVudC9ncmlkLXJvdy1heGlzLWFsaWdubWVudC1wb3NpdGlvbmVkLWl0
ZW1zLTAxNS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZ3JpZC9hbGlnbm1lbnQvZ3JpZC1yb3ctYXhpcy1hbGlnbm1lbnQtcG9zaXRpb25lZC1pdGVt
cy0wMTYtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9pbm5lclRl
eHQvZ2V0dGVyLWV4cGVjdGVkLnR4dDoKKworICAgICAgICBUd28gJ1x0JyBzdWJ0ZXN0cyBmbGlw
IHRvIEZBSUwgYmVjYXVzZSB0aGlzIHdhcyBvbmx5IHN1cHBvcnRlZCBvbiBUZXh0SXRlcmF0b3Ig
c2ltcGxlIGxpbmUgbGF5b3V0IHBhdGguCisgICAgICAgIFRoaXMgY2FuIG5vdyBiZSBmaXhlZCBj
b3JyZWN0bHkgZm9yIGJvdGggcGF0aHMuCisKIDIwMTktMDktMTMgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFdQVCBpbXBvcnRlciBzaG91bGQgY2hlY2sgTUVU
QSBnbG9iYWwgdGFnIGluIC5hbnkuanMgZmlsZXMgdG8gZ2VuZXJhdGUgdGhlIHZhbGlkIC5odG1s
IHN0dWIgZmlsZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2FsaWdubWVudC9ncmlkLXJvdy1heGlzLWFsaWdubWVu
dC1wb3NpdGlvbmVkLWl0ZW1zLTAxNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hbGlnbm1lbnQvZ3JpZC1yb3ct
YXhpcy1hbGlnbm1lbnQtcG9zaXRpb25lZC1pdGVtcy0wMTUtZXhwZWN0ZWQudHh0CmluZGV4IGRk
YzkxZWU0NWQ2Li5jZmNjODAwN2JkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvYWxpZ25tZW50L2dyaWQtcm93LWF4
aXMtYWxpZ25tZW50LXBvc2l0aW9uZWQtaXRlbXMtMDE1LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hbGln
bm1lbnQvZ3JpZC1yb3ctYXhpcy1hbGlnbm1lbnQtcG9zaXRpb25lZC1pdGVtcy0wMTUtZXhwZWN0
ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBYIFhYWCBYCiBYWCBYWFhYIFhYIFhYWCBYCiBYIFhYWAog
WAotWFggWFhYWCBYWCBYWFggWAorWFggWFhYIFggWFggWFhYIFgKIFggWFhYIFgKIFhYIFhYWFgg
WFggWFhYIFgKIFggWFhYCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hbGlnbm1lbnQvZ3JpZC1yb3ctYXhpcy1hbGln
bm1lbnQtcG9zaXRpb25lZC1pdGVtcy0wMTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvYWxpZ25tZW50L2dyaWQt
cm93LWF4aXMtYWxpZ25tZW50LXBvc2l0aW9uZWQtaXRlbXMtMDE2LWV4cGVjdGVkLnR4dAppbmRl
eCBkZGM5MWVlNDVkNi4uY2ZjYzgwMDdiZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2FsaWdubWVudC9ncmlkLXJv
dy1heGlzLWFsaWdubWVudC1wb3NpdGlvbmVkLWl0ZW1zLTAxNi1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQv
YWxpZ25tZW50L2dyaWQtcm93LWF4aXMtYWxpZ25tZW50LXBvc2l0aW9uZWQtaXRlbXMtMDE2LWV4
cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgWCBYWFggWAogWFggWFhYWCBYWCBYWFggWAogWCBY
WFgKIFgKLVhYIFhYWFggWFggWFhYIFgKK1hYIFhYWCBYIFhYIFhYWCBYCiBYIFhYWCBYCiBYWCBY
WFhYIFhYIFhYWCBYCiBYIFhYWApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9pbm5lclRleHQvZ2V0dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaW5uZXJUZXh0L2dldHRlci1l
eHBlY3RlZC50eHQKaW5kZXggMDQ2ZDZmNTBhMmYuLmQwN2ZmYWU3YzJhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2lubmVyVGV4dC9nZXR0
ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaW5uZXJUZXh0L2dldHRlci1leHBlY3RlZC50eHQKQEAgLTcsNyArNyw3IEBAIFBB
U1MgVHJhaWxpbmcgd2hpdGVzcGFjZSByZW1vdmVkICgiPGRpdj5hYmMgIikKIFBBU1MgSW50ZXJu
YWwgd2hpdGVzcGFjZSBjb21wcmVzc2VkICgiPGRpdj5hYmMgIGRlZiIpIAogUEFTUyBcbiBjb252
ZXJ0ZWQgdG8gc3BhY2UgKCI8ZGl2PmFiY1xuZGVmIikgCiBQQVNTIFxyIGNvbnZlcnRlZCB0byBz
cGFjZSAoIjxkaXY+YWJjXHJkZWYiKSAKLVBBU1MgXHQgY29udmVydGVkIHRvIHNwYWNlICgiPGRp
dj5hYmNcdGRlZiIpIAorRkFJTCBcdCBjb252ZXJ0ZWQgdG8gc3BhY2UgKCI8ZGl2PmFiY1x0ZGVm
IikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiYyBkZWYiIGJ1dCBnb3QgImFiY1x0ZGVmIgog
RkFJTCBUcmFpbGluZyB3aGl0ZXNwYWNlIGJlZm9yZSBoYXJkIGxpbmUgYnJlYWsgcmVtb3ZlZCAo
IjxkaXY+YWJjIDxicj5kZWYiKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYWJjXG5kZWYiIGJ1
dCBnb3QgImFiYyBcbmRlZiIKIFBBU1MgTGVhZGluZyB3aGl0ZXNwYWNlIHByZXNlcnZlZCAoIjxw
cmU+IGFiYyIpIAogUEFTUyBUcmFpbGluZyB3aGl0ZXNwYWNlIHByZXNlcnZlZCAoIjxwcmU+YWJj
ICIpIApAQCAtMzEsOSArMzEsOSBAQCBQQVNTIFx0IHByZXNlcnZlZCAoIjxzcGFuIHN0eWxlPSd3
aGl0ZS1zcGFjZTpwcmUnPmFiY1x0ZGVmIikKIFBBU1MgTGVhZGluZyB3aGl0ZXNwYWNlIHJlbW92
ZWQgKCI8ZGl2IHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUtbGluZSc+IGFiYyIpIAogUEFTUyBUcmFp
bGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQgKCI8ZGl2IHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUtbGlu
ZSc+YWJjICIpIAogUEFTUyBJbnRlcm5hbCB3aGl0ZXNwYWNlIGNvbGxhcHNlZCAoIjxkaXYgc3R5
bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5hYmMgIGRlZiIpIAotRkFJTCBcbiBwcmVzZXJ2ZWQg
KCI8ZGl2IHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUtbGluZSc+YWJjXG5kZWYiKSBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiYWJjXG5kZWYiIGJ1dCBnb3QgImFiY2RlZiIKLUZBSUwgXHIgY29udmVy
dGVkIHRvIG5ld2xpbmUgKCI8ZGl2IHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUtbGluZSc+YWJjXHJk
ZWYiKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYWJjXG5kZWYiIGJ1dCBnb3QgImFiY2RlZiIK
LVBBU1MgXHQgY29udmVydGVkIHRvIHNwYWNlICgiPGRpdiBzdHlsZT0nd2hpdGUtc3BhY2U6cHJl
LWxpbmUnPmFiY1x0ZGVmIikgCitGQUlMIFxuIHByZXNlcnZlZCAoIjxkaXYgc3R5bGU9J3doaXRl
LXNwYWNlOnByZS1saW5lJz5hYmNcbmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhYmNc
bmRlZiIgYnV0IGdvdCAiYWJjIGRlZiIKK0ZBSUwgXHIgY29udmVydGVkIHRvIG5ld2xpbmUgKCI8
ZGl2IHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUtbGluZSc+YWJjXHJkZWYiKSBhc3NlcnRfZXF1YWxz
OiBleHBlY3RlZCAiYWJjXG5kZWYiIGJ1dCBnb3QgImFiYyBkZWYiCitGQUlMIFx0IGNvbnZlcnRl
ZCB0byBzcGFjZSAoIjxkaXYgc3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5hYmNcdGRlZiIp
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhYmMgZGVmIiBidXQgZ290ICJhYmNcdGRlZiIKIFBB
U1MgV2hpdGVzcGFjZSBjb2xsYXBzZXMgYWNyb3NzIGVsZW1lbnQgYm91bmRhcmllcyAoIjxkaXY+
PHNwYW4+YWJjIDwvc3Bhbj4gZGVmIikgCiBQQVNTIFdoaXRlc3BhY2UgY29sbGFwc2VzIGFjcm9z
cyBlbGVtZW50IGJvdW5kYXJpZXMgKCI8ZGl2PjxzcGFuPmFiYyA8L3NwYW4+PHNwYW4+PC9zcGFu
PiBkZWYiKSAKIEZBSUwgV2hpdGVzcGFjZSBjb2xsYXBzZXMgYWNyb3NzIGVsZW1lbnQgYm91bmRh
cmllcyAoIjxkaXY+PHNwYW4+YWJjIDwvc3Bhbj48c3BhbiBzdHlsZT0nd2hpdGUtc3BhY2U6cHJl
Jz48L3NwYW4+IGRlZiIpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhYmMgZGVmIiBidXQgZ290
ICJhYmMgIGRlZiIKQEAgLTEzNSw3ICsxMzUsNyBAQCBGQUlMIE9uZSBibGFuayBsaW5lIGJldHdl
ZW4gPHA+cywgaWdub3JpbmcgZW1wdHkgPHA+cyAoIjxkaXY+PHA+YWJjPHA+PC9wPjxwPjwvcAog
RkFJTCBJbnZpc2libGUgPHA+IGRvZXNuJ3QgaW5kdWNlIGV4dHJhIGxpbmUgYnJlYWtzICgiPGRp
diBzdHlsZT0ndmlzaWJpbGl0eTpoaWRkZW4nPjxwPjxzcGFuIHN0eWxlPSd2aXNpYmlsaXR5OnZp
c2libGUnPmFiYzwvc3Bhbj48L3A+XG48ZGl2IHN0eWxlPSd2aXNpYmlsaXR5OnZpc2libGUnPmRl
ZjwvZGl2PiIpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhYmNcbmRlZiIgYnV0IGdvdCAiYWJj
XG5cbmRlZlxuIgogRkFJTCBObyBibGFuayBsaW5lcyBhcm91bmQgPGRpdj4gd2l0aCBtYXJnaW4g
KCI8ZGl2PmFiYzxkaXYgc3R5bGU9J21hcmdpbjoyZW0nPmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJhYmNcbmRlZiIgYnV0IGdvdCAiYWJjXG5kZWZcbiIKIFBBU1MgTm8gbmV3bGluZXMg
YXQgZGlzcGxheTppbmxpbmUtYmxvY2sgYm91bmRhcnkgKCI8ZGl2PjEyMzxzcGFuIHN0eWxlPSdk
aXNwbGF5OmlubGluZS1ibG9jayc+YWJjPC9zcGFuPmRlZiIpIAotRkFJTCBMZWFkaW5nL3RyYWls
aW5nIHNwYWNlIHJlbW92YWwgYXQgZGlzcGxheTppbmxpbmUtYmxvY2sgYm91bmRhcnkgKCI8ZGl2
PjEyMzxzcGFuIHN0eWxlPSdkaXNwbGF5OmlubGluZS1ibG9jayc+IGFiYyA8L3NwYW4+ZGVmIikg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEyM2FiY2RlZiIgYnV0IGdvdCAiMTIzYWJjIGRlZiIK
K0ZBSUwgTGVhZGluZy90cmFpbGluZyBzcGFjZSByZW1vdmFsIGF0IGRpc3BsYXk6aW5saW5lLWJs
b2NrIGJvdW5kYXJ5ICgiPGRpdj4xMjM8c3BhbiBzdHlsZT0nZGlzcGxheTppbmxpbmUtYmxvY2sn
PiBhYmMgPC9zcGFuPmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxMjNhYmNkZWYiIGJ1
dCBnb3QgIjEyMyBhYmMgZGVmIgogRkFJTCBCbGFuayBsaW5lcyBhcm91bmQgPHA+IGV2ZW4gd2l0
aG91dCBtYXJnaW4gKCI8ZGl2PjEyMzxwIHN0eWxlPSdtYXJnaW46MHB4Jz5hYmM8L3A+ZGVmIikg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEyM1xuXG5hYmNcblxuZGVmIiBidXQgZ290ICIxMjNc
bmFiY1xuZGVmIgogRkFJTCBObyBibGFuayBsaW5lcyBhcm91bmQgPGgxPiAoIjxkaXY+MTIzPGgx
PmFiYzwvaDE+ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEyM1xuYWJjXG5kZWYiIGJ1
dCBnb3QgIjEyM1xuYWJjXG5cbmRlZiIKIEZBSUwgTm8gYmxhbmsgbGluZXMgYXJvdW5kIDxoMj4g
KCI8ZGl2PjEyMzxoMj5hYmM8L2gyPmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxMjNc
bmFiY1xuZGVmIiBidXQgZ290ICIxMjNcbmFiY1xuXG5kZWYiCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9sZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9hbmltYXRpb25zL2xpbmVoZWlnaHQtYW5pbWF0
aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2xlZ2FjeS1hbmltYXRpb24tZW5naW5lL2Fu
aW1hdGlvbnMvbGluZWhlaWdodC1hbmltYXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDM5MjM2YjM0
MGQ0Li40MTcyYThjNTZlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlv
bi1lbmdpbmUvYW5pbWF0aW9ucy9saW5laGVpZ2h0LWFuaW1hdGlvbi1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy9saW5laGVp
Z2h0LWFuaW1hdGlvbi1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACi1UaGlzIHRlc3QgcGVy
Zm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSBsaW5lLWhlaWdodCBwcm9wZXJ0eS4gSXQgdGVzdHMg
d2hldGhlciBvciBub3Qgd2UgYXJlIHByb3Blcmx5IGdldHRpbmcgdGhlIGZvbnQtc2l6ZS5IZXJl
IGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJl
IGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJl
IGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJl
IGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LgorVGhp
cyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgbGluZS1oZWlnaHQgcHJvcGVydHku
IEl0IHRlc3RzIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBwcm9wZXJseSBnZXR0aW5nIHRoZSBmb250
LXNpemUuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21l
IHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21l
IHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21l
IHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21l
IHRleHQuCiBQQVNTIC0gImxpbmVIZWlnaHQiIHByb3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0
IDAuMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQt
dHJhbnNmb3JtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2xlZ2FjeS1hbmltYXRpb24tZW5n
aW5lL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS1leHBlY3RlZC50eHQK
aW5kZXggYWM1YmUzMmI3MjAuLmQ5ZTg3MjJmNDdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9s
ZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC10cmFu
c2Zvcm0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2xlZ2FjeS1hbmltYXRpb24tZW5n
aW5lL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS1leHBlY3RlZC50eHQK
QEAgLTEsNCArMSw0IEBACi1UaGlzIHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSB0
cmFuc2Zvcm0gcHJvcGVydHkuIEl0IGFuaW1hdGVzIG92ZXIgMTAgc2Vjb25kcy4gSXQgdGFrZXMg
MyBzbmFwc2hvdHMgYW5kIGV4cGVjdHMgZWFjaCByZXN1bHQgdG8gYmUgd2l0aGluIGEgc3BlY2lm
aWVkIHJhbmdlLlBBU1MgLSAid2Via2l0VHJhbnNmb3JtIiBwcm9wZXJ0eSBmb3IgImJveDEiIGVs
ZW1lbnQgYXQgMnMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMC4zMDkwMTcsMC45NTEwNTcKK1Ro
aXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eS4g
SXQgYW5pbWF0ZXMgb3ZlciAxMCBzZWNvbmRzLiBJdCB0YWtlcyAzIHNuYXBzaG90cyBhbmQgZXhw
ZWN0cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2UuIFBBU1MgLSAi
d2Via2l0VHJhbnNmb3JtIiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMnMgc2F3IHNv
bWV0aGluZyBjbG9zZSB0bzogMC4zMDkwMTcsMC45NTEwNTcKIFBBU1MgLSAid2Via2l0VHJhbnNm
b3JtIiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQgMnMgc2F3IHNvbWV0aGluZyBjbG9z
ZSB0bzogMC4zMDkwMTcsMC45NTEwNTcKIFBBU1MgLSAid2Via2l0VHJhbnNmb3JtIiBwcm9wZXJ0
eSBmb3IgImJveDEiIGFuZCAiYm94MiIgZWxlbWVudHMgYXQgMnMgYXJlIGNsb3NlIGVub3VnaCB0
byBlYWNoIG90aGVyCiBQQVNTIC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3gx
IiBlbGVtZW50IGF0IDVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IC0xLDAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3Njcm9sbGluZ2Nvb3JkaW5hdG9yL3Njcm9sbGluZy10cmVlL25lc3RlZC1h
YnNvbHV0ZS1pbi1vdmVyZmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zY3JvbGxpbmdj
b29yZGluYXRvci9zY3JvbGxpbmctdHJlZS9uZXN0ZWQtYWJzb2x1dGUtaW4tb3ZlcmZsb3ctZXhw
ZWN0ZWQudHh0CmluZGV4IDkwODM3ZWRjMzYwLi5jOGU5ZDMxZjBmMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc2Nyb2xsaW5nY29vcmRpbmF0b3Ivc2Nyb2xsaW5nLXRyZWUvbmVzdGVkLWFic29s
dXRlLWluLW92ZXJmbG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zY3JvbGxpbmdj
b29yZGluYXRvci9zY3JvbGxpbmctdHJlZS9uZXN0ZWQtYWJzb2x1dGUtaW4tb3ZlcmZsb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotYWJzYWJzCithYnMgYWJzCiAKIChGcmFtZSBzY3Jv
bGxpbmcgbm9kZQogICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgODAwIDYwMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA2NzUzZDU5NTk3Yi4uYTU2MjcwNzQ2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAor
MjAxOS0wOS0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
RWxpbWluYXRlIHNlcGFyYXRlIHNpbXBsZSBsaW5lIGxheW91dCBwYXRoIGZyb20gVGV4dEl0ZXJh
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3
NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
dGhlIG5ldyBsaW5lIGxheW91dCBpdGVyYXRvciB0byBpbXBsZW1lbnQgbGluZWJveCB0cmF2ZXJz
YWwgaW4gVGV4dEl0ZXJhdG9yLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRv
cjo6aGFuZGxlVGV4dEJveCk6CisKKyAgICAgICAgSW5saW5lVGV4dEJveCogLT4gTGluZUxheW91
dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9yCisgICAgICAgIERlbGV0ZSB0aGUgc2VwZXJhdGUg
c2ltcGxlIGxpbmUgbGF5b3V0IHBhdGguCisKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRv
cjo6aGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6OmVtaXRDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpl
bWl0VGV4dCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
cmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3I6Okl0
ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVy
OjpJdGVyYXRvcjo6YWR2YW5jZUxpbmVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dFJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpS
dW5SZXNvbHZlcjo6SXRlcmF0b3I6OnJlc29sdmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvcjo6aW5RdWlya3NNb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJ
dGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3I6OnNpbXBsZVJ1biBjb25zdCk6CisKKyAgICAg
ICAgTWFrZSBSdW5SZXNvbHZlcjo6SXRlcmF0b3IgY29weWFibGUgKHNvIFRleHRCb3hJdGVyYXRv
ciBiZWNvbWVzIGNvcHlhYmxlIHRvbykuCisKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUxpbmVMYXlvdXQ6OlRleHRGcmFnbWVudEl0ZXJhdG9yOjpmaW5kTmV4dFRleHRGcmFnbWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94OjpyZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3g6
OmxvZ2ljYWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZh
Y2U6OlRleHRCb3g6Omhhc0h5cGhlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5
b3V0SW50ZXJmYWNlOjpUZXh0Qm94Ojppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3g6OmRpck92ZXJyaWRl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3g6
OnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4
dEJveDo6bG9jYWxTdGFydE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5
b3V0SW50ZXJmYWNlOjpUZXh0Qm94Ojpsb2NhbEVuZE9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94OjpsZW5ndGggY29uc3QpOgorCisg
ICAgICAgIEFkZCBvZmZzZXQgYW5kIGxlbmd0aCBmdW5jdGlvbnMuCisKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3g6Oml0ZXJhdG9yIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvcjo6VGV4dEJv
eEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRC
b3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJ
bnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3I6OmF0RW5kIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlByb3ZpZGVyOjpmaXJz
dFRleHRCb3hGb3IpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6UHJv
dmlkZXI6OnRleHRCb3hSYW5nZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50
ZXJmYWNlOjpQcm92aWRlcjo6aXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KToKKworICAgICAgICBB
ZGQgUHJvdmlkZXIgY2xhc3MgZm9yIG1ha2luZyBpdGVyYXRvcnMuIEl0IGNvbnN0cnVjdHMgYW5k
IGtlZXBzIFNpbXBsZUxpbmVMYXlvdXQ6OlJlc29sdmVycyBhbGl2ZSBkdXJpbmcgdHJhdmVyc2Fs
IGFzIG5lZWRlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZh
Y2VUZXh0Qm94ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRl
eHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVM
YXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3I6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6
VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxp
bmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvcjo6b3Bl
cmF0b3ItPiBjb25zdCk6CisKKyAgICAgICAgTWFrZSBUZXh0Qm94SXRlcmF0b3IgcHJpdmF0ZWx5
IGluaGVyaXQgVGV4dEJveC4gVGhpcyB3YXkgd2UgZG9uJ3QgbmVlZCB0byBjb25zdHJ1Y3QgdGVt
cG9yYXJpZXMgYW5kIGNhbiBlYXNpbHkgaW1wbGVtZW50IG9wZXJhdG9yLT4uCisKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hSYW5nZTo6VGV4dEJveFJhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hSYW5nZTo6
YmVnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4
dEJveFJhbmdlOjplbmQgY29uc3QpOgorCisgICAgICAgIFVzZSBzZXBhcmF0ZSBlbmQoKSB0eXBl
IG9mIEMrKzE3IHJhbmdlcy4KKwogMjAxOS0wOS0xMSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUHJvdmlkZSBhIHByb3RvdHlwZSBmb3IgQVIgUXVpY2tMb29rIHRv
IHRyaWdnZXIgcHJvY2Vzc2luZyBpbiB0aGUgb3JpZ2luYXRpbmcgcGFnZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJiMWQ1Y2U3
NDk1Li5iOTk0YzhmOGVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgzMiw3ICsxODMyLDcgQEAKIAkJNTgyNEFCQTcxQUU4
MTM4NDAwOTA3NEI3IC8qIFJ1YnlUZXh0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTgyNEFCQTUxQUU4MTM4NDAwOTA3NEI3IC8qIFJ1YnlU
ZXh0RWxlbWVudC5oICovOyB9OwogCQk1ODJDQjA1MzFBNzhBMTRCMDBBRkZDQzQgLyogU2ltcGxl
TGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODJDQjA1MjFBNzhBMTRCMDBBRkZDQzQgLyogU2ltcGxl
TGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmggKi87IH07CiAJCTU4MkRFMzI1MUMzMEM4
NTQwMEJFMDJBOCAvKiBUZXh0RGVjb3JhdGlvblBhaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4MkRFMzIzMUMzMEM4NTQwMEJFMDJBOCAvKiBU
ZXh0RGVjb3JhdGlvblBhaW50ZXIuaCAqLzsgfTsKLQkJNTg1RDZFMDQxQTFBNzkyRTAwRkE0RjEy
IC8qIFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4NUQ2RTAyMUExQTc5MkUwMEZBNEYxMiAvKiBTaW1w
bGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmggKi87IH07CisJCTU4NUQ2RTA0MUExQTc5MkUwMEZB
NEYxMiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODVENkUwMjFBMUE3OTJFMDBGQTRGMTIgLyog
U2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTU4OTU1NkVEMThENEE0NDAwMDc2NEIwMyAvKiBCb3Jk
ZXJFZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
ODk1NTZFQzE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRnZS5oICovOyB9OwogCQk1OEIyRjlG
NDIyMzJENDUzMDA5MzhENjMgLyogUmVzaXplT2JzZXJ2YXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4QjJGOUYzMjIzMkQ0M0YwMDkzOEQ2MyAv
KiBSZXNpemVPYnNlcnZhdGlvbi5oICovOyB9OwogCQk1OEIyRjlGNTIyMzJENDU4MDA5MzhENjMg
LyogUmVzaXplT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU4QjJGOUVDMjIzMkQ0M0IwMDkzOEQ2MyAvKiBSZXNpemVPYnNlcnZlci5oICov
OyB9OwpAQCAtNDc5NSw3ICs0Nzk1LDcgQEAKIAkJRTQ3QzM5MzMxRkU2RTEwODAwQkJCQzZCIC8q
IFJlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0MzOTI3MUZFNkUwREMwMEJCQkM2QiAvKiBSZW5kZXJU
cmVlQnVpbGRlck11bHRpQ29sdW1uLmggKi87IH07CiAJCUU0N0UyNzY1MTYwMzZFRDIwMEVFMkFG
QiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQ3RTI3NjQxNjAzNkVEMjAwRUUyQUZCIC8qIEV4dGVuc2lvblN0
eWxlU2hlZXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTQ4MTM3QjkxREIzQjUyNjAwNUM1OUJGIC8qIFN0eWxlVmFsaWRpdHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODEzN0I4MURCM0I1MjYw
MDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTQ4NEEzM0UyMzA1NTMyNTAwOUFERTZBIC8qIExpbmVMYXlv
dXRJbnRlcmZhY2VUZXh0Qm94ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0ODRBMzNCMjMwNTUzMDMwMDlBREU2QSAvKiBMaW5lTGF5b3V0SW50ZXJm
YWNlVGV4dEJveGVzLmggKi87IH07CisJCUU0ODRBMzNFMjMwNTUzMjUwMDlBREU2QSAvKiBMaW5l
TGF5b3V0SW50ZXJmYWNlVGV4dEJveGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDg0QTMzQjIzMDU1MzAzMDA5QURFNkEgLyogTGluZUxheW91dElu
dGVyZmFjZVRleHRCb3hlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUU0ODk0NEEzMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDg5NDRB
MTE4MEI1N0Q4MDBGMTY1RDggLyogU2ltcGxlTGluZUxheW91dC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0OTE2RkY3MTk1REY2QTAwMDVBQjM0
OSAvKiBMYXllckZsdXNoVGhyb3R0bGVTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5MTZGRjYxOTVERjZBMDAwNUFCMzQ5IC8qIExheWVyRmx1
c2hUaHJvdHRsZVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTQ5NDZFQUYxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ5NDZFQUQx
NTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00ODMyLDcgKzQ4MzIsNyBAQAogCQlFNEU4
QjRFQzIxNkI3OUU1MDBCODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RThCNEVBMjE2Qjc5
RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oICovOyB9OwogCQlFNEU4
QjRGNTIxNkI5NTY1MDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFOEI0RjIyMTZCOEI2MDAw
Qjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEU5NEQ2MTIyRkYxNThBMDBERDE5MUYgLyog
Q29tcGxleExpbmVMYXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QTFBQzc4MjJGQUZENTAwMDE3Qjc1QiAvKiBDb21wbGV4TGluZUxheW91dC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUU0RTlC
MTE5MTgxMDkxNkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTlCMTE4MTgxMDkxNkYw
MDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCAqLzsgfTsKKwkJRTRFOUIxMTkx
ODEwOTE2RjAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFOUIxMTgxODEwOTE2RjAwM0FD
Q0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTlCMTFEMTgxNDU2OUMwMDNBQ0NERiAvKiBT
aW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNEU5QjExQzE4MTQ1NjlDMDAzQUNDREYgLyogU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5oICovOyB9OwogCQlFNEY5RUVGMzE1NkRBMDA3MDBEMjNFN0UgLyogU3R5
bGVTaGVldENvbnRlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNEY5RUVGMTE1NkQ4NEM0MDBEMjNFN0UgLyogU3R5bGVTaGVldENvbnRlbnRzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTUxNjY5
OTEyMEZGOTkxODAwOUQyQzI3IC8qIExpc3RCdXR0b25BcnJvd0AyeC5wbmcgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1MTY2OThGMjBGRjk5MTYwMDlE
MkMyNyAvKiBMaXN0QnV0dG9uQXJyb3dAMngucG5nICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGExYTM5MDNmNjdiLi5mNDFlMTAyYTA2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtNDc0LDggKzQ3NCw4IEBAIHZv
aWQgVGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKIAogICAgIGlmICghbV90ZXh0Qm94ICYmIG1fcmVt
YWluaW5nVGV4dEJveCkgewogICAgICAgICBtX3RleHRCb3ggPSBtX3JlbWFpbmluZ1RleHRCb3g7
Ci0gICAgICAgIG1fcmVtYWluaW5nVGV4dEJveCA9IG51bGxwdHI7Ci0gICAgICAgIG1fZmlyc3RM
ZXR0ZXJUZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZW1haW5pbmdUZXh0Qm94ID0geyB9Owor
ICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4dCA9IHsgfTsKICAgICAgICAgbV9vZmZzZXQgPSAwOwog
ICAgIH0KICAgICAvLyBoYW5kbGUgcmVtZW1iZXJlZCB0ZXh0IGJveApAQCAtNTc0LDI1ICs1NzQs
NiBAQCBzdGF0aWMgYm9vbCBoYXNWaXNpYmxlVGV4dE5vZGUoUmVuZGVyVGV4dCYgcmVuZGVyZXIp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdW5zaWduZWQgdGV4dE5vZGVPZmZzZXRJ
bkZsb3coY29uc3QgVGV4dCYgZmlyc3RUZXh0Tm9kZUluUmFuZ2UpCi17Ci0gICAgLy8gQ2FsY3Vs
YXRlIHRoZSB0ZXh0IG9mZnNldCBmb3Igc2ltcGxlIGxpbmVzLgotICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBmaXJzdFRleHROb2RlSW5SYW5nZS5yZW5kZXJlcigpOwotICAgIGlmICghcmVu
ZGVyZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIHVuc2lnbmVkIHRleHRPZmZzZXQgPSAwOwot
ICAgIGZvciAocmVuZGVyZXIgPSByZW5kZXJlci0+cHJldmlvdXNTaWJsaW5nKCk7IHJlbmRlcmVy
OyByZW5kZXJlciA9IHJlbmRlcmVyLT5wcmV2aW91c1NpYmxpbmcoKSkgewotICAgICAgICBpZiAo
aXM8UmVuZGVyVGV4dD4ocmVuZGVyZXIpKQotICAgICAgICAgICAgdGV4dE9mZnNldCArPSBkb3du
Y2FzdDxSZW5kZXJUZXh0PihyZW5kZXJlciktPnRleHQoKS5sZW5ndGgoKTsKLSAgICB9Ci0gICAg
cmV0dXJuIHRleHRPZmZzZXQ7Ci19Ci0KLXN0YXRpYyBib29sIGlzTmV3TGluZU9yVGFiQ2hhcmFj
dGVyKFVDaGFyIGNoYXJhY3RlcikKLXsKLSAgICByZXR1cm4gY2hhcmFjdGVyID09ICdcbicgfHwg
Y2hhcmFjdGVyID09ICdcdCc7Ci19Ci0KIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9k
ZSgpCiB7CiAgICAgVGV4dCYgdGV4dE5vZGUgPSBkb3duY2FzdDxUZXh0PigqbV9ub2RlKTsKQEAg
LTYxNyw3ICs1OTgsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAg
ICAgICAgICAgICAgIFN0cmluZyBmaXJzdExldHRlciA9IG1fZmlyc3RMZXR0ZXJUZXh0LT50ZXh0
KCk7CiAgICAgICAgICAgICAgICAgZW1pdFRleHQodGV4dE5vZGUsICptX2ZpcnN0TGV0dGVyVGV4
dCwgbV9vZmZzZXQsIG1fb2Zmc2V0ICsgZmlyc3RMZXR0ZXIubGVuZ3RoKCkpOwogICAgICAgICAg
ICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBtX3Rl
eHRCb3ggPSBudWxscHRyOworICAgICAgICAgICAgICAgIG1fdGV4dEJveCA9IHsgfTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTYz
NCwxMDIgKzYxNSwxMyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAoY29uc3QgYXV0byogbGF5b3V0ID0g
cmVuZGVyZXIuc2ltcGxlTGluZUxheW91dCgpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlci5zdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAm
IFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJlci5wYXJlbnQoKSk7Ci0gICAgICAgIEFTU0VS
VChpczxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlci5wYXJlbnQoKSkpOwotICAgICAgICBjb25z
dCBhdXRvJiBibG9ja0Zsb3cgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlci5w
YXJlbnQoKSk7Ci0gICAgICAgIC8vIFVzZSB0aGUgc2ltcGxlIGxheW91dCBydW5zIHRvIGl0ZXJh
dGUgb3ZlciB0aGUgdGV4dCBjb250ZW50LgotICAgICAgICBib29sIGlzTmV3VGV4dE5vZGUgPSBt
X3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJbkZsb3cgJiYgbV9wcmV2aW91c1NpbXBsZVRleHROb2Rl
SW5GbG93ICE9ICZ0ZXh0Tm9kZTsKLSAgICAgICAgLy8gU2ltcGxlIGxpbmUgbGF5b3V0IHJ1biBw
b3NpdGlvbnMgYXJlIGFsbCBhYnNvbHV0ZSB0byB0aGUgcGFyZW50IGZsb3cuCi0gICAgICAgIC8v
IE9mZnNldHRpbmcgaXMgcmVxdWlyZWQgd2hlbiBtdWx0aXBsZSByZW5kZXJlcnMgYXJlIHByZXNl
bnQuCi0gICAgICAgIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93ICs9IGlzTmV3
VGV4dE5vZGUgPyBtX3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJbkZsb3ctPnJlbmRlcmVyKCktPnRl
eHQoKS5sZW5ndGgoKSA6IDA7Ci0gICAgICAgIG1fcHJldmlvdXNTaW1wbGVUZXh0Tm9kZUluRmxv
dyA9ICZ0ZXh0Tm9kZTsKLQotICAgICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IChtX25vZGUg
PT0gbV9lbmRDb250YWluZXIpID8gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZW5kT2Zmc2V0KSA6
IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKLSAgICAgICAgaWYgKCFtX2Zsb3dSdW5SZXNvbHZlckNh
Y2hlIHx8ICZtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5mbG93KCkgIT0gJmJsb2NrRmxvdykgewot
ICAgICAgICAgICAgbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZsb3cgPSBtX2Zsb3dS
dW5SZXNvbHZlckNhY2hlID8gMCA6IHRleHROb2RlT2Zmc2V0SW5GbG93KHRleHROb2RlKTsKLSAg
ICAgICAgICAgIG1fZmxvd1J1blJlc29sdmVyQ2FjaGUgPSBtYWtlVW5pcXVlPFNpbXBsZUxpbmVM
YXlvdXQ6OlJ1blJlc29sdmVyPihibG9ja0Zsb3csICpsYXlvdXQpOwotICAgICAgICB9Ci0gICAg
ICAgIC8vIFNraXAgdG8gbV9vZmZzZXQgcG9zaXRpb24uCi0gICAgICAgIGF1dG8gcmFuZ2UgPSBt
X2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5yYW5nZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKLSAgICAg
ICAgYXV0byBpdCA9IHJhbmdlLmJlZ2luKCk7Ci0gICAgICAgIGF1dG8gZW5kID0gcmFuZ2UuZW5k
KCk7Ci0gICAgICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X29mZnNldCkgKyBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdzsKLSAgICAgICAg
d2hpbGUgKGl0ICE9IGVuZCAmJiAoKml0KS5lbmQoKSA8PSBzdGFydFBvc2l0aW9uKQotICAgICAg
ICAgICAgKytpdDsKLSAgICAgICAgaWYgKG1fbmV4dFJ1bk5lZWRzV2hpdGVzcGFjZSAmJiByZW5k
ZXJlclRleHRbbV9vZmZzZXQgLSAxXSA9PSAnXG4nKSB7Ci0gICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKCcgJywgdGV4dE5vZGUsIG51bGxwdHIsIG1fb2Zmc2V0LCBtX29mZnNldCArIDEpOwotICAg
ICAgICAgICAgcmV0dXJuIGl0ID09IGVuZDsKLSAgICAgICAgfQotICAgICAgICBpZiAoaXQgPT0g
ZW5kKSB7Ci0gICAgICAgICAgICAvLyBDb2xsYXBzZWQgdHJhaWxpbmcgd2hpdGVzcGFjZS4KLSAg
ICAgICAgICAgIG1fb2Zmc2V0ID0gZW5kUG9zaXRpb247Ci0gICAgICAgICAgICBtX2xhc3RUZXh0
Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX25leHRSdW5OZWVkc1doaXRlc3BhY2UpIHsK
LSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJyAnLCB0ZXh0Tm9kZSwgbnVsbHB0ciwgbV9vZmZz
ZXQsIG1fb2Zmc2V0ICsgMSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICAgICAgLy8gSWYgdGhlIHBvc2l0aW9uIHdlIGFyZSBsb29raW5nIGZvciBpcyB0byB0aGUg
bGVmdCBvZiB0aGUgcmVuZGVyZXIncyBmaXJzdCBydW4sIGl0IGNvdWxkIG1lYW4gdGhhdAotICAg
ICAgICAvLyB0aGUgcnVucyBhbmQgdGhlIHJlbmRlcmVycyBhcmUgb3V0IG9mIHN5bmMgKGUuZy4g
d2Ugc2tpcHBlZCBhIHJlbmRlcmVyIGluIGJldHdlZW4pLgotICAgICAgICAvLyBCZXR0ZXIgYmFp
bCBvdXQgYXQgdGhpcyBwb2ludC4KLSAgICAgICAgYXV0byBydW4gPSAqaXQ7Ci0gICAgICAgIGlm
IChydW4uc3RhcnQoKSA+IHN0YXJ0UG9zaXRpb24pIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2Zs
b3dSdW5SZXNvbHZlckNhY2hlKTsKLSAgICAgICAgICAgIGlmICgmKHJlbmRlcmVyRm9yUG9zaXRp
b24obV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+Zmxvd0NvbnRlbnRzKCksIHN0YXJ0UG9zaXRpb24p
KSAhPSAmcmVuZGVyZXIpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICBBU1NFUlQocnVuLmVuZCgpIC0gcnVuLnN0YXJ0KCkgPD0gcmVuZGVyZXJUZXh0Lmxl
bmd0aCgpKTsKLSAgICAgICAgLy8gY29udGVudFN0YXJ0IHNraXBzIGxlYWRpbmcgd2hpdGVzcGFj
ZS4KLSAgICAgICAgdW5zaWduZWQgY29udGVudFN0YXJ0ID0gc3RkOjptYXg8dW5zaWduZWQ+KG1f
b2Zmc2V0LCBydW4uc3RhcnQoKSAtIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93
KTsKLSAgICAgICAgdW5zaWduZWQgY29udGVudEVuZCA9IHN0ZDo6bWluKGVuZFBvc2l0aW9uLCBy
dW4uZW5kKCkgLSBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyk7Ci0gICAgICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRlbnRTdGFydCA8PSBjb250ZW50
RW5kKTsKLSAgICAgICAgLy8gQ2hlY2sgaWYgd2hpdGVzcGFjZSBhZGp1c3RtZW50IGlzIG5lZWRl
ZCB3aGVuIGNyb3NzaW5nIHJlbmRlcmVyIGJvdW5kYXJ5LgotICAgICAgICBpZiAoaXNOZXdUZXh0
Tm9kZSkgewotICAgICAgICAgICAgYm9vbCBsYXN0Q2hhcmFjdGVySXNOb3RXaGl0ZXNwYWNlID0g
bV9sYXN0Q2hhcmFjdGVyICYmICFyZW5kZXJlci5zdHlsZSgpLmlzQ29sbGFwc2libGVXaGl0ZVNw
YWNlKG1fbGFzdENoYXJhY3Rlcik7Ci0gICAgICAgICAgICBib29sIGFkZFRyYWlsaW5nV2hpdGVz
cGFjZUZvclByZXZpb3VzID0gbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSAm
JiBsYXN0Q2hhcmFjdGVySXNOb3RXaGl0ZXNwYWNlOwotICAgICAgICAgICAgYm9vbCBsZWFkaW5n
V2hpdGVzcGFjZUlzTmVlZGVkRm9yQ3VycmVudCA9IGNvbnRlbnRTdGFydCA+IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX29mZnNldCkgJiYgbGFzdENoYXJhY3RlcklzTm90V2hpdGVzcGFjZTsKLSAg
ICAgICAgICAgIGlmIChhZGRUcmFpbGluZ1doaXRlc3BhY2VGb3JQcmV2aW91cyB8fCBsZWFkaW5n
V2hpdGVzcGFjZUlzTmVlZGVkRm9yQ3VycmVudCkgewotICAgICAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoJyAnLCB0ZXh0Tm9kZSwgbnVsbHB0ciwgbV9vZmZzZXQsIG1fb2Zmc2V0ICsgMSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIC8vIFxuIFx0IHNpbmdsZSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgbmVlZCByZXBsYWNp
bmcgc28gdGhhdCB0aGUgbmV3IGxpbmUvdGFiIGNoYXJhY3RlcnMgZG9uJ3Qgc2hvdyB1cC4KLSAg
ICAgICAgdW5zaWduZWQgc3RvcFBvc2l0aW9uID0gY29udGVudFN0YXJ0OwotICAgICAgICB3aGls
ZSAoc3RvcFBvc2l0aW9uIDwgY29udGVudEVuZCAmJiAhaXNOZXdMaW5lT3JUYWJDaGFyYWN0ZXIo
cmVuZGVyZXJUZXh0W3N0b3BQb3NpdGlvbl0pKQotICAgICAgICAgICAgKytzdG9wUG9zaXRpb247
Ci0gICAgICAgIC8vIEVtaXQgdGhlIHRleHQgdXAgdG8gdGhlIG5ldyBsaW5lL3RhYiBjaGFyYWN0
ZXIuCi0gICAgICAgIGlmIChzdG9wUG9zaXRpb24gPCBjb250ZW50RW5kKSB7Ci0gICAgICAgICAg
ICBpZiAoc3RvcFBvc2l0aW9uID09IGNvbnRlbnRTdGFydCkgewotICAgICAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoJyAnLCB0ZXh0Tm9kZSwgbnVsbHB0ciwgY29udGVudFN0YXJ0LCBjb250ZW50
U3RhcnQgKyAxKTsKLSAgICAgICAgICAgICAgICBtX29mZnNldCA9IGNvbnRlbnRTdGFydCArIDE7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZW1pdFRleHQodGV4dE5vZGUsIHJlbmRlcmVyLCBjb250ZW50U3RhcnQsIHN0b3BQb3NpdGlv
bik7Ci0gICAgICAgICAgICBtX29mZnNldCA9IHN0b3BQb3NpdGlvbiArIDE7Ci0gICAgICAgICAg
ICBtX25leHRSdW5OZWVkc1doaXRlc3BhY2UgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgICAgIGVtaXRUZXh0KHRleHROb2RlLCByZW5kZXJlciwgY29u
dGVudFN0YXJ0LCBjb250ZW50RW5kKTsKLSAgICAgICAgLy8gV2hlbiBsaW5lIGVuZGluZyB3aXRo
IGNvbGxhcHNlZCB3aGl0ZXNwYWNlIGlzIHByZXNlbnQsIHdlIG5lZWQgdG8gY2Fycnkgb3ZlciBv
bmUgd2hpdGVzcGFjZTogZm9vKGVuZCBvZiBsaW5lKWJhciAtPiBmb28gYmFyIChvdGhlcndpc2Ug
d2Ugd291bGQgZW5kIHVwIHdpdGggZm9vYmFyKS4KLSAgICAgICAgbV9uZXh0UnVuTmVlZHNXaGl0
ZXNwYWNlID0gcnVuLmlzRW5kT2ZMaW5lKCkgJiYgY29udGVudEVuZCA8IGVuZFBvc2l0aW9uICYm
IHJlbmRlcmVyLnN0eWxlKCkuaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UocmVuZGVyZXJUZXh0W2Nv
bnRlbnRFbmRdKTsKLSAgICAgICAgbV9vZmZzZXQgPSBjb250ZW50RW5kOwotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KSA9PSBlbmRQb3NpdGlvbjsKLSAgICB9
Ci0KLSAgICBpZiAocmVuZGVyZXIuZmlyc3RUZXh0Qm94KCkpCi0gICAgICAgIG1fdGV4dEJveCA9
IHJlbmRlcmVyLmZpcnN0VGV4dEJveCgpOworICAgIG1fdGV4dEJveCA9IG1fbGluZUxheW91dFBy
b3ZpZGVyLmZpcnN0VGV4dEJveEZvcihyZW5kZXJlcik7CiAKICAgICBib29sIHNob3VsZEhhbmRs
ZUZpcnN0TGV0dGVyID0gIW1faGFuZGxlZEZpcnN0TGV0dGVyICYmIGlzPFJlbmRlclRleHRGcmFn
bWVudD4ocmVuZGVyZXIpICYmICFtX29mZnNldDsKICAgICBpZiAoc2hvdWxkSGFuZGxlRmlyc3RM
ZXR0ZXIpCiAgICAgICAgIGhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoZG93bmNhc3Q8UmVuZGVy
VGV4dEZyYWdtZW50PihyZW5kZXJlcikpOwogCi0gICAgaWYgKCFyZW5kZXJlci5maXJzdFRleHRC
b3goKSAmJiByZW5kZXJlclRleHQubGVuZ3RoKCkgJiYgIXNob3VsZEhhbmRsZUZpcnN0TGV0dGVy
KSB7CisgICAgaWYgKCFtX3RleHRCb3ggJiYgcmVuZGVyZXJUZXh0Lmxlbmd0aCgpICYmICFzaG91
bGRIYW5kbGVGaXJzdExldHRlcikgewogICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52aXNp
YmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0SXRl
cmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9IHRydWU7IC8v
IGVudGlyZSBibG9jayBpcyBjb2xsYXBzZWQgc3BhY2UKQEAgLTc0NCw3ICs2MzYsNyBAQCBib29s
IFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAgICAgICAgICAgbV9zb3J0ZWRUZXh0
Qm94ZXMuYXBwZW5kKHRleHRCb3gpOwogICAgICAgICBzdGQ6OnNvcnQobV9zb3J0ZWRUZXh0Qm94
ZXMuYmVnaW4oKSwgbV9zb3J0ZWRUZXh0Qm94ZXMuZW5kKCksIElubGluZVRleHRCb3g6OmNvbXBh
cmVCeVN0YXJ0KTsKICAgICAgICAgbV9zb3J0ZWRUZXh0Qm94ZXNQb3NpdGlvbiA9IDA7Ci0gICAg
ICAgIG1fdGV4dEJveCA9IG1fc29ydGVkVGV4dEJveGVzLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBt
X3NvcnRlZFRleHRCb3hlc1swXTsKKyAgICAgICAgbV90ZXh0Qm94ID0gbV9saW5lTGF5b3V0UHJv
dmlkZXIuaXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KG1fc29ydGVkVGV4dEJveGVzLmlzRW1wdHko
KSA/IG51bGxwdHIgOiBtX3NvcnRlZFRleHRCb3hlc1swXSk7CiAgICAgfQogCiAgICAgaGFuZGxl
VGV4dEJveCgpOwpAQCAtNzU3LDE4ICs2NDksMjUgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRs
ZVRleHRCb3goKQogCiAgICAgYXV0byYgcmVuZGVyZXIgPSBtX2ZpcnN0TGV0dGVyVGV4dCA/ICpt
X2ZpcnN0TGV0dGVyVGV4dCA6ICp0ZXh0Tm9kZS5yZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJl
ci5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhh
dmlvciAmIFRleHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKSB7Ci0gICAgICAgIG1f
dGV4dEJveCA9IG51bGxwdHI7CisgICAgICAgIG1fdGV4dEJveCA9IHsgfTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKworICAgIGF1dG8gZmlyc3RUZXh0Qm94ID0gWyZdIHsKKyAgICAgICAgaWYg
KHJlbmRlcmVyLmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpCisgICAgICAgICAgICByZXR1cm4gbV9s
aW5lTGF5b3V0UHJvdmlkZXIuaXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KG1fc29ydGVkVGV4dEJv
eGVzLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX3NvcnRlZFRleHRCb3hlc1swXSk7CisKKyAgICAg
ICAgcmV0dXJuIG1fbGluZUxheW91dFByb3ZpZGVyLmZpcnN0VGV4dEJveEZvcihyZW5kZXJlcik7
CisgICAgfSgpOworCiAgICAgU3RyaW5nIHJlbmRlcmVyVGV4dCA9IHJlbmRlcmVyLnRleHQoKTsK
ICAgICB1bnNpZ25lZCBzdGFydCA9IG1fb2Zmc2V0OwogICAgIHVuc2lnbmVkIGVuZCA9ICgmdGV4
dE5vZGUgPT0gbV9lbmRDb250YWluZXIpID8gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZW5kT2Zm
c2V0KSA6IFVJTlRfTUFYOwogICAgIHdoaWxlIChtX3RleHRCb3gpIHsKLSAgICAgICAgdW5zaWdu
ZWQgdGV4dEJveFN0YXJ0ID0gbV90ZXh0Qm94LT5zdGFydCgpOworICAgICAgICB1bnNpZ25lZCB0
ZXh0Qm94U3RhcnQgPSBtX3RleHRCb3gtPmxvY2FsU3RhcnRPZmZzZXQoKTsKICAgICAgICAgdW5z
aWduZWQgcnVuU3RhcnQgPSBzdGQ6Om1heCh0ZXh0Qm94U3RhcnQsIHN0YXJ0KTsKIAogICAgICAg
ICAvLyBDaGVjayBmb3IgY29sbGFwc2VkIHNwYWNlIGF0IHRoZSBzdGFydCBvZiB0aGlzIHJ1bi4K
LSAgICAgICAgSW5saW5lVGV4dEJveCogZmlyc3RUZXh0Qm94ID0gcmVuZGVyZXIuY29udGFpbnNS
ZXZlcnNlZFRleHQoKSA/IChtX3NvcnRlZFRleHRCb3hlcy5pc0VtcHR5KCkgPyBudWxscHRyIDog
bV9zb3J0ZWRUZXh0Qm94ZXNbMF0pIDogcmVuZGVyZXIuZmlyc3RUZXh0Qm94KCk7CiAgICAgICAg
IGJvb2wgbmVlZFNwYWNlID0gbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSB8
fCAobV90ZXh0Qm94ID09IGZpcnN0VGV4dEJveCAmJiB0ZXh0Qm94U3RhcnQgPT0gcnVuU3RhcnQg
JiYgcnVuU3RhcnQpOwogICAgICAgICBpZiAobmVlZFNwYWNlICYmICFyZW5kZXJlci5zdHlsZSgp
LmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKG1fbGFzdENoYXJhY3RlcikgJiYgbV9sYXN0Q2hhcmFj
dGVyKSB7CiAgICAgICAgICAgICBpZiAobV9sYXN0VGV4dE5vZGUgPT0gJnRleHROb2RlICYmIHJ1
blN0YXJ0ICYmIHJlbmRlcmVyVGV4dFtydW5TdGFydCAtIDFdID09ICcgJykgewpAQCAtNzgwLDE3
ICs2NzksMTkgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3goKQogICAgICAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoJyAnLCB0ZXh0Tm9kZSwgbnVsbHB0ciwgcnVuU3RhcnQsIHJ1
blN0YXJ0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICB1bnNpZ25l
ZCB0ZXh0Qm94RW5kID0gdGV4dEJveFN0YXJ0ICsgbV90ZXh0Qm94LT5sZW4oKTsKKyAgICAgICAg
dW5zaWduZWQgdGV4dEJveEVuZCA9IHRleHRCb3hTdGFydCArIG1fdGV4dEJveC0+bGVuZ3RoKCk7
CiAgICAgICAgIHVuc2lnbmVkIHJ1bkVuZCA9IHN0ZDo6bWluKHRleHRCb3hFbmQsIGVuZCk7CiAg
ICAgICAgIAogICAgICAgICAvLyBEZXRlcm1pbmUgd2hhdCB0aGUgbmV4dCB0ZXh0IGJveCB3aWxs
IGJlLCBidXQgZG9uJ3QgYWR2YW5jZSB5ZXQKLSAgICAgICAgSW5saW5lVGV4dEJveCogbmV4dFRl
eHRCb3ggPSBudWxscHRyOworICAgICAgICBMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRl
cmF0b3IgbmV4dFRleHRCb3g7CiAgICAgICAgIGlmIChyZW5kZXJlci5jb250YWluc1JldmVyc2Vk
VGV4dCgpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIHJldmVyc2VkIHRleHQgaW4g
dGhlIGxpbmUgbGF5b3V0IGl0ZXJhdG9yLgogICAgICAgICAgICAgaWYgKG1fc29ydGVkVGV4dEJv
eGVzUG9zaXRpb24gKyAxIDwgbV9zb3J0ZWRUZXh0Qm94ZXMuc2l6ZSgpKQotICAgICAgICAgICAg
ICAgIG5leHRUZXh0Qm94ID0gbV9zb3J0ZWRUZXh0Qm94ZXNbbV9zb3J0ZWRUZXh0Qm94ZXNQb3Np
dGlvbiArIDFdOwotICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICBuZXh0VGV4dEJveCA9IG1f
dGV4dEJveC0+bmV4dFRleHRCb3goKTsKLSAgICAgICAgQVNTRVJUKCFuZXh0VGV4dEJveCB8fCAm
bmV4dFRleHRCb3gtPnJlbmRlcmVyKCkgPT0gJnJlbmRlcmVyKTsKKyAgICAgICAgICAgICAgICBu
ZXh0VGV4dEJveCA9IG1fbGluZUxheW91dFByb3ZpZGVyLml0ZXJhdG9yRm9ySW5saW5lVGV4dEJv
eChtX3NvcnRlZFRleHRCb3hlc1ttX3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uICsgMV0pOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbmV4dFRleHRCb3ggPSBtX3RleHRCb3g7CisgICAg
ICAgICAgICArK25leHRUZXh0Qm94OworICAgICAgICB9CiAKICAgICAgICAgaWYgKHJ1blN0YXJ0
IDwgcnVuRW5kKSB7CiAgICAgICAgICAgICAvLyBIYW5kbGUgZWl0aGVyIGEgc2luZ2xlIG5ld2xp
bmUgY2hhcmFjdGVyICh3aGljaCBiZWNvbWVzIGEgc3BhY2UpLApAQCAtODE3LDcgKzcxOCw3IEBA
IHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgICAgIC8vIEFkdmFuY2UgYW5kIHJldHVybgotICAgICAgICAgICAgdW5z
aWduZWQgbmV4dFJ1blN0YXJ0ID0gbmV4dFRleHRCb3ggPyBuZXh0VGV4dEJveC0+c3RhcnQoKSA6
IHJlbmRlcmVyVGV4dC5sZW5ndGgoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG5leHRSdW5TdGFy
dCA9IG5leHRUZXh0Qm94ID8gbmV4dFRleHRCb3gtPmxvY2FsU3RhcnRPZmZzZXQoKSA6IHJlbmRl
cmVyVGV4dC5sZW5ndGgoKTsKICAgICAgICAgICAgIGlmIChuZXh0UnVuU3RhcnQgPiBydW5FbmQp
CiAgICAgICAgICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9
IHRydWU7IC8vIGNvbGxhcHNlZCBzcGFjZSBiZXR3ZWVuIHJ1bnMgb3IgYXQgdGhlIGVuZAogICAg
ICAgICAgICAgbV90ZXh0Qm94ID0gbmV4dFRleHRCb3g7CkBAIC04MzIsOCArNzMzLDggQEAgdm9p
ZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3goKQogICAgIH0KICAgICBpZiAoIW1fdGV4dEJv
eCAmJiBtX3JlbWFpbmluZ1RleHRCb3gpIHsKICAgICAgICAgbV90ZXh0Qm94ID0gbV9yZW1haW5p
bmdUZXh0Qm94OwotICAgICAgICBtX3JlbWFpbmluZ1RleHRCb3ggPSBudWxscHRyOwotICAgICAg
ICBtX2ZpcnN0TGV0dGVyVGV4dCA9IG51bGxwdHI7CisgICAgICAgIG1fcmVtYWluaW5nVGV4dEJv
eCA9IHsgfTsKKyAgICAgICAgbV9maXJzdExldHRlclRleHQgPSB7IH07CiAgICAgICAgIG1fb2Zm
c2V0ID0gMDsKICAgICAgICAgaGFuZGxlVGV4dEJveCgpOwogICAgIH0KQEAgLTg1Niw3ICs3NTcs
NyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihSZW5kZXJU
ZXh0RnJhZ21lbnQmIHJlbmRlcmVyKQogICAgICAgICBpZiAoYXV0byogZmlyc3RMZXR0ZXJUZXh0
ID0gZmlyc3RSZW5kZXJUZXh0SW5GaXJzdExldHRlcihmaXJzdExldHRlcikpIHsKICAgICAgICAg
ICAgIG1faGFuZGxlZEZpcnN0TGV0dGVyID0gdHJ1ZTsKICAgICAgICAgICAgIG1fcmVtYWluaW5n
VGV4dEJveCA9IG1fdGV4dEJveDsKLSAgICAgICAgICAgIG1fdGV4dEJveCA9IGZpcnN0TGV0dGVy
VGV4dC0+Zmlyc3RUZXh0Qm94KCk7CisgICAgICAgICAgICBtX3RleHRCb3ggPSBtX2xpbmVMYXlv
dXRQcm92aWRlci5maXJzdFRleHRCb3hGb3IoKmZpcnN0TGV0dGVyVGV4dCk7CiAgICAgICAgICAg
ICBtX3NvcnRlZFRleHRCb3hlcy5jbGVhcigpOwogICAgICAgICAgICAgbV9maXJzdExldHRlclRl
eHQgPSBmaXJzdExldHRlclRleHQ7CiAgICAgICAgIH0KQEAgLTEyMjIsNyArMTEyMyw2IEBAIHZv
aWQgVGV4dEl0ZXJhdG9yOjplbWl0Q2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlciwgTm9kZSYgY2hh
cmFjdGVyTm9kZSwgTm9kZSogb2ZmCiAgICAgbV90ZXh0ID0gbV9jb3B5YWJsZVRleHQudGV4dCgp
OwogICAgIG1fbGFzdENoYXJhY3RlciA9IGNoYXJhY3RlcjsKICAgICBtX2xhc3RUZXh0Tm9kZUVu
ZGVkV2l0aENvbGxhcHNlZFNwYWNlID0gZmFsc2U7Ci0gICAgbV9uZXh0UnVuTmVlZHNXaGl0ZXNw
YWNlID0gZmFsc2U7CiB9CiAKIHZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChUZXh0JiB0ZXh0
Tm9kZSwgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGludCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0
RW5kT2Zmc2V0KQpAQCAtMTI0Nyw3ICsxMTQ3LDYgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRU
ZXh0KFRleHQmIHRleHROb2RlLCBSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRleHRTdGFydE8K
ICAgICBtX3RleHQgPSBtX2NvcHlhYmxlVGV4dC50ZXh0KCk7CiAKICAgICBtX2xhc3RUZXh0Tm9k
ZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlID0gZmFsc2U7Ci0gICAgbV9uZXh0UnVuTmVlZHNXaGl0
ZXNwYWNlID0gZmFsc2U7CiAgICAgbV9oYXNFbWl0dGVkID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5kZXggMWY0ZmRkZmVmNzUuLmViYzI1MzI5MzBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTI4LDYgKzI4LDcgQEAKIC8v
IEZJWE1FOiBNb3ZlIGVhY2ggaXRlcmF0b3IgY2xhc3MgaW50byBhIHNlcGFyYXRlIGhlYWRlciBm
aWxlLgogCiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIKKyNpbmNsdWRlICJMaW5lTGF5b3V0SW50
ZXJmYWNlVGV4dEJveGVzLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0SXRl
cmF0b3JCZWhhdmlvci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE2NywxMCArMTY4
LDEwIEBAIHByaXZhdGU6CiAKICAgICAvLyBVc2VkIHdoZW4gdGhlcmUgaXMgc3RpbGwgc29tZSBw
ZW5kaW5nIHRleHQgZnJvbSB0aGUgY3VycmVudCBub2RlOyB3aGVuIHRoZXNlIGFyZSBmYWxzZSBh
bmQgbnVsbCwgd2UgZ28gYmFjayB0byBub3JtYWwgaXRlcmF0aW5nLgogICAgIE5vZGUqIG1fbm9k
ZUZvckFkZGl0aW9uYWxOZXdsaW5lIHsgbnVsbHB0ciB9OwotICAgIElubGluZVRleHRCb3gqIG1f
dGV4dEJveCB7IG51bGxwdHIgfTsKKyAgICBMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRl
cmF0b3IgbV90ZXh0Qm94OwogCiAgICAgLy8gVXNlZCB3aGVuIGl0ZXJhdGluZyBvdmVyIDpmaXJz
dC1sZXR0ZXIgdGV4dCB0byBzYXZlIHBvaW50ZXIgdG8gcmVtYWluaW5nIHRleHQgYm94LgotICAg
IElubGluZVRleHRCb3gqIG1fcmVtYWluaW5nVGV4dEJveCB7IG51bGxwdHIgfTsKKyAgICBMaW5l
TGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3IgbV9yZW1haW5pbmdUZXh0Qm94OwogCiAg
ICAgLy8gVXNlZCB0byBwb2ludCB0byBSZW5kZXJUZXh0IG9iamVjdCBmb3IgOmZpcnN0LWxldHRl
ci4KICAgICBSZW5kZXJUZXh0KiBtX2ZpcnN0TGV0dGVyVGV4dCB7IG51bGxwdHIgfTsKQEAgLTE4
MCwxMSArMTgxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbGFzdFRleHROb2RlRW5kZWRXaXRo
Q29sbGFwc2VkU3BhY2UgeyBmYWxzZSB9OwogICAgIFVDaGFyIG1fbGFzdENoYXJhY3RlciB7IDAg
fTsKIAotICAgIC8vIFVzZWQgdG8gZG8gc2ltcGxlIGxpbmUgbGF5b3V0IHJ1biBsb2dpYy4KLSAg
ICBib29sIG1fbmV4dFJ1bk5lZWRzV2hpdGVzcGFjZSB7IGZhbHNlIH07Ci0gICAgdW5zaWduZWQg
bV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZsb3cgeyAwIH07Ci0gICAgVGV4dCogbV9w
cmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93IHsgbnVsbHB0ciB9OwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4gbV9mbG93UnVuUmVzb2x2ZXJDYWNo
ZTsKKyAgICBMaW5lTGF5b3V0SW50ZXJmYWNlOjpQcm92aWRlciBtX2xpbmVMYXlvdXRQcm92aWRl
cjsKIAogICAgIC8vIFVzZWQgd2hlbiB0ZXh0IGJveGVzIGFyZSBvdXQgb2Ygb3JkZXIgKEhlYnJl
dy9BcmFiaWMgd2l0aCBlbWJlZGRlZCBMVFIgdGV4dCkKICAgICBWZWN0b3I8SW5saW5lVGV4dEJv
eCo+IG1fc29ydGVkVGV4dEJveGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwCmluZGV4IGEwN2M0ZDA0MTkwLi44ZDRlZDkyZjkyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMjAyLDggKzIw
Miw4IEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAgICAgICAgLy8gbWFueSB0ZXN0IHJlc3Vs
dHMuCiAgICAgICAgIGNvbnN0IFJlbmRlclRleHQmIHRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0
PihvKTsKICAgICAgICAgciA9IEludFJlY3QodGV4dC5maXJzdFJ1bkxvY2F0aW9uKCksIHRleHQu
bGluZXNCb3VuZGluZ0JveCgpLnNpemUoKSk7Ci0gICAgICAgIGF1dG8gdGV4dEJveGVzID0gTGlu
ZUxheW91dEludGVyZmFjZTo6dGV4dEJveGVzKHRleHQpOwotICAgICAgICBpZiAodGV4dEJveGVz
LmJlZ2luKCkgPT0gdGV4dEJveGVzLmVuZCgpKQorICAgICAgICBMaW5lTGF5b3V0SW50ZXJmYWNl
OjpQcm92aWRlciBsaW5lTGF5b3V0UHJvdmlkZXI7CisgICAgICAgIGlmICghbGluZUxheW91dFBy
b3ZpZGVyLmZpcnN0VGV4dEJveEZvcih0ZXh0KSkKICAgICAgICAgICAgIGFkanVzdEZvclRhYmxl
Q2VsbHMgPSBmYWxzZTsKICAgICB9IGVsc2UgaWYgKG8uaXNCUigpKSB7CiAgICAgICAgIGNvbnN0
IFJlbmRlckxpbmVCcmVhayYgYnIgPSBkb3duY2FzdDxSZW5kZXJMaW5lQnJlYWs+KG8pOwpAQCAt
NTQ5LDggKzU0OSw5IEBAIHZvaWQgd3JpdGUoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9i
amVjdCYgbywgT3B0aW9uU2V0PFJlbmRlckFzVGV4dEZsYWc+IGJlCiAgICAgVGV4dFN0cmVhbTo6
SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOwogCiAgICAgaWYgKGlzPFJlbmRlclRleHQ+KG8p
KSB7CisgICAgICAgIExpbmVMYXlvdXRJbnRlcmZhY2U6OlByb3ZpZGVyIGxpbmVMYXlvdXRQcm92
aWRlcjsKICAgICAgICAgYXV0byYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+KG8pOwotICAg
ICAgICBmb3IgKGF1dG8gdGV4dEJveCA6IExpbmVMYXlvdXRJbnRlcmZhY2U6OnRleHRCb3hlcyh0
ZXh0KSkgeworICAgICAgICBmb3IgKGF1dG8mIHRleHRCb3ggOiBsaW5lTGF5b3V0UHJvdmlkZXIu
dGV4dEJveFJhbmdlRm9yKHRleHQpKSB7CiAgICAgICAgICAgICB0cyA8PCBpbmRlbnQ7CiAgICAg
ICAgICAgICB3cml0ZVRleHRCb3godHMsIHRleHQsIHRleHRCb3gpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIu
Y3BwCmluZGV4IDAwZjAzODE2NzA4Li5kMjFkOTYyZGI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5jcHAKQEAgLTExMyw3
ICsxMTMsNyBAQCB1bnNpZ25lZCBSdW5SZXNvbHZlcjo6UnVuOjpsb2NhbEVuZCgpIGNvbnN0CiB9
CiAKIFJ1blJlc29sdmVyOjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgUnVuUmVzb2x2ZXImIHJl
c29sdmVyLCB1bnNpZ25lZCBydW5JbmRleCwgdW5zaWduZWQgbGluZUluZGV4KQotICAgIDogbV9y
ZXNvbHZlcihyZXNvbHZlcikKKyAgICA6IG1fcmVzb2x2ZXIoJnJlc29sdmVyKQogICAgICwgbV9y
dW5JbmRleChydW5JbmRleCkKICAgICAsIG1fbGluZUluZGV4KGxpbmVJbmRleCkKIHsKQEAgLTEy
OSw4ICsxMjksOCBAQCBSdW5SZXNvbHZlcjo6SXRlcmF0b3ImIFJ1blJlc29sdmVyOjpJdGVyYXRv
cjo6YWR2YW5jZSgpCiAKIFJ1blJlc29sdmVyOjpJdGVyYXRvciYgUnVuUmVzb2x2ZXI6Okl0ZXJh
dG9yOjphZHZhbmNlTGluZXModW5zaWduZWQgbGluZUNvdW50KQogewotICAgIHVuc2lnbmVkIHJ1
bkNvdW50ID0gbV9yZXNvbHZlci5tX2xheW91dC5ydW5Db3VudCgpOwotICAgIGlmIChydW5Db3Vu
dCA9PSBtX3Jlc29sdmVyLm1fbGF5b3V0LmxpbmVDb3VudCgpKSB7CisgICAgdW5zaWduZWQgcnVu
Q291bnQgPSByZXNvbHZlcigpLm1fbGF5b3V0LnJ1bkNvdW50KCk7CisgICAgaWYgKHJ1bkNvdW50
ID09IHJlc29sdmVyKCkubV9sYXlvdXQubGluZUNvdW50KCkpIHsKICAgICAgICAgbV9ydW5JbmRl
eCA9IHN0ZDo6bWluKHJ1bkNvdW50LCBtX3J1bkluZGV4ICsgbGluZUNvdW50KTsKICAgICAgICAg
bV9saW5lSW5kZXggPSBtX3J1bkluZGV4OwogICAgICAgICByZXR1cm4gKnRoaXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgKaW5k
ZXggNDU1OTI2MGYyYWQuLjZhYjcwMzE3MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oCkBAIC05NCwxMCArOTQsMTAgQEAg
cHVibGljOgogICAgICAgICB1bnNpZ25lZCBsaW5lSW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2xp
bmVJbmRleDsgfQogICAgICAgICBJdGVyYXRvciYgYWR2YW5jZSgpOwogICAgICAgICBJdGVyYXRv
ciYgYWR2YW5jZUxpbmVzKHVuc2lnbmVkKTsKLSAgICAgICAgY29uc3QgUnVuUmVzb2x2ZXImIHJl
c29sdmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlcjsgfQotICAgICAgICBib29sIGluUXVp
cmtzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZXIubV9pblF1aXJrc01vZGU7IH0KKyAg
ICAgICAgY29uc3QgUnVuUmVzb2x2ZXImIHJlc29sdmVyKCkgY29uc3QgeyByZXR1cm4gKm1fcmVz
b2x2ZXI7IH0KKyAgICAgICAgYm9vbCBpblF1aXJrc01vZGUoKSBjb25zdCB7IHJldHVybiByZXNv
bHZlcigpLm1faW5RdWlya3NNb2RlOyB9CiAKLSAgICAgICAgY29uc3QgUnVuUmVzb2x2ZXImIG1f
cmVzb2x2ZXI7CisgICAgICAgIGNvbnN0IFJ1blJlc29sdmVyKiBtX3Jlc29sdmVyOwogICAgICAg
ICB1bnNpZ25lZCBtX3J1bkluZGV4OwogICAgICAgICB1bnNpZ25lZCBtX2xpbmVJbmRleDsKICAg
ICB9OwpAQCAtMjM4LDcgKzIzOCw3IEBAIGlubGluZSBSdW5SZXNvbHZlcjo6SXRlcmF0b3ImIFJ1
blJlc29sdmVyOjpJdGVyYXRvcjo6b3BlcmF0b3ItLSgpCiAKIGlubGluZSBib29sIFJ1blJlc29s
dmVyOjpJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKCZtX3Jlc29sdmVyID09ICZvdGhlci5tX3Jlc29sdmVyKTsKKyAgICBBU1NF
UlQobV9yZXNvbHZlciA9PSBvdGhlci5tX3Jlc29sdmVyKTsKICAgICByZXR1cm4gbV9ydW5JbmRl
eCA9PSBvdGhlci5tX3J1bkluZGV4OwogfQogCkBAIC0yNTQsNyArMjU0LDcgQEAgaW5saW5lIFJ1
blJlc29sdmVyOjpSdW4gUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVyYXRvciooKSBjb25zdAog
CiBpbmxpbmUgY29uc3QgU2ltcGxlTGluZUxheW91dDo6UnVuJiBSdW5SZXNvbHZlcjo6SXRlcmF0
b3I6OnNpbXBsZVJ1bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVzb2x2ZXIubV9sYXlvdXQu
cnVuQXQobV9ydW5JbmRleCk7CisgICAgcmV0dXJuIHJlc29sdmVyKCkubV9sYXlvdXQucnVuQXQo
bV9ydW5JbmRleCk7CiB9CiAKIGlubGluZSBSdW5SZXNvbHZlcjo6SXRlcmF0b3IgUnVuUmVzb2x2
ZXI6OmJlZ2luKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAKaW5kZXgg
ZTQ0NWQ1NjEyNDMuLmZlYzNlZmQ4MDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9y
LmNwcApAQCAtMTAyLDYgKzEwMiw3IEBAIFRleHRGcmFnbWVudEl0ZXJhdG9yOjpUZXh0RnJhZ21l
bnQgVGV4dEZyYWdtZW50SXRlcmF0b3I6OmZpbmROZXh0VGV4dEZyYWdtZW50KGZsCiAgICAgQVNT
RVJUKHN0YXJ0UG9zaXRpb24gPD0gZW5kUG9zaXRpb24pOwogICAgIGlmIChzdGFydFBvc2l0aW9u
IDwgZW5kUG9zaXRpb24pIHsKICAgICAgICAgYm9vbCBtdWx0aXBsZVdoaXRlc3BhY2UgPSBzdGFy
dFBvc2l0aW9uICsgMSA8IGVuZFBvc2l0aW9uOworLy8gICAgICAgIGJvb2wgaXNTaW5nbGVUYWIg
PSAhbXVsdGlwbGVXaGl0ZXNwYWNlICYmIG1fY3VycmVudFNlZ21lbnQtPnRleHRbbV9jdXJyZW50
U2VnbWVudC0+dG9TZWdtZW50UG9zaXRpb24oc3RhcnRQb3NpdGlvbildID09ICdcdCc7CiAgICAg
ICAgIGJvb2wgaXNDb2xsYXBzZWQgPSBtdWx0aXBsZVdoaXRlc3BhY2UgJiYgbV9zdHlsZS5jb2xs
YXBzZVdoaXRlc3BhY2U7CiAgICAgICAgIG1fcG9zaXRpb24gPSBlbmRQb3NpdGlvbjsKICAgICAg
ICAgcmV0dXJuIFRleHRGcmFnbWVudChzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgd2lkdGgs
IFRleHRGcmFnbWVudDo6V2hpdGVzcGFjZSwgZW5kUG9zaXRpb24gPT0gc2VnbWVudEVuZFBvc2l0
aW9uLCBmYWxzZSwgaXNDb2xsYXBzZWQsIG1fc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZh
Y2VUZXh0Qm94ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91
dEludGVyZmFjZVRleHRCb3hlcy5jcHAKaW5kZXggZGFhODYzYjFjZGMuLjE4MGMwZWVjN2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50ZXJm
YWNlVGV4dEJveGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
TGF5b3V0SW50ZXJmYWNlVGV4dEJveGVzLmNwcApAQCAtMzUsNDYgKzM1LDQ2IEBAIG5hbWVzcGFj
ZSBMaW5lTGF5b3V0SW50ZXJmYWNlIHsKIAogRmxvYXRSZWN0IFRleHRCb3g6OnJlY3QoKSBjb25z
dAogewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgU2ltcGxlTGluZUxheW91dDo6UnVuUmVz
b2x2ZXI6Okl0ZXJhdG9yIHNpbXBsZUxpbmVJdGVyYXRvcikgewotICAgICAgICByZXR1cm4gKCpz
aW1wbGVMaW5lSXRlcmF0b3IpLnJlY3QoKTsKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRl
eHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRo
Lml0ZXJhdG9yKS5yZWN0KCk7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0
IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKICAgICAgICAgcmV0dXJuIGlubGluZVRl
eHRCb3gtPmZyYW1lUmVjdCgpOwogICAgIH07CiAKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbiht
X2l0ZXJhdG9yLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CisgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwog
fQogCiBGbG9hdFJlY3QgVGV4dEJveDo6bG9naWNhbFJlY3QoKSBjb25zdAogewotICAgIGF1dG8g
c2ltcGxlID0gW10oY29uc3QgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9y
IHNpbXBsZUxpbmVJdGVyYXRvcikgewotICAgICAgICByZXR1cm4gKCpzaW1wbGVMaW5lSXRlcmF0
b3IpLnJlY3QoKTsKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6
U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5yZWN0
KCk7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gq
IGlubGluZVRleHRCb3gpIHsKICAgICAgICAgcmV0dXJuIGlubGluZVRleHRCb3gtPmxvZ2ljYWxG
cmFtZVJlY3QoKTsKICAgICB9OwogCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9pdGVyYXRv
ci5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKIH0KIAogYm9v
bCBUZXh0Qm94OjpoYXNIeXBoZW4oKSBjb25zdAogewotICAgIGF1dG8gc2ltcGxlID0gW10oY29u
c3QgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIHNpbXBsZUxpbmVJdGVy
YXRvcikgewotICAgICAgICByZXR1cm4gKCpzaW1wbGVMaW5lSXRlcmF0b3IpLmhhc0h5cGhlbigp
OworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRo
JiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLmhhc0h5cGhlbigpOwog
ICAgIH07CiAKICAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxp
bmVUZXh0Qm94KSB7CiAgICAgICAgIHJldHVybiBpbmxpbmVUZXh0Qm94LT5oYXNIeXBoZW4oKTsK
ICAgICB9OwogCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9pdGVyYXRvci5tX3BhdGhWYXJp
YW50LCBzaW1wbGUsIGNvbXBsZXgpOworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9y
KCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKIH0KIAogYm9vbCBUZXh0Qm94Ojpp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNv
bnN0IFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvcikgeworICAgIGF1dG8g
c2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJikgewogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9OwogCkBAIC04MiwxMiArODIsMTIgQEAgYm9vbCBUZXh0Qm94
Ojppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGlubGluZVRl
eHRCb3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICB9OwogCi0gICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24obV9pdGVyYXRvci5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwor
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxl
LCBjb21wbGV4KTsKIH0KIAogYm9vbCBUZXh0Qm94OjpkaXJPdmVycmlkZSgpIGNvbnN0CiB7Ci0g
ICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6
SXRlcmF0b3IpIHsKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6
U2ltcGxlUGF0aCYpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07CiAKQEAgLTk1LDIw
ICs5NSw2NCBAQCBib29sIFRleHRCb3g6OmRpck92ZXJyaWRlKCkgY29uc3QKICAgICAgICAgcmV0
dXJuIGlubGluZVRleHRCb3gtPmRpck92ZXJyaWRlKCk7CiAgICAgfTsKIAotICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKG1faXRlcmF0b3IubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsK
KyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBs
ZSwgY29tcGxleCk7CiB9CiAKIFN0cmluZ1ZpZXcgVGV4dEJveDo6dGV4dCgpIGNvbnN0CiB7Ci0g
ICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6
SXRlcmF0b3Igc2ltcGxlTGluZUl0ZXJhdG9yKSB7Ci0gICAgICAgIHJldHVybiAoKnNpbXBsZUxp
bmVJdGVyYXRvcikudGV4dCgpOworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0
ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0
b3IpLnRleHQoKTsKICAgICB9OwogCiAgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5l
VGV4dEJveCogaW5saW5lVGV4dEJveCkgewogICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhpbmxp
bmVUZXh0Qm94LT5yZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKGlubGluZVRleHRCb3gtPnN0
YXJ0KCksIGlubGluZVRleHRCb3gtPmxlbigpKTsKICAgICB9OwogCi0gICAgcmV0dXJuIFdURjo6
c3dpdGNoT24obV9pdGVyYXRvci5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBj
b21wbGV4KTsKK30KKwordW5zaWduZWQgVGV4dEJveDo6bG9jYWxTdGFydE9mZnNldCgpIGNvbnN0
Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBh
dGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikubG9jYWxTdGFydCgp
OworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBp
bmxpbmVUZXh0Qm94KSB7CisgICAgICAgIHJldHVybiBpbmxpbmVUZXh0Qm94LT5zdGFydCgpOwor
ICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlh
bnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3Vuc2lnbmVkIFRleHRCb3g6OmxvY2FsRW5kT2Zm
c2V0KCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRv
cjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5s
b2NhbEVuZCgpOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVU
ZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7CisgICAgICAgIHJldHVybiBpbmxpbmVUZXh0Qm94LT5l
bmQoKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3Bh
dGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit1bnNpZ25lZCBUZXh0Qm94OjpsZW5n
dGgoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9y
OjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLmVu
ZCgpIC0gKCpwYXRoLml0ZXJhdG9yKS5zdGFydCgpOworICAgIH07CisKKyAgICBhdXRvIGNvbXBs
ZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7CisgICAgICAgIHJl
dHVybiBpbmxpbmVUZXh0Qm94LT5sZW4oKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCitp
bmxpbmUgY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94OjppdGVyYXRvcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFRleHRCb3hJdGVyYXRvciY+KCp0aGlzKTsK
IH0KIAogVGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IoY29uc3QgSW5saW5lVGV4dEJv
eCogaW5saW5lVGV4dEJveCkKQEAgLTExNiwxNSArMTYwLDE1IEBAIFRleHRCb3hJdGVyYXRvcjo6
VGV4dEJveEl0ZXJhdG9yKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpCiB7CiB9
CiAKLVRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OlJ1
blJlc29sdmVyOjpJdGVyYXRvciBzaW1wbGVMaW5lSXRlcmF0b3IpCi0gICAgOiBtX3BhdGhWYXJp
YW50KHNpbXBsZUxpbmVJdGVyYXRvcikKK1RleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9y
KFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBpdGVyYXRvciwgU2ltcGxl
TGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGVuZCkKKyAgICA6IG1fcGF0aFZhcmlh
bnQoVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoIHsgaXRlcmF0b3IsIGVuZCB9KQogewogfQog
CiBUZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0KCkKIHsKLSAg
ICBhdXRvIHNpbXBsZSA9IFtdKFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRv
ciYgc2ltcGxlTGluZUl0ZXJhdG9yKSB7Ci0gICAgICAgICsrc2ltcGxlTGluZUl0ZXJhdG9yOwor
ICAgIGF1dG8gc2ltcGxlID0gW10oVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7
CisgICAgICAgICsrcGF0aC5pdGVyYXRvcjsKICAgICB9OwogCiAgICAgYXV0byBjb21wbGV4ID0g
W10oY29uc3QgSW5saW5lVGV4dEJveComIGlubGluZVRleHRCb3gpIHsKQEAgLTE0MSw4ICsxODUs
OCBAQCBib29sIFRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0
b3ImIG90aGVyKSBjb25zdAogICAgIGlmIChtX3BhdGhWYXJpYW50LmluZGV4KCkgIT0gb3RoZXIu
bV9wYXRoVmFyaWFudC5pbmRleCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRv
IHNpbXBsZSA9IFsmXShjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0
b3Igc2ltcGxlTGluZUl0ZXJhdG9yKSB7Ci0gICAgICAgIHJldHVybiBzaW1wbGVMaW5lSXRlcmF0
b3IgPT0gV1RGOjpnZXQ8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yPihv
dGhlci5tX3BhdGhWYXJpYW50KTsKKyAgICBhdXRvIHNpbXBsZSA9IFsmXShjb25zdCBUZXh0Qm94
SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaXRlcmF0
b3IgPT0gV1RGOjpnZXQ8VGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoPihvdGhlci5tX3BhdGhW
YXJpYW50KS5pdGVyYXRvcjsKICAgICB9OwogCiAgICAgYXV0byBjb21wbGV4ID0gWyZdKGNvbnN0
IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKQEAgLTE1MiwzMiArMTk2LDQ4IEBAIGJv
b2wgVGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgc2ltcGxl
LCBjb21wbGV4KTsKIH0KIAotc3RhdGljIE9wdGlvbmFsPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJl
c29sdmVyPiBzaW1wbGVMaW5lUnVuUmVzb2x2ZXJGb3JUZXh0KGNvbnN0IFJlbmRlclRleHQmIHRl
eHQpCitib29sIFRleHRCb3hJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAogewotICAgIGlmICghdGV4
dC5zaW1wbGVMaW5lTGF5b3V0KCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAg
cmV0dXJuIFNpbXBsZUxpbmVMYXlvdXQ6OnJ1blJlc29sdmVyKGRvd25jYXN0PGNvbnN0IFJlbmRl
ckJsb2NrRmxvdz4oKnRleHQucGFyZW50KCkpLCAqdGV4dC5zaW1wbGVMaW5lTGF5b3V0KCkpOwor
ICAgIGF1dG8gc2ltcGxlID0gWyZdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYg
cGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pdGVyYXRvciA9PSBwYXRoLmVuZDsKKyAgICB9
OworCisgICAgYXV0byBjb21wbGV4ID0gWyZdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRl
eHRCb3gpIHsKKyAgICAgICAgcmV0dXJuICFpbmxpbmVUZXh0Qm94OworICAgIH07CisKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwogfQog
Ci1zdGF0aWMgYXV0byByYW5nZUZvclRleHQoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgT3B0aW9u
YWw8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI+JiBzaW1wbGVMaW5lUnVuUmVzb2x2ZXIp
CitQcm92aWRlcjo6UHJvdmlkZXIoKSA9IGRlZmF1bHQ7CitQcm92aWRlcjo6flByb3ZpZGVyKCkg
PSBkZWZhdWx0OworCitUZXh0Qm94SXRlcmF0b3IgUHJvdmlkZXI6OmZpcnN0VGV4dEJveEZvcihj
b25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogewotICAgIGlmIChzaW1wbGVMaW5lUnVuUmVzb2x2ZXIp
IHsKLSAgICAgICAgYXV0byByYW5nZSA9IHNpbXBsZUxpbmVSdW5SZXNvbHZlci0+cmFuZ2VGb3JS
ZW5kZXJlcih0ZXh0KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bWFrZUl0ZXJhdG9yUmFuZ2UoVGV4
dEJveEl0ZXJhdG9yKHJhbmdlLmJlZ2luKCkpLCBUZXh0Qm94SXRlcmF0b3IocmFuZ2UuZW5kKCkp
KTsKKyAgICBpZiAoYXV0byogc2ltcGxlTGluZUxheW91dCA9IHRleHQuc2ltcGxlTGluZUxheW91
dCgpKSB7CisgICAgICAgIGF1dG8mIHBhcmVudCA9IGRvd25jYXN0PGNvbnN0IFJlbmRlckJsb2Nr
Rmxvdz4oKnRleHQucGFyZW50KCkpOworICAgICAgICBhdXRvJiByZXNvbHZlciA9IG1fc2ltcGxl
TGluZUxheW91dFJlc29sdmVycy5lbnN1cmUoJnBhcmVudCwgWyZdIHsKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPihwYXJlbnQsICpz
aW1wbGVMaW5lTGF5b3V0KTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgICAg
IGF1dG8gcmFuZ2UgPSByZXNvbHZlci0+cmFuZ2VGb3JSZW5kZXJlcih0ZXh0KTsKKyAgICAgICAg
cmV0dXJuIHsgcmFuZ2UuYmVnaW4oKSwgcmFuZ2UuZW5kKCkgfTsKICAgICB9Ci0gICAgcmV0dXJu
IFdURjo6bWFrZUl0ZXJhdG9yUmFuZ2UoVGV4dEJveEl0ZXJhdG9yKHRleHQuZmlyc3RUZXh0Qm94
KCkpLCBUZXh0Qm94SXRlcmF0b3IobnVsbHB0cikpOworCisgICAgcmV0dXJuIFRleHRCb3hJdGVy
YXRvciB7IHRleHQuZmlyc3RUZXh0Qm94KCkgfTsKIH0KIAotVGV4dEJveFJhbmdlOjpUZXh0Qm94
UmFuZ2UoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKLSAgICA6IG1fc2ltcGxlTGluZVJ1blJlc29s
dmVyKHNpbXBsZUxpbmVSdW5SZXNvbHZlckZvclRleHQodGV4dCkpCi0gICAgLCBtX3JhbmdlKHJh
bmdlRm9yVGV4dCh0ZXh0LCBtX3NpbXBsZUxpbmVSdW5SZXNvbHZlcikpCitUZXh0Qm94UmFuZ2Ug
UHJvdmlkZXI6OnRleHRCb3hSYW5nZUZvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogeworICAg
IHJldHVybiB7IGZpcnN0VGV4dEJveEZvcih0ZXh0KSB9OwogfQogCi1UZXh0Qm94UmFuZ2UgdGV4
dEJveGVzKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCitUZXh0Qm94SXRlcmF0b3IgUHJvdmlkZXI6
Oml0ZXJhdG9yRm9ySW5saW5lVGV4dEJveChjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0
Qm94KQogewotICAgIHJldHVybiB7IHRleHQgfTsKKyAgICByZXR1cm4gVGV4dEJveEl0ZXJhdG9y
IHsgaW5saW5lVGV4dEJveCB9OwogfQogCisKKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5o
CmluZGV4IDQ2NGMyMmE3M2ZiLi4yZDdiZDJlYjgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMu
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
U2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgpAQCAtMzQsNiArMzUsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbmxpbmVUZXh0Qm94OworY2xhc3MgUHJvdmlkZXI7CiBj
bGFzcyBSZW5kZXJUZXh0OwogCiBuYW1lc3BhY2UgTGluZUxheW91dEludGVyZmFjZSB7CkBAIC00
MSwxMiArNDMsMTAgQEAgbmFtZXNwYWNlIExpbmVMYXlvdXRJbnRlcmZhY2UgewogY2xhc3MgVGV4
dEJveENvbnRleHQ7CiBjbGFzcyBUZXh0Qm94SXRlcmF0b3I7CiAKK3N0cnVjdCBFbmRJdGVyYXRv
ciB7IH07CisKIGNsYXNzIFRleHRCb3ggewogcHVibGljOgotICAgIFRleHRCb3goY29uc3QgVGV4
dEJveEl0ZXJhdG9yJiBpdGVyYXRvcikKLSAgICAgICAgOiBtX2l0ZXJhdG9yKGl0ZXJhdG9yKQot
ICAgIHsgfQotCiAgICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdDsKICAgICBGbG9hdFJlY3QgbG9n
aWNhbFJlY3QoKSBjb25zdDsKIApAQCAtNTYsNDUgKzU2LDg1IEBAIHB1YmxpYzoKIAogICAgIFN0
cmluZ1ZpZXcgdGV4dCgpIGNvbnN0OwogCisgICAgLy8gVGhlc2Ugb2Zmc2V0cyBhcmUgcmVsYXRp
dmUgdG8gdGhlIHRleHQgcmVuZGVyZXIgKG5vdCBmbG93KS4KKyAgICB1bnNpZ25lZCBsb2NhbFN0
YXJ0T2Zmc2V0KCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9jYWxFbmRPZmZzZXQoKSBjb25zdDsK
KyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIFRleHRCb3go
KSA9IGRlZmF1bHQ7CisgICAgVGV4dEJveChjb25zdCBUZXh0Qm94JikgPSBkZWZhdWx0OworICAg
IFRleHRCb3goVGV4dEJveCYmKSA9IGRlZmF1bHQ7CisgICAgVGV4dEJveCYgb3BlcmF0b3I9KGNv
bnN0IFRleHRCb3gmKSA9IGRlZmF1bHQ7CisgICAgVGV4dEJveCYgb3BlcmF0b3I9KFRleHRCb3gm
JikgPSBkZWZhdWx0OworCiBwcml2YXRlOgotICAgIGNvbnN0IFRleHRCb3hJdGVyYXRvciYgbV9p
dGVyYXRvcjsKKyAgICBjb25zdCBUZXh0Qm94SXRlcmF0b3ImIGl0ZXJhdG9yKCkgY29uc3Q7CiB9
OwogCi1jbGFzcyBUZXh0Qm94SXRlcmF0b3IgeworY2xhc3MgVGV4dEJveEl0ZXJhdG9yIDogcHJp
dmF0ZSBUZXh0Qm94IHsKIHB1YmxpYzoKLSAgICBUZXh0Qm94SXRlcmF0b3IoY29uc3QgSW5saW5l
VGV4dEJveCopOwotICAgIFRleHRCb3hJdGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNv
bHZlcjo6SXRlcmF0b3IpOworICAgIFRleHRCb3hJdGVyYXRvcigpIDogbV9wYXRoVmFyaWFudChu
dWxscHRyKSB7IH07CiAKICAgICBUZXh0Qm94SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVy
biB0cmF2ZXJzZU5leHQoKTsgfQogCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuICFhdEVuZCgpOyB9CisKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dEJv
eEl0ZXJhdG9yJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRCb3hJdGVy
YXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKLSAgICBU
ZXh0Qm94IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIHsgKnRoaXMgfTsgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShFbmRJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gYXRFbmQoKTsgfQorICAgIGJv
b2wgb3BlcmF0b3IhPShFbmRJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KKwor
ICAgIGNvbnN0IFRleHRCb3gmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgY29uc3QgVGV4dEJveCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KKwor
ICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVGV4
dEJveDsKKyAgICBmcmllbmQgY2xhc3MgUHJvdmlkZXI7CisKKyAgICBleHBsaWNpdCBUZXh0Qm94
SXRlcmF0b3IoY29uc3QgSW5saW5lVGV4dEJveCopOworICAgIFRleHRCb3hJdGVyYXRvcihTaW1w
bGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1
blJlc29sdmVyOjpJdGVyYXRvciBlbmQpOwogCiAgICAgVGV4dEJveEl0ZXJhdG9yJiB0cmF2ZXJz
ZU5leHQoKTsKIAotICAgIFZhcmlhbnQ8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0
ZXJhdG9yLCBjb25zdCBJbmxpbmVUZXh0Qm94Kj4gbV9wYXRoVmFyaWFudDsKKyAgICBzdHJ1Y3Qg
U2ltcGxlUGF0aCB7CisgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVy
YXRvciBpdGVyYXRvcjsKKyAgICAgICAgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0
ZXJhdG9yIGVuZDsKKyAgICB9OworICAgIFZhcmlhbnQ8U2ltcGxlUGF0aCwgY29uc3QgSW5saW5l
VGV4dEJveCo+IG1fcGF0aFZhcmlhbnQ7CiB9OwogCiBjbGFzcyBUZXh0Qm94UmFuZ2UgewogcHVi
bGljOgotICAgIFRleHRCb3hSYW5nZShjb25zdCBSZW5kZXJUZXh0Jik7CisgICAgVGV4dEJveFJh
bmdlKFRleHRCb3hJdGVyYXRvciBiZWdpbikKKyAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQorICAg
IHsKKyAgICB9CiAKLSAgICBUZXh0Qm94SXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBt
X3JhbmdlLmJlZ2luKCk7IH0KLSAgICBUZXh0Qm94SXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9yYW5nZS5lbmQoKTsgfQorICAgIFRleHRCb3hJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fYmVnaW47IH0KKyAgICBFbmRJdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiB7
IH07IH0KIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVGV4dEJveEl0ZXJhdG9yOwotCi0g
ICAgT3B0aW9uYWw8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI+IG1fc2ltcGxlTGluZVJ1
blJlc29sdmVyOwotICAgIFdURjo6SXRlcmF0b3JSYW5nZTxUZXh0Qm94SXRlcmF0b3I+IG1fcmFu
Z2U7CisgICAgVGV4dEJveEl0ZXJhdG9yIG1fYmVnaW47CiB9OwogCi1UZXh0Qm94UmFuZ2UgdGV4
dEJveGVzKGNvbnN0IFJlbmRlclRleHQmKTsKK2NsYXNzIFByb3ZpZGVyIHsKK3B1YmxpYzoKKyAg
ICBQcm92aWRlcigpOworICAgIH5Qcm92aWRlcigpOworCisgICAgVGV4dEJveEl0ZXJhdG9yIGZp
cnN0VGV4dEJveEZvcihjb25zdCBSZW5kZXJUZXh0Jik7CisgICAgVGV4dEJveFJhbmdlIHRleHRC
b3hSYW5nZUZvcihjb25zdCBSZW5kZXJUZXh0Jik7CisKKyAgICAvLyBGSVhNRTogUmVtb3ZlLgor
ICAgIFRleHRCb3hJdGVyYXRvciBpdGVyYXRvckZvcklubGluZVRleHRCb3goY29uc3QgSW5saW5l
VGV4dEJveCopOworCitwcml2YXRlOgorICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyQmxvY2tGbG93
Kiwgc3RkOjp1bmlxdWVfcHRyPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPj4gbV9zaW1w
bGVMaW5lTGF5b3V0UmVzb2x2ZXJzOworfTsKIAogfQogfQo=
</data>
<flag name="review"
          id="394441"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378799</attachid>
            <date>2019-09-14 08:58:04 -0700</date>
            <delta_ts>2019-09-16 03:50:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>lineapi-textiterator-5.patch</filename>
            <type>text/plain</type>
            <size>58828</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNjVmMGRhZmZjYi4uMzcxOWVjMmE1MzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAor
MjAxOS0wOS0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
RWxpbWluYXRlIHNlcGFyYXRlIHNpbXBsZSBsaW5lIGxheW91dCBwYXRoIGZyb20gVGV4dEl0ZXJh
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3
NjAKKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBzaW1wbGUgYW5kIGNvbXBsZXggbGluZSBsYXlvdXQgcGF0aCByZXN1bHRzIGZy
b20gVGV4dEl0ZXJhdG9yIG1hdGNoLCBjYXVzaW5nIHNvbWUgd2hpdGVzcGFjZSBjaGFuZ2VzLgor
CisgICAgICAgICogYW5pbWF0aW9ucy9saW5laGVpZ2h0LWFuaW1hdGlvbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25zL3dpZHRoLXVzaW5nLWVtcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogY29tcG9zaXRpbmcvc2hhcmVkLWJhY2tpbmcvb3ZlcmZsb3ctc2Nyb2xs
L2Fic29sdXRlLWluLXN0YWNraW5nLXJlbGF0aXZlLWluLXNjcm9sbGVyLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLWRvZXMtbm90
LXNpemUtcHJvcGVybHktYWJzb2x1dGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZl
bnRzL3dpbmRvdy1ldmVudHMtYnViYmxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2
ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZTItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
dG9rZW5pemVyL3NjcmlwdF9leHRyYV9jbG9zZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogbGVn
YWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy9saW5laGVpZ2h0LWFuaW1hdGlvbi1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy9z
aW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzY3Jv
bGxpbmdjb29yZGluYXRvci9zY3JvbGxpbmctdHJlZS9uZXN0ZWQtYWJzb2x1dGUtaW4tb3ZlcmZs
b3ctZXhwZWN0ZWQudHh0OgorCiAyMDE5LTA5LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiAhcmVuZGVyZXIoKSBpbiAgV2Vi
Q29yZTo6VGV4dDo6flRleHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbGlu
ZWhlaWdodC1hbmltYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9s
aW5laGVpZ2h0LWFuaW1hdGlvbi1leHBlY3RlZC50eHQKaW5kZXggMzkyMzZiMzQwZDQuLjQxNzJh
OGM1NmUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2xpbmVoZWlnaHQtYW5p
bWF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2xpbmVoZWln
aHQtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKLVRoaXMgdGVzdCBwZXJm
b3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIGxpbmUtaGVpZ2h0IHByb3BlcnR5LiBJdCB0ZXN0cyB3
aGV0aGVyIG9yIG5vdCB3ZSBhcmUgcHJvcGVybHkgZ2V0dGluZyB0aGUgZm9udC1zaXplLkhlcmUg
aXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUg
aXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUg
aXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUg
aXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuCitUaGlz
IHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSBsaW5lLWhlaWdodCBwcm9wZXJ0eS4g
SXQgdGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJlIHByb3Blcmx5IGdldHRpbmcgdGhlIGZvbnQt
c2l6ZS4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUg
dGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUg
dGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUg
dGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUg
dGV4dC4KIFBBU1MgLSAibGluZUhlaWdodCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQg
MC4xcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxMAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVj
dGVkLnR4dAppbmRleCBhYzViZTMyYjcyMC4uZDllODcyMmY0N2YgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNm
b3JtLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBh
bmltYXRpb24gb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eS4gSXQgYW5pbWF0ZXMgb3ZlciAxMCBz
ZWNvbmRzLiBJdCB0YWtlcyAzIHNuYXBzaG90cyBhbmQgZXhwZWN0cyBlYWNoIHJlc3VsdCB0byBi
ZSB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2UuUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3Bl
cnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjMw
OTAxNywwLjk1MTA1NworVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgdHJh
bnNmb3JtIHByb3BlcnR5LiBJdCBhbmltYXRlcyBvdmVyIDEwIHNlY29uZHMuIEl0IHRha2VzIDMg
c25hcHNob3RzIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBhIHNwZWNpZmll
ZCByYW5nZS4gUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgZWxl
bWVudCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjMwOTAxNywwLjk1MTA1NwogUEFT
UyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MiIgZWxlbWVudCBhdCAycyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjMwOTAxNywwLjk1MTA1NwogUEFTUyAtICJ3ZWJraXRU
cmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgYW5kICJib3gyIiBlbGVtZW50cyBhdCAycyBh
cmUgY2xvc2UgZW5vdWdoIHRvIGVhY2ggb3RoZXIKIFBBU1MgLSAid2Via2l0VHJhbnNmb3JtIiBw
cm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
LTEsMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy93aWR0aC11c2luZy1lbXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy93aWR0aC11c2luZy1lbXMtZXhw
ZWN0ZWQudHh0CmluZGV4IGRmYjczN2Q0ZDk2Li5iY2Y2MTkxMmUwMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy93aWR0aC11c2luZy1lbXMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMvd2lkdGgtdXNpbmctZW1zLWV4cGVjdGVkLnR4dApAQCAtMSwz
ICsxLDMgQEAKLVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIHdpZHRoIHBy
b3BlcnR5IHVzaW5nICdlbScgdW5pdHMuIEl0IHRlc3RzIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBw
cm9wZXJseSBnZXR0aW5nIHRoZSBkZWZhdWx0IGZvbnQtc2l6ZS5IZXJlIGlzIHNvbWUgdGV4dC4g
SGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4g
SGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LgorVGhpcyB0ZXN0IHBlcmZvcm1z
IGFuIGFuaW1hdGlvbiBvZiB0aGUgd2lkdGggcHJvcGVydHkgdXNpbmcgJ2VtJyB1bml0cy4gSXQg
dGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJlIHByb3Blcmx5IGdldHRpbmcgdGhlIGRlZmF1bHQg
Zm9udC1zaXplLiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LgogUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQg
MC4zMzNzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9zaGFyZWQtYmFja2luZy9vdmVyZmxvdy1zY3JvbGwvYWJzb2x1dGUt
aW4tc3RhY2tpbmctcmVsYXRpdmUtaW4tc2Nyb2xsZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvc2hhcmVkLWJhY2tpbmcvb3ZlcmZsb3ctc2Nyb2xsL2Fic29sdXRlLWlu
LXN0YWNraW5nLXJlbGF0aXZlLWluLXNjcm9sbGVyLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlMjkw
OWZiZS4uMDI4ZWE4MmNiNmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3No
YXJlZC1iYWNraW5nL292ZXJmbG93LXNjcm9sbC9hYnNvbHV0ZS1pbi1zdGFja2luZy1yZWxhdGl2
ZS1pbi1zY3JvbGxlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
c2hhcmVkLWJhY2tpbmcvb3ZlcmZsb3ctc2Nyb2xsL2Fic29sdXRlLWluLXN0YWNraW5nLXJlbGF0
aXZlLWluLXNjcm9sbGVyLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLXJlbGF0aXZlYWJz
b2x1dGUKK3JlbGF0aXZlIGFic29sdXRlCiAoR3JhcGhpY3NMYXllcgogICAoYW5jaG9yIDAuMDAg
MC4wMCkKICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci1kb2VzLW5vdC1zaXplLXByb3Bl
cmx5LWFic29sdXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9iYWNr
ZHJvcC9iYWNrZHJvcC1maWx0ZXItZG9lcy1ub3Qtc2l6ZS1wcm9wZXJseS1hYnNvbHV0ZS1leHBl
Y3RlZC50eHQKaW5kZXggNjg0ZDYxNjdiYWUuLjNjZjBhZmEyMzc0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9jc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLWRvZXMtbm90LXNp
emUtcHJvcGVybHktYWJzb2x1dGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItZG9lcy1ub3Qtc2l6ZS1wcm9wZXJseS1h
YnNvbHV0ZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1mb29mb29iYXIKK2ZvbyBmb29i
YXIKIChHcmFwaGljc0xheWVyCiAgIChhbmNob3IgMC4wMCAwLjAwKQogICAoYm91bmRzIDgwMC4w
MCA2MDAuMDApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZl
bnRzLWJ1YmJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ct
ZXZlbnRzLWJ1YmJsZS1leHBlY3RlZC50eHQKaW5kZXggZWMwZDEzMDZhYjYuLmY4ODA1NjUzZDA5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJs
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LWV2ZW50
cy1idWJibGUtZXhwZWN0ZWQudHh0CkBAIC0xICsxIEBACi1UZXN0IHRoYXQgc3RvcFByb3BhZ2F0
aW9uKCkgd2lsbCBub3QgYWxsb3cgd2luZG93IGV2ZW50cyB0byBidWJibGUuIENsaWNraW5nIG9u
IHRoaXMgc2hvdWxkIG5vdCBmaXJlIHdpbmRvdy5vbmNsaWNrLiBUaGlzIG1hdGNoZXMgb3VyIG9s
ZCBiZWhhdmlvciBhbmQgRmlyZWZveCBiZWhhdmlvci5zdG9wUHJvcGFnYXRpb24gY2FsbGVkLiBU
ZXN0IFBhc3NlZC4KK1Rlc3QgdGhhdCBzdG9wUHJvcGFnYXRpb24oKSB3aWxsIG5vdCBhbGxvdyB3
aW5kb3cgZXZlbnRzIHRvIGJ1YmJsZS4gQ2xpY2tpbmcgb24gdGhpcyBzaG91bGQgbm90IGZpcmUg
d2luZG93Lm9uY2xpY2suIFRoaXMgbWF0Y2hlcyBvdXIgb2xkIGJlaGF2aW9yIGFuZCBGaXJlZm94
IGJlaGF2aW9yLiBzdG9wUHJvcGFnYXRpb24gY2FsbGVkLiBUZXN0IFBhc3NlZC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1ldmVudHMtYnViYmxlMi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZTItZXhw
ZWN0ZWQudHh0CmluZGV4IDk4Mjk0ZTMzYzVkLi4zYTNlMzc2NTkwOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LWV2ZW50cy1idWJibGUyLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZTItZXhwZWN0
ZWQudHh0CkBAIC0xICsxIEBACi1UZXN0cyB0aGF0IHByZXZlbnREZWZhdWx0KCkgd2lsbCBzdGls
bCBhbGxvdyB3aW5kb3cgZXZlbnRzIHRvIGJ1YmJsZS4gQ2xpY2tpbmcgaGVyZSBzaG91bGQgZmly
ZSB3aW5kb3cub25jbGljay4gVGhpcyB3aWxsIG1hdGNoIEZpcmVmb3ggYmVoYXZpb3IuV2luZG93
Lm9uQ2xpY2sgZmlyZWQuIFRlc3QgUGFzc2VkLgorVGVzdHMgdGhhdCBwcmV2ZW50RGVmYXVsdCgp
IHdpbGwgc3RpbGwgYWxsb3cgd2luZG93IGV2ZW50cyB0byBidWJibGUuIENsaWNraW5nIGhlcmUg
c2hvdWxkIGZpcmUgd2luZG93Lm9uY2xpY2suIFRoaXMgd2lsbCBtYXRjaCBGaXJlZm94IGJlaGF2
aW9yLiBXaW5kb3cub25DbGljayBmaXJlZC4gVGVzdCBQYXNzZWQuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Rva2VuaXplci9zY3JpcHRfZXh0cmFfY2xvc2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC90b2tlbml6ZXIvc2NyaXB0X2V4dHJhX2Nsb3NlLWV4cGVjdGVkLnR4
dAppbmRleCA0MmZhOGQ4M2Q4Yy4uNzllYjlhNjI0NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvdG9rZW5pemVyL3NjcmlwdF9leHRyYV9jbG9zZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC90b2tlbml6ZXIvc2NyaXB0X2V4dHJhX2Nsb3NlLWV4cGVjdGVkLnR4dApA
QCAtMSArMSBAQAotVEVTVC4uLiBQQVNTRUQuIFRoaXMgdGV4dCBzaG91bGQgc2hvdyB1cC4KK1RF
U1QuLi4JUEFTU0VELiBUaGlzIHRleHQgc2hvdWxkIHNob3cgdXAuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwppbmRleCBhMjdjZjcwMjRmZC4uM2NiYzkyYWQxNGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA5LTE0ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBFbGltaW5hdGUgc2VwYXJhdGUgc2lt
cGxlIGxpbmUgbGF5b3V0IHBhdGggZnJvbSBUZXh0SXRlcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTc2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvYWxpZ25tZW50L2dyaWQtcm93LWF4aXMtYWxpZ25tZW50LXBvc2l0aW9uZWQtaXRlbXMt
MDE1LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1n
cmlkL2FsaWdubWVudC9ncmlkLXJvdy1heGlzLWFsaWdubWVudC1wb3NpdGlvbmVkLWl0ZW1zLTAx
Ni1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2lubmVyVGV4dC9n
ZXR0ZXItZXhwZWN0ZWQudHh0OgorCisgICAgICAgIFR3byAnXHQnIHN1YnRlc3RzIGZsaXAgdG8g
RkFJTCBiZWNhdXNlIHRoaXMgd2FzIG9ubHkgc3VwcG9ydGVkIG9uIFRleHRJdGVyYXRvciBzaW1w
bGUgbGluZSBsYXlvdXQgcGF0aC4KKyAgICAgICAgVGhpcyBjYW4gbm93IGJlIGZpeGVkIGNvcnJl
Y3RseSBmb3IgYm90aCBwYXRocy4KKwogMjAxOS0wOS0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgV1BUIGltcG9ydGVyIHNob3VsZCBjaGVjayBNRVRBIGds
b2JhbCB0YWcgaW4gLmFueS5qcyBmaWxlcyB0byBnZW5lcmF0ZSB0aGUgdmFsaWQgLmh0bWwgc3R1
YiBmaWxlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvYWxpZ25tZW50L2dyaWQtcm93LWF4aXMtYWxpZ25tZW50LXBv
c2l0aW9uZWQtaXRlbXMtMDE1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2FsaWdubWVudC9ncmlkLXJvdy1heGlz
LWFsaWdubWVudC1wb3NpdGlvbmVkLWl0ZW1zLTAxNS1leHBlY3RlZC50eHQKaW5kZXggZGRjOTFl
ZTQ1ZDYuLmNmY2M4MDA3YmRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hbGlnbm1lbnQvZ3JpZC1yb3ctYXhpcy1h
bGlnbm1lbnQtcG9zaXRpb25lZC1pdGVtcy0wMTUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2FsaWdubWVu
dC9ncmlkLXJvdy1heGlzLWFsaWdubWVudC1wb3NpdGlvbmVkLWl0ZW1zLTAxNS1leHBlY3RlZC50
eHQKQEAgLTMsNyArMyw3IEBAIFggWFhYIFgKIFhYIFhYWFggWFggWFhYIFgKIFggWFhYCiBYCi1Y
WCBYWFhYIFhYIFhYWCBYCitYWCBYWFggWCBYWCBYWFggWAogWCBYWFggWAogWFggWFhYWCBYWCBY
WFggWAogWCBYWFgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2FsaWdubWVudC9ncmlkLXJvdy1heGlzLWFsaWdubWVu
dC1wb3NpdGlvbmVkLWl0ZW1zLTAxNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hbGlnbm1lbnQvZ3JpZC1yb3ct
YXhpcy1hbGlnbm1lbnQtcG9zaXRpb25lZC1pdGVtcy0wMTYtZXhwZWN0ZWQudHh0CmluZGV4IGRk
YzkxZWU0NWQ2Li5jZmNjODAwN2JkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvYWxpZ25tZW50L2dyaWQtcm93LWF4
aXMtYWxpZ25tZW50LXBvc2l0aW9uZWQtaXRlbXMtMDE2LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hbGln
bm1lbnQvZ3JpZC1yb3ctYXhpcy1hbGlnbm1lbnQtcG9zaXRpb25lZC1pdGVtcy0wMTYtZXhwZWN0
ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBYIFhYWCBYCiBYWCBYWFhYIFhYIFhYWCBYCiBYIFhYWAog
WAotWFggWFhYWCBYWCBYWFggWAorWFggWFhYIFggWFggWFhYIFgKIFggWFhYIFgKIFhYIFhYWFgg
WFggWFhYIFgKIFggWFhYCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2lubmVyVGV4dC9nZXR0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9pbm5lclRleHQvZ2V0dGVyLWV4cGVj
dGVkLnR4dAppbmRleCAwNDZkNmY1MGEyZi4uZDA3ZmZhZTdjMmEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaW5uZXJUZXh0L2dldHRlci1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9pbm5lclRleHQvZ2V0dGVyLWV4cGVjdGVkLnR4dApAQCAtNyw3ICs3LDcgQEAgUEFTUyBU
cmFpbGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQgKCI8ZGl2PmFiYyAiKQogUEFTUyBJbnRlcm5hbCB3
aGl0ZXNwYWNlIGNvbXByZXNzZWQgKCI8ZGl2PmFiYyAgZGVmIikgCiBQQVNTIFxuIGNvbnZlcnRl
ZCB0byBzcGFjZSAoIjxkaXY+YWJjXG5kZWYiKSAKIFBBU1MgXHIgY29udmVydGVkIHRvIHNwYWNl
ICgiPGRpdj5hYmNccmRlZiIpIAotUEFTUyBcdCBjb252ZXJ0ZWQgdG8gc3BhY2UgKCI8ZGl2PmFi
Y1x0ZGVmIikgCitGQUlMIFx0IGNvbnZlcnRlZCB0byBzcGFjZSAoIjxkaXY+YWJjXHRkZWYiKSBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYWJjIGRlZiIgYnV0IGdvdCAiYWJjXHRkZWYiCiBGQUlM
IFRyYWlsaW5nIHdoaXRlc3BhY2UgYmVmb3JlIGhhcmQgbGluZSBicmVhayByZW1vdmVkICgiPGRp
dj5hYmMgPGJyPmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhYmNcbmRlZiIgYnV0IGdv
dCAiYWJjIFxuZGVmIgogUEFTUyBMZWFkaW5nIHdoaXRlc3BhY2UgcHJlc2VydmVkICgiPHByZT4g
YWJjIikgCiBQQVNTIFRyYWlsaW5nIHdoaXRlc3BhY2UgcHJlc2VydmVkICgiPHByZT5hYmMgIikg
CkBAIC0zMSw5ICszMSw5IEBAIFBBU1MgXHQgcHJlc2VydmVkICgiPHNwYW4gc3R5bGU9J3doaXRl
LXNwYWNlOnByZSc+YWJjXHRkZWYiKQogUEFTUyBMZWFkaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZCAo
IjxkaXYgc3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz4gYWJjIikgCiBQQVNTIFRyYWlsaW5n
IHdoaXRlc3BhY2UgcmVtb3ZlZCAoIjxkaXYgc3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5h
YmMgIikgCiBQQVNTIEludGVybmFsIHdoaXRlc3BhY2UgY29sbGFwc2VkICgiPGRpdiBzdHlsZT0n
d2hpdGUtc3BhY2U6cHJlLWxpbmUnPmFiYyAgZGVmIikgCi1GQUlMIFxuIHByZXNlcnZlZCAoIjxk
aXYgc3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5hYmNcbmRlZiIpIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJhYmNcbmRlZiIgYnV0IGdvdCAiYWJjZGVmIgotRkFJTCBcciBjb252ZXJ0ZWQg
dG8gbmV3bGluZSAoIjxkaXYgc3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5hYmNccmRlZiIp
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhYmNcbmRlZiIgYnV0IGdvdCAiYWJjZGVmIgotUEFT
UyBcdCBjb252ZXJ0ZWQgdG8gc3BhY2UgKCI8ZGl2IHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUtbGlu
ZSc+YWJjXHRkZWYiKSAKK0ZBSUwgXG4gcHJlc2VydmVkICgiPGRpdiBzdHlsZT0nd2hpdGUtc3Bh
Y2U6cHJlLWxpbmUnPmFiY1xuZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiY1xuZGVm
IiBidXQgZ290ICJhYmMgZGVmIgorRkFJTCBcciBjb252ZXJ0ZWQgdG8gbmV3bGluZSAoIjxkaXYg
c3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5hYmNccmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJhYmNcbmRlZiIgYnV0IGdvdCAiYWJjIGRlZiIKK0ZBSUwgXHQgY29udmVydGVkIHRv
IHNwYWNlICgiPGRpdiBzdHlsZT0nd2hpdGUtc3BhY2U6cHJlLWxpbmUnPmFiY1x0ZGVmIikgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiYyBkZWYiIGJ1dCBnb3QgImFiY1x0ZGVmIgogUEFTUyBX
aGl0ZXNwYWNlIGNvbGxhcHNlcyBhY3Jvc3MgZWxlbWVudCBib3VuZGFyaWVzICgiPGRpdj48c3Bh
bj5hYmMgPC9zcGFuPiBkZWYiKSAKIFBBU1MgV2hpdGVzcGFjZSBjb2xsYXBzZXMgYWNyb3NzIGVs
ZW1lbnQgYm91bmRhcmllcyAoIjxkaXY+PHNwYW4+YWJjIDwvc3Bhbj48c3Bhbj48L3NwYW4+IGRl
ZiIpIAogRkFJTCBXaGl0ZXNwYWNlIGNvbGxhcHNlcyBhY3Jvc3MgZWxlbWVudCBib3VuZGFyaWVz
ICgiPGRpdj48c3Bhbj5hYmMgPC9zcGFuPjxzcGFuIHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUnPjwv
c3Bhbj4gZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiYyBkZWYiIGJ1dCBnb3QgImFi
YyAgZGVmIgpAQCAtMTM1LDcgKzEzNSw3IEBAIEZBSUwgT25lIGJsYW5rIGxpbmUgYmV0d2VlbiA8
cD5zLCBpZ25vcmluZyBlbXB0eSA8cD5zICgiPGRpdj48cD5hYmM8cD48L3A+PHA+PC9wCiBGQUlM
IEludmlzaWJsZSA8cD4gZG9lc24ndCBpbmR1Y2UgZXh0cmEgbGluZSBicmVha3MgKCI8ZGl2IHN0
eWxlPSd2aXNpYmlsaXR5OmhpZGRlbic+PHA+PHNwYW4gc3R5bGU9J3Zpc2liaWxpdHk6dmlzaWJs
ZSc+YWJjPC9zcGFuPjwvcD5cbjxkaXYgc3R5bGU9J3Zpc2liaWxpdHk6dmlzaWJsZSc+ZGVmPC9k
aXY+IikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiY1xuZGVmIiBidXQgZ290ICJhYmNcblxu
ZGVmXG4iCiBGQUlMIE5vIGJsYW5rIGxpbmVzIGFyb3VuZCA8ZGl2PiB3aXRoIG1hcmdpbiAoIjxk
aXY+YWJjPGRpdiBzdHlsZT0nbWFyZ2luOjJlbSc+ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgImFiY1xuZGVmIiBidXQgZ290ICJhYmNcbmRlZlxuIgogUEFTUyBObyBuZXdsaW5lcyBhdCBk
aXNwbGF5OmlubGluZS1ibG9jayBib3VuZGFyeSAoIjxkaXY+MTIzPHNwYW4gc3R5bGU9J2Rpc3Bs
YXk6aW5saW5lLWJsb2NrJz5hYmM8L3NwYW4+ZGVmIikgCi1GQUlMIExlYWRpbmcvdHJhaWxpbmcg
c3BhY2UgcmVtb3ZhbCBhdCBkaXNwbGF5OmlubGluZS1ibG9jayBib3VuZGFyeSAoIjxkaXY+MTIz
PHNwYW4gc3R5bGU9J2Rpc3BsYXk6aW5saW5lLWJsb2NrJz4gYWJjIDwvc3Bhbj5kZWYiKSBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAiMTIzYWJjZGVmIiBidXQgZ290ICIxMjNhYmMgZGVmIgorRkFJ
TCBMZWFkaW5nL3RyYWlsaW5nIHNwYWNlIHJlbW92YWwgYXQgZGlzcGxheTppbmxpbmUtYmxvY2sg
Ym91bmRhcnkgKCI8ZGl2PjEyMzxzcGFuIHN0eWxlPSdkaXNwbGF5OmlubGluZS1ibG9jayc+IGFi
YyA8L3NwYW4+ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEyM2FiY2RlZiIgYnV0IGdv
dCAiMTIzIGFiYyBkZWYiCiBGQUlMIEJsYW5rIGxpbmVzIGFyb3VuZCA8cD4gZXZlbiB3aXRob3V0
IG1hcmdpbiAoIjxkaXY+MTIzPHAgc3R5bGU9J21hcmdpbjowcHgnPmFiYzwvcD5kZWYiKSBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAiMTIzXG5cbmFiY1xuXG5kZWYiIGJ1dCBnb3QgIjEyM1xuYWJj
XG5kZWYiCiBGQUlMIE5vIGJsYW5rIGxpbmVzIGFyb3VuZCA8aDE+ICgiPGRpdj4xMjM8aDE+YWJj
PC9oMT5kZWYiKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiMTIzXG5hYmNcbmRlZiIgYnV0IGdv
dCAiMTIzXG5hYmNcblxuZGVmIgogRkFJTCBObyBibGFuayBsaW5lcyBhcm91bmQgPGgyPiAoIjxk
aXY+MTIzPGgyPmFiYzwvaDI+ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEyM1xuYWJj
XG5kZWYiIGJ1dCBnb3QgIjEyM1xuYWJjXG5cbmRlZiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2xlZ2FjeS1hbmltYXRpb24tZW5naW5lL2FuaW1hdGlvbnMvbGluZWhlaWdodC1hbmltYXRpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0
aW9ucy9saW5laGVpZ2h0LWFuaW1hdGlvbi1leHBlY3RlZC50eHQKaW5kZXggMzkyMzZiMzQwZDQu
LjQxNzJhOGM1NmUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9sZWdhY3ktYW5pbWF0aW9uLWVu
Z2luZS9hbmltYXRpb25zL2xpbmVoZWlnaHQtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9sZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9hbmltYXRpb25zL2xpbmVoZWlnaHQt
YW5pbWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKLVRoaXMgdGVzdCBwZXJmb3Jt
cyBhbiBhbmltYXRpb24gb2YgdGhlIGxpbmUtaGVpZ2h0IHByb3BlcnR5LiBJdCB0ZXN0cyB3aGV0
aGVyIG9yIG5vdCB3ZSBhcmUgcHJvcGVybHkgZ2V0dGluZyB0aGUgZm9udC1zaXplLkhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuCitUaGlzIHRl
c3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSBsaW5lLWhlaWdodCBwcm9wZXJ0eS4gSXQg
dGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJlIHByb3Blcmx5IGdldHRpbmcgdGhlIGZvbnQtc2l6
ZS4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4KIFBBU1MgLSAibGluZUhlaWdodCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC4x
cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxMAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9s
ZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC10cmFu
c2Zvcm0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUv
YW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dAppbmRl
eCBhYzViZTMyYjcyMC4uZDllODcyMmY0N2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2xlZ2Fj
eS1hbmltYXRpb24tZW5naW5lL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9y
bS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUv
YW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDQgQEAKLVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIHRyYW5z
Zm9ybSBwcm9wZXJ0eS4gSXQgYW5pbWF0ZXMgb3ZlciAxMCBzZWNvbmRzLiBJdCB0YWtlcyAzIHNu
YXBzaG90cyBhbmQgZXhwZWN0cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBzcGVjaWZpZWQg
cmFuZ2UuUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVu
dCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjMwOTAxNywwLjk1MTA1NworVGhpcyB0
ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgdHJhbnNmb3JtIHByb3BlcnR5LiBJdCBh
bmltYXRlcyBvdmVyIDEwIHNlY29uZHMuIEl0IHRha2VzIDMgc25hcHNob3RzIGFuZCBleHBlY3Rz
IGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBhIHNwZWNpZmllZCByYW5nZS4gUEFTUyAtICJ3ZWJr
aXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAycyBzYXcgc29tZXRo
aW5nIGNsb3NlIHRvOiAwLjMwOTAxNywwLjk1MTA1NwogUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0i
IHByb3BlcnR5IGZvciAiYm94MiIgZWxlbWVudCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRv
OiAwLjMwOTAxNywwLjk1MTA1NwogUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZv
ciAiYm94MSIgYW5kICJib3gyIiBlbGVtZW50cyBhdCAycyBhcmUgY2xvc2UgZW5vdWdoIHRvIGVh
Y2ggb3RoZXIKIFBBU1MgLSAid2Via2l0VHJhbnNmb3JtIiBwcm9wZXJ0eSBmb3IgImJveDEiIGVs
ZW1lbnQgYXQgNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogLTEsMApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy93aWR0aC11c2luZy1l
bXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5p
bWF0aW9ucy93aWR0aC11c2luZy1lbXMtZXhwZWN0ZWQudHh0CmluZGV4IGRmYjczN2Q0ZDk2Li5i
Y2Y2MTkxMmUwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdp
bmUvYW5pbWF0aW9ucy93aWR0aC11c2luZy1lbXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2xlZ2FjeS1hbmltYXRpb24tZW5naW5lL2FuaW1hdGlvbnMvd2lkdGgtdXNpbmctZW1zLWV4
cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKLVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRp
b24gb2YgdGhlIHdpZHRoIHByb3BlcnR5IHVzaW5nICdlbScgdW5pdHMuIEl0IHRlc3RzIHdoZXRo
ZXIgb3Igbm90IHdlIGFyZSBwcm9wZXJseSBnZXR0aW5nIHRoZSBkZWZhdWx0IGZvbnQtc2l6ZS5I
ZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBI
ZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0Lgor
VGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgd2lkdGggcHJvcGVydHkgdXNp
bmcgJ2VtJyB1bml0cy4gSXQgdGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJlIHByb3Blcmx5IGdl
dHRpbmcgdGhlIGRlZmF1bHQgZm9udC1zaXplLiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBz
b21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBz
b21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LgogUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9y
ICJib3giIGVsZW1lbnQgYXQgMC4zMzNzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zY3JvbGxpbmdjb29yZGluYXRvci9zY3JvbGxpbmctdHJl
ZS9uZXN0ZWQtYWJzb2x1dGUtaW4tb3ZlcmZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c2Nyb2xsaW5nY29vcmRpbmF0b3Ivc2Nyb2xsaW5nLXRyZWUvbmVzdGVkLWFic29sdXRlLWluLW92
ZXJmbG93LWV4cGVjdGVkLnR4dAppbmRleCA5MDgzN2VkYzM2MC4uYzhlOWQzMWYwZjEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3Njcm9sbGluZ2Nvb3JkaW5hdG9yL3Njcm9sbGluZy10cmVlL25l
c3RlZC1hYnNvbHV0ZS1pbi1vdmVyZmxvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c2Nyb2xsaW5nY29vcmRpbmF0b3Ivc2Nyb2xsaW5nLXRyZWUvbmVzdGVkLWFic29sdXRlLWluLW92
ZXJmbG93LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLWFic2FicworYWJzIGFicwogCiAo
RnJhbWUgc2Nyb2xsaW5nIG5vZGUKICAgKHNjcm9sbGFibGUgYXJlYSBzaXplIDgwMCA2MDApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNjc1M2Q1OTU5N2IuLmNlNDNmZTVmMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODEgQEAKKzIwMTktMDktMTQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgor
CisgICAgICAgIEVsaW1pbmF0ZSBzZXBhcmF0ZSBzaW1wbGUgbGluZSBsYXlvdXQgcGF0aCBmcm9t
IFRleHRJdGVyYXRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAxNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgorCisgICAg
ICAgIFVzZSB0aGUgbmV3IGxpbmUgbGF5b3V0IGl0ZXJhdG9yIHRvIGltcGxlbWVudCBsaW5lYm94
IHRyYXZlcnNhbCBpbiBUZXh0SXRlcmF0b3IuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KToKKworICAgICAgICBJbmxpbmVUZXh0Qm94KiAtPiBM
aW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3IKKyAgICAgICAgRGVsZXRlIHRoZSBz
ZXBlcmF0ZSBzaW1wbGUgbGluZSBsYXlvdXQgcGF0aC4KKworICAgICAgICAoV2ViQ29yZTo6VGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRJdGVyYXRvcjo6ZW1pdENoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6OmVtaXRUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OndyaXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVy
YXRvcjo6SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6UnVu
UmVzb2x2ZXI6Okl0ZXJhdG9yOjphZHZhbmNlTGluZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVM
YXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvcjo6cmVzb2x2ZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjppblF1aXJr
c01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6UnVuUmVz
b2x2ZXI6Okl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvcjo6c2ltcGxlUnVuIGNvbnN0KToK
KworICAgICAgICBNYWtlIFJ1blJlc29sdmVyOjpJdGVyYXRvciBjb3B5YWJsZSAoc28gVGV4dEJv
eEl0ZXJhdG9yIGJlY29tZXMgY29weWFibGUgdG9vKS4KKworICAgICAgICAqIHJlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxlTGluZUxheW91dDo6VGV4dEZyYWdtZW50SXRlcmF0b3I6OmZpbmROZXh0VGV4dEZy
YWdtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50ZXJmYWNlVGV4
dEJveGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRC
b3g6OnJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6
VGV4dEJveDo6bG9naWNhbFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dEludGVyZmFjZTo6VGV4dEJveDo6aGFzSHlwaGVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3g6OmlzTGVmdFRvUmlnaHREaXJlY3Rpb24gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveDo6ZGly
T3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6
VGV4dEJveDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJm
YWNlOjpUZXh0Qm94Ojpsb2NhbFN0YXJ0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3g6OmxvY2FsRW5kT2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3g6Omxlbmd0aCBjb25z
dCk6CisKKyAgICAgICAgQWRkIG9mZnNldCBhbmQgbGVuZ3RoIGZ1bmN0aW9ucy4KKworICAgICAg
ICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveDo6aXRlcmF0b3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9y
OjpUZXh0Qm94SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFj
ZTo6VGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHQpOgorICAgICAgICAoV2ViQ29yZTo6TGlu
ZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvcjo6YXRF
bmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6UHJvdmlk
ZXI6OmZpcnN0VGV4dEJveEZvcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJm
YWNlOjpQcm92aWRlcjo6dGV4dEJveFJhbmdlRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVM
YXlvdXRJbnRlcmZhY2U6OlByb3ZpZGVyOjppdGVyYXRvckZvcklubGluZVRleHRCb3gpOgorCisg
ICAgICAgIEFkZCBQcm92aWRlciBjbGFzcyBmb3IgbWFraW5nIGl0ZXJhdG9ycy4gSXQgY29uc3Ry
dWN0cyBhbmQga2VlcHMgU2ltcGxlTGluZUxheW91dDo6UmVzb2x2ZXJzIGFsaXZlIGR1cmluZyB0
cmF2ZXJzYWwgYXMgbmVlZGVkLgorCisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUxheW91
dEludGVyZmFjZVRleHRCb3hlcy5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVy
ZmFjZTo6VGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVy
YXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50
ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvciogY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJh
dG9yOjpvcGVyYXRvci0+IGNvbnN0KToKKworICAgICAgICBNYWtlIFRleHRCb3hJdGVyYXRvciBw
cml2YXRlbHkgaW5oZXJpdCBUZXh0Qm94LiBUaGlzIHdheSB3ZSBkb24ndCBuZWVkIHRvIGNvbnN0
cnVjdCB0ZW1wb3JhcmllcyBhbmQgY2FuIGVhc2lseSBpbXBsZW1lbnQgb3BlcmF0b3ItPi4KKwor
ICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveFJhbmdlOjpUZXh0
Qm94UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJv
eFJhbmdlOjpiZWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJm
YWNlOjpUZXh0Qm94UmFuZ2U6OmVuZCBjb25zdCk6CisKKyAgICAgICAgVXNlIHNlcGFyYXRlIGVu
ZCgpIHR5cGUgb2YgQysrMTcgcmFuZ2VzLgorCiAyMDE5LTA5LTExICBEZWFuIEphY2tzb24gIDxk
aW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBQcm92aWRlIGEgcHJvdG90eXBlIGZvciBBUiBRdWlj
a0xvb2sgdG8gdHJpZ2dlciBwcm9jZXNzaW5nIGluIHRoZSBvcmlnaW5hdGluZyBwYWdlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCAzMGQwOTI5NjJhZi4uZmQwYjUzM2NlZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMwMyw3ICsxMzAzLDEwIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICByZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmgKICAgICByZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dC5oCiAgICAgcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3Zl
cmFnZS5oCisgICAgcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaAorICAg
IHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaAogCisgICAgcmVuZGVyaW5nL2xp
bmUvTGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oCiAgICAgcmVuZGVyaW5nL2xpbmUvTGlu
ZVdpZHRoLmgKICAgICByZW5kZXJpbmcvbGluZS9UcmFpbGluZ09iamVjdHMuaAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmIx
ZDVjZTc0OTUuLmI5OTRjOGY4ZWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODMyLDcgKzE4MzIsNyBAQAogCQk1ODI0QUJB
NzFBRTgxMzg0MDA5MDc0QjcgLyogUnVieVRleHRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODI0QUJBNTFBRTgxMzg0MDA5MDc0QjcgLyog
UnVieVRleHRFbGVtZW50LmggKi87IH07CiAJCTU4MkNCMDUzMUE3OEExNEIwMEFGRkNDNCAvKiBT
aW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4MkNCMDUyMUE3OEExNEIwMEFGRkNDNCAvKiBT
aW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCAqLzsgfTsKIAkJNTgyREUzMjUx
QzMwQzg1NDAwQkUwMkE4IC8qIFRleHREZWNvcmF0aW9uUGFpbnRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTgyREUzMjMxQzMwQzg1NDAwQkUwMkE4
IC8qIFRleHREZWNvcmF0aW9uUGFpbnRlci5oICovOyB9OwotCQk1ODVENkUwNDFBMUE3OTJFMDBG
QTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg1RDZFMDIxQTFBNzkyRTAwRkE0RjEyIC8q
IFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCAqLzsgfTsKKwkJNTg1RDZFMDQxQTFBNzky
RTAwRkE0RjEyIC8qIFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4NUQ2RTAyMUExQTc5MkUwMEZBNEYx
MiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTg5NTU2RUQxOEQ0QTQ0MDAwNzY0QjAzIC8q
IEJvcmRlckVkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU4OTU1NkVDMThENEE0NDAwMDc2NEIwMyAvKiBCb3JkZXJFZGdlLmggKi87IH07CiAJCTU4
QjJGOUY0MjIzMkQ0NTMwMDkzOEQ2MyAvKiBSZXNpemVPYnNlcnZhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNThCMkY5RjMyMjMyRDQzRjAwOTM4
RDYzIC8qIFJlc2l6ZU9ic2VydmF0aW9uLmggKi87IH07CiAJCTU4QjJGOUY1MjIzMkQ0NTgwMDkz
OEQ2MyAvKiBSZXNpemVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNThCMkY5RUMyMjMyRDQzQjAwOTM4RDYzIC8qIFJlc2l6ZU9ic2VydmVy
LmggKi87IH07CkBAIC00Nzk1LDcgKzQ3OTUsNyBAQAogCQlFNDdDMzkzMzFGRTZFMTA4MDBCQkJD
NkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3QzM5MjcxRkU2RTBEQzAwQkJCQzZCIC8qIFJl
bmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uaCAqLzsgfTsKIAkJRTQ3RTI3NjUxNjAzNkVEMjAw
RUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdFMjc2NDE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5z
aW9uU3R5bGVTaGVldHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFNDgxMzdCOTFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4MTM3QjgxREIz
QjUyNjAwNUM1OUJGIC8qIFN0eWxlVmFsaWRpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFNDg0QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGlu
ZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQ4NEEzM0IyMzA1NTMwMzAwOUFERTZBIC8qIExpbmVMYXlvdXRJ
bnRlcmZhY2VUZXh0Qm94ZXMuaCAqLzsgfTsKKwkJRTQ4NEEzM0UyMzA1NTMyNTAwOUFERTZBIC8q
IExpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODRBMzNCMjMwNTUzMDMwMDlBREU2QSAvKiBMaW5lTGF5
b3V0SW50ZXJmYWNlVGV4dEJveGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTQ4OTQ0QTMxODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxpbmVM
YXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
ODk0NEExMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5MTZGRjcxOTVERjZBMDAw
NUFCMzQ5IC8qIExheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDkxNkZGNjE5NURGNkEwMDA1QUIzNDkgLyogTGF5
ZXJGbHVzaFRocm90dGxlU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFNDk0NkVBRjE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1w
b3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDk0
NkVBRDE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1wb3J0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ4MzIsNyArNDgzMiw3IEBACiAJ
CUU0RThCNEVDMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFOEI0RUEy
MTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmggKi87IH07CiAJ
CUU0RThCNEY1MjE2Qjk1NjUwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU4QjRGMjIxNkI4
QjYwMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTk0RDYxMjJGRjE1OEEwMEREMTkx
RiAvKiBDb21wbGV4TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTRBMUFDNzgyMkZBRkQ1MDAwMTdCNzVCIC8qIENvbXBsZXhMaW5lTGF5
b3V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
RTRFOUIxMTkxODEwOTE2RjAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFOUIxMTgxODEw
OTE2RjAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oICovOyB9OworCQlFNEU5
QjExOTE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU5QjExODE4MTA5MTZG
MDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRFOUIxMUQxODE0NTY5QzAwM0FDQ0RG
IC8qIFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTlCMTFDMTgxNDU2OUMwMDNBQ0NERiAvKiBTaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmggKi87IH07CiAJCUU0RjlFRUYzMTU2REEwMDcwMEQyM0U3RSAv
KiBTdHlsZVNoZWV0Q29udGVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0RjlFRUYxMTU2RDg0QzQwMEQyM0U3RSAvKiBTdHlsZVNoZWV0Q29udGVu
dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
NTE2Njk5MTIwRkY5OTE4MDA5RDJDMjcgLyogTGlzdEJ1dHRvbkFycm93QDJ4LnBuZyBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTUxNjY5OEYyMEZGOTkx
NjAwOUQyQzI3IC8qIExpc3RCdXR0b25BcnJvd0AyeC5wbmcgKi87IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYTFhMzkwM2Y2N2IuLmY0MWUxMDJhMDY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC00NzQsOCArNDc0LDgg
QEAgdm9pZCBUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogCiAgICAgaWYgKCFtX3RleHRCb3ggJiYg
bV9yZW1haW5pbmdUZXh0Qm94KSB7CiAgICAgICAgIG1fdGV4dEJveCA9IG1fcmVtYWluaW5nVGV4
dEJveDsKLSAgICAgICAgbV9yZW1haW5pbmdUZXh0Qm94ID0gbnVsbHB0cjsKLSAgICAgICAgbV9m
aXJzdExldHRlclRleHQgPSBudWxscHRyOworICAgICAgICBtX3JlbWFpbmluZ1RleHRCb3ggPSB7
IH07CisgICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0geyB9OwogICAgICAgICBtX29mZnNldCA9
IDA7CiAgICAgfQogICAgIC8vIGhhbmRsZSByZW1lbWJlcmVkIHRleHQgYm94CkBAIC01NzQsMjUg
KzU3NCw2IEBAIHN0YXRpYyBib29sIGhhc1Zpc2libGVUZXh0Tm9kZShSZW5kZXJUZXh0JiByZW5k
ZXJlcikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCB0ZXh0Tm9kZU9m
ZnNldEluRmxvdyhjb25zdCBUZXh0JiBmaXJzdFRleHROb2RlSW5SYW5nZSkKLXsKLSAgICAvLyBD
YWxjdWxhdGUgdGhlIHRleHQgb2Zmc2V0IGZvciBzaW1wbGUgbGluZXMuCi0gICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IGZpcnN0VGV4dE5vZGVJblJhbmdlLnJlbmRlcmVyKCk7Ci0gICAgaWYg
KCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgdW5zaWduZWQgdGV4dE9mZnNldCA9
IDA7Ci0gICAgZm9yIChyZW5kZXJlciA9IHJlbmRlcmVyLT5wcmV2aW91c1NpYmxpbmcoKTsgcmVu
ZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAg
IGlmIChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpCi0gICAgICAgICAgICB0ZXh0T2Zmc2V0ICs9
IGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS0+dGV4dCgpLmxlbmd0aCgpOwotICAgIH0K
LSAgICByZXR1cm4gdGV4dE9mZnNldDsKLX0KLQotc3RhdGljIGJvb2wgaXNOZXdMaW5lT3JUYWJD
aGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQotewotICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJ1xu
JyB8fCBjaGFyYWN0ZXIgPT0gJ1x0JzsKLX0KLQogYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHROb2RlKCkKIHsKICAgICBUZXh0JiB0ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KCptX25vZGUp
OwpAQCAtNjE3LDcgKzU5OCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgp
CiAgICAgICAgICAgICAgICAgU3RyaW5nIGZpcnN0TGV0dGVyID0gbV9maXJzdExldHRlclRleHQt
PnRleHQoKTsKICAgICAgICAgICAgICAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgKm1fZmlyc3RMZXR0
ZXJUZXh0LCBtX29mZnNldCwgbV9vZmZzZXQgKyBmaXJzdExldHRlci5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICAgICAgbV9maXJzdExldHRlclRleHQgPSBudWxscHRyOwotICAgICAgICAgICAgICAg
IG1fdGV4dEJveCA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgbV90ZXh0Qm94ID0geyB9Owog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtNjM0LDEwMiArNjE1LDEzIEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChjb25zdCBhdXRvKiBsYXlv
dXQgPSByZW5kZXJlci5zaW1wbGVMaW5lTGF5b3V0KCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVy
LnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIShtX2JlaGF2
aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgQVNTRVJUKHJlbmRlcmVyLnBhcmVudCgpKTsKLSAgICAgICAg
QVNTRVJUKGlzPFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyLnBhcmVudCgpKSk7Ci0gICAgICAg
IGNvbnN0IGF1dG8mIGJsb2NrRmxvdyA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRl
cmVyLnBhcmVudCgpKTsKLSAgICAgICAgLy8gVXNlIHRoZSBzaW1wbGUgbGF5b3V0IHJ1bnMgdG8g
aXRlcmF0ZSBvdmVyIHRoZSB0ZXh0IGNvbnRlbnQuCi0gICAgICAgIGJvb2wgaXNOZXdUZXh0Tm9k
ZSA9IG1fcHJldmlvdXNTaW1wbGVUZXh0Tm9kZUluRmxvdyAmJiBtX3ByZXZpb3VzU2ltcGxlVGV4
dE5vZGVJbkZsb3cgIT0gJnRleHROb2RlOwotICAgICAgICAvLyBTaW1wbGUgbGluZSBsYXlvdXQg
cnVuIHBvc2l0aW9ucyBhcmUgYWxsIGFic29sdXRlIHRvIHRoZSBwYXJlbnQgZmxvdy4KLSAgICAg
ICAgLy8gT2Zmc2V0dGluZyBpcyByZXF1aXJlZCB3aGVuIG11bHRpcGxlIHJlbmRlcmVycyBhcmUg
cHJlc2VudC4KLSAgICAgICAgbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZsb3cgKz0g
aXNOZXdUZXh0Tm9kZSA/IG1fcHJldmlvdXNTaW1wbGVUZXh0Tm9kZUluRmxvdy0+cmVuZGVyZXIo
KS0+dGV4dCgpLmxlbmd0aCgpIDogMDsKLSAgICAgICAgbV9wcmV2aW91c1NpbXBsZVRleHROb2Rl
SW5GbG93ID0gJnRleHROb2RlOwotCi0gICAgICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gKG1f
bm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9lbmRPZmZz
ZXQpIDogcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwotICAgICAgICBpZiAoIW1fZmxvd1J1blJlc29s
dmVyQ2FjaGUgfHwgJm1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPmZsb3coKSAhPSAmYmxvY2tGbG93
KSB7Ci0gICAgICAgICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyA9IG1f
Zmxvd1J1blJlc29sdmVyQ2FjaGUgPyAwIDogdGV4dE5vZGVPZmZzZXRJbkZsb3codGV4dE5vZGUp
OwotICAgICAgICAgICAgbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA9IG1ha2VVbmlxdWU8U2ltcGxl
TGluZUxheW91dDo6UnVuUmVzb2x2ZXI+KGJsb2NrRmxvdywgKmxheW91dCk7Ci0gICAgICAgIH0K
LSAgICAgICAgLy8gU2tpcCB0byBtX29mZnNldCBwb3NpdGlvbi4KLSAgICAgICAgYXV0byByYW5n
ZSA9IG1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPnJhbmdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwot
ICAgICAgICBhdXRvIGl0ID0gcmFuZ2UuYmVnaW4oKTsKLSAgICAgICAgYXV0byBlbmQgPSByYW5n
ZS5lbmQoKTsKLSAgICAgICAgYXV0byBzdGFydFBvc2l0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fb2Zmc2V0KSArIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93OwotICAg
ICAgICB3aGlsZSAoaXQgIT0gZW5kICYmICgqaXQpLmVuZCgpIDw9IHN0YXJ0UG9zaXRpb24pCi0g
ICAgICAgICAgICArK2l0OwotICAgICAgICBpZiAobV9uZXh0UnVuTmVlZHNXaGl0ZXNwYWNlICYm
IHJlbmRlcmVyVGV4dFttX29mZnNldCAtIDFdID09ICdcbicpIHsKLSAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJyAnLCB0ZXh0Tm9kZSwgbnVsbHB0ciwgbV9vZmZzZXQsIG1fb2Zmc2V0ICsgMSk7
Ci0gICAgICAgICAgICByZXR1cm4gaXQgPT0gZW5kOwotICAgICAgICB9Ci0gICAgICAgIGlmIChp
dCA9PSBlbmQpIHsKLSAgICAgICAgICAgIC8vIENvbGxhcHNlZCB0cmFpbGluZyB3aGl0ZXNwYWNl
LgotICAgICAgICAgICAgbV9vZmZzZXQgPSBlbmRQb3NpdGlvbjsKLSAgICAgICAgICAgIG1fbGFz
dFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgPSB0cnVlOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fbmV4dFJ1bk5lZWRzV2hpdGVzcGFj
ZSkgewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcignICcsIHRleHROb2RlLCBudWxscHRyLCBt
X29mZnNldCwgbV9vZmZzZXQgKyAxKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotICAgICAgICAvLyBJZiB0aGUgcG9zaXRpb24gd2UgYXJlIGxvb2tpbmcgZm9yIGlzIHRv
IHRoZSBsZWZ0IG9mIHRoZSByZW5kZXJlcidzIGZpcnN0IHJ1biwgaXQgY291bGQgbWVhbiB0aGF0
Ci0gICAgICAgIC8vIHRoZSBydW5zIGFuZCB0aGUgcmVuZGVyZXJzIGFyZSBvdXQgb2Ygc3luYyAo
ZS5nLiB3ZSBza2lwcGVkIGEgcmVuZGVyZXIgaW4gYmV0d2VlbikuCi0gICAgICAgIC8vIEJldHRl
ciBiYWlsIG91dCBhdCB0aGlzIHBvaW50LgotICAgICAgICBhdXRvIHJ1biA9ICppdDsKLSAgICAg
ICAgaWYgKHJ1bi5zdGFydCgpID4gc3RhcnRQb3NpdGlvbikgewotICAgICAgICAgICAgQVNTRVJU
KG1fZmxvd1J1blJlc29sdmVyQ2FjaGUpOwotICAgICAgICAgICAgaWYgKCYocmVuZGVyZXJGb3JQ
b3NpdGlvbihtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5mbG93Q29udGVudHMoKSwgc3RhcnRQb3Np
dGlvbikpICE9ICZyZW5kZXJlcikgewotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIEFTU0VSVChydW4uZW5kKCkgLSBydW4uc3RhcnQoKSA8PSByZW5kZXJlclRl
eHQubGVuZ3RoKCkpOwotICAgICAgICAvLyBjb250ZW50U3RhcnQgc2tpcHMgbGVhZGluZyB3aGl0
ZXNwYWNlLgotICAgICAgICB1bnNpZ25lZCBjb250ZW50U3RhcnQgPSBzdGQ6Om1heDx1bnNpZ25l
ZD4obV9vZmZzZXQsIHJ1bi5zdGFydCgpIC0gbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJ
bkZsb3cpOwotICAgICAgICB1bnNpZ25lZCBjb250ZW50RW5kID0gc3RkOjptaW4oZW5kUG9zaXRp
b24sIHJ1bi5lbmQoKSAtIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93KTsKLSAg
ICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGVudFN0YXJ0IDw9IGNv
bnRlbnRFbmQpOwotICAgICAgICAvLyBDaGVjayBpZiB3aGl0ZXNwYWNlIGFkanVzdG1lbnQgaXMg
bmVlZGVkIHdoZW4gY3Jvc3NpbmcgcmVuZGVyZXIgYm91bmRhcnkuCi0gICAgICAgIGlmIChpc05l
d1RleHROb2RlKSB7Ci0gICAgICAgICAgICBib29sIGxhc3RDaGFyYWN0ZXJJc05vdFdoaXRlc3Bh
Y2UgPSBtX2xhc3RDaGFyYWN0ZXIgJiYgIXJlbmRlcmVyLnN0eWxlKCkuaXNDb2xsYXBzaWJsZVdo
aXRlU3BhY2UobV9sYXN0Q2hhcmFjdGVyKTsKLSAgICAgICAgICAgIGJvb2wgYWRkVHJhaWxpbmdX
aGl0ZXNwYWNlRm9yUHJldmlvdXMgPSBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNw
YWNlICYmIGxhc3RDaGFyYWN0ZXJJc05vdFdoaXRlc3BhY2U7Ci0gICAgICAgICAgICBib29sIGxl
YWRpbmdXaGl0ZXNwYWNlSXNOZWVkZWRGb3JDdXJyZW50ID0gY29udGVudFN0YXJ0ID4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KSAmJiBsYXN0Q2hhcmFjdGVySXNOb3RXaGl0ZXNwYWNl
OwotICAgICAgICAgICAgaWYgKGFkZFRyYWlsaW5nV2hpdGVzcGFjZUZvclByZXZpb3VzIHx8IGxl
YWRpbmdXaGl0ZXNwYWNlSXNOZWVkZWRGb3JDdXJyZW50KSB7Ci0gICAgICAgICAgICAgICAgZW1p
dENoYXJhY3RlcignICcsIHRleHROb2RlLCBudWxscHRyLCBtX29mZnNldCwgbV9vZmZzZXQgKyAx
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgLy8gXG4gXHQgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBuZWVkIHJl
cGxhY2luZyBzbyB0aGF0IHRoZSBuZXcgbGluZS90YWIgY2hhcmFjdGVycyBkb24ndCBzaG93IHVw
LgotICAgICAgICB1bnNpZ25lZCBzdG9wUG9zaXRpb24gPSBjb250ZW50U3RhcnQ7Ci0gICAgICAg
IHdoaWxlIChzdG9wUG9zaXRpb24gPCBjb250ZW50RW5kICYmICFpc05ld0xpbmVPclRhYkNoYXJh
Y3RlcihyZW5kZXJlclRleHRbc3RvcFBvc2l0aW9uXSkpCi0gICAgICAgICAgICArK3N0b3BQb3Np
dGlvbjsKLSAgICAgICAgLy8gRW1pdCB0aGUgdGV4dCB1cCB0byB0aGUgbmV3IGxpbmUvdGFiIGNo
YXJhY3Rlci4KLSAgICAgICAgaWYgKHN0b3BQb3NpdGlvbiA8IGNvbnRlbnRFbmQpIHsKLSAgICAg
ICAgICAgIGlmIChzdG9wUG9zaXRpb24gPT0gY29udGVudFN0YXJ0KSB7Ci0gICAgICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcignICcsIHRleHROb2RlLCBudWxscHRyLCBjb250ZW50U3RhcnQsIGNv
bnRlbnRTdGFydCArIDEpOwotICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0gY29udGVudFN0YXJ0
ICsgMTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgcmVuZGVyZXIsIGNvbnRlbnRTdGFydCwgc3RvcFBv
c2l0aW9uKTsKLSAgICAgICAgICAgIG1fb2Zmc2V0ID0gc3RvcFBvc2l0aW9uICsgMTsKLSAgICAg
ICAgICAgIG1fbmV4dFJ1bk5lZWRzV2hpdGVzcGFjZSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZW1pdFRleHQodGV4dE5vZGUsIHJlbmRlcmVy
LCBjb250ZW50U3RhcnQsIGNvbnRlbnRFbmQpOwotICAgICAgICAvLyBXaGVuIGxpbmUgZW5kaW5n
IHdpdGggY29sbGFwc2VkIHdoaXRlc3BhY2UgaXMgcHJlc2VudCwgd2UgbmVlZCB0byBjYXJyeSBv
dmVyIG9uZSB3aGl0ZXNwYWNlOiBmb28oZW5kIG9mIGxpbmUpYmFyIC0+IGZvbyBiYXIgKG90aGVy
d2lzZSB3ZSB3b3VsZCBlbmQgdXAgd2l0aCBmb29iYXIpLgotICAgICAgICBtX25leHRSdW5OZWVk
c1doaXRlc3BhY2UgPSBydW4uaXNFbmRPZkxpbmUoKSAmJiBjb250ZW50RW5kIDwgZW5kUG9zaXRp
b24gJiYgcmVuZGVyZXIuc3R5bGUoKS5pc0NvbGxhcHNpYmxlV2hpdGVTcGFjZShyZW5kZXJlclRl
eHRbY29udGVudEVuZF0pOwotICAgICAgICBtX29mZnNldCA9IGNvbnRlbnRFbmQ7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpID09IGVuZFBvc2l0aW9uOwot
ICAgIH0KLQotICAgIGlmIChyZW5kZXJlci5maXJzdFRleHRCb3goKSkKLSAgICAgICAgbV90ZXh0
Qm94ID0gcmVuZGVyZXIuZmlyc3RUZXh0Qm94KCk7CisgICAgbV90ZXh0Qm94ID0gbV9saW5lTGF5
b3V0UHJvdmlkZXIuZmlyc3RUZXh0Qm94Rm9yKHJlbmRlcmVyKTsKIAogICAgIGJvb2wgc2hvdWxk
SGFuZGxlRmlyc3RMZXR0ZXIgPSAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgaXM8UmVuZGVyVGV4
dEZyYWdtZW50PihyZW5kZXJlcikgJiYgIW1fb2Zmc2V0OwogICAgIGlmIChzaG91bGRIYW5kbGVG
aXJzdExldHRlcikKICAgICAgICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihkb3duY2FzdDxS
ZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKSk7CiAKLSAgICBpZiAoIXJlbmRlcmVyLmZpcnN0
VGV4dEJveCgpICYmIHJlbmRlcmVyVGV4dC5sZW5ndGgoKSAmJiAhc2hvdWxkSGFuZGxlRmlyc3RM
ZXR0ZXIpIHsKKyAgICBpZiAoIW1fdGV4dEJveCAmJiByZW5kZXJlclRleHQubGVuZ3RoKCkgJiYg
IXNob3VsZEhhbmRsZUZpcnN0TGV0dGVyKSB7CiAgICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRl
eHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlID0gdHJ1
ZTsgLy8gZW50aXJlIGJsb2NrIGlzIGNvbGxhcHNlZCBzcGFjZQpAQCAtNzQ0LDcgKzYzNiw3IEBA
IGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgICAgICBtX3NvcnRl
ZFRleHRCb3hlcy5hcHBlbmQodGV4dEJveCk7CiAgICAgICAgIHN0ZDo6c29ydChtX3NvcnRlZFRl
eHRCb3hlcy5iZWdpbigpLCBtX3NvcnRlZFRleHRCb3hlcy5lbmQoKSwgSW5saW5lVGV4dEJveDo6
Y29tcGFyZUJ5U3RhcnQpOwogICAgICAgICBtX3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uID0gMDsK
LSAgICAgICAgbV90ZXh0Qm94ID0gbV9zb3J0ZWRUZXh0Qm94ZXMuaXNFbXB0eSgpID8gbnVsbHB0
ciA6IG1fc29ydGVkVGV4dEJveGVzWzBdOworICAgICAgICBtX3RleHRCb3ggPSBtX2xpbmVMYXlv
dXRQcm92aWRlci5pdGVyYXRvckZvcklubGluZVRleHRCb3gobV9zb3J0ZWRUZXh0Qm94ZXMuaXNF
bXB0eSgpID8gbnVsbHB0ciA6IG1fc29ydGVkVGV4dEJveGVzWzBdKTsKICAgICB9CiAKICAgICBo
YW5kbGVUZXh0Qm94KCk7CkBAIC03NTcsMTggKzY0OSwyNSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dEJveCgpCiAKICAgICBhdXRvJiByZW5kZXJlciA9IG1fZmlyc3RMZXR0ZXJUZXh0
ID8gKm1fZmlyc3RMZXR0ZXJUZXh0IDogKnRleHROb2RlLnJlbmRlcmVyKCk7CiAgICAgaWYgKHJl
bmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgISht
X2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpIHsKLSAgICAg
ICAgbV90ZXh0Qm94ID0gbnVsbHB0cjsKKyAgICAgICAgbV90ZXh0Qm94ID0geyB9OwogICAgICAg
ICByZXR1cm47CiAgICAgfQorCisgICAgYXV0byBmaXJzdFRleHRCb3ggPSBbJl0geworICAgICAg
ICBpZiAocmVuZGVyZXIuY29udGFpbnNSZXZlcnNlZFRleHQoKSkKKyAgICAgICAgICAgIHJldHVy
biBtX2xpbmVMYXlvdXRQcm92aWRlci5pdGVyYXRvckZvcklubGluZVRleHRCb3gobV9zb3J0ZWRU
ZXh0Qm94ZXMuaXNFbXB0eSgpID8gbnVsbHB0ciA6IG1fc29ydGVkVGV4dEJveGVzWzBdKTsKKwor
ICAgICAgICByZXR1cm4gbV9saW5lTGF5b3V0UHJvdmlkZXIuZmlyc3RUZXh0Qm94Rm9yKHJlbmRl
cmVyKTsKKyAgICB9KCk7CisKICAgICBTdHJpbmcgcmVuZGVyZXJUZXh0ID0gcmVuZGVyZXIudGV4
dCgpOwogICAgIHVuc2lnbmVkIHN0YXJ0ID0gbV9vZmZzZXQ7CiAgICAgdW5zaWduZWQgZW5kID0g
KCZ0ZXh0Tm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9l
bmRPZmZzZXQpIDogVUlOVF9NQVg7CiAgICAgd2hpbGUgKG1fdGV4dEJveCkgewotICAgICAgICB1
bnNpZ25lZCB0ZXh0Qm94U3RhcnQgPSBtX3RleHRCb3gtPnN0YXJ0KCk7CisgICAgICAgIHVuc2ln
bmVkIHRleHRCb3hTdGFydCA9IG1fdGV4dEJveC0+bG9jYWxTdGFydE9mZnNldCgpOwogICAgICAg
ICB1bnNpZ25lZCBydW5TdGFydCA9IHN0ZDo6bWF4KHRleHRCb3hTdGFydCwgc3RhcnQpOwogCiAg
ICAgICAgIC8vIENoZWNrIGZvciBjb2xsYXBzZWQgc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIHRoaXMg
cnVuLgotICAgICAgICBJbmxpbmVUZXh0Qm94KiBmaXJzdFRleHRCb3ggPSByZW5kZXJlci5jb250
YWluc1JldmVyc2VkVGV4dCgpID8gKG1fc29ydGVkVGV4dEJveGVzLmlzRW1wdHkoKSA/IG51bGxw
dHIgOiBtX3NvcnRlZFRleHRCb3hlc1swXSkgOiByZW5kZXJlci5maXJzdFRleHRCb3goKTsKICAg
ICAgICAgYm9vbCBuZWVkU3BhY2UgPSBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNw
YWNlIHx8IChtX3RleHRCb3ggPT0gZmlyc3RUZXh0Qm94ICYmIHRleHRCb3hTdGFydCA9PSBydW5T
dGFydCAmJiBydW5TdGFydCk7CiAgICAgICAgIGlmIChuZWVkU3BhY2UgJiYgIXJlbmRlcmVyLnN0
eWxlKCkuaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UobV9sYXN0Q2hhcmFjdGVyKSAmJiBtX2xhc3RD
aGFyYWN0ZXIpIHsKICAgICAgICAgICAgIGlmIChtX2xhc3RUZXh0Tm9kZSA9PSAmdGV4dE5vZGUg
JiYgcnVuU3RhcnQgJiYgcmVuZGVyZXJUZXh0W3J1blN0YXJ0IC0gMV0gPT0gJyAnKSB7CkBAIC03
ODAsMTcgKzY3OSwxOSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAg
ICAgICAgICAgICAgZW1pdENoYXJhY3RlcignICcsIHRleHROb2RlLCBudWxscHRyLCBydW5TdGFy
dCwgcnVuU3RhcnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHVu
c2lnbmVkIHRleHRCb3hFbmQgPSB0ZXh0Qm94U3RhcnQgKyBtX3RleHRCb3gtPmxlbigpOworICAg
ICAgICB1bnNpZ25lZCB0ZXh0Qm94RW5kID0gdGV4dEJveFN0YXJ0ICsgbV90ZXh0Qm94LT5sZW5n
dGgoKTsKICAgICAgICAgdW5zaWduZWQgcnVuRW5kID0gc3RkOjptaW4odGV4dEJveEVuZCwgZW5k
KTsKICAgICAgICAgCiAgICAgICAgIC8vIERldGVybWluZSB3aGF0IHRoZSBuZXh0IHRleHQgYm94
IHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZhbmNlIHlldAotICAgICAgICBJbmxpbmVUZXh0Qm94KiBu
ZXh0VGV4dEJveCA9IG51bGxwdHI7CisgICAgICAgIExpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRC
b3hJdGVyYXRvciBuZXh0VGV4dEJveDsKICAgICAgICAgaWYgKHJlbmRlcmVyLmNvbnRhaW5zUmV2
ZXJzZWRUZXh0KCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgcmV2ZXJzZWQgdGV4
dCBpbiB0aGUgbGluZSBsYXlvdXQgaXRlcmF0b3IuCiAgICAgICAgICAgICBpZiAobV9zb3J0ZWRU
ZXh0Qm94ZXNQb3NpdGlvbiArIDEgPCBtX3NvcnRlZFRleHRCb3hlcy5zaXplKCkpCi0gICAgICAg
ICAgICAgICAgbmV4dFRleHRCb3ggPSBtX3NvcnRlZFRleHRCb3hlc1ttX3NvcnRlZFRleHRCb3hl
c1Bvc2l0aW9uICsgMV07Ci0gICAgICAgIH0gZWxzZSAKLSAgICAgICAgICAgIG5leHRUZXh0Qm94
ID0gbV90ZXh0Qm94LT5uZXh0VGV4dEJveCgpOwotICAgICAgICBBU1NFUlQoIW5leHRUZXh0Qm94
IHx8ICZuZXh0VGV4dEJveC0+cmVuZGVyZXIoKSA9PSAmcmVuZGVyZXIpOworICAgICAgICAgICAg
ICAgIG5leHRUZXh0Qm94ID0gbV9saW5lTGF5b3V0UHJvdmlkZXIuaXRlcmF0b3JGb3JJbmxpbmVU
ZXh0Qm94KG1fc29ydGVkVGV4dEJveGVzW21fc29ydGVkVGV4dEJveGVzUG9zaXRpb24gKyAxXSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBuZXh0VGV4dEJveCA9IG1fdGV4dEJveDsK
KyAgICAgICAgICAgICsrbmV4dFRleHRCb3g7CisgICAgICAgIH0KIAogICAgICAgICBpZiAocnVu
U3RhcnQgPCBydW5FbmQpIHsKICAgICAgICAgICAgIC8vIEhhbmRsZSBlaXRoZXIgYSBzaW5nbGUg
bmV3bGluZSBjaGFyYWN0ZXIgKHdoaWNoIGJlY29tZXMgYSBzcGFjZSksCkBAIC04MTcsNyArNzE4
LDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3goKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgLy8gQWR2YW5jZSBhbmQgcmV0dXJuCi0gICAgICAgICAg
ICB1bnNpZ25lZCBuZXh0UnVuU3RhcnQgPSBuZXh0VGV4dEJveCA/IG5leHRUZXh0Qm94LT5zdGFy
dCgpIDogcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgdW5zaWduZWQgbmV4dFJ1
blN0YXJ0ID0gbmV4dFRleHRCb3ggPyBuZXh0VGV4dEJveC0+bG9jYWxTdGFydE9mZnNldCgpIDog
cmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwogICAgICAgICAgICAgaWYgKG5leHRSdW5TdGFydCA+IHJ1
bkVuZCkKICAgICAgICAgICAgICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNw
YWNlID0gdHJ1ZTsgLy8gY29sbGFwc2VkIHNwYWNlIGJldHdlZW4gcnVucyBvciBhdCB0aGUgZW5k
CiAgICAgICAgICAgICBtX3RleHRCb3ggPSBuZXh0VGV4dEJveDsKQEAgLTgzMiw4ICs3MzMsOCBA
QCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgfQogICAgIGlmICghbV90
ZXh0Qm94ICYmIG1fcmVtYWluaW5nVGV4dEJveCkgewogICAgICAgICBtX3RleHRCb3ggPSBtX3Jl
bWFpbmluZ1RleHRCb3g7Ci0gICAgICAgIG1fcmVtYWluaW5nVGV4dEJveCA9IG51bGxwdHI7Ci0g
ICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZW1haW5pbmdU
ZXh0Qm94ID0geyB9OworICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4dCA9IHsgfTsKICAgICAgICAg
bV9vZmZzZXQgPSAwOwogICAgICAgICBoYW5kbGVUZXh0Qm94KCk7CiAgICAgfQpAQCAtODU2LDcg
Kzc1Nyw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJl
bmRlclRleHRGcmFnbWVudCYgcmVuZGVyZXIpCiAgICAgICAgIGlmIChhdXRvKiBmaXJzdExldHRl
clRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyKSkgewogICAg
ICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSB0cnVlOwogICAgICAgICAgICAgbV9yZW1h
aW5pbmdUZXh0Qm94ID0gbV90ZXh0Qm94OwotICAgICAgICAgICAgbV90ZXh0Qm94ID0gZmlyc3RM
ZXR0ZXJUZXh0LT5maXJzdFRleHRCb3goKTsKKyAgICAgICAgICAgIG1fdGV4dEJveCA9IG1fbGlu
ZUxheW91dFByb3ZpZGVyLmZpcnN0VGV4dEJveEZvcigqZmlyc3RMZXR0ZXJUZXh0KTsKICAgICAg
ICAgICAgIG1fc29ydGVkVGV4dEJveGVzLmNsZWFyKCk7CiAgICAgICAgICAgICBtX2ZpcnN0TGV0
dGVyVGV4dCA9IGZpcnN0TGV0dGVyVGV4dDsKICAgICAgICAgfQpAQCAtMTIyMiw3ICsxMTIzLDYg
QEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyLCBOb2Rl
JiBjaGFyYWN0ZXJOb2RlLCBOb2RlKiBvZmYKICAgICBtX3RleHQgPSBtX2NvcHlhYmxlVGV4dC50
ZXh0KCk7CiAgICAgbV9sYXN0Q2hhcmFjdGVyID0gY2hhcmFjdGVyOwogICAgIG1fbGFzdFRleHRO
b2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgPSBmYWxzZTsKLSAgICBtX25leHRSdW5OZWVkc1do
aXRlc3BhY2UgPSBmYWxzZTsKIH0KIAogdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KFRleHQm
IHRleHROb2RlLCBSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRleHRTdGFydE9mZnNldCwgaW50
IHRleHRFbmRPZmZzZXQpCkBAIC0xMjQ3LDcgKzExNDcsNiBAQCB2b2lkIFRleHRJdGVyYXRvcjo6
ZW1pdFRleHQoVGV4dCYgdGV4dE5vZGUsIFJlbmRlclRleHQmIHJlbmRlcmVyLCBpbnQgdGV4dFN0
YXJ0TwogICAgIG1fdGV4dCA9IG1fY29weWFibGVUZXh0LnRleHQoKTsKIAogICAgIG1fbGFzdFRl
eHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgPSBmYWxzZTsKLSAgICBtX25leHRSdW5OZWVk
c1doaXRlc3BhY2UgPSBmYWxzZTsKICAgICBtX2hhc0VtaXR0ZWQgPSB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCAxZjRmZGRmZWY3NS4uZWJjMjUzMjkz
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMjgsNiArMjgsNyBA
QAogLy8gRklYTUU6IE1vdmUgZWFjaCBpdGVyYXRvciBjbGFzcyBpbnRvIGEgc2VwYXJhdGUgaGVh
ZGVyIGZpbGUuCiAKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgorI2luY2x1ZGUgIkxpbmVMYXlv
dXRJbnRlcmZhY2VUZXh0Qm94ZXMuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRl
eHRJdGVyYXRvckJlaGF2aW9yLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTY3LDEw
ICsxNjgsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBz
b21lIHBlbmRpbmcgdGV4dCBmcm9tIHRoZSBjdXJyZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZh
bHNlIGFuZCBudWxsLCB3ZSBnbyBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSog
bV9ub2RlRm9yQWRkaXRpb25hbE5ld2xpbmUgeyBudWxscHRyIH07Ci0gICAgSW5saW5lVGV4dEJv
eCogbV90ZXh0Qm94IHsgbnVsbHB0ciB9OworICAgIExpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRC
b3hJdGVyYXRvciBtX3RleHRCb3g7CiAKICAgICAvLyBVc2VkIHdoZW4gaXRlcmF0aW5nIG92ZXIg
OmZpcnN0LWxldHRlciB0ZXh0IHRvIHNhdmUgcG9pbnRlciB0byByZW1haW5pbmcgdGV4dCBib3gu
Ci0gICAgSW5saW5lVGV4dEJveCogbV9yZW1haW5pbmdUZXh0Qm94IHsgbnVsbHB0ciB9OworICAg
IExpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvciBtX3JlbWFpbmluZ1RleHRCb3g7
CiAKICAgICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRlclRleHQgb2JqZWN0IGZvciA6Zmlyc3Qt
bGV0dGVyLgogICAgIFJlbmRlclRleHQqIG1fZmlyc3RMZXR0ZXJUZXh0IHsgbnVsbHB0ciB9OwpA
QCAtMTgwLDExICsxODEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sYXN0VGV4dE5vZGVFbmRl
ZFdpdGhDb2xsYXBzZWRTcGFjZSB7IGZhbHNlIH07CiAgICAgVUNoYXIgbV9sYXN0Q2hhcmFjdGVy
IHsgMCB9OwogCi0gICAgLy8gVXNlZCB0byBkbyBzaW1wbGUgbGluZSBsYXlvdXQgcnVuIGxvZ2lj
LgotICAgIGJvb2wgbV9uZXh0UnVuTmVlZHNXaGl0ZXNwYWNlIHsgZmFsc2UgfTsKLSAgICB1bnNp
Z25lZCBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyB7IDAgfTsKLSAgICBUZXh0
KiBtX3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJbkZsb3cgeyBudWxscHRyIH07Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPiBtX2Zsb3dSdW5SZXNvbHZl
ckNhY2hlOworICAgIExpbmVMYXlvdXRJbnRlcmZhY2U6OlByb3ZpZGVyIG1fbGluZUxheW91dFBy
b3ZpZGVyOwogCiAgICAgLy8gVXNlZCB3aGVuIHRleHQgYm94ZXMgYXJlIG91dCBvZiBvcmRlciAo
SGVicmV3L0FyYWJpYyB3aXRoIGVtYmVkZGVkIExUUiB0ZXh0KQogICAgIFZlY3RvcjxJbmxpbmVU
ZXh0Qm94Kj4gbV9zb3J0ZWRUZXh0Qm94ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYTA3YzRkMDQxOTAuLjhkNGVkOTJmOTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0yMDIs
OCArMjAyLDggQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0
U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAgICAvLyBtYW55IHRlc3Qg
cmVzdWx0cy4KICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCYgdGV4dCA9IGRvd25jYXN0PFJlbmRl
clRleHQ+KG8pOwogICAgICAgICByID0gSW50UmVjdCh0ZXh0LmZpcnN0UnVuTG9jYXRpb24oKSwg
dGV4dC5saW5lc0JvdW5kaW5nQm94KCkuc2l6ZSgpKTsKLSAgICAgICAgYXV0byB0ZXh0Qm94ZXMg
PSBMaW5lTGF5b3V0SW50ZXJmYWNlOjp0ZXh0Qm94ZXModGV4dCk7Ci0gICAgICAgIGlmICh0ZXh0
Qm94ZXMuYmVnaW4oKSA9PSB0ZXh0Qm94ZXMuZW5kKCkpCisgICAgICAgIExpbmVMYXlvdXRJbnRl
cmZhY2U6OlByb3ZpZGVyIGxpbmVMYXlvdXRQcm92aWRlcjsKKyAgICAgICAgaWYgKCFsaW5lTGF5
b3V0UHJvdmlkZXIuZmlyc3RUZXh0Qm94Rm9yKHRleHQpKQogICAgICAgICAgICAgYWRqdXN0Rm9y
VGFibGVDZWxscyA9IGZhbHNlOwogICAgIH0gZWxzZSBpZiAoby5pc0JSKCkpIHsKICAgICAgICAg
Y29uc3QgUmVuZGVyTGluZUJyZWFrJiBiciA9IGRvd25jYXN0PFJlbmRlckxpbmVCcmVhaz4obyk7
CkBAIC01NDksOCArNTQ5LDkgQEAgdm9pZCB3cml0ZShUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4gYmUKICAgICBUZXh0U3Ry
ZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7CiAKICAgICBpZiAoaXM8UmVuZGVyVGV4
dD4obykpIHsKKyAgICAgICAgTGluZUxheW91dEludGVyZmFjZTo6UHJvdmlkZXIgbGluZUxheW91
dFByb3ZpZGVyOwogICAgICAgICBhdXRvJiB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4obyk7
Ci0gICAgICAgIGZvciAoYXV0byB0ZXh0Qm94IDogTGluZUxheW91dEludGVyZmFjZTo6dGV4dEJv
eGVzKHRleHQpKSB7CisgICAgICAgIGZvciAoYXV0byYgdGV4dEJveCA6IGxpbmVMYXlvdXRQcm92
aWRlci50ZXh0Qm94UmFuZ2VGb3IodGV4dCkpIHsKICAgICAgICAgICAgIHRzIDw8IGluZGVudDsK
ICAgICAgICAgICAgIHdyaXRlVGV4dEJveCh0cywgdGV4dCwgdGV4dEJveCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNv
bHZlci5jcHAKaW5kZXggMDBmMDM4MTY3MDguLmQyMWQ5NjJkYjg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcApAQCAt
MTEzLDcgKzExMyw3IEBAIHVuc2lnbmVkIFJ1blJlc29sdmVyOjpSdW46OmxvY2FsRW5kKCkgY29u
c3QKIH0KIAogUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBSdW5SZXNvbHZl
ciYgcmVzb2x2ZXIsIHVuc2lnbmVkIHJ1bkluZGV4LCB1bnNpZ25lZCBsaW5lSW5kZXgpCi0gICAg
OiBtX3Jlc29sdmVyKHJlc29sdmVyKQorICAgIDogbV9yZXNvbHZlcigmcmVzb2x2ZXIpCiAgICAg
LCBtX3J1bkluZGV4KHJ1bkluZGV4KQogICAgICwgbV9saW5lSW5kZXgobGluZUluZGV4KQogewpA
QCAtMTI5LDggKzEyOSw4IEBAIFJ1blJlc29sdmVyOjpJdGVyYXRvciYgUnVuUmVzb2x2ZXI6Okl0
ZXJhdG9yOjphZHZhbmNlKCkKIAogUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yJiBSdW5SZXNvbHZlcjo6
SXRlcmF0b3I6OmFkdmFuY2VMaW5lcyh1bnNpZ25lZCBsaW5lQ291bnQpCiB7Ci0gICAgdW5zaWdu
ZWQgcnVuQ291bnQgPSBtX3Jlc29sdmVyLm1fbGF5b3V0LnJ1bkNvdW50KCk7Ci0gICAgaWYgKHJ1
bkNvdW50ID09IG1fcmVzb2x2ZXIubV9sYXlvdXQubGluZUNvdW50KCkpIHsKKyAgICB1bnNpZ25l
ZCBydW5Db3VudCA9IHJlc29sdmVyKCkubV9sYXlvdXQucnVuQ291bnQoKTsKKyAgICBpZiAocnVu
Q291bnQgPT0gcmVzb2x2ZXIoKS5tX2xheW91dC5saW5lQ291bnQoKSkgewogICAgICAgICBtX3J1
bkluZGV4ID0gc3RkOjptaW4ocnVuQ291bnQsIG1fcnVuSW5kZXggKyBsaW5lQ291bnQpOwogICAg
ICAgICBtX2xpbmVJbmRleCA9IG1fcnVuSW5kZXg7CiAgICAgICAgIHJldHVybiAqdGhpczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIu
aAppbmRleCA0NTU5MjYwZjJhZC4uNmFiNzAzMTcwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgKQEAgLTk0LDEwICs5NCwx
MCBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIGxpbmVJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGluZUluZGV4OyB9CiAgICAgICAgIEl0ZXJhdG9yJiBhZHZhbmNlKCk7CiAgICAgICAgIEl0
ZXJhdG9yJiBhZHZhbmNlTGluZXModW5zaWduZWQpOwotICAgICAgICBjb25zdCBSdW5SZXNvbHZl
ciYgcmVzb2x2ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVyOyB9Ci0gICAgICAgIGJvb2wg
aW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlci5tX2luUXVpcmtzTW9kZTsg
fQorICAgICAgICBjb25zdCBSdW5SZXNvbHZlciYgcmVzb2x2ZXIoKSBjb25zdCB7IHJldHVybiAq
bV9yZXNvbHZlcjsgfQorICAgICAgICBib29sIGluUXVpcmtzTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IHJlc29sdmVyKCkubV9pblF1aXJrc01vZGU7IH0KIAotICAgICAgICBjb25zdCBSdW5SZXNvbHZl
ciYgbV9yZXNvbHZlcjsKKyAgICAgICAgY29uc3QgUnVuUmVzb2x2ZXIqIG1fcmVzb2x2ZXI7CiAg
ICAgICAgIHVuc2lnbmVkIG1fcnVuSW5kZXg7CiAgICAgICAgIHVuc2lnbmVkIG1fbGluZUluZGV4
OwogICAgIH07CkBAIC0yMzgsNyArMjM4LDcgQEAgaW5saW5lIFJ1blJlc29sdmVyOjpJdGVyYXRv
ciYgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVyYXRvci0tKCkKIAogaW5saW5lIGJvb2wgUnVu
UmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29u
c3QKIHsKLSAgICBBU1NFUlQoJm1fcmVzb2x2ZXIgPT0gJm90aGVyLm1fcmVzb2x2ZXIpOworICAg
IEFTU0VSVChtX3Jlc29sdmVyID09IG90aGVyLm1fcmVzb2x2ZXIpOwogICAgIHJldHVybiBtX3J1
bkluZGV4ID09IG90aGVyLm1fcnVuSW5kZXg7CiB9CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCBpbmxp
bmUgUnVuUmVzb2x2ZXI6OlJ1biBSdW5SZXNvbHZlcjo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNv
bnN0CiAKIGlubGluZSBjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpSdW4mIFJ1blJlc29sdmVyOjpJ
dGVyYXRvcjo6c2ltcGxlUnVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yZXNvbHZlci5tX2xh
eW91dC5ydW5BdChtX3J1bkluZGV4KTsKKyAgICByZXR1cm4gcmVzb2x2ZXIoKS5tX2xheW91dC5y
dW5BdChtX3J1bkluZGV4KTsKIH0KIAogaW5saW5lIFJ1blJlc29sdmVyOjpJdGVyYXRvciBSdW5S
ZXNvbHZlcjo6YmVnaW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50ZXJmYWNlVGV4dEJveGVzLmNwcAppbmRleCBk
YWE4NjNiMWNkYy4uMTgwYzBlZWM3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuY3BwCkBA
IC0zNSw0NiArMzUsNDYgQEAgbmFtZXNwYWNlIExpbmVMYXlvdXRJbnRlcmZhY2UgewogCiBGbG9h
dFJlY3QgVGV4dEJveDo6cmVjdCgpIGNvbnN0CiB7Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25z
dCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3Igc2ltcGxlTGluZUl0ZXJh
dG9yKSB7Ci0gICAgICAgIHJldHVybiAoKnNpbXBsZUxpbmVJdGVyYXRvcikucmVjdCgpOworICAg
IGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRo
KSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLnJlY3QoKTsKICAgICB9OwogCiAg
ICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkg
ewogICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+ZnJhbWVSZWN0KCk7CiAgICAgfTsKIAot
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1faXRlcmF0b3IubV9wYXRoVmFyaWFudCwgc2ltcGxl
LCBjb21wbGV4KTsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZh
cmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CiB9CiAKIEZsb2F0UmVjdCBUZXh0Qm94Ojpsb2dpY2Fs
UmVjdCgpIGNvbnN0CiB7Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBTaW1wbGVMaW5lTGF5
b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3Igc2ltcGxlTGluZUl0ZXJhdG9yKSB7Ci0gICAgICAg
IHJldHVybiAoKnNpbXBsZUxpbmVJdGVyYXRvcikucmVjdCgpOworICAgIGF1dG8gc2ltcGxlID0g
W10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJl
dHVybiAoKnBhdGguaXRlcmF0b3IpLnJlY3QoKTsKICAgICB9OwogCiAgICAgYXV0byBjb21wbGV4
ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgewogICAgICAgICByZXR1
cm4gaW5saW5lVGV4dEJveC0+bG9naWNhbEZyYW1lUmVjdCgpOwogICAgIH07CiAKLSAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX2l0ZXJhdG9yLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxl
eCk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBz
aW1wbGUsIGNvbXBsZXgpOwogfQogCiBib29sIFRleHRCb3g6Omhhc0h5cGhlbigpIGNvbnN0CiB7
Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZl
cjo6SXRlcmF0b3Igc2ltcGxlTGluZUl0ZXJhdG9yKSB7Ci0gICAgICAgIHJldHVybiAoKnNpbXBs
ZUxpbmVJdGVyYXRvcikuaGFzSHlwaGVuKCk7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBU
ZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0
aC5pdGVyYXRvcikuaGFzSHlwaGVuKCk7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcGxleCA9IFtd
KGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKICAgICAgICAgcmV0dXJuIGlu
bGluZVRleHRCb3gtPmhhc0h5cGhlbigpOwogICAgIH07CiAKLSAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX2l0ZXJhdG9yLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CisgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBs
ZXgpOwogfQogCiBib29sIFRleHRCb3g6OmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdAog
ewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2
ZXI6Okl0ZXJhdG9yKSB7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0
b3I6OlNpbXBsZVBhdGgmKSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CiAKQEAgLTgy
LDEyICs4MiwxMiBAQCBib29sIFRleHRCb3g6OmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25z
dAogICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
OwogICAgIH07CiAKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2l0ZXJhdG9yLm1fcGF0aFZh
cmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0
b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwogfQogCiBib29sIFRleHRCb3g6
OmRpck92ZXJyaWRlKCkgY29uc3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFNpbXBs
ZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvcikgeworICAgIGF1dG8gc2ltcGxlID0g
W10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJikgewogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfTsKIApAQCAtOTUsMjAgKzk1LDY0IEBAIGJvb2wgVGV4dEJveDo6ZGlyT3Zl
cnJpZGUoKSBjb25zdAogICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+ZGlyT3ZlcnJpZGUo
KTsKICAgICB9OwogCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9pdGVyYXRvci5tX3BhdGhW
YXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJh
dG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKIH0KIAogU3RyaW5nVmlldyBU
ZXh0Qm94Ojp0ZXh0KCkgY29uc3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFNpbXBs
ZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBzaW1wbGVMaW5lSXRlcmF0b3IpIHsK
LSAgICAgICAgcmV0dXJuICgqc2ltcGxlTGluZUl0ZXJhdG9yKS50ZXh0KCk7CisgICAgYXV0byBz
aW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAg
ICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikudGV4dCgpOwogICAgIH07CiAKICAgICBhdXRv
IGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7CiAgICAg
ICAgIHJldHVybiBTdHJpbmdWaWV3KGlubGluZVRleHRCb3gtPnJlbmRlcmVyKCkudGV4dCgpKS5z
dWJzdHJpbmcoaW5saW5lVGV4dEJveC0+c3RhcnQoKSwgaW5saW5lVGV4dEJveC0+bGVuKCkpOwog
ICAgIH07CiAKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2l0ZXJhdG9yLm1fcGF0aFZhcmlh
bnQsIHNpbXBsZSwgY29tcGxleCk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3Io
KS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit1bnNpZ25lZCBUZXh0Qm94
Ojpsb2NhbFN0YXJ0T2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0
IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpw
YXRoLml0ZXJhdG9yKS5sb2NhbFN0YXJ0KCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9
IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKKyAgICAgICAgcmV0dXJu
IGlubGluZVRleHRCb3gtPnN0YXJ0KCk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKwordW5z
aWduZWQgVGV4dEJveDo6bG9jYWxFbmRPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxl
ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAg
IHJldHVybiAoKnBhdGguaXRlcmF0b3IpLmxvY2FsRW5kKCk7CisgICAgfTsKKworICAgIGF1dG8g
Y29tcGxleCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKKyAgICAg
ICAgcmV0dXJuIGlubGluZVRleHRCb3gtPmVuZCgpOworICAgIH07CisKKyAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9
CisKK3Vuc2lnbmVkIFRleHRCb3g6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUg
PSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAg
cmV0dXJuICgqcGF0aC5pdGVyYXRvcikuZW5kKCkgLSAoKnBhdGguaXRlcmF0b3IpLnN0YXJ0KCk7
CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlu
bGluZVRleHRCb3gpIHsKKyAgICAgICAgcmV0dXJuIGlubGluZVRleHRCb3gtPmxlbigpOworICAg
IH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQs
IHNpbXBsZSwgY29tcGxleCk7Cit9CisKK2lubGluZSBjb25zdCBUZXh0Qm94SXRlcmF0b3ImIFRl
eHRCb3g6Oml0ZXJhdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
VGV4dEJveEl0ZXJhdG9yJj4oKnRoaXMpOwogfQogCiBUZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJ
dGVyYXRvcihjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KQpAQCAtMTE2LDE1ICsx
NjAsMTUgQEAgVGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IoY29uc3QgSW5saW5lVGV4
dEJveCogaW5saW5lVGV4dEJveCkKIHsKIH0KIAotVGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRl
cmF0b3IoU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIHNpbXBsZUxpbmVJ
dGVyYXRvcikKLSAgICA6IG1fcGF0aFZhcmlhbnQoc2ltcGxlTGluZUl0ZXJhdG9yKQorVGV4dEJv
eEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IoU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6
Okl0ZXJhdG9yIGl0ZXJhdG9yLCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0
b3IgZW5kKQorICAgIDogbV9wYXRoVmFyaWFudChUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgg
eyBpdGVyYXRvciwgZW5kIH0pCiB7CiB9CiAKIFRleHRCb3hJdGVyYXRvciYgVGV4dEJveEl0ZXJh
dG9yOjp0cmF2ZXJzZU5leHQoKQogewotICAgIGF1dG8gc2ltcGxlID0gW10oU2ltcGxlTGluZUxh
eW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yJiBzaW1wbGVMaW5lSXRlcmF0b3IpIHsKLSAgICAg
ICAgKytzaW1wbGVMaW5lSXRlcmF0b3I7CisgICAgYXV0byBzaW1wbGUgPSBbXShUZXh0Qm94SXRl
cmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgKytwYXRoLml0ZXJhdG9yOwogICAg
IH07CiAKICAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiYgaW5saW5l
VGV4dEJveCkgewpAQCAtMTQxLDggKzE4NSw4IEBAIGJvb2wgVGV4dEJveEl0ZXJhdG9yOjpvcGVy
YXRvcj09KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgaWYgKG1fcGF0
aFZhcmlhbnQuaW5kZXgoKSAhPSBvdGhlci5tX3BhdGhWYXJpYW50LmluZGV4KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc2ltcGxlID0gWyZdKGNvbnN0IFNpbXBsZUxpbmVM
YXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBzaW1wbGVMaW5lSXRlcmF0b3IpIHsKLSAgICAg
ICAgcmV0dXJuIHNpbXBsZUxpbmVJdGVyYXRvciA9PSBXVEY6OmdldDxTaW1wbGVMaW5lTGF5b3V0
OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3I+KG90aGVyLm1fcGF0aFZhcmlhbnQpOworICAgIGF1dG8g
c2ltcGxlID0gWyZdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewor
ICAgICAgICByZXR1cm4gcGF0aC5pdGVyYXRvciA9PSBXVEY6OmdldDxUZXh0Qm94SXRlcmF0b3I6
OlNpbXBsZVBhdGg+KG90aGVyLm1fcGF0aFZhcmlhbnQpLml0ZXJhdG9yOwogICAgIH07CiAKICAg
ICBhdXRvIGNvbXBsZXggPSBbJl0oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkg
ewpAQCAtMTUyLDMyICsxOTYsNDggQEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yPT0o
Y29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI+IHNpbXBsZUxpbmVSdW5SZXNvbHZlckZv
clRleHQoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKK2Jvb2wgVGV4dEJveEl0ZXJhdG9yOjphdEVu
ZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCF0ZXh0LnNpbXBsZUxpbmVMYXlvdXQoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4gU2ltcGxlTGluZUxheW91dDo6cnVuUmVz
b2x2ZXIoZG93bmNhc3Q8Y29uc3QgUmVuZGVyQmxvY2tGbG93PigqdGV4dC5wYXJlbnQoKSksICp0
ZXh0LnNpbXBsZUxpbmVMYXlvdXQoKSk7CisgICAgYXV0byBzaW1wbGUgPSBbJl0oY29uc3QgVGV4
dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLml0
ZXJhdG9yID09IHBhdGguZW5kOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBbJl0oY29u
c3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgeworICAgICAgICByZXR1cm4gIWlubGlu
ZVRleHRCb3g7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlh
bnQsIHNpbXBsZSwgY29tcGxleCk7CiB9CiAKLXN0YXRpYyBhdXRvIHJhbmdlRm9yVGV4dChjb25z
dCBSZW5kZXJUZXh0JiB0ZXh0LCBPcHRpb25hbDxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZl
cj4mIHNpbXBsZUxpbmVSdW5SZXNvbHZlcikKK1Byb3ZpZGVyOjpQcm92aWRlcigpID0gZGVmYXVs
dDsKK1Byb3ZpZGVyOjp+UHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKK1RleHRCb3hJdGVyYXRvciBQ
cm92aWRlcjo6Zmlyc3RUZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiB7Ci0gICAg
aWYgKHNpbXBsZUxpbmVSdW5SZXNvbHZlcikgewotICAgICAgICBhdXRvIHJhbmdlID0gc2ltcGxl
TGluZVJ1blJlc29sdmVyLT5yYW5nZUZvclJlbmRlcmVyKHRleHQpOwotICAgICAgICByZXR1cm4g
V1RGOjptYWtlSXRlcmF0b3JSYW5nZShUZXh0Qm94SXRlcmF0b3IocmFuZ2UuYmVnaW4oKSksIFRl
eHRCb3hJdGVyYXRvcihyYW5nZS5lbmQoKSkpOworICAgIGlmIChhdXRvKiBzaW1wbGVMaW5lTGF5
b3V0ID0gdGV4dC5zaW1wbGVMaW5lTGF5b3V0KCkpIHsKKyAgICAgICAgYXV0byYgcGFyZW50ID0g
ZG93bmNhc3Q8Y29uc3QgUmVuZGVyQmxvY2tGbG93PigqdGV4dC5wYXJlbnQoKSk7CisgICAgICAg
IGF1dG8mIHJlc29sdmVyID0gbV9zaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXJzLmVuc3VyZSgmcGFy
ZW50LCBbJl0geworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2ltcGxlTGluZUxheW91
dDo6UnVuUmVzb2x2ZXI+KHBhcmVudCwgKnNpbXBsZUxpbmVMYXlvdXQpOworICAgICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CisKKyAgICAgICAgYXV0byByYW5nZSA9IHJlc29sdmVyLT5yYW5nZUZv
clJlbmRlcmVyKHRleHQpOworICAgICAgICByZXR1cm4geyByYW5nZS5iZWdpbigpLCByYW5nZS5l
bmQoKSB9OwogICAgIH0KLSAgICByZXR1cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZShUZXh0Qm94
SXRlcmF0b3IodGV4dC5maXJzdFRleHRCb3goKSksIFRleHRCb3hJdGVyYXRvcihudWxscHRyKSk7
CisKKyAgICByZXR1cm4gVGV4dEJveEl0ZXJhdG9yIHsgdGV4dC5maXJzdFRleHRCb3goKSB9Owog
fQogCi1UZXh0Qm94UmFuZ2U6OlRleHRCb3hSYW5nZShjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQot
ICAgIDogbV9zaW1wbGVMaW5lUnVuUmVzb2x2ZXIoc2ltcGxlTGluZVJ1blJlc29sdmVyRm9yVGV4
dCh0ZXh0KSkKLSAgICAsIG1fcmFuZ2UocmFuZ2VGb3JUZXh0KHRleHQsIG1fc2ltcGxlTGluZVJ1
blJlc29sdmVyKSkKK1RleHRCb3hSYW5nZSBQcm92aWRlcjo6dGV4dEJveFJhbmdlRm9yKGNvbnN0
IFJlbmRlclRleHQmIHRleHQpCiB7CisgICAgcmV0dXJuIHsgZmlyc3RUZXh0Qm94Rm9yKHRleHQp
IH07CiB9CiAKLVRleHRCb3hSYW5nZSB0ZXh0Qm94ZXMoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkK
K1RleHRCb3hJdGVyYXRvciBQcm92aWRlcjo6aXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KGNvbnN0
IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpCiB7Ci0gICAgcmV0dXJuIHsgdGV4dCB9Owor
ICAgIHJldHVybiBUZXh0Qm94SXRlcmF0b3IgeyBpbmxpbmVUZXh0Qm94IH07CiB9CiAKKworCiB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0
SW50ZXJmYWNlVGV4dEJveGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
TGF5b3V0SW50ZXJmYWNlVGV4dEJveGVzLmgKaW5kZXggNDY0YzIyYTczZmIuLjJkN2JkMmViODNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50
ZXJmYWNlVGV4dEJveGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGlu
ZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CiAj
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CkBAIC0zNCw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElubGluZVRl
eHRCb3g7CitjbGFzcyBQcm92aWRlcjsKIGNsYXNzIFJlbmRlclRleHQ7CiAKIG5hbWVzcGFjZSBM
aW5lTGF5b3V0SW50ZXJmYWNlIHsKQEAgLTQxLDEyICs0MywxMCBAQCBuYW1lc3BhY2UgTGluZUxh
eW91dEludGVyZmFjZSB7CiBjbGFzcyBUZXh0Qm94Q29udGV4dDsKIGNsYXNzIFRleHRCb3hJdGVy
YXRvcjsKIAorc3RydWN0IEVuZEl0ZXJhdG9yIHsgfTsKKwogY2xhc3MgVGV4dEJveCB7CiBwdWJs
aWM6Ci0gICAgVGV4dEJveChjb25zdCBUZXh0Qm94SXRlcmF0b3ImIGl0ZXJhdG9yKQotICAgICAg
ICA6IG1faXRlcmF0b3IoaXRlcmF0b3IpCi0gICAgeyB9Ci0KICAgICBGbG9hdFJlY3QgcmVjdCgp
IGNvbnN0OwogICAgIEZsb2F0UmVjdCBsb2dpY2FsUmVjdCgpIGNvbnN0OwogCkBAIC01Niw0NSAr
NTYsODUgQEAgcHVibGljOgogCiAgICAgU3RyaW5nVmlldyB0ZXh0KCkgY29uc3Q7CiAKKyAgICAv
LyBUaGVzZSBvZmZzZXRzIGFyZSByZWxhdGl2ZSB0byB0aGUgdGV4dCByZW5kZXJlciAobm90IGZs
b3cpLgorICAgIHVuc2lnbmVkIGxvY2FsU3RhcnRPZmZzZXQoKSBjb25zdDsKKyAgICB1bnNpZ25l
ZCBsb2NhbEVuZE9mZnNldCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Owor
Citwcm90ZWN0ZWQ6CisgICAgVGV4dEJveCgpID0gZGVmYXVsdDsKKyAgICBUZXh0Qm94KGNvbnN0
IFRleHRCb3gmKSA9IGRlZmF1bHQ7CisgICAgVGV4dEJveChUZXh0Qm94JiYpID0gZGVmYXVsdDsK
KyAgICBUZXh0Qm94JiBvcGVyYXRvcj0oY29uc3QgVGV4dEJveCYpID0gZGVmYXVsdDsKKyAgICBU
ZXh0Qm94JiBvcGVyYXRvcj0oVGV4dEJveCYmKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6Ci0gICAg
Y29uc3QgVGV4dEJveEl0ZXJhdG9yJiBtX2l0ZXJhdG9yOworICAgIGNvbnN0IFRleHRCb3hJdGVy
YXRvciYgaXRlcmF0b3IoKSBjb25zdDsKIH07CiAKLWNsYXNzIFRleHRCb3hJdGVyYXRvciB7Citj
bGFzcyBUZXh0Qm94SXRlcmF0b3IgOiBwcml2YXRlIFRleHRCb3ggewogcHVibGljOgotICAgIFRl
eHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVUZXh0Qm94Kik7Ci0gICAgVGV4dEJveEl0ZXJhdG9y
KFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvcik7CisgICAgVGV4dEJveEl0
ZXJhdG9yKCkgOiBtX3BhdGhWYXJpYW50KG51bGxwdHIpIHsgfTsKIAogICAgIFRleHRCb3hJdGVy
YXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dCgpOyB9CiAKKyAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KKwogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImKSBjb25zdDsKICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KIAotICAgIFRleHRCb3ggb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4geyAqdGhpcyB9OyB9CisgICAgYm9vbCBvcGVyYXRvcj09KEVuZEl0ZXJhdG9yKSBjb25zdCB7
IHJldHVybiBhdEVuZCgpOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KEVuZEl0ZXJhdG9yKSBjb25z
dCB7IHJldHVybiAhYXRFbmQoKTsgfQorCisgICAgY29uc3QgVGV4dEJveCYgb3BlcmF0b3IqKCkg
Y29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICBjb25zdCBUZXh0Qm94KiBvcGVyYXRvci0+KCkg
Y29uc3QgeyByZXR1cm4gdGhpczsgfQorCisgICAgYm9vbCBhdEVuZCgpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUZXh0Qm94OworICAgIGZyaWVuZCBjbGFzcyBQcm92aWRl
cjsKKworICAgIGV4cGxpY2l0IFRleHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVUZXh0Qm94Kik7
CisgICAgVGV4dEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVy
YXRvciwgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGVuZCk7CiAKICAg
ICBUZXh0Qm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dCgpOwogCi0gICAgVmFyaWFudDxTaW1wbGVM
aW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IsIGNvbnN0IElubGluZVRleHRCb3gqPiBt
X3BhdGhWYXJpYW50OworICAgIHN0cnVjdCBTaW1wbGVQYXRoIHsKKyAgICAgICAgU2ltcGxlTGlu
ZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGl0ZXJhdG9yOworICAgICAgICBTaW1wbGVM
aW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgZW5kOworICAgIH07CisgICAgVmFyaWFu
dDxTaW1wbGVQYXRoLCBjb25zdCBJbmxpbmVUZXh0Qm94Kj4gbV9wYXRoVmFyaWFudDsKIH07CiAK
IGNsYXNzIFRleHRCb3hSYW5nZSB7CiBwdWJsaWM6Ci0gICAgVGV4dEJveFJhbmdlKGNvbnN0IFJl
bmRlclRleHQmKTsKKyAgICBUZXh0Qm94UmFuZ2UoVGV4dEJveEl0ZXJhdG9yIGJlZ2luKQorICAg
ICAgICA6IG1fYmVnaW4oYmVnaW4pCisgICAgeworICAgIH0KIAotICAgIFRleHRCb3hJdGVyYXRv
ciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2UuYmVnaW4oKTsgfQotICAgIFRleHRCb3hJ
dGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3JhbmdlLmVuZCgpOyB9CisgICAgVGV4dEJv
eEl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9iZWdpbjsgfQorICAgIEVuZEl0ZXJh
dG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBj
bGFzcyBUZXh0Qm94SXRlcmF0b3I7Ci0KLSAgICBPcHRpb25hbDxTaW1wbGVMaW5lTGF5b3V0OjpS
dW5SZXNvbHZlcj4gbV9zaW1wbGVMaW5lUnVuUmVzb2x2ZXI7Ci0gICAgV1RGOjpJdGVyYXRvclJh
bmdlPFRleHRCb3hJdGVyYXRvcj4gbV9yYW5nZTsKKyAgICBUZXh0Qm94SXRlcmF0b3IgbV9iZWdp
bjsKIH07CiAKLVRleHRCb3hSYW5nZSB0ZXh0Qm94ZXMoY29uc3QgUmVuZGVyVGV4dCYpOworY2xh
c3MgUHJvdmlkZXIgeworcHVibGljOgorICAgIFByb3ZpZGVyKCk7CisgICAgflByb3ZpZGVyKCk7
CisKKyAgICBUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRleHQm
KTsKKyAgICBUZXh0Qm94UmFuZ2UgdGV4dEJveFJhbmdlRm9yKGNvbnN0IFJlbmRlclRleHQmKTsK
KworICAgIC8vIEZJWE1FOiBSZW1vdmUuCisgICAgVGV4dEJveEl0ZXJhdG9yIGl0ZXJhdG9yRm9y
SW5saW5lVGV4dEJveChjb25zdCBJbmxpbmVUZXh0Qm94Kik7CisKK3ByaXZhdGU6CisgICAgSGFz
aE1hcDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cqLCBzdGQ6OnVuaXF1ZV9wdHI8U2ltcGxlTGluZUxh
eW91dDo6UnVuUmVzb2x2ZXI+PiBtX3NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlcnM7Cit9OwogCiB9
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378853</attachid>
            <date>2019-09-16 03:50:26 -0700</date>
            <delta_ts>2019-09-16 04:38:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>lineapi-textiterator-7.patch</filename>
            <type>text/plain</type>
            <size>60669</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNjVmMGRhZmZjYi4uMzcxOWVjMmE1MzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAor
MjAxOS0wOS0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
RWxpbWluYXRlIHNlcGFyYXRlIHNpbXBsZSBsaW5lIGxheW91dCBwYXRoIGZyb20gVGV4dEl0ZXJh
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3
NjAKKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBzaW1wbGUgYW5kIGNvbXBsZXggbGluZSBsYXlvdXQgcGF0aCByZXN1bHRzIGZy
b20gVGV4dEl0ZXJhdG9yIG1hdGNoLCBjYXVzaW5nIHNvbWUgd2hpdGVzcGFjZSBjaGFuZ2VzLgor
CisgICAgICAgICogYW5pbWF0aW9ucy9saW5laGVpZ2h0LWFuaW1hdGlvbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25zL3dpZHRoLXVzaW5nLWVtcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogY29tcG9zaXRpbmcvc2hhcmVkLWJhY2tpbmcvb3ZlcmZsb3ctc2Nyb2xs
L2Fic29sdXRlLWluLXN0YWNraW5nLXJlbGF0aXZlLWluLXNjcm9sbGVyLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLWRvZXMtbm90
LXNpemUtcHJvcGVybHktYWJzb2x1dGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZl
bnRzL3dpbmRvdy1ldmVudHMtYnViYmxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2
ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZTItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
dG9rZW5pemVyL3NjcmlwdF9leHRyYV9jbG9zZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogbGVn
YWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy9saW5laGVpZ2h0LWFuaW1hdGlvbi1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy9z
aW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzY3Jv
bGxpbmdjb29yZGluYXRvci9zY3JvbGxpbmctdHJlZS9uZXN0ZWQtYWJzb2x1dGUtaW4tb3ZlcmZs
b3ctZXhwZWN0ZWQudHh0OgorCiAyMDE5LTA5LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiAhcmVuZGVyZXIoKSBpbiAgV2Vi
Q29yZTo6VGV4dDo6flRleHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbGlu
ZWhlaWdodC1hbmltYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9s
aW5laGVpZ2h0LWFuaW1hdGlvbi1leHBlY3RlZC50eHQKaW5kZXggMzkyMzZiMzQwZDQuLjQxNzJh
OGM1NmUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2xpbmVoZWlnaHQtYW5p
bWF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2xpbmVoZWln
aHQtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKLVRoaXMgdGVzdCBwZXJm
b3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIGxpbmUtaGVpZ2h0IHByb3BlcnR5LiBJdCB0ZXN0cyB3
aGV0aGVyIG9yIG5vdCB3ZSBhcmUgcHJvcGVybHkgZ2V0dGluZyB0aGUgZm9udC1zaXplLkhlcmUg
aXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUg
aXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUg
aXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUg
aXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuCitUaGlz
IHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSBsaW5lLWhlaWdodCBwcm9wZXJ0eS4g
SXQgdGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJlIHByb3Blcmx5IGdldHRpbmcgdGhlIGZvbnQt
c2l6ZS4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUg
dGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUg
dGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUg
dGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUg
dGV4dC4KIFBBU1MgLSAibGluZUhlaWdodCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQg
MC4xcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxMAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC10cmFuc2Zvcm0tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVj
dGVkLnR4dAppbmRleCBhYzViZTMyYjcyMC4uZDllODcyMmY0N2YgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9ybS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNm
b3JtLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBh
bmltYXRpb24gb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eS4gSXQgYW5pbWF0ZXMgb3ZlciAxMCBz
ZWNvbmRzLiBJdCB0YWtlcyAzIHNuYXBzaG90cyBhbmQgZXhwZWN0cyBlYWNoIHJlc3VsdCB0byBi
ZSB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2UuUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3Bl
cnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjMw
OTAxNywwLjk1MTA1NworVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgdHJh
bnNmb3JtIHByb3BlcnR5LiBJdCBhbmltYXRlcyBvdmVyIDEwIHNlY29uZHMuIEl0IHRha2VzIDMg
c25hcHNob3RzIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBhIHNwZWNpZmll
ZCByYW5nZS4gUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgZWxl
bWVudCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjMwOTAxNywwLjk1MTA1NwogUEFT
UyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MiIgZWxlbWVudCBhdCAycyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjMwOTAxNywwLjk1MTA1NwogUEFTUyAtICJ3ZWJraXRU
cmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgYW5kICJib3gyIiBlbGVtZW50cyBhdCAycyBh
cmUgY2xvc2UgZW5vdWdoIHRvIGVhY2ggb3RoZXIKIFBBU1MgLSAid2Via2l0VHJhbnNmb3JtIiBw
cm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
LTEsMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy93aWR0aC11c2luZy1lbXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy93aWR0aC11c2luZy1lbXMtZXhw
ZWN0ZWQudHh0CmluZGV4IGRmYjczN2Q0ZDk2Li5iY2Y2MTkxMmUwMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYW5pbWF0aW9ucy93aWR0aC11c2luZy1lbXMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMvd2lkdGgtdXNpbmctZW1zLWV4cGVjdGVkLnR4dApAQCAtMSwz
ICsxLDMgQEAKLVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIHdpZHRoIHBy
b3BlcnR5IHVzaW5nICdlbScgdW5pdHMuIEl0IHRlc3RzIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBw
cm9wZXJseSBnZXR0aW5nIHRoZSBkZWZhdWx0IGZvbnQtc2l6ZS5IZXJlIGlzIHNvbWUgdGV4dC4g
SGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4g
SGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LgorVGhpcyB0ZXN0IHBlcmZvcm1z
IGFuIGFuaW1hdGlvbiBvZiB0aGUgd2lkdGggcHJvcGVydHkgdXNpbmcgJ2VtJyB1bml0cy4gSXQg
dGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJlIHByb3Blcmx5IGdldHRpbmcgdGhlIGRlZmF1bHQg
Zm9udC1zaXplLiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LgogUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQg
MC4zMzNzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9jb21wb3NpdGluZy9zaGFyZWQtYmFja2luZy9vdmVyZmxvdy1zY3JvbGwvYWJzb2x1dGUt
aW4tc3RhY2tpbmctcmVsYXRpdmUtaW4tc2Nyb2xsZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvc2hhcmVkLWJhY2tpbmcvb3ZlcmZsb3ctc2Nyb2xsL2Fic29sdXRlLWlu
LXN0YWNraW5nLXJlbGF0aXZlLWluLXNjcm9sbGVyLWV4cGVjdGVkLnR4dAppbmRleCBlMWJlMjkw
OWZiZS4uMDI4ZWE4MmNiNmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3No
YXJlZC1iYWNraW5nL292ZXJmbG93LXNjcm9sbC9hYnNvbHV0ZS1pbi1zdGFja2luZy1yZWxhdGl2
ZS1pbi1zY3JvbGxlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
c2hhcmVkLWJhY2tpbmcvb3ZlcmZsb3ctc2Nyb2xsL2Fic29sdXRlLWluLXN0YWNraW5nLXJlbGF0
aXZlLWluLXNjcm9sbGVyLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLXJlbGF0aXZlYWJz
b2x1dGUKK3JlbGF0aXZlIGFic29sdXRlCiAoR3JhcGhpY3NMYXllcgogICAoYW5jaG9yIDAuMDAg
MC4wMCkKICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci1kb2VzLW5vdC1zaXplLXByb3Bl
cmx5LWFic29sdXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9iYWNr
ZHJvcC9iYWNrZHJvcC1maWx0ZXItZG9lcy1ub3Qtc2l6ZS1wcm9wZXJseS1hYnNvbHV0ZS1leHBl
Y3RlZC50eHQKaW5kZXggNjg0ZDYxNjdiYWUuLjNjZjBhZmEyMzc0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9jc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLWRvZXMtbm90LXNp
emUtcHJvcGVybHktYWJzb2x1dGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NzczMv
ZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItZG9lcy1ub3Qtc2l6ZS1wcm9wZXJseS1h
YnNvbHV0ZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1mb29mb29iYXIKK2ZvbyBmb29i
YXIKIChHcmFwaGljc0xheWVyCiAgIChhbmNob3IgMC4wMCAwLjAwKQogICAoYm91bmRzIDgwMC4w
MCA2MDAuMDApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZl
bnRzLWJ1YmJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ct
ZXZlbnRzLWJ1YmJsZS1leHBlY3RlZC50eHQKaW5kZXggZWMwZDEzMDZhYjYuLmY4ODA1NjUzZDA5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJs
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LWV2ZW50
cy1idWJibGUtZXhwZWN0ZWQudHh0CkBAIC0xICsxIEBACi1UZXN0IHRoYXQgc3RvcFByb3BhZ2F0
aW9uKCkgd2lsbCBub3QgYWxsb3cgd2luZG93IGV2ZW50cyB0byBidWJibGUuIENsaWNraW5nIG9u
IHRoaXMgc2hvdWxkIG5vdCBmaXJlIHdpbmRvdy5vbmNsaWNrLiBUaGlzIG1hdGNoZXMgb3VyIG9s
ZCBiZWhhdmlvciBhbmQgRmlyZWZveCBiZWhhdmlvci5zdG9wUHJvcGFnYXRpb24gY2FsbGVkLiBU
ZXN0IFBhc3NlZC4KK1Rlc3QgdGhhdCBzdG9wUHJvcGFnYXRpb24oKSB3aWxsIG5vdCBhbGxvdyB3
aW5kb3cgZXZlbnRzIHRvIGJ1YmJsZS4gQ2xpY2tpbmcgb24gdGhpcyBzaG91bGQgbm90IGZpcmUg
d2luZG93Lm9uY2xpY2suIFRoaXMgbWF0Y2hlcyBvdXIgb2xkIGJlaGF2aW9yIGFuZCBGaXJlZm94
IGJlaGF2aW9yLiBzdG9wUHJvcGFnYXRpb24gY2FsbGVkLiBUZXN0IFBhc3NlZC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRvdy1ldmVudHMtYnViYmxlMi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZTItZXhw
ZWN0ZWQudHh0CmluZGV4IDk4Mjk0ZTMzYzVkLi4zYTNlMzc2NTkwOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LWV2ZW50cy1idWJibGUyLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZTItZXhwZWN0
ZWQudHh0CkBAIC0xICsxIEBACi1UZXN0cyB0aGF0IHByZXZlbnREZWZhdWx0KCkgd2lsbCBzdGls
bCBhbGxvdyB3aW5kb3cgZXZlbnRzIHRvIGJ1YmJsZS4gQ2xpY2tpbmcgaGVyZSBzaG91bGQgZmly
ZSB3aW5kb3cub25jbGljay4gVGhpcyB3aWxsIG1hdGNoIEZpcmVmb3ggYmVoYXZpb3IuV2luZG93
Lm9uQ2xpY2sgZmlyZWQuIFRlc3QgUGFzc2VkLgorVGVzdHMgdGhhdCBwcmV2ZW50RGVmYXVsdCgp
IHdpbGwgc3RpbGwgYWxsb3cgd2luZG93IGV2ZW50cyB0byBidWJibGUuIENsaWNraW5nIGhlcmUg
c2hvdWxkIGZpcmUgd2luZG93Lm9uY2xpY2suIFRoaXMgd2lsbCBtYXRjaCBGaXJlZm94IGJlaGF2
aW9yLiBXaW5kb3cub25DbGljayBmaXJlZC4gVGVzdCBQYXNzZWQuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Rva2VuaXplci9zY3JpcHRfZXh0cmFfY2xvc2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC90b2tlbml6ZXIvc2NyaXB0X2V4dHJhX2Nsb3NlLWV4cGVjdGVkLnR4
dAppbmRleCA0MmZhOGQ4M2Q4Yy4uNzllYjlhNjI0NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvdG9rZW5pemVyL3NjcmlwdF9leHRyYV9jbG9zZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC90b2tlbml6ZXIvc2NyaXB0X2V4dHJhX2Nsb3NlLWV4cGVjdGVkLnR4dApA
QCAtMSArMSBAQAotVEVTVC4uLiBQQVNTRUQuIFRoaXMgdGV4dCBzaG91bGQgc2hvdyB1cC4KK1RF
U1QuLi4JUEFTU0VELiBUaGlzIHRleHQgc2hvdWxkIHNob3cgdXAuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwppbmRleCBhMjdjZjcwMjRmZC4uM2NiYzkyYWQxNGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA5LTE0ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBFbGltaW5hdGUgc2VwYXJhdGUgc2lt
cGxlIGxpbmUgbGF5b3V0IHBhdGggZnJvbSBUZXh0SXRlcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTc2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IFphbGFuIEJ1anRhcy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWdyaWQvYWxpZ25tZW50L2dyaWQtcm93LWF4aXMtYWxpZ25tZW50LXBvc2l0aW9uZWQtaXRlbXMt
MDE1LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1n
cmlkL2FsaWdubWVudC9ncmlkLXJvdy1heGlzLWFsaWdubWVudC1wb3NpdGlvbmVkLWl0ZW1zLTAx
Ni1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2lubmVyVGV4dC9n
ZXR0ZXItZXhwZWN0ZWQudHh0OgorCisgICAgICAgIFR3byAnXHQnIHN1YnRlc3RzIGZsaXAgdG8g
RkFJTCBiZWNhdXNlIHRoaXMgd2FzIG9ubHkgc3VwcG9ydGVkIG9uIFRleHRJdGVyYXRvciBzaW1w
bGUgbGluZSBsYXlvdXQgcGF0aC4KKyAgICAgICAgVGhpcyBjYW4gbm93IGJlIGZpeGVkIGNvcnJl
Y3RseSBmb3IgYm90aCBwYXRocy4KKwogMjAxOS0wOS0xMyAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgV1BUIGltcG9ydGVyIHNob3VsZCBjaGVjayBNRVRBIGds
b2JhbCB0YWcgaW4gLmFueS5qcyBmaWxlcyB0byBnZW5lcmF0ZSB0aGUgdmFsaWQgLmh0bWwgc3R1
YiBmaWxlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWdyaWQvYWxpZ25tZW50L2dyaWQtcm93LWF4aXMtYWxpZ25tZW50LXBv
c2l0aW9uZWQtaXRlbXMtMDE1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2FsaWdubWVudC9ncmlkLXJvdy1heGlz
LWFsaWdubWVudC1wb3NpdGlvbmVkLWl0ZW1zLTAxNS1leHBlY3RlZC50eHQKaW5kZXggZGRjOTFl
ZTQ1ZDYuLmNmY2M4MDA3YmRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hbGlnbm1lbnQvZ3JpZC1yb3ctYXhpcy1h
bGlnbm1lbnQtcG9zaXRpb25lZC1pdGVtcy0wMTUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2FsaWdubWVu
dC9ncmlkLXJvdy1heGlzLWFsaWdubWVudC1wb3NpdGlvbmVkLWl0ZW1zLTAxNS1leHBlY3RlZC50
eHQKQEAgLTMsNyArMyw3IEBAIFggWFhYIFgKIFhYIFhYWFggWFggWFhYIFgKIFggWFhYCiBYCi1Y
WCBYWFhYIFhYIFhYWCBYCitYWCBYWFggWCBYWCBYWFggWAogWCBYWFggWAogWFggWFhYWCBYWCBY
WFggWAogWCBYWFgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2FsaWdubWVudC9ncmlkLXJvdy1heGlzLWFsaWdubWVu
dC1wb3NpdGlvbmVkLWl0ZW1zLTAxNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hbGlnbm1lbnQvZ3JpZC1yb3ct
YXhpcy1hbGlnbm1lbnQtcG9zaXRpb25lZC1pdGVtcy0wMTYtZXhwZWN0ZWQudHh0CmluZGV4IGRk
YzkxZWU0NWQ2Li5jZmNjODAwN2JkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvYWxpZ25tZW50L2dyaWQtcm93LWF4
aXMtYWxpZ25tZW50LXBvc2l0aW9uZWQtaXRlbXMtMDE2LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hbGln
bm1lbnQvZ3JpZC1yb3ctYXhpcy1hbGlnbm1lbnQtcG9zaXRpb25lZC1pdGVtcy0wMTYtZXhwZWN0
ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBYIFhYWCBYCiBYWCBYWFhYIFhYIFhYWCBYCiBYIFhYWAog
WAotWFggWFhYWCBYWCBYWFggWAorWFggWFhYIFggWFggWFhYIFgKIFggWFhYIFgKIFhYIFhYWFgg
WFggWFhYIFgKIFggWFhYCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2lubmVyVGV4dC9nZXR0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9pbm5lclRleHQvZ2V0dGVyLWV4cGVj
dGVkLnR4dAppbmRleCAwNDZkNmY1MGEyZi4uZDA3ZmZhZTdjMmEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaW5uZXJUZXh0L2dldHRlci1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9pbm5lclRleHQvZ2V0dGVyLWV4cGVjdGVkLnR4dApAQCAtNyw3ICs3LDcgQEAgUEFTUyBU
cmFpbGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQgKCI8ZGl2PmFiYyAiKQogUEFTUyBJbnRlcm5hbCB3
aGl0ZXNwYWNlIGNvbXByZXNzZWQgKCI8ZGl2PmFiYyAgZGVmIikgCiBQQVNTIFxuIGNvbnZlcnRl
ZCB0byBzcGFjZSAoIjxkaXY+YWJjXG5kZWYiKSAKIFBBU1MgXHIgY29udmVydGVkIHRvIHNwYWNl
ICgiPGRpdj5hYmNccmRlZiIpIAotUEFTUyBcdCBjb252ZXJ0ZWQgdG8gc3BhY2UgKCI8ZGl2PmFi
Y1x0ZGVmIikgCitGQUlMIFx0IGNvbnZlcnRlZCB0byBzcGFjZSAoIjxkaXY+YWJjXHRkZWYiKSBh
c3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYWJjIGRlZiIgYnV0IGdvdCAiYWJjXHRkZWYiCiBGQUlM
IFRyYWlsaW5nIHdoaXRlc3BhY2UgYmVmb3JlIGhhcmQgbGluZSBicmVhayByZW1vdmVkICgiPGRp
dj5hYmMgPGJyPmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhYmNcbmRlZiIgYnV0IGdv
dCAiYWJjIFxuZGVmIgogUEFTUyBMZWFkaW5nIHdoaXRlc3BhY2UgcHJlc2VydmVkICgiPHByZT4g
YWJjIikgCiBQQVNTIFRyYWlsaW5nIHdoaXRlc3BhY2UgcHJlc2VydmVkICgiPHByZT5hYmMgIikg
CkBAIC0zMSw5ICszMSw5IEBAIFBBU1MgXHQgcHJlc2VydmVkICgiPHNwYW4gc3R5bGU9J3doaXRl
LXNwYWNlOnByZSc+YWJjXHRkZWYiKQogUEFTUyBMZWFkaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZCAo
IjxkaXYgc3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz4gYWJjIikgCiBQQVNTIFRyYWlsaW5n
IHdoaXRlc3BhY2UgcmVtb3ZlZCAoIjxkaXYgc3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5h
YmMgIikgCiBQQVNTIEludGVybmFsIHdoaXRlc3BhY2UgY29sbGFwc2VkICgiPGRpdiBzdHlsZT0n
d2hpdGUtc3BhY2U6cHJlLWxpbmUnPmFiYyAgZGVmIikgCi1GQUlMIFxuIHByZXNlcnZlZCAoIjxk
aXYgc3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5hYmNcbmRlZiIpIGFzc2VydF9lcXVhbHM6
IGV4cGVjdGVkICJhYmNcbmRlZiIgYnV0IGdvdCAiYWJjZGVmIgotRkFJTCBcciBjb252ZXJ0ZWQg
dG8gbmV3bGluZSAoIjxkaXYgc3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5hYmNccmRlZiIp
IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhYmNcbmRlZiIgYnV0IGdvdCAiYWJjZGVmIgotUEFT
UyBcdCBjb252ZXJ0ZWQgdG8gc3BhY2UgKCI8ZGl2IHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUtbGlu
ZSc+YWJjXHRkZWYiKSAKK0ZBSUwgXG4gcHJlc2VydmVkICgiPGRpdiBzdHlsZT0nd2hpdGUtc3Bh
Y2U6cHJlLWxpbmUnPmFiY1xuZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiY1xuZGVm
IiBidXQgZ290ICJhYmMgZGVmIgorRkFJTCBcciBjb252ZXJ0ZWQgdG8gbmV3bGluZSAoIjxkaXYg
c3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5hYmNccmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4
cGVjdGVkICJhYmNcbmRlZiIgYnV0IGdvdCAiYWJjIGRlZiIKK0ZBSUwgXHQgY29udmVydGVkIHRv
IHNwYWNlICgiPGRpdiBzdHlsZT0nd2hpdGUtc3BhY2U6cHJlLWxpbmUnPmFiY1x0ZGVmIikgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiYyBkZWYiIGJ1dCBnb3QgImFiY1x0ZGVmIgogUEFTUyBX
aGl0ZXNwYWNlIGNvbGxhcHNlcyBhY3Jvc3MgZWxlbWVudCBib3VuZGFyaWVzICgiPGRpdj48c3Bh
bj5hYmMgPC9zcGFuPiBkZWYiKSAKIFBBU1MgV2hpdGVzcGFjZSBjb2xsYXBzZXMgYWNyb3NzIGVs
ZW1lbnQgYm91bmRhcmllcyAoIjxkaXY+PHNwYW4+YWJjIDwvc3Bhbj48c3Bhbj48L3NwYW4+IGRl
ZiIpIAogRkFJTCBXaGl0ZXNwYWNlIGNvbGxhcHNlcyBhY3Jvc3MgZWxlbWVudCBib3VuZGFyaWVz
ICgiPGRpdj48c3Bhbj5hYmMgPC9zcGFuPjxzcGFuIHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUnPjwv
c3Bhbj4gZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiYyBkZWYiIGJ1dCBnb3QgImFi
YyAgZGVmIgpAQCAtMTM1LDcgKzEzNSw3IEBAIEZBSUwgT25lIGJsYW5rIGxpbmUgYmV0d2VlbiA8
cD5zLCBpZ25vcmluZyBlbXB0eSA8cD5zICgiPGRpdj48cD5hYmM8cD48L3A+PHA+PC9wCiBGQUlM
IEludmlzaWJsZSA8cD4gZG9lc24ndCBpbmR1Y2UgZXh0cmEgbGluZSBicmVha3MgKCI8ZGl2IHN0
eWxlPSd2aXNpYmlsaXR5OmhpZGRlbic+PHA+PHNwYW4gc3R5bGU9J3Zpc2liaWxpdHk6dmlzaWJs
ZSc+YWJjPC9zcGFuPjwvcD5cbjxkaXYgc3R5bGU9J3Zpc2liaWxpdHk6dmlzaWJsZSc+ZGVmPC9k
aXY+IikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiY1xuZGVmIiBidXQgZ290ICJhYmNcblxu
ZGVmXG4iCiBGQUlMIE5vIGJsYW5rIGxpbmVzIGFyb3VuZCA8ZGl2PiB3aXRoIG1hcmdpbiAoIjxk
aXY+YWJjPGRpdiBzdHlsZT0nbWFyZ2luOjJlbSc+ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0
ZWQgImFiY1xuZGVmIiBidXQgZ290ICJhYmNcbmRlZlxuIgogUEFTUyBObyBuZXdsaW5lcyBhdCBk
aXNwbGF5OmlubGluZS1ibG9jayBib3VuZGFyeSAoIjxkaXY+MTIzPHNwYW4gc3R5bGU9J2Rpc3Bs
YXk6aW5saW5lLWJsb2NrJz5hYmM8L3NwYW4+ZGVmIikgCi1GQUlMIExlYWRpbmcvdHJhaWxpbmcg
c3BhY2UgcmVtb3ZhbCBhdCBkaXNwbGF5OmlubGluZS1ibG9jayBib3VuZGFyeSAoIjxkaXY+MTIz
PHNwYW4gc3R5bGU9J2Rpc3BsYXk6aW5saW5lLWJsb2NrJz4gYWJjIDwvc3Bhbj5kZWYiKSBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAiMTIzYWJjZGVmIiBidXQgZ290ICIxMjNhYmMgZGVmIgorRkFJ
TCBMZWFkaW5nL3RyYWlsaW5nIHNwYWNlIHJlbW92YWwgYXQgZGlzcGxheTppbmxpbmUtYmxvY2sg
Ym91bmRhcnkgKCI8ZGl2PjEyMzxzcGFuIHN0eWxlPSdkaXNwbGF5OmlubGluZS1ibG9jayc+IGFi
YyA8L3NwYW4+ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEyM2FiY2RlZiIgYnV0IGdv
dCAiMTIzIGFiYyBkZWYiCiBGQUlMIEJsYW5rIGxpbmVzIGFyb3VuZCA8cD4gZXZlbiB3aXRob3V0
IG1hcmdpbiAoIjxkaXY+MTIzPHAgc3R5bGU9J21hcmdpbjowcHgnPmFiYzwvcD5kZWYiKSBhc3Nl
cnRfZXF1YWxzOiBleHBlY3RlZCAiMTIzXG5cbmFiY1xuXG5kZWYiIGJ1dCBnb3QgIjEyM1xuYWJj
XG5kZWYiCiBGQUlMIE5vIGJsYW5rIGxpbmVzIGFyb3VuZCA8aDE+ICgiPGRpdj4xMjM8aDE+YWJj
PC9oMT5kZWYiKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiMTIzXG5hYmNcbmRlZiIgYnV0IGdv
dCAiMTIzXG5hYmNcblxuZGVmIgogRkFJTCBObyBibGFuayBsaW5lcyBhcm91bmQgPGgyPiAoIjxk
aXY+MTIzPGgyPmFiYzwvaDI+ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEyM1xuYWJj
XG5kZWYiIGJ1dCBnb3QgIjEyM1xuYWJjXG5cbmRlZiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2xlZ2FjeS1hbmltYXRpb24tZW5naW5lL2FuaW1hdGlvbnMvbGluZWhlaWdodC1hbmltYXRpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0
aW9ucy9saW5laGVpZ2h0LWFuaW1hdGlvbi1leHBlY3RlZC50eHQKaW5kZXggMzkyMzZiMzQwZDQu
LjQxNzJhOGM1NmUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9sZWdhY3ktYW5pbWF0aW9uLWVu
Z2luZS9hbmltYXRpb25zL2xpbmVoZWlnaHQtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9sZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9hbmltYXRpb25zL2xpbmVoZWlnaHQt
YW5pbWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKLVRoaXMgdGVzdCBwZXJmb3Jt
cyBhbiBhbmltYXRpb24gb2YgdGhlIGxpbmUtaGVpZ2h0IHByb3BlcnR5LiBJdCB0ZXN0cyB3aGV0
aGVyIG9yIG5vdCB3ZSBhcmUgcHJvcGVybHkgZ2V0dGluZyB0aGUgZm9udC1zaXplLkhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuCitUaGlzIHRl
c3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSBsaW5lLWhlaWdodCBwcm9wZXJ0eS4gSXQg
dGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJlIHByb3Blcmx5IGdldHRpbmcgdGhlIGZvbnQtc2l6
ZS4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4KIFBBU1MgLSAibGluZUhlaWdodCIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC4x
cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxMAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9s
ZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC10cmFu
c2Zvcm0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUv
YW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dAppbmRl
eCBhYzViZTMyYjcyMC4uZDllODcyMmY0N2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2xlZ2Fj
eS1hbmltYXRpb24tZW5naW5lL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0YXJ0LXRyYW5zZm9y
bS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUv
YW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDQgQEAKLVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIHRyYW5z
Zm9ybSBwcm9wZXJ0eS4gSXQgYW5pbWF0ZXMgb3ZlciAxMCBzZWNvbmRzLiBJdCB0YWtlcyAzIHNu
YXBzaG90cyBhbmQgZXhwZWN0cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBzcGVjaWZpZWQg
cmFuZ2UuUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVu
dCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjMwOTAxNywwLjk1MTA1NworVGhpcyB0
ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgdHJhbnNmb3JtIHByb3BlcnR5LiBJdCBh
bmltYXRlcyBvdmVyIDEwIHNlY29uZHMuIEl0IHRha2VzIDMgc25hcHNob3RzIGFuZCBleHBlY3Rz
IGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBhIHNwZWNpZmllZCByYW5nZS4gUEFTUyAtICJ3ZWJr
aXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAycyBzYXcgc29tZXRo
aW5nIGNsb3NlIHRvOiAwLjMwOTAxNywwLjk1MTA1NwogUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0i
IHByb3BlcnR5IGZvciAiYm94MiIgZWxlbWVudCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRv
OiAwLjMwOTAxNywwLjk1MTA1NwogUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZv
ciAiYm94MSIgYW5kICJib3gyIiBlbGVtZW50cyBhdCAycyBhcmUgY2xvc2UgZW5vdWdoIHRvIGVh
Y2ggb3RoZXIKIFBBU1MgLSAid2Via2l0VHJhbnNmb3JtIiBwcm9wZXJ0eSBmb3IgImJveDEiIGVs
ZW1lbnQgYXQgNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogLTEsMApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy93aWR0aC11c2luZy1l
bXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5p
bWF0aW9ucy93aWR0aC11c2luZy1lbXMtZXhwZWN0ZWQudHh0CmluZGV4IGRmYjczN2Q0ZDk2Li5i
Y2Y2MTkxMmUwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdp
bmUvYW5pbWF0aW9ucy93aWR0aC11c2luZy1lbXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2xlZ2FjeS1hbmltYXRpb24tZW5naW5lL2FuaW1hdGlvbnMvd2lkdGgtdXNpbmctZW1zLWV4
cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKLVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRp
b24gb2YgdGhlIHdpZHRoIHByb3BlcnR5IHVzaW5nICdlbScgdW5pdHMuIEl0IHRlc3RzIHdoZXRo
ZXIgb3Igbm90IHdlIGFyZSBwcm9wZXJseSBnZXR0aW5nIHRoZSBkZWZhdWx0IGZvbnQtc2l6ZS5I
ZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBI
ZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0Lgor
VGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgd2lkdGggcHJvcGVydHkgdXNp
bmcgJ2VtJyB1bml0cy4gSXQgdGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJlIHByb3Blcmx5IGdl
dHRpbmcgdGhlIGRlZmF1bHQgZm9udC1zaXplLiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBz
b21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBz
b21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LgogUEFTUyAtICJ3aWR0aCIgcHJvcGVydHkgZm9y
ICJib3giIGVsZW1lbnQgYXQgMC4zMzNzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEzMwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5nL3NoYXJl
ZC1iYWNraW5nL292ZXJmbG93LXNjcm9sbC9hYnNvbHV0ZS1pbi1zdGFja2luZy1yZWxhdGl2ZS1p
bi1zY3JvbGxlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2Nv
bXBvc2l0aW5nL3NoYXJlZC1iYWNraW5nL292ZXJmbG93LXNjcm9sbC9hYnNvbHV0ZS1pbi1zdGFj
a2luZy1yZWxhdGl2ZS1pbi1zY3JvbGxlci1leHBlY3RlZC50eHQKaW5kZXggODk0N2E1OTgxNmUu
LmQ3NjE4NTQxMTM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2Nv
bXBvc2l0aW5nL3NoYXJlZC1iYWNraW5nL292ZXJmbG93LXNjcm9sbC9hYnNvbHV0ZS1pbi1zdGFj
a2luZy1yZWxhdGl2ZS1pbi1zY3JvbGxlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLXdrMi9jb21wb3NpdGluZy9zaGFyZWQtYmFja2luZy9vdmVyZmxvdy1zY3Jv
bGwvYWJzb2x1dGUtaW4tc3RhY2tpbmctcmVsYXRpdmUtaW4tc2Nyb2xsZXItZXhwZWN0ZWQudHh0
CkBAIC0xLDQgKzEsNCBAQAotcmVsYXRpdmVhYnNvbHV0ZQorcmVsYXRpdmUgYWJzb2x1dGUKIChH
cmFwaGljc0xheWVyCiAgIChhbmNob3IgMC4wMCAwLjAwKQogICAoYm91bmRzIDgwMC4wMCA2MDAu
MDApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL3Njcm9sbGluZ2Nv
b3JkaW5hdG9yL3Njcm9sbGluZy10cmVlL25lc3RlZC1hYnNvbHV0ZS1pbi1vdmVyZmxvdy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL3Njcm9sbGluZ2Nvb3JkaW5h
dG9yL3Njcm9sbGluZy10cmVlL25lc3RlZC1hYnNvbHV0ZS1pbi1vdmVyZmxvdy1leHBlY3RlZC50
eHQKaW5kZXggNTk0ZGNjYTU1MjcuLmE5YmQ0MGZiYzEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3Mtd2syL3Njcm9sbGluZ2Nvb3JkaW5hdG9yL3Njcm9sbGluZy10cmVlL25l
c3RlZC1hYnNvbHV0ZS1pbi1vdmVyZmxvdy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLXdrMi9zY3JvbGxpbmdjb29yZGluYXRvci9zY3JvbGxpbmctdHJlZS9uZXN0
ZWQtYWJzb2x1dGUtaW4tb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotYWJz
YWJzCithYnMgYWJzCiAKIChGcmFtZSBzY3JvbGxpbmcgbm9kZQogICAoc2Nyb2xsYWJsZSBhcmVh
IHNpemUgODAwIDYwMCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9jc3Mz
L2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLWRvZXMtbm90LXNpemUtcHJvcGVybHkt
YWJzb2x1dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2NzczMvZmls
dGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItZG9lcy1ub3Qtc2l6ZS1wcm9wZXJseS1hYnNv
bHV0ZS1leHBlY3RlZC50eHQKaW5kZXggNGZjMThlODc0NTIuLjgxMDc3N2Y1MzM3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tk
cm9wLWZpbHRlci1kb2VzLW5vdC1zaXplLXByb3Blcmx5LWFic29sdXRlLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tk
cm9wLWZpbHRlci1kb2VzLW5vdC1zaXplLXByb3Blcmx5LWFic29sdXRlLWV4cGVjdGVkLnR4dApA
QCAtMSw0ICsxLDQgQEAKLWZvb2Zvb2JhcgorZm9vIGZvb2JhcgogKEdyYXBoaWNzTGF5ZXIKICAg
KGFuY2hvciAwLjAwIDAuMDApCiAgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3Njcm9sbGluZ2Nvb3JkaW5hdG9yL3Njcm9sbGluZy10cmVlL25lc3RlZC1h
YnNvbHV0ZS1pbi1vdmVyZmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zY3JvbGxpbmdj
b29yZGluYXRvci9zY3JvbGxpbmctdHJlZS9uZXN0ZWQtYWJzb2x1dGUtaW4tb3ZlcmZsb3ctZXhw
ZWN0ZWQudHh0CmluZGV4IDkwODM3ZWRjMzYwLi5jOGU5ZDMxZjBmMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc2Nyb2xsaW5nY29vcmRpbmF0b3Ivc2Nyb2xsaW5nLXRyZWUvbmVzdGVkLWFic29s
dXRlLWluLW92ZXJmbG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zY3JvbGxpbmdj
b29yZGluYXRvci9zY3JvbGxpbmctdHJlZS9uZXN0ZWQtYWJzb2x1dGUtaW4tb3ZlcmZsb3ctZXhw
ZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotYWJzYWJzCithYnMgYWJzCiAKIChGcmFtZSBzY3Jv
bGxpbmcgbm9kZQogICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgODAwIDYwMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA2NzUzZDU5NTk3Yi4uY2U0M2ZlNWYwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAor
MjAxOS0wOS0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
RWxpbWluYXRlIHNlcGFyYXRlIHNpbXBsZSBsaW5lIGxheW91dCBwYXRoIGZyb20gVGV4dEl0ZXJh
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3
NjAKKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgVXNlIHRo
ZSBuZXcgbGluZSBsYXlvdXQgaXRlcmF0b3IgdG8gaW1wbGVtZW50IGxpbmVib3ggdHJhdmVyc2Fs
IGluIFRleHRJdGVyYXRvci4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6
OmhhbmRsZVRleHRCb3gpOgorCisgICAgICAgIElubGluZVRleHRCb3gqIC0+IExpbmVMYXlvdXRJ
bnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvcgorICAgICAgICBEZWxldGUgdGhlIHNlcGVyYXRlIHNp
bXBsZSBsaW5lIGxheW91dCBwYXRoLgorCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6
OmhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJh
dG9yOjplbWl0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6ZW1p
dFRleHQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJl
ZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpJdGVy
YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6
SXRlcmF0b3I6OmFkdmFuY2VMaW5lcyk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6UnVu
UmVzb2x2ZXI6Okl0ZXJhdG9yOjpyZXNvbHZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3I6OmluUXVpcmtzTW9kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRl
cmF0b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxh
eW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpzaW1wbGVSdW4gY29uc3QpOgorCisgICAgICAg
IE1ha2UgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGNvcHlhYmxlIChzbyBUZXh0Qm94SXRlcmF0b3Ig
YmVjb21lcyBjb3B5YWJsZSB0b28pLgorCisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpUZXh0RnJhZ21lbnRJdGVyYXRvcjo6ZmluZE5leHRUZXh0RnJhZ21lbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveDo6cmVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94Ojps
b2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNl
OjpUZXh0Qm94OjpoYXNIeXBoZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dEludGVyZmFjZTo6VGV4dEJveDo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94OjpkaXJPdmVycmlkZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94Ojp0
ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRC
b3g6OmxvY2FsU3RhcnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dEludGVyZmFjZTo6VGV4dEJveDo6bG9jYWxFbmRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveDo6bGVuZ3RoIGNvbnN0KToKKworICAg
ICAgICBBZGQgb2Zmc2V0IGFuZCBsZW5ndGggZnVuY3Rpb25zLgorCisgICAgICAgIChXZWJDb3Jl
OjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94OjppdGVyYXRvciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJ
dGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94
SXRlcmF0b3I6OnRyYXZlcnNlTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50
ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9yOjphdEVuZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpQcm92aWRlcjo6Zmlyc3RU
ZXh0Qm94Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlByb3Zp
ZGVyOjp0ZXh0Qm94UmFuZ2VGb3IpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVy
ZmFjZTo6UHJvdmlkZXI6Oml0ZXJhdG9yRm9ySW5saW5lVGV4dEJveCk6CisKKyAgICAgICAgQWRk
IFByb3ZpZGVyIGNsYXNzIGZvciBtYWtpbmcgaXRlcmF0b3JzLiBJdCBjb25zdHJ1Y3RzIGFuZCBr
ZWVwcyBTaW1wbGVMaW5lTGF5b3V0OjpSZXNvbHZlcnMgYWxpdmUgZHVyaW5nIHRyYXZlcnNhbCBh
cyBuZWVkZWQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50ZXJmYWNl
VGV4dEJveGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0
Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5
b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9yOjpvcGVy
YXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRl
eHRCb3hJdGVyYXRvcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
TGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJh
dG9yLT4gY29uc3QpOgorCisgICAgICAgIE1ha2UgVGV4dEJveEl0ZXJhdG9yIHByaXZhdGVseSBp
bmhlcml0IFRleHRCb3guIFRoaXMgd2F5IHdlIGRvbid0IG5lZWQgdG8gY29uc3RydWN0IHRlbXBv
cmFyaWVzIGFuZCBjYW4gZWFzaWx5IGltcGxlbWVudCBvcGVyYXRvci0+LgorCisgICAgICAgIChX
ZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94UmFuZ2U6OlRleHRCb3hSYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94UmFuZ2U6OmJl
Z2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRC
b3hSYW5nZTo6ZW5kIGNvbnN0KToKKworICAgICAgICBVc2Ugc2VwYXJhdGUgZW5kKCkgdHlwZSBv
ZiBDKysxNyByYW5nZXMuCisKIDIwMTktMDktMTEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIEFSIFF1aWNrTG9vayB0byB0
cmlnZ2VyIHByb2Nlc3NpbmcgaW4gdGhlIG9yaWdpbmF0aW5nIHBhZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CmluZGV4IDMwZDA5Mjk2MmFmLi5mZDBiNTMzY2VkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0x
MzAzLDcgKzEzMDMsMTAgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuaAogICAgIHJlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0LmgKICAgICByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmgKKyAg
ICByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oCisgICAgcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oCiAKKyAgICByZW5kZXJpbmcvbGluZS9MaW5lTGF5
b3V0SW50ZXJmYWNlVGV4dEJveGVzLmgKICAgICByZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguaAog
ICAgIHJlbmRlcmluZy9saW5lL1RyYWlsaW5nT2JqZWN0cy5oCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYjFkNWNlNzQ5NS4u
Yjk5NGM4ZjhlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE4MzIsNyArMTgzMiw3IEBACiAJCTU4MjRBQkE3MUFFODEzODQw
MDkwNzRCNyAvKiBSdWJ5VGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU4MjRBQkE1MUFFODEzODQwMDkwNzRCNyAvKiBSdWJ5VGV4dEVs
ZW1lbnQuaCAqLzsgfTsKIAkJNTgyQ0IwNTMxQTc4QTE0QjAwQUZGQ0M0IC8qIFNpbXBsZUxpbmVM
YXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTgyQ0IwNTIxQTc4QTE0QjAwQUZGQ0M0IC8qIFNpbXBsZUxpbmVM
YXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5oICovOyB9OwogCQk1ODJERTMyNTFDMzBDODU0MDBC
RTAyQTggLyogVGV4dERlY29yYXRpb25QYWludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODJERTMyMzFDMzBDODU0MDBCRTAyQTggLyogVGV4dERl
Y29yYXRpb25QYWludGVyLmggKi87IH07Ci0JCTU4NUQ2RTA0MUExQTc5MkUwMEZBNEYxMiAvKiBT
aW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1ODVENkUwMjFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxlTGlu
ZUxheW91dEZsb3dDb250ZW50cy5oICovOyB9OworCQk1ODVENkUwNDFBMUE3OTJFMDBGQTRGMTIg
LyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg1RDZFMDIxQTFBNzkyRTAwRkE0RjEyIC8qIFNpbXBs
ZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1ODk1NTZFRDE4RDRBNDQwMDA3NjRCMDMgLyogQm9yZGVyRWRn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg5NTU2
RUMxOEQ0QTQ0MDAwNzY0QjAzIC8qIEJvcmRlckVkZ2UuaCAqLzsgfTsKIAkJNThCMkY5RjQyMjMy
RDQ1MzAwOTM4RDYzIC8qIFJlc2l6ZU9ic2VydmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OEIyRjlGMzIyMzJENDNGMDA5MzhENjMgLyogUmVz
aXplT2JzZXJ2YXRpb24uaCAqLzsgfTsKIAkJNThCMkY5RjUyMjMyRDQ1ODAwOTM4RDYzIC8qIFJl
c2l6ZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1OEIyRjlFQzIyMzJENDNCMDA5MzhENjMgLyogUmVzaXplT2JzZXJ2ZXIuaCAqLzsgfTsK
QEAgLTQ3OTUsNyArNDc5NSw3IEBACiAJCUU0N0MzOTMzMUZFNkUxMDgwMEJCQkM2QiAvKiBSZW5k
ZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyNzFGRTZFMERDMDBCQkJDNkIgLyogUmVuZGVyVHJlZUJ1
aWxkZXJNdWx0aUNvbHVtbi5oICovOyB9OwogCQlFNDdFMjc2NTE2MDM2RUQyMDBFRTJBRkIgLyog
RXh0ZW5zaW9uU3R5bGVTaGVldHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNo
ZWV0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUU0ODEzN0I5MURCM0I1MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDgxMzdCODFEQjNCNTI2MDA1QzU5
QkYgLyogU3R5bGVWYWxpZGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCUU0ODRBMzNFMjMwNTUzMjUwMDlBREU2QSAvKiBMaW5lTGF5b3V0SW50
ZXJmYWNlVGV4dEJveGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNDg0QTMzQjIzMDU1MzAzMDA5QURFNkEgLyogTGluZUxheW91dEludGVyZmFjZVRl
eHRCb3hlcy5oICovOyB9OworCQlFNDg0QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGluZUxheW91
dEludGVyZmFjZVRleHRCb3hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ4NEEzM0IyMzA1NTMwMzAwOUFERTZBIC8qIExpbmVMYXlvdXRJbnRlcmZh
Y2VUZXh0Qm94ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNDg5NDRBMzE4MEI1N0Q4MDBGMTY1RDggLyogU2ltcGxlTGluZUxheW91dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4OTQ0QTExODBC
NTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxpbmVMYXlvdXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDkxNkZGNzE5NURGNkEwMDA1QUIzNDkgLyog
TGF5ZXJGbHVzaFRocm90dGxlU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0OTE2RkY2MTk1REY2QTAwMDVBQjM0OSAvKiBMYXllckZsdXNoVGhy
b3R0bGVTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUU0OTQ2RUFGMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTQ2RUFEMTU2RTY0
REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDgzMiw3ICs0ODMyLDcgQEAKIAkJRTRFOEI0RUMy
MTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU4QjRFQTIxNkI3OUU1MDBC
ODgzNEQgLyogU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCAqLzsgfTsKIAkJRTRFOEI0RjUy
MTZCOTU2NTAwQjg4MzREIC8qIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RThCNEYyMjE2QjhCNjAwMEI4ODM0
RCAvKiBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRFOTRENjEyMkZGMTU4QTAwREQxOTFGIC8qIENvbXBs
ZXhMaW5lTGF5b3V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEExQUM3ODIyRkFGRDUwMDAxN0I3NUIgLyogQ29tcGxleExpbmVMYXlvdXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFNEU5QjExOTE4
MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU5QjExODE4MTA5MTZGMDAzQUND
REYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggKi87IH07CisJCUU0RTlCMTE5MTgxMDkx
NkYwMDNBQ0NERiAvKiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTlCMTE4MTgxMDkxNkYwMDNBQ0NERiAv
KiBTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEU5QjExRDE4MTQ1NjlDMDAzQUNDREYgLyogU2ltcGxl
TGluZUxheW91dEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTRFOUIxMUMxODE0NTY5QzAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRG
dW5jdGlvbnMuaCAqLzsgfTsKIAkJRTRGOUVFRjMxNTZEQTAwNzAwRDIzRTdFIC8qIFN0eWxlU2hl
ZXRDb250ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRGOUVFRjExNTZEODRDNDAwRDIzRTdFIC8qIFN0eWxlU2hlZXRDb250ZW50cy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU1MTY2OTkxMjBG
Rjk5MTgwMDlEMkMyNyAvKiBMaXN0QnV0dG9uQXJyb3dAMngucG5nIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNTE2Njk4RjIwRkY5OTE2MDA5RDJDMjcg
LyogTGlzdEJ1dHRvbkFycm93QDJ4LnBuZyAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmNwcAppbmRleCBhMWEzOTAzZjY3Yi4uZjQxZTEwMmEwNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTQ3NCw4ICs0NzQsOCBAQCB2b2lkIFRl
eHRJdGVyYXRvcjo6YWR2YW5jZSgpCiAKICAgICBpZiAoIW1fdGV4dEJveCAmJiBtX3JlbWFpbmlu
Z1RleHRCb3gpIHsKICAgICAgICAgbV90ZXh0Qm94ID0gbV9yZW1haW5pbmdUZXh0Qm94OwotICAg
ICAgICBtX3JlbWFpbmluZ1RleHRCb3ggPSBudWxscHRyOwotICAgICAgICBtX2ZpcnN0TGV0dGVy
VGV4dCA9IG51bGxwdHI7CisgICAgICAgIG1fcmVtYWluaW5nVGV4dEJveCA9IHsgfTsKKyAgICAg
ICAgbV9maXJzdExldHRlclRleHQgPSB7IH07CiAgICAgICAgIG1fb2Zmc2V0ID0gMDsKICAgICB9
CiAgICAgLy8gaGFuZGxlIHJlbWVtYmVyZWQgdGV4dCBib3gKQEAgLTU3NCwyNSArNTc0LDYgQEAg
c3RhdGljIGJvb2wgaGFzVmlzaWJsZVRleHROb2RlKFJlbmRlclRleHQmIHJlbmRlcmVyKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIHRleHROb2RlT2Zmc2V0SW5GbG93
KGNvbnN0IFRleHQmIGZpcnN0VGV4dE5vZGVJblJhbmdlKQotewotICAgIC8vIENhbGN1bGF0ZSB0
aGUgdGV4dCBvZmZzZXQgZm9yIHNpbXBsZSBsaW5lcy4KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gZmlyc3RUZXh0Tm9kZUluUmFuZ2UucmVuZGVyZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVy
KQotICAgICAgICByZXR1cm4gMDsKLSAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0gMDsKLSAgICBm
b3IgKHJlbmRlcmVyID0gcmVuZGVyZXItPnByZXZpb3VzU2libGluZygpOyByZW5kZXJlcjsgcmVu
ZGVyZXIgPSByZW5kZXJlci0+cHJldmlvdXNTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGlzPFJl
bmRlclRleHQ+KHJlbmRlcmVyKSkKLSAgICAgICAgICAgIHRleHRPZmZzZXQgKz0gZG93bmNhc3Q8
UmVuZGVyVGV4dD4ocmVuZGVyZXIpLT50ZXh0KCkubGVuZ3RoKCk7Ci0gICAgfQotICAgIHJldHVy
biB0ZXh0T2Zmc2V0OwotfQotCi1zdGF0aWMgYm9vbCBpc05ld0xpbmVPclRhYkNoYXJhY3RlcihV
Q2hhciBjaGFyYWN0ZXIpCi17Ci0gICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnXG4nIHx8IGNoYXJh
Y3RlciA9PSAnXHQnOwotfQotCiBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQog
ewogICAgIFRleHQmIHRleHROb2RlID0gZG93bmNhc3Q8VGV4dD4oKm1fbm9kZSk7CkBAIC02MTcs
NyArNTk4LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAg
ICAgICAgICBTdHJpbmcgZmlyc3RMZXR0ZXIgPSBtX2ZpcnN0TGV0dGVyVGV4dC0+dGV4dCgpOwog
ICAgICAgICAgICAgICAgIGVtaXRUZXh0KHRleHROb2RlLCAqbV9maXJzdExldHRlclRleHQsIG1f
b2Zmc2V0LCBtX29mZnNldCArIGZpcnN0TGV0dGVyLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAg
ICBtX2ZpcnN0TGV0dGVyVGV4dCA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgbV90ZXh0Qm94
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBtX3RleHRCb3ggPSB7IH07CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC02MzQsMTAy
ICs2MTUsMTMgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKGNvbnN0IGF1dG8qIGxheW91dCA9IHJlbmRl
cmVyLnNpbXBsZUxpbmVMYXlvdXQoKSkgewotICAgICAgICBpZiAocmVuZGVyZXIuc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3IgJiBUZXh0
SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICBBU1NFUlQocmVuZGVyZXIucGFyZW50KCkpOwotICAgICAgICBBU1NFUlQoaXM8
UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50KCkpKTsKLSAgICAgICAgY29uc3QgYXV0
byYgYmxvY2tGbG93ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50
KCkpOwotICAgICAgICAvLyBVc2UgdGhlIHNpbXBsZSBsYXlvdXQgcnVucyB0byBpdGVyYXRlIG92
ZXIgdGhlIHRleHQgY29udGVudC4KLSAgICAgICAgYm9vbCBpc05ld1RleHROb2RlID0gbV9wcmV2
aW91c1NpbXBsZVRleHROb2RlSW5GbG93ICYmIG1fcHJldmlvdXNTaW1wbGVUZXh0Tm9kZUluRmxv
dyAhPSAmdGV4dE5vZGU7Ci0gICAgICAgIC8vIFNpbXBsZSBsaW5lIGxheW91dCBydW4gcG9zaXRp
b25zIGFyZSBhbGwgYWJzb2x1dGUgdG8gdGhlIHBhcmVudCBmbG93LgotICAgICAgICAvLyBPZmZz
ZXR0aW5nIGlzIHJlcXVpcmVkIHdoZW4gbXVsdGlwbGUgcmVuZGVyZXJzIGFyZSBwcmVzZW50Lgot
ICAgICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyArPSBpc05ld1RleHRO
b2RlID8gbV9wcmV2aW91c1NpbXBsZVRleHROb2RlSW5GbG93LT5yZW5kZXJlcigpLT50ZXh0KCku
bGVuZ3RoKCkgOiAwOwotICAgICAgICBtX3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJbkZsb3cgPSAm
dGV4dE5vZGU7Ci0KLSAgICAgICAgdW5zaWduZWQgZW5kUG9zaXRpb24gPSAobV9ub2RlID09IG1f
ZW5kQ29udGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2VuZE9mZnNldCkgOiByZW5k
ZXJlclRleHQubGVuZ3RoKCk7Ci0gICAgICAgIGlmICghbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSB8
fCAmbV9mbG93UnVuUmVzb2x2ZXJDYWNoZS0+ZmxvdygpICE9ICZibG9ja0Zsb3cpIHsKLSAgICAg
ICAgICAgIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93ID0gbV9mbG93UnVuUmVz
b2x2ZXJDYWNoZSA/IDAgOiB0ZXh0Tm9kZU9mZnNldEluRmxvdyh0ZXh0Tm9kZSk7Ci0gICAgICAg
ICAgICBtX2Zsb3dSdW5SZXNvbHZlckNhY2hlID0gbWFrZVVuaXF1ZTxTaW1wbGVMaW5lTGF5b3V0
OjpSdW5SZXNvbHZlcj4oYmxvY2tGbG93LCAqbGF5b3V0KTsKLSAgICAgICAgfQotICAgICAgICAv
LyBTa2lwIHRvIG1fb2Zmc2V0IHBvc2l0aW9uLgotICAgICAgICBhdXRvIHJhbmdlID0gbV9mbG93
UnVuUmVzb2x2ZXJDYWNoZS0+cmFuZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7Ci0gICAgICAgIGF1
dG8gaXQgPSByYW5nZS5iZWdpbigpOwotICAgICAgICBhdXRvIGVuZCA9IHJhbmdlLmVuZCgpOwot
ICAgICAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZz
ZXQpICsgbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZsb3c7Ci0gICAgICAgIHdoaWxl
IChpdCAhPSBlbmQgJiYgKCppdCkuZW5kKCkgPD0gc3RhcnRQb3NpdGlvbikKLSAgICAgICAgICAg
ICsraXQ7Ci0gICAgICAgIGlmIChtX25leHRSdW5OZWVkc1doaXRlc3BhY2UgJiYgcmVuZGVyZXJU
ZXh0W21fb2Zmc2V0IC0gMV0gPT0gJ1xuJykgewotICAgICAgICAgICAgZW1pdENoYXJhY3Rlcign
ICcsIHRleHROb2RlLCBudWxscHRyLCBtX29mZnNldCwgbV9vZmZzZXQgKyAxKTsKLSAgICAgICAg
ICAgIHJldHVybiBpdCA9PSBlbmQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGl0ID09IGVuZCkg
ewotICAgICAgICAgICAgLy8gQ29sbGFwc2VkIHRyYWlsaW5nIHdoaXRlc3BhY2UuCi0gICAgICAg
ICAgICBtX29mZnNldCA9IGVuZFBvc2l0aW9uOwotICAgICAgICAgICAgbV9sYXN0VGV4dE5vZGVF
bmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQotICAgICAgICBpZiAobV9uZXh0UnVuTmVlZHNXaGl0ZXNwYWNlKSB7Ci0gICAg
ICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgdGV4dE5vZGUsIG51bGxwdHIsIG1fb2Zmc2V0LCBt
X29mZnNldCArIDEpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
ICAgIC8vIElmIHRoZSBwb3NpdGlvbiB3ZSBhcmUgbG9va2luZyBmb3IgaXMgdG8gdGhlIGxlZnQg
b2YgdGhlIHJlbmRlcmVyJ3MgZmlyc3QgcnVuLCBpdCBjb3VsZCBtZWFuIHRoYXQKLSAgICAgICAg
Ly8gdGhlIHJ1bnMgYW5kIHRoZSByZW5kZXJlcnMgYXJlIG91dCBvZiBzeW5jIChlLmcuIHdlIHNr
aXBwZWQgYSByZW5kZXJlciBpbiBiZXR3ZWVuKS4KLSAgICAgICAgLy8gQmV0dGVyIGJhaWwgb3V0
IGF0IHRoaXMgcG9pbnQuCi0gICAgICAgIGF1dG8gcnVuID0gKml0OwotICAgICAgICBpZiAocnVu
LnN0YXJ0KCkgPiBzdGFydFBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9mbG93UnVu
UmVzb2x2ZXJDYWNoZSk7Ci0gICAgICAgICAgICBpZiAoJihyZW5kZXJlckZvclBvc2l0aW9uKG1f
Zmxvd1J1blJlc29sdmVyQ2FjaGUtPmZsb3dDb250ZW50cygpLCBzdGFydFBvc2l0aW9uKSkgIT0g
JnJlbmRlcmVyKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgQVNTRVJUKHJ1bi5lbmQoKSAtIHJ1bi5zdGFydCgpIDw9IHJlbmRlcmVyVGV4dC5sZW5ndGgo
KSk7Ci0gICAgICAgIC8vIGNvbnRlbnRTdGFydCBza2lwcyBsZWFkaW5nIHdoaXRlc3BhY2UuCi0g
ICAgICAgIHVuc2lnbmVkIGNvbnRlbnRTdGFydCA9IHN0ZDo6bWF4PHVuc2lnbmVkPihtX29mZnNl
dCwgcnVuLnN0YXJ0KCkgLSBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyk7Ci0g
ICAgICAgIHVuc2lnbmVkIGNvbnRlbnRFbmQgPSBzdGQ6Om1pbihlbmRQb3NpdGlvbiwgcnVuLmVu
ZCgpIC0gbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZsb3cpOwotICAgICAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihjb250ZW50U3RhcnQgPD0gY29udGVudEVuZCk7
Ci0gICAgICAgIC8vIENoZWNrIGlmIHdoaXRlc3BhY2UgYWRqdXN0bWVudCBpcyBuZWVkZWQgd2hl
biBjcm9zc2luZyByZW5kZXJlciBib3VuZGFyeS4KLSAgICAgICAgaWYgKGlzTmV3VGV4dE5vZGUp
IHsKLSAgICAgICAgICAgIGJvb2wgbGFzdENoYXJhY3RlcklzTm90V2hpdGVzcGFjZSA9IG1fbGFz
dENoYXJhY3RlciAmJiAhcmVuZGVyZXIuc3R5bGUoKS5pc0NvbGxhcHNpYmxlV2hpdGVTcGFjZSht
X2xhc3RDaGFyYWN0ZXIpOwotICAgICAgICAgICAgYm9vbCBhZGRUcmFpbGluZ1doaXRlc3BhY2VG
b3JQcmV2aW91cyA9IG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgJiYgbGFz
dENoYXJhY3RlcklzTm90V2hpdGVzcGFjZTsKLSAgICAgICAgICAgIGJvb2wgbGVhZGluZ1doaXRl
c3BhY2VJc05lZWRlZEZvckN1cnJlbnQgPSBjb250ZW50U3RhcnQgPiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9vZmZzZXQpICYmIGxhc3RDaGFyYWN0ZXJJc05vdFdoaXRlc3BhY2U7Ci0gICAgICAg
ICAgICBpZiAoYWRkVHJhaWxpbmdXaGl0ZXNwYWNlRm9yUHJldmlvdXMgfHwgbGVhZGluZ1doaXRl
c3BhY2VJc05lZWRlZEZvckN1cnJlbnQpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVy
KCcgJywgdGV4dE5vZGUsIG51bGxwdHIsIG1fb2Zmc2V0LCBtX29mZnNldCArIDEpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICAvLyBcbiBcdCBzaW5nbGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIG5lZWQgcmVwbGFjaW5nIHNv
IHRoYXQgdGhlIG5ldyBsaW5lL3RhYiBjaGFyYWN0ZXJzIGRvbid0IHNob3cgdXAuCi0gICAgICAg
IHVuc2lnbmVkIHN0b3BQb3NpdGlvbiA9IGNvbnRlbnRTdGFydDsKLSAgICAgICAgd2hpbGUgKHN0
b3BQb3NpdGlvbiA8IGNvbnRlbnRFbmQgJiYgIWlzTmV3TGluZU9yVGFiQ2hhcmFjdGVyKHJlbmRl
cmVyVGV4dFtzdG9wUG9zaXRpb25dKSkKLSAgICAgICAgICAgICsrc3RvcFBvc2l0aW9uOwotICAg
ICAgICAvLyBFbWl0IHRoZSB0ZXh0IHVwIHRvIHRoZSBuZXcgbGluZS90YWIgY2hhcmFjdGVyLgot
ICAgICAgICBpZiAoc3RvcFBvc2l0aW9uIDwgY29udGVudEVuZCkgewotICAgICAgICAgICAgaWYg
KHN0b3BQb3NpdGlvbiA9PSBjb250ZW50U3RhcnQpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hh
cmFjdGVyKCcgJywgdGV4dE5vZGUsIG51bGxwdHIsIGNvbnRlbnRTdGFydCwgY29udGVudFN0YXJ0
ICsgMSk7Ci0gICAgICAgICAgICAgICAgbV9vZmZzZXQgPSBjb250ZW50U3RhcnQgKyAxOwotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVt
aXRUZXh0KHRleHROb2RlLCByZW5kZXJlciwgY29udGVudFN0YXJ0LCBzdG9wUG9zaXRpb24pOwot
ICAgICAgICAgICAgbV9vZmZzZXQgPSBzdG9wUG9zaXRpb24gKyAxOwotICAgICAgICAgICAgbV9u
ZXh0UnVuTmVlZHNXaGl0ZXNwYWNlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgICAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgcmVuZGVyZXIsIGNvbnRlbnRT
dGFydCwgY29udGVudEVuZCk7Ci0gICAgICAgIC8vIFdoZW4gbGluZSBlbmRpbmcgd2l0aCBjb2xs
YXBzZWQgd2hpdGVzcGFjZSBpcyBwcmVzZW50LCB3ZSBuZWVkIHRvIGNhcnJ5IG92ZXIgb25lIHdo
aXRlc3BhY2U6IGZvbyhlbmQgb2YgbGluZSliYXIgLT4gZm9vIGJhciAob3RoZXJ3aXNlIHdlIHdv
dWxkIGVuZCB1cCB3aXRoIGZvb2JhcikuCi0gICAgICAgIG1fbmV4dFJ1bk5lZWRzV2hpdGVzcGFj
ZSA9IHJ1bi5pc0VuZE9mTGluZSgpICYmIGNvbnRlbnRFbmQgPCBlbmRQb3NpdGlvbiAmJiByZW5k
ZXJlci5zdHlsZSgpLmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKHJlbmRlcmVyVGV4dFtjb250ZW50
RW5kXSk7Ci0gICAgICAgIG1fb2Zmc2V0ID0gY29udGVudEVuZDsKLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNldCkgPT0gZW5kUG9zaXRpb247Ci0gICAgfQotCi0g
ICAgaWYgKHJlbmRlcmVyLmZpcnN0VGV4dEJveCgpKQotICAgICAgICBtX3RleHRCb3ggPSByZW5k
ZXJlci5maXJzdFRleHRCb3goKTsKKyAgICBtX3RleHRCb3ggPSBtX2xpbmVMYXlvdXRQcm92aWRl
ci5maXJzdFRleHRCb3hGb3IocmVuZGVyZXIpOwogCiAgICAgYm9vbCBzaG91bGRIYW5kbGVGaXJz
dExldHRlciA9ICFtX2hhbmRsZWRGaXJzdExldHRlciAmJiBpczxSZW5kZXJUZXh0RnJhZ21lbnQ+
KHJlbmRlcmVyKSAmJiAhbV9vZmZzZXQ7CiAgICAgaWYgKHNob3VsZEhhbmRsZUZpcnN0TGV0dGVy
KQogICAgICAgICBoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKGRvd25jYXN0PFJlbmRlclRleHRG
cmFnbWVudD4ocmVuZGVyZXIpKTsKIAotICAgIGlmICghcmVuZGVyZXIuZmlyc3RUZXh0Qm94KCkg
JiYgcmVuZGVyZXJUZXh0Lmxlbmd0aCgpICYmICFzaG91bGRIYW5kbGVGaXJzdExldHRlcikgewor
ICAgIGlmICghbV90ZXh0Qm94ICYmIHJlbmRlcmVyVGV4dC5sZW5ndGgoKSAmJiAhc2hvdWxkSGFu
ZGxlRmlyc3RMZXR0ZXIpIHsKICAgICAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIShtX2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9y
SWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgPSB0cnVlOyAvLyBlbnRp
cmUgYmxvY2sgaXMgY29sbGFwc2VkIHNwYWNlCkBAIC03NDQsNyArNjM2LDcgQEAgYm9vbCBUZXh0
SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgICAgIG1fc29ydGVkVGV4dEJveGVz
LmFwcGVuZCh0ZXh0Qm94KTsKICAgICAgICAgc3RkOjpzb3J0KG1fc29ydGVkVGV4dEJveGVzLmJl
Z2luKCksIG1fc29ydGVkVGV4dEJveGVzLmVuZCgpLCBJbmxpbmVUZXh0Qm94Ojpjb21wYXJlQnlT
dGFydCk7CiAgICAgICAgIG1fc29ydGVkVGV4dEJveGVzUG9zaXRpb24gPSAwOwotICAgICAgICBt
X3RleHRCb3ggPSBtX3NvcnRlZFRleHRCb3hlcy5pc0VtcHR5KCkgPyBudWxscHRyIDogbV9zb3J0
ZWRUZXh0Qm94ZXNbMF07CisgICAgICAgIG1fdGV4dEJveCA9IG1fbGluZUxheW91dFByb3ZpZGVy
Lml0ZXJhdG9yRm9ySW5saW5lVGV4dEJveChtX3NvcnRlZFRleHRCb3hlcy5pc0VtcHR5KCkgPyBu
dWxscHRyIDogbV9zb3J0ZWRUZXh0Qm94ZXNbMF0pOwogICAgIH0KIAogICAgIGhhbmRsZVRleHRC
b3goKTsKQEAgLTc1NywxOCArNjQ5LDI1IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0
Qm94KCkKIAogICAgIGF1dG8mIHJlbmRlcmVyID0gbV9maXJzdExldHRlclRleHQgPyAqbV9maXJz
dExldHRlclRleHQgOiAqdGV4dE5vZGUucmVuZGVyZXIoKTsKICAgICBpZiAocmVuZGVyZXIuc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVmlzaWJpbGl0eTo6VmlzaWJsZSAmJiAhKG1fYmVoYXZpb3Ig
JiBUZXh0SXRlcmF0b3JJZ25vcmVzU3R5bGVWaXNpYmlsaXR5KSkgewotICAgICAgICBtX3RleHRC
b3ggPSBudWxscHRyOworICAgICAgICBtX3RleHRCb3ggPSB7IH07CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisKKyAgICBhdXRvIGZpcnN0VGV4dEJveCA9IFsmXSB7CisgICAgICAgIGlmIChyZW5k
ZXJlci5jb250YWluc1JldmVyc2VkVGV4dCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fbGluZUxh
eW91dFByb3ZpZGVyLml0ZXJhdG9yRm9ySW5saW5lVGV4dEJveChtX3NvcnRlZFRleHRCb3hlcy5p
c0VtcHR5KCkgPyBudWxscHRyIDogbV9zb3J0ZWRUZXh0Qm94ZXNbMF0pOworCisgICAgICAgIHJl
dHVybiBtX2xpbmVMYXlvdXRQcm92aWRlci5maXJzdFRleHRCb3hGb3IocmVuZGVyZXIpOworICAg
IH0oKTsKKwogICAgIFN0cmluZyByZW5kZXJlclRleHQgPSByZW5kZXJlci50ZXh0KCk7CiAgICAg
dW5zaWduZWQgc3RhcnQgPSBtX29mZnNldDsKICAgICB1bnNpZ25lZCBlbmQgPSAoJnRleHROb2Rl
ID09IG1fZW5kQ29udGFpbmVyKSA/IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2VuZE9mZnNldCkg
OiBVSU5UX01BWDsKICAgICB3aGlsZSAobV90ZXh0Qm94KSB7Ci0gICAgICAgIHVuc2lnbmVkIHRl
eHRCb3hTdGFydCA9IG1fdGV4dEJveC0+c3RhcnQoKTsKKyAgICAgICAgdW5zaWduZWQgdGV4dEJv
eFN0YXJ0ID0gbV90ZXh0Qm94LT5sb2NhbFN0YXJ0T2Zmc2V0KCk7CiAgICAgICAgIHVuc2lnbmVk
IHJ1blN0YXJ0ID0gc3RkOjptYXgodGV4dEJveFN0YXJ0LCBzdGFydCk7CiAKICAgICAgICAgLy8g
Q2hlY2sgZm9yIGNvbGxhcHNlZCBzcGFjZSBhdCB0aGUgc3RhcnQgb2YgdGhpcyBydW4uCi0gICAg
ICAgIElubGluZVRleHRCb3gqIGZpcnN0VGV4dEJveCA9IHJlbmRlcmVyLmNvbnRhaW5zUmV2ZXJz
ZWRUZXh0KCkgPyAobV9zb3J0ZWRUZXh0Qm94ZXMuaXNFbXB0eSgpID8gbnVsbHB0ciA6IG1fc29y
dGVkVGV4dEJveGVzWzBdKSA6IHJlbmRlcmVyLmZpcnN0VGV4dEJveCgpOwogICAgICAgICBib29s
IG5lZWRTcGFjZSA9IG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgfHwgKG1f
dGV4dEJveCA9PSBmaXJzdFRleHRCb3ggJiYgdGV4dEJveFN0YXJ0ID09IHJ1blN0YXJ0ICYmIHJ1
blN0YXJ0KTsKICAgICAgICAgaWYgKG5lZWRTcGFjZSAmJiAhcmVuZGVyZXIuc3R5bGUoKS5pc0Nv
bGxhcHNpYmxlV2hpdGVTcGFjZShtX2xhc3RDaGFyYWN0ZXIpICYmIG1fbGFzdENoYXJhY3Rlcikg
ewogICAgICAgICAgICAgaWYgKG1fbGFzdFRleHROb2RlID09ICZ0ZXh0Tm9kZSAmJiBydW5TdGFy
dCAmJiByZW5kZXJlclRleHRbcnVuU3RhcnQgLSAxXSA9PSAnICcpIHsKQEAgLTc4MCwxNyArNjc5
LDE5IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAgICAgICAgICAg
ICBlbWl0Q2hhcmFjdGVyKCcgJywgdGV4dE5vZGUsIG51bGxwdHIsIHJ1blN0YXJ0LCBydW5TdGFy
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgdW5zaWduZWQgdGV4
dEJveEVuZCA9IHRleHRCb3hTdGFydCArIG1fdGV4dEJveC0+bGVuKCk7CisgICAgICAgIHVuc2ln
bmVkIHRleHRCb3hFbmQgPSB0ZXh0Qm94U3RhcnQgKyBtX3RleHRCb3gtPmxlbmd0aCgpOwogICAg
ICAgICB1bnNpZ25lZCBydW5FbmQgPSBzdGQ6Om1pbih0ZXh0Qm94RW5kLCBlbmQpOwogICAgICAg
ICAKICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoYXQgdGhlIG5leHQgdGV4dCBib3ggd2lsbCBiZSwg
YnV0IGRvbid0IGFkdmFuY2UgeWV0Ci0gICAgICAgIElubGluZVRleHRCb3gqIG5leHRUZXh0Qm94
ID0gbnVsbHB0cjsKKyAgICAgICAgTGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9y
IG5leHRUZXh0Qm94OwogICAgICAgICBpZiAocmVuZGVyZXIuY29udGFpbnNSZXZlcnNlZFRleHQo
KSkgeworICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSByZXZlcnNlZCB0ZXh0IGluIHRoZSBs
aW5lIGxheW91dCBpdGVyYXRvci4KICAgICAgICAgICAgIGlmIChtX3NvcnRlZFRleHRCb3hlc1Bv
c2l0aW9uICsgMSA8IG1fc29ydGVkVGV4dEJveGVzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBu
ZXh0VGV4dEJveCA9IG1fc29ydGVkVGV4dEJveGVzW21fc29ydGVkVGV4dEJveGVzUG9zaXRpb24g
KyAxXTsKLSAgICAgICAgfSBlbHNlIAotICAgICAgICAgICAgbmV4dFRleHRCb3ggPSBtX3RleHRC
b3gtPm5leHRUZXh0Qm94KCk7Ci0gICAgICAgIEFTU0VSVCghbmV4dFRleHRCb3ggfHwgJm5leHRU
ZXh0Qm94LT5yZW5kZXJlcigpID09ICZyZW5kZXJlcik7CisgICAgICAgICAgICAgICAgbmV4dFRl
eHRCb3ggPSBtX2xpbmVMYXlvdXRQcm92aWRlci5pdGVyYXRvckZvcklubGluZVRleHRCb3gobV9z
b3J0ZWRUZXh0Qm94ZXNbbV9zb3J0ZWRUZXh0Qm94ZXNQb3NpdGlvbiArIDFdKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG5leHRUZXh0Qm94ID0gbV90ZXh0Qm94OworICAgICAgICAg
ICAgKytuZXh0VGV4dEJveDsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChydW5TdGFydCA8IHJ1
bkVuZCkgewogICAgICAgICAgICAgLy8gSGFuZGxlIGVpdGhlciBhIHNpbmdsZSBuZXdsaW5lIGNo
YXJhY3RlciAod2hpY2ggYmVjb21lcyBhIHNwYWNlKSwKQEAgLTgxNyw3ICs3MTgsNyBAQCB2b2lk
IFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgICAgICAvLyBBZHZhbmNlIGFuZCByZXR1cm4KLSAgICAgICAgICAgIHVuc2lnbmVk
IG5leHRSdW5TdGFydCA9IG5leHRUZXh0Qm94ID8gbmV4dFRleHRCb3gtPnN0YXJ0KCkgOiByZW5k
ZXJlclRleHQubGVuZ3RoKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBuZXh0UnVuU3RhcnQgPSBu
ZXh0VGV4dEJveCA/IG5leHRUZXh0Qm94LT5sb2NhbFN0YXJ0T2Zmc2V0KCkgOiByZW5kZXJlclRl
eHQubGVuZ3RoKCk7CiAgICAgICAgICAgICBpZiAobmV4dFJ1blN0YXJ0ID4gcnVuRW5kKQogICAg
ICAgICAgICAgICAgIG1fbGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgPSB0cnVl
OyAvLyBjb2xsYXBzZWQgc3BhY2UgYmV0d2VlbiBydW5zIG9yIGF0IHRoZSBlbmQKICAgICAgICAg
ICAgIG1fdGV4dEJveCA9IG5leHRUZXh0Qm94OwpAQCAtODMyLDggKzczMyw4IEBAIHZvaWQgVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICB9CiAgICAgaWYgKCFtX3RleHRCb3ggJiYg
bV9yZW1haW5pbmdUZXh0Qm94KSB7CiAgICAgICAgIG1fdGV4dEJveCA9IG1fcmVtYWluaW5nVGV4
dEJveDsKLSAgICAgICAgbV9yZW1haW5pbmdUZXh0Qm94ID0gbnVsbHB0cjsKLSAgICAgICAgbV9m
aXJzdExldHRlclRleHQgPSBudWxscHRyOworICAgICAgICBtX3JlbWFpbmluZ1RleHRCb3ggPSB7
IH07CisgICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0geyB9OwogICAgICAgICBtX29mZnNldCA9
IDA7CiAgICAgICAgIGhhbmRsZVRleHRCb3goKTsKICAgICB9CkBAIC04NTYsNyArNzU3LDcgQEAg
dm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlRmlyc3RMZXR0ZXIoUmVuZGVyVGV4dEZy
YWdtZW50JiByZW5kZXJlcikKICAgICAgICAgaWYgKGF1dG8qIGZpcnN0TGV0dGVyVGV4dCA9IGZp
cnN0UmVuZGVyVGV4dEluRmlyc3RMZXR0ZXIoZmlyc3RMZXR0ZXIpKSB7CiAgICAgICAgICAgICBt
X2hhbmRsZWRGaXJzdExldHRlciA9IHRydWU7CiAgICAgICAgICAgICBtX3JlbWFpbmluZ1RleHRC
b3ggPSBtX3RleHRCb3g7Ci0gICAgICAgICAgICBtX3RleHRCb3ggPSBmaXJzdExldHRlclRleHQt
PmZpcnN0VGV4dEJveCgpOworICAgICAgICAgICAgbV90ZXh0Qm94ID0gbV9saW5lTGF5b3V0UHJv
dmlkZXIuZmlyc3RUZXh0Qm94Rm9yKCpmaXJzdExldHRlclRleHQpOwogICAgICAgICAgICAgbV9z
b3J0ZWRUZXh0Qm94ZXMuY2xlYXIoKTsKICAgICAgICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0g
Zmlyc3RMZXR0ZXJUZXh0OwogICAgICAgICB9CkBAIC0xMjIyLDcgKzExMjMsNiBAQCB2b2lkIFRl
eHRJdGVyYXRvcjo6ZW1pdENoYXJhY3RlcihVQ2hhciBjaGFyYWN0ZXIsIE5vZGUmIGNoYXJhY3Rl
ck5vZGUsIE5vZGUqIG9mZgogICAgIG1fdGV4dCA9IG1fY29weWFibGVUZXh0LnRleHQoKTsKICAg
ICBtX2xhc3RDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CiAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdp
dGhDb2xsYXBzZWRTcGFjZSA9IGZhbHNlOwotICAgIG1fbmV4dFJ1bk5lZWRzV2hpdGVzcGFjZSA9
IGZhbHNlOwogfQogCiB2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQoVGV4dCYgdGV4dE5vZGUs
IFJlbmRlclRleHQmIHJlbmRlcmVyLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9m
ZnNldCkKQEAgLTEyNDcsNyArMTE0Nyw2IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjplbWl0VGV4dChU
ZXh0JiB0ZXh0Tm9kZSwgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGludCB0ZXh0U3RhcnRPCiAgICAg
bV90ZXh0ID0gbV9jb3B5YWJsZVRleHQudGV4dCgpOwogCiAgICAgbV9sYXN0VGV4dE5vZGVFbmRl
ZFdpdGhDb2xsYXBzZWRTcGFjZSA9IGZhbHNlOwotICAgIG1fbmV4dFJ1bk5lZWRzV2hpdGVzcGFj
ZSA9IGZhbHNlOwogICAgIG1faGFzRW1pdHRlZCA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDFmNGZkZGZlZjc1Li5lYmMyNTMyOTMwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0yOCw2ICsyOCw3IEBACiAvLyBGSVhN
RTogTW92ZSBlYWNoIGl0ZXJhdG9yIGNsYXNzIGludG8gYSBzZXBhcmF0ZSBoZWFkZXIgZmlsZS4K
IAogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCisjaW5jbHVkZSAiTGluZUxheW91dEludGVyZmFj
ZVRleHRCb3hlcy5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9y
QmVoYXZpb3IuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xNjcsMTAgKzE2OCwxMCBA
QCBwcml2YXRlOgogCiAgICAgLy8gVXNlZCB3aGVuIHRoZXJlIGlzIHN0aWxsIHNvbWUgcGVuZGlu
ZyB0ZXh0IGZyb20gdGhlIGN1cnJlbnQgbm9kZTsgd2hlbiB0aGVzZSBhcmUgZmFsc2UgYW5kIG51
bGwsIHdlIGdvIGJhY2sgdG8gbm9ybWFsIGl0ZXJhdGluZy4KICAgICBOb2RlKiBtX25vZGVGb3JB
ZGRpdGlvbmFsTmV3bGluZSB7IG51bGxwdHIgfTsKLSAgICBJbmxpbmVUZXh0Qm94KiBtX3RleHRC
b3ggeyBudWxscHRyIH07CisgICAgTGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9y
IG1fdGV4dEJveDsKIAogICAgIC8vIFVzZWQgd2hlbiBpdGVyYXRpbmcgb3ZlciA6Zmlyc3QtbGV0
dGVyIHRleHQgdG8gc2F2ZSBwb2ludGVyIHRvIHJlbWFpbmluZyB0ZXh0IGJveC4KLSAgICBJbmxp
bmVUZXh0Qm94KiBtX3JlbWFpbmluZ1RleHRCb3ggeyBudWxscHRyIH07CisgICAgTGluZUxheW91
dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9yIG1fcmVtYWluaW5nVGV4dEJveDsKIAogICAgIC8v
IFVzZWQgdG8gcG9pbnQgdG8gUmVuZGVyVGV4dCBvYmplY3QgZm9yIDpmaXJzdC1sZXR0ZXIuCiAg
ICAgUmVuZGVyVGV4dCogbV9maXJzdExldHRlclRleHQgeyBudWxscHRyIH07CkBAIC0xODAsMTEg
KzE4MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxh
cHNlZFNwYWNlIHsgZmFsc2UgfTsKICAgICBVQ2hhciBtX2xhc3RDaGFyYWN0ZXIgeyAwIH07CiAK
LSAgICAvLyBVc2VkIHRvIGRvIHNpbXBsZSBsaW5lIGxheW91dCBydW4gbG9naWMuCi0gICAgYm9v
bCBtX25leHRSdW5OZWVkc1doaXRlc3BhY2UgeyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fYWNj
dW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93IHsgMCB9OwotICAgIFRleHQqIG1fcHJldmlv
dXNTaW1wbGVUZXh0Tm9kZUluRmxvdyB7IG51bGxwdHIgfTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI+IG1fZmxvd1J1blJlc29sdmVyQ2FjaGU7Cisg
ICAgTGluZUxheW91dEludGVyZmFjZTo6UHJvdmlkZXIgbV9saW5lTGF5b3V0UHJvdmlkZXI7CiAK
ICAgICAvLyBVc2VkIHdoZW4gdGV4dCBib3hlcyBhcmUgb3V0IG9mIG9yZGVyIChIZWJyZXcvQXJh
YmljIHdpdGggZW1iZWRkZWQgTFRSIHRleHQpCiAgICAgVmVjdG9yPElubGluZVRleHRCb3gqPiBt
X3NvcnRlZFRleHRCb3hlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVl
QXNUZXh0LmNwcAppbmRleCBhMDdjNGQwNDE5MC4uOGQ0ZWQ5MmY5MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTIwMiw4ICsyMDIsOCBA
QCB2b2lkIFJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBSZW5kZXJPYmplY3QmIG8sCiAgICAgICAgIC8vIG1hbnkgdGVzdCByZXN1bHRzLgog
ICAgICAgICBjb25zdCBSZW5kZXJUZXh0JiB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4obyk7
CiAgICAgICAgIHIgPSBJbnRSZWN0KHRleHQuZmlyc3RSdW5Mb2NhdGlvbigpLCB0ZXh0LmxpbmVz
Qm91bmRpbmdCb3goKS5zaXplKCkpOwotICAgICAgICBhdXRvIHRleHRCb3hlcyA9IExpbmVMYXlv
dXRJbnRlcmZhY2U6OnRleHRCb3hlcyh0ZXh0KTsKLSAgICAgICAgaWYgKHRleHRCb3hlcy5iZWdp
bigpID09IHRleHRCb3hlcy5lbmQoKSkKKyAgICAgICAgTGluZUxheW91dEludGVyZmFjZTo6UHJv
dmlkZXIgbGluZUxheW91dFByb3ZpZGVyOworICAgICAgICBpZiAoIWxpbmVMYXlvdXRQcm92aWRl
ci5maXJzdFRleHRCb3hGb3IodGV4dCkpCiAgICAgICAgICAgICBhZGp1c3RGb3JUYWJsZUNlbGxz
ID0gZmFsc2U7CiAgICAgfSBlbHNlIGlmIChvLmlzQlIoKSkgewogICAgICAgICBjb25zdCBSZW5k
ZXJMaW5lQnJlYWsmIGJyID0gZG93bmNhc3Q8UmVuZGVyTGluZUJyZWFrPihvKTsKQEAgLTU0OSw4
ICs1NDksOSBAQCB2b2lkIHdyaXRlKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3Qm
IG8sIE9wdGlvblNldDxSZW5kZXJBc1RleHRGbGFnPiBiZQogICAgIFRleHRTdHJlYW06OkluZGVu
dFNjb3BlIGluZGVudFNjb3BlKHRzKTsKIAogICAgIGlmIChpczxSZW5kZXJUZXh0PihvKSkgewor
ICAgICAgICBMaW5lTGF5b3V0SW50ZXJmYWNlOjpQcm92aWRlciBsaW5lTGF5b3V0UHJvdmlkZXI7
CiAgICAgICAgIGF1dG8mIHRleHQgPSBkb3duY2FzdDxSZW5kZXJUZXh0PihvKTsKLSAgICAgICAg
Zm9yIChhdXRvIHRleHRCb3ggOiBMaW5lTGF5b3V0SW50ZXJmYWNlOjp0ZXh0Qm94ZXModGV4dCkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiB0ZXh0Qm94IDogbGluZUxheW91dFByb3ZpZGVyLnRleHRC
b3hSYW5nZUZvcih0ZXh0KSkgewogICAgICAgICAgICAgdHMgPDwgaW5kZW50OwogICAgICAgICAg
ICAgd3JpdGVUZXh0Qm94KHRzLCB0ZXh0LCB0ZXh0Qm94KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcApp
bmRleCAwMGYwMzgxNjcwOC4uZDIxZDk2MmRiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwCkBAIC0xMTMsNyArMTEz
LDcgQEAgdW5zaWduZWQgUnVuUmVzb2x2ZXI6OlJ1bjo6bG9jYWxFbmQoKSBjb25zdAogfQogCiBS
dW5SZXNvbHZlcjo6SXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IFJ1blJlc29sdmVyJiByZXNvbHZl
ciwgdW5zaWduZWQgcnVuSW5kZXgsIHVuc2lnbmVkIGxpbmVJbmRleCkKLSAgICA6IG1fcmVzb2x2
ZXIocmVzb2x2ZXIpCisgICAgOiBtX3Jlc29sdmVyKCZyZXNvbHZlcikKICAgICAsIG1fcnVuSW5k
ZXgocnVuSW5kZXgpCiAgICAgLCBtX2xpbmVJbmRleChsaW5lSW5kZXgpCiB7CkBAIC0xMjksOCAr
MTI5LDggQEAgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yJiBSdW5SZXNvbHZlcjo6SXRlcmF0b3I6OmFk
dmFuY2UoKQogCiBSdW5SZXNvbHZlcjo6SXRlcmF0b3ImIFJ1blJlc29sdmVyOjpJdGVyYXRvcjo6
YWR2YW5jZUxpbmVzKHVuc2lnbmVkIGxpbmVDb3VudCkKIHsKLSAgICB1bnNpZ25lZCBydW5Db3Vu
dCA9IG1fcmVzb2x2ZXIubV9sYXlvdXQucnVuQ291bnQoKTsKLSAgICBpZiAocnVuQ291bnQgPT0g
bV9yZXNvbHZlci5tX2xheW91dC5saW5lQ291bnQoKSkgeworICAgIHVuc2lnbmVkIHJ1bkNvdW50
ID0gcmVzb2x2ZXIoKS5tX2xheW91dC5ydW5Db3VudCgpOworICAgIGlmIChydW5Db3VudCA9PSBy
ZXNvbHZlcigpLm1fbGF5b3V0LmxpbmVDb3VudCgpKSB7CiAgICAgICAgIG1fcnVuSW5kZXggPSBz
dGQ6Om1pbihydW5Db3VudCwgbV9ydW5JbmRleCArIGxpbmVDb3VudCk7CiAgICAgICAgIG1fbGlu
ZUluZGV4ID0gbV9ydW5JbmRleDsKICAgICAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oCmluZGV4IDQ1
NTkyNjBmMmFkLi42YWI3MDMxNzBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaApAQCAtOTQsMTAgKzk0LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgdW5zaWduZWQgbGluZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5k
ZXg7IH0KICAgICAgICAgSXRlcmF0b3ImIGFkdmFuY2UoKTsKICAgICAgICAgSXRlcmF0b3ImIGFk
dmFuY2VMaW5lcyh1bnNpZ25lZCk7Ci0gICAgICAgIGNvbnN0IFJ1blJlc29sdmVyJiByZXNvbHZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZXI7IH0KLSAgICAgICAgYm9vbCBpblF1aXJrc01v
ZGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVyLm1faW5RdWlya3NNb2RlOyB9CisgICAgICAg
IGNvbnN0IFJ1blJlc29sdmVyJiByZXNvbHZlcigpIGNvbnN0IHsgcmV0dXJuICptX3Jlc29sdmVy
OyB9CisgICAgICAgIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gcmVzb2x2ZXIo
KS5tX2luUXVpcmtzTW9kZTsgfQogCi0gICAgICAgIGNvbnN0IFJ1blJlc29sdmVyJiBtX3Jlc29s
dmVyOworICAgICAgICBjb25zdCBSdW5SZXNvbHZlciogbV9yZXNvbHZlcjsKICAgICAgICAgdW5z
aWduZWQgbV9ydW5JbmRleDsKICAgICAgICAgdW5zaWduZWQgbV9saW5lSW5kZXg7CiAgICAgfTsK
QEAgLTIzOCw3ICsyMzgsNyBAQCBpbmxpbmUgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yJiBSdW5SZXNv
bHZlcjo6SXRlcmF0b3I6Om9wZXJhdG9yLS0oKQogCiBpbmxpbmUgYm9vbCBSdW5SZXNvbHZlcjo6
SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdAogewotICAg
IEFTU0VSVCgmbV9yZXNvbHZlciA9PSAmb3RoZXIubV9yZXNvbHZlcik7CisgICAgQVNTRVJUKG1f
cmVzb2x2ZXIgPT0gb3RoZXIubV9yZXNvbHZlcik7CiAgICAgcmV0dXJuIG1fcnVuSW5kZXggPT0g
b3RoZXIubV9ydW5JbmRleDsKIH0KIApAQCAtMjU0LDcgKzI1NCw3IEBAIGlubGluZSBSdW5SZXNv
bHZlcjo6UnVuIFJ1blJlc29sdmVyOjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QKIAogaW5s
aW5lIGNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6OlJ1biYgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpz
aW1wbGVSdW4oKSBjb25zdAogewotICAgIHJldHVybiBtX3Jlc29sdmVyLm1fbGF5b3V0LnJ1bkF0
KG1fcnVuSW5kZXgpOworICAgIHJldHVybiByZXNvbHZlcigpLm1fbGF5b3V0LnJ1bkF0KG1fcnVu
SW5kZXgpOwogfQogCiBpbmxpbmUgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIFJ1blJlc29sdmVyOjpi
ZWdpbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lTGF5b3V0SW50ZXJmYWNlVGV4dEJveGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuY3BwCmluZGV4IGRhYTg2M2IxY2Rj
Li4xODBjMGVlYzdkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
TGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5jcHAKQEAgLTM1LDQ2ICsz
NSw0NiBAQCBuYW1lc3BhY2UgTGluZUxheW91dEludGVyZmFjZSB7CiAKIEZsb2F0UmVjdCBUZXh0
Qm94OjpyZWN0KCkgY29uc3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFNpbXBsZUxp
bmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBzaW1wbGVMaW5lSXRlcmF0b3IpIHsKLSAg
ICAgICAgcmV0dXJuICgqc2ltcGxlTGluZUl0ZXJhdG9yKS5yZWN0KCk7CisgICAgYXV0byBzaW1w
bGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAg
ICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikucmVjdCgpOwogICAgIH07CiAKICAgICBhdXRvIGNv
bXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7CiAgICAgICAg
IHJldHVybiBpbmxpbmVUZXh0Qm94LT5mcmFtZVJlY3QoKTsKICAgICB9OwogCi0gICAgcmV0dXJu
IFdURjo6c3dpdGNoT24obV9pdGVyYXRvci5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgp
OworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2lt
cGxlLCBjb21wbGV4KTsKIH0KIAogRmxvYXRSZWN0IFRleHRCb3g6OmxvZ2ljYWxSZWN0KCkgY29u
c3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJl
c29sdmVyOjpJdGVyYXRvciBzaW1wbGVMaW5lSXRlcmF0b3IpIHsKLSAgICAgICAgcmV0dXJuICgq
c2ltcGxlTGluZUl0ZXJhdG9yKS5yZWN0KCk7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBU
ZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0
aC5pdGVyYXRvcikucmVjdCgpOwogICAgIH07CiAKICAgICBhdXRvIGNvbXBsZXggPSBbXShjb25z
dCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7CiAgICAgICAgIHJldHVybiBpbmxpbmVU
ZXh0Qm94LT5sb2dpY2FsRnJhbWVSZWN0KCk7CiAgICAgfTsKIAotICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1faXRlcmF0b3IubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29t
cGxleCk7CiB9CiAKIGJvb2wgVGV4dEJveDo6aGFzSHlwaGVuKCkgY29uc3QKIHsKLSAgICBhdXRv
IHNpbXBsZSA9IFtdKGNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRv
ciBzaW1wbGVMaW5lSXRlcmF0b3IpIHsKLSAgICAgICAgcmV0dXJuICgqc2ltcGxlTGluZUl0ZXJh
dG9yKS5oYXNIeXBoZW4oKTsKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVy
YXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9y
KS5oYXNIeXBoZW4oKTsKICAgICB9OwogCiAgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5s
aW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgewogICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJv
eC0+aGFzSHlwaGVuKCk7CiAgICAgfTsKIAotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1faXRl
cmF0b3IubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKKyAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CiB9CiAK
IGJvb2wgVGV4dEJveDo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIGNvbnN0CiB7Ci0gICAgYXV0
byBzaW1wbGUgPSBbXShjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0
b3IpIHsKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxl
UGF0aCYpIHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKIApAQCAtODIsMTIgKzgyLDEy
IEBAIGJvb2wgVGV4dEJveDo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIGNvbnN0CiAgICAgICAg
IHJldHVybiBpbmxpbmVUZXh0Qm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgfTsK
IAotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1faXRlcmF0b3IubV9wYXRoVmFyaWFudCwgc2lt
cGxlLCBjb21wbGV4KTsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0
aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CiB9CiAKIGJvb2wgVGV4dEJveDo6ZGlyT3ZlcnJp
ZGUoKSBjb25zdAogewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgU2ltcGxlTGluZUxheW91
dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yKSB7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBU
ZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmKSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9OwogCkBAIC05NSwyMCArOTUsNjQgQEAgYm9vbCBUZXh0Qm94OjpkaXJPdmVycmlkZSgpIGNv
bnN0CiAgICAgICAgIHJldHVybiBpbmxpbmVUZXh0Qm94LT5kaXJPdmVycmlkZSgpOwogICAgIH07
CiAKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2l0ZXJhdG9yLm1fcGF0aFZhcmlhbnQsIHNp
bXBsZSwgY29tcGxleCk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3Bh
dGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwogfQogCiBTdHJpbmdWaWV3IFRleHRCb3g6OnRl
eHQoKSBjb25zdAogewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgU2ltcGxlTGluZUxheW91
dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIHNpbXBsZUxpbmVJdGVyYXRvcikgewotICAgICAgICBy
ZXR1cm4gKCpzaW1wbGVMaW5lSXRlcmF0b3IpLnRleHQoKTsKKyAgICBhdXRvIHNpbXBsZSA9IFtd
KGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1
cm4gKCpwYXRoLml0ZXJhdG9yKS50ZXh0KCk7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcGxleCA9
IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKICAgICAgICAgcmV0dXJu
IFN0cmluZ1ZpZXcoaW5saW5lVGV4dEJveC0+cmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmluZyhp
bmxpbmVUZXh0Qm94LT5zdGFydCgpLCBpbmxpbmVUZXh0Qm94LT5sZW4oKSk7CiAgICAgfTsKIAot
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1faXRlcmF0b3IubV9wYXRoVmFyaWFudCwgc2ltcGxl
LCBjb21wbGV4KTsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZh
cmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3Vuc2lnbmVkIFRleHRCb3g6OmxvY2FsU3Rh
cnRPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0
ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0
b3IpLmxvY2FsU3RhcnQoKTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3Qg
SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgeworICAgICAgICByZXR1cm4gaW5saW5lVGV4
dEJveC0+c3RhcnQoKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0
b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit1bnNpZ25lZCBUZXh0
Qm94Ojpsb2NhbEVuZE9mZnNldCgpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25z
dCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgq
cGF0aC5pdGVyYXRvcikubG9jYWxFbmQoKTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0g
W10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgeworICAgICAgICByZXR1cm4g
aW5saW5lVGV4dEJveC0+ZW5kKCk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9u
KGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKwordW5zaWdu
ZWQgVGV4dEJveDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0
IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpw
YXRoLml0ZXJhdG9yKS5lbmQoKSAtICgqcGF0aC5pdGVyYXRvcikuc3RhcnQoKTsKKyAgICB9Owor
CisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJv
eCkgeworICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+bGVuKCk7CisgICAgfTsKKworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBj
b21wbGV4KTsKK30KKworaW5saW5lIGNvbnN0IFRleHRCb3hJdGVyYXRvciYgVGV4dEJveDo6aXRl
cmF0b3IoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUZXh0Qm94SXRl
cmF0b3ImPigqdGhpcyk7CiB9CiAKIFRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKGNv
bnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpCkBAIC0xMTYsMTUgKzE2MCwxNSBAQCBU
ZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxp
bmVUZXh0Qm94KQogewogfQogCi1UZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihTaW1w
bGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3Igc2ltcGxlTGluZUl0ZXJhdG9yKQot
ICAgIDogbV9wYXRoVmFyaWFudChzaW1wbGVMaW5lSXRlcmF0b3IpCitUZXh0Qm94SXRlcmF0b3I6
OlRleHRCb3hJdGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3Ig
aXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQpCisg
ICAgOiBtX3BhdGhWYXJpYW50KFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCB7IGl0ZXJhdG9y
LCBlbmQgfSkKIHsKIH0KIAogVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRlcmF0b3I6OnRyYXZl
cnNlTmV4dCgpCiB7Ci0gICAgYXV0byBzaW1wbGUgPSBbXShTaW1wbGVMaW5lTGF5b3V0OjpSdW5S
ZXNvbHZlcjo6SXRlcmF0b3ImIHNpbXBsZUxpbmVJdGVyYXRvcikgewotICAgICAgICArK3NpbXBs
ZUxpbmVJdGVyYXRvcjsKKyAgICBhdXRvIHNpbXBsZSA9IFtdKFRleHRCb3hJdGVyYXRvcjo6U2lt
cGxlUGF0aCYgcGF0aCkgeworICAgICAgICArK3BhdGguaXRlcmF0b3I7CiAgICAgfTsKIAogICAg
IGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqJiBpbmxpbmVUZXh0Qm94KSB7
CkBAIC0xNDEsOCArMTg1LDggQEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29u
c3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICBpZiAobV9wYXRoVmFyaWFudC5p
bmRleCgpICE9IG90aGVyLm1fcGF0aFZhcmlhbnQuaW5kZXgoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byBzaW1wbGUgPSBbJl0oY29uc3QgU2ltcGxlTGluZUxheW91dDo6UnVu
UmVzb2x2ZXI6Okl0ZXJhdG9yIHNpbXBsZUxpbmVJdGVyYXRvcikgewotICAgICAgICByZXR1cm4g
c2ltcGxlTGluZUl0ZXJhdG9yID09IFdURjo6Z2V0PFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29s
dmVyOjpJdGVyYXRvcj4ob3RoZXIubV9wYXRoVmFyaWFudCk7CisgICAgYXV0byBzaW1wbGUgPSBb
Jl0oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJl
dHVybiBwYXRoLml0ZXJhdG9yID09IFdURjo6Z2V0PFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0
aD4ob3RoZXIubV9wYXRoVmFyaWFudCkuaXRlcmF0b3I7CiAgICAgfTsKIAogICAgIGF1dG8gY29t
cGxleCA9IFsmXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7CkBAIC0xNTIs
MzIgKzE5Niw0OCBAQCBib29sIFRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBUZXh0
Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0
aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CiB9CiAKLXN0YXRpYyBPcHRpb25hbDxTaW1wbGVM
aW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4gc2ltcGxlTGluZVJ1blJlc29sdmVyRm9yVGV4dChjb25z
dCBSZW5kZXJUZXh0JiB0ZXh0KQorYm9vbCBUZXh0Qm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QK
IHsKLSAgICBpZiAoIXRleHQuc2ltcGxlTGluZUxheW91dCgpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgIHJldHVybiBTaW1wbGVMaW5lTGF5b3V0OjpydW5SZXNvbHZlcihkb3du
Y2FzdDxjb25zdCBSZW5kZXJCbG9ja0Zsb3c+KCp0ZXh0LnBhcmVudCgpKSwgKnRleHQuc2ltcGxl
TGluZUxheW91dCgpKTsKKyAgICBhdXRvIHNpbXBsZSA9IFsmXShjb25zdCBUZXh0Qm94SXRlcmF0
b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaXRlcmF0b3IgPT0g
cGF0aC5lbmQ7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFsmXShjb25zdCBJbmxpbmVU
ZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7CisgICAgICAgIHJldHVybiAhaW5saW5lVGV4dEJveDsK
KyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgc2ltcGxl
LCBjb21wbGV4KTsKIH0KIAotc3RhdGljIGF1dG8gcmFuZ2VGb3JUZXh0KGNvbnN0IFJlbmRlclRl
eHQmIHRleHQsIE9wdGlvbmFsPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPiYgc2ltcGxl
TGluZVJ1blJlc29sdmVyKQorUHJvdmlkZXI6OlByb3ZpZGVyKCkgPSBkZWZhdWx0OworUHJvdmlk
ZXI6On5Qcm92aWRlcigpID0gZGVmYXVsdDsKKworVGV4dEJveEl0ZXJhdG9yIFByb3ZpZGVyOjpm
aXJzdFRleHRCb3hGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKIHsKLSAgICBpZiAoc2ltcGxl
TGluZVJ1blJlc29sdmVyKSB7Ci0gICAgICAgIGF1dG8gcmFuZ2UgPSBzaW1wbGVMaW5lUnVuUmVz
b2x2ZXItPnJhbmdlRm9yUmVuZGVyZXIodGV4dCk7Ci0gICAgICAgIHJldHVybiBXVEY6Om1ha2VJ
dGVyYXRvclJhbmdlKFRleHRCb3hJdGVyYXRvcihyYW5nZS5iZWdpbigpKSwgVGV4dEJveEl0ZXJh
dG9yKHJhbmdlLmVuZCgpKSk7CisgICAgaWYgKGF1dG8qIHNpbXBsZUxpbmVMYXlvdXQgPSB0ZXh0
LnNpbXBsZUxpbmVMYXlvdXQoKSkgeworICAgICAgICBhdXRvJiBwYXJlbnQgPSBkb3duY2FzdDxj
b25zdCBSZW5kZXJCbG9ja0Zsb3c+KCp0ZXh0LnBhcmVudCgpKTsKKyAgICAgICAgYXV0byYgcmVz
b2x2ZXIgPSBtX3NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlcnMuZW5zdXJlKCZwYXJlbnQsIFsmXSB7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNv
bHZlcj4ocGFyZW50LCAqc2ltcGxlTGluZUxheW91dCk7CisgICAgICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKKworICAgICAgICBhdXRvIHJhbmdlID0gcmVzb2x2ZXItPnJhbmdlRm9yUmVuZGVyZXIo
dGV4dCk7CisgICAgICAgIHJldHVybiB7IHJhbmdlLmJlZ2luKCksIHJhbmdlLmVuZCgpIH07CiAg
ICAgfQotICAgIHJldHVybiBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKFRleHRCb3hJdGVyYXRvcih0
ZXh0LmZpcnN0VGV4dEJveCgpKSwgVGV4dEJveEl0ZXJhdG9yKG51bGxwdHIpKTsKKworICAgIHJl
dHVybiBUZXh0Qm94SXRlcmF0b3IgeyB0ZXh0LmZpcnN0VGV4dEJveCgpIH07CiB9CiAKLVRleHRC
b3hSYW5nZTo6VGV4dEJveFJhbmdlKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCi0gICAgOiBtX3Np
bXBsZUxpbmVSdW5SZXNvbHZlcihzaW1wbGVMaW5lUnVuUmVzb2x2ZXJGb3JUZXh0KHRleHQpKQot
ICAgICwgbV9yYW5nZShyYW5nZUZvclRleHQodGV4dCwgbV9zaW1wbGVMaW5lUnVuUmVzb2x2ZXIp
KQorVGV4dEJveFJhbmdlIFByb3ZpZGVyOjp0ZXh0Qm94UmFuZ2VGb3IoY29uc3QgUmVuZGVyVGV4
dCYgdGV4dCkKIHsKKyAgICByZXR1cm4geyBmaXJzdFRleHRCb3hGb3IodGV4dCkgfTsKIH0KIAot
VGV4dEJveFJhbmdlIHRleHRCb3hlcyhjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQorVGV4dEJveEl0
ZXJhdG9yIFByb3ZpZGVyOjppdGVyYXRvckZvcklubGluZVRleHRCb3goY29uc3QgSW5saW5lVGV4
dEJveCogaW5saW5lVGV4dEJveCkKIHsKLSAgICByZXR1cm4geyB0ZXh0IH07CisgICAgcmV0dXJu
IFRleHRCb3hJdGVyYXRvciB7IGlubGluZVRleHRCb3ggfTsKIH0KIAorCisKIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VU
ZXh0Qm94ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRl
cmZhY2VUZXh0Qm94ZXMuaAppbmRleCA0NjRjMjJhNzNmYi4uMWVmMmM4OTc0NDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0
Qm94ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50
ZXJmYWNlVGV4dEJveGVzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KICNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KQEAgLTM0LDYg
KzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5saW5lVGV4dEJveDsKK2Ns
YXNzIFByb3ZpZGVyOwogY2xhc3MgUmVuZGVyVGV4dDsKIAogbmFtZXNwYWNlIExpbmVMYXlvdXRJ
bnRlcmZhY2UgewpAQCAtNDEsMTIgKzQzLDEwIEBAIG5hbWVzcGFjZSBMaW5lTGF5b3V0SW50ZXJm
YWNlIHsKIGNsYXNzIFRleHRCb3hDb250ZXh0OwogY2xhc3MgVGV4dEJveEl0ZXJhdG9yOwogCitz
dHJ1Y3QgRW5kSXRlcmF0b3IgeyB9OworCiBjbGFzcyBUZXh0Qm94IHsKIHB1YmxpYzoKLSAgICBU
ZXh0Qm94KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgaXRlcmF0b3IpCi0gICAgICAgIDogbV9pdGVy
YXRvcihpdGVyYXRvcikKLSAgICB7IH0KLQogICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3Q7CiAg
ICAgRmxvYXRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3Q7CiAKQEAgLTU2LDQ1ICs1Niw4MyBAQCBw
dWJsaWM6CiAKICAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdDsKIAorICAgIC8vIFRoZXNlIG9m
ZnNldHMgYXJlIHJlbGF0aXZlIHRvIHRoZSB0ZXh0IHJlbmRlcmVyIChub3QgZmxvdykuCisgICAg
dW5zaWduZWQgbG9jYWxTdGFydE9mZnNldCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvY2FsRW5k
T2Zmc2V0KCkgY29uc3Q7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisKK3Byb3RlY3Rl
ZDoKKyAgICBUZXh0Qm94KCkgPSBkZWZhdWx0OworICAgIFRleHRCb3goY29uc3QgVGV4dEJveCYp
ID0gZGVmYXVsdDsKKyAgICBUZXh0Qm94KFRleHRCb3gmJikgPSBkZWZhdWx0OworICAgIFRleHRC
b3gmIG9wZXJhdG9yPShjb25zdCBUZXh0Qm94JikgPSBkZWZhdWx0OworICAgIFRleHRCb3gmIG9w
ZXJhdG9yPShUZXh0Qm94JiYpID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKLSAgICBjb25zdCBUZXh0
Qm94SXRlcmF0b3ImIG1faXRlcmF0b3I7CisgICAgY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBpdGVy
YXRvcigpIGNvbnN0OwogfTsKIAotY2xhc3MgVGV4dEJveEl0ZXJhdG9yIHsKK2NsYXNzIFRleHRC
b3hJdGVyYXRvciA6IHByaXZhdGUgVGV4dEJveCB7CiBwdWJsaWM6Ci0gICAgVGV4dEJveEl0ZXJh
dG9yKGNvbnN0IElubGluZVRleHRCb3gqKTsKLSAgICBUZXh0Qm94SXRlcmF0b3IoU2ltcGxlTGlu
ZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yKTsKKyAgICBUZXh0Qm94SXRlcmF0b3IoKSA6
IG1fcGF0aFZhcmlhbnQobnVsbHB0cikgeyB9OworICAgIGV4cGxpY2l0IFRleHRCb3hJdGVyYXRv
cihjb25zdCBJbmxpbmVUZXh0Qm94Kik7CisgICAgVGV4dEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVM
YXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2
ZXI6Okl0ZXJhdG9yIGVuZCk7CiAKICAgICBUZXh0Qm94SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7
IHJldHVybiB0cmF2ZXJzZU5leHQoKTsgfQogCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICFhdEVuZCgpOyB9CisKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VGV4dEJveEl0ZXJhdG9yJikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRC
b3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAK
LSAgICBUZXh0Qm94IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIHsgKnRoaXMgfTsgfQorICAg
IGJvb2wgb3BlcmF0b3I9PShFbmRJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gYXRFbmQoKTsgfQor
ICAgIGJvb2wgb3BlcmF0b3IhPShFbmRJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7
IH0KKworICAgIGNvbnN0IFRleHRCb3gmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICp0aGlz
OyB9CisgICAgY29uc3QgVGV4dEJveCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHRoaXM7
IH0KKworICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgVGV4dEJveDsKIAogICAgIFRleHRCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0KCk7CiAKLSAg
ICBWYXJpYW50PFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciwgY29uc3Qg
SW5saW5lVGV4dEJveCo+IG1fcGF0aFZhcmlhbnQ7CisgICAgc3RydWN0IFNpbXBsZVBhdGggewor
ICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgaXRlcmF0b3I7
CisgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQ7Cisg
ICAgfTsKKyAgICBWYXJpYW50PFNpbXBsZVBhdGgsIGNvbnN0IElubGluZVRleHRCb3gqPiBtX3Bh
dGhWYXJpYW50OwogfTsKIAogY2xhc3MgVGV4dEJveFJhbmdlIHsKIHB1YmxpYzoKLSAgICBUZXh0
Qm94UmFuZ2UoY29uc3QgUmVuZGVyVGV4dCYpOworICAgIFRleHRCb3hSYW5nZShUZXh0Qm94SXRl
cmF0b3IgYmVnaW4pCisgICAgICAgIDogbV9iZWdpbihiZWdpbikKKyAgICB7CisgICAgfQogCi0g
ICAgVGV4dEJveEl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5iZWdpbigp
OyB9Ci0gICAgVGV4dEJveEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2UuZW5k
KCk7IH0KKyAgICBUZXh0Qm94SXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2lu
OyB9CisgICAgRW5kSXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKIHByaXZh
dGU6Ci0gICAgZnJpZW5kIGNsYXNzIFRleHRCb3hJdGVyYXRvcjsKLQotICAgIE9wdGlvbmFsPFNp
bXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPiBtX3NpbXBsZUxpbmVSdW5SZXNvbHZlcjsKLSAg
ICBXVEY6Okl0ZXJhdG9yUmFuZ2U8VGV4dEJveEl0ZXJhdG9yPiBtX3JhbmdlOworICAgIFRleHRC
b3hJdGVyYXRvciBtX2JlZ2luOwogfTsKIAotVGV4dEJveFJhbmdlIHRleHRCb3hlcyhjb25zdCBS
ZW5kZXJUZXh0Jik7CitjbGFzcyBQcm92aWRlciB7CitwdWJsaWM6CisgICAgUHJvdmlkZXIoKTsK
KyAgICB+UHJvdmlkZXIoKTsKKworICAgIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3Io
Y29uc3QgUmVuZGVyVGV4dCYpOworICAgIFRleHRCb3hSYW5nZSB0ZXh0Qm94UmFuZ2VGb3IoY29u
c3QgUmVuZGVyVGV4dCYpOworCisgICAgLy8gRklYTUU6IFJlbW92ZS4KKyAgICBUZXh0Qm94SXRl
cmF0b3IgaXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KGNvbnN0IElubGluZVRleHRCb3gqKTsKKwor
cHJpdmF0ZToKKyAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckJsb2NrRmxvdyosIHN0ZDo6dW5pcXVl
X3B0cjxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4+IG1fc2ltcGxlTGluZUxheW91dFJl
c29sdmVyczsKK307CiAKIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378854</attachid>
            <date>2019-09-16 04:38:46 -0700</date>
            <delta_ts>2019-09-16 07:31:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>lineapi-textiterator-8.patch</filename>
            <type>text/plain</type>
            <size>64498</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYWMyZjcwZDk2Yi4uOWRjNTU3OTEwY2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAor
MjAxOS0wOS0xNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
RWxpbWluYXRlIHNlcGFyYXRlIHNpbXBsZSBsaW5lIGxheW91dCBwYXRoIGZyb20gVGV4dEl0ZXJh
dG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3
NjAKKworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBtYWtlcyBzaW1wbGUgYW5kIGNvbXBsZXggbGluZSBsYXlvdXQgcGF0aCByZXN1bHRzIGZy
b20gVGV4dEl0ZXJhdG9yIG1hdGNoLCBjYXVzaW5nIHNvbWUgd2hpdGVzcGFjZSBjaGFuZ2VzLgor
CisgICAgICAgICogYW5pbWF0aW9ucy9saW5laGVpZ2h0LWFuaW1hdGlvbi1leHBlY3RlZC50eHQ6
CisgICAgICAgICogYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBhbmltYXRpb25zL3dpZHRoLXVzaW5nLWVtcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogY29tcG9zaXRpbmcvc2hhcmVkLWJhY2tpbmcvb3ZlcmZsb3ctc2Nyb2xs
L2Fic29sdXRlLWluLXN0YWNraW5nLXJlbGF0aXZlLWluLXNjcm9sbGVyLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLWRvZXMtbm90
LXNpemUtcHJvcGVybHktYWJzb2x1dGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZXZl
bnRzL3dpbmRvdy1ldmVudHMtYnViYmxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2
ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZTItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
dG9rZW5pemVyL3NjcmlwdF9leHRyYV9jbG9zZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogbGVn
YWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy9saW5laGVpZ2h0LWFuaW1hdGlvbi1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy9z
aW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzY3Jv
bGxpbmdjb29yZGluYXRvci9zY3JvbGxpbmctdHJlZS9uZXN0ZWQtYWJzb2x1dGUtaW4tb3ZlcmZs
b3ctZXhwZWN0ZWQudHh0OgorCiAyMDE5LTA5LTE2ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNn
XzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBvc2UgbWlzc3BlbGxpbmcgcmFuZ2VzIGZvciBl
ZGl0YWJsZSBjb250ZW50IHRvIGFjY2Vzc2liaWxpdHkgY2xpZW50cy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMvbGluZWhlaWdodC1hbmltYXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9saW5laGVpZ2h0LWFuaW1hdGlvbi1leHBlY3RlZC50eHQK
aW5kZXggMzkyMzZiMzQwZDQuLjQxNzJhOGM1NmUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL2xpbmVoZWlnaHQtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9hbmltYXRpb25zL2xpbmVoZWlnaHQtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSwz
ICsxLDMgQEAKLVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIGxpbmUtaGVp
Z2h0IHByb3BlcnR5LiBJdCB0ZXN0cyB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgcHJvcGVybHkgZ2V0
dGluZyB0aGUgZm9udC1zaXplLkhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4g
SGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4g
SGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4g
SGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4g
SGVyZSBpcyBzb21lIHRleHQuCitUaGlzIHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRo
ZSBsaW5lLWhlaWdodCBwcm9wZXJ0eS4gSXQgdGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJlIHBy
b3Blcmx5IGdldHRpbmcgdGhlIGZvbnQtc2l6ZS4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMg
c29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4KIFBBU1MgLSAibGluZUhlaWdodCIgcHJvcGVy
dHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC4xcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxMAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC10
cmFuc2Zvcm0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9zaW11bHRhbmVv
dXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dAppbmRleCBhYzViZTMyYjcyMC4uZDllODcy
MmY0N2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3VzLXN0
YXJ0LXRyYW5zZm9ybS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9z
aW11bHRhbmVvdXMtc3RhcnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAK
LVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0
eS4gSXQgYW5pbWF0ZXMgb3ZlciAxMCBzZWNvbmRzLiBJdCB0YWtlcyAzIHNuYXBzaG90cyBhbmQg
ZXhwZWN0cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2UuUEFTUyAt
ICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAycyBzYXcg
c29tZXRoaW5nIGNsb3NlIHRvOiAwLjMwOTAxNywwLjk1MTA1NworVGhpcyB0ZXN0IHBlcmZvcm1z
IGFuIGFuaW1hdGlvbiBvZiB0aGUgdHJhbnNmb3JtIHByb3BlcnR5LiBJdCBhbmltYXRlcyBvdmVy
IDEwIHNlY29uZHMuIEl0IHRha2VzIDMgc25hcHNob3RzIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0
IHRvIGJlIHdpdGhpbiBhIHNwZWNpZmllZCByYW5nZS4gUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0i
IHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRv
OiAwLjMwOTAxNywwLjk1MTA1NwogUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZv
ciAiYm94MiIgZWxlbWVudCBhdCAycyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAwLjMwOTAxNyww
Ljk1MTA1NwogUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94MSIgYW5k
ICJib3gyIiBlbGVtZW50cyBhdCAycyBhcmUgY2xvc2UgZW5vdWdoIHRvIGVhY2ggb3RoZXIKIFBB
U1MgLSAid2Via2l0VHJhbnNmb3JtIiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgNXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogLTEsMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5p
bWF0aW9ucy93aWR0aC11c2luZy1lbXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy93aWR0aC11c2luZy1lbXMtZXhwZWN0ZWQudHh0CmluZGV4IGRmYjczN2Q0ZDk2Li5iY2Y2
MTkxMmUwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy93aWR0aC11c2luZy1l
bXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvd2lkdGgtdXNpbmct
ZW1zLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKLVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBh
bmltYXRpb24gb2YgdGhlIHdpZHRoIHByb3BlcnR5IHVzaW5nICdlbScgdW5pdHMuIEl0IHRlc3Rz
IHdoZXRoZXIgb3Igbm90IHdlIGFyZSBwcm9wZXJseSBnZXR0aW5nIHRoZSBkZWZhdWx0IGZvbnQt
c2l6ZS5IZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0
ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0
ZXh0LgorVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgd2lkdGggcHJvcGVy
dHkgdXNpbmcgJ2VtJyB1bml0cy4gSXQgdGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJlIHByb3Bl
cmx5IGdldHRpbmcgdGhlIGRlZmF1bHQgZm9udC1zaXplLiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVy
ZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVy
ZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LgogUEFTUyAtICJ3aWR0aCIgcHJvcGVy
dHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC4zMzNzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEz
MwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9zaGFyZWQtYmFja2luZy9v
dmVyZmxvdy1zY3JvbGwvYWJzb2x1dGUtaW4tc3RhY2tpbmctcmVsYXRpdmUtaW4tc2Nyb2xsZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvc2hhcmVkLWJhY2tpbmcvb3Zl
cmZsb3ctc2Nyb2xsL2Fic29sdXRlLWluLXN0YWNraW5nLXJlbGF0aXZlLWluLXNjcm9sbGVyLWV4
cGVjdGVkLnR4dAppbmRleCBlMWJlMjkwOWZiZS4uMDI4ZWE4MmNiNmUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3NoYXJlZC1iYWNraW5nL292ZXJmbG93LXNjcm9sbC9hYnNv
bHV0ZS1pbi1zdGFja2luZy1yZWxhdGl2ZS1pbi1zY3JvbGxlci1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvc2hhcmVkLWJhY2tpbmcvb3ZlcmZsb3ctc2Nyb2xsL2Fi
c29sdXRlLWluLXN0YWNraW5nLXJlbGF0aXZlLWluLXNjcm9sbGVyLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDQgQEAKLXJlbGF0aXZlYWJzb2x1dGUKK3JlbGF0aXZlIGFic29sdXRlCiAoR3JhcGhp
Y3NMYXllcgogICAoYW5jaG9yIDAuMDAgMC4wMCkKICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZp
bHRlci1kb2VzLW5vdC1zaXplLXByb3Blcmx5LWFic29sdXRlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItZG9lcy1ub3Qtc2l6
ZS1wcm9wZXJseS1hYnNvbHV0ZS1leHBlY3RlZC50eHQKaW5kZXggNjg0ZDYxNjdiYWUuLjNjZjBh
ZmEyMzc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFj
a2Ryb3AtZmlsdGVyLWRvZXMtbm90LXNpemUtcHJvcGVybHktYWJzb2x1dGUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXIt
ZG9lcy1ub3Qtc2l6ZS1wcm9wZXJseS1hYnNvbHV0ZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0
IEBACi1mb29mb29iYXIKK2ZvbyBmb29iYXIKIChHcmFwaGljc0xheWVyCiAgIChhbmNob3IgMC4w
MCAwLjAwKQogICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZS1leHBlY3RlZC50eHQKaW5kZXgg
ZWMwZDEzMDZhYjYuLmY4ODA1NjUzZDA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy93aW5kb3ctZXZlbnRzLWJ1YmJsZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvd2luZG93LWV2ZW50cy1idWJibGUtZXhwZWN0ZWQudHh0CkBAIC0xICsxIEBA
Ci1UZXN0IHRoYXQgc3RvcFByb3BhZ2F0aW9uKCkgd2lsbCBub3QgYWxsb3cgd2luZG93IGV2ZW50
cyB0byBidWJibGUuIENsaWNraW5nIG9uIHRoaXMgc2hvdWxkIG5vdCBmaXJlIHdpbmRvdy5vbmNs
aWNrLiBUaGlzIG1hdGNoZXMgb3VyIG9sZCBiZWhhdmlvciBhbmQgRmlyZWZveCBiZWhhdmlvci5z
dG9wUHJvcGFnYXRpb24gY2FsbGVkLiBUZXN0IFBhc3NlZC4KK1Rlc3QgdGhhdCBzdG9wUHJvcGFn
YXRpb24oKSB3aWxsIG5vdCBhbGxvdyB3aW5kb3cgZXZlbnRzIHRvIGJ1YmJsZS4gQ2xpY2tpbmcg
b24gdGhpcyBzaG91bGQgbm90IGZpcmUgd2luZG93Lm9uY2xpY2suIFRoaXMgbWF0Y2hlcyBvdXIg
b2xkIGJlaGF2aW9yIGFuZCBGaXJlZm94IGJlaGF2aW9yLiBzdG9wUHJvcGFnYXRpb24gY2FsbGVk
LiBUZXN0IFBhc3NlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRv
dy1ldmVudHMtYnViYmxlMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93
aW5kb3ctZXZlbnRzLWJ1YmJsZTItZXhwZWN0ZWQudHh0CmluZGV4IDk4Mjk0ZTMzYzVkLi4zYTNl
Mzc2NTkwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LWV2ZW50
cy1idWJibGUyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy93aW5k
b3ctZXZlbnRzLWJ1YmJsZTItZXhwZWN0ZWQudHh0CkBAIC0xICsxIEBACi1UZXN0cyB0aGF0IHBy
ZXZlbnREZWZhdWx0KCkgd2lsbCBzdGlsbCBhbGxvdyB3aW5kb3cgZXZlbnRzIHRvIGJ1YmJsZS4g
Q2xpY2tpbmcgaGVyZSBzaG91bGQgZmlyZSB3aW5kb3cub25jbGljay4gVGhpcyB3aWxsIG1hdGNo
IEZpcmVmb3ggYmVoYXZpb3IuV2luZG93Lm9uQ2xpY2sgZmlyZWQuIFRlc3QgUGFzc2VkLgorVGVz
dHMgdGhhdCBwcmV2ZW50RGVmYXVsdCgpIHdpbGwgc3RpbGwgYWxsb3cgd2luZG93IGV2ZW50cyB0
byBidWJibGUuIENsaWNraW5nIGhlcmUgc2hvdWxkIGZpcmUgd2luZG93Lm9uY2xpY2suIFRoaXMg
d2lsbCBtYXRjaCBGaXJlZm94IGJlaGF2aW9yLiBXaW5kb3cub25DbGljayBmaXJlZC4gVGVzdCBQ
YXNzZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Rva2VuaXplci9zY3JpcHRfZXh0
cmFfY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90b2tlbml6ZXIvc2NyaXB0
X2V4dHJhX2Nsb3NlLWV4cGVjdGVkLnR4dAppbmRleCA0MmZhOGQ4M2Q4Yy4uNzllYjlhNjI0NWQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvdG9rZW5pemVyL3NjcmlwdF9leHRyYV9jbG9z
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90b2tlbml6ZXIvc2NyaXB0X2V4
dHJhX2Nsb3NlLWV4cGVjdGVkLnR4dApAQCAtMSArMSBAQAotVEVTVC4uLiBQQVNTRUQuIFRoaXMg
dGV4dCBzaG91bGQgc2hvdyB1cC4KK1RFU1QuLi4JUEFTU0VELiBUaGlzIHRleHQgc2hvdWxkIHNo
b3cgdXAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA5MTcwZDA2Mzg4Mi4uZjE0
YWU2NjIxNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDE5LTA5LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgIEVs
aW1pbmF0ZSBzZXBhcmF0ZSBzaW1wbGUgbGluZSBsYXlvdXQgcGF0aCBmcm9tIFRleHRJdGVyYXRv
cgorICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE3NjAKKwor
ICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtZ3JpZC9hbGlnbm1lbnQvZ3JpZC1yb3ctYXhpcy1hbGlnbm1lbnQtcG9zaXRpb25l
ZC1pdGVtcy0wMTUtZXhwZWN0ZWQudHh0OgorICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9j
c3MtZ3JpZC9hbGlnbm1lbnQvZ3JpZC1yb3ctYXhpcy1hbGlnbm1lbnQtcG9zaXRpb25lZC1pdGVt
cy0wMTYtZXhwZWN0ZWQudHh0OgorICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2lubmVyVGV4dC9n
ZXR0ZXItZXhwZWN0ZWQudHh0OgorCisgICAgVHdvICdcdCcgc3VidGVzdHMgZmxpcCB0byBGQUlM
IGJlY2F1c2UgdGhpcyB3YXMgb25seSBzdXBwb3J0ZWQgb24gVGV4dEl0ZXJhdG9yIHNpbXBsZSBs
aW5lIGxheW91dCBwYXRoLgorICAgIFRoaXMgY2FuIG5vdyBiZSBmaXhlZCBjb3JyZWN0bHkgZm9y
IGJvdGggcGF0aHMuCisKIDIwMTktMDktMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZS1zeW5jIEhUTUwgd2ViLXBsYXRmb3JtLXRlc3RzIGZyb20gdXBzdHJl
YW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1ncmlkL2FsaWdubWVudC9ncmlkLXJvdy1heGlzLWFsaWdubWVudC1wb3NpdGlv
bmVkLWl0ZW1zLTAxNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hbGlnbm1lbnQvZ3JpZC1yb3ctYXhpcy1hbGln
bm1lbnQtcG9zaXRpb25lZC1pdGVtcy0wMTUtZXhwZWN0ZWQudHh0CmluZGV4IGRkYzkxZWU0NWQ2
Li5jZmNjODAwN2JkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvYWxpZ25tZW50L2dyaWQtcm93LWF4aXMtYWxpZ25t
ZW50LXBvc2l0aW9uZWQtaXRlbXMtMDE1LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtZ3JpZC9hbGlnbm1lbnQvZ3Jp
ZC1yb3ctYXhpcy1hbGlnbm1lbnQtcG9zaXRpb25lZC1pdGVtcy0wMTUtZXhwZWN0ZWQudHh0CkBA
IC0zLDcgKzMsNyBAQCBYIFhYWCBYCiBYWCBYWFhYIFhYIFhYWCBYCiBYIFhYWAogWAotWFggWFhY
WCBYWCBYWFggWAorWFggWFhYIFggWFggWFhYIFgKIFggWFhYIFgKIFhYIFhYWFggWFggWFhYIFgK
IFggWFhYCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtZ3JpZC9hbGlnbm1lbnQvZ3JpZC1yb3ctYXhpcy1hbGlnbm1lbnQtcG9z
aXRpb25lZC1pdGVtcy0wMTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvYWxpZ25tZW50L2dyaWQtcm93LWF4aXMt
YWxpZ25tZW50LXBvc2l0aW9uZWQtaXRlbXMtMDE2LWV4cGVjdGVkLnR4dAppbmRleCBkZGM5MWVl
NDVkNi4uY2ZjYzgwMDdiZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1ncmlkL2FsaWdubWVudC9ncmlkLXJvdy1heGlzLWFs
aWdubWVudC1wb3NpdGlvbmVkLWl0ZW1zLTAxNi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWdyaWQvYWxpZ25tZW50
L2dyaWQtcm93LWF4aXMtYWxpZ25tZW50LXBvc2l0aW9uZWQtaXRlbXMtMDE2LWV4cGVjdGVkLnR4
dApAQCAtMyw3ICszLDcgQEAgWCBYWFggWAogWFggWFhYWCBYWCBYWFggWAogWCBYWFgKIFgKLVhY
IFhYWFggWFggWFhYIFgKK1hYIFhYWCBYIFhYIFhYWCBYCiBYIFhYWCBYCiBYWCBYWFhYIFhYIFhY
WCBYCiBYIFhYWApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2RvbS9lbGVtZW50cy90aGUtaW5uZXJ0ZXh0LWlkbC1hdHRyaWJ1dGUv
Z2V0dGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9kb20vZWxlbWVudHMvdGhlLWlubmVydGV4dC1pZGwtYXR0cmlidXRlL2dl
dHRlci1leHBlY3RlZC50eHQKaW5kZXggYjM3YjgzNTBiM2EuLjcwM2ZmNGFiNzZjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9t
L2VsZW1lbnRzL3RoZS1pbm5lcnRleHQtaWRsLWF0dHJpYnV0ZS9nZXR0ZXItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9k
b20vZWxlbWVudHMvdGhlLWlubmVydGV4dC1pZGwtYXR0cmlidXRlL2dldHRlci1leHBlY3RlZC50
eHQKQEAgLTcsNyArNyw3IEBAIFBBU1MgVHJhaWxpbmcgd2hpdGVzcGFjZSByZW1vdmVkICgiPGRp
dj5hYmMgIikKIFBBU1MgSW50ZXJuYWwgd2hpdGVzcGFjZSBjb21wcmVzc2VkICgiPGRpdj5hYmMg
IGRlZiIpIAogUEFTUyBcbiBjb252ZXJ0ZWQgdG8gc3BhY2UgKCI8ZGl2PmFiY1xuZGVmIikgCiBQ
QVNTIFxyIGNvbnZlcnRlZCB0byBzcGFjZSAoIjxkaXY+YWJjXHJkZWYiKSAKLVBBU1MgXHQgY29u
dmVydGVkIHRvIHNwYWNlICgiPGRpdj5hYmNcdGRlZiIpIAorRkFJTCBcdCBjb252ZXJ0ZWQgdG8g
c3BhY2UgKCI8ZGl2PmFiY1x0ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiYyBkZWYi
IGJ1dCBnb3QgImFiY1x0ZGVmIgogRkFJTCBUcmFpbGluZyB3aGl0ZXNwYWNlIGJlZm9yZSBoYXJk
IGxpbmUgYnJlYWsgcmVtb3ZlZCAoIjxkaXY+YWJjIDxicj5kZWYiKSBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiYWJjXG5kZWYiIGJ1dCBnb3QgImFiYyBcbmRlZiIKIFBBU1MgTGVhZGluZyB3aGl0
ZXNwYWNlIGFmdGVyIGhhcmQgbGluZSBicmVhayByZW1vdmVkICgiPGRpdj5hYmM8YnI+IGRlZiIp
IAogUEFTUyBMZWFkaW5nIHdoaXRlc3BhY2UgcHJlc2VydmVkICgiPHByZT4gYWJjIikgCkBAIC0z
Miw5ICszMiw5IEBAIFBBU1MgXHQgcHJlc2VydmVkICgiPHNwYW4gc3R5bGU9J3doaXRlLXNwYWNl
OnByZSc+YWJjXHRkZWYiKQogUEFTUyBMZWFkaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZCAoIjxkaXYg
c3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz4gYWJjIikgCiBQQVNTIFRyYWlsaW5nIHdoaXRl
c3BhY2UgcmVtb3ZlZCAoIjxkaXYgc3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5hYmMgIikg
CiBQQVNTIEludGVybmFsIHdoaXRlc3BhY2UgY29sbGFwc2VkICgiPGRpdiBzdHlsZT0nd2hpdGUt
c3BhY2U6cHJlLWxpbmUnPmFiYyAgZGVmIikgCi1GQUlMIFxuIHByZXNlcnZlZCAoIjxkaXYgc3R5
bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5hYmNcbmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4cGVj
dGVkICJhYmNcbmRlZiIgYnV0IGdvdCAiYWJjZGVmIgotRkFJTCBcciBjb252ZXJ0ZWQgdG8gbmV3
bGluZSAoIjxkaXYgc3R5bGU9J3doaXRlLXNwYWNlOnByZS1saW5lJz5hYmNccmRlZiIpIGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkICJhYmNcbmRlZiIgYnV0IGdvdCAiYWJjZGVmIgotUEFTUyBcdCBj
b252ZXJ0ZWQgdG8gc3BhY2UgKCI8ZGl2IHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUtbGluZSc+YWJj
XHRkZWYiKSAKK0ZBSUwgXG4gcHJlc2VydmVkICgiPGRpdiBzdHlsZT0nd2hpdGUtc3BhY2U6cHJl
LWxpbmUnPmFiY1xuZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiY1xuZGVmIiBidXQg
Z290ICJhYmMgZGVmIgorRkFJTCBcciBjb252ZXJ0ZWQgdG8gbmV3bGluZSAoIjxkaXYgc3R5bGU9
J3doaXRlLXNwYWNlOnByZS1saW5lJz5hYmNccmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICJhYmNcbmRlZiIgYnV0IGdvdCAiYWJjIGRlZiIKK0ZBSUwgXHQgY29udmVydGVkIHRvIHNwYWNl
ICgiPGRpdiBzdHlsZT0nd2hpdGUtc3BhY2U6cHJlLWxpbmUnPmFiY1x0ZGVmIikgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImFiYyBkZWYiIGJ1dCBnb3QgImFiY1x0ZGVmIgogUEFTUyBXaGl0ZXNw
YWNlIGNvbGxhcHNlcyBhY3Jvc3MgZWxlbWVudCBib3VuZGFyaWVzICgiPGRpdj48c3Bhbj5hYmMg
PC9zcGFuPiBkZWYiKSAKIFBBU1MgV2hpdGVzcGFjZSBjb2xsYXBzZXMgYWNyb3NzIGVsZW1lbnQg
Ym91bmRhcmllcyAoIjxkaXY+PHNwYW4+YWJjIDwvc3Bhbj48c3Bhbj48L3NwYW4+IGRlZiIpIAog
RkFJTCBXaGl0ZXNwYWNlIGNvbGxhcHNlcyBhY3Jvc3MgZWxlbWVudCBib3VuZGFyaWVzICgiPGRp
dj48c3Bhbj5hYmMgPC9zcGFuPjxzcGFuIHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUnPjwvc3Bhbj4g
ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiYyBkZWYiIGJ1dCBnb3QgImFiYyAgZGVm
IgpAQCAtMTUxLDcgKzE1MSw3IEBAIEZBSUwgT25lIGJsYW5rIGxpbmUgYmV0d2VlbiA8cD5zLCBp
Z25vcmluZyBlbXB0eSA8cD5zICgiPGRpdj48cD5hYmM8cD48L3A+PHA+PC9wCiBGQUlMIEludmlz
aWJsZSA8cD4gZG9lc24ndCBpbmR1Y2UgZXh0cmEgbGluZSBicmVha3MgKCI8ZGl2IHN0eWxlPSd2
aXNpYmlsaXR5OmhpZGRlbic+PHA+PHNwYW4gc3R5bGU9J3Zpc2liaWxpdHk6dmlzaWJsZSc+YWJj
PC9zcGFuPjwvcD5cbjxkaXYgc3R5bGU9J3Zpc2liaWxpdHk6dmlzaWJsZSc+ZGVmPC9kaXY+Iikg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiY1xuZGVmIiBidXQgZ290ICJhYmNcblxuZGVmXG4i
CiBGQUlMIE5vIGJsYW5rIGxpbmVzIGFyb3VuZCA8ZGl2PiB3aXRoIG1hcmdpbiAoIjxkaXY+YWJj
PGRpdiBzdHlsZT0nbWFyZ2luOjJlbSc+ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFi
Y1xuZGVmIiBidXQgZ290ICJhYmNcbmRlZlxuIgogUEFTUyBObyBuZXdsaW5lcyBhdCBkaXNwbGF5
OmlubGluZS1ibG9jayBib3VuZGFyeSAoIjxkaXY+MTIzPHNwYW4gc3R5bGU9J2Rpc3BsYXk6aW5s
aW5lLWJsb2NrJz5hYmM8L3NwYW4+ZGVmIikgCi1GQUlMIExlYWRpbmcvdHJhaWxpbmcgc3BhY2Ug
cmVtb3ZhbCBhdCBkaXNwbGF5OmlubGluZS1ibG9jayBib3VuZGFyeSAoIjxkaXY+MTIzPHNwYW4g
c3R5bGU9J2Rpc3BsYXk6aW5saW5lLWJsb2NrJz4gYWJjIDwvc3Bhbj5kZWYiKSBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiMTIzYWJjZGVmIiBidXQgZ290ICIxMjNhYmMgZGVmIgorRkFJTCBMZWFk
aW5nL3RyYWlsaW5nIHNwYWNlIHJlbW92YWwgYXQgZGlzcGxheTppbmxpbmUtYmxvY2sgYm91bmRh
cnkgKCI8ZGl2PjEyMzxzcGFuIHN0eWxlPSdkaXNwbGF5OmlubGluZS1ibG9jayc+IGFiYyA8L3Nw
YW4+ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEyM2FiY2RlZiIgYnV0IGdvdCAiMTIz
IGFiYyBkZWYiCiBGQUlMIEJsYW5rIGxpbmVzIGFyb3VuZCA8cD4gZXZlbiB3aXRob3V0IG1hcmdp
biAoIjxkaXY+MTIzPHAgc3R5bGU9J21hcmdpbjowcHgnPmFiYzwvcD5kZWYiKSBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiMTIzXG5cbmFiY1xuXG5kZWYiIGJ1dCBnb3QgIjEyM1xuYWJjXG5kZWYi
CiBGQUlMIE5vIGJsYW5rIGxpbmVzIGFyb3VuZCA8aDE+ICgiPGRpdj4xMjM8aDE+YWJjPC9oMT5k
ZWYiKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiMTIzXG5hYmNcbmRlZiIgYnV0IGdvdCAiMTIz
XG5hYmNcblxuZGVmIgogRkFJTCBObyBibGFuayBsaW5lcyBhcm91bmQgPGgyPiAoIjxkaXY+MTIz
PGgyPmFiYzwvaDI+ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjEyM1xuYWJjXG5kZWYi
IGJ1dCBnb3QgIjEyM1xuYWJjXG5cbmRlZiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaW5uZXJUZXh0L2dldHRlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2lubmVyVGV4dC9n
ZXR0ZXItZXhwZWN0ZWQudHh0CmluZGV4IDA0NmQ2ZjUwYTJmLi5kMDdmZmFlN2MyYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9pbm5lclRl
eHQvZ2V0dGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2lubmVyVGV4dC9nZXR0ZXItZXhwZWN0ZWQudHh0CkBAIC03LDcgKzcs
NyBAQCBQQVNTIFRyYWlsaW5nIHdoaXRlc3BhY2UgcmVtb3ZlZCAoIjxkaXY+YWJjICIpCiBQQVNT
IEludGVybmFsIHdoaXRlc3BhY2UgY29tcHJlc3NlZCAoIjxkaXY+YWJjICBkZWYiKSAKIFBBU1Mg
XG4gY29udmVydGVkIHRvIHNwYWNlICgiPGRpdj5hYmNcbmRlZiIpIAogUEFTUyBcciBjb252ZXJ0
ZWQgdG8gc3BhY2UgKCI8ZGl2PmFiY1xyZGVmIikgCi1QQVNTIFx0IGNvbnZlcnRlZCB0byBzcGFj
ZSAoIjxkaXY+YWJjXHRkZWYiKSAKK0ZBSUwgXHQgY29udmVydGVkIHRvIHNwYWNlICgiPGRpdj5h
YmNcdGRlZiIpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhYmMgZGVmIiBidXQgZ290ICJhYmNc
dGRlZiIKIEZBSUwgVHJhaWxpbmcgd2hpdGVzcGFjZSBiZWZvcmUgaGFyZCBsaW5lIGJyZWFrIHJl
bW92ZWQgKCI8ZGl2PmFiYyA8YnI+ZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiY1xu
ZGVmIiBidXQgZ290ICJhYmMgXG5kZWYiCiBQQVNTIExlYWRpbmcgd2hpdGVzcGFjZSBwcmVzZXJ2
ZWQgKCI8cHJlPiBhYmMiKSAKIFBBU1MgVHJhaWxpbmcgd2hpdGVzcGFjZSBwcmVzZXJ2ZWQgKCI8
cHJlPmFiYyAiKSAKQEAgLTMxLDkgKzMxLDkgQEAgUEFTUyBcdCBwcmVzZXJ2ZWQgKCI8c3BhbiBz
dHlsZT0nd2hpdGUtc3BhY2U6cHJlJz5hYmNcdGRlZiIpCiBQQVNTIExlYWRpbmcgd2hpdGVzcGFj
ZSByZW1vdmVkICgiPGRpdiBzdHlsZT0nd2hpdGUtc3BhY2U6cHJlLWxpbmUnPiBhYmMiKSAKIFBB
U1MgVHJhaWxpbmcgd2hpdGVzcGFjZSByZW1vdmVkICgiPGRpdiBzdHlsZT0nd2hpdGUtc3BhY2U6
cHJlLWxpbmUnPmFiYyAiKSAKIFBBU1MgSW50ZXJuYWwgd2hpdGVzcGFjZSBjb2xsYXBzZWQgKCI8
ZGl2IHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUtbGluZSc+YWJjICBkZWYiKSAKLUZBSUwgXG4gcHJl
c2VydmVkICgiPGRpdiBzdHlsZT0nd2hpdGUtc3BhY2U6cHJlLWxpbmUnPmFiY1xuZGVmIikgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiY1xuZGVmIiBidXQgZ290ICJhYmNkZWYiCi1GQUlMIFxy
IGNvbnZlcnRlZCB0byBuZXdsaW5lICgiPGRpdiBzdHlsZT0nd2hpdGUtc3BhY2U6cHJlLWxpbmUn
PmFiY1xyZGVmIikgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFiY1xuZGVmIiBidXQgZ290ICJh
YmNkZWYiCi1QQVNTIFx0IGNvbnZlcnRlZCB0byBzcGFjZSAoIjxkaXYgc3R5bGU9J3doaXRlLXNw
YWNlOnByZS1saW5lJz5hYmNcdGRlZiIpIAorRkFJTCBcbiBwcmVzZXJ2ZWQgKCI8ZGl2IHN0eWxl
PSd3aGl0ZS1zcGFjZTpwcmUtbGluZSc+YWJjXG5kZWYiKSBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiYWJjXG5kZWYiIGJ1dCBnb3QgImFiYyBkZWYiCitGQUlMIFxyIGNvbnZlcnRlZCB0byBuZXds
aW5lICgiPGRpdiBzdHlsZT0nd2hpdGUtc3BhY2U6cHJlLWxpbmUnPmFiY1xyZGVmIikgYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgImFiY1xuZGVmIiBidXQgZ290ICJhYmMgZGVmIgorRkFJTCBcdCBj
b252ZXJ0ZWQgdG8gc3BhY2UgKCI8ZGl2IHN0eWxlPSd3aGl0ZS1zcGFjZTpwcmUtbGluZSc+YWJj
XHRkZWYiKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYWJjIGRlZiIgYnV0IGdvdCAiYWJjXHRk
ZWYiCiBQQVNTIFdoaXRlc3BhY2UgY29sbGFwc2VzIGFjcm9zcyBlbGVtZW50IGJvdW5kYXJpZXMg
KCI8ZGl2PjxzcGFuPmFiYyA8L3NwYW4+IGRlZiIpIAogUEFTUyBXaGl0ZXNwYWNlIGNvbGxhcHNl
cyBhY3Jvc3MgZWxlbWVudCBib3VuZGFyaWVzICgiPGRpdj48c3Bhbj5hYmMgPC9zcGFuPjxzcGFu
Pjwvc3Bhbj4gZGVmIikgCiBGQUlMIFdoaXRlc3BhY2UgY29sbGFwc2VzIGFjcm9zcyBlbGVtZW50
IGJvdW5kYXJpZXMgKCI8ZGl2PjxzcGFuPmFiYyA8L3NwYW4+PHNwYW4gc3R5bGU9J3doaXRlLXNw
YWNlOnByZSc+PC9zcGFuPiBkZWYiKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYWJjIGRlZiIg
YnV0IGdvdCAiYWJjICBkZWYiCkBAIC0xMzUsNyArMTM1LDcgQEAgRkFJTCBPbmUgYmxhbmsgbGlu
ZSBiZXR3ZWVuIDxwPnMsIGlnbm9yaW5nIGVtcHR5IDxwPnMgKCI8ZGl2PjxwPmFiYzxwPjwvcD48
cD48L3AKIEZBSUwgSW52aXNpYmxlIDxwPiBkb2Vzbid0IGluZHVjZSBleHRyYSBsaW5lIGJyZWFr
cyAoIjxkaXYgc3R5bGU9J3Zpc2liaWxpdHk6aGlkZGVuJz48cD48c3BhbiBzdHlsZT0ndmlzaWJp
bGl0eTp2aXNpYmxlJz5hYmM8L3NwYW4+PC9wPlxuPGRpdiBzdHlsZT0ndmlzaWJpbGl0eTp2aXNp
YmxlJz5kZWY8L2Rpdj4iKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYWJjXG5kZWYiIGJ1dCBn
b3QgImFiY1xuXG5kZWZcbiIKIEZBSUwgTm8gYmxhbmsgbGluZXMgYXJvdW5kIDxkaXY+IHdpdGgg
bWFyZ2luICgiPGRpdj5hYmM8ZGl2IHN0eWxlPSdtYXJnaW46MmVtJz5kZWYiKSBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiYWJjXG5kZWYiIGJ1dCBnb3QgImFiY1xuZGVmXG4iCiBQQVNTIE5vIG5l
d2xpbmVzIGF0IGRpc3BsYXk6aW5saW5lLWJsb2NrIGJvdW5kYXJ5ICgiPGRpdj4xMjM8c3BhbiBz
dHlsZT0nZGlzcGxheTppbmxpbmUtYmxvY2snPmFiYzwvc3Bhbj5kZWYiKSAKLUZBSUwgTGVhZGlu
Zy90cmFpbGluZyBzcGFjZSByZW1vdmFsIGF0IGRpc3BsYXk6aW5saW5lLWJsb2NrIGJvdW5kYXJ5
ICgiPGRpdj4xMjM8c3BhbiBzdHlsZT0nZGlzcGxheTppbmxpbmUtYmxvY2snPiBhYmMgPC9zcGFu
PmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxMjNhYmNkZWYiIGJ1dCBnb3QgIjEyM2Fi
YyBkZWYiCitGQUlMIExlYWRpbmcvdHJhaWxpbmcgc3BhY2UgcmVtb3ZhbCBhdCBkaXNwbGF5Omlu
bGluZS1ibG9jayBib3VuZGFyeSAoIjxkaXY+MTIzPHNwYW4gc3R5bGU9J2Rpc3BsYXk6aW5saW5l
LWJsb2NrJz4gYWJjIDwvc3Bhbj5kZWYiKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiMTIzYWJj
ZGVmIiBidXQgZ290ICIxMjMgYWJjIGRlZiIKIEZBSUwgQmxhbmsgbGluZXMgYXJvdW5kIDxwPiBl
dmVuIHdpdGhvdXQgbWFyZ2luICgiPGRpdj4xMjM8cCBzdHlsZT0nbWFyZ2luOjBweCc+YWJjPC9w
PmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxMjNcblxuYWJjXG5cbmRlZiIgYnV0IGdv
dCAiMTIzXG5hYmNcbmRlZiIKIEZBSUwgTm8gYmxhbmsgbGluZXMgYXJvdW5kIDxoMT4gKCI8ZGl2
PjEyMzxoMT5hYmM8L2gxPmRlZiIpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIxMjNcbmFiY1xu
ZGVmIiBidXQgZ290ICIxMjNcbmFiY1xuXG5kZWYiCiBGQUlMIE5vIGJsYW5rIGxpbmVzIGFyb3Vu
ZCA8aDI+ICgiPGRpdj4xMjM8aDI+YWJjPC9oMj5kZWYiKSBhc3NlcnRfZXF1YWxzOiBleHBlY3Rl
ZCAiMTIzXG5hYmNcbmRlZiIgYnV0IGdvdCAiMTIzXG5hYmNcblxuZGVmIgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy9saW5laGVpZ2h0
LWFuaW1hdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9sZWdhY3ktYW5pbWF0aW9uLWVu
Z2luZS9hbmltYXRpb25zL2xpbmVoZWlnaHQtYW5pbWF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCAz
OTIzNmIzNDBkNC4uNDE3MmE4YzU2ZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2xlZ2FjeS1h
bmltYXRpb24tZW5naW5lL2FuaW1hdGlvbnMvbGluZWhlaWdodC1hbmltYXRpb24tZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2xlZ2FjeS1hbmltYXRpb24tZW5naW5lL2FuaW1hdGlvbnMv
bGluZWhlaWdodC1hbmltYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAotVGhpcyB0
ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgbGluZS1oZWlnaHQgcHJvcGVydHkuIEl0
IHRlc3RzIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBwcm9wZXJseSBnZXR0aW5nIHRoZSBmb250LXNp
emUuSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4
dC4KK1RoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIGxpbmUtaGVpZ2h0IHBy
b3BlcnR5LiBJdCB0ZXN0cyB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUgcHJvcGVybHkgZ2V0dGluZyB0
aGUgZm9udC1zaXplLiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUg
aXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUg
aXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUg
aXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUg
aXMgc29tZSB0ZXh0LgogUEFTUyAtICJsaW5lSGVpZ2h0IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxl
bWVudCBhdCAwLjFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEwCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2xlZ2FjeS1hbmltYXRpb24tZW5naW5lL2FuaW1hdGlvbnMvc2ltdWx0YW5lb3Vz
LXN0YXJ0LXRyYW5zZm9ybS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9sZWdhY3ktYW5pbWF0
aW9uLWVuZ2luZS9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC10cmFuc2Zvcm0tZXhwZWN0
ZWQudHh0CmluZGV4IGFjNWJlMzJiNzIwLi5kOWU4NzIyZjQ3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy9zaW11bHRhbmVvdXMtc3Rh
cnQtdHJhbnNmb3JtLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9sZWdhY3ktYW5pbWF0
aW9uLWVuZ2luZS9hbmltYXRpb25zL3NpbXVsdGFuZW91cy1zdGFydC10cmFuc2Zvcm0tZXhwZWN0
ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBv
ZiB0aGUgdHJhbnNmb3JtIHByb3BlcnR5LiBJdCBhbmltYXRlcyBvdmVyIDEwIHNlY29uZHMuIEl0
IHRha2VzIDMgc25hcHNob3RzIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBh
IHNwZWNpZmllZCByYW5nZS5QQVNTIC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJi
b3gxIiBlbGVtZW50IGF0IDJzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDAuMzA5MDE3LDAuOTUx
MDU3CitUaGlzIHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSB0cmFuc2Zvcm0gcHJv
cGVydHkuIEl0IGFuaW1hdGVzIG92ZXIgMTAgc2Vjb25kcy4gSXQgdGFrZXMgMyBzbmFwc2hvdHMg
YW5kIGV4cGVjdHMgZWFjaCByZXN1bHQgdG8gYmUgd2l0aGluIGEgc3BlY2lmaWVkIHJhbmdlLiBQ
QVNTIC0gIndlYmtpdFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3gxIiBlbGVtZW50IGF0IDJz
IHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDAuMzA5MDE3LDAuOTUxMDU3CiBQQVNTIC0gIndlYmtp
dFRyYW5zZm9ybSIgcHJvcGVydHkgZm9yICJib3gyIiBlbGVtZW50IGF0IDJzIHNhdyBzb21ldGhp
bmcgY2xvc2UgdG86IDAuMzA5MDE3LDAuOTUxMDU3CiBQQVNTIC0gIndlYmtpdFRyYW5zZm9ybSIg
cHJvcGVydHkgZm9yICJib3gxIiBhbmQgImJveDIiIGVsZW1lbnRzIGF0IDJzIGFyZSBjbG9zZSBl
bm91Z2ggdG8gZWFjaCBvdGhlcgogUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZv
ciAiYm94MSIgZWxlbWVudCBhdCA1cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAtMSwwCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9sZWdhY3ktYW5pbWF0aW9uLWVuZ2luZS9hbmltYXRpb25zL3dp
ZHRoLXVzaW5nLWVtcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9sZWdhY3ktYW5pbWF0aW9u
LWVuZ2luZS9hbmltYXRpb25zL3dpZHRoLXVzaW5nLWVtcy1leHBlY3RlZC50eHQKaW5kZXggZGZi
NzM3ZDRkOTYuLmJjZjYxOTEyZTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9sZWdhY3ktYW5p
bWF0aW9uLWVuZ2luZS9hbmltYXRpb25zL3dpZHRoLXVzaW5nLWVtcy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvbGVnYWN5LWFuaW1hdGlvbi1lbmdpbmUvYW5pbWF0aW9ucy93aWR0aC11
c2luZy1lbXMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAotVGhpcyB0ZXN0IHBlcmZvcm1z
IGFuIGFuaW1hdGlvbiBvZiB0aGUgd2lkdGggcHJvcGVydHkgdXNpbmcgJ2VtJyB1bml0cy4gSXQg
dGVzdHMgd2hldGhlciBvciBub3Qgd2UgYXJlIHByb3Blcmx5IGdldHRpbmcgdGhlIGRlZmF1bHQg
Zm9udC1zaXplLkhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBz
b21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBz
b21lIHRleHQuCitUaGlzIHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSB3aWR0aCBw
cm9wZXJ0eSB1c2luZyAnZW0nIHVuaXRzLiBJdCB0ZXN0cyB3aGV0aGVyIG9yIG5vdCB3ZSBhcmUg
cHJvcGVybHkgZ2V0dGluZyB0aGUgZGVmYXVsdCBmb250LXNpemUuIEhlcmUgaXMgc29tZSB0ZXh0
LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuIEhlcmUgaXMgc29tZSB0ZXh0
LiBIZXJlIGlzIHNvbWUgdGV4dC4gSGVyZSBpcyBzb21lIHRleHQuCiBQQVNTIC0gIndpZHRoIiBw
cm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAwLjMzM3Mgc2F3IHNvbWV0aGluZyBjbG9zZSB0
bzogMTMzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvY29tcG9z
aXRpbmcvc2hhcmVkLWJhY2tpbmcvb3ZlcmZsb3ctc2Nyb2xsL2Fic29sdXRlLWluLXN0YWNraW5n
LXJlbGF0aXZlLWluLXNjcm9sbGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy13azIvY29tcG9zaXRpbmcvc2hhcmVkLWJhY2tpbmcvb3ZlcmZsb3ctc2Nyb2xsL2Fic29s
dXRlLWluLXN0YWNraW5nLXJlbGF0aXZlLWluLXNjcm9sbGVyLWV4cGVjdGVkLnR4dAppbmRleCA4
OTQ3YTU5ODE2ZS4uZDc2MTg1NDExMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy13azIvY29tcG9zaXRpbmcvc2hhcmVkLWJhY2tpbmcvb3ZlcmZsb3ctc2Nyb2xsL2Fic29s
dXRlLWluLXN0YWNraW5nLXJlbGF0aXZlLWluLXNjcm9sbGVyLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5nL3NoYXJlZC1iYWNraW5nL292
ZXJmbG93LXNjcm9sbC9hYnNvbHV0ZS1pbi1zdGFja2luZy1yZWxhdGl2ZS1pbi1zY3JvbGxlci1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1yZWxhdGl2ZWFic29sdXRlCityZWxhdGl2ZSBh
YnNvbHV0ZQogKEdyYXBoaWNzTGF5ZXIKICAgKGFuY2hvciAwLjAwIDAuMDApCiAgIChib3VuZHMg
ODAwLjAwIDYwMC4wMCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
c2Nyb2xsaW5nY29vcmRpbmF0b3Ivc2Nyb2xsaW5nLXRyZWUvbmVzdGVkLWFic29sdXRlLWluLW92
ZXJmbG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvc2Nyb2xs
aW5nY29vcmRpbmF0b3Ivc2Nyb2xsaW5nLXRyZWUvbmVzdGVkLWFic29sdXRlLWluLW92ZXJmbG93
LWV4cGVjdGVkLnR4dAppbmRleCA1OTRkY2NhNTUyNy4uYTliZDQwZmJjMTIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvc2Nyb2xsaW5nY29vcmRpbmF0b3Ivc2Nyb2xs
aW5nLXRyZWUvbmVzdGVkLWFic29sdXRlLWluLW92ZXJmbG93LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL3Njcm9sbGluZ2Nvb3JkaW5hdG9yL3Njcm9sbGlu
Zy10cmVlL25lc3RlZC1hYnNvbHV0ZS1pbi1vdmVyZmxvdy1leHBlY3RlZC50eHQKQEAgLTEsNCAr
MSw0IEBACi1hYnNhYnMKK2FicyBhYnMKIAogKEZyYW1lIHNjcm9sbGluZyBub2RlCiAgIChzY3Jv
bGxhYmxlIGFyZWEgc2l6ZSA4MDAgNjAwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zL2NzczMvZmlsdGVycy9iYWNrZHJvcC9iYWNrZHJvcC1maWx0ZXItZG9lcy1ub3Qtc2l6
ZS1wcm9wZXJseS1hYnNvbHV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MvY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci1kb2VzLW5vdC1zaXplLXBy
b3Blcmx5LWFic29sdXRlLWV4cGVjdGVkLnR4dAppbmRleCA0ZmMxOGU4NzQ1Mi4uODEwNzc3ZjUz
MzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9jc3MzL2ZpbHRlcnMvYmFj
a2Ryb3AvYmFja2Ryb3AtZmlsdGVyLWRvZXMtbm90LXNpemUtcHJvcGVybHktYWJzb2x1dGUtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9jc3MzL2ZpbHRlcnMvYmFj
a2Ryb3AvYmFja2Ryb3AtZmlsdGVyLWRvZXMtbm90LXNpemUtcHJvcGVybHktYWJzb2x1dGUtZXhw
ZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotZm9vZm9vYmFyCitmb28gZm9vYmFyCiAoR3JhcGhp
Y3NMYXllcgogICAoYW5jaG9yIDAuMDAgMC4wMCkKICAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2Nyb2xsaW5nY29vcmRpbmF0b3Ivc2Nyb2xsaW5nLXRy
ZWUvbmVzdGVkLWFic29sdXRlLWluLW92ZXJmbG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3Njcm9sbGluZ2Nvb3JkaW5hdG9yL3Njcm9sbGluZy10cmVlL25lc3RlZC1hYnNvbHV0ZS1pbi1v
dmVyZmxvdy1leHBlY3RlZC50eHQKaW5kZXggOTA4MzdlZGMzNjAuLmM4ZTlkMzFmMGYxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zY3JvbGxpbmdjb29yZGluYXRvci9zY3JvbGxpbmctdHJlZS9u
ZXN0ZWQtYWJzb2x1dGUtaW4tb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3Njcm9sbGluZ2Nvb3JkaW5hdG9yL3Njcm9sbGluZy10cmVlL25lc3RlZC1hYnNvbHV0ZS1pbi1v
dmVyZmxvdy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1hYnNhYnMKK2FicyBhYnMKIAog
KEZyYW1lIHNjcm9sbGluZyBub2RlCiAgIChzY3JvbGxhYmxlIGFyZWEgc2l6ZSA4MDAgNjAwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGEwMGZkMGQ4ZGNkLi4yNjBmYTFjOTYxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDgxIEBACisyMDE5LTA5LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4K
KworICAgICAgICBFbGltaW5hdGUgc2VwYXJhdGUgc2ltcGxlIGxpbmUgbGF5b3V0IHBhdGggZnJv
bSBUZXh0SXRlcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMTc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IFphbGFuIEJ1anRhcy4KKworICAg
ICAgICBVc2UgdGhlIG5ldyBsaW5lIGxheW91dCBpdGVyYXRvciB0byBpbXBsZW1lbnQgbGluZWJv
eCB0cmF2ZXJzYWwgaW4gVGV4dEl0ZXJhdG9yLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6YWR2YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCk6CisKKyAgICAgICAgSW5saW5lVGV4dEJveCogLT4g
TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9yCisgICAgICAgIERlbGV0ZSB0aGUg
c2VwZXJhdGUgc2ltcGxlIGxpbmUgbGF5b3V0IHBhdGguCisKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOjplbWl0VGV4dCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
Ojp3cml0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRl
cmF0b3I6Okl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1
blJlc29sdmVyOjpJdGVyYXRvcjo6YWR2YW5jZUxpbmVzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dFJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5l
TGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3I6OnJlc29sdmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvcjo6aW5RdWly
a3NNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJl
c29sdmVyOjpJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
aW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3I6OnNpbXBsZVJ1biBjb25zdCk6
CisKKyAgICAgICAgTWFrZSBSdW5SZXNvbHZlcjo6SXRlcmF0b3IgY29weWFibGUgKHNvIFRleHRC
b3hJdGVyYXRvciBiZWNvbWVzIGNvcHlhYmxlIHRvbykuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlRleHRGcmFnbWVudEl0ZXJhdG9yOjpmaW5kTmV4dFRleHRG
cmFnbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRl
eHRCb3hlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0
Qm94OjpyZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6
OlRleHRCb3g6OmxvZ2ljYWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlv
dXRJbnRlcmZhY2U6OlRleHRCb3g6Omhhc0h5cGhlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94Ojppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3g6OmRp
ck92ZXJyaWRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6
OlRleHRCb3g6OnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVy
ZmFjZTo6VGV4dEJveDo6bG9jYWxTdGFydE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94Ojpsb2NhbEVuZE9mZnNldCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94OjpsZW5ndGggY29u
c3QpOgorCisgICAgICAgIEFkZCBvZmZzZXQgYW5kIGxlbmd0aCBmdW5jdGlvbnMuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3g6Oml0ZXJhdG9yIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVyYXRv
cjo6VGV4dEJveEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZh
Y2U6OlRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okxp
bmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3I9PSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3I6OmF0
RW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlByb3Zp
ZGVyOjpmaXJzdFRleHRCb3hGb3IpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVy
ZmFjZTo6UHJvdmlkZXI6OnRleHRCb3hSYW5nZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
TGF5b3V0SW50ZXJmYWNlOjpQcm92aWRlcjo6aXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KToKKwor
ICAgICAgICBBZGQgUHJvdmlkZXIgY2xhc3MgZm9yIG1ha2luZyBpdGVyYXRvcnMuIEl0IGNvbnN0
cnVjdHMgYW5kIGtlZXBzIFNpbXBsZUxpbmVMYXlvdXQ6OlJlc29sdmVycyBhbGl2ZSBkdXJpbmcg
dHJhdmVyc2FsIGFzIG5lZWRlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9saW5lL0xpbmVMYXlv
dXRJbnRlcmZhY2VUZXh0Qm94ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRl
cmZhY2U6OlRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3IgYm9vbCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRl
cmF0b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dElu
dGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvcjo6b3BlcmF0b3IqIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVy
YXRvcjo6b3BlcmF0b3ItPiBjb25zdCk6CisKKyAgICAgICAgTWFrZSBUZXh0Qm94SXRlcmF0b3Ig
cHJpdmF0ZWx5IGluaGVyaXQgVGV4dEJveC4gVGhpcyB3YXkgd2UgZG9uJ3QgbmVlZCB0byBjb25z
dHJ1Y3QgdGVtcG9yYXJpZXMgYW5kIGNhbiBlYXNpbHkgaW1wbGVtZW50IG9wZXJhdG9yLT4uCisK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hSYW5nZTo6VGV4
dEJveFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRC
b3hSYW5nZTo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVy
ZmFjZTo6VGV4dEJveFJhbmdlOjplbmQgY29uc3QpOgorCisgICAgICAgIFVzZSBzZXBhcmF0ZSBl
bmQoKSB0eXBlIG9mIEMrKzE3IHJhbmdlcy4KKwogMjAxOS0wOS0xNiAgQW5kcmVzIEdvbnphbGV6
ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgRXhwb3NlIG1pc3NwZWxsaW5nIHJh
bmdlcyBmb3IgZWRpdGFibGUgY29udGVudCB0byBhY2Nlc3NpYmlsaXR5IGNsaWVudHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQppbmRleCAzMGQwOTI5NjJhZi4uZmQwYjUzM2NlZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQpAQCAtMTMwMyw3ICsxMzAzLDEwIEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JL
X0hFQURFUlMKICAgICByZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmgKICAgICByZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dC5oCiAgICAgcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3Zl
cmFnZS5oCisgICAgcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaAorICAg
IHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaAogCisgICAgcmVuZGVyaW5nL2xp
bmUvTGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oCiAgICAgcmVuZGVyaW5nL2xpbmUvTGlu
ZVdpZHRoLmgKICAgICByZW5kZXJpbmcvbGluZS9UcmFpbGluZ09iamVjdHMuaAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2Q3
ODg5ZGUxMzUuLmRlZWRkYjU1OTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODMyLDcgKzE4MzIsNyBAQAogCQk1ODI0QUJB
NzFBRTgxMzg0MDA5MDc0QjcgLyogUnVieVRleHRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODI0QUJBNTFBRTgxMzg0MDA5MDc0QjcgLyog
UnVieVRleHRFbGVtZW50LmggKi87IH07CiAJCTU4MkNCMDUzMUE3OEExNEIwMEFGRkNDNCAvKiBT
aW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4MkNCMDUyMUE3OEExNEIwMEFGRkNDNCAvKiBT
aW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuaCAqLzsgfTsKIAkJNTgyREUzMjUx
QzMwQzg1NDAwQkUwMkE4IC8qIFRleHREZWNvcmF0aW9uUGFpbnRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTgyREUzMjMxQzMwQzg1NDAwQkUwMkE4
IC8qIFRleHREZWNvcmF0aW9uUGFpbnRlci5oICovOyB9OwotCQk1ODVENkUwNDFBMUE3OTJFMDBG
QTRGMTIgLyogU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTg1RDZFMDIxQTFBNzkyRTAwRkE0RjEyIC8q
IFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCAqLzsgfTsKKwkJNTg1RDZFMDQxQTFBNzky
RTAwRkE0RjEyIC8qIFNpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4NUQ2RTAyMUExQTc5MkUwMEZBNEYx
MiAvKiBTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTg5NTU2RUQxOEQ0QTQ0MDAwNzY0QjAzIC8q
IEJvcmRlckVkZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU4OTU1NkVDMThENEE0NDAwMDc2NEIwMyAvKiBCb3JkZXJFZGdlLmggKi87IH07CiAJCTU4
QjJGOUY0MjIzMkQ0NTMwMDkzOEQ2MyAvKiBSZXNpemVPYnNlcnZhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNThCMkY5RjMyMjMyRDQzRjAwOTM4
RDYzIC8qIFJlc2l6ZU9ic2VydmF0aW9uLmggKi87IH07CiAJCTU4QjJGOUY1MjIzMkQ0NTgwMDkz
OEQ2MyAvKiBSZXNpemVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNThCMkY5RUMyMjMyRDQzQjAwOTM4RDYzIC8qIFJlc2l6ZU9ic2VydmVy
LmggKi87IH07CkBAIC00Nzk1LDcgKzQ3OTUsNyBAQAogCQlFNDdDMzkzMzFGRTZFMTA4MDBCQkJD
NkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3QzM5MjcxRkU2RTBEQzAwQkJCQzZCIC8qIFJl
bmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1bW4uaCAqLzsgfTsKIAkJRTQ3RTI3NjUxNjAzNkVEMjAw
RUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdFMjc2NDE2MDM2RUQyMDBFRTJBRkIgLyogRXh0ZW5z
aW9uU3R5bGVTaGVldHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFNDgxMzdCOTFEQjNCNTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4MTM3QjgxREIz
QjUyNjAwNUM1OUJGIC8qIFN0eWxlVmFsaWRpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFNDg0QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGlu
ZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQ4NEEzM0IyMzA1NTMwMzAwOUFERTZBIC8qIExpbmVMYXlvdXRJ
bnRlcmZhY2VUZXh0Qm94ZXMuaCAqLzsgfTsKKwkJRTQ4NEEzM0UyMzA1NTMyNTAwOUFERTZBIC8q
IExpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODRBMzNCMjMwNTUzMDMwMDlBREU2QSAvKiBMaW5lTGF5
b3V0SW50ZXJmYWNlVGV4dEJveGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTQ4OTQ0QTMxODBCNTdEODAwRjE2NUQ4IC8qIFNpbXBsZUxpbmVM
YXlvdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
ODk0NEExMTgwQjU3RDgwMEYxNjVEOCAvKiBTaW1wbGVMaW5lTGF5b3V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ5MTZGRjcxOTVERjZBMDAw
NUFCMzQ5IC8qIExheWVyRmx1c2hUaHJvdHRsZVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDkxNkZGNjE5NURGNkEwMDA1QUIzNDkgLyogTGF5
ZXJGbHVzaFRocm90dGxlU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFNDk0NkVBRjE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1w
b3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDk0
NkVBRDE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1wb3J0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ4MzIsNyArNDgzMiw3IEBACiAJ
CUU0RThCNEVDMjE2Qjc5RTUwMEI4ODM0RCAvKiBTeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFOEI0RUEy
MTZCNzlFNTAwQjg4MzREIC8qIFN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmggKi87IH07CiAJ
CUU0RThCNEY1MjE2Qjk1NjUwMEI4ODM0RCAvKiBGb250Q2FzY2FkZURlc2NyaXB0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU4QjRGMjIxNkI4
QjYwMDBCODgzNEQgLyogRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RTk0RDYxMjJGRjE1OEEwMEREMTkx
RiAvKiBDb21wbGV4TGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTRBMUFDNzgyMkZBRkQ1MDAwMTdCNzVCIC8qIENvbXBsZXhMaW5lTGF5
b3V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
RTRFOUIxMTkxODEwOTE2RjAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFOUIxMTgxODEw
OTE2RjAwM0FDQ0RGIC8qIFNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oICovOyB9OworCQlFNEU5
QjExOTE4MTA5MTZGMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEU5QjExODE4MTA5MTZG
MDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRFOUIxMUQxODE0NTY5QzAwM0FDQ0RG
IC8qIFNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RTlCMTFDMTgxNDU2OUMwMDNBQ0NERiAvKiBTaW1wbGVM
aW5lTGF5b3V0RnVuY3Rpb25zLmggKi87IH07CiAJCUU0RjlFRUYzMTU2REEwMDcwMEQyM0U3RSAv
KiBTdHlsZVNoZWV0Q29udGVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0RjlFRUYxMTU2RDg0QzQwMEQyM0U3RSAvKiBTdHlsZVNoZWV0Q29udGVu
dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
NTE2Njk5MTIwRkY5OTE4MDA5RDJDMjcgLyogTGlzdEJ1dHRvbkFycm93QDJ4LnBuZyBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTUxNjY5OEYyMEZGOTkx
NjAwOUQyQzI3IC8qIExpc3RCdXR0b25BcnJvd0AyeC5wbmcgKi87IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYTFhMzkwM2Y2N2IuLmY0MWUxMDJhMDY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC00NzQsOCArNDc0LDgg
QEAgdm9pZCBUZXh0SXRlcmF0b3I6OmFkdmFuY2UoKQogCiAgICAgaWYgKCFtX3RleHRCb3ggJiYg
bV9yZW1haW5pbmdUZXh0Qm94KSB7CiAgICAgICAgIG1fdGV4dEJveCA9IG1fcmVtYWluaW5nVGV4
dEJveDsKLSAgICAgICAgbV9yZW1haW5pbmdUZXh0Qm94ID0gbnVsbHB0cjsKLSAgICAgICAgbV9m
aXJzdExldHRlclRleHQgPSBudWxscHRyOworICAgICAgICBtX3JlbWFpbmluZ1RleHRCb3ggPSB7
IH07CisgICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0geyB9OwogICAgICAgICBtX29mZnNldCA9
IDA7CiAgICAgfQogICAgIC8vIGhhbmRsZSByZW1lbWJlcmVkIHRleHQgYm94CkBAIC01NzQsMjUg
KzU3NCw2IEBAIHN0YXRpYyBib29sIGhhc1Zpc2libGVUZXh0Tm9kZShSZW5kZXJUZXh0JiByZW5k
ZXJlcikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCB0ZXh0Tm9kZU9m
ZnNldEluRmxvdyhjb25zdCBUZXh0JiBmaXJzdFRleHROb2RlSW5SYW5nZSkKLXsKLSAgICAvLyBD
YWxjdWxhdGUgdGhlIHRleHQgb2Zmc2V0IGZvciBzaW1wbGUgbGluZXMuCi0gICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IGZpcnN0VGV4dE5vZGVJblJhbmdlLnJlbmRlcmVyKCk7Ci0gICAgaWYg
KCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgdW5zaWduZWQgdGV4dE9mZnNldCA9
IDA7Ci0gICAgZm9yIChyZW5kZXJlciA9IHJlbmRlcmVyLT5wcmV2aW91c1NpYmxpbmcoKTsgcmVu
ZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAg
IGlmIChpczxSZW5kZXJUZXh0PihyZW5kZXJlcikpCi0gICAgICAgICAgICB0ZXh0T2Zmc2V0ICs9
IGRvd25jYXN0PFJlbmRlclRleHQ+KHJlbmRlcmVyKS0+dGV4dCgpLmxlbmd0aCgpOwotICAgIH0K
LSAgICByZXR1cm4gdGV4dE9mZnNldDsKLX0KLQotc3RhdGljIGJvb2wgaXNOZXdMaW5lT3JUYWJD
aGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQotewotICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJ1xu
JyB8fCBjaGFyYWN0ZXIgPT0gJ1x0JzsKLX0KLQogYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRl
eHROb2RlKCkKIHsKICAgICBUZXh0JiB0ZXh0Tm9kZSA9IGRvd25jYXN0PFRleHQ+KCptX25vZGUp
OwpAQCAtNjE3LDcgKzU5OCw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgp
CiAgICAgICAgICAgICAgICAgU3RyaW5nIGZpcnN0TGV0dGVyID0gbV9maXJzdExldHRlclRleHQt
PnRleHQoKTsKICAgICAgICAgICAgICAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgKm1fZmlyc3RMZXR0
ZXJUZXh0LCBtX29mZnNldCwgbV9vZmZzZXQgKyBmaXJzdExldHRlci5sZW5ndGgoKSk7CiAgICAg
ICAgICAgICAgICAgbV9maXJzdExldHRlclRleHQgPSBudWxscHRyOwotICAgICAgICAgICAgICAg
IG1fdGV4dEJveCA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgbV90ZXh0Qm94ID0geyB9Owog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtNjM0LDEwMiArNjE1LDEzIEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChjb25zdCBhdXRvKiBsYXlv
dXQgPSByZW5kZXJlci5zaW1wbGVMaW5lTGF5b3V0KCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVy
LnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIShtX2JlaGF2
aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgQVNTRVJUKHJlbmRlcmVyLnBhcmVudCgpKTsKLSAgICAgICAg
QVNTRVJUKGlzPFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyLnBhcmVudCgpKSk7Ci0gICAgICAg
IGNvbnN0IGF1dG8mIGJsb2NrRmxvdyA9IGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRl
cmVyLnBhcmVudCgpKTsKLSAgICAgICAgLy8gVXNlIHRoZSBzaW1wbGUgbGF5b3V0IHJ1bnMgdG8g
aXRlcmF0ZSBvdmVyIHRoZSB0ZXh0IGNvbnRlbnQuCi0gICAgICAgIGJvb2wgaXNOZXdUZXh0Tm9k
ZSA9IG1fcHJldmlvdXNTaW1wbGVUZXh0Tm9kZUluRmxvdyAmJiBtX3ByZXZpb3VzU2ltcGxlVGV4
dE5vZGVJbkZsb3cgIT0gJnRleHROb2RlOwotICAgICAgICAvLyBTaW1wbGUgbGluZSBsYXlvdXQg
cnVuIHBvc2l0aW9ucyBhcmUgYWxsIGFic29sdXRlIHRvIHRoZSBwYXJlbnQgZmxvdy4KLSAgICAg
ICAgLy8gT2Zmc2V0dGluZyBpcyByZXF1aXJlZCB3aGVuIG11bHRpcGxlIHJlbmRlcmVycyBhcmUg
cHJlc2VudC4KLSAgICAgICAgbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJbkZsb3cgKz0g
aXNOZXdUZXh0Tm9kZSA/IG1fcHJldmlvdXNTaW1wbGVUZXh0Tm9kZUluRmxvdy0+cmVuZGVyZXIo
KS0+dGV4dCgpLmxlbmd0aCgpIDogMDsKLSAgICAgICAgbV9wcmV2aW91c1NpbXBsZVRleHROb2Rl
SW5GbG93ID0gJnRleHROb2RlOwotCi0gICAgICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gKG1f
bm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9lbmRPZmZz
ZXQpIDogcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwotICAgICAgICBpZiAoIW1fZmxvd1J1blJlc29s
dmVyQ2FjaGUgfHwgJm1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPmZsb3coKSAhPSAmYmxvY2tGbG93
KSB7Ci0gICAgICAgICAgICBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyA9IG1f
Zmxvd1J1blJlc29sdmVyQ2FjaGUgPyAwIDogdGV4dE5vZGVPZmZzZXRJbkZsb3codGV4dE5vZGUp
OwotICAgICAgICAgICAgbV9mbG93UnVuUmVzb2x2ZXJDYWNoZSA9IG1ha2VVbmlxdWU8U2ltcGxl
TGluZUxheW91dDo6UnVuUmVzb2x2ZXI+KGJsb2NrRmxvdywgKmxheW91dCk7Ci0gICAgICAgIH0K
LSAgICAgICAgLy8gU2tpcCB0byBtX29mZnNldCBwb3NpdGlvbi4KLSAgICAgICAgYXV0byByYW5n
ZSA9IG1fZmxvd1J1blJlc29sdmVyQ2FjaGUtPnJhbmdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwot
ICAgICAgICBhdXRvIGl0ID0gcmFuZ2UuYmVnaW4oKTsKLSAgICAgICAgYXV0byBlbmQgPSByYW5n
ZS5lbmQoKTsKLSAgICAgICAgYXV0byBzdGFydFBvc2l0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fb2Zmc2V0KSArIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93OwotICAg
ICAgICB3aGlsZSAoaXQgIT0gZW5kICYmICgqaXQpLmVuZCgpIDw9IHN0YXJ0UG9zaXRpb24pCi0g
ICAgICAgICAgICArK2l0OwotICAgICAgICBpZiAobV9uZXh0UnVuTmVlZHNXaGl0ZXNwYWNlICYm
IHJlbmRlcmVyVGV4dFttX29mZnNldCAtIDFdID09ICdcbicpIHsKLSAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJyAnLCB0ZXh0Tm9kZSwgbnVsbHB0ciwgbV9vZmZzZXQsIG1fb2Zmc2V0ICsgMSk7
Ci0gICAgICAgICAgICByZXR1cm4gaXQgPT0gZW5kOwotICAgICAgICB9Ci0gICAgICAgIGlmIChp
dCA9PSBlbmQpIHsKLSAgICAgICAgICAgIC8vIENvbGxhcHNlZCB0cmFpbGluZyB3aGl0ZXNwYWNl
LgotICAgICAgICAgICAgbV9vZmZzZXQgPSBlbmRQb3NpdGlvbjsKLSAgICAgICAgICAgIG1fbGFz
dFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgPSB0cnVlOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fbmV4dFJ1bk5lZWRzV2hpdGVzcGFj
ZSkgewotICAgICAgICAgICAgZW1pdENoYXJhY3RlcignICcsIHRleHROb2RlLCBudWxscHRyLCBt
X29mZnNldCwgbV9vZmZzZXQgKyAxKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotICAgICAgICAvLyBJZiB0aGUgcG9zaXRpb24gd2UgYXJlIGxvb2tpbmcgZm9yIGlzIHRv
IHRoZSBsZWZ0IG9mIHRoZSByZW5kZXJlcidzIGZpcnN0IHJ1biwgaXQgY291bGQgbWVhbiB0aGF0
Ci0gICAgICAgIC8vIHRoZSBydW5zIGFuZCB0aGUgcmVuZGVyZXJzIGFyZSBvdXQgb2Ygc3luYyAo
ZS5nLiB3ZSBza2lwcGVkIGEgcmVuZGVyZXIgaW4gYmV0d2VlbikuCi0gICAgICAgIC8vIEJldHRl
ciBiYWlsIG91dCBhdCB0aGlzIHBvaW50LgotICAgICAgICBhdXRvIHJ1biA9ICppdDsKLSAgICAg
ICAgaWYgKHJ1bi5zdGFydCgpID4gc3RhcnRQb3NpdGlvbikgewotICAgICAgICAgICAgQVNTRVJU
KG1fZmxvd1J1blJlc29sdmVyQ2FjaGUpOwotICAgICAgICAgICAgaWYgKCYocmVuZGVyZXJGb3JQ
b3NpdGlvbihtX2Zsb3dSdW5SZXNvbHZlckNhY2hlLT5mbG93Q29udGVudHMoKSwgc3RhcnRQb3Np
dGlvbikpICE9ICZyZW5kZXJlcikgewotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIEFTU0VSVChydW4uZW5kKCkgLSBydW4uc3RhcnQoKSA8PSByZW5kZXJlclRl
eHQubGVuZ3RoKCkpOwotICAgICAgICAvLyBjb250ZW50U3RhcnQgc2tpcHMgbGVhZGluZyB3aGl0
ZXNwYWNlLgotICAgICAgICB1bnNpZ25lZCBjb250ZW50U3RhcnQgPSBzdGQ6Om1heDx1bnNpZ25l
ZD4obV9vZmZzZXQsIHJ1bi5zdGFydCgpIC0gbV9hY2N1bXVsYXRlZFNpbXBsZVRleHRMZW5ndGhJ
bkZsb3cpOwotICAgICAgICB1bnNpZ25lZCBjb250ZW50RW5kID0gc3RkOjptaW4oZW5kUG9zaXRp
b24sIHJ1bi5lbmQoKSAtIG1fYWNjdW11bGF0ZWRTaW1wbGVUZXh0TGVuZ3RoSW5GbG93KTsKLSAg
ICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGVudFN0YXJ0IDw9IGNv
bnRlbnRFbmQpOwotICAgICAgICAvLyBDaGVjayBpZiB3aGl0ZXNwYWNlIGFkanVzdG1lbnQgaXMg
bmVlZGVkIHdoZW4gY3Jvc3NpbmcgcmVuZGVyZXIgYm91bmRhcnkuCi0gICAgICAgIGlmIChpc05l
d1RleHROb2RlKSB7Ci0gICAgICAgICAgICBib29sIGxhc3RDaGFyYWN0ZXJJc05vdFdoaXRlc3Bh
Y2UgPSBtX2xhc3RDaGFyYWN0ZXIgJiYgIXJlbmRlcmVyLnN0eWxlKCkuaXNDb2xsYXBzaWJsZVdo
aXRlU3BhY2UobV9sYXN0Q2hhcmFjdGVyKTsKLSAgICAgICAgICAgIGJvb2wgYWRkVHJhaWxpbmdX
aGl0ZXNwYWNlRm9yUHJldmlvdXMgPSBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNw
YWNlICYmIGxhc3RDaGFyYWN0ZXJJc05vdFdoaXRlc3BhY2U7Ci0gICAgICAgICAgICBib29sIGxl
YWRpbmdXaGl0ZXNwYWNlSXNOZWVkZWRGb3JDdXJyZW50ID0gY29udGVudFN0YXJ0ID4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fb2Zmc2V0KSAmJiBsYXN0Q2hhcmFjdGVySXNOb3RXaGl0ZXNwYWNl
OwotICAgICAgICAgICAgaWYgKGFkZFRyYWlsaW5nV2hpdGVzcGFjZUZvclByZXZpb3VzIHx8IGxl
YWRpbmdXaGl0ZXNwYWNlSXNOZWVkZWRGb3JDdXJyZW50KSB7Ci0gICAgICAgICAgICAgICAgZW1p
dENoYXJhY3RlcignICcsIHRleHROb2RlLCBudWxscHRyLCBtX29mZnNldCwgbV9vZmZzZXQgKyAx
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgLy8gXG4gXHQgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBuZWVkIHJl
cGxhY2luZyBzbyB0aGF0IHRoZSBuZXcgbGluZS90YWIgY2hhcmFjdGVycyBkb24ndCBzaG93IHVw
LgotICAgICAgICB1bnNpZ25lZCBzdG9wUG9zaXRpb24gPSBjb250ZW50U3RhcnQ7Ci0gICAgICAg
IHdoaWxlIChzdG9wUG9zaXRpb24gPCBjb250ZW50RW5kICYmICFpc05ld0xpbmVPclRhYkNoYXJh
Y3RlcihyZW5kZXJlclRleHRbc3RvcFBvc2l0aW9uXSkpCi0gICAgICAgICAgICArK3N0b3BQb3Np
dGlvbjsKLSAgICAgICAgLy8gRW1pdCB0aGUgdGV4dCB1cCB0byB0aGUgbmV3IGxpbmUvdGFiIGNo
YXJhY3Rlci4KLSAgICAgICAgaWYgKHN0b3BQb3NpdGlvbiA8IGNvbnRlbnRFbmQpIHsKLSAgICAg
ICAgICAgIGlmIChzdG9wUG9zaXRpb24gPT0gY29udGVudFN0YXJ0KSB7Ci0gICAgICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcignICcsIHRleHROb2RlLCBudWxscHRyLCBjb250ZW50U3RhcnQsIGNv
bnRlbnRTdGFydCArIDEpOwotICAgICAgICAgICAgICAgIG1fb2Zmc2V0ID0gY29udGVudFN0YXJ0
ICsgMTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbWl0VGV4dCh0ZXh0Tm9kZSwgcmVuZGVyZXIsIGNvbnRlbnRTdGFydCwgc3RvcFBv
c2l0aW9uKTsKLSAgICAgICAgICAgIG1fb2Zmc2V0ID0gc3RvcFBvc2l0aW9uICsgMTsKLSAgICAg
ICAgICAgIG1fbmV4dFJ1bk5lZWRzV2hpdGVzcGFjZSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZW1pdFRleHQodGV4dE5vZGUsIHJlbmRlcmVy
LCBjb250ZW50U3RhcnQsIGNvbnRlbnRFbmQpOwotICAgICAgICAvLyBXaGVuIGxpbmUgZW5kaW5n
IHdpdGggY29sbGFwc2VkIHdoaXRlc3BhY2UgaXMgcHJlc2VudCwgd2UgbmVlZCB0byBjYXJyeSBv
dmVyIG9uZSB3aGl0ZXNwYWNlOiBmb28oZW5kIG9mIGxpbmUpYmFyIC0+IGZvbyBiYXIgKG90aGVy
d2lzZSB3ZSB3b3VsZCBlbmQgdXAgd2l0aCBmb29iYXIpLgotICAgICAgICBtX25leHRSdW5OZWVk
c1doaXRlc3BhY2UgPSBydW4uaXNFbmRPZkxpbmUoKSAmJiBjb250ZW50RW5kIDwgZW5kUG9zaXRp
b24gJiYgcmVuZGVyZXIuc3R5bGUoKS5pc0NvbGxhcHNpYmxlV2hpdGVTcGFjZShyZW5kZXJlclRl
eHRbY29udGVudEVuZF0pOwotICAgICAgICBtX29mZnNldCA9IGNvbnRlbnRFbmQ7Ci0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQpID09IGVuZFBvc2l0aW9uOwot
ICAgIH0KLQotICAgIGlmIChyZW5kZXJlci5maXJzdFRleHRCb3goKSkKLSAgICAgICAgbV90ZXh0
Qm94ID0gcmVuZGVyZXIuZmlyc3RUZXh0Qm94KCk7CisgICAgbV90ZXh0Qm94ID0gbV9saW5lTGF5
b3V0UHJvdmlkZXIuZmlyc3RUZXh0Qm94Rm9yKHJlbmRlcmVyKTsKIAogICAgIGJvb2wgc2hvdWxk
SGFuZGxlRmlyc3RMZXR0ZXIgPSAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIgJiYgaXM8UmVuZGVyVGV4
dEZyYWdtZW50PihyZW5kZXJlcikgJiYgIW1fb2Zmc2V0OwogICAgIGlmIChzaG91bGRIYW5kbGVG
aXJzdExldHRlcikKICAgICAgICAgaGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcihkb3duY2FzdDxS
ZW5kZXJUZXh0RnJhZ21lbnQ+KHJlbmRlcmVyKSk7CiAKLSAgICBpZiAoIXJlbmRlcmVyLmZpcnN0
VGV4dEJveCgpICYmIHJlbmRlcmVyVGV4dC5sZW5ndGgoKSAmJiAhc2hvdWxkSGFuZGxlRmlyc3RM
ZXR0ZXIpIHsKKyAgICBpZiAoIW1fdGV4dEJveCAmJiByZW5kZXJlclRleHQubGVuZ3RoKCkgJiYg
IXNob3VsZEhhbmRsZUZpcnN0TGV0dGVyKSB7CiAgICAgICAgIGlmIChyZW5kZXJlci5zdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICEobV9iZWhhdmlvciAmIFRl
eHRJdGVyYXRvcklnbm9yZXNTdHlsZVZpc2liaWxpdHkpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlID0gdHJ1
ZTsgLy8gZW50aXJlIGJsb2NrIGlzIGNvbGxhcHNlZCBzcGFjZQpAQCAtNzQ0LDcgKzYzNiw3IEBA
IGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgpCiAgICAgICAgICAgICBtX3NvcnRl
ZFRleHRCb3hlcy5hcHBlbmQodGV4dEJveCk7CiAgICAgICAgIHN0ZDo6c29ydChtX3NvcnRlZFRl
eHRCb3hlcy5iZWdpbigpLCBtX3NvcnRlZFRleHRCb3hlcy5lbmQoKSwgSW5saW5lVGV4dEJveDo6
Y29tcGFyZUJ5U3RhcnQpOwogICAgICAgICBtX3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uID0gMDsK
LSAgICAgICAgbV90ZXh0Qm94ID0gbV9zb3J0ZWRUZXh0Qm94ZXMuaXNFbXB0eSgpID8gbnVsbHB0
ciA6IG1fc29ydGVkVGV4dEJveGVzWzBdOworICAgICAgICBtX3RleHRCb3ggPSBtX2xpbmVMYXlv
dXRQcm92aWRlci5pdGVyYXRvckZvcklubGluZVRleHRCb3gobV9zb3J0ZWRUZXh0Qm94ZXMuaXNF
bXB0eSgpID8gbnVsbHB0ciA6IG1fc29ydGVkVGV4dEJveGVzWzBdKTsKICAgICB9CiAKICAgICBo
YW5kbGVUZXh0Qm94KCk7CkBAIC03NTcsMTggKzY0OSwyNSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dEJveCgpCiAKICAgICBhdXRvJiByZW5kZXJlciA9IG1fZmlyc3RMZXR0ZXJUZXh0
ID8gKm1fZmlyc3RMZXR0ZXJUZXh0IDogKnRleHROb2RlLnJlbmRlcmVyKCk7CiAgICAgaWYgKHJl
bmRlcmVyLnN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgISht
X2JlaGF2aW9yICYgVGV4dEl0ZXJhdG9ySWdub3Jlc1N0eWxlVmlzaWJpbGl0eSkpIHsKLSAgICAg
ICAgbV90ZXh0Qm94ID0gbnVsbHB0cjsKKyAgICAgICAgbV90ZXh0Qm94ID0geyB9OwogICAgICAg
ICByZXR1cm47CiAgICAgfQorCisgICAgYXV0byBmaXJzdFRleHRCb3ggPSBbJl0geworICAgICAg
ICBpZiAocmVuZGVyZXIuY29udGFpbnNSZXZlcnNlZFRleHQoKSkKKyAgICAgICAgICAgIHJldHVy
biBtX2xpbmVMYXlvdXRQcm92aWRlci5pdGVyYXRvckZvcklubGluZVRleHRCb3gobV9zb3J0ZWRU
ZXh0Qm94ZXMuaXNFbXB0eSgpID8gbnVsbHB0ciA6IG1fc29ydGVkVGV4dEJveGVzWzBdKTsKKwor
ICAgICAgICByZXR1cm4gbV9saW5lTGF5b3V0UHJvdmlkZXIuZmlyc3RUZXh0Qm94Rm9yKHJlbmRl
cmVyKTsKKyAgICB9KCk7CisKICAgICBTdHJpbmcgcmVuZGVyZXJUZXh0ID0gcmVuZGVyZXIudGV4
dCgpOwogICAgIHVuc2lnbmVkIHN0YXJ0ID0gbV9vZmZzZXQ7CiAgICAgdW5zaWduZWQgZW5kID0g
KCZ0ZXh0Tm9kZSA9PSBtX2VuZENvbnRhaW5lcikgPyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9l
bmRPZmZzZXQpIDogVUlOVF9NQVg7CiAgICAgd2hpbGUgKG1fdGV4dEJveCkgewotICAgICAgICB1
bnNpZ25lZCB0ZXh0Qm94U3RhcnQgPSBtX3RleHRCb3gtPnN0YXJ0KCk7CisgICAgICAgIHVuc2ln
bmVkIHRleHRCb3hTdGFydCA9IG1fdGV4dEJveC0+bG9jYWxTdGFydE9mZnNldCgpOwogICAgICAg
ICB1bnNpZ25lZCBydW5TdGFydCA9IHN0ZDo6bWF4KHRleHRCb3hTdGFydCwgc3RhcnQpOwogCiAg
ICAgICAgIC8vIENoZWNrIGZvciBjb2xsYXBzZWQgc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIHRoaXMg
cnVuLgotICAgICAgICBJbmxpbmVUZXh0Qm94KiBmaXJzdFRleHRCb3ggPSByZW5kZXJlci5jb250
YWluc1JldmVyc2VkVGV4dCgpID8gKG1fc29ydGVkVGV4dEJveGVzLmlzRW1wdHkoKSA/IG51bGxw
dHIgOiBtX3NvcnRlZFRleHRCb3hlc1swXSkgOiByZW5kZXJlci5maXJzdFRleHRCb3goKTsKICAg
ICAgICAgYm9vbCBuZWVkU3BhY2UgPSBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNw
YWNlIHx8IChtX3RleHRCb3ggPT0gZmlyc3RUZXh0Qm94ICYmIHRleHRCb3hTdGFydCA9PSBydW5T
dGFydCAmJiBydW5TdGFydCk7CiAgICAgICAgIGlmIChuZWVkU3BhY2UgJiYgIXJlbmRlcmVyLnN0
eWxlKCkuaXNDb2xsYXBzaWJsZVdoaXRlU3BhY2UobV9sYXN0Q2hhcmFjdGVyKSAmJiBtX2xhc3RD
aGFyYWN0ZXIpIHsKICAgICAgICAgICAgIGlmIChtX2xhc3RUZXh0Tm9kZSA9PSAmdGV4dE5vZGUg
JiYgcnVuU3RhcnQgJiYgcmVuZGVyZXJUZXh0W3J1blN0YXJ0IC0gMV0gPT0gJyAnKSB7CkBAIC03
ODAsMTcgKzY3OSwxOSBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAg
ICAgICAgICAgICAgZW1pdENoYXJhY3RlcignICcsIHRleHROb2RlLCBudWxscHRyLCBydW5TdGFy
dCwgcnVuU3RhcnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHVu
c2lnbmVkIHRleHRCb3hFbmQgPSB0ZXh0Qm94U3RhcnQgKyBtX3RleHRCb3gtPmxlbigpOworICAg
ICAgICB1bnNpZ25lZCB0ZXh0Qm94RW5kID0gdGV4dEJveFN0YXJ0ICsgbV90ZXh0Qm94LT5sZW5n
dGgoKTsKICAgICAgICAgdW5zaWduZWQgcnVuRW5kID0gc3RkOjptaW4odGV4dEJveEVuZCwgZW5k
KTsKICAgICAgICAgCiAgICAgICAgIC8vIERldGVybWluZSB3aGF0IHRoZSBuZXh0IHRleHQgYm94
IHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZhbmNlIHlldAotICAgICAgICBJbmxpbmVUZXh0Qm94KiBu
ZXh0VGV4dEJveCA9IG51bGxwdHI7CisgICAgICAgIExpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRC
b3hJdGVyYXRvciBuZXh0VGV4dEJveDsKICAgICAgICAgaWYgKHJlbmRlcmVyLmNvbnRhaW5zUmV2
ZXJzZWRUZXh0KCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgcmV2ZXJzZWQgdGV4
dCBpbiB0aGUgbGluZSBsYXlvdXQgaXRlcmF0b3IuCiAgICAgICAgICAgICBpZiAobV9zb3J0ZWRU
ZXh0Qm94ZXNQb3NpdGlvbiArIDEgPCBtX3NvcnRlZFRleHRCb3hlcy5zaXplKCkpCi0gICAgICAg
ICAgICAgICAgbmV4dFRleHRCb3ggPSBtX3NvcnRlZFRleHRCb3hlc1ttX3NvcnRlZFRleHRCb3hl
c1Bvc2l0aW9uICsgMV07Ci0gICAgICAgIH0gZWxzZSAKLSAgICAgICAgICAgIG5leHRUZXh0Qm94
ID0gbV90ZXh0Qm94LT5uZXh0VGV4dEJveCgpOwotICAgICAgICBBU1NFUlQoIW5leHRUZXh0Qm94
IHx8ICZuZXh0VGV4dEJveC0+cmVuZGVyZXIoKSA9PSAmcmVuZGVyZXIpOworICAgICAgICAgICAg
ICAgIG5leHRUZXh0Qm94ID0gbV9saW5lTGF5b3V0UHJvdmlkZXIuaXRlcmF0b3JGb3JJbmxpbmVU
ZXh0Qm94KG1fc29ydGVkVGV4dEJveGVzW21fc29ydGVkVGV4dEJveGVzUG9zaXRpb24gKyAxXSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBuZXh0VGV4dEJveCA9IG1fdGV4dEJveDsK
KyAgICAgICAgICAgICsrbmV4dFRleHRCb3g7CisgICAgICAgIH0KIAogICAgICAgICBpZiAocnVu
U3RhcnQgPCBydW5FbmQpIHsKICAgICAgICAgICAgIC8vIEhhbmRsZSBlaXRoZXIgYSBzaW5nbGUg
bmV3bGluZSBjaGFyYWN0ZXIgKHdoaWNoIGJlY29tZXMgYSBzcGFjZSksCkBAIC04MTcsNyArNzE4
LDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3goKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgLy8gQWR2YW5jZSBhbmQgcmV0dXJuCi0gICAgICAgICAg
ICB1bnNpZ25lZCBuZXh0UnVuU3RhcnQgPSBuZXh0VGV4dEJveCA/IG5leHRUZXh0Qm94LT5zdGFy
dCgpIDogcmVuZGVyZXJUZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgdW5zaWduZWQgbmV4dFJ1
blN0YXJ0ID0gbmV4dFRleHRCb3ggPyBuZXh0VGV4dEJveC0+bG9jYWxTdGFydE9mZnNldCgpIDog
cmVuZGVyZXJUZXh0Lmxlbmd0aCgpOwogICAgICAgICAgICAgaWYgKG5leHRSdW5TdGFydCA+IHJ1
bkVuZCkKICAgICAgICAgICAgICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNw
YWNlID0gdHJ1ZTsgLy8gY29sbGFwc2VkIHNwYWNlIGJldHdlZW4gcnVucyBvciBhdCB0aGUgZW5k
CiAgICAgICAgICAgICBtX3RleHRCb3ggPSBuZXh0VGV4dEJveDsKQEAgLTgzMiw4ICs3MzMsOCBA
QCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgfQogICAgIGlmICghbV90
ZXh0Qm94ICYmIG1fcmVtYWluaW5nVGV4dEJveCkgewogICAgICAgICBtX3RleHRCb3ggPSBtX3Jl
bWFpbmluZ1RleHRCb3g7Ci0gICAgICAgIG1fcmVtYWluaW5nVGV4dEJveCA9IG51bGxwdHI7Ci0g
ICAgICAgIG1fZmlyc3RMZXR0ZXJUZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgbV9yZW1haW5pbmdU
ZXh0Qm94ID0geyB9OworICAgICAgICBtX2ZpcnN0TGV0dGVyVGV4dCA9IHsgfTsKICAgICAgICAg
bV9vZmZzZXQgPSAwOwogICAgICAgICBoYW5kbGVUZXh0Qm94KCk7CiAgICAgfQpAQCAtODU2LDcg
Kzc1Nyw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJl
bmRlclRleHRGcmFnbWVudCYgcmVuZGVyZXIpCiAgICAgICAgIGlmIChhdXRvKiBmaXJzdExldHRl
clRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZpcnN0TGV0dGVyKGZpcnN0TGV0dGVyKSkgewogICAg
ICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0ZXIgPSB0cnVlOwogICAgICAgICAgICAgbV9yZW1h
aW5pbmdUZXh0Qm94ID0gbV90ZXh0Qm94OwotICAgICAgICAgICAgbV90ZXh0Qm94ID0gZmlyc3RM
ZXR0ZXJUZXh0LT5maXJzdFRleHRCb3goKTsKKyAgICAgICAgICAgIG1fdGV4dEJveCA9IG1fbGlu
ZUxheW91dFByb3ZpZGVyLmZpcnN0VGV4dEJveEZvcigqZmlyc3RMZXR0ZXJUZXh0KTsKICAgICAg
ICAgICAgIG1fc29ydGVkVGV4dEJveGVzLmNsZWFyKCk7CiAgICAgICAgICAgICBtX2ZpcnN0TGV0
dGVyVGV4dCA9IGZpcnN0TGV0dGVyVGV4dDsKICAgICAgICAgfQpAQCAtMTIyMiw3ICsxMTIzLDYg
QEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyLCBOb2Rl
JiBjaGFyYWN0ZXJOb2RlLCBOb2RlKiBvZmYKICAgICBtX3RleHQgPSBtX2NvcHlhYmxlVGV4dC50
ZXh0KCk7CiAgICAgbV9sYXN0Q2hhcmFjdGVyID0gY2hhcmFjdGVyOwogICAgIG1fbGFzdFRleHRO
b2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgPSBmYWxzZTsKLSAgICBtX25leHRSdW5OZWVkc1do
aXRlc3BhY2UgPSBmYWxzZTsKIH0KIAogdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KFRleHQm
IHRleHROb2RlLCBSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRleHRTdGFydE9mZnNldCwgaW50
IHRleHRFbmRPZmZzZXQpCkBAIC0xMjQ3LDcgKzExNDcsNiBAQCB2b2lkIFRleHRJdGVyYXRvcjo6
ZW1pdFRleHQoVGV4dCYgdGV4dE5vZGUsIFJlbmRlclRleHQmIHJlbmRlcmVyLCBpbnQgdGV4dFN0
YXJ0TwogICAgIG1fdGV4dCA9IG1fY29weWFibGVUZXh0LnRleHQoKTsKIAogICAgIG1fbGFzdFRl
eHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgPSBmYWxzZTsKLSAgICBtX25leHRSdW5OZWVk
c1doaXRlc3BhY2UgPSBmYWxzZTsKICAgICBtX2hhc0VtaXR0ZWQgPSB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCAxZjRmZGRmZWY3NS4uZWJjMjUzMjkz
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMjgsNiArMjgsNyBA
QAogLy8gRklYTUU6IE1vdmUgZWFjaCBpdGVyYXRvciBjbGFzcyBpbnRvIGEgc2VwYXJhdGUgaGVh
ZGVyIGZpbGUuCiAKICNpbmNsdWRlICJGaW5kT3B0aW9ucy5oIgorI2luY2x1ZGUgIkxpbmVMYXlv
dXRJbnRlcmZhY2VUZXh0Qm94ZXMuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlRl
eHRJdGVyYXRvckJlaGF2aW9yLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTY3LDEw
ICsxNjgsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBz
b21lIHBlbmRpbmcgdGV4dCBmcm9tIHRoZSBjdXJyZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZh
bHNlIGFuZCBudWxsLCB3ZSBnbyBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSog
bV9ub2RlRm9yQWRkaXRpb25hbE5ld2xpbmUgeyBudWxscHRyIH07Ci0gICAgSW5saW5lVGV4dEJv
eCogbV90ZXh0Qm94IHsgbnVsbHB0ciB9OworICAgIExpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRC
b3hJdGVyYXRvciBtX3RleHRCb3g7CiAKICAgICAvLyBVc2VkIHdoZW4gaXRlcmF0aW5nIG92ZXIg
OmZpcnN0LWxldHRlciB0ZXh0IHRvIHNhdmUgcG9pbnRlciB0byByZW1haW5pbmcgdGV4dCBib3gu
Ci0gICAgSW5saW5lVGV4dEJveCogbV9yZW1haW5pbmdUZXh0Qm94IHsgbnVsbHB0ciB9OworICAg
IExpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3hJdGVyYXRvciBtX3JlbWFpbmluZ1RleHRCb3g7
CiAKICAgICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRlclRleHQgb2JqZWN0IGZvciA6Zmlyc3Qt
bGV0dGVyLgogICAgIFJlbmRlclRleHQqIG1fZmlyc3RMZXR0ZXJUZXh0IHsgbnVsbHB0ciB9OwpA
QCAtMTgwLDExICsxODEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sYXN0VGV4dE5vZGVFbmRl
ZFdpdGhDb2xsYXBzZWRTcGFjZSB7IGZhbHNlIH07CiAgICAgVUNoYXIgbV9sYXN0Q2hhcmFjdGVy
IHsgMCB9OwogCi0gICAgLy8gVXNlZCB0byBkbyBzaW1wbGUgbGluZSBsYXlvdXQgcnVuIGxvZ2lj
LgotICAgIGJvb2wgbV9uZXh0UnVuTmVlZHNXaGl0ZXNwYWNlIHsgZmFsc2UgfTsKLSAgICB1bnNp
Z25lZCBtX2FjY3VtdWxhdGVkU2ltcGxlVGV4dExlbmd0aEluRmxvdyB7IDAgfTsKLSAgICBUZXh0
KiBtX3ByZXZpb3VzU2ltcGxlVGV4dE5vZGVJbkZsb3cgeyBudWxscHRyIH07Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyPiBtX2Zsb3dSdW5SZXNvbHZl
ckNhY2hlOworICAgIExpbmVMYXlvdXRJbnRlcmZhY2U6OlByb3ZpZGVyIG1fbGluZUxheW91dFBy
b3ZpZGVyOwogCiAgICAgLy8gVXNlZCB3aGVuIHRleHQgYm94ZXMgYXJlIG91dCBvZiBvcmRlciAo
SGVicmV3L0FyYWJpYyB3aXRoIGVtYmVkZGVkIExUUiB0ZXh0KQogICAgIFZlY3RvcjxJbmxpbmVU
ZXh0Qm94Kj4gbV9zb3J0ZWRUZXh0Qm94ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYTA3YzRkMDQxOTAuLjhkNGVkOTJmOTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0yMDIs
OCArMjAyLDggQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0
U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAgICAvLyBtYW55IHRlc3Qg
cmVzdWx0cy4KICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCYgdGV4dCA9IGRvd25jYXN0PFJlbmRl
clRleHQ+KG8pOwogICAgICAgICByID0gSW50UmVjdCh0ZXh0LmZpcnN0UnVuTG9jYXRpb24oKSwg
dGV4dC5saW5lc0JvdW5kaW5nQm94KCkuc2l6ZSgpKTsKLSAgICAgICAgYXV0byB0ZXh0Qm94ZXMg
PSBMaW5lTGF5b3V0SW50ZXJmYWNlOjp0ZXh0Qm94ZXModGV4dCk7Ci0gICAgICAgIGlmICh0ZXh0
Qm94ZXMuYmVnaW4oKSA9PSB0ZXh0Qm94ZXMuZW5kKCkpCisgICAgICAgIExpbmVMYXlvdXRJbnRl
cmZhY2U6OlByb3ZpZGVyIGxpbmVMYXlvdXRQcm92aWRlcjsKKyAgICAgICAgaWYgKCFsaW5lTGF5
b3V0UHJvdmlkZXIuZmlyc3RUZXh0Qm94Rm9yKHRleHQpKQogICAgICAgICAgICAgYWRqdXN0Rm9y
VGFibGVDZWxscyA9IGZhbHNlOwogICAgIH0gZWxzZSBpZiAoby5pc0JSKCkpIHsKICAgICAgICAg
Y29uc3QgUmVuZGVyTGluZUJyZWFrJiBiciA9IGRvd25jYXN0PFJlbmRlckxpbmVCcmVhaz4obyk7
CkBAIC01NDksOCArNTQ5LDkgQEAgdm9pZCB3cml0ZShUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBPcHRpb25TZXQ8UmVuZGVyQXNUZXh0RmxhZz4gYmUKICAgICBUZXh0U3Ry
ZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7CiAKICAgICBpZiAoaXM8UmVuZGVyVGV4
dD4obykpIHsKKyAgICAgICAgTGluZUxheW91dEludGVyZmFjZTo6UHJvdmlkZXIgbGluZUxheW91
dFByb3ZpZGVyOwogICAgICAgICBhdXRvJiB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVyVGV4dD4obyk7
Ci0gICAgICAgIGZvciAoYXV0byB0ZXh0Qm94IDogTGluZUxheW91dEludGVyZmFjZTo6dGV4dEJv
eGVzKHRleHQpKSB7CisgICAgICAgIGZvciAoYXV0byYgdGV4dEJveCA6IGxpbmVMYXlvdXRQcm92
aWRlci50ZXh0Qm94UmFuZ2VGb3IodGV4dCkpIHsKICAgICAgICAgICAgIHRzIDw8IGluZGVudDsK
ICAgICAgICAgICAgIHdyaXRlVGV4dEJveCh0cywgdGV4dCwgdGV4dEJveCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVz
b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNv
bHZlci5jcHAKaW5kZXggMDBmMDM4MTY3MDguLmQyMWQ5NjJkYjg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmNwcApAQCAt
MTEzLDcgKzExMyw3IEBAIHVuc2lnbmVkIFJ1blJlc29sdmVyOjpSdW46OmxvY2FsRW5kKCkgY29u
c3QKIH0KIAogUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBSdW5SZXNvbHZl
ciYgcmVzb2x2ZXIsIHVuc2lnbmVkIHJ1bkluZGV4LCB1bnNpZ25lZCBsaW5lSW5kZXgpCi0gICAg
OiBtX3Jlc29sdmVyKHJlc29sdmVyKQorICAgIDogbV9yZXNvbHZlcigmcmVzb2x2ZXIpCiAgICAg
LCBtX3J1bkluZGV4KHJ1bkluZGV4KQogICAgICwgbV9saW5lSW5kZXgobGluZUluZGV4KQogewpA
QCAtMTI5LDggKzEyOSw4IEBAIFJ1blJlc29sdmVyOjpJdGVyYXRvciYgUnVuUmVzb2x2ZXI6Okl0
ZXJhdG9yOjphZHZhbmNlKCkKIAogUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yJiBSdW5SZXNvbHZlcjo6
SXRlcmF0b3I6OmFkdmFuY2VMaW5lcyh1bnNpZ25lZCBsaW5lQ291bnQpCiB7Ci0gICAgdW5zaWdu
ZWQgcnVuQ291bnQgPSBtX3Jlc29sdmVyLm1fbGF5b3V0LnJ1bkNvdW50KCk7Ci0gICAgaWYgKHJ1
bkNvdW50ID09IG1fcmVzb2x2ZXIubV9sYXlvdXQubGluZUNvdW50KCkpIHsKKyAgICB1bnNpZ25l
ZCBydW5Db3VudCA9IHJlc29sdmVyKCkubV9sYXlvdXQucnVuQ291bnQoKTsKKyAgICBpZiAocnVu
Q291bnQgPT0gcmVzb2x2ZXIoKS5tX2xheW91dC5saW5lQ291bnQoKSkgewogICAgICAgICBtX3J1
bkluZGV4ID0gc3RkOjptaW4ocnVuQ291bnQsIG1fcnVuSW5kZXggKyBsaW5lQ291bnQpOwogICAg
ICAgICBtX2xpbmVJbmRleCA9IG1fcnVuSW5kZXg7CiAgICAgICAgIHJldHVybiAqdGhpczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIu
aAppbmRleCA0NTU5MjYwZjJhZC4uNmFiNzAzMTcwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgKQEAgLTk0LDEwICs5NCwx
MCBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIGxpbmVJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGluZUluZGV4OyB9CiAgICAgICAgIEl0ZXJhdG9yJiBhZHZhbmNlKCk7CiAgICAgICAgIEl0
ZXJhdG9yJiBhZHZhbmNlTGluZXModW5zaWduZWQpOwotICAgICAgICBjb25zdCBSdW5SZXNvbHZl
ciYgcmVzb2x2ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVyOyB9Ci0gICAgICAgIGJvb2wg
aW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlci5tX2luUXVpcmtzTW9kZTsg
fQorICAgICAgICBjb25zdCBSdW5SZXNvbHZlciYgcmVzb2x2ZXIoKSBjb25zdCB7IHJldHVybiAq
bV9yZXNvbHZlcjsgfQorICAgICAgICBib29sIGluUXVpcmtzTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IHJlc29sdmVyKCkubV9pblF1aXJrc01vZGU7IH0KIAotICAgICAgICBjb25zdCBSdW5SZXNvbHZl
ciYgbV9yZXNvbHZlcjsKKyAgICAgICAgY29uc3QgUnVuUmVzb2x2ZXIqIG1fcmVzb2x2ZXI7CiAg
ICAgICAgIHVuc2lnbmVkIG1fcnVuSW5kZXg7CiAgICAgICAgIHVuc2lnbmVkIG1fbGluZUluZGV4
OwogICAgIH07CkBAIC0yMzgsNyArMjM4LDcgQEAgaW5saW5lIFJ1blJlc29sdmVyOjpJdGVyYXRv
ciYgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVyYXRvci0tKCkKIAogaW5saW5lIGJvb2wgUnVu
UmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29u
c3QKIHsKLSAgICBBU1NFUlQoJm1fcmVzb2x2ZXIgPT0gJm90aGVyLm1fcmVzb2x2ZXIpOworICAg
IEFTU0VSVChtX3Jlc29sdmVyID09IG90aGVyLm1fcmVzb2x2ZXIpOwogICAgIHJldHVybiBtX3J1
bkluZGV4ID09IG90aGVyLm1fcnVuSW5kZXg7CiB9CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCBpbmxp
bmUgUnVuUmVzb2x2ZXI6OlJ1biBSdW5SZXNvbHZlcjo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNv
bnN0CiAKIGlubGluZSBjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpSdW4mIFJ1blJlc29sdmVyOjpJ
dGVyYXRvcjo6c2ltcGxlUnVuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yZXNvbHZlci5tX2xh
eW91dC5ydW5BdChtX3J1bkluZGV4KTsKKyAgICByZXR1cm4gcmVzb2x2ZXIoKS5tX2xheW91dC5y
dW5BdChtX3J1bkluZGV4KTsKIH0KIAogaW5saW5lIFJ1blJlc29sdmVyOjpJdGVyYXRvciBSdW5S
ZXNvbHZlcjo6YmVnaW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50ZXJmYWNlVGV4dEJveGVzLmNwcAppbmRleCBk
YWE4NjNiMWNkYy4uMTgwYzBlZWM3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuY3BwCkBA
IC0zNSw0NiArMzUsNDYgQEAgbmFtZXNwYWNlIExpbmVMYXlvdXRJbnRlcmZhY2UgewogCiBGbG9h
dFJlY3QgVGV4dEJveDo6cmVjdCgpIGNvbnN0CiB7Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25z
dCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3Igc2ltcGxlTGluZUl0ZXJh
dG9yKSB7Ci0gICAgICAgIHJldHVybiAoKnNpbXBsZUxpbmVJdGVyYXRvcikucmVjdCgpOworICAg
IGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRo
KSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLnJlY3QoKTsKICAgICB9OwogCiAg
ICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkg
ewogICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+ZnJhbWVSZWN0KCk7CiAgICAgfTsKIAot
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1faXRlcmF0b3IubV9wYXRoVmFyaWFudCwgc2ltcGxl
LCBjb21wbGV4KTsKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZh
cmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CiB9CiAKIEZsb2F0UmVjdCBUZXh0Qm94Ojpsb2dpY2Fs
UmVjdCgpIGNvbnN0CiB7Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBTaW1wbGVMaW5lTGF5
b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3Igc2ltcGxlTGluZUl0ZXJhdG9yKSB7Ci0gICAgICAg
IHJldHVybiAoKnNpbXBsZUxpbmVJdGVyYXRvcikucmVjdCgpOworICAgIGF1dG8gc2ltcGxlID0g
W10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJl
dHVybiAoKnBhdGguaXRlcmF0b3IpLnJlY3QoKTsKICAgICB9OwogCiAgICAgYXV0byBjb21wbGV4
ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgewogICAgICAgICByZXR1
cm4gaW5saW5lVGV4dEJveC0+bG9naWNhbEZyYW1lUmVjdCgpOwogICAgIH07CiAKLSAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX2l0ZXJhdG9yLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxl
eCk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBz
aW1wbGUsIGNvbXBsZXgpOwogfQogCiBib29sIFRleHRCb3g6Omhhc0h5cGhlbigpIGNvbnN0CiB7
Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZl
cjo6SXRlcmF0b3Igc2ltcGxlTGluZUl0ZXJhdG9yKSB7Ci0gICAgICAgIHJldHVybiAoKnNpbXBs
ZUxpbmVJdGVyYXRvcikuaGFzSHlwaGVuKCk7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBU
ZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0
aC5pdGVyYXRvcikuaGFzSHlwaGVuKCk7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcGxleCA9IFtd
KGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKICAgICAgICAgcmV0dXJuIGlu
bGluZVRleHRCb3gtPmhhc0h5cGhlbigpOwogICAgIH07CiAKLSAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX2l0ZXJhdG9yLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CisgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBs
ZXgpOwogfQogCiBib29sIFRleHRCb3g6OmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdAog
ewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2
ZXI6Okl0ZXJhdG9yKSB7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0
b3I6OlNpbXBsZVBhdGgmKSB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH07CiAKQEAgLTgy
LDEyICs4MiwxMiBAQCBib29sIFRleHRCb3g6OmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25z
dAogICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
OwogICAgIH07CiAKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2l0ZXJhdG9yLm1fcGF0aFZh
cmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0
b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwogfQogCiBib29sIFRleHRCb3g6
OmRpck92ZXJyaWRlKCkgY29uc3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFNpbXBs
ZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvcikgeworICAgIGF1dG8gc2ltcGxlID0g
W10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJikgewogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfTsKIApAQCAtOTUsMjAgKzk1LDY0IEBAIGJvb2wgVGV4dEJveDo6ZGlyT3Zl
cnJpZGUoKSBjb25zdAogICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+ZGlyT3ZlcnJpZGUo
KTsKICAgICB9OwogCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9pdGVyYXRvci5tX3BhdGhW
YXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJh
dG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKIH0KIAogU3RyaW5nVmlldyBU
ZXh0Qm94Ojp0ZXh0KCkgY29uc3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFNpbXBs
ZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBzaW1wbGVMaW5lSXRlcmF0b3IpIHsK
LSAgICAgICAgcmV0dXJuICgqc2ltcGxlTGluZUl0ZXJhdG9yKS50ZXh0KCk7CisgICAgYXV0byBz
aW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAg
ICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikudGV4dCgpOwogICAgIH07CiAKICAgICBhdXRv
IGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7CiAgICAg
ICAgIHJldHVybiBTdHJpbmdWaWV3KGlubGluZVRleHRCb3gtPnJlbmRlcmVyKCkudGV4dCgpKS5z
dWJzdHJpbmcoaW5saW5lVGV4dEJveC0+c3RhcnQoKSwgaW5saW5lVGV4dEJveC0+bGVuKCkpOwog
ICAgIH07CiAKLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2l0ZXJhdG9yLm1fcGF0aFZhcmlh
bnQsIHNpbXBsZSwgY29tcGxleCk7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3Io
KS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit1bnNpZ25lZCBUZXh0Qm94
Ojpsb2NhbFN0YXJ0T2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0
IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpw
YXRoLml0ZXJhdG9yKS5sb2NhbFN0YXJ0KCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9
IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKKyAgICAgICAgcmV0dXJu
IGlubGluZVRleHRCb3gtPnN0YXJ0KCk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKwordW5z
aWduZWQgVGV4dEJveDo6bG9jYWxFbmRPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxl
ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAg
IHJldHVybiAoKnBhdGguaXRlcmF0b3IpLmxvY2FsRW5kKCk7CisgICAgfTsKKworICAgIGF1dG8g
Y29tcGxleCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKKyAgICAg
ICAgcmV0dXJuIGlubGluZVRleHRCb3gtPmVuZCgpOworICAgIH07CisKKyAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9
CisKK3Vuc2lnbmVkIFRleHRCb3g6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUg
PSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAg
cmV0dXJuICgqcGF0aC5pdGVyYXRvcikuZW5kKCkgLSAoKnBhdGguaXRlcmF0b3IpLnN0YXJ0KCk7
CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlu
bGluZVRleHRCb3gpIHsKKyAgICAgICAgcmV0dXJuIGlubGluZVRleHRCb3gtPmxlbigpOworICAg
IH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQs
IHNpbXBsZSwgY29tcGxleCk7Cit9CisKK2lubGluZSBjb25zdCBUZXh0Qm94SXRlcmF0b3ImIFRl
eHRCb3g6Oml0ZXJhdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
VGV4dEJveEl0ZXJhdG9yJj4oKnRoaXMpOwogfQogCiBUZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJ
dGVyYXRvcihjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KQpAQCAtMTE2LDE1ICsx
NjAsMTUgQEAgVGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IoY29uc3QgSW5saW5lVGV4
dEJveCogaW5saW5lVGV4dEJveCkKIHsKIH0KIAotVGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRl
cmF0b3IoU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIHNpbXBsZUxpbmVJ
dGVyYXRvcikKLSAgICA6IG1fcGF0aFZhcmlhbnQoc2ltcGxlTGluZUl0ZXJhdG9yKQorVGV4dEJv
eEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IoU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6
Okl0ZXJhdG9yIGl0ZXJhdG9yLCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0
b3IgZW5kKQorICAgIDogbV9wYXRoVmFyaWFudChUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgg
eyBpdGVyYXRvciwgZW5kIH0pCiB7CiB9CiAKIFRleHRCb3hJdGVyYXRvciYgVGV4dEJveEl0ZXJh
dG9yOjp0cmF2ZXJzZU5leHQoKQogewotICAgIGF1dG8gc2ltcGxlID0gW10oU2ltcGxlTGluZUxh
eW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yJiBzaW1wbGVMaW5lSXRlcmF0b3IpIHsKLSAgICAg
ICAgKytzaW1wbGVMaW5lSXRlcmF0b3I7CisgICAgYXV0byBzaW1wbGUgPSBbXShUZXh0Qm94SXRl
cmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgKytwYXRoLml0ZXJhdG9yOwogICAg
IH07CiAKICAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiYgaW5saW5l
VGV4dEJveCkgewpAQCAtMTQxLDggKzE4NSw4IEBAIGJvb2wgVGV4dEJveEl0ZXJhdG9yOjpvcGVy
YXRvcj09KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgaWYgKG1fcGF0
aFZhcmlhbnQuaW5kZXgoKSAhPSBvdGhlci5tX3BhdGhWYXJpYW50LmluZGV4KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc2ltcGxlID0gWyZdKGNvbnN0IFNpbXBsZUxpbmVM
YXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBzaW1wbGVMaW5lSXRlcmF0b3IpIHsKLSAgICAg
ICAgcmV0dXJuIHNpbXBsZUxpbmVJdGVyYXRvciA9PSBXVEY6OmdldDxTaW1wbGVMaW5lTGF5b3V0
OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3I+KG90aGVyLm1fcGF0aFZhcmlhbnQpOworICAgIGF1dG8g
c2ltcGxlID0gWyZdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewor
ICAgICAgICByZXR1cm4gcGF0aC5pdGVyYXRvciA9PSBXVEY6OmdldDxUZXh0Qm94SXRlcmF0b3I6
OlNpbXBsZVBhdGg+KG90aGVyLm1fcGF0aFZhcmlhbnQpLml0ZXJhdG9yOwogICAgIH07CiAKICAg
ICBhdXRvIGNvbXBsZXggPSBbJl0oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkg
ewpAQCAtMTUyLDMyICsxOTYsNDggQEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yPT0o
Y29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwogfQogCi1zdGF0aWMgT3B0aW9u
YWw8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI+IHNpbXBsZUxpbmVSdW5SZXNvbHZlckZv
clRleHQoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKK2Jvb2wgVGV4dEJveEl0ZXJhdG9yOjphdEVu
ZCgpIGNvbnN0CiB7Ci0gICAgaWYgKCF0ZXh0LnNpbXBsZUxpbmVMYXlvdXQoKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXR1cm4gU2ltcGxlTGluZUxheW91dDo6cnVuUmVz
b2x2ZXIoZG93bmNhc3Q8Y29uc3QgUmVuZGVyQmxvY2tGbG93PigqdGV4dC5wYXJlbnQoKSksICp0
ZXh0LnNpbXBsZUxpbmVMYXlvdXQoKSk7CisgICAgYXV0byBzaW1wbGUgPSBbJl0oY29uc3QgVGV4
dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLml0
ZXJhdG9yID09IHBhdGguZW5kOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBbJl0oY29u
c3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgeworICAgICAgICByZXR1cm4gIWlubGlu
ZVRleHRCb3g7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlh
bnQsIHNpbXBsZSwgY29tcGxleCk7CiB9CiAKLXN0YXRpYyBhdXRvIHJhbmdlRm9yVGV4dChjb25z
dCBSZW5kZXJUZXh0JiB0ZXh0LCBPcHRpb25hbDxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZl
cj4mIHNpbXBsZUxpbmVSdW5SZXNvbHZlcikKK1Byb3ZpZGVyOjpQcm92aWRlcigpID0gZGVmYXVs
dDsKK1Byb3ZpZGVyOjp+UHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKK1RleHRCb3hJdGVyYXRvciBQ
cm92aWRlcjo6Zmlyc3RUZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiB7Ci0gICAg
aWYgKHNpbXBsZUxpbmVSdW5SZXNvbHZlcikgewotICAgICAgICBhdXRvIHJhbmdlID0gc2ltcGxl
TGluZVJ1blJlc29sdmVyLT5yYW5nZUZvclJlbmRlcmVyKHRleHQpOwotICAgICAgICByZXR1cm4g
V1RGOjptYWtlSXRlcmF0b3JSYW5nZShUZXh0Qm94SXRlcmF0b3IocmFuZ2UuYmVnaW4oKSksIFRl
eHRCb3hJdGVyYXRvcihyYW5nZS5lbmQoKSkpOworICAgIGlmIChhdXRvKiBzaW1wbGVMaW5lTGF5
b3V0ID0gdGV4dC5zaW1wbGVMaW5lTGF5b3V0KCkpIHsKKyAgICAgICAgYXV0byYgcGFyZW50ID0g
ZG93bmNhc3Q8Y29uc3QgUmVuZGVyQmxvY2tGbG93PigqdGV4dC5wYXJlbnQoKSk7CisgICAgICAg
IGF1dG8mIHJlc29sdmVyID0gbV9zaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXJzLmVuc3VyZSgmcGFy
ZW50LCBbJl0geworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2ltcGxlTGluZUxheW91
dDo6UnVuUmVzb2x2ZXI+KHBhcmVudCwgKnNpbXBsZUxpbmVMYXlvdXQpOworICAgICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CisKKyAgICAgICAgYXV0byByYW5nZSA9IHJlc29sdmVyLT5yYW5nZUZv
clJlbmRlcmVyKHRleHQpOworICAgICAgICByZXR1cm4geyByYW5nZS5iZWdpbigpLCByYW5nZS5l
bmQoKSB9OwogICAgIH0KLSAgICByZXR1cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZShUZXh0Qm94
SXRlcmF0b3IodGV4dC5maXJzdFRleHRCb3goKSksIFRleHRCb3hJdGVyYXRvcihudWxscHRyKSk7
CisKKyAgICByZXR1cm4gVGV4dEJveEl0ZXJhdG9yIHsgdGV4dC5maXJzdFRleHRCb3goKSB9Owog
fQogCi1UZXh0Qm94UmFuZ2U6OlRleHRCb3hSYW5nZShjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQot
ICAgIDogbV9zaW1wbGVMaW5lUnVuUmVzb2x2ZXIoc2ltcGxlTGluZVJ1blJlc29sdmVyRm9yVGV4
dCh0ZXh0KSkKLSAgICAsIG1fcmFuZ2UocmFuZ2VGb3JUZXh0KHRleHQsIG1fc2ltcGxlTGluZVJ1
blJlc29sdmVyKSkKK1RleHRCb3hSYW5nZSBQcm92aWRlcjo6dGV4dEJveFJhbmdlRm9yKGNvbnN0
IFJlbmRlclRleHQmIHRleHQpCiB7CisgICAgcmV0dXJuIHsgZmlyc3RUZXh0Qm94Rm9yKHRleHQp
IH07CiB9CiAKLVRleHRCb3hSYW5nZSB0ZXh0Qm94ZXMoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkK
K1RleHRCb3hJdGVyYXRvciBQcm92aWRlcjo6aXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KGNvbnN0
IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpCiB7Ci0gICAgcmV0dXJuIHsgdGV4dCB9Owor
ICAgIHJldHVybiBUZXh0Qm94SXRlcmF0b3IgeyBpbmxpbmVUZXh0Qm94IH07CiB9CiAKKworCiB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0
SW50ZXJmYWNlVGV4dEJveGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5l
TGF5b3V0SW50ZXJmYWNlVGV4dEJveGVzLmgKaW5kZXggNDY0YzIyYTczZmIuLjFlZjJjODk3NDQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50
ZXJmYWNlVGV4dEJveGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGlu
ZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CiAj
aW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CkBAIC0zNCw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElubGluZVRl
eHRCb3g7CitjbGFzcyBQcm92aWRlcjsKIGNsYXNzIFJlbmRlclRleHQ7CiAKIG5hbWVzcGFjZSBM
aW5lTGF5b3V0SW50ZXJmYWNlIHsKQEAgLTQxLDEyICs0MywxMCBAQCBuYW1lc3BhY2UgTGluZUxh
eW91dEludGVyZmFjZSB7CiBjbGFzcyBUZXh0Qm94Q29udGV4dDsKIGNsYXNzIFRleHRCb3hJdGVy
YXRvcjsKIAorc3RydWN0IEVuZEl0ZXJhdG9yIHsgfTsKKwogY2xhc3MgVGV4dEJveCB7CiBwdWJs
aWM6Ci0gICAgVGV4dEJveChjb25zdCBUZXh0Qm94SXRlcmF0b3ImIGl0ZXJhdG9yKQotICAgICAg
ICA6IG1faXRlcmF0b3IoaXRlcmF0b3IpCi0gICAgeyB9Ci0KICAgICBGbG9hdFJlY3QgcmVjdCgp
IGNvbnN0OwogICAgIEZsb2F0UmVjdCBsb2dpY2FsUmVjdCgpIGNvbnN0OwogCkBAIC01Niw0NSAr
NTYsODMgQEAgcHVibGljOgogCiAgICAgU3RyaW5nVmlldyB0ZXh0KCkgY29uc3Q7CiAKKyAgICAv
LyBUaGVzZSBvZmZzZXRzIGFyZSByZWxhdGl2ZSB0byB0aGUgdGV4dCByZW5kZXJlciAobm90IGZs
b3cpLgorICAgIHVuc2lnbmVkIGxvY2FsU3RhcnRPZmZzZXQoKSBjb25zdDsKKyAgICB1bnNpZ25l
ZCBsb2NhbEVuZE9mZnNldCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Owor
Citwcm90ZWN0ZWQ6CisgICAgVGV4dEJveCgpID0gZGVmYXVsdDsKKyAgICBUZXh0Qm94KGNvbnN0
IFRleHRCb3gmKSA9IGRlZmF1bHQ7CisgICAgVGV4dEJveChUZXh0Qm94JiYpID0gZGVmYXVsdDsK
KyAgICBUZXh0Qm94JiBvcGVyYXRvcj0oY29uc3QgVGV4dEJveCYpID0gZGVmYXVsdDsKKyAgICBU
ZXh0Qm94JiBvcGVyYXRvcj0oVGV4dEJveCYmKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6Ci0gICAg
Y29uc3QgVGV4dEJveEl0ZXJhdG9yJiBtX2l0ZXJhdG9yOworICAgIGNvbnN0IFRleHRCb3hJdGVy
YXRvciYgaXRlcmF0b3IoKSBjb25zdDsKIH07CiAKLWNsYXNzIFRleHRCb3hJdGVyYXRvciB7Citj
bGFzcyBUZXh0Qm94SXRlcmF0b3IgOiBwcml2YXRlIFRleHRCb3ggewogcHVibGljOgotICAgIFRl
eHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVUZXh0Qm94Kik7Ci0gICAgVGV4dEJveEl0ZXJhdG9y
KFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvcik7CisgICAgVGV4dEJveEl0
ZXJhdG9yKCkgOiBtX3BhdGhWYXJpYW50KG51bGxwdHIpIHsgfTsKKyAgICBleHBsaWNpdCBUZXh0
Qm94SXRlcmF0b3IoY29uc3QgSW5saW5lVGV4dEJveCopOworICAgIFRleHRCb3hJdGVyYXRvcihT
aW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6
OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQpOwogCiAgICAgVGV4dEJveEl0ZXJhdG9yJiBvcGVy
YXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0KCk7IH0KIAorICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQorCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFRleHRCb3hJdGVyYXRvciYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQogCi0gICAgVGV4dEJveCBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiB7ICp0aGlz
IH07IH0KKyAgICBib29sIG9wZXJhdG9yPT0oRW5kSXRlcmF0b3IpIGNvbnN0IHsgcmV0dXJuIGF0
RW5kKCk7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oRW5kSXRlcmF0b3IpIGNvbnN0IHsgcmV0dXJu
ICFhdEVuZCgpOyB9CisKKyAgICBjb25zdCBUZXh0Qm94JiBvcGVyYXRvciooKSBjb25zdCB7IHJl
dHVybiAqdGhpczsgfQorICAgIGNvbnN0IFRleHRCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiB0aGlzOyB9CisKKyAgICBib29sIGF0RW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIFRleHRCb3g7CiAKICAgICBUZXh0Qm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4
dCgpOwogCi0gICAgVmFyaWFudDxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0
b3IsIGNvbnN0IElubGluZVRleHRCb3gqPiBtX3BhdGhWYXJpYW50OworICAgIHN0cnVjdCBTaW1w
bGVQYXRoIHsKKyAgICAgICAgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9y
IGl0ZXJhdG9yOworICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0
b3IgZW5kOworICAgIH07CisgICAgVmFyaWFudDxTaW1wbGVQYXRoLCBjb25zdCBJbmxpbmVUZXh0
Qm94Kj4gbV9wYXRoVmFyaWFudDsKIH07CiAKIGNsYXNzIFRleHRCb3hSYW5nZSB7CiBwdWJsaWM6
Ci0gICAgVGV4dEJveFJhbmdlKGNvbnN0IFJlbmRlclRleHQmKTsKKyAgICBUZXh0Qm94UmFuZ2Uo
VGV4dEJveEl0ZXJhdG9yIGJlZ2luKQorICAgICAgICA6IG1fYmVnaW4oYmVnaW4pCisgICAgewor
ICAgIH0KIAotICAgIFRleHRCb3hJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmFu
Z2UuYmVnaW4oKTsgfQotICAgIFRleHRCb3hJdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBt
X3JhbmdlLmVuZCgpOyB9CisgICAgVGV4dEJveEl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9iZWdpbjsgfQorICAgIEVuZEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIHsgfTsg
fQogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBUZXh0Qm94SXRlcmF0b3I7Ci0KLSAgICBP
cHRpb25hbDxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4gbV9zaW1wbGVMaW5lUnVuUmVz
b2x2ZXI7Ci0gICAgV1RGOjpJdGVyYXRvclJhbmdlPFRleHRCb3hJdGVyYXRvcj4gbV9yYW5nZTsK
KyAgICBUZXh0Qm94SXRlcmF0b3IgbV9iZWdpbjsKIH07CiAKLVRleHRCb3hSYW5nZSB0ZXh0Qm94
ZXMoY29uc3QgUmVuZGVyVGV4dCYpOworY2xhc3MgUHJvdmlkZXIgeworcHVibGljOgorICAgIFBy
b3ZpZGVyKCk7CisgICAgflByb3ZpZGVyKCk7CisKKyAgICBUZXh0Qm94SXRlcmF0b3IgZmlyc3RU
ZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRleHQmKTsKKyAgICBUZXh0Qm94UmFuZ2UgdGV4dEJveFJh
bmdlRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKKworICAgIC8vIEZJWE1FOiBSZW1vdmUuCisgICAg
VGV4dEJveEl0ZXJhdG9yIGl0ZXJhdG9yRm9ySW5saW5lVGV4dEJveChjb25zdCBJbmxpbmVUZXh0
Qm94Kik7CisKK3ByaXZhdGU6CisgICAgSGFzaE1hcDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cqLCBz
dGQ6OnVuaXF1ZV9wdHI8U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI+PiBtX3NpbXBsZUxp
bmVMYXlvdXRSZXNvbHZlcnM7Cit9OwogCiB9CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>