<?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>144384</bug_id>
          
          <creation_ts>2015-04-29 04:37:44 -0700</creation_ts>
          <short_desc>[CSS Box Alignment] Unifying alignment data in a single class</short_desc>
          <delta_ts>2015-04-29 17:15:07 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Javier Fernandez">jfernandez</reporter>
          <assigned_to name="Javier Fernandez">jfernandez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>jfernandez</cc>
    
    <cc>rego</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1089960</commentid>
    <comment_count>0</comment_count>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2015-04-29 04:37:44 -0700</bug_when>
    <thetext>The new CSS Box Alignment specification introduces more complex values and syntax for defining alignment properties. Most of the alignment values were just keyword identifiers, but the new syntax allows different combinations of identifiers to determine the alignment behavior (eg. overflow-alignment keyword). 

This bug describes the need of a refactoring of current alignment logic to define one or more classes to store all the alignment fields. This class will replace the unsigned fields in the StyleRareNonInherited class, hence it will increase it sized considerably. We should take that into account when submitting and reviewing patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089965</commentid>
    <comment_count>1</comment_count>
      <attachid>251946</attachid>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2015-04-29 04:56:00 -0700</bug_when>
    <thetext>Created attachment 251946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089996</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-29 08:41:23 -0700</bug_when>
    <thetext>/Volumes/Data/EWS/WebKit/WebKitBuild/Release/WebCore.framework/PrivateHeaders/StyleRareNonInheritedData.h:37:10: fatal error: &apos;StyleSelfAlignmentData.h&apos; file not found

I suspect this is adding a new header file to the Xcode project but not marking it “Private”, which is needed if it’s used outside WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090142</commentid>
    <comment_count>3</comment_count>
      <attachid>251982</attachid>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2015-04-29 13:40:09 -0700</bug_when>
    <thetext>Created attachment 251982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090215</commentid>
    <comment_count>4</comment_count>
      <attachid>251982</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2015-04-29 16:24:33 -0700</bug_when>
    <thetext>Comment on attachment 251982
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090236</commentid>
    <comment_count>5</comment_count>
      <attachid>251982</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-29 17:15:00 -0700</bug_when>
    <thetext>Comment on attachment 251982
Patch

Clearing flags on attachment: 251982

Committed r183591: &lt;http://trac.webkit.org/changeset/183591&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090237</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-29 17:15:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251946</attachid>
            <date>2015-04-29 04:56:00 -0700</date>
            <delta_ts>2015-04-29 13:39:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144384-20150429135431.patch</filename>
            <type>text/plain</type>
            <size>47386</size>
            <attacher name="Javier Fernandez">jfernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBiZmZlZTRmNzBkN2E0
N2MzZjc2OWJmMDZjNjdjNTZjNjhlZTg5Ny4uMzg4MzUwNTVkMzRmMTU2MWEwMzk3MGMwMTU5NTA5
NTU3MzA0Yjk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE1LTA0LTI5ICBKYXZp
ZXIgRmVybmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgQm94
IEFsaWdubWVudF0gVW5pZnlpbmcgYWxpZ25tZW50IGRhdGEgaW4gYSBzaW5nbGUgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDM4NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgQ1NT
IEJveCBBbGlnbm1lbnQgc3BlY2lmaWNhdGlvbiBpbnRyb2R1Y2VzIG1vcmUgY29tcGxleAorICAg
ICAgICB2YWx1ZXMgYW5kIHN5bnRheCBmb3IgZGVmaW5pbmcgYWxpZ25tZW50IHByb3BlcnRpZXMu
IE1vc3Qgb2YgdGhlCisgICAgICAgIGFsaWdubWVudCB2YWx1ZXMgd2VyZSBqdXN0IGtleXdvcmQg
aWRlbnRpZmllcnMsIGJ1dCB0aGUgbmV3IHN5bnRheAorICAgICAgICBhbGxvd3MgZGlmZmVyZW50
IGNvbWJpbmF0aW9ucyBvZiBpZGVudGlmaWVycyB0byBkZXRlcm1pbmUgdGhlCisgICAgICAgIGFs
aWdubWVudCBiZWhhdmlvciAoZWcuIG92ZXJmbG93LWFsaWdubWVudCBrZXl3b3JkKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIHdsbCBoZWxwIHRvIGltcGxlbWVudCBsYXRlciBvdmVyZmxvdyBoYW5k
bGluZyBhbmQKKyAgICAgICAgc3BlY2lhbGx5IENvbnRlbnQgRHN0cmlidXRpb24gYWxpZ25tZW50
LCB0aGUgbW9zdCBjb21wbGV4IGNhc2UgYnkKKyAgICAgICAgZmFyLiBJdCB3aWxsIGJlIG1vcmUg
Y29uc2lzdGVudCBhZ2FpbnN0IHN0eWxlIGNoYW5nZXMgYW5kIHJlcGFpbnQsCisgICAgICAgIHNu
Y2Ugd2Ugd2lsbCBoYXZlIGp1c3Qgb25lIGZpZWxkIHRvIG1vbml0b3JpbmcgZm9yIHZhbHVlCisg
ICAgICAgIG1vZGZpY2F0aW9ucy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJlY2F1c2Ugbm8g
bmV3IGZ1bmN0aW9uYWxpdHkgd2FzIGFkZGVkOyBpdCdzIGp1c3QgYQorICAgICAgICBjb2RlIHJl
ZmFjdG9yaW5nIHdoaWNoIGlzIGp1c3QgZXhwZWN0ZWQgdG8gcGFzcyBjdXJyZW50IHRlc3RzLgor
CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXNvbHZlU2VsZkFsaWdubWVudEF1dG8pOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TmFtZXMuaW46CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9y
RGVmYXVsdEFsaWdubWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0U1ZHQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9TdHlsZUJ1
aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsV2Via2l0TWFza0ltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0TWFza0ltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyOjphcHBs
eUluaGVyaXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5
Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlJbml0aWFsVmFsdWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI6OmFwcGx5VmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9k
aWZpZXI6OmdldFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlCb3JkZXJJbWFnZU1vZGlmaWVyOjpzZXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdExpbmVIZWlnaHQpOiBEZWxldGVk
LgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4dEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpzdHlsZURpZENo
YW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRnVsbFNjcmVlblN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OmFk
anVzdElubmVyU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290Ojp1cGRhdGVTdHls
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNjcmlwdHM6OmZpeEFub255bW91c1N0eWxl
Rm9yU3ViU3VwUGFpcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjpm
aXhBbm9ueW1vdXNTdHlsZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVzb2x2ZUFsaWdubWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVzb2x2ZUp1c3RpZmljYXRpb24pOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9
PSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpjb250ZW50
RGF0YUVxdWl2YWxlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
U2VsZkFsaWdubWVudERhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNlbGZB
bGlnbm1lbnREYXRhOjpTdHlsZVNlbGZBbGlnbm1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlU2VsZkFsaWdubWVudERhdGE6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlU2VsZkFsaWdubWVudERhdGE6OnNldFBvc2l0aW9uVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVNlbGZBbGlnbm1lbnREYXRhOjpzZXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVNlbGZBbGlnbm1lbnREYXRhOjpwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNlbGZBbGlnbm1lbnREYXRhOjpwb3NpdGlvblR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVTZWxmQWxpZ25tZW50RGF0YTo6b3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTZWxmQWxpZ25tZW50RGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVNlbGZBbGlnbm1lbnREYXRhOjpvcGVyYXRvciE9KToKKwogMjAxNS0wNC0yOCAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBNYXZlcmlja3MgRGVi
dWcgYnVpbGQgYWZ0ZXIgcjE4MzQ2Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMzFmZjBhODU4ZmM0OGFiNDQ4NjY5ZWU3
MmNlYmU2NWFiZDE0MDk2Ni4uOWU3Y2FmOGZiMmQ4NGNhOWNmYmZhOWU2MTk4ZDk5MTc3ZWVhY2M1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKQEAgLTE3MjgsNyArMTcyOCw3IEBAIHN0YXRpYyBJdGVtUG9zaXRpb24gcmVzb2x2
ZVNlbGZBbGlnbm1lbnRBdXRvKEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbiwgT3ZlcmZsb3dBbGlnCiAg
ICAgICAgIHJldHVybiBJdGVtUG9zaXRpb25TdGFydDsKIAogICAgIG92ZXJmbG93ID0gcGFyZW50
LT5zdHlsZSgpLmFsaWduSXRlbXNPdmVyZmxvd0FsaWdubWVudCgpOwotICAgIHJldHVybiByZXNv
bHZlQ29udGFpbmVyQWxpZ25tZW50QXV0byhwYXJlbnQtPnN0eWxlKCkuYWxpZ25JdGVtcygpLCBw
YXJlbnQpOworICAgIHJldHVybiByZXNvbHZlQ29udGFpbmVyQWxpZ25tZW50QXV0byhwYXJlbnQt
PnN0eWxlKCkuYWxpZ25JdGVtc1Bvc2l0aW9uKCksIHBhcmVudCk7CiB9CiAKIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBj
b25zdApAQCAtMjE4NiwxMCArMjE4NiwxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25Db250ZW50OgogICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5hbGlnbkNvbnRlbnQoKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlBbGlnbkl0ZW1zOgotICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9y
SXRlbVBvc2l0aW9uV2l0aE92ZXJmbG93QWxpZ25tZW50KHJlc29sdmVDb250YWluZXJBbGlnbm1l
bnRBdXRvKHN0eWxlLT5hbGlnbkl0ZW1zKCksIHJlbmRlcmVyKSwgc3R5bGUtPmFsaWduSXRlbXNP
dmVyZmxvd0FsaWdubWVudCgpLCBOb25MZWdhY3lQb3NpdGlvbik7CisgICAgICAgICAgICByZXR1
cm4gdmFsdWVGb3JJdGVtUG9zaXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQocmVzb2x2ZUNvbnRh
aW5lckFsaWdubWVudEF1dG8oc3R5bGUtPmFsaWduSXRlbXNQb3NpdGlvbigpLCByZW5kZXJlciks
IHN0eWxlLT5hbGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoKSwgTm9uTGVnYWN5UG9zaXRpb24p
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QWxpZ25TZWxmOiB7CiAgICAgICAgICAgICBPdmVy
Zmxvd0FsaWdubWVudCBvdmVyZmxvdyA9IHN0eWxlLT5hbGlnblNlbGZPdmVyZmxvd0FsaWdubWVu
dCgpOwotICAgICAgICAgICAgSXRlbVBvc2l0aW9uIGFsaWduU2VsZiA9IHJlc29sdmVTZWxmQWxp
Z25tZW50QXV0byhzdHlsZS0+YWxpZ25TZWxmKCksIG92ZXJmbG93LCByZW5kZXJlcik7CisgICAg
ICAgICAgICBJdGVtUG9zaXRpb24gYWxpZ25TZWxmID0gcmVzb2x2ZVNlbGZBbGlnbm1lbnRBdXRv
KHN0eWxlLT5hbGlnblNlbGZQb3NpdGlvbigpLCBvdmVyZmxvdywgcmVuZGVyZXIpOwogICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlRm9ySXRlbVBvc2l0aW9uV2l0aE92ZXJmbG93QWxpZ25tZW50KGFs
aWduU2VsZiwgb3ZlcmZsb3csIE5vbkxlZ2FjeVBvc2l0aW9uKTsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5RmxleDoKQEAgLTIyMDksMTAgKzIyMDksMTAgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUp1c3RpZnlDb250ZW50Ogog
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5qdXN0
aWZ5Q29udGVudCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUp1c3RpZnlJdGVtczoKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZUZvckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0FsaWdubWVu
dChyZXNvbHZlQ29udGFpbmVyQWxpZ25tZW50QXV0byhzdHlsZS0+anVzdGlmeUl0ZW1zKCksIHJl
bmRlcmVyKSwgc3R5bGUtPmp1c3RpZnlJdGVtc092ZXJmbG93QWxpZ25tZW50KCksIHN0eWxlLT5q
dXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JJ
dGVtUG9zaXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQocmVzb2x2ZUNvbnRhaW5lckFsaWdubWVu
dEF1dG8oc3R5bGUtPmp1c3RpZnlJdGVtc1Bvc2l0aW9uKCksIHJlbmRlcmVyKSwgc3R5bGUtPmp1
c3RpZnlJdGVtc092ZXJmbG93QWxpZ25tZW50KCksIHN0eWxlLT5qdXN0aWZ5SXRlbXNQb3NpdGlv
blR5cGUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlKdXN0aWZ5U2VsZjogewogICAgICAg
ICAgICAgT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cgPSBzdHlsZS0+anVzdGlmeVNlbGZPdmVy
Zmxvd0FsaWdubWVudCgpOwotICAgICAgICAgICAgSXRlbVBvc2l0aW9uIGp1c3RpZnlTZWxmID0g
cmVzb2x2ZVNlbGZBbGlnbm1lbnRBdXRvKHN0eWxlLT5qdXN0aWZ5U2VsZigpLCBvdmVyZmxvdywg
cmVuZGVyZXIpOworICAgICAgICAgICAgSXRlbVBvc2l0aW9uIGp1c3RpZnlTZWxmID0gcmVzb2x2
ZVNlbGZBbGlnbm1lbnRBdXRvKHN0eWxlLT5qdXN0aWZ5U2VsZlBvc2l0aW9uKCksIG92ZXJmbG93
LCByZW5kZXJlcik7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JJdGVtUG9zaXRpb25XaXRo
T3ZlcmZsb3dBbGlnbm1lbnQoanVzdGlmeVNlbGYsIG92ZXJmbG93LCBOb25MZWdhY3lQb3NpdGlv
bik7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU9yZGVyOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgppbmRleCAwNzQyZmRjOTIzODcyOTYwZGJhMzdlZDVl
NWQxNTQ1M2E3NGVhYzgxLi43Y2Y1ZjBkZjYyOTEzYTdkY2ZhMjBlMTk2MzA3ZmExM2UxNWZhOTgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtNDU1LDkgKzQ1NSw5
IEBAIGlzb2xhdGlvbgogLXdlYmtpdC1maWx0ZXIgW0NvbmRpdGlvbmFsQ29udmVydGVyPUZpbHRl
ck9wZXJhdGlvbnNdCiBhbGlnbi1jb250ZW50CiAtd2Via2l0LWFsaWduLWNvbnRlbnQgPSBhbGln
bi1jb250ZW50Ci1hbGlnbi1pdGVtcyBbQ3VzdG9tPUFsbF0KK2FsaWduLWl0ZW1zIFtJbml0aWFs
PWluaXRpYWxTZWxmQWxpZ25tZW50LCBDb252ZXJ0ZXI9U2VsZk9yRGVmYXVsdEFsaWdubWVudERh
dGFdCiAtd2Via2l0LWFsaWduLWl0ZW1zID0gYWxpZ24taXRlbXMKLWFsaWduLXNlbGYgW0N1c3Rv
bT1BbGxdCithbGlnbi1zZWxmIFtJbml0aWFsPWluaXRpYWxTZWxmQWxpZ25tZW50LCBDb252ZXJ0
ZXI9U2VsZk9yRGVmYXVsdEFsaWdubWVudERhdGFdCiAtd2Via2l0LWFsaWduLXNlbGYgPSBhbGln
bi1zZWxmCiBmbGV4IFtMb25naGFuZHM9ZmxleC1ncm93fGZsZXgtc2hyaW5rfGZsZXgtYmFzaXNd
CiAtd2Via2l0LWZsZXggPSBmbGV4CkBAIC00NzgsOSArNDc4LDkgQEAganVzdGlmeS1jb250ZW50
CiAjaWYgZGVmaW5lZChFTkFCTEVfRklMVEVSU19MRVZFTF8yKSAmJiBFTkFCTEVfRklMVEVSU19M
RVZFTF8yCiAtd2Via2l0LWJhY2tkcm9wLWZpbHRlciBbQ29uZGl0aW9uYWxDb252ZXJ0ZXI9Rmls
dGVyT3BlcmF0aW9uc10KICNlbmRpZgotanVzdGlmeS1zZWxmIFtDdXN0b209QWxsXQoranVzdGlm
eS1zZWxmIFtJbml0aWFsPWluaXRpYWxTZWxmQWxpZ25tZW50LCBDb252ZXJ0ZXI9U2VsZk9yRGVm
YXVsdEFsaWdubWVudERhdGFdCiAtd2Via2l0LWZvbnQtc2l6ZS1kZWx0YSBbU2tpcEJ1aWxkZXJd
Ci1qdXN0aWZ5LWl0ZW1zIFtDdXN0b209QWxsXQoranVzdGlmeS1pdGVtcyBbSW5pdGlhbD1pbml0
aWFsU2VsZkFsaWdubWVudCwgQ29udmVydGVyPVNlbGZPckRlZmF1bHRBbGlnbm1lbnREYXRhXQog
LXdlYmtpdC1qdXN0aWZ5LWl0ZW1zID0ganVzdGlmeS1pdGVtcwogI2lmIGRlZmluZWQoRU5BQkxF
X0NTU19HUklEX0xBWU9VVCkgJiYgRU5BQkxFX0NTU19HUklEX0xBWU9VVAogLXdlYmtpdC1ncmlk
IFtMb25naGFuZHM9LXdlYmtpdC1ncmlkLXRlbXBsYXRlLWNvbHVtbnN8LXdlYmtpdC1ncmlkLXRl
bXBsYXRlLXJvd3N8LXdlYmtpdC1ncmlkLXRlbXBsYXRlLWFyZWFzfC13ZWJraXQtZ3JpZC1hdXRv
LWZsb3d8LXdlYmtpdC1ncmlkLWF1dG8tY29sdW1uc3wtd2Via2l0LWdyaWQtYXV0by1yb3dzXQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDg1MTVjOWI0
YTFhYzFkYTkxNjI4YTFhYWRjY2Q4MmE1MDZlOTQ1MDUuLjVkNDA2NmFiZmIzY2ZlMmQyYjgyZTNk
ZjJhNTBjNmMxMjZmYWI4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29u
dmVydGVyLmgKQEAgLTEyMSw2ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGZsb2F0IGNv
bnZlcnRPcGFjaXR5KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBTdHJp
bmcgY29udmVydFNWR1VSSVJlZmVyZW5jZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAg
ICBzdGF0aWMgQ29sb3IgY29udmVydFNWR0NvbG9yKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYp
OworICAgIHN0YXRpYyBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGNvbnZlcnRTZWxmT3JEZWZhdWx0
QWxpZ25tZW50RGF0YShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgRUds
eXBoT3JpZW50YXRpb24gY29udmVydEdseXBoT3JpZW50YXRpb24oU3R5bGVSZXNvbHZlciYsIENT
U1ZhbHVlJik7CiAgICAgc3RhdGljIEVHbHlwaE9yaWVudGF0aW9uIGNvbnZlcnRHbHlwaE9yaWVu
dGF0aW9uT3JBdXRvKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBPcHRp
b25hbDxMZW5ndGg+IGNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYs
IGZsb2F0IG11bHRpcGxpZXIgPSAxLmYpOwpAQCAtMTE2OSw2ICsxMTcwLDIzIEBAIGlubGluZSBD
b2xvciBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdDb2xvcihTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyCiAgICAgcmV0dXJuIHN2Z0NvbG9yLmNvbG9yVHlwZSgpID09IFNWR0Nv
bG9yOjpTVkdfQ09MT1JUWVBFX0NVUlJFTlRDT0xPUiA/IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
Y29sb3IoKSA6IHN2Z0NvbG9yLmNvbG9yKCk7CiB9CiAKK2lubGluZSBTdHlsZVNlbGZBbGlnbm1l
bnREYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNlbGZPckRlZmF1bHRBbGlnbm1l
bnREYXRhKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCit7CisgICAgU3R5bGVTZWxm
QWxpZ25tZW50RGF0YSBhbGlnbm1lbnREYXRhID0gUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxp
Z25tZW50KCk7CisgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpOworICAgIGlmIChQYWlyKiBwYWlyVmFsdWUgPSBwcmltaXRpdmVWYWx1
ZS5nZXRQYWlyVmFsdWUoKSkgeworICAgICAgICBpZiAocGFpclZhbHVlLT5maXJzdCgpLT5nZXRW
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWdhY3kpIHsKKyAgICAgICAgICAgIGFsaWdubWVudERhdGEu
c2V0UG9zaXRpb25UeXBlKExlZ2FjeVBvc2l0aW9uKTsKKyAgICAgICAgICAgIGFsaWdubWVudERh
dGEuc2V0UG9zaXRpb24oKnBhaXJWYWx1ZS0+c2Vjb25kKCkpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbigqcGFpclZhbHVlLT5maXJzdCgp
KTsKKyAgICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0T3ZlcmZsb3coKnBhaXJWYWx1ZS0+c2Vj
b25kKCkpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIGFsaWdubWVudERhdGEuc2V0
UG9zaXRpb24ocHJpbWl0aXZlVmFsdWUpOworICAgIHJldHVybiBhbGlnbm1lbnREYXRhOworfQor
CiBpbmxpbmUgRUdseXBoT3JpZW50YXRpb24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
R2x5cGhPcmllbnRhdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGZsb2F0IGFuZ2xlID0gZmFic2YoZm1vZGYoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS5nZXRGbG9hdFZhbHVlKCksIDM2MC4wZikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckN1c3RvbS5oCmluZGV4IGMwN2JhN2QxNzQwYWI3MjEzYjkzNTJiNzNkYzY0OWI5YTgyYWIy
YjQuLmE1Y2RjMGE5YTZhZTc2YWY4MmQ2NDY3YzkzOWZkZWJkMWZjMDZmOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTEwMywxMCArMTAzLDYgQEAgcHVibGlj
OgogICAgIERFQ0xBUkVfUFJPUEVSVFlfQ1VTVE9NX0hBTkRMRVJTKFdlYmtpdFN2Z1NoYWRvdyk7
CiAgICAgREVDTEFSRV9QUk9QRVJUWV9DVVNUT01fSEFORExFUlMoV2Via2l0VGV4dEVtcGhhc2lz
U3R5bGUpOwogICAgIERFQ0xBUkVfUFJPUEVSVFlfQ1VTVE9NX0hBTkRMRVJTKFpvb20pOwotICAg
IERFQ0xBUkVfUFJPUEVSVFlfQ1VTVE9NX0hBTkRMRVJTKEp1c3RpZnlTZWxmKTsKLSAgICBERUNM
QVJFX1BST1BFUlRZX0NVU1RPTV9IQU5ETEVSUyhKdXN0aWZ5SXRlbXMpOwotICAgIERFQ0xBUkVf
UFJPUEVSVFlfQ1VTVE9NX0hBTkRMRVJTKEFsaWduSXRlbXMpOwotICAgIERFQ0xBUkVfUFJPUEVS
VFlfQ1VTVE9NX0hBTkRMRVJTKEFsaWduU2VsZik7CiAKICAgICAvLyBDdXN0b20gaGFuZGxpbmcg
b2YgaW5pdGlhbCArIGluaGVyaXQgdmFsdWUgc2V0dGluZyBvbmx5LgogICAgIHN0YXRpYyB2b2lk
IGFwcGx5SW5pdGlhbFdlYmtpdE1hc2tJbWFnZShTdHlsZVJlc29sdmVyJikgeyB9CkBAIC01MDgs
MTExICs1MDQsNiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVU
ZXh0SW5kZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZQogI2VuZGlmCiB9CiAKLWlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0QWxpZ25TZWxmKFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIpCi17Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRB
bGlnblNlbGYoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5hbGlnblNlbGYoKSk7Ci0gICAg
c3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRBbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudChzdHls
ZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmFsaWduU2VsZk92ZXJmbG93QWxpZ25tZW50KCkpOwot
fQotCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEFsaWduU2Vs
ZihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQotewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c2V0QWxpZ25TZWxmKFJlbmRlclN0eWxlOjppbml0aWFsQWxpZ25TZWxmKCkpOwotICAg
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0QWxpZ25TZWxmT3ZlcmZsb3dBbGlnbm1lbnQoUmVu
ZGVyU3R5bGU6OmluaXRpYWxBbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCgpKTsKLX0KLQotaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQWxpZ25TZWxmKFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKLXsKLSAgICBhdXRvJiBwcmlt
aXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYg
KFBhaXIqIHBhaXJWYWx1ZSA9IHByaW1pdGl2ZVZhbHVlLmdldFBhaXJWYWx1ZSgpKSB7Ci0gICAg
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0QWxpZ25TZWxmKCpwYWlyVmFsdWUtPmZpcnN0
KCkpOwotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEFsaWduU2VsZk92ZXJmbG93
QWxpZ25tZW50KCpwYWlyVmFsdWUtPnNlY29uZCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEFsaWduU2VsZihwcmltaXRpdmVWYWx1ZSk7Ci0gICAg
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0QWxpZ25TZWxmT3ZlcmZsb3dBbGlnbm1lbnQo
UmVuZGVyU3R5bGU6OmluaXRpYWxBbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCgpKTsKLSAgICB9
Ci19Ci0KLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0QWxpZ25J
dGVtcyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQotewotICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0QWxpZ25JdGVtcyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmFsaWdu
SXRlbXMoKSk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRBbGlnbkl0ZW1zT3ZlcmZs
b3dBbGlnbm1lbnQoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5hbGlnbkl0ZW1zT3ZlcmZs
b3dBbGlnbm1lbnQoKSk7Ci19Ci0KLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsQWxpZ25JdGVtcyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQotewotICAg
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0QWxpZ25JdGVtcyhSZW5kZXJTdHlsZTo6aW5pdGlh
bEFsaWduSXRlbXMoKSk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRBbGlnbkl0ZW1z
T3ZlcmZsb3dBbGlnbm1lbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxBbGlnbkl0ZW1zT3ZlcmZsb3dB
bGlnbm1lbnQoKSk7Ci19Ci0KLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUFsaWduSXRlbXMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZh
bHVlKQotewotICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKTsKLSAgICBpZiAoUGFpciogcGFpclZhbHVlID0gcHJpbWl0aXZlVmFsdWUu
Z2V0UGFpclZhbHVlKCkpIHsKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRBbGln
bkl0ZW1zKCpwYWlyVmFsdWUtPmZpcnN0KCkpOwotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldEFsaWduSXRlbXNPdmVyZmxvd0FsaWdubWVudCgqcGFpclZhbHVlLT5zZWNvbmQoKSk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRBbGlnbkl0
ZW1zKHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRB
bGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxBbGlnbkl0ZW1z
T3ZlcmZsb3dBbGlnbm1lbnQoKSk7Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5oZXJpdEp1c3RpZnlTZWxmKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIpCi17Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRKdXN0aWZ5U2VsZihzdHls
ZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmp1c3RpZnlTZWxmKCkpOwotICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0SnVzdGlmeVNlbGZPdmVyZmxvd0FsaWdubWVudChzdHlsZVJlc29sdmVy
LnBhcmVudFN0eWxlKCktPmp1c3RpZnlTZWxmT3ZlcmZsb3dBbGlnbm1lbnQoKSk7Ci19Ci0KLWlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsSnVzdGlmeVNlbGYoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKLXsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PnNldEp1c3RpZnlTZWxmKFJlbmRlclN0eWxlOjppbml0aWFsSnVzdGlmeVNlbGYoKSk7Ci0gICAg
c3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRKdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KFJl
bmRlclN0eWxlOjppbml0aWFsSnVzdGlmeVNlbGZPdmVyZmxvd0FsaWdubWVudCgpKTsKLX0KLQot
aW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlSnVzdGlmeVNlbGYoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQotewotICAgIGF1dG8m
IHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAg
ICBpZiAoUGFpciogcGFpclZhbHVlID0gcHJpbWl0aXZlVmFsdWUuZ2V0UGFpclZhbHVlKCkpIHsK
LSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRKdXN0aWZ5U2VsZigqcGFpclZhbHVl
LT5maXJzdCgpKTsKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRKdXN0aWZ5U2Vs
Zk92ZXJmbG93QWxpZ25tZW50KCpwYWlyVmFsdWUtPnNlY29uZCgpKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEp1c3RpZnlTZWxmKHByaW1pdGl2ZVZh
bHVlKTsKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRKdXN0aWZ5U2VsZk92ZXJm
bG93QWxpZ25tZW50KFJlbmRlclN0eWxlOjppbml0aWFsSnVzdGlmeVNlbGZPdmVyZmxvd0FsaWdu
bWVudCgpKTsKLSAgICB9Ci19Ci0KLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbmhlcml0SnVzdGlmeUl0ZW1zKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCi17Ci0g
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRKdXN0aWZ5SXRlbXMoc3R5bGVSZXNvbHZlci5w
YXJlbnRTdHlsZSgpLT5qdXN0aWZ5SXRlbXMoKSk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT5zZXRKdXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudChzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCktPmp1c3RpZnlJdGVtc092ZXJmbG93QWxpZ25tZW50KCkpOwotICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0SnVzdGlmeUl0ZW1zUG9zaXRpb25UeXBlKHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+anVzdGlmeUl0ZW1zUG9zaXRpb25UeXBlKCkpOwotfQotCi1pbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5pdGlhbEp1c3RpZnlJdGVtcyhTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyKQotewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0SnVz
dGlmeUl0ZW1zKFJlbmRlclN0eWxlOjppbml0aWFsSnVzdGlmeUl0ZW1zKCkpOwotICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0SnVzdGlmeUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoUmVuZGVy
U3R5bGU6OmluaXRpYWxKdXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudCgpKTsKLSAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZShSZW5kZXJTdHls
ZTo6aW5pdGlhbEp1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZSgpKTsKLX0KLQotaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlSnVzdGlmeUl0ZW1zKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKLXsKLSAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldEp1c3RpZnlJdGVtcyhSZW5kZXJTdHlsZTo6aW5pdGlhbEp1c3RpZnlJdGVtcygp
KTsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEp1c3RpZnlJdGVtc092ZXJmbG93QWxp
Z25tZW50KFJlbmRlclN0eWxlOjppbml0aWFsSnVzdGlmeUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQo
KSk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRKdXN0aWZ5SXRlbXNQb3NpdGlvblR5
cGUoUmVuZGVyU3R5bGU6OmluaXRpYWxKdXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoKSk7Ci0KLSAg
ICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSk7Ci0gICAgaWYgKFBhaXIqIHBhaXJWYWx1ZSA9IHByaW1pdGl2ZVZhbHVlLmdldFBhaXJWYWx1
ZSgpKSB7Ci0gICAgICAgIGlmIChwYWlyVmFsdWUtPmZpcnN0KCktPmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUxlZ2FjeSkgewotICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRK
dXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoTGVnYWN5UG9zaXRpb24pOwotICAgICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRKdXN0aWZ5SXRlbXMoKnBhaXJWYWx1ZS0+c2Vjb25kKCkp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRKdXN0aWZ5SXRlbXMoKnBhaXJWYWx1ZS0+Zmlyc3QoKSk7Ci0gICAgICAgICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldEp1c3RpZnlJdGVtc092ZXJmbG93QWxpZ25tZW50KCpwYWlyVmFs
dWUtPnNlY29uZCgpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldEp1c3RpZnlJdGVtcyhwcmltaXRpdmVWYWx1ZSk7Ci19Ci0KIGVudW0g
Qm9yZGVySW1hZ2VUeXBlIHsgQm9yZGVySW1hZ2UsIFdlYmtpdE1hc2tCb3hJbWFnZSB9OwogZW51
bSBCb3JkZXJJbWFnZU1vZGlmaWVyVHlwZSB7IE91dHNldCwgUmVwZWF0LCBTbGljZSwgV2lkdGgg
fTsKIHRlbXBsYXRlIDxCb3JkZXJJbWFnZVR5cGUgdHlwZSwgQm9yZGVySW1hZ2VNb2RpZmllclR5
cGUgbW9kaWZpZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggMGViNTM2
ZjhlZmE1MmI3MmMyZjZjY2E2MzQ3YmFhMzlkYzQ1NTc0ZS4uNjY3ZTA3ZDEwMDI3OGNkZGQyNWU0
MDk2MjA4ZjkwN2EzODlhZjU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApA
QCAtMTQzNywxMCArMTQzNyw4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5
bGUoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcGFyCiAKICAgICAvLyBJ
ZiB0aGUgaW5oZXJpdGVkIHZhbHVlIG9mIGp1c3RpZnktaXRlbXMgaW5jbHVkZXMgdGhlIGxlZ2Fj
eSBrZXl3b3JkLCAnYXV0bycKICAgICAvLyBjb21wdXRlcyB0byB0aGUgdGhlIGluaGVyaXRlZCB2
YWx1ZS4KLSAgICBpZiAocGFyZW50U3R5bGUuanVzdGlmeUl0ZW1zUG9zaXRpb25UeXBlKCkgPT0g
TGVnYWN5UG9zaXRpb24gJiYgc3R5bGUuanVzdGlmeUl0ZW1zKCkgPT0gSXRlbVBvc2l0aW9uQXV0
bykgeworICAgIGlmIChwYXJlbnRTdHlsZS5qdXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoKSA9PSBM
ZWdhY3lQb3NpdGlvbiAmJiBzdHlsZS5qdXN0aWZ5SXRlbXNQb3NpdGlvbigpID09IEl0ZW1Qb3Np
dGlvbkF1dG8pCiAgICAgICAgIHN0eWxlLnNldEp1c3RpZnlJdGVtcyhwYXJlbnRTdHlsZS5qdXN0
aWZ5SXRlbXMoKSk7Ci0gICAgICAgIHN0eWxlLnNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZShw
YXJlbnRTdHlsZS5qdXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoKSk7Ci0gICAgfQogfQogCiBib29s
IFN0eWxlUmVzb2x2ZXI6OmNoZWNrUmVnaW9uU3R5bGUoRWxlbWVudCogcmVnaW9uRWxlbWVudCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCmluZGV4IDRkN2Mx
Y2E4NmFlY2UxYmUxNDMzOWRiYjg4ZmVjZGIyNGUzNTcwYTkuLjE3NTk0ZDE0ZWRjNWFmM2Y4ZjUz
MTg2NGUyMDk4Zjc5OGRiZmYxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9N
YXRoTUxUZXh0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRl
eHRFbGVtZW50LmNwcApAQCAtODgsNyArODgsNyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
TWF0aE1MVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bAog
CiAgICAgLy8gRklYTUU6IHdoeSBkbyB3ZSBoYXZlIHRvIHNldCB0aGUgYWxpZ25tZW50IGhlcmUg
PyBJdCBzZWVtcyBuZWVkZWQgdG8gbWFrZSB0aGUKICAgICAvLyBzdHlsZS1jaGFuZ2VkLmh0bXQg
dGVzdCB0byBwYXNzLCBzaW5jZSBtYXRobWwgcmVuZGVycyBleHBlY3QgU3RyZXRjaCBhcyBkZWZh
dWx0LgotICAgIHN0eWxlLmdldCgpLnNldEFsaWduSXRlbXMoSXRlbVBvc2l0aW9uU3RyZXRjaCk7
CisgICAgc3R5bGUuZ2V0KCkuc2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvblN0cmV0
Y2gpOwogCiAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFRva2VuPigqdGhp
cywgV1RGOjptb3ZlKHN0eWxlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94LmNwcAppbmRleCAxNjUwYTljOGZkMjc2MjgyZWU1NTVlYTgyNWY5Y2Vk
OGY2NTNlYjQyLi44NDllNmUyNTZjYmJiZmUzM2M2NjIyODdlYWJiNGYwYzUxYzI4YWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTIy
OCw3ICsyMjgsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqCiB7CiAgICAgUmVuZGVyQmxvY2s6
OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKIAotICAgIGlmIChvbGRTdHlsZSAmJiAo
b2xkU3R5bGUtPmFsaWduSXRlbXMoKSA9PSBJdGVtUG9zaXRpb25TdHJldGNoIHx8IG9sZFN0eWxl
LT5hbGlnbkl0ZW1zKCkgPT0gSXRlbVBvc2l0aW9uQXV0bykgJiYgZGlmZiA9PSBTdHlsZURpZmZl
cmVuY2VMYXlvdXQpIHsKKyAgICBpZiAob2xkU3R5bGUgJiYgKG9sZFN0eWxlLT5hbGlnbkl0ZW1z
UG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25TdHJldGNoIHx8IG9sZFN0eWxlLT5hbGlnbkl0ZW1z
UG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25BdXRvKSAmJiBkaWZmID09IFN0eWxlRGlmZmVyZW5j
ZUxheW91dCkgewogICAgICAgICAvLyBGbGV4IGl0ZW1zIHRoYXQgd2VyZSBwcmV2aW91c2x5IHN0
cmV0Y2hpbmcgbmVlZCB0byBiZSByZWxheWVkIG91dCBzbyB3ZSBjYW4gY29tcHV0ZSBuZXcgYXZh
aWxhYmxlIGNyb3NzIGF4aXMgc3BhY2UuCiAgICAgICAgIC8vIFRoaXMgaXMgb25seSBuZWNlc3Nh
cnkgZm9yIHN0cmV0Y2hpbmcgc2luY2Ugb3RoZXIgYWxpZ25tZW50IHZhbHVlcyBkb24ndCBjaGFu
Z2UgdGhlIHNpemUgb2YgdGhlIGJveC4KICAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0g
Zmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCmluZGV4
IGZkNWViYTg5MmQ4ZTJkODkyZTBiM2Q2OGM1Y2M5NGE2MDlkYmFkMjcuLjg5MTA4N2M1Y2UyOTRk
ODBkOGFmNDE4OGVkNGJiZWI2MDYxYTUxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIFJlZjxSZW5k
ZXJTdHlsZT4gY3JlYXRlRnVsbFNjcmVlblN0eWxlKCkKIAogICAgIGZ1bGxzY3JlZW5TdHlsZS5n
ZXQoKS5zZXREaXNwbGF5KEZMRVgpOwogICAgIGZ1bGxzY3JlZW5TdHlsZS5nZXQoKS5zZXRKdXN0
aWZ5Q29udGVudChKdXN0aWZ5Q2VudGVyKTsKLSAgICBmdWxsc2NyZWVuU3R5bGUuZ2V0KCkuc2V0
QWxpZ25JdGVtcyhJdGVtUG9zaXRpb25DZW50ZXIpOworICAgIGZ1bGxzY3JlZW5TdHlsZS5nZXQo
KS5zZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uQ2VudGVyKTsKICAgICBmdWxsc2Ny
ZWVuU3R5bGUuZ2V0KCkuc2V0RmxleERpcmVjdGlvbihGbG93Q29sdW1uKTsKICAgICAKICAgICBm
dWxsc2NyZWVuU3R5bGUuZ2V0KCkuc2V0UG9zaXRpb24oRml4ZWRQb3NpdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAppbmRleCBkZGJmMDUwNGRiMDU4
NzUwNmU1N2EzNTg2MzkzNjNiNTk2MWI5YTllLi5kYmU3YjFiYWI0MzdkM2ZmNDcxMzMwYTI4NWVl
N2U2ZDM0Y2JkYTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5jcHAKQEAgLTExOCwxMCArMTE4LDEwIEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmFkanVzdElu
bmVyU3R5bGUoKQogICAgIC8vIFVzZSBtYXJnaW46YXV0byBpbnN0ZWFkIG9mIGFsaWduLWl0ZW1z
OmNlbnRlciB0byBnZXQgc2FmZSBjZW50ZXJpbmcsIGkuZS4KICAgICAvLyB3aGVuIHRoZSBjb250
ZW50IG92ZXJmbG93cywgdHJlYXQgaXQgdGhlIHNhbWUgYXMgYWxpZ24taXRlbXM6IGZsZXgtc3Rh
cnQuCiAgICAgLy8gQnV0IHdlIG9ubHkgZG8gdGhhdCBmb3IgdGhlIGNhc2VzIHdoZXJlIGh0bWwu
Y3NzIHdvdWxkIG90aGVyd2lzZSB1c2UgY2VudGVyLgotICAgIGlmIChzdHlsZSgpLmFsaWduSXRl
bXMoKSA9PSBJdGVtUG9zaXRpb25DZW50ZXIpIHsKKyAgICBpZiAoc3R5bGUoKS5hbGlnbkl0ZW1z
UG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25DZW50ZXIpIHsKICAgICAgICAgaW5uZXJTdHlsZS5z
ZXRNYXJnaW5Ub3AoTGVuZ3RoKCkpOwogICAgICAgICBpbm5lclN0eWxlLnNldE1hcmdpbkJvdHRv
bShMZW5ndGgoKSk7Ci0gICAgICAgIGlubmVyU3R5bGUuc2V0QWxpZ25TZWxmKEl0ZW1Qb3NpdGlv
bkZsZXhTdGFydCk7CisgICAgICAgIGlubmVyU3R5bGUuc2V0QWxpZ25TZWxmUG9zaXRpb24oSXRl
bVBvc2l0aW9uRmxleFN0YXJ0KTsKICAgICB9CiAKICAgICBpbm5lclN0eWxlLnNldFBhZGRpbmdM
ZWZ0KExlbmd0aCh0aGVtZSgpLnBvcHVwSW50ZXJuYWxQYWRkaW5nTGVmdChzdHlsZSgpKSwgRml4
ZWQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFJvb3QuY3BwCmluZGV4IDNiZmM2OGRjODhjNTE3NzM3OWQ1ZDkxZmUxZjQyMjU0MjI4Mjgw
N2UuLmRjOGZiNmJiNmZjZjQ0NDhmMGFhOGNiY2VhNjJiMWY2NTIyYjg0MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcApA
QCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6dXBkYXRlU3R5bGUoKQog
ICAgIGF1dG8gYmFzZSA9IGJhc2VXcmFwcGVyKCk7CiAgICAgYXV0byBiYXNlU3R5bGUgPSBSZW5k
ZXJTdHlsZTo6Y3JlYXRlQW5vbnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUoKSwgRkxFWCk7
CiAgICAgYmFzZVN0eWxlLmdldCgpLnNldE1hcmdpblRvcChMZW5ndGgoMCwgRml4ZWQpKTsgLy8g
VGhpcyB3aWxsIGJlIHVwZGF0ZWQgaW4gUmVuZGVyTWF0aE1MUm9vdDo6bGF5b3V0KCkuCi0gICAg
YmFzZVN0eWxlLmdldCgpLnNldEFsaWduSXRlbXMoSXRlbVBvc2l0aW9uQmFzZWxpbmUpOworICAg
IGJhc2VTdHlsZS5nZXQoKS5zZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uQmFzZWxp
bmUpOwogICAgIGJhc2UtPnNldFN0eWxlKFdURjo6bW92ZShiYXNlU3R5bGUpKTsKICAgICBiYXNl
LT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKIApAQCAtMjQ0LDcgKzI0NCw3
IEBAIHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6dXBkYXRlU3R5bGUoKQogICAgICAgICBpbmRleFN0
eWxlLmdldCgpLnNldE1hcmdpblRvcChMZW5ndGgoMCwgRml4ZWQpKTsgLy8gVGhpcyB3aWxsIGJl
IHVwZGF0ZWQgaW4gUmVuZGVyTWF0aE1MUm9vdDo6bGF5b3V0KCkuCiAgICAgICAgIGluZGV4U3R5
bGUuZ2V0KCkuc2V0TWFyZ2luU3RhcnQoTGVuZ3RoKGtlcm5CZWZvcmVEZWdyZWUsIEZpeGVkKSk7
CiAgICAgICAgIGluZGV4U3R5bGUuZ2V0KCkuc2V0TWFyZ2luRW5kKExlbmd0aChrZXJuQWZ0ZXJE
ZWdyZWUsIEZpeGVkKSk7Ci0gICAgICAgIGluZGV4U3R5bGUuZ2V0KCkuc2V0QWxpZ25JdGVtcyhJ
dGVtUG9zaXRpb25CYXNlbGluZSk7CisgICAgICAgIGluZGV4U3R5bGUuZ2V0KCkuc2V0QWxpZ25J
dGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbkJhc2VsaW5lKTsKICAgICAgICAgaW5kZXgtPnNldFN0
eWxlKFdURjo6bW92ZShpbmRleFN0eWxlKSk7CiAgICAgICAgIGluZGV4LT5zZXROZWVkc0xheW91
dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAppbmRleCBkOGMzYmJk
ZmYxYmY0Mzk1ZjdmNTJjZGU4N2I3MDU1ODQ4YjFjODFmLi40MTYxZTQ2MTYwMjhiNDBiMmE1MTM1
YmE5ZWRlYjVmOGJkMzgyZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2
b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OmZpeEFub255bW91c1N0eWxlRm9yU3ViU3VwUGFpcihS
ZW5kZXJPYmplY3QqIHN1YlN1cFBhaQogICAgIC8vIFRoZSBNYXRoTUwgc3BlY2lmaWNhdGlvbiBk
b2VzIG5vdCBzcGVjaWZ5IHZlcnRpY2FsIGFsaWdubWVudCBvZiBzY3JpcHRzLgogICAgIC8vIExl
dCdzIHJpZ2h0IGFsaWduIHByZXNjcmlwdHMgYW5kIGxlZnQgYWxpZ24gcG9zdHNjcmlwdHMuCiAg
ICAgLy8gU2VlIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3dy1tYXRoLzIw
MTJBdWcvMDAwNi5odG1sCi0gICAgc2NyaXB0c1N0eWxlLnNldEFsaWduSXRlbXMoaXNQb3N0U2Ny
aXB0ID8gSXRlbVBvc2l0aW9uRmxleFN0YXJ0IDogSXRlbVBvc2l0aW9uRmxleEVuZCk7CisgICAg
c2NyaXB0c1N0eWxlLnNldEFsaWduSXRlbXNQb3NpdGlvbihpc1Bvc3RTY3JpcHQgPyBJdGVtUG9z
aXRpb25GbGV4U3RhcnQgOiBJdGVtUG9zaXRpb25GbGV4RW5kKTsKIAogICAgIC8vIFdlIHNldCB0
aGUgb3JkZXIgcHJvcGVydHkgc28gdGhhdCB0aGUgcHJlc2NyaXB0cyBhcmUgZHJhd24gYmVmb3Jl
IHRoZSBiYXNlLgogICAgIHNjcmlwdHNTdHlsZS5zZXRPcmRlcihpc1Bvc3RTY3JpcHQgPyAwIDog
LTEpOwpAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6Zml4QW5v
bnltb3VzU3R5bGVzKCkKIHsKICAgICAvLyBXZSBzZXQgdGhlIGJhc2Ugd3JhcHBlcidzIHN0eWxl
IHNvIHRoYXQgYmFzZUhlaWdodCBpbiBsYXlvdXQoKSB3aWxsIGJlIGFuIHVuc3RyZXRjaGVkIGhl
aWdodC4KICAgICBBU1NFUlQobV9iYXNlV3JhcHBlciAmJiBtX2Jhc2VXcmFwcGVyLT5zdHlsZSgp
Lmhhc09uZVJlZigpKTsKLSAgICBtX2Jhc2VXcmFwcGVyLT5zdHlsZSgpLnNldEFsaWduU2VsZihJ
dGVtUG9zaXRpb25GbGV4U3RhcnQpOworICAgIG1fYmFzZVdyYXBwZXItPnN0eWxlKCkuc2V0QWxp
Z25TZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9uRmxleFN0YXJ0KTsKIAogICAgIC8vIFRoaXMgc2V0
cyB0aGUgc3R5bGUgZm9yIHBvc3RzY3JpcHQgcGFpcnMuCiAgICAgUmVuZGVyT2JqZWN0KiBzdWJT
dXBQYWlyID0gbV9iYXNlV3JhcHBlcjsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIFJlbmRlck1h
dGhNTFNjcmlwdHM6OmZpeEFub255bW91c1N0eWxlcygpCiAgICAgICAgICAgICBSZW5kZXJTdHls
ZSYgc2NyaXB0c1N0eWxlID0gc3ViU3VwUGFpci0+c3R5bGUoKTsKICAgICAgICAgICAgIHNjcmlw
dHNTdHlsZS5zZXRGbGV4RGlyZWN0aW9uKEZsb3dSb3cpOwogICAgICAgICAgICAgc2NyaXB0c1N0
eWxlLnNldEp1c3RpZnlDb250ZW50KEp1c3RpZnlGbGV4U3RhcnQpOwotICAgICAgICAgICAgc2Ny
aXB0c1N0eWxlLnNldEFsaWduSXRlbXMoSXRlbVBvc2l0aW9uQ2VudGVyKTsKKyAgICAgICAgICAg
IHNjcmlwdHNTdHlsZS5zZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uQ2VudGVyKTsK
ICAgICAgICAgICAgIHNjcmlwdHNTdHlsZS5zZXRPcmRlcigwKTsKICAgICAgICAgICAgIHNjcmlw
dHNTdHlsZS5zZXRGb250U2l6ZShzdHlsZSgpLmZvbnRTaXplKCkpOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBlOTU1
MjUxNTk4MjE3NzRlYjM1ZTY2M2M4MDI4ODIyMTlkMjY1ZWE3Li5lNzNmOTI5NzEyMjRkYTc5YzIw
Y2NhNzU3NjdiZWZkZWNhMzRmYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTE3NCwxNiArMTc0LDE2IEBAIEFMV0FZU19JTkxJTkUg
UmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBvKQogSXRlbVBvc2l0
aW9uIFJlbmRlclN0eWxlOjpyZXNvbHZlQWxpZ25tZW50KGNvbnN0IFJlbmRlclN0eWxlJiBwYXJl
bnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkU3R5bGUsIEl0ZW1Qb3NpdGlvbiByZXNv
bHZlZEF1dG9Qb3NpdGlvbkZvclJlbmRlcmVyKQogewogICAgIC8vIFRoZSBhdXRvIGtleXdvcmQg
Y29tcHV0ZXMgdG8gdGhlIHBhcmVudCdzIGFsaWduLWl0ZW1zIGNvbXB1dGVkIHZhbHVlLCBvciB0
byAic3RyZXRjaCIsIGlmIG5vdCBzZXQgb3IgImF1dG8iLgotICAgIGlmIChjaGlsZFN0eWxlLmFs
aWduU2VsZigpID09IEl0ZW1Qb3NpdGlvbkF1dG8pCi0gICAgICAgIHJldHVybiAocGFyZW50U3R5
bGUuYWxpZ25JdGVtcygpID09IEl0ZW1Qb3NpdGlvbkF1dG8pID8gcmVzb2x2ZWRBdXRvUG9zaXRp
b25Gb3JSZW5kZXJlciA6IHBhcmVudFN0eWxlLmFsaWduSXRlbXMoKTsKLSAgICByZXR1cm4gY2hp
bGRTdHlsZS5hbGlnblNlbGYoKTsKKyAgICBpZiAoY2hpbGRTdHlsZS5hbGlnblNlbGZQb3NpdGlv
bigpID09IEl0ZW1Qb3NpdGlvbkF1dG8pCisgICAgICAgIHJldHVybiAocGFyZW50U3R5bGUuYWxp
Z25JdGVtc1Bvc2l0aW9uKCkgPT0gSXRlbVBvc2l0aW9uQXV0bykgPyByZXNvbHZlZEF1dG9Qb3Np
dGlvbkZvclJlbmRlcmVyIDogcGFyZW50U3R5bGUuYWxpZ25JdGVtc1Bvc2l0aW9uKCk7CisgICAg
cmV0dXJuIGNoaWxkU3R5bGUuYWxpZ25TZWxmUG9zaXRpb24oKTsKIH0KIAogSXRlbVBvc2l0aW9u
IFJlbmRlclN0eWxlOjpyZXNvbHZlSnVzdGlmaWNhdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBjaGlsZFN0eWxlLCBJdGVtUG9zaXRpb24gcmVz
b2x2ZWRBdXRvUG9zaXRpb25Gb3JMYXlvdXRPYmplY3QpCiB7Ci0gICAgaWYgKGNoaWxkU3R5bGUu
anVzdGlmeVNlbGYoKSA9PSBJdGVtUG9zaXRpb25BdXRvKQotICAgICAgICByZXR1cm4gKHBhcmVu
dFN0eWxlLmp1c3RpZnlJdGVtcygpID09IEl0ZW1Qb3NpdGlvbkF1dG8pID8gcmVzb2x2ZWRBdXRv
UG9zaXRpb25Gb3JMYXlvdXRPYmplY3QgOiBwYXJlbnRTdHlsZS5qdXN0aWZ5SXRlbXMoKTsKLSAg
ICByZXR1cm4gY2hpbGRTdHlsZS5qdXN0aWZ5U2VsZigpOworICAgIGlmIChjaGlsZFN0eWxlLmp1
c3RpZnlTZWxmUG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25BdXRvKQorICAgICAgICByZXR1cm4g
KHBhcmVudFN0eWxlLmp1c3RpZnlJdGVtc1Bvc2l0aW9uKCkgPT0gSXRlbVBvc2l0aW9uQXV0bykg
PyByZXNvbHZlZEF1dG9Qb3NpdGlvbkZvckxheW91dE9iamVjdCA6IHBhcmVudFN0eWxlLmp1c3Rp
ZnlJdGVtc1Bvc2l0aW9uKCk7CisgICAgcmV0dXJuIGNoaWxkU3R5bGUuanVzdGlmeVNlbGZQb3Np
dGlvbigpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjppbmhlcml0RnJvbShjb25zdCBSZW5kZXJT
dHlsZSogaW5oZXJpdFBhcmVudCwgSXNBdFNoYWRvd0JvdW5kYXJ5IGlzQXRTaGFkb3dCb3VuZGFy
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXgg
ODA1OGEyODY1YmE4N2FlMWE2ZmVhNmM5YjdmMGZhYTIzNDZiMThhNy4uODUyMGRmY2EzY2Q5ZmY3
ZWI5NTM0Yzc4YzdkMDJlZTY5OTZiYzAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTkxMCwyMCArOTEwLDI0IEBAIHB1YmxpYzoKICAgICBm
bG9hdCBmbGV4U2hyaW5rKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
ZmxleGlibGVCb3gtPm1fZmxleFNocmluazsgfQogICAgIGNvbnN0IExlbmd0aCYgZmxleEJhc2lz
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gtPm1f
ZmxleEJhc2lzOyB9CiAgICAgRUFsaWduQ29udGVudCBhbGlnbkNvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFQWxpZ25Db250ZW50PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9h
bGlnbkNvbnRlbnQpOyB9Ci0gICAgSXRlbVBvc2l0aW9uIGFsaWduSXRlbXMoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxJdGVtUG9zaXRpb24+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Fs
aWduSXRlbXMpOyB9Ci0gICAgT3ZlcmZsb3dBbGlnbm1lbnQgYWxpZ25JdGVtc092ZXJmbG93QWxp
Z25tZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcmZsb3dBbGlnbm1lbnQ+KHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduSXRlbXNPdmVyZmxvd0FsaWdubWVudCk7IH0KLSAg
ICBJdGVtUG9zaXRpb24gYWxpZ25TZWxmKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SXRl
bVBvc2l0aW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnblNlbGYpOyB9Ci0gICAgT3Zl
cmZsb3dBbGlnbm1lbnQgYWxpZ25TZWxmT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxPdmVyZmxvd0FsaWdubWVudD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
YWxpZ25TZWxmT3ZlcmZsb3dBbGlnbm1lbnQpOyB9CisgICAgY29uc3QgU3R5bGVTZWxmQWxpZ25t
ZW50RGF0YSYgYWxpZ25JdGVtcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2FsaWduSXRlbXM7IH0KKyAgICBJdGVtUG9zaXRpb24gYWxpZ25JdGVtc1Bvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25JdGVtcy5wb3NpdGlv
bigpOyB9CisgICAgT3ZlcmZsb3dBbGlnbm1lbnQgYWxpZ25JdGVtc092ZXJmbG93QWxpZ25tZW50
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25JdGVtcy5vdmVy
ZmxvdygpOyB9CisgICAgY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgYWxpZ25TZWxmKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25TZWxmOyB9CisgICAg
SXRlbVBvc2l0aW9uIGFsaWduU2VsZlBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fYWxpZ25TZWxmLnBvc2l0aW9uKCk7IH0KKyAgICBPdmVyZmxvd0FsaWdu
bWVudCBhbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2FsaWduU2VsZi5vdmVyZmxvdygpOyB9CiAgICAgRUZsZXhEaXJlY3Rp
b24gZmxleERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGbGV4RGlyZWN0
aW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4RGlyZWN0aW9u
KTsgfQogICAgIGJvb2wgaXNDb2x1bW5GbGV4RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmxl
eERpcmVjdGlvbigpID09IEZsb3dDb2x1bW4gfHwgZmxleERpcmVjdGlvbigpID09IEZsb3dDb2x1
bW5SZXZlcnNlOyB9CiAgICAgYm9vbCBpc1JldmVyc2VGbGV4RGlyZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gZmxleERpcmVjdGlvbigpID09IEZsb3dSb3dSZXZlcnNlIHx8IGZsZXhEaXJlY3Rpb24o
KSA9PSBGbG93Q29sdW1uUmV2ZXJzZTsgfQogICAgIEVGbGV4V3JhcCBmbGV4V3JhcCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVGbGV4V3JhcD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
ZmxleGlibGVCb3gtPm1fZmxleFdyYXApOyB9CiAgICAgRUp1c3RpZnlDb250ZW50IGp1c3RpZnlD
b250ZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUp1c3RpZnlDb250ZW50PihyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5Q29udGVudCk7IH0KLSAgICBJdGVtUG9zaXRpb24g
anVzdGlmeUl0ZW1zKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SXRlbVBvc2l0aW9uPihy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXMpOyB9Ci0gICAgT3ZlcmZsb3dBbGln
bm1lbnQganVzdGlmeUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxPdmVyZmxvd0FsaWdubWVudD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlm
eUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQpOyB9Ci0gICAgSXRlbVBvc2l0aW9uVHlwZSBqdXN0aWZ5
SXRlbXNQb3NpdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVtUG9zaXRp
b25UeXBlPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUp
OyB9Ci0gICAgSXRlbVBvc2l0aW9uIGp1c3RpZnlTZWxmKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8SXRlbVBvc2l0aW9uPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5U2VsZik7
IH0KLSAgICBPdmVyZmxvd0FsaWdubWVudCBqdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcmZsb3dBbGlnbm1lbnQ+KHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2p1c3RpZnlTZWxmT3ZlcmZsb3dBbGlnbm1lbnQpOyB9CisgICAgY29uc3Qg
U3R5bGVTZWxmQWxpZ25tZW50RGF0YSYganVzdGlmeUl0ZW1zKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeUl0ZW1zOyB9CisgICAgSXRlbVBvc2l0aW9uIGp1
c3RpZnlJdGVtc1Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fanVzdGlmeUl0ZW1zLnBvc2l0aW9uKCk7IH0KKyAgICBPdmVyZmxvd0FsaWdubWVudCBqdXN0
aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2p1c3RpZnlJdGVtcy5vdmVyZmxvdygpOyB9CisgICAgSXRlbVBvc2l0aW9uVHlw
ZSBqdXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXMucG9zaXRpb25UeXBlKCk7IH0KKyAgICBjb25zdCBTdHls
ZVNlbGZBbGlnbm1lbnREYXRhJiBqdXN0aWZ5U2VsZigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2p1c3RpZnlTZWxmOyB9CisgICAgSXRlbVBvc2l0aW9uIGp1c3RpZnlT
ZWxmUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0
aWZ5U2VsZi5wb3NpdGlvbigpOyB9CisgICAgT3ZlcmZsb3dBbGlnbm1lbnQganVzdGlmeVNlbGZP
dmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X2p1c3RpZnlTZWxmLm92ZXJmbG93KCk7IH0KIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQp
CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiBncmlkQ29sdW1ucygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2dyaWQtPm1fZ3JpZENvbHVtbnM7IH0KQEAg
LTE0OTgsMTggKzE1MDIsMjIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmxleEJhc2lzKExlbmd0
aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9mbGV4
aWJsZUJveCwgbV9mbGV4QmFzaXMsIFdURjo6bW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0
T3JkZXIoaW50IG8pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9vcmRlciwgbyk7
IH0KICAgICB2b2lkIHNldEFsaWduQ29udGVudChFQWxpZ25Db250ZW50IHApIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hbGlnbkNvbnRlbnQsIHApOyB9Ci0gICAgdm9pZCBzZXRB
bGlnbkl0ZW1zKEl0ZW1Qb3NpdGlvbiBhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fYWxpZ25JdGVtcywgYSk7IH0KLSAgICB2b2lkIHNldEFsaWduSXRlbXNPdmVyZmxvd0FsaWdu
bWVudChPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvd0FsaWdubWVudCkgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2FsaWduSXRlbXNPdmVyZmxvd0FsaWdubWVudCwgb3ZlcmZsb3dB
bGlnbm1lbnQpOyB9Ci0gICAgdm9pZCBzZXRBbGlnblNlbGYoSXRlbVBvc2l0aW9uIGEpIHsgU0VU
X1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hbGlnblNlbGYsIGEpOyB9Ci0gICAgdm9pZCBz
ZXRBbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudChPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvd0Fs
aWdubWVudCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FsaWduU2VsZk92ZXJm
bG93QWxpZ25tZW50LCBvdmVyZmxvd0FsaWdubWVudCk7IH0KKyAgICB2b2lkIHNldEFsaWduSXRl
bXMoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0YSkgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2FsaWduSXRlbXMsIGRhdGEpOyB9CisgICAgdm9pZCBzZXRBbGlnbkl0
ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX2FsaWduSXRlbXMuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9CisgICAgdm9p
ZCBzZXRBbGlnbkl0ZW1zT3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cpIHsgcmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxpZ25JdGVtcy5zZXRPdmVyZmxvdyhvdmVy
Zmxvdyk7IH0KKyAgICB2b2lkIHNldEFsaWduU2VsZihjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnRE
YXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25TZWxmLCBk
YXRhKTsgfQorICAgIHZvaWQgc2V0QWxpZ25TZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0
aW9uKSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduU2VsZi5zZXRQb3Np
dGlvbihwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEFsaWduU2VsZk92ZXJmbG93KE92ZXJmbG93
QWxpZ25tZW50IG92ZXJmbG93KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Fs
aWduU2VsZi5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KICAgICB2b2lkIHNldEZsZXhEaXJlY3Rp
b24oRUZsZXhEaXJlY3Rpb24gZGlyZWN0aW9uKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fZmxleGlibGVCb3gsIG1fZmxleERpcmVjdGlvbiwgZGlyZWN0aW9uKTsg
fQogICAgIHZvaWQgc2V0RmxleFdyYXAoRUZsZXhXcmFwIHcpIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9mbGV4aWJsZUJveCwgbV9mbGV4V3JhcCwgdyk7IH0KICAg
ICB2b2lkIHNldEp1c3RpZnlDb250ZW50KEVKdXN0aWZ5Q29udGVudCBwKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fanVzdGlmeUNvbnRlbnQsIHApOyB9Ci0gICAgdm9pZCBzZXRK
dXN0aWZ5SXRlbXMoSXRlbVBvc2l0aW9uIGp1c3RpZnlJdGVtcykgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2p1c3RpZnlJdGVtcywganVzdGlmeUl0ZW1zKTsgfQotICAgIHZvaWQg
c2V0SnVzdGlmeUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZs
b3dBbGlnbm1lbnQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5SXRl
bXNPdmVyZmxvd0FsaWdubWVudCwgb3ZlcmZsb3dBbGlnbm1lbnQpOyB9Ci0gICAgdm9pZCBzZXRK
dXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoSXRlbVBvc2l0aW9uVHlwZSBwb3NpdGlvblR5cGUpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUs
IHBvc2l0aW9uVHlwZSk7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlTZWxmKEl0ZW1Qb3NpdGlvbiBw
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fanVzdGlmeVNlbGYsIHApOyB9Ci0g
ICAgdm9pZCBzZXRKdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KE92ZXJmbG93QWxpZ25tZW50
IG92ZXJmbG93QWxpZ25tZW50KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fanVz
dGlmeVNlbGZPdmVyZmxvd0FsaWdubWVudCwgb3ZlcmZsb3dBbGlnbm1lbnQpOyB9CisgICAgdm9p
ZCBzZXRKdXN0aWZ5SXRlbXMoY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgZGF0YSkgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2p1c3RpZnlJdGVtcywgZGF0YSk7IH0KKyAg
ICB2b2lkIHNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uKEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbikgeyBy
YXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5SXRlbXMuc2V0UG9zaXRpb24o
cG9zaXRpb24pOyB9CisgICAgdm9pZCBzZXRKdXN0aWZ5SXRlbXNPdmVyZmxvdyhPdmVyZmxvd0Fs
aWdubWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0
aWZ5SXRlbXMuc2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9CisgICAgdm9pZCBzZXRKdXN0aWZ5SXRl
bXNQb3NpdGlvblR5cGUoSXRlbVBvc2l0aW9uVHlwZSBwb3NpdGlvblR5cGUpIHsgcmFyZU5vbklu
aGVyaXRlZERhdGEuYWNjZXNzKCktPm1fanVzdGlmeUl0ZW1zLnNldFBvc2l0aW9uVHlwZShwb3Np
dGlvblR5cGUpOyB9CisgICAgdm9pZCBzZXRKdXN0aWZ5U2VsZihjb25zdCBTdHlsZVNlbGZBbGln
bm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fanVzdGlm
eVNlbGYsIGRhdGEpOyB9CisgICAgdm9pZCBzZXRKdXN0aWZ5U2VsZlBvc2l0aW9uKEl0ZW1Qb3Np
dGlvbiBwb3NpdGlvbikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9qdXN0aWZ5
U2VsZi5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEp1c3RpZnlTZWxmT3Zl
cmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3cpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fanVzdGlmeVNlbGYuc2V0T3ZlcmZsb3cob3ZlcmZsb3cpOyB9CiAjaWYgRU5B
QkxFKENTU19HUklEX0xBWU9VVCkKICAgICB2b2lkIHNldEdyaWRBdXRvQ29sdW1ucyhjb25zdCBH
cmlkVHJhY2tTaXplJiBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9ncmlkLCBtX2dyaWRBdXRvQ29sdW1ucywgbGVuZ3RoKTsgfQogICAgIHZvaWQgc2V0
R3JpZEF1dG9Sb3dzKGNvbnN0IEdyaWRUcmFja1NpemUmIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQsIG1fZ3JpZEF1dG9Sb3dzLCBsZW5ndGgp
OyB9CkBAIC0xOTIwLDE4ICsxOTI4LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGVuZ3RoIGlu
aXRpYWxGbGV4QmFzaXMoKSB7IHJldHVybiBMZW5ndGgoQXV0byk7IH0KICAgICBzdGF0aWMgaW50
IGluaXRpYWxPcmRlcigpIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgRUFsaWduQ29udGVudCBp
bml0aWFsQWxpZ25Db250ZW50KCkgeyByZXR1cm4gQWxpZ25Db250ZW50U3RyZXRjaDsgfQotICAg
IHN0YXRpYyBJdGVtUG9zaXRpb24gaW5pdGlhbEFsaWduSXRlbXMoKSB7IHJldHVybiBJdGVtUG9z
aXRpb25BdXRvOyB9Ci0gICAgc3RhdGljIE92ZXJmbG93QWxpZ25tZW50IGluaXRpYWxBbGlnbkl0
ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoKSB7IHJldHVybiBPdmVyZmxvd0FsaWdubWVudERlZmF1bHQ7
IH0KLSAgICBzdGF0aWMgSXRlbVBvc2l0aW9uIGluaXRpYWxBbGlnblNlbGYoKSB7IHJldHVybiBJ
dGVtUG9zaXRpb25BdXRvOyB9Ci0gICAgc3RhdGljIE92ZXJmbG93QWxpZ25tZW50IGluaXRpYWxB
bGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCgpIHsgcmV0dXJuIE92ZXJmbG93QWxpZ25tZW50RGVm
YXVsdDsgfQorICAgIHN0YXRpYyBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGluaXRpYWxTZWxmQWxp
Z25tZW50KCkgeyByZXR1cm4gU3R5bGVTZWxmQWxpZ25tZW50RGF0YShJdGVtUG9zaXRpb25BdXRv
LCBPdmVyZmxvd0FsaWdubWVudERlZmF1bHQpOyB9CiAgICAgc3RhdGljIEVGbGV4RGlyZWN0aW9u
IGluaXRpYWxGbGV4RGlyZWN0aW9uKCkgeyByZXR1cm4gRmxvd1JvdzsgfQogICAgIHN0YXRpYyBF
RmxleFdyYXAgaW5pdGlhbEZsZXhXcmFwKCkgeyByZXR1cm4gRmxleE5vV3JhcDsgfQogICAgIHN0
YXRpYyBFSnVzdGlmeUNvbnRlbnQgaW5pdGlhbEp1c3RpZnlDb250ZW50KCkgeyByZXR1cm4gSnVz
dGlmeUZsZXhTdGFydDsgfQotICAgIHN0YXRpYyBJdGVtUG9zaXRpb24gaW5pdGlhbEp1c3RpZnlJ
dGVtcygpIHsgcmV0dXJuIEl0ZW1Qb3NpdGlvbkF1dG87IH0KLSAgICBzdGF0aWMgT3ZlcmZsb3dB
bGlnbm1lbnQgaW5pdGlhbEp1c3RpZnlJdGVtc092ZXJmbG93QWxpZ25tZW50KCkgeyByZXR1cm4g
T3ZlcmZsb3dBbGlnbm1lbnREZWZhdWx0OyB9Ci0gICAgc3RhdGljIEl0ZW1Qb3NpdGlvblR5cGUg
aW5pdGlhbEp1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZSgpIHsgcmV0dXJuIE5vbkxlZ2FjeVBvc2l0
aW9uOyB9Ci0gICAgc3RhdGljIEl0ZW1Qb3NpdGlvbiBpbml0aWFsSnVzdGlmeVNlbGYoKSB7IHJl
dHVybiBJdGVtUG9zaXRpb25BdXRvOyB9Ci0gICAgc3RhdGljIE92ZXJmbG93QWxpZ25tZW50IGlu
aXRpYWxKdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KCkgeyByZXR1cm4gT3ZlcmZsb3dBbGln
bm1lbnREZWZhdWx0OyB9CiAgICAgc3RhdGljIGludCBpbml0aWFsTWFycXVlZUxvb3BDb3VudCgp
IHsgcmV0dXJuIC0xOyB9CiAgICAgc3RhdGljIGludCBpbml0aWFsTWFycXVlZVNwZWVkKCkgeyBy
ZXR1cm4gODU7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxNYXJxdWVlSW5jcmVtZW50KCkg
eyByZXR1cm4gTGVuZ3RoKDYsIEZpeGVkKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4
IDM4ZDEyMzVlMWNmMGE5YTUyYTQ3MDUyYWM3NmNhOTM1Nzc3YTMzODYuLmJmMmU3YWE0YjJhZDFh
MWMzYTgwZDI5NWJlOTYzZjAzNGQ2NzFkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAg
LTcxLDYgKzcxLDEwIEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEoKQogICAgICwgbV9vcmRlcihSZW5kZXJTdHlsZTo6aW5pdGlhbE9yZGVyKCkp
CiAgICAgLCBtX2Zsb3dUaHJlYWQoUmVuZGVyU3R5bGU6OmluaXRpYWxGbG93VGhyZWFkKCkpCiAg
ICAgLCBtX3JlZ2lvblRocmVhZChSZW5kZXJTdHlsZTo6aW5pdGlhbFJlZ2lvblRocmVhZCgpKQor
ICAgICwgbV9hbGlnbkl0ZW1zKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQor
ICAgICwgbV9hbGlnblNlbGYoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkpCisg
ICAgLCBtX2p1c3RpZnlJdGVtcyhSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkK
KyAgICAsIG1fanVzdGlmeVNlbGYoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkp
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICAsIG1fc2Nyb2xsU25hcFR5cGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsU2Nyb2xsU25hcFR5cGUoKSkp
CiAjZW5kaWYKQEAgLTgyLDE2ICs4Niw3IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogICAgICwgbV90cmFuc2Zvcm1TdHlsZTNEKFJlbmRl
clN0eWxlOjppbml0aWFsVHJhbnNmb3JtU3R5bGUzRCgpKQogICAgICwgbV9iYWNrZmFjZVZpc2li
aWxpdHkoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZmFjZVZpc2liaWxpdHkoKSkKICAgICAsIG1f
YWxpZ25Db250ZW50KFJlbmRlclN0eWxlOjppbml0aWFsQWxpZ25Db250ZW50KCkpCi0gICAgLCBt
X2FsaWduSXRlbXMoUmVuZGVyU3R5bGU6OmluaXRpYWxBbGlnbkl0ZW1zKCkpCi0gICAgLCBtX2Fs
aWduSXRlbXNPdmVyZmxvd0FsaWdubWVudChSZW5kZXJTdHlsZTo6aW5pdGlhbEFsaWduSXRlbXNP
dmVyZmxvd0FsaWdubWVudCgpKQotICAgICwgbV9hbGlnblNlbGYoUmVuZGVyU3R5bGU6OmluaXRp
YWxBbGlnblNlbGYoKSkKLSAgICAsIG1fYWxpZ25TZWxmT3ZlcmZsb3dBbGlnbm1lbnQoUmVuZGVy
U3R5bGU6OmluaXRpYWxBbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCgpKQogICAgICwgbV9qdXN0
aWZ5Q29udGVudChSZW5kZXJTdHlsZTo6aW5pdGlhbEp1c3RpZnlDb250ZW50KCkpCi0gICAgLCBt
X2p1c3RpZnlJdGVtcyhSZW5kZXJTdHlsZTo6aW5pdGlhbEp1c3RpZnlJdGVtcygpKQotICAgICwg
bV9qdXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudChSZW5kZXJTdHlsZTo6aW5pdGlhbEp1c3Rp
ZnlJdGVtc092ZXJmbG93QWxpZ25tZW50KCkpCi0gICAgLCBtX2p1c3RpZnlJdGVtc1Bvc2l0aW9u
VHlwZShOb25MZWdhY3lQb3NpdGlvbikKLSAgICAsIG1fanVzdGlmeVNlbGYoUmVuZGVyU3R5bGU6
OmluaXRpYWxKdXN0aWZ5U2VsZigpKQotICAgICwgbV9qdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25t
ZW50KFJlbmRlclN0eWxlOjppbml0aWFsSnVzdGlmeVNlbGZPdmVyZmxvd0FsaWdubWVudCgpKQog
ICAgICwgdXNlckRyYWcoUmVuZGVyU3R5bGU6OmluaXRpYWxVc2VyRHJhZygpKQogICAgICwgdGV4
dE92ZXJmbG93KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dE92ZXJmbG93KCkpCiAgICAgLCBtYXJn
aW5CZWZvcmVDb2xsYXBzZShNQ09MTEFQU0UpCkBAIC0xNjQsNiArMTU5LDEwIEBAIGlubGluZSBT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0
IFN0eWxlUmFyZU5vbkluCiAgICAgLCBtX29yZGVyKG8ubV9vcmRlcikKICAgICAsIG1fZmxvd1Ro
cmVhZChvLm1fZmxvd1RocmVhZCkKICAgICAsIG1fcmVnaW9uVGhyZWFkKG8ubV9yZWdpb25UaHJl
YWQpCisgICAgLCBtX2FsaWduSXRlbXMoby5tX2FsaWduSXRlbXMpCisgICAgLCBtX2FsaWduU2Vs
ZihvLm1fYWxpZ25TZWxmKQorICAgICwgbV9qdXN0aWZ5SXRlbXMoby5tX2p1c3RpZnlJdGVtcykK
KyAgICAsIG1fanVzdGlmeVNlbGYoby5tX2p1c3RpZnlTZWxmKQogI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCiAgICAgLCBtX3Njcm9sbFNuYXBUeXBlKG8ubV9zY3JvbGxTbmFwVHlwZSkKICNl
bmRpZgpAQCAtMTc1LDE2ICsxNzQsNyBAQCBpbmxpbmUgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25JbgogICAgICwg
bV90cmFuc2Zvcm1TdHlsZTNEKG8ubV90cmFuc2Zvcm1TdHlsZTNEKQogICAgICwgbV9iYWNrZmFj
ZVZpc2liaWxpdHkoby5tX2JhY2tmYWNlVmlzaWJpbGl0eSkKICAgICAsIG1fYWxpZ25Db250ZW50
KG8ubV9hbGlnbkNvbnRlbnQpCi0gICAgLCBtX2FsaWduSXRlbXMoby5tX2FsaWduSXRlbXMpCi0g
ICAgLCBtX2FsaWduSXRlbXNPdmVyZmxvd0FsaWdubWVudChvLm1fYWxpZ25JdGVtc092ZXJmbG93
QWxpZ25tZW50KQotICAgICwgbV9hbGlnblNlbGYoby5tX2FsaWduU2VsZikKLSAgICAsIG1fYWxp
Z25TZWxmT3ZlcmZsb3dBbGlnbm1lbnQoby5tX2FsaWduU2VsZk92ZXJmbG93QWxpZ25tZW50KQog
ICAgICwgbV9qdXN0aWZ5Q29udGVudChvLm1fanVzdGlmeUNvbnRlbnQpCi0gICAgLCBtX2p1c3Rp
ZnlJdGVtcyhvLm1fanVzdGlmeUl0ZW1zKQotICAgICwgbV9qdXN0aWZ5SXRlbXNPdmVyZmxvd0Fs
aWdubWVudChvLm1fanVzdGlmeUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQpCi0gICAgLCBtX2p1c3Rp
ZnlJdGVtc1Bvc2l0aW9uVHlwZShvLm1fanVzdGlmeUl0ZW1zUG9zaXRpb25UeXBlKQotICAgICwg
bV9qdXN0aWZ5U2VsZihvLm1fanVzdGlmeVNlbGYpCi0gICAgLCBtX2p1c3RpZnlTZWxmT3ZlcmZs
b3dBbGlnbm1lbnQoby5tX2p1c3RpZnlTZWxmT3ZlcmZsb3dBbGlnbm1lbnQpCiAgICAgLCB1c2Vy
RHJhZyhvLnVzZXJEcmFnKQogICAgICwgdGV4dE92ZXJmbG93KG8udGV4dE92ZXJmbG93KQogICAg
ICwgbWFyZ2luQmVmb3JlQ29sbGFwc2Uoby5tYXJnaW5CZWZvcmVDb2xsYXBzZSkKQEAgLTI2Niw2
ICsyNTYsMTAgQEAgYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNv
bnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pIGMKICAgICAgICAgJiYgbV92aXNpdGVk
TGlua0JvcmRlckJvdHRvbUNvbG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9y
CiAgICAgICAgICYmIG1fb3JkZXIgPT0gby5tX29yZGVyCiAgICAgICAgICYmIG1fZmxvd1RocmVh
ZCA9PSBvLm1fZmxvd1RocmVhZAorICAgICAgICAmJiBtX2FsaWduSXRlbXMgPT0gby5tX2FsaWdu
SXRlbXMKKyAgICAgICAgJiYgbV9hbGlnblNlbGYgPT0gby5tX2FsaWduU2VsZgorICAgICAgICAm
JiBtX2p1c3RpZnlJdGVtcyA9PSBvLm1fanVzdGlmeUl0ZW1zCisgICAgICAgICYmIG1fanVzdGlm
eVNlbGYgPT0gby5tX2p1c3RpZnlTZWxmCiAgICAgICAgICYmIG1fcmVnaW9uVGhyZWFkID09IG8u
bV9yZWdpb25UaHJlYWQKICAgICAgICAgJiYgbV9yZWdpb25GcmFnbWVudCA9PSBvLm1fcmVnaW9u
RnJhZ21lbnQKICAgICAgICAgJiYgbV9yZWdpb25CcmVha0FmdGVyID09IG8ubV9yZWdpb25CcmVh
a0FmdGVyCkBAIC0yNzUsMTAgKzI2OSw2IEBAIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjCiAgICAg
ICAgICYmIG1fdHJhbnNmb3JtU3R5bGUzRCA9PSBvLm1fdHJhbnNmb3JtU3R5bGUzRAogICAgICAg
ICAmJiBtX2JhY2tmYWNlVmlzaWJpbGl0eSA9PSBvLm1fYmFja2ZhY2VWaXNpYmlsaXR5CiAgICAg
ICAgICYmIG1fYWxpZ25Db250ZW50ID09IG8ubV9hbGlnbkNvbnRlbnQKLSAgICAgICAgJiYgbV9h
bGlnbkl0ZW1zID09IG8ubV9hbGlnbkl0ZW1zCi0gICAgICAgICYmIG1fYWxpZ25JdGVtc092ZXJm
bG93QWxpZ25tZW50ID09IG8ubV9hbGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQKLSAgICAgICAg
JiYgbV9hbGlnblNlbGYgPT0gby5tX2FsaWduU2VsZgotICAgICAgICAmJiBtX2FsaWduU2VsZk92
ZXJmbG93QWxpZ25tZW50ID09IG8ubV9hbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudAogICAgICAg
ICAmJiBtX2p1c3RpZnlDb250ZW50ID09IG8ubV9qdXN0aWZ5Q29udGVudAogICAgICAgICAmJiB1
c2VyRHJhZyA9PSBvLnVzZXJEcmFnCiAgICAgICAgICYmIHRleHRPdmVyZmxvdyA9PSBvLnRleHRP
dmVyZmxvdwpAQCAtMjk3LDEyICsyODcsNyBAQCBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgYwogICAg
ICAgICAmJiBtX2lzb2xhdGlvbiA9PSBvLm1faXNvbGF0aW9uCiAjZW5kaWYKICAgICAgICAgJiYg
bV9hc3BlY3RSYXRpb1R5cGUgPT0gby5tX2FzcGVjdFJhdGlvVHlwZQotICAgICAgICAmJiBtX29i
amVjdEZpdCA9PSBvLm1fb2JqZWN0Rml0Ci0gICAgICAgICYmIG1fanVzdGlmeUl0ZW1zID09IG8u
bV9qdXN0aWZ5SXRlbXMKLSAgICAgICAgJiYgbV9qdXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVu
dCA9PSBvLm1fanVzdGlmeUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQKLSAgICAgICAgJiYgbV9qdXN0
aWZ5SXRlbXNQb3NpdGlvblR5cGUgPT0gby5tX2p1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZQotICAg
ICAgICAmJiBtX2p1c3RpZnlTZWxmID09IG8ubV9qdXN0aWZ5U2VsZgotICAgICAgICAmJiBtX2p1
c3RpZnlTZWxmT3ZlcmZsb3dBbGlnbm1lbnQgPT0gby5tX2p1c3RpZnlTZWxmT3ZlcmZsb3dBbGln
bm1lbnQ7CisgICAgICAgICYmIG1fb2JqZWN0Rml0ID09IG8ubV9vYmplY3RGaXQ7CiB9CiAKIGJv
b2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6Y29udGVudERhdGFFcXVpdmFsZW50KGNvbnN0
IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApp
bmRleCAyMDEyMDkyYzEyYjdjMGFlNTlhNzA4YjBhNDMxZGQ3YTE4YzA0NTZjLi4wMzQwOTMwZmVh
ZjE5ODg3OWEyOTFiYTRiNmYwMWM3MjliMTk1ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJMaW5lQ2xhbXBWYWx1ZS5oIgogI2luY2x1ZGUgIk5p
bmVQaWVjZUltYWdlLmgiCiAjaW5jbHVkZSAiU2hhcGVWYWx1ZS5oIgorI2luY2x1ZGUgIlN0eWxl
U2VsZkFsaWdubWVudERhdGEuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xNzUsNiArMTc2LDExIEBA
IHB1YmxpYzoKICAgICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOwogICAgIEF0b21pY1N0cmlu
ZyBtX3JlZ2lvblRocmVhZDsKIAorICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgbV9hbGlnbkl0
ZW1zOworICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgbV9hbGlnblNlbGY7CisgICAgU3R5bGVT
ZWxmQWxpZ25tZW50RGF0YSBtX2p1c3RpZnlJdGVtczsKKyAgICBTdHlsZVNlbGZBbGlnbm1lbnRE
YXRhIG1fanVzdGlmeVNlbGY7CisKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIHVu
c2lnbmVkIG1fc2Nyb2xsU25hcFR5cGUgOiAyOyAvLyBTY3JvbGxTbmFwVHlwZQogI2VuZGlmCkBA
IC0xOTAsMTkgKzE5Niw4IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBtX2JhY2tmYWNlVmlzaWJp
bGl0eSA6IDE7IC8vIEVCYWNrZmFjZVZpc2liaWxpdHkKIAogICAgIHVuc2lnbmVkIG1fYWxpZ25D
b250ZW50IDogMzsgLy8gRUFsaWduQ29udGVudAotICAgIHVuc2lnbmVkIG1fYWxpZ25JdGVtcyA6
IDQ7IC8vIEl0ZW1Qb3NpdGlvbgotICAgIHVuc2lnbmVkIG1fYWxpZ25JdGVtc092ZXJmbG93QWxp
Z25tZW50IDogMjsgLy8gT3ZlcmZsb3dBbGlnbm1lbnQKLSAgICB1bnNpZ25lZCBtX2FsaWduU2Vs
ZiA6IDQ7IC8vIEl0ZW1Qb3NpdGlvbgotICAgIHVuc2lnbmVkIG1fYWxpZ25TZWxmT3ZlcmZsb3dB
bGlnbm1lbnQgOiAyOyAvLyBPdmVyZmxvd0FsaWdubWVudAogICAgIHVuc2lnbmVkIG1fanVzdGlm
eUNvbnRlbnQgOiAzOyAvLyBFSnVzdGlmeUNvbnRlbnQKIAotICAgIHVuc2lnbmVkIG1fanVzdGlm
eUl0ZW1zIDogNDsgLy8gSXRlbVBvc2l0aW9uCi0gICAgdW5zaWduZWQgbV9qdXN0aWZ5SXRlbXNP
dmVyZmxvd0FsaWdubWVudCA6IDI7IC8vIE92ZXJmbG93QWxpZ25tZW50Ci0gICAgdW5zaWduZWQg
bV9qdXN0aWZ5SXRlbXNQb3NpdGlvblR5cGU6IDE7IC8vIFdoZXRoZXIgb3Igbm90IGFsaWdubWVu
dCB1c2VzIHRoZSAnbGVnYWN5JyBrZXl3b3JkLgotCi0gICAgdW5zaWduZWQgbV9qdXN0aWZ5U2Vs
ZiA6IDQ7IC8vIEl0ZW1Qb3NpdGlvbgotICAgIHVuc2lnbmVkIG1fanVzdGlmeVNlbGZPdmVyZmxv
d0FsaWdubWVudCA6IDI7IC8vIE92ZXJmbG93QWxpZ25tZW50Ci0KICAgICB1bnNpZ25lZCB1c2Vy
RHJhZyA6IDI7IC8vIEVVc2VyRHJhZwogICAgIHVuc2lnbmVkIHRleHRPdmVyZmxvdyA6IDE7IC8v
IFdoZXRoZXIgb3Igbm90IGxpbmVzIHRoYXQgc3BpbGwgb3V0IHNob3VsZCBiZSB0cnVuY2F0ZWQg
d2l0aCAiLi4uIgogICAgIHVuc2lnbmVkIG1hcmdpbkJlZm9yZUNvbGxhcHNlIDogMjsgLy8gRU1h
cmdpbkNvbGxhcHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVTZWxmQWxpZ25tZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlU2VsZkFsaWdubWVudERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTU1NThkNDJiOWY1ZGQ3MGYw
YTBlMTk1ZmEyNzJiOTNkODc4OTkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlU2VsZkFsaWdubWVudERhdGEuaApAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisjaWZuZGVmIFN0eWxlU2VsZkFsaWdubWVudERhdGFfaAorI2RlZmluZSBT
dHlsZVNlbGZBbGlnbm1lbnREYXRhX2gKKworI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRz
LmgiCisKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHlsZVNlbGZBbGlnbm1lbnRE
YXRhIHsKK3B1YmxpYzoKKyAgICAvLyBTdHlsZSBkYXRhIGZvciBTZWxmLUFsaWdtZW50IGFuZCBE
ZWZhdWx0LUFsaWdubWVudCBwcm9wZXJ0aWVzOiBhbGlnbi17c2VsZiwgaXRlbXN9LCBqdXN0aWZ5
LXtzZWxmLCBpdGVtc30uCisgICAgLy8gWyA8c2VsZi1wb3NpdGlvbj4gJiYgPG92ZXJmbG93LXBv
c2l0aW9uPj8gXSB8IFsgbGVnYWN5ICYmIFsgbGVmdCB8IHJpZ2h0IHwgY2VudGVyIF0gXQorICAg
IFN0eWxlU2VsZkFsaWdubWVudERhdGEoSXRlbVBvc2l0aW9uIHBvc2l0aW9uLCBPdmVyZmxvd0Fs
aWdubWVudCBvdmVyZmxvdywgSXRlbVBvc2l0aW9uVHlwZSBwb3NpdGlvblR5cGUgPSBOb25MZWdh
Y3lQb3NpdGlvbikKKyAgICAgICAgOiBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICAsIG1f
cG9zaXRpb25UeXBlKHBvc2l0aW9uVHlwZSkKKyAgICAgICAgLCBtX292ZXJmbG93KG92ZXJmbG93
KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHNldFBvc2l0aW9uKEl0ZW1Qb3NpdGlvbiBwb3Np
dGlvbikgeyBtX3Bvc2l0aW9uID0gcG9zaXRpb247IH0KKyAgICB2b2lkIHNldFBvc2l0aW9uVHlw
ZShJdGVtUG9zaXRpb25UeXBlIHBvc2l0aW9uVHlwZSkgeyBtX3Bvc2l0aW9uVHlwZSA9IHBvc2l0
aW9uVHlwZTsgfQorICAgIHZvaWQgc2V0T3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZs
b3cpIHsgbV9vdmVyZmxvdyA9IG92ZXJmbG93OyB9CisKKyAgICBJdGVtUG9zaXRpb24gcG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVtUG9zaXRpb24+KG1fcG9zaXRpb24p
OyB9CisgICAgSXRlbVBvc2l0aW9uVHlwZSBwb3NpdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxJdGVtUG9zaXRpb25UeXBlPihtX3Bvc2l0aW9uVHlwZSk7IH0KKyAgICBPdmVy
Zmxvd0FsaWdubWVudCBvdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE92ZXJm
bG93QWxpZ25tZW50PihtX292ZXJmbG93KTsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIG8pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9wb3NpdGlvbiA9PSBvLm1fcG9zaXRpb24gJiYgbV9wb3NpdGlvblR5cGUgPT0gby5tX3Bvc2l0
aW9uVHlwZSAmJiBtX292ZXJmbG93ID09IG8ubV9vdmVyZmxvdzsKKyAgICB9CisKKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSYgbykgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOworICAgIH0KKworcHJpdmF0ZToKKyAgICB1
bnNpZ25lZCBtX3Bvc2l0aW9uIDogNDsgLy8gSXRlbVBvc2l0aW9uCisgICAgdW5zaWduZWQgbV9w
b3NpdGlvblR5cGU6IDE7IC8vIFdoZXRoZXIgb3Igbm90IGFsaWdubWVudCB1c2VzIHRoZSAnbGVn
YWN5JyBrZXl3b3JkLgorICAgIHVuc2lnbmVkIG1fb3ZlcmZsb3cgOiAyOyAvLyBPdmVyZmxvd0Fs
aWdubWVudAorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU3R5bGVT
ZWxmQWxpZ25tZW50RGF0YV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251982</attachid>
            <date>2015-04-29 13:40:09 -0700</date>
            <delta_ts>2015-04-29 17:15:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144384-20150429223839.patch</filename>
            <type>text/plain</type>
            <size>51249</size>
            <attacher name="Javier Fernandez">jfernandez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBiZmZlZTRmNzBkN2E0
N2MzZjc2OWJmMDZjNjdjNTZjNjhlZTg5Ny4uMzg4MzUwNTVkMzRmMTU2MWEwMzk3MGMwMTU5NTA5
NTU3MzA0Yjk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE1LTA0LTI5ICBKYXZp
ZXIgRmVybmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDU1MgQm94
IEFsaWdubWVudF0gVW5pZnlpbmcgYWxpZ25tZW50IGRhdGEgaW4gYSBzaW5nbGUgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDM4NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBuZXcgQ1NT
IEJveCBBbGlnbm1lbnQgc3BlY2lmaWNhdGlvbiBpbnRyb2R1Y2VzIG1vcmUgY29tcGxleAorICAg
ICAgICB2YWx1ZXMgYW5kIHN5bnRheCBmb3IgZGVmaW5pbmcgYWxpZ25tZW50IHByb3BlcnRpZXMu
IE1vc3Qgb2YgdGhlCisgICAgICAgIGFsaWdubWVudCB2YWx1ZXMgd2VyZSBqdXN0IGtleXdvcmQg
aWRlbnRpZmllcnMsIGJ1dCB0aGUgbmV3IHN5bnRheAorICAgICAgICBhbGxvd3MgZGlmZmVyZW50
IGNvbWJpbmF0aW9ucyBvZiBpZGVudGlmaWVycyB0byBkZXRlcm1pbmUgdGhlCisgICAgICAgIGFs
aWdubWVudCBiZWhhdmlvciAoZWcuIG92ZXJmbG93LWFsaWdubWVudCBrZXl3b3JkKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIHdsbCBoZWxwIHRvIGltcGxlbWVudCBsYXRlciBvdmVyZmxvdyBoYW5k
bGluZyBhbmQKKyAgICAgICAgc3BlY2lhbGx5IENvbnRlbnQgRHN0cmlidXRpb24gYWxpZ25tZW50
LCB0aGUgbW9zdCBjb21wbGV4IGNhc2UgYnkKKyAgICAgICAgZmFyLiBJdCB3aWxsIGJlIG1vcmUg
Y29uc2lzdGVudCBhZ2FpbnN0IHN0eWxlIGNoYW5nZXMgYW5kIHJlcGFpbnQsCisgICAgICAgIHNu
Y2Ugd2Ugd2lsbCBoYXZlIGp1c3Qgb25lIGZpZWxkIHRvIG1vbml0b3JpbmcgZm9yIHZhbHVlCisg
ICAgICAgIG1vZGZpY2F0aW9ucy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJlY2F1c2Ugbm8g
bmV3IGZ1bmN0aW9uYWxpdHkgd2FzIGFkZGVkOyBpdCdzIGp1c3QgYQorICAgICAgICBjb2RlIHJl
ZmFjdG9yaW5nIHdoaWNoIGlzIGp1c3QgZXhwZWN0ZWQgdG8gcGFzcyBjdXJyZW50IHRlc3RzLgor
CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXNvbHZlU2VsZkFsaWdubWVudEF1dG8pOgorICAgICAgICAoV2ViQ29yZTo6
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TmFtZXMuaW46CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9y
RGVmYXVsdEFsaWdubWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0U1ZHQ29sb3IpOiBEZWxldGVkLgorICAgICAgICAqIGNzcy9TdHlsZUJ1
aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbml0aWFsV2Via2l0TWFza0ltYWdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0TWFza0ltYWdlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyOjphcHBs
eUluaGVyaXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5
Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlJbml0aWFsVmFsdWUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI6OmFwcGx5VmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9k
aWZpZXI6OmdldFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVy
dHlCb3JkZXJJbWFnZU1vZGlmaWVyOjpzZXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdExpbmVIZWlnaHQpOiBEZWxldGVk
LgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4dEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxl
Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpzdHlsZURpZENo
YW5nZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRnVsbFNjcmVlblN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OmFk
anVzdElubmVyU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290Ojp1cGRhdGVTdHls
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNjcmlwdHM6OmZpeEFub255bW91c1N0eWxl
Rm9yU3ViU3VwUGFpcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjpm
aXhBbm9ueW1vdXNTdHlsZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVzb2x2ZUFsaWdubWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVzb2x2ZUp1c3RpZmljYXRpb24pOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9
PSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpjb250ZW50
RGF0YUVxdWl2YWxlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
U2VsZkFsaWdubWVudERhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNlbGZB
bGlnbm1lbnREYXRhOjpTdHlsZVNlbGZBbGlnbm1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlU2VsZkFsaWdubWVudERhdGE6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlU2VsZkFsaWdubWVudERhdGE6OnNldFBvc2l0aW9uVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVNlbGZBbGlnbm1lbnREYXRhOjpzZXRPdmVyZmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVNlbGZBbGlnbm1lbnREYXRhOjpwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNlbGZBbGlnbm1lbnREYXRhOjpwb3NpdGlvblR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVTZWxmQWxpZ25tZW50RGF0YTo6b3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTZWxmQWxpZ25tZW50RGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVNlbGZBbGlnbm1lbnREYXRhOjpvcGVyYXRvciE9KToKKwogMjAxNS0wNC0yOCAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBNYXZlcmlja3MgRGVi
dWcgYnVpbGQgYWZ0ZXIgcjE4MzQ2Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZjE4NDMyOTMwNWNhZGNjZGNkODJhZWNhOWVl
Y2YzOGE2ZDEyOTg5Li45OGMzODA0MWIzZDU3NzI5NzMyYmJhOGYyM2E0YTlhOTNmZjk0MWJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0zNzg0LDYgKzM3ODQsNyBAQAogCQk5QkQ4QTk1QTE4QkVGQzc2MDA5ODdFOUEgLyogQ29s
bGVjdGlvbkluZGV4Q2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUJEOEE5NTkxOEJFRkM3NjAwOTg3RTlBIC8qIENvbGxlY3Rpb25JbmRleENh
Y2hlLmNwcCAqLzsgfTsKIAkJOUJGOUE4ODAxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUJGOUE4N0UxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwICovOyB9OwogCQk5QkY5QTg4MTE2NDhERDJGMDAxQzZCMjMgLyogSlNI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUJGOUE4N0YxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaCAqLzsgfTsKKwkJOUQ2MzgwMTAxQUYxNzMyMjAwMzFBMTVDIC8q
IFN0eWxlU2VsZkFsaWdubWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlENjM4MDBGMUFGMTZFMTYwMDMxQTE1QyAvKiBTdHlsZVNlbGZBbGln
bm1lbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOUY3MjMwNEYxMTE4NEI0MTAwQUQwMTI2IC8qIFNjcmlwdFByb2ZpbGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGNzIzMDRDMTExODRCNDEw
MEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOUZBMzdFRTQxMTcyRkM4MDAwQzRDRDU1IC8qIFNjcmlwdFBy
b2ZpbGVOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5RkEzN0VFMzExNzJGQzgwMDBDNENENTUgLyogU2NyaXB0UHJvZmlsZU5vZGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5RkEzN0VGQTExNzJG
REE2MDBDNENENTUgLyogSlNTY3JpcHRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQTM3RUY2MTE3MkZEOTMwMEM0Q0Q1NSAvKiBKU1Nj
cmlwdFByb2ZpbGUuY3BwICovOyB9OwpAQCAtMTEwNjcsNiArMTEwNjgsNyBAQAogCQk5QkQ4QTk1
OTE4QkVGQzc2MDA5ODdFOUEgLyogQ29sbGVjdGlvbkluZGV4Q2FjaGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sbGVjdGlvbkluZGV4Q2FjaGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkY5QTg3RTE2NDhERDJGMDAxQzZCMjMgLyogSlNI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUJGOUE4N0YxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5RDYzODAwRjFBRjE2RTE2MDAzMUExNUMgLyogU3R5bGVTZWxmQWxpZ25tZW50RGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHlsZVNlbGZBbGlnbm1lbnREYXRhLmg7
IHBhdGggPSBzdHlsZS9TdHlsZVNlbGZBbGlnbm1lbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTlGNzIzMDRDMTExODRCNDEwMEFEMDEyNiAvKiBTY3JpcHRQcm9maWxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFByb2ZpbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUZBMzdFRTMxMTcyRkM4MDAwQzRDRDU1IC8qIFNjcmlw
dFByb2ZpbGVOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFBy
b2ZpbGVOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGQTM3RUVGMTE3MkZE
NDEwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBT
Y3JpcHRQcm9maWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMzYwLDYg
KzIxMzYyLDcgQEAKIAkJQkM4QzhGQUEwRERDRDJGMjAwQjU5MkY0IC8qIHN0eWxlICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5RDYzODAwRjFBRjE2RTE2
MDAzMUExNUMgLyogU3R5bGVTZWxmQWxpZ25tZW50RGF0YS5oICovLAogCQkJCUZCRDZBRjgyMTVF
RjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8sCiAJCQkJRkJENkFGODMxNUVGMjFB
MzAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggKi8sCiAJCQkJQkM1RUI1RTAwRTgxQkU4NzAwQjI1
OTY1IC8qIEJvcmRlckRhdGEuaCAqLywKQEAgLTIzOTc1LDYgKzIzOTc4LDcgQEAKIAkJCQlDRTEy
NTIzNzFBMTVCREJFMDA4NjQ0ODAgLyogQ29yZUdyYXBoaWNzU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NDM4MTgwMDFBOTFCMkY4MDA2RTA0RjIgLyogQ29yZU1lZGlhU29mdExpbmsuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdDOURCRkVFMUE5QzQ5QjEwMDBENkIyNSAvKiBKU0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUQ2MzgwMTAxQUYxNzMyMjAwMzFBMTVD
IC8qIFN0eWxlU2VsZkFsaWdubWVudERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0NDlBNDA1
MUE5NjRCMDAwMEI2NEFENSAvKiBDb3JlTWVkaWFTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFD
NjQ2NjI1MUExMkMzOEUwMDk0NjAzQyAvKiBDb3JlVGV4dFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODYyRjEyOUUxOEMxNTc2RjAwNUM1NEFGIC8qIENvdW50ZWRVc2VyQWN0aXZpdHkuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAppbmRleCAzMWZmMGE4NThmYzQ4YWI0NDg2NjllZTcyY2ViZTY1YWJkMTQw
OTY2Li45ZTdjYWY4ZmIyZDg0Y2E5Y2ZiZmE5ZTYxOThkOTkxNzdlZWFjYzUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAt
MTcyOCw3ICsxNzI4LDcgQEAgc3RhdGljIEl0ZW1Qb3NpdGlvbiByZXNvbHZlU2VsZkFsaWdubWVu
dEF1dG8oSXRlbVBvc2l0aW9uIHBvc2l0aW9uLCBPdmVyZmxvd0FsaWcKICAgICAgICAgcmV0dXJu
IEl0ZW1Qb3NpdGlvblN0YXJ0OwogCiAgICAgb3ZlcmZsb3cgPSBwYXJlbnQtPnN0eWxlKCkuYWxp
Z25JdGVtc092ZXJmbG93QWxpZ25tZW50KCk7Ci0gICAgcmV0dXJuIHJlc29sdmVDb250YWluZXJB
bGlnbm1lbnRBdXRvKHBhcmVudC0+c3R5bGUoKS5hbGlnbkl0ZW1zKCksIHBhcmVudCk7CisgICAg
cmV0dXJuIHJlc29sdmVDb250YWluZXJBbGlnbm1lbnRBdXRvKHBhcmVudC0+c3R5bGUoKS5hbGln
bkl0ZW1zUG9zaXRpb24oKSwgcGFyZW50KTsKIH0KIAogUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCB1cGRhdGVMYXlvdXQpIGNvbnN0CkBAIC0yMTg2
LDEwICsyMTg2LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlBbGlnbkNvbnRlbnQ6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCku
Y3JlYXRlVmFsdWUoc3R5bGUtPmFsaWduQ29udGVudCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUFsaWduSXRlbXM6Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JJdGVtUG9zaXRpb25X
aXRoT3ZlcmZsb3dBbGlnbm1lbnQocmVzb2x2ZUNvbnRhaW5lckFsaWdubWVudEF1dG8oc3R5bGUt
PmFsaWduSXRlbXMoKSwgcmVuZGVyZXIpLCBzdHlsZS0+YWxpZ25JdGVtc092ZXJmbG93QWxpZ25t
ZW50KCksIE5vbkxlZ2FjeVBvc2l0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckl0
ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0FsaWdubWVudChyZXNvbHZlQ29udGFpbmVyQWxpZ25tZW50
QXV0byhzdHlsZS0+YWxpZ25JdGVtc1Bvc2l0aW9uKCksIHJlbmRlcmVyKSwgc3R5bGUtPmFsaWdu
SXRlbXNPdmVyZmxvd0FsaWdubWVudCgpLCBOb25MZWdhY3lQb3NpdGlvbik7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlBbGlnblNlbGY6IHsKICAgICAgICAgICAgIE92ZXJmbG93QWxpZ25tZW50
IG92ZXJmbG93ID0gc3R5bGUtPmFsaWduU2VsZk92ZXJmbG93QWxpZ25tZW50KCk7Ci0gICAgICAg
ICAgICBJdGVtUG9zaXRpb24gYWxpZ25TZWxmID0gcmVzb2x2ZVNlbGZBbGlnbm1lbnRBdXRvKHN0
eWxlLT5hbGlnblNlbGYoKSwgb3ZlcmZsb3csIHJlbmRlcmVyKTsKKyAgICAgICAgICAgIEl0ZW1Q
b3NpdGlvbiBhbGlnblNlbGYgPSByZXNvbHZlU2VsZkFsaWdubWVudEF1dG8oc3R5bGUtPmFsaWdu
U2VsZlBvc2l0aW9uKCksIG92ZXJmbG93LCByZW5kZXJlcik7CiAgICAgICAgICAgICByZXR1cm4g
dmFsdWVGb3JJdGVtUG9zaXRpb25XaXRoT3ZlcmZsb3dBbGlnbm1lbnQoYWxpZ25TZWxmLCBvdmVy
ZmxvdywgTm9uTGVnYWN5UG9zaXRpb24pOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlGbGV4OgpAQCAtMjIwOSwxMCArMjIwOSwxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVy
dAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUNvbnRlbnQ6CiAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPmp1c3RpZnlDb250ZW50KCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlmeUl0ZW1zOgotICAgICAgICAgICAgcmV0
dXJuIHZhbHVlRm9ySXRlbVBvc2l0aW9uV2l0aE92ZXJmbG93QWxpZ25tZW50KHJlc29sdmVDb250
YWluZXJBbGlnbm1lbnRBdXRvKHN0eWxlLT5qdXN0aWZ5SXRlbXMoKSwgcmVuZGVyZXIpLCBzdHls
ZS0+anVzdGlmeUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoKSwgc3R5bGUtPmp1c3RpZnlJdGVtc1Bv
c2l0aW9uVHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckl0ZW1Qb3NpdGlvbldp
dGhPdmVyZmxvd0FsaWdubWVudChyZXNvbHZlQ29udGFpbmVyQWxpZ25tZW50QXV0byhzdHlsZS0+
anVzdGlmeUl0ZW1zUG9zaXRpb24oKSwgcmVuZGVyZXIpLCBzdHlsZS0+anVzdGlmeUl0ZW1zT3Zl
cmZsb3dBbGlnbm1lbnQoKSwgc3R5bGUtPmp1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZSgpKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUp1c3RpZnlTZWxmOiB7CiAgICAgICAgICAgICBPdmVyZmxv
d0FsaWdubWVudCBvdmVyZmxvdyA9IHN0eWxlLT5qdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50
KCk7Ci0gICAgICAgICAgICBJdGVtUG9zaXRpb24ganVzdGlmeVNlbGYgPSByZXNvbHZlU2VsZkFs
aWdubWVudEF1dG8oc3R5bGUtPmp1c3RpZnlTZWxmKCksIG92ZXJmbG93LCByZW5kZXJlcik7Cisg
ICAgICAgICAgICBJdGVtUG9zaXRpb24ganVzdGlmeVNlbGYgPSByZXNvbHZlU2VsZkFsaWdubWVu
dEF1dG8oc3R5bGUtPmp1c3RpZnlTZWxmUG9zaXRpb24oKSwgb3ZlcmZsb3csIHJlbmRlcmVyKTsK
ICAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckl0ZW1Qb3NpdGlvbldpdGhPdmVyZmxvd0FsaWdu
bWVudChqdXN0aWZ5U2VsZiwgb3ZlcmZsb3csIE5vbkxlZ2FjeVBvc2l0aW9uKTsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3JkZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eU5hbWVzLmluCmluZGV4IDA3NDJmZGM5MjM4NzI5NjBkYmEzN2VkNWU1ZDE1NDUzYTc0ZWFj
ODEuLjdjZjVmMGRmNjI5MTNhN2RjZmEyMGUxOTYzMDdmYTEzZTE1ZmE5ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC00NTUsOSArNDU1LDkgQEAgaXNvbGF0aW9u
CiAtd2Via2l0LWZpbHRlciBbQ29uZGl0aW9uYWxDb252ZXJ0ZXI9RmlsdGVyT3BlcmF0aW9uc10K
IGFsaWduLWNvbnRlbnQKIC13ZWJraXQtYWxpZ24tY29udGVudCA9IGFsaWduLWNvbnRlbnQKLWFs
aWduLWl0ZW1zIFtDdXN0b209QWxsXQorYWxpZ24taXRlbXMgW0luaXRpYWw9aW5pdGlhbFNlbGZB
bGlnbm1lbnQsIENvbnZlcnRlcj1TZWxmT3JEZWZhdWx0QWxpZ25tZW50RGF0YV0KIC13ZWJraXQt
YWxpZ24taXRlbXMgPSBhbGlnbi1pdGVtcwotYWxpZ24tc2VsZiBbQ3VzdG9tPUFsbF0KK2FsaWdu
LXNlbGYgW0luaXRpYWw9aW5pdGlhbFNlbGZBbGlnbm1lbnQsIENvbnZlcnRlcj1TZWxmT3JEZWZh
dWx0QWxpZ25tZW50RGF0YV0KIC13ZWJraXQtYWxpZ24tc2VsZiA9IGFsaWduLXNlbGYKIGZsZXgg
W0xvbmdoYW5kcz1mbGV4LWdyb3d8ZmxleC1zaHJpbmt8ZmxleC1iYXNpc10KIC13ZWJraXQtZmxl
eCA9IGZsZXgKQEAgLTQ3OCw5ICs0NzgsOSBAQCBqdXN0aWZ5LWNvbnRlbnQKICNpZiBkZWZpbmVk
KEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpICYmIEVOQUJMRV9GSUxURVJTX0xFVkVMXzIKIC13ZWJr
aXQtYmFja2Ryb3AtZmlsdGVyIFtDb25kaXRpb25hbENvbnZlcnRlcj1GaWx0ZXJPcGVyYXRpb25z
XQogI2VuZGlmCi1qdXN0aWZ5LXNlbGYgW0N1c3RvbT1BbGxdCitqdXN0aWZ5LXNlbGYgW0luaXRp
YWw9aW5pdGlhbFNlbGZBbGlnbm1lbnQsIENvbnZlcnRlcj1TZWxmT3JEZWZhdWx0QWxpZ25tZW50
RGF0YV0KIC13ZWJraXQtZm9udC1zaXplLWRlbHRhIFtTa2lwQnVpbGRlcl0KLWp1c3RpZnktaXRl
bXMgW0N1c3RvbT1BbGxdCitqdXN0aWZ5LWl0ZW1zIFtJbml0aWFsPWluaXRpYWxTZWxmQWxpZ25t
ZW50LCBDb252ZXJ0ZXI9U2VsZk9yRGVmYXVsdEFsaWdubWVudERhdGFdCiAtd2Via2l0LWp1c3Rp
ZnktaXRlbXMgPSBqdXN0aWZ5LWl0ZW1zCiAjaWYgZGVmaW5lZChFTkFCTEVfQ1NTX0dSSURfTEFZ
T1VUKSAmJiBFTkFCTEVfQ1NTX0dSSURfTEFZT1VUCiAtd2Via2l0LWdyaWQgW0xvbmdoYW5kcz0t
d2Via2l0LWdyaWQtdGVtcGxhdGUtY29sdW1uc3wtd2Via2l0LWdyaWQtdGVtcGxhdGUtcm93c3wt
d2Via2l0LWdyaWQtdGVtcGxhdGUtYXJlYXN8LXdlYmtpdC1ncmlkLWF1dG8tZmxvd3wtd2Via2l0
LWdyaWQtYXV0by1jb2x1bW5zfC13ZWJraXQtZ3JpZC1hdXRvLXJvd3NdCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggODUxNWM5YjRhMWFjMWRhOTE2Mjhh
MWFhZGNjZDgyYTUwNmU5NDUwNS4uNWQ0MDY2YWJmYjNjZmUyZDJiODJlM2RmMmE1MGM2YzEyNmZh
Yjg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAt
MTIxLDYgKzEyMSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgZmxvYXQgY29udmVydE9wYWNpdHko
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U1ZH
VVJJUmVmZXJlbmNlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBDb2xv
ciBjb252ZXJ0U1ZHQ29sb3IoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CisgICAgc3RhdGlj
IFN0eWxlU2VsZkFsaWdubWVudERhdGEgY29udmVydFNlbGZPckRlZmF1bHRBbGlnbm1lbnREYXRh
KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBFR2x5cGhPcmllbnRhdGlv
biBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAg
ICBzdGF0aWMgRUdseXBoT3JpZW50YXRpb24gY29udmVydEdseXBoT3JpZW50YXRpb25PckF1dG8o
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIE9wdGlvbmFsPExlbmd0aD4g
Y29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiwgZmxvYXQgbXVsdGlw
bGllciA9IDEuZik7CkBAIC0xMTY5LDYgKzExNzAsMjMgQEAgaW5saW5lIENvbG9yIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFNWR0NvbG9yKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIKICAgICByZXR1cm4gc3ZnQ29sb3IuY29sb3JUeXBlKCkgPT0gU1ZHQ29sb3I6OlNWR19DT0xP
UlRZUEVfQ1VSUkVOVENPTE9SID8gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5jb2xvcigpIDogc3Zn
Q29sb3IuY29sb3IoKTsKIH0KIAoraW5saW5lIFN0eWxlU2VsZkFsaWdubWVudERhdGEgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9yRGVmYXVsdEFsaWdubWVudERhdGEoU3R5bGVS
ZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRh
IGFsaWdubWVudERhdGEgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKTsKKyAg
ICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSk7CisgICAgaWYgKFBhaXIqIHBhaXJWYWx1ZSA9IHByaW1pdGl2ZVZhbHVlLmdldFBhaXJWYWx1
ZSgpKSB7CisgICAgICAgIGlmIChwYWlyVmFsdWUtPmZpcnN0KCktPmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUxlZ2FjeSkgeworICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvblR5
cGUoTGVnYWN5UG9zaXRpb24pOworICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlv
bigqcGFpclZhbHVlLT5zZWNvbmQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBh
bGlnbm1lbnREYXRhLnNldFBvc2l0aW9uKCpwYWlyVmFsdWUtPmZpcnN0KCkpOworICAgICAgICAg
ICAgYWxpZ25tZW50RGF0YS5zZXRPdmVyZmxvdygqcGFpclZhbHVlLT5zZWNvbmQoKSk7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbihwcmlt
aXRpdmVWYWx1ZSk7CisgICAgcmV0dXJuIGFsaWdubWVudERhdGE7Cit9CisKIGlubGluZSBFR2x5
cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9yaWVudGF0
aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgZmxvYXQgYW5nbGUg
PSBmYWJzZihmbW9kZihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldEZsb2F0
VmFsdWUoKSwgMzYwLjBmKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgK
aW5kZXggYzA3YmE3ZDE3NDBhYjcyMTNiOTM1MmI3M2RjNjQ5YjlhODJhYjJiNC4uYTVjZGMwYTlh
NmFlNzZhZjgyZDY0NjdjOTM5ZmRlYmQxZmMwNmY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXJDdXN0b20uaApAQCAtMTAzLDEwICsxMDMsNiBAQCBwdWJsaWM6CiAgICAgREVDTEFS
RV9QUk9QRVJUWV9DVVNUT01fSEFORExFUlMoV2Via2l0U3ZnU2hhZG93KTsKICAgICBERUNMQVJF
X1BST1BFUlRZX0NVU1RPTV9IQU5ETEVSUyhXZWJraXRUZXh0RW1waGFzaXNTdHlsZSk7CiAgICAg
REVDTEFSRV9QUk9QRVJUWV9DVVNUT01fSEFORExFUlMoWm9vbSk7Ci0gICAgREVDTEFSRV9QUk9Q
RVJUWV9DVVNUT01fSEFORExFUlMoSnVzdGlmeVNlbGYpOwotICAgIERFQ0xBUkVfUFJPUEVSVFlf
Q1VTVE9NX0hBTkRMRVJTKEp1c3RpZnlJdGVtcyk7Ci0gICAgREVDTEFSRV9QUk9QRVJUWV9DVVNU
T01fSEFORExFUlMoQWxpZ25JdGVtcyk7Ci0gICAgREVDTEFSRV9QUk9QRVJUWV9DVVNUT01fSEFO
RExFUlMoQWxpZ25TZWxmKTsKIAogICAgIC8vIEN1c3RvbSBoYW5kbGluZyBvZiBpbml0aWFsICsg
aW5oZXJpdCB2YWx1ZSBzZXR0aW5nIG9ubHkuCiAgICAgc3RhdGljIHZvaWQgYXBwbHlJbml0aWFs
V2Via2l0TWFza0ltYWdlKFN0eWxlUmVzb2x2ZXImKSB7IH0KQEAgLTUwOCwxMTEgKzUwNCw2IEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRJbmRlbnQoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRBbGlnblNlbGYoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlcikKLXsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEFsaWduU2VsZihzdHls
ZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmFsaWduU2VsZigpKTsKLSAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldEFsaWduU2VsZk92ZXJmbG93QWxpZ25tZW50KHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+YWxpZ25TZWxmT3ZlcmZsb3dBbGlnbm1lbnQoKSk7Ci19Ci0KLWlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFsQWxpZ25TZWxmKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIpCi17Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRBbGln
blNlbGYoUmVuZGVyU3R5bGU6OmluaXRpYWxBbGlnblNlbGYoKSk7Ci0gICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRBbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudChSZW5kZXJTdHlsZTo6aW5p
dGlhbEFsaWduU2VsZk92ZXJmbG93QWxpZ25tZW50KCkpOwotfQotCi1pbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbGlnblNlbGYoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQotewotICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAoUGFpciogcGFpclZh
bHVlID0gcHJpbWl0aXZlVmFsdWUuZ2V0UGFpclZhbHVlKCkpIHsKLSAgICAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRBbGlnblNlbGYoKnBhaXJWYWx1ZS0+Zmlyc3QoKSk7Ci0gICAgICAg
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0QWxpZ25TZWxmT3ZlcmZsb3dBbGlnbm1lbnQoKnBh
aXJWYWx1ZS0+c2Vjb25kKCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0QWxpZ25TZWxmKHByaW1pdGl2ZVZhbHVlKTsKLSAgICAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRBbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudChSZW5kZXJTdHlsZTo6
aW5pdGlhbEFsaWduU2VsZk92ZXJmbG93QWxpZ25tZW50KCkpOwotICAgIH0KLX0KLQotaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRBbGlnbkl0ZW1zKFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIpCi17Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRB
bGlnbkl0ZW1zKHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+YWxpZ25JdGVtcygpKTsKLSAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEFsaWduSXRlbXNPdmVyZmxvd0FsaWdubWVudChz
dHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPmFsaWduSXRlbXNPdmVyZmxvd0FsaWdubWVudCgp
KTsKLX0KLQotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxBbGln
bkl0ZW1zKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCi17Ci0gICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRBbGlnbkl0ZW1zKFJlbmRlclN0eWxlOjppbml0aWFsQWxpZ25JdGVtcygp
KTsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEFsaWduSXRlbXNPdmVyZmxvd0FsaWdu
bWVudChSZW5kZXJTdHlsZTo6aW5pdGlhbEFsaWduSXRlbXNPdmVyZmxvd0FsaWdubWVudCgpKTsK
LX0KLQotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQWxpZ25JdGVt
cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCi17Ci0gICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwotICAgIGlmIChQYWlyKiBwYWlyVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5nZXRQYWlyVmFsdWUo
KSkgewotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEFsaWduSXRlbXMoKnBhaXJW
YWx1ZS0+Zmlyc3QoKSk7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0QWxpZ25J
dGVtc092ZXJmbG93QWxpZ25tZW50KCpwYWlyVmFsdWUtPnNlY29uZCgpKTsKLSAgICB9IGVsc2Ug
ewotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEFsaWduSXRlbXMocHJpbWl0aXZl
VmFsdWUpOwotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEFsaWduSXRlbXNPdmVy
Zmxvd0FsaWdubWVudChSZW5kZXJTdHlsZTo6aW5pdGlhbEFsaWduSXRlbXNPdmVyZmxvd0FsaWdu
bWVudCgpKTsKLSAgICB9Ci19Ci0KLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlJbmhlcml0SnVzdGlmeVNlbGYoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKLXsKLSAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEp1c3RpZnlTZWxmKHN0eWxlUmVzb2x2ZXIucGFy
ZW50U3R5bGUoKS0+anVzdGlmeVNlbGYoKSk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRKdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUo
KS0+anVzdGlmeVNlbGZPdmVyZmxvd0FsaWdubWVudCgpKTsKLX0KLQotaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxKdXN0aWZ5U2VsZihTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyKQotewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0SnVzdGlmeVNl
bGYoUmVuZGVyU3R5bGU6OmluaXRpYWxKdXN0aWZ5U2VsZigpKTsKLSAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldEp1c3RpZnlTZWxmT3ZlcmZsb3dBbGlnbm1lbnQoUmVuZGVyU3R5bGU6Omlu
aXRpYWxKdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KCkpOwotfQotCi1pbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVKdXN0aWZ5U2VsZihTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCi17Ci0gICAgYXV0byYgcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChQYWlyKiBw
YWlyVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5nZXRQYWlyVmFsdWUoKSkgewotICAgICAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldEp1c3RpZnlTZWxmKCpwYWlyVmFsdWUtPmZpcnN0KCkpOwot
ICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEp1c3RpZnlTZWxmT3ZlcmZsb3dBbGln
bm1lbnQoKnBhaXJWYWx1ZS0+c2Vjb25kKCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0SnVzdGlmeVNlbGYocHJpbWl0aXZlVmFsdWUpOwotICAgICAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEp1c3RpZnlTZWxmT3ZlcmZsb3dBbGlnbm1lbnQo
UmVuZGVyU3R5bGU6OmluaXRpYWxKdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KCkpOwotICAg
IH0KLX0KLQotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRKdXN0
aWZ5SXRlbXMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKLXsKLSAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldEp1c3RpZnlJdGVtcyhzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCkt
Pmp1c3RpZnlJdGVtcygpKTsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEp1c3RpZnlJ
dGVtc092ZXJmbG93QWxpZ25tZW50KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+anVzdGlm
eUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoKSk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRKdXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5q
dXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoKSk7Ci19Ci0KLWlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlJbml0aWFsSnVzdGlmeUl0ZW1zKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIpCi17Ci0gICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRKdXN0aWZ5SXRlbXMoUmVu
ZGVyU3R5bGU6OmluaXRpYWxKdXN0aWZ5SXRlbXMoKSk7Ci0gICAgc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5zZXRKdXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudChSZW5kZXJTdHlsZTo6aW5pdGlh
bEp1c3RpZnlJdGVtc092ZXJmbG93QWxpZ25tZW50KCkpOwotICAgIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c2V0SnVzdGlmeUl0ZW1zUG9zaXRpb25UeXBlKFJlbmRlclN0eWxlOjppbml0aWFsSnVz
dGlmeUl0ZW1zUG9zaXRpb25UeXBlKCkpOwotfQotCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVKdXN0aWZ5SXRlbXMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgQ1NTVmFsdWUmIHZhbHVlKQotewotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0SnVz
dGlmeUl0ZW1zKFJlbmRlclN0eWxlOjppbml0aWFsSnVzdGlmeUl0ZW1zKCkpOwotICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0SnVzdGlmeUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoUmVuZGVy
U3R5bGU6OmluaXRpYWxKdXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudCgpKTsKLSAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZShSZW5kZXJTdHls
ZTo6aW5pdGlhbEp1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZSgpKTsKLQotICAgIGF1dG8mIHByaW1p
dGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAo
UGFpciogcGFpclZhbHVlID0gcHJpbWl0aXZlVmFsdWUuZ2V0UGFpclZhbHVlKCkpIHsKLSAgICAg
ICAgaWYgKHBhaXJWYWx1ZS0+Zmlyc3QoKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTGVnYWN5
KSB7Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEp1c3RpZnlJdGVtc1Bv
c2l0aW9uVHlwZShMZWdhY3lQb3NpdGlvbik7Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldEp1c3RpZnlJdGVtcygqcGFpclZhbHVlLT5zZWNvbmQoKSk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEp1c3RpZnlJdGVt
cygqcGFpclZhbHVlLT5maXJzdCgpKTsKLSAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0SnVzdGlmeUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoKnBhaXJWYWx1ZS0+c2Vjb25kKCkp
OwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
c2V0SnVzdGlmeUl0ZW1zKHByaW1pdGl2ZVZhbHVlKTsKLX0KLQogZW51bSBCb3JkZXJJbWFnZVR5
cGUgeyBCb3JkZXJJbWFnZSwgV2Via2l0TWFza0JveEltYWdlIH07CiBlbnVtIEJvcmRlckltYWdl
TW9kaWZpZXJUeXBlIHsgT3V0c2V0LCBSZXBlYXQsIFNsaWNlLCBXaWR0aCB9OwogdGVtcGxhdGUg
PEJvcmRlckltYWdlVHlwZSB0eXBlLCBCb3JkZXJJbWFnZU1vZGlmaWVyVHlwZSBtb2RpZmllcj4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAwZWI1MzZmOGVmYTUyYjcyYzJm
NmNjYTYzNDdiYWEzOWRjNDU1NzRlLi42NjdlMDdkMTAwMjc4Y2RkZDI1ZTQwOTYyMDhmOTA3YTM4
OWFmNTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xNDM3LDEwICsx
NDM3LDggQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZShSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBwYXIKIAogICAgIC8vIElmIHRoZSBpbmhlcml0
ZWQgdmFsdWUgb2YganVzdGlmeS1pdGVtcyBpbmNsdWRlcyB0aGUgbGVnYWN5IGtleXdvcmQsICdh
dXRvJwogICAgIC8vIGNvbXB1dGVzIHRvIHRoZSB0aGUgaW5oZXJpdGVkIHZhbHVlLgotICAgIGlm
IChwYXJlbnRTdHlsZS5qdXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUoKSA9PSBMZWdhY3lQb3NpdGlv
biAmJiBzdHlsZS5qdXN0aWZ5SXRlbXMoKSA9PSBJdGVtUG9zaXRpb25BdXRvKSB7CisgICAgaWYg
KHBhcmVudFN0eWxlLmp1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZSgpID09IExlZ2FjeVBvc2l0aW9u
ICYmIHN0eWxlLmp1c3RpZnlJdGVtc1Bvc2l0aW9uKCkgPT0gSXRlbVBvc2l0aW9uQXV0bykKICAg
ICAgICAgc3R5bGUuc2V0SnVzdGlmeUl0ZW1zKHBhcmVudFN0eWxlLmp1c3RpZnlJdGVtcygpKTsK
LSAgICAgICAgc3R5bGUuc2V0SnVzdGlmeUl0ZW1zUG9zaXRpb25UeXBlKHBhcmVudFN0eWxlLmp1
c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZSgpKTsKLSAgICB9CiB9CiAKIGJvb2wgU3R5bGVSZXNvbHZl
cjo6Y2hlY2tSZWdpb25TdHlsZShFbGVtZW50KiByZWdpb25FbGVtZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKaW5kZXggNGQ3YzFjYTg2YWVjZTFiZTE0
MzM5ZGJiODhmZWNkYjI0ZTM1NzBhOS4uMTc1OTRkMTRlZGM1YWYzZjhmNTMxODY0ZTIwOThmNzk4
ZGJmZjExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3Bw
CkBAIC04OCw3ICs4OCw3IEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxUZXh0RWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsCiAKICAgICAvLyBGSVhN
RTogd2h5IGRvIHdlIGhhdmUgdG8gc2V0IHRoZSBhbGlnbm1lbnQgaGVyZSA/IEl0IHNlZW1zIG5l
ZWRlZCB0byBtYWtlIHRoZQogICAgIC8vIHN0eWxlLWNoYW5nZWQuaHRtdCB0ZXN0IHRvIHBhc3Ms
IHNpbmNlIG1hdGhtbCByZW5kZXJzIGV4cGVjdCBTdHJldGNoIGFzIGRlZmF1bHQuCi0gICAgc3R5
bGUuZ2V0KCkuc2V0QWxpZ25JdGVtcyhJdGVtUG9zaXRpb25TdHJldGNoKTsKKyAgICBzdHlsZS5n
ZXQoKS5zZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uU3RyZXRjaCk7CiAKICAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MVG9rZW4+KCp0aGlzLCBXVEY6Om1vdmUo
c3R5bGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwCmluZGV4IDE2NTBhOWM4ZmQyNzYyODJlZTU1NWVhODI1ZjljZWQ4ZjY1M2ViNDIuLjg0
OWU2ZTI1NmNiYmJmZTMzYzY2MjI4N2VhYmI0ZjBjNTFjMjhhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMjI4LDcgKzIyOCw3IEBA
IHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBk
aWZmLCBjb25zdCBSZW5kZXJTdHlsZSoKIHsKICAgICBSZW5kZXJCbG9jazo6c3R5bGVEaWRDaGFu
Z2UoZGlmZiwgb2xkU3R5bGUpOwogCi0gICAgaWYgKG9sZFN0eWxlICYmIChvbGRTdHlsZS0+YWxp
Z25JdGVtcygpID09IEl0ZW1Qb3NpdGlvblN0cmV0Y2ggfHwgb2xkU3R5bGUtPmFsaWduSXRlbXMo
KSA9PSBJdGVtUG9zaXRpb25BdXRvKSAmJiBkaWZmID09IFN0eWxlRGlmZmVyZW5jZUxheW91dCkg
eworICAgIGlmIChvbGRTdHlsZSAmJiAob2xkU3R5bGUtPmFsaWduSXRlbXNQb3NpdGlvbigpID09
IEl0ZW1Qb3NpdGlvblN0cmV0Y2ggfHwgb2xkU3R5bGUtPmFsaWduSXRlbXNQb3NpdGlvbigpID09
IEl0ZW1Qb3NpdGlvbkF1dG8pICYmIGRpZmYgPT0gU3R5bGVEaWZmZXJlbmNlTGF5b3V0KSB7CiAg
ICAgICAgIC8vIEZsZXggaXRlbXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgc3RyZXRjaGluZyBuZWVk
IHRvIGJlIHJlbGF5ZWQgb3V0IHNvIHdlIGNhbiBjb21wdXRlIG5ldyBhdmFpbGFibGUgY3Jvc3Mg
YXhpcyBzcGFjZS4KICAgICAgICAgLy8gVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBmb3Igc3RyZXRj
aGluZyBzaW5jZSBvdGhlciBhbGlnbm1lbnQgdmFsdWVzIGRvbid0IGNoYW5nZSB0aGUgc2l6ZSBv
ZiB0aGUgYm94LgogICAgICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKaW5kZXggZmQ1ZWJhODkyZDhl
MmQ4OTJlMGIzZDY4YzVjYzk0YTYwOWRiYWQyNy4uODkxMDg3YzVjZTI5NGQ4MGQ4YWY0MTg4ZWQ0
YmJlYjYwNjFhNTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZ1bGxTY3JlZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxs
U2NyZWVuLmNwcApAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgUmVmPFJlbmRlclN0eWxlPiBjcmVh
dGVGdWxsU2NyZWVuU3R5bGUoKQogCiAgICAgZnVsbHNjcmVlblN0eWxlLmdldCgpLnNldERpc3Bs
YXkoRkxFWCk7CiAgICAgZnVsbHNjcmVlblN0eWxlLmdldCgpLnNldEp1c3RpZnlDb250ZW50KEp1
c3RpZnlDZW50ZXIpOwotICAgIGZ1bGxzY3JlZW5TdHlsZS5nZXQoKS5zZXRBbGlnbkl0ZW1zKEl0
ZW1Qb3NpdGlvbkNlbnRlcik7CisgICAgZnVsbHNjcmVlblN0eWxlLmdldCgpLnNldEFsaWduSXRl
bXNQb3NpdGlvbihJdGVtUG9zaXRpb25DZW50ZXIpOwogICAgIGZ1bGxzY3JlZW5TdHlsZS5nZXQo
KS5zZXRGbGV4RGlyZWN0aW9uKEZsb3dDb2x1bW4pOwogICAgIAogICAgIGZ1bGxzY3JlZW5TdHls
ZS5nZXQoKS5zZXRQb3NpdGlvbihGaXhlZFBvc2l0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IGRkYmYwNTA0ZGIwNTg3NTA2ZTU3YTM1ODYz
OTM2M2I1OTYxYjlhOWUuLmRiZTdiMWJhYjQzN2QzZmY0NzEzMzBhMjg1ZWU3ZTZkMzRjYmRhOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMTE4
LDEwICsxMTgsMTAgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAg
ICAgLy8gVXNlIG1hcmdpbjphdXRvIGluc3RlYWQgb2YgYWxpZ24taXRlbXM6Y2VudGVyIHRvIGdl
dCBzYWZlIGNlbnRlcmluZywgaS5lLgogICAgIC8vIHdoZW4gdGhlIGNvbnRlbnQgb3ZlcmZsb3dz
LCB0cmVhdCBpdCB0aGUgc2FtZSBhcyBhbGlnbi1pdGVtczogZmxleC1zdGFydC4KICAgICAvLyBC
dXQgd2Ugb25seSBkbyB0aGF0IGZvciB0aGUgY2FzZXMgd2hlcmUgaHRtbC5jc3Mgd291bGQgb3Ro
ZXJ3aXNlIHVzZSBjZW50ZXIuCi0gICAgaWYgKHN0eWxlKCkuYWxpZ25JdGVtcygpID09IEl0ZW1Q
b3NpdGlvbkNlbnRlcikgeworICAgIGlmIChzdHlsZSgpLmFsaWduSXRlbXNQb3NpdGlvbigpID09
IEl0ZW1Qb3NpdGlvbkNlbnRlcikgewogICAgICAgICBpbm5lclN0eWxlLnNldE1hcmdpblRvcChM
ZW5ndGgoKSk7CiAgICAgICAgIGlubmVyU3R5bGUuc2V0TWFyZ2luQm90dG9tKExlbmd0aCgpKTsK
LSAgICAgICAgaW5uZXJTdHlsZS5zZXRBbGlnblNlbGYoSXRlbVBvc2l0aW9uRmxleFN0YXJ0KTsK
KyAgICAgICAgaW5uZXJTdHlsZS5zZXRBbGlnblNlbGZQb3NpdGlvbihJdGVtUG9zaXRpb25GbGV4
U3RhcnQpOwogICAgIH0KIAogICAgIGlubmVyU3R5bGUuc2V0UGFkZGluZ0xlZnQoTGVuZ3RoKHRo
ZW1lKCkucG9wdXBJbnRlcm5hbFBhZGRpbmdMZWZ0KHN0eWxlKCkpLCBGaXhlZCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAK
aW5kZXggM2JmYzY4ZGM4OGM1MTc3Mzc5ZDVkOTFmZTFmNDIyNTQyMjgyODA3ZS4uZGM4ZmI2YmI2
ZmNmNDQ0OGYwYWE4Y2JjZWE2MmIxZjY1MjJiODQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCkBAIC0yMzMsNyArMjMz
LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSb290Ojp1cGRhdGVTdHlsZSgpCiAgICAgYXV0byBiYXNl
ID0gYmFzZVdyYXBwZXIoKTsKICAgICBhdXRvIGJhc2VTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVh
dGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHlsZSgpLCBGTEVYKTsKICAgICBiYXNlU3R5
bGUuZ2V0KCkuc2V0TWFyZ2luVG9wKExlbmd0aCgwLCBGaXhlZCkpOyAvLyBUaGlzIHdpbGwgYmUg
dXBkYXRlZCBpbiBSZW5kZXJNYXRoTUxSb290OjpsYXlvdXQoKS4KLSAgICBiYXNlU3R5bGUuZ2V0
KCkuc2V0QWxpZ25JdGVtcyhJdGVtUG9zaXRpb25CYXNlbGluZSk7CisgICAgYmFzZVN0eWxlLmdl
dCgpLnNldEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25CYXNlbGluZSk7CiAgICAgYmFz
ZS0+c2V0U3R5bGUoV1RGOjptb3ZlKGJhc2VTdHlsZSkpOwogICAgIGJhc2UtPnNldE5lZWRzTGF5
b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBSZW5k
ZXJNYXRoTUxSb290Ojp1cGRhdGVTdHlsZSgpCiAgICAgICAgIGluZGV4U3R5bGUuZ2V0KCkuc2V0
TWFyZ2luVG9wKExlbmd0aCgwLCBGaXhlZCkpOyAvLyBUaGlzIHdpbGwgYmUgdXBkYXRlZCBpbiBS
ZW5kZXJNYXRoTUxSb290OjpsYXlvdXQoKS4KICAgICAgICAgaW5kZXhTdHlsZS5nZXQoKS5zZXRN
YXJnaW5TdGFydChMZW5ndGgoa2VybkJlZm9yZURlZ3JlZSwgRml4ZWQpKTsKICAgICAgICAgaW5k
ZXhTdHlsZS5nZXQoKS5zZXRNYXJnaW5FbmQoTGVuZ3RoKGtlcm5BZnRlckRlZ3JlZSwgRml4ZWQp
KTsKLSAgICAgICAgaW5kZXhTdHlsZS5nZXQoKS5zZXRBbGlnbkl0ZW1zKEl0ZW1Qb3NpdGlvbkJh
c2VsaW5lKTsKKyAgICAgICAgaW5kZXhTdHlsZS5nZXQoKS5zZXRBbGlnbkl0ZW1zUG9zaXRpb24o
SXRlbVBvc2l0aW9uQmFzZWxpbmUpOwogICAgICAgICBpbmRleC0+c2V0U3R5bGUoV1RGOjptb3Zl
KGluZGV4U3R5bGUpKTsKICAgICAgICAgaW5kZXgtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRo
c1JlY2FsYygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCmluZGV4IGQ4YzNiYmRmZjFiZjQzOTVmN2Y1
MmNkZTg3YjcwNTU4NDhiMWM4MWYuLjQxNjFlNDYxNjAyOGI0MGIyYTUxMzViYTllZGViNWY4YmQz
ODJkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU2NyaXB0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgUmVuZGVyTWF0
aE1MU2NyaXB0czo6Zml4QW5vbnltb3VzU3R5bGVGb3JTdWJTdXBQYWlyKFJlbmRlck9iamVjdCog
c3ViU3VwUGFpCiAgICAgLy8gVGhlIE1hdGhNTCBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IHNwZWNp
ZnkgdmVydGljYWwgYWxpZ25tZW50IG9mIHNjcmlwdHMuCiAgICAgLy8gTGV0J3MgcmlnaHQgYWxp
Z24gcHJlc2NyaXB0cyBhbmQgbGVmdCBhbGlnbiBwb3N0c2NyaXB0cy4KICAgICAvLyBTZWUgaHR0
cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LW1hdGgvMjAxMkF1Zy8wMDA2Lmh0
bWwKLSAgICBzY3JpcHRzU3R5bGUuc2V0QWxpZ25JdGVtcyhpc1Bvc3RTY3JpcHQgPyBJdGVtUG9z
aXRpb25GbGV4U3RhcnQgOiBJdGVtUG9zaXRpb25GbGV4RW5kKTsKKyAgICBzY3JpcHRzU3R5bGUu
c2V0QWxpZ25JdGVtc1Bvc2l0aW9uKGlzUG9zdFNjcmlwdCA/IEl0ZW1Qb3NpdGlvbkZsZXhTdGFy
dCA6IEl0ZW1Qb3NpdGlvbkZsZXhFbmQpOwogCiAgICAgLy8gV2Ugc2V0IHRoZSBvcmRlciBwcm9w
ZXJ0eSBzbyB0aGF0IHRoZSBwcmVzY3JpcHRzIGFyZSBkcmF3biBiZWZvcmUgdGhlIGJhc2UuCiAg
ICAgc2NyaXB0c1N0eWxlLnNldE9yZGVyKGlzUG9zdFNjcmlwdCA/IDAgOiAtMSk7CkBAIC0xMTQs
NyArMTE0LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXhBbm9ueW1vdXNTdHlsZXMo
KQogewogICAgIC8vIFdlIHNldCB0aGUgYmFzZSB3cmFwcGVyJ3Mgc3R5bGUgc28gdGhhdCBiYXNl
SGVpZ2h0IGluIGxheW91dCgpIHdpbGwgYmUgYW4gdW5zdHJldGNoZWQgaGVpZ2h0LgogICAgIEFT
U0VSVChtX2Jhc2VXcmFwcGVyICYmIG1fYmFzZVdyYXBwZXItPnN0eWxlKCkuaGFzT25lUmVmKCkp
OwotICAgIG1fYmFzZVdyYXBwZXItPnN0eWxlKCkuc2V0QWxpZ25TZWxmKEl0ZW1Qb3NpdGlvbkZs
ZXhTdGFydCk7CisgICAgbV9iYXNlV3JhcHBlci0+c3R5bGUoKS5zZXRBbGlnblNlbGZQb3NpdGlv
bihJdGVtUG9zaXRpb25GbGV4U3RhcnQpOwogCiAgICAgLy8gVGhpcyBzZXRzIHRoZSBzdHlsZSBm
b3IgcG9zdHNjcmlwdCBwYWlycy4KICAgICBSZW5kZXJPYmplY3QqIHN1YlN1cFBhaXIgPSBtX2Jh
c2VXcmFwcGVyOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6
Zml4QW5vbnltb3VzU3R5bGVzKCkKICAgICAgICAgICAgIFJlbmRlclN0eWxlJiBzY3JpcHRzU3R5
bGUgPSBzdWJTdXBQYWlyLT5zdHlsZSgpOwogICAgICAgICAgICAgc2NyaXB0c1N0eWxlLnNldEZs
ZXhEaXJlY3Rpb24oRmxvd1Jvdyk7CiAgICAgICAgICAgICBzY3JpcHRzU3R5bGUuc2V0SnVzdGlm
eUNvbnRlbnQoSnVzdGlmeUZsZXhTdGFydCk7Ci0gICAgICAgICAgICBzY3JpcHRzU3R5bGUuc2V0
QWxpZ25JdGVtcyhJdGVtUG9zaXRpb25DZW50ZXIpOworICAgICAgICAgICAgc2NyaXB0c1N0eWxl
LnNldEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25DZW50ZXIpOwogICAgICAgICAgICAg
c2NyaXB0c1N0eWxlLnNldE9yZGVyKDApOwogICAgICAgICAgICAgc2NyaXB0c1N0eWxlLnNldEZv
bnRTaXplKHN0eWxlKCkuZm9udFNpemUoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGU5NTUyNTE1OTgyMTc3NGVi
MzVlNjYzYzgwMjg4MjIxOWQyNjVlYTcuLmU3M2Y5Mjk3MTIyNGRhNzljMjBjY2E3NTc2N2JlZmRl
Y2EzNGZhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcApAQCAtMTc0LDE2ICsxNzQsMTYgQEAgQUxXQVlTX0lOTElORSBSZW5kZXJTdHlsZTo6
UmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG8pCiBJdGVtUG9zaXRpb24gUmVuZGVyU3R5
bGU6OnJlc29sdmVBbGlnbm1lbnQoY29uc3QgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSYgY2hpbGRTdHlsZSwgSXRlbVBvc2l0aW9uIHJlc29sdmVkQXV0b1Bvc2l0
aW9uRm9yUmVuZGVyZXIpCiB7CiAgICAgLy8gVGhlIGF1dG8ga2V5d29yZCBjb21wdXRlcyB0byB0
aGUgcGFyZW50J3MgYWxpZ24taXRlbXMgY29tcHV0ZWQgdmFsdWUsIG9yIHRvICJzdHJldGNoIiwg
aWYgbm90IHNldCBvciAiYXV0byIuCi0gICAgaWYgKGNoaWxkU3R5bGUuYWxpZ25TZWxmKCkgPT0g
SXRlbVBvc2l0aW9uQXV0bykKLSAgICAgICAgcmV0dXJuIChwYXJlbnRTdHlsZS5hbGlnbkl0ZW1z
KCkgPT0gSXRlbVBvc2l0aW9uQXV0bykgPyByZXNvbHZlZEF1dG9Qb3NpdGlvbkZvclJlbmRlcmVy
IDogcGFyZW50U3R5bGUuYWxpZ25JdGVtcygpOwotICAgIHJldHVybiBjaGlsZFN0eWxlLmFsaWdu
U2VsZigpOworICAgIGlmIChjaGlsZFN0eWxlLmFsaWduU2VsZlBvc2l0aW9uKCkgPT0gSXRlbVBv
c2l0aW9uQXV0bykKKyAgICAgICAgcmV0dXJuIChwYXJlbnRTdHlsZS5hbGlnbkl0ZW1zUG9zaXRp
b24oKSA9PSBJdGVtUG9zaXRpb25BdXRvKSA/IHJlc29sdmVkQXV0b1Bvc2l0aW9uRm9yUmVuZGVy
ZXIgOiBwYXJlbnRTdHlsZS5hbGlnbkl0ZW1zUG9zaXRpb24oKTsKKyAgICByZXR1cm4gY2hpbGRT
dHlsZS5hbGlnblNlbGZQb3NpdGlvbigpOwogfQogCiBJdGVtUG9zaXRpb24gUmVuZGVyU3R5bGU6
OnJlc29sdmVKdXN0aWZpY2F0aW9uKGNvbnN0IFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUmIGNoaWxkU3R5bGUsIEl0ZW1Qb3NpdGlvbiByZXNvbHZlZEF1dG9Qb3Np
dGlvbkZvckxheW91dE9iamVjdCkKIHsKLSAgICBpZiAoY2hpbGRTdHlsZS5qdXN0aWZ5U2VsZigp
ID09IEl0ZW1Qb3NpdGlvbkF1dG8pCi0gICAgICAgIHJldHVybiAocGFyZW50U3R5bGUuanVzdGlm
eUl0ZW1zKCkgPT0gSXRlbVBvc2l0aW9uQXV0bykgPyByZXNvbHZlZEF1dG9Qb3NpdGlvbkZvckxh
eW91dE9iamVjdCA6IHBhcmVudFN0eWxlLmp1c3RpZnlJdGVtcygpOwotICAgIHJldHVybiBjaGls
ZFN0eWxlLmp1c3RpZnlTZWxmKCk7CisgICAgaWYgKGNoaWxkU3R5bGUuanVzdGlmeVNlbGZQb3Np
dGlvbigpID09IEl0ZW1Qb3NpdGlvbkF1dG8pCisgICAgICAgIHJldHVybiAocGFyZW50U3R5bGUu
anVzdGlmeUl0ZW1zUG9zaXRpb24oKSA9PSBJdGVtUG9zaXRpb25BdXRvKSA/IHJlc29sdmVkQXV0
b1Bvc2l0aW9uRm9yTGF5b3V0T2JqZWN0IDogcGFyZW50U3R5bGUuanVzdGlmeUl0ZW1zUG9zaXRp
b24oKTsKKyAgICByZXR1cm4gY2hpbGRTdHlsZS5qdXN0aWZ5U2VsZlBvc2l0aW9uKCk7CiB9CiAK
IHZvaWQgUmVuZGVyU3R5bGU6OmluaGVyaXRGcm9tKGNvbnN0IFJlbmRlclN0eWxlKiBpbmhlcml0
UGFyZW50LCBJc0F0U2hhZG93Qm91bmRhcnkgaXNBdFNoYWRvd0JvdW5kYXJ5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA4MDU4YTI4NjViYTg3
YWUxYTZmZWE2YzliN2YwZmFhMjM0NmIxOGE3Li44NTIwZGZjYTNjZDlmZjdlYjk1MzRjNzhjN2Qw
MmVlNjk5NmJjMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaApAQCAtOTEwLDIwICs5MTAsMjQgQEAgcHVibGljOgogICAgIGZsb2F0IGZsZXhTaHJp
bmsoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+
bV9mbGV4U2hyaW5rOyB9CiAgICAgY29uc3QgTGVuZ3RoJiBmbGV4QmFzaXMoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4QmFzaXM7IH0K
ICAgICBFQWxpZ25Db250ZW50IGFsaWduQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVBbGlnbkNvbnRlbnQ+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduQ29udGVudCk7
IH0KLSAgICBJdGVtUG9zaXRpb24gYWxpZ25JdGVtcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEl0ZW1Qb3NpdGlvbj4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25JdGVtcyk7IH0K
LSAgICBPdmVyZmxvd0FsaWdubWVudCBhbGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxPdmVyZmxvd0FsaWdubWVudD4ocmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fYWxpZ25JdGVtc092ZXJmbG93QWxpZ25tZW50KTsgfQotICAgIEl0ZW1Qb3NpdGlv
biBhbGlnblNlbGYoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVtUG9zaXRpb24+KHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2FsaWduU2VsZik7IH0KLSAgICBPdmVyZmxvd0FsaWdubWVu
dCBhbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PE92ZXJmbG93QWxpZ25tZW50PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnblNlbGZPdmVy
Zmxvd0FsaWdubWVudCk7IH0KKyAgICBjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBhbGln
bkl0ZW1zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWxpZ25JdGVt
czsgfQorICAgIEl0ZW1Qb3NpdGlvbiBhbGlnbkl0ZW1zUG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkl0ZW1zLnBvc2l0aW9uKCk7IH0KKyAgICBP
dmVyZmxvd0FsaWdubWVudCBhbGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnbkl0ZW1zLm92ZXJmbG93KCk7IH0KKyAg
ICBjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBhbGlnblNlbGYoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9hbGlnblNlbGY7IH0KKyAgICBJdGVtUG9zaXRpb24g
YWxpZ25TZWxmUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9hbGlnblNlbGYucG9zaXRpb24oKTsgfQorICAgIE92ZXJmbG93QWxpZ25tZW50IGFsaWduU2Vs
Zk92ZXJmbG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYWxpZ25TZWxmLm92ZXJmbG93KCk7IH0KICAgICBFRmxleERpcmVjdGlvbiBmbGV4RGlyZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZsZXhEaXJlY3Rpb24+KHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhEaXJlY3Rpb24pOyB9CiAgICAgYm9v
bCBpc0NvbHVtbkZsZXhEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBmbGV4RGlyZWN0aW9uKCkg
PT0gRmxvd0NvbHVtbiB8fCBmbGV4RGlyZWN0aW9uKCkgPT0gRmxvd0NvbHVtblJldmVyc2U7IH0K
ICAgICBib29sIGlzUmV2ZXJzZUZsZXhEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBmbGV4RGly
ZWN0aW9uKCkgPT0gRmxvd1Jvd1JldmVyc2UgfHwgZmxleERpcmVjdGlvbigpID09IEZsb3dDb2x1
bW5SZXZlcnNlOyB9CiAgICAgRUZsZXhXcmFwIGZsZXhXcmFwKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUZsZXhXcmFwPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+
bV9mbGV4V3JhcCk7IH0KICAgICBFSnVzdGlmeUNvbnRlbnQganVzdGlmeUNvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFSnVzdGlmeUNvbnRlbnQ+KHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX2p1c3RpZnlDb250ZW50KTsgfQotICAgIEl0ZW1Qb3NpdGlvbiBqdXN0aWZ5SXRlbXMo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVtUG9zaXRpb24+KHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2p1c3RpZnlJdGVtcyk7IH0KLSAgICBPdmVyZmxvd0FsaWdubWVudCBqdXN0aWZ5
SXRlbXNPdmVyZmxvd0FsaWdubWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE92ZXJm
bG93QWxpZ25tZW50PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRlbXNPdmVyZmxv
d0FsaWdubWVudCk7IH0KLSAgICBJdGVtUG9zaXRpb25UeXBlIGp1c3RpZnlJdGVtc1Bvc2l0aW9u
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEl0ZW1Qb3NpdGlvblR5cGU+KHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZSk7IH0KLSAgICBJdGVt
UG9zaXRpb24ganVzdGlmeVNlbGYoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxJdGVtUG9z
aXRpb24+KHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlTZWxmKTsgfQotICAgIE92ZXJm
bG93QWxpZ25tZW50IGp1c3RpZnlTZWxmT3ZlcmZsb3dBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxPdmVyZmxvd0FsaWdubWVudD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
anVzdGlmeVNlbGZPdmVyZmxvd0FsaWdubWVudCk7IH0KKyAgICBjb25zdCBTdHlsZVNlbGZBbGln
bm1lbnREYXRhJiBqdXN0aWZ5SXRlbXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9qdXN0aWZ5SXRlbXM7IH0KKyAgICBJdGVtUG9zaXRpb24ganVzdGlmeUl0ZW1zUG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9qdXN0aWZ5SXRl
bXMucG9zaXRpb24oKTsgfQorICAgIE92ZXJmbG93QWxpZ25tZW50IGp1c3RpZnlJdGVtc092ZXJm
bG93QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVz
dGlmeUl0ZW1zLm92ZXJmbG93KCk7IH0KKyAgICBJdGVtUG9zaXRpb25UeXBlIGp1c3RpZnlJdGVt
c1Bvc2l0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1
c3RpZnlJdGVtcy5wb3NpdGlvblR5cGUoKTsgfQorICAgIGNvbnN0IFN0eWxlU2VsZkFsaWdubWVu
dERhdGEmIGp1c3RpZnlTZWxmKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fanVzdGlmeVNlbGY7IH0KKyAgICBJdGVtUG9zaXRpb24ganVzdGlmeVNlbGZQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2p1c3RpZnlTZWxmLnBvc2l0
aW9uKCk7IH0KKyAgICBPdmVyZmxvd0FsaWdubWVudCBqdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25t
ZW50KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fanVzdGlmeVNlbGYu
b3ZlcmZsb3coKTsgfQogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKICAgICBjb25zdCBW
ZWN0b3I8R3JpZFRyYWNrU2l6ZT4mIGdyaWRDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fZ3JpZC0+bV9ncmlkQ29sdW1uczsgfQpAQCAtMTQ5OCwxOCArMTUw
MiwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGbGV4QmFzaXMoTGVuZ3RoIGxlbmd0aCkgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2Zs
ZXhCYXNpcywgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CiAgICAgdm9pZCBzZXRPcmRlcihpbnQgbykg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX29yZGVyLCBvKTsgfQogICAgIHZvaWQg
c2V0QWxpZ25Db250ZW50KEVBbGlnbkNvbnRlbnQgcCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2FsaWduQ29udGVudCwgcCk7IH0KLSAgICB2b2lkIHNldEFsaWduSXRlbXMoSXRl
bVBvc2l0aW9uIGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hbGlnbkl0ZW1z
LCBhKTsgfQotICAgIHZvaWQgc2V0QWxpZ25JdGVtc092ZXJmbG93QWxpZ25tZW50KE92ZXJmbG93
QWxpZ25tZW50IG92ZXJmbG93QWxpZ25tZW50KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fYWxpZ25JdGVtc092ZXJmbG93QWxpZ25tZW50LCBvdmVyZmxvd0FsaWdubWVudCk7IH0K
LSAgICB2b2lkIHNldEFsaWduU2VsZihJdGVtUG9zaXRpb24gYSkgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX2FsaWduU2VsZiwgYSk7IH0KLSAgICB2b2lkIHNldEFsaWduU2VsZk92
ZXJmbG93QWxpZ25tZW50KE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93QWxpZ25tZW50KSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25TZWxmT3ZlcmZsb3dBbGlnbm1lbnQs
IG92ZXJmbG93QWxpZ25tZW50KTsgfQorICAgIHZvaWQgc2V0QWxpZ25JdGVtcyhjb25zdCBTdHls
ZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fYWxpZ25JdGVtcywgZGF0YSk7IH0KKyAgICB2b2lkIHNldEFsaWduSXRlbXNQb3NpdGlvbihJ
dGVtUG9zaXRpb24gcG9zaXRpb24pIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1f
YWxpZ25JdGVtcy5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldEFsaWduSXRl
bXNPdmVyZmxvdyhPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9hbGlnbkl0ZW1zLnNldE92ZXJmbG93KG92ZXJmbG93KTsgfQorICAg
IHZvaWQgc2V0QWxpZ25TZWxmKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGRhdGEpIHsg
U0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9hbGlnblNlbGYsIGRhdGEpOyB9CisgICAg
dm9pZCBzZXRBbGlnblNlbGZQb3NpdGlvbihJdGVtUG9zaXRpb24gcG9zaXRpb24pIHsgcmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxpZ25TZWxmLnNldFBvc2l0aW9uKHBvc2l0aW9u
KTsgfQorICAgIHZvaWQgc2V0QWxpZ25TZWxmT3ZlcmZsb3coT3ZlcmZsb3dBbGlnbm1lbnQgb3Zl
cmZsb3cpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fYWxpZ25TZWxmLnNldE92
ZXJmbG93KG92ZXJmbG93KTsgfQogICAgIHZvaWQgc2V0RmxleERpcmVjdGlvbihFRmxleERpcmVj
dGlvbiBkaXJlY3Rpb24pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+
bV9mbGV4aWJsZUJveCwgbV9mbGV4RGlyZWN0aW9uLCBkaXJlY3Rpb24pOyB9CiAgICAgdm9pZCBz
ZXRGbGV4V3JhcChFRmxleFdyYXAgdykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhXcmFwLCB3KTsgfQogICAgIHZvaWQgc2V0SnVz
dGlmeUNvbnRlbnQoRUp1c3RpZnlDb250ZW50IHApIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV9qdXN0aWZ5Q29udGVudCwgcCk7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlJdGVtcyhJ
dGVtUG9zaXRpb24ganVzdGlmeUl0ZW1zKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fanVzdGlmeUl0ZW1zLCBqdXN0aWZ5SXRlbXMpOyB9Ci0gICAgdm9pZCBzZXRKdXN0aWZ5SXRl
bXNPdmVyZmxvd0FsaWdubWVudChPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvd0FsaWdubWVudCkg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2p1c3RpZnlJdGVtc092ZXJmbG93QWxp
Z25tZW50LCBvdmVyZmxvd0FsaWdubWVudCk7IH0KLSAgICB2b2lkIHNldEp1c3RpZnlJdGVtc1Bv
c2l0aW9uVHlwZShJdGVtUG9zaXRpb25UeXBlIHBvc2l0aW9uVHlwZSkgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX2p1c3RpZnlJdGVtc1Bvc2l0aW9uVHlwZSwgcG9zaXRpb25UeXBl
KTsgfQotICAgIHZvaWQgc2V0SnVzdGlmeVNlbGYoSXRlbVBvc2l0aW9uIHApIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5U2VsZiwgcCk7IH0KLSAgICB2b2lkIHNldEp1
c3RpZnlTZWxmT3ZlcmZsb3dBbGlnbm1lbnQoT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3dBbGln
bm1lbnQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5U2VsZk92ZXJm
bG93QWxpZ25tZW50LCBvdmVyZmxvd0FsaWdubWVudCk7IH0KKyAgICB2b2lkIHNldEp1c3RpZnlJ
dGVtcyhjb25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fanVzdGlmeUl0ZW1zLCBkYXRhKTsgfQorICAgIHZvaWQgc2V0SnVz
dGlmeUl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7IHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlJdGVtcy5zZXRQb3NpdGlvbihwb3NpdGlvbik7IH0K
KyAgICB2b2lkIHNldEp1c3RpZnlJdGVtc092ZXJmbG93KE92ZXJmbG93QWxpZ25tZW50IG92ZXJm
bG93KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlJdGVtcy5zZXRP
dmVyZmxvdyhvdmVyZmxvdyk7IH0KKyAgICB2b2lkIHNldEp1c3RpZnlJdGVtc1Bvc2l0aW9uVHlw
ZShJdGVtUG9zaXRpb25UeXBlIHBvc2l0aW9uVHlwZSkgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9qdXN0aWZ5SXRlbXMuc2V0UG9zaXRpb25UeXBlKHBvc2l0aW9uVHlwZSk7IH0K
KyAgICB2b2lkIHNldEp1c3RpZnlTZWxmKGNvbnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIGRh
dGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9qdXN0aWZ5U2VsZiwgZGF0YSk7
IH0KKyAgICB2b2lkIHNldEp1c3RpZnlTZWxmUG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9u
KSB7IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2p1c3RpZnlTZWxmLnNldFBvc2l0
aW9uKHBvc2l0aW9uKTsgfQorICAgIHZvaWQgc2V0SnVzdGlmeVNlbGZPdmVyZmxvdyhPdmVyZmxv
d0FsaWdubWVudCBvdmVyZmxvdykgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9q
dXN0aWZ5U2VsZi5zZXRPdmVyZmxvdyhvdmVyZmxvdyk7IH0KICNpZiBFTkFCTEUoQ1NTX0dSSURf
TEFZT1VUKQogICAgIHZvaWQgc2V0R3JpZEF1dG9Db2x1bW5zKGNvbnN0IEdyaWRUcmFja1NpemUm
IGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2dyaWQs
IG1fZ3JpZEF1dG9Db2x1bW5zLCBsZW5ndGgpOyB9CiAgICAgdm9pZCBzZXRHcmlkQXV0b1Jvd3Mo
Y29uc3QgR3JpZFRyYWNrU2l6ZSYgbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fZ3JpZCwgbV9ncmlkQXV0b1Jvd3MsIGxlbmd0aCk7IH0KQEAgLTE5MjAs
MTggKzE5MjgsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbEZsZXhCYXNp
cygpIHsgcmV0dXJuIExlbmd0aChBdXRvKTsgfQogICAgIHN0YXRpYyBpbnQgaW5pdGlhbE9yZGVy
KCkgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBFQWxpZ25Db250ZW50IGluaXRpYWxBbGlnbkNv
bnRlbnQoKSB7IHJldHVybiBBbGlnbkNvbnRlbnRTdHJldGNoOyB9Ci0gICAgc3RhdGljIEl0ZW1Q
b3NpdGlvbiBpbml0aWFsQWxpZ25JdGVtcygpIHsgcmV0dXJuIEl0ZW1Qb3NpdGlvbkF1dG87IH0K
LSAgICBzdGF0aWMgT3ZlcmZsb3dBbGlnbm1lbnQgaW5pdGlhbEFsaWduSXRlbXNPdmVyZmxvd0Fs
aWdubWVudCgpIHsgcmV0dXJuIE92ZXJmbG93QWxpZ25tZW50RGVmYXVsdDsgfQotICAgIHN0YXRp
YyBJdGVtUG9zaXRpb24gaW5pdGlhbEFsaWduU2VsZigpIHsgcmV0dXJuIEl0ZW1Qb3NpdGlvbkF1
dG87IH0KLSAgICBzdGF0aWMgT3ZlcmZsb3dBbGlnbm1lbnQgaW5pdGlhbEFsaWduU2VsZk92ZXJm
bG93QWxpZ25tZW50KCkgeyByZXR1cm4gT3ZlcmZsb3dBbGlnbm1lbnREZWZhdWx0OyB9CisgICAg
c3RhdGljIFN0eWxlU2VsZkFsaWdubWVudERhdGEgaW5pdGlhbFNlbGZBbGlnbm1lbnQoKSB7IHJl
dHVybiBTdHlsZVNlbGZBbGlnbm1lbnREYXRhKEl0ZW1Qb3NpdGlvbkF1dG8sIE92ZXJmbG93QWxp
Z25tZW50RGVmYXVsdCk7IH0KICAgICBzdGF0aWMgRUZsZXhEaXJlY3Rpb24gaW5pdGlhbEZsZXhE
aXJlY3Rpb24oKSB7IHJldHVybiBGbG93Um93OyB9CiAgICAgc3RhdGljIEVGbGV4V3JhcCBpbml0
aWFsRmxleFdyYXAoKSB7IHJldHVybiBGbGV4Tm9XcmFwOyB9CiAgICAgc3RhdGljIEVKdXN0aWZ5
Q29udGVudCBpbml0aWFsSnVzdGlmeUNvbnRlbnQoKSB7IHJldHVybiBKdXN0aWZ5RmxleFN0YXJ0
OyB9Ci0gICAgc3RhdGljIEl0ZW1Qb3NpdGlvbiBpbml0aWFsSnVzdGlmeUl0ZW1zKCkgeyByZXR1
cm4gSXRlbVBvc2l0aW9uQXV0bzsgfQotICAgIHN0YXRpYyBPdmVyZmxvd0FsaWdubWVudCBpbml0
aWFsSnVzdGlmeUl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQoKSB7IHJldHVybiBPdmVyZmxvd0FsaWdu
bWVudERlZmF1bHQ7IH0KLSAgICBzdGF0aWMgSXRlbVBvc2l0aW9uVHlwZSBpbml0aWFsSnVzdGlm
eUl0ZW1zUG9zaXRpb25UeXBlKCkgeyByZXR1cm4gTm9uTGVnYWN5UG9zaXRpb247IH0KLSAgICBz
dGF0aWMgSXRlbVBvc2l0aW9uIGluaXRpYWxKdXN0aWZ5U2VsZigpIHsgcmV0dXJuIEl0ZW1Qb3Np
dGlvbkF1dG87IH0KLSAgICBzdGF0aWMgT3ZlcmZsb3dBbGlnbm1lbnQgaW5pdGlhbEp1c3RpZnlT
ZWxmT3ZlcmZsb3dBbGlnbm1lbnQoKSB7IHJldHVybiBPdmVyZmxvd0FsaWdubWVudERlZmF1bHQ7
IH0KICAgICBzdGF0aWMgaW50IGluaXRpYWxNYXJxdWVlTG9vcENvdW50KCkgeyByZXR1cm4gLTE7
IH0KICAgICBzdGF0aWMgaW50IGluaXRpYWxNYXJxdWVlU3BlZWQoKSB7IHJldHVybiA4NTsgfQog
ICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbE1hcnF1ZWVJbmNyZW1lbnQoKSB7IHJldHVybiBMZW5n
dGgoNiwgRml4ZWQpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggMzhkMTIzNWUxY2Yw
YTlhNTJhNDcwNTJhYzc2Y2E5MzU3NzdhMzM4Ni4uYmYyZTdhYTRiMmFkMWExYzNhODBkMjk1YmU5
NjNmMDM0ZDY3MWRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAtNzEsNiArNzEsMTAg
QEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgp
CiAgICAgLCBtX29yZGVyKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXIoKSkKICAgICAsIG1fZmxv
d1RocmVhZChSZW5kZXJTdHlsZTo6aW5pdGlhbEZsb3dUaHJlYWQoKSkKICAgICAsIG1fcmVnaW9u
VGhyZWFkKFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uVGhyZWFkKCkpCisgICAgLCBtX2FsaWdu
SXRlbXMoUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25tZW50KCkpCisgICAgLCBtX2FsaWdu
U2VsZihSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkKKyAgICAsIG1fanVzdGlm
eUl0ZW1zKFJlbmRlclN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpKQorICAgICwgbV9qdXN0
aWZ5U2VsZihSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKSkKICNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQogICAgICwgbV9zY3JvbGxTbmFwVHlwZShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxTY3JvbGxTbmFwVHlwZSgpKSkKICNlbmRpZgpAQCAt
ODIsMTYgKzg2LDcgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSgpCiAgICAgLCBtX3RyYW5zZm9ybVN0eWxlM0QoUmVuZGVyU3R5bGU6OmluaXRp
YWxUcmFuc2Zvcm1TdHlsZTNEKCkpCiAgICAgLCBtX2JhY2tmYWNlVmlzaWJpbGl0eShSZW5kZXJT
dHlsZTo6aW5pdGlhbEJhY2tmYWNlVmlzaWJpbGl0eSgpKQogICAgICwgbV9hbGlnbkNvbnRlbnQo
UmVuZGVyU3R5bGU6OmluaXRpYWxBbGlnbkNvbnRlbnQoKSkKLSAgICAsIG1fYWxpZ25JdGVtcyhS
ZW5kZXJTdHlsZTo6aW5pdGlhbEFsaWduSXRlbXMoKSkKLSAgICAsIG1fYWxpZ25JdGVtc092ZXJm
bG93QWxpZ25tZW50KFJlbmRlclN0eWxlOjppbml0aWFsQWxpZ25JdGVtc092ZXJmbG93QWxpZ25t
ZW50KCkpCi0gICAgLCBtX2FsaWduU2VsZihSZW5kZXJTdHlsZTo6aW5pdGlhbEFsaWduU2VsZigp
KQotICAgICwgbV9hbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudChSZW5kZXJTdHlsZTo6aW5pdGlh
bEFsaWduU2VsZk92ZXJmbG93QWxpZ25tZW50KCkpCiAgICAgLCBtX2p1c3RpZnlDb250ZW50KFJl
bmRlclN0eWxlOjppbml0aWFsSnVzdGlmeUNvbnRlbnQoKSkKLSAgICAsIG1fanVzdGlmeUl0ZW1z
KFJlbmRlclN0eWxlOjppbml0aWFsSnVzdGlmeUl0ZW1zKCkpCi0gICAgLCBtX2p1c3RpZnlJdGVt
c092ZXJmbG93QWxpZ25tZW50KFJlbmRlclN0eWxlOjppbml0aWFsSnVzdGlmeUl0ZW1zT3ZlcmZs
b3dBbGlnbm1lbnQoKSkKLSAgICAsIG1fanVzdGlmeUl0ZW1zUG9zaXRpb25UeXBlKE5vbkxlZ2Fj
eVBvc2l0aW9uKQotICAgICwgbV9qdXN0aWZ5U2VsZihSZW5kZXJTdHlsZTo6aW5pdGlhbEp1c3Rp
ZnlTZWxmKCkpCi0gICAgLCBtX2p1c3RpZnlTZWxmT3ZlcmZsb3dBbGlnbm1lbnQoUmVuZGVyU3R5
bGU6OmluaXRpYWxKdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50KCkpCiAgICAgLCB1c2VyRHJh
ZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFVzZXJEcmFnKCkpCiAgICAgLCB0ZXh0T3ZlcmZsb3coUmVu
ZGVyU3R5bGU6OmluaXRpYWxUZXh0T3ZlcmZsb3coKSkKICAgICAsIG1hcmdpbkJlZm9yZUNvbGxh
cHNlKE1DT0xMQVBTRSkKQEAgLTE2NCw2ICsxNTksMTAgQEAgaW5saW5lIFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9u
SW4KICAgICAsIG1fb3JkZXIoby5tX29yZGVyKQogICAgICwgbV9mbG93VGhyZWFkKG8ubV9mbG93
VGhyZWFkKQogICAgICwgbV9yZWdpb25UaHJlYWQoby5tX3JlZ2lvblRocmVhZCkKKyAgICAsIG1f
YWxpZ25JdGVtcyhvLm1fYWxpZ25JdGVtcykKKyAgICAsIG1fYWxpZ25TZWxmKG8ubV9hbGlnblNl
bGYpCisgICAgLCBtX2p1c3RpZnlJdGVtcyhvLm1fanVzdGlmeUl0ZW1zKQorICAgICwgbV9qdXN0
aWZ5U2VsZihvLm1fanVzdGlmeVNlbGYpCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAg
ICAsIG1fc2Nyb2xsU25hcFR5cGUoby5tX3Njcm9sbFNuYXBUeXBlKQogI2VuZGlmCkBAIC0xNzUs
MTYgKzE3NCw3IEBAIGlubGluZSBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluCiAgICAgLCBtX3RyYW5zZm9ybVN0
eWxlM0Qoby5tX3RyYW5zZm9ybVN0eWxlM0QpCiAgICAgLCBtX2JhY2tmYWNlVmlzaWJpbGl0eShv
Lm1fYmFja2ZhY2VWaXNpYmlsaXR5KQogICAgICwgbV9hbGlnbkNvbnRlbnQoby5tX2FsaWduQ29u
dGVudCkKLSAgICAsIG1fYWxpZ25JdGVtcyhvLm1fYWxpZ25JdGVtcykKLSAgICAsIG1fYWxpZ25J
dGVtc092ZXJmbG93QWxpZ25tZW50KG8ubV9hbGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQpCi0g
ICAgLCBtX2FsaWduU2VsZihvLm1fYWxpZ25TZWxmKQotICAgICwgbV9hbGlnblNlbGZPdmVyZmxv
d0FsaWdubWVudChvLm1fYWxpZ25TZWxmT3ZlcmZsb3dBbGlnbm1lbnQpCiAgICAgLCBtX2p1c3Rp
ZnlDb250ZW50KG8ubV9qdXN0aWZ5Q29udGVudCkKLSAgICAsIG1fanVzdGlmeUl0ZW1zKG8ubV9q
dXN0aWZ5SXRlbXMpCi0gICAgLCBtX2p1c3RpZnlJdGVtc092ZXJmbG93QWxpZ25tZW50KG8ubV9q
dXN0aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudCkKLSAgICAsIG1fanVzdGlmeUl0ZW1zUG9zaXRp
b25UeXBlKG8ubV9qdXN0aWZ5SXRlbXNQb3NpdGlvblR5cGUpCi0gICAgLCBtX2p1c3RpZnlTZWxm
KG8ubV9qdXN0aWZ5U2VsZikKLSAgICAsIG1fanVzdGlmeVNlbGZPdmVyZmxvd0FsaWdubWVudChv
Lm1fanVzdGlmeVNlbGZPdmVyZmxvd0FsaWdubWVudCkKICAgICAsIHVzZXJEcmFnKG8udXNlckRy
YWcpCiAgICAgLCB0ZXh0T3ZlcmZsb3coby50ZXh0T3ZlcmZsb3cpCiAgICAgLCBtYXJnaW5CZWZv
cmVDb2xsYXBzZShvLm1hcmdpbkJlZm9yZUNvbGxhcHNlKQpAQCAtMjY2LDYgKzI1NiwxMCBAQCBi
b29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YSYgbykgYwogICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90
dG9tQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IKICAgICAgICAgJiYg
bV9vcmRlciA9PSBvLm1fb3JkZXIKICAgICAgICAgJiYgbV9mbG93VGhyZWFkID09IG8ubV9mbG93
VGhyZWFkCisgICAgICAgICYmIG1fYWxpZ25JdGVtcyA9PSBvLm1fYWxpZ25JdGVtcworICAgICAg
ICAmJiBtX2FsaWduU2VsZiA9PSBvLm1fYWxpZ25TZWxmCisgICAgICAgICYmIG1fanVzdGlmeUl0
ZW1zID09IG8ubV9qdXN0aWZ5SXRlbXMKKyAgICAgICAgJiYgbV9qdXN0aWZ5U2VsZiA9PSBvLm1f
anVzdGlmeVNlbGYKICAgICAgICAgJiYgbV9yZWdpb25UaHJlYWQgPT0gby5tX3JlZ2lvblRocmVh
ZAogICAgICAgICAmJiBtX3JlZ2lvbkZyYWdtZW50ID09IG8ubV9yZWdpb25GcmFnbWVudAogICAg
ICAgICAmJiBtX3JlZ2lvbkJyZWFrQWZ0ZXIgPT0gby5tX3JlZ2lvbkJyZWFrQWZ0ZXIKQEAgLTI3
NSwxMCArMjY5LDYgQEAgYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09
KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pIGMKICAgICAgICAgJiYgbV90cmFu
c2Zvcm1TdHlsZTNEID09IG8ubV90cmFuc2Zvcm1TdHlsZTNECiAgICAgICAgICYmIG1fYmFja2Zh
Y2VWaXNpYmlsaXR5ID09IG8ubV9iYWNrZmFjZVZpc2liaWxpdHkKICAgICAgICAgJiYgbV9hbGln
bkNvbnRlbnQgPT0gby5tX2FsaWduQ29udGVudAotICAgICAgICAmJiBtX2FsaWduSXRlbXMgPT0g
by5tX2FsaWduSXRlbXMKLSAgICAgICAgJiYgbV9hbGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQg
PT0gby5tX2FsaWduSXRlbXNPdmVyZmxvd0FsaWdubWVudAotICAgICAgICAmJiBtX2FsaWduU2Vs
ZiA9PSBvLm1fYWxpZ25TZWxmCi0gICAgICAgICYmIG1fYWxpZ25TZWxmT3ZlcmZsb3dBbGlnbm1l
bnQgPT0gby5tX2FsaWduU2VsZk92ZXJmbG93QWxpZ25tZW50CiAgICAgICAgICYmIG1fanVzdGlm
eUNvbnRlbnQgPT0gby5tX2p1c3RpZnlDb250ZW50CiAgICAgICAgICYmIHVzZXJEcmFnID09IG8u
dXNlckRyYWcKICAgICAgICAgJiYgdGV4dE92ZXJmbG93ID09IG8udGV4dE92ZXJmbG93CkBAIC0y
OTcsMTIgKzI4Nyw3IEBAIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9
PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjCiAgICAgICAgICYmIG1faXNv
bGF0aW9uID09IG8ubV9pc29sYXRpb24KICNlbmRpZgogICAgICAgICAmJiBtX2FzcGVjdFJhdGlv
VHlwZSA9PSBvLm1fYXNwZWN0UmF0aW9UeXBlCi0gICAgICAgICYmIG1fb2JqZWN0Rml0ID09IG8u
bV9vYmplY3RGaXQKLSAgICAgICAgJiYgbV9qdXN0aWZ5SXRlbXMgPT0gby5tX2p1c3RpZnlJdGVt
cwotICAgICAgICAmJiBtX2p1c3RpZnlJdGVtc092ZXJmbG93QWxpZ25tZW50ID09IG8ubV9qdXN0
aWZ5SXRlbXNPdmVyZmxvd0FsaWdubWVudAotICAgICAgICAmJiBtX2p1c3RpZnlJdGVtc1Bvc2l0
aW9uVHlwZSA9PSBvLm1fanVzdGlmeUl0ZW1zUG9zaXRpb25UeXBlCi0gICAgICAgICYmIG1fanVz
dGlmeVNlbGYgPT0gby5tX2p1c3RpZnlTZWxmCi0gICAgICAgICYmIG1fanVzdGlmeVNlbGZPdmVy
Zmxvd0FsaWdubWVudCA9PSBvLm1fanVzdGlmeVNlbGZPdmVyZmxvd0FsaWdubWVudDsKKyAgICAg
ICAgJiYgbV9vYmplY3RGaXQgPT0gby5tX29iamVjdEZpdDsKIH0KIAogYm9vbCBTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhOjpjb250ZW50RGF0YUVxdWl2YWxlbnQoY29uc3QgU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YSYgbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IDIwMTIwOTJj
MTJiN2MwYWU1OWE3MDhiMGE0MzFkZDdhMThjMDQ1NmMuLjAzNDA5MzBmZWFmMTk4ODc5YTI5MWJh
NGI2ZjAxYzcyOWIxOTU4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIkxpbmVDbGFtcFZhbHVlLmgiCiAjaW5jbHVkZSAiTmluZVBpZWNlSW1hZ2Uu
aCIKICNpbmNsdWRlICJTaGFwZVZhbHVlLmgiCisjaW5jbHVkZSAiU3R5bGVTZWxmQWxpZ25tZW50
RGF0YS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE3NSw2ICsxNzYsMTEgQEAgcHVibGljOgogICAg
IEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7CiAgICAgQXRvbWljU3RyaW5nIG1fcmVnaW9uVGhy
ZWFkOwogCisgICAgU3R5bGVTZWxmQWxpZ25tZW50RGF0YSBtX2FsaWduSXRlbXM7CisgICAgU3R5
bGVTZWxmQWxpZ25tZW50RGF0YSBtX2FsaWduU2VsZjsKKyAgICBTdHlsZVNlbGZBbGlnbm1lbnRE
YXRhIG1fanVzdGlmeUl0ZW1zOworICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgbV9qdXN0aWZ5
U2VsZjsKKwogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgdW5zaWduZWQgbV9zY3Jv
bGxTbmFwVHlwZSA6IDI7IC8vIFNjcm9sbFNuYXBUeXBlCiAjZW5kaWYKQEAgLTE5MCwxOSArMTk2
LDggQEAgcHVibGljOgogICAgIHVuc2lnbmVkIG1fYmFja2ZhY2VWaXNpYmlsaXR5IDogMTsgLy8g
RUJhY2tmYWNlVmlzaWJpbGl0eQogCiAgICAgdW5zaWduZWQgbV9hbGlnbkNvbnRlbnQgOiAzOyAv
LyBFQWxpZ25Db250ZW50Ci0gICAgdW5zaWduZWQgbV9hbGlnbkl0ZW1zIDogNDsgLy8gSXRlbVBv
c2l0aW9uCi0gICAgdW5zaWduZWQgbV9hbGlnbkl0ZW1zT3ZlcmZsb3dBbGlnbm1lbnQgOiAyOyAv
LyBPdmVyZmxvd0FsaWdubWVudAotICAgIHVuc2lnbmVkIG1fYWxpZ25TZWxmIDogNDsgLy8gSXRl
bVBvc2l0aW9uCi0gICAgdW5zaWduZWQgbV9hbGlnblNlbGZPdmVyZmxvd0FsaWdubWVudCA6IDI7
IC8vIE92ZXJmbG93QWxpZ25tZW50CiAgICAgdW5zaWduZWQgbV9qdXN0aWZ5Q29udGVudCA6IDM7
IC8vIEVKdXN0aWZ5Q29udGVudAogCi0gICAgdW5zaWduZWQgbV9qdXN0aWZ5SXRlbXMgOiA0OyAv
LyBJdGVtUG9zaXRpb24KLSAgICB1bnNpZ25lZCBtX2p1c3RpZnlJdGVtc092ZXJmbG93QWxpZ25t
ZW50IDogMjsgLy8gT3ZlcmZsb3dBbGlnbm1lbnQKLSAgICB1bnNpZ25lZCBtX2p1c3RpZnlJdGVt
c1Bvc2l0aW9uVHlwZTogMTsgLy8gV2hldGhlciBvciBub3QgYWxpZ25tZW50IHVzZXMgdGhlICds
ZWdhY3knIGtleXdvcmQuCi0KLSAgICB1bnNpZ25lZCBtX2p1c3RpZnlTZWxmIDogNDsgLy8gSXRl
bVBvc2l0aW9uCi0gICAgdW5zaWduZWQgbV9qdXN0aWZ5U2VsZk92ZXJmbG93QWxpZ25tZW50IDog
MjsgLy8gT3ZlcmZsb3dBbGlnbm1lbnQKLQogICAgIHVuc2lnbmVkIHVzZXJEcmFnIDogMjsgLy8g
RVVzZXJEcmFnCiAgICAgdW5zaWduZWQgdGV4dE92ZXJmbG93IDogMTsgLy8gV2hldGhlciBvciBu
b3QgbGluZXMgdGhhdCBzcGlsbCBvdXQgc2hvdWxkIGJlIHRydW5jYXRlZCB3aXRoICIuLi4iCiAg
ICAgdW5zaWduZWQgbWFyZ2luQmVmb3JlQ29sbGFwc2UgOiAyOyAvLyBFTWFyZ2luQ29sbGFwc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNlbGZBbGln
bm1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTZWxmQWxp
Z25tZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NTU1OGQ0MmI5ZjVkZDcwZjBhMGUxOTVmYTI3MmI5
M2Q4Nzg5OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVTZWxmQWxpZ25tZW50RGF0YS5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KyNpZm5kZWYgU3R5bGVTZWxmQWxpZ25tZW50RGF0YV9oCisjZGVmaW5lIFN0eWxlU2VsZkFsaWdu
bWVudERhdGFfaAorCisjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKKworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN0eWxlU2VsZkFsaWdubWVudERhdGEgeworcHVibGlj
OgorICAgIC8vIFN0eWxlIGRhdGEgZm9yIFNlbGYtQWxpZ21lbnQgYW5kIERlZmF1bHQtQWxpZ25t
ZW50IHByb3BlcnRpZXM6IGFsaWduLXtzZWxmLCBpdGVtc30sIGp1c3RpZnkte3NlbGYsIGl0ZW1z
fS4KKyAgICAvLyBbIDxzZWxmLXBvc2l0aW9uPiAmJiA8b3ZlcmZsb3ctcG9zaXRpb24+PyBdIHwg
WyBsZWdhY3kgJiYgWyBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgXSBdCisgICAgU3R5bGVTZWxmQWxp
Z25tZW50RGF0YShJdGVtUG9zaXRpb24gcG9zaXRpb24sIE92ZXJmbG93QWxpZ25tZW50IG92ZXJm
bG93LCBJdGVtUG9zaXRpb25UeXBlIHBvc2l0aW9uVHlwZSA9IE5vbkxlZ2FjeVBvc2l0aW9uKQor
ICAgICAgICA6IG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgICAgICwgbV9wb3NpdGlvblR5cGUo
cG9zaXRpb25UeXBlKQorICAgICAgICAsIG1fb3ZlcmZsb3cob3ZlcmZsb3cpCisgICAgeworICAg
IH0KKworICAgIHZvaWQgc2V0UG9zaXRpb24oSXRlbVBvc2l0aW9uIHBvc2l0aW9uKSB7IG1fcG9z
aXRpb24gPSBwb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9zaXRpb25UeXBlKEl0ZW1Qb3NpdGlv
blR5cGUgcG9zaXRpb25UeXBlKSB7IG1fcG9zaXRpb25UeXBlID0gcG9zaXRpb25UeXBlOyB9Cisg
ICAgdm9pZCBzZXRPdmVyZmxvdyhPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdykgeyBtX292ZXJm
bG93ID0gb3ZlcmZsb3c7IH0KKworICAgIEl0ZW1Qb3NpdGlvbiBwb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PEl0ZW1Qb3NpdGlvbj4obV9wb3NpdGlvbik7IH0KKyAgICBJdGVt
UG9zaXRpb25UeXBlIHBvc2l0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEl0
ZW1Qb3NpdGlvblR5cGU+KG1fcG9zaXRpb25UeXBlKTsgfQorICAgIE92ZXJmbG93QWxpZ25tZW50
IG92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcmZsb3dBbGlnbm1lbnQ+
KG1fb3ZlcmZsb3cpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTZWxmQWxp
Z25tZW50RGF0YSYgbykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Bvc2l0aW9uID09
IG8ubV9wb3NpdGlvbiAmJiBtX3Bvc2l0aW9uVHlwZSA9PSBvLm1fcG9zaXRpb25UeXBlICYmIG1f
b3ZlcmZsb3cgPT0gby5tX292ZXJmbG93OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTdHlsZVNlbGZBbGlnbm1lbnREYXRhJiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gbyk7CisgICAgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIG1fcG9z
aXRpb24gOiA0OyAvLyBJdGVtUG9zaXRpb24KKyAgICB1bnNpZ25lZCBtX3Bvc2l0aW9uVHlwZTog
MTsgLy8gV2hldGhlciBvciBub3QgYWxpZ25tZW50IHVzZXMgdGhlICdsZWdhY3knIGtleXdvcmQu
CisgICAgdW5zaWduZWQgbV9vdmVyZmxvdyA6IDI7IC8vIE92ZXJmbG93QWxpZ25tZW50Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTdHlsZVNlbGZBbGlnbm1lbnRE
YXRhX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>