<?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>208797</bug_id>
          
          <creation_ts>2020-03-08 22:19:57 -0700</creation_ts>
          <short_desc>Make TextIterator::range return a SimpleRange</short_desc>
          <delta_ts>2020-03-11 13:32:46 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1627663</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-08 22:19:57 -0700</bug_when>
    <thetext>Make TextIterator::range return a SimpleRange</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627664</commentid>
    <comment_count>1</comment_count>
      <attachid>393009</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-08 22:35:37 -0700</bug_when>
    <thetext>Created attachment 393009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627665</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-08 22:36:21 -0700</bug_when>
    <thetext>Trying to go slow on the deployment of SimpleRange. Easy for a refactoring patch to get out of hand and get too big to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627671</commentid>
    <comment_count>3</comment_count>
      <attachid>393011</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-08 23:34:05 -0700</bug_when>
    <thetext>Created attachment 393011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628093</commentid>
    <comment_count>4</comment_count>
      <attachid>393115</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-09 20:12:41 -0700</bug_when>
    <thetext>Created attachment 393115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628101</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-09 21:03:10 -0700</bug_when>
    <thetext>Looks like the tests are passing so it’s ready for review now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628513</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-10 21:07:26 -0700</bug_when>
    <thetext>Committed r258250: &lt;https://trac.webkit.org/changeset/258250&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628514</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-10 21:08:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/60306553&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628830</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-11 13:32:46 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/258273/webkit
https://trac.webkit.org/changeset/258280/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393009</attachid>
            <date>2020-03-08 22:35:37 -0700</date>
            <delta_ts>2020-03-08 23:34:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208797-20200308223535.patch</filename>
            <type>text/plain</type>
            <size>36238</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2EyYzZiNzJmYjY5NThm
ZTk5MThhYjdhNjQ0NWI0ODE1MGYzNmYxOC4uNzcxOWYyNDRmNWMwYTUyNzY4Mzk1ODVlNTBlMDI1
OGY5ODYxYTdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTAzLTA4ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFRleHRJdGVyYXRvcjo6
cmFuZ2UgcmV0dXJuIGEgU2ltcGxlUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwODc5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKTog
VXBkYXRlZCBzaW5jZQorICAgICAgICBUZXh0SXRlcmF0b3I6OnJhbmdlIHJldHVybnMgYSBTaW1w
bGVSYW5nZS4gQWxzbyB1c2UgVGV4dEl0ZXJhdG9yOjpub2RlIHdoZXJlCisgICAgICAgIGFwcHJv
cHJpYXRlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHRoZSBjb2RlIGZvciBpdCBoZXJlLgorICAgICAg
ICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bGVuZ3RoRm9yUmFuZ2UpOiBVc2UgVGV4dEl0ZXJh
dG9yOjpub2RlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ0ZvclJh
bmdlIGNvbnN0KTogVXNlIFRleHRJdGVyYXRvcjo6bm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsZW5ndGhGb3JWaXNpYmxl
UG9zaXRpb25SYW5nZSBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06IEFkZGVkIGluY2x1ZGUKKyAg
ICAgICAgb2YgU2ltcGxlUmFuZ2UgYW5kIHJlbW92ZWQgInVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXMiLgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZSk6IFVzZSBIVE1MTmFtZXMg
bmFtZXNwYWNlIGV4cGxpY2l0bHkuCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlOnNwZWxsQ2hlY2s6
XSk6CisgICAgICAgIFVzZSBUZXh0SXRlcmF0b3I6Om5vZGUuCisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIHN1YnJvbGVdKTogVXNlIEhUTUxOYW1lcyBuYW1lc3BhY2Ug
ZXhwbGljaXRseS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4
dFJhbmdlcyk6IFVzZSBjcmVhdGVMaXZlUmFuZ2UKKyAgICAgICAgaGVyZSBzaW5jZSB3ZSBkb24n
dCB3YW50IHRvIGNvbnZlcnQgbW92ZSB0aGUgY2xhc3MgdG8gU2ltcGxlUmFuZ2UgYXQgdGhpcyB0
aW1lLgorCisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDogQWRkZWQgaW5jbHVkZSBvZiBSYW5n
ZS5oLgorCisgICAgICAgICogZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oOiBSZW1vdmVkIGEgYm9n
dXMgImNvbnN0IiBvbiB0aGUgcmV0dXJuIHZhbHVlIG9mCisgICAgICAgIFJhbmdlQm91bmRhcnlQ
b2ludDo6dG9Qb3NpdGlvbi4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdFN0YWNrOjpCaXRTdGFjayk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpCaXRTdGFjazo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlIGNvbnN0KTogUmV0dXJuIGEgU2ltcGxlUmFuZ2UuCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6Om5vZGUgY29uc3QpOiBVcGRhdGVkIGZvciB0
aGUgYWJvdmUuCisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UgY29u
c3QpOiBVc2UgU2ltcGxlUmFuZ2UgcmlnaHQgdXAgdW50aWwgdGhlCisgICAgICAgIHJldHVybiBz
dGF0ZW1lbnQsIHdoZXJlIHdlIGRvIGNyZWF0ZUxpdmVSYW5nZS4gV2lsbCBjb21lIGJhY2sgYW5k
IHJlbW92ZSB0aGF0IHNvb24uCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoKTogVXNlIGNyZWF0ZUxpdmVSYW5nZSBpbgorICAgICAgICBv
bmUgcGxhY2UsIFNpbXBsZVJhbmdlIGluIGFub3RoZXIuCisKKyAgICAgICAgKiBlZGl0aW5nL1Rl
eHRJdGVyYXRvci5oOiBSZW1vdmVkIGluY2x1ZGUgb2YgIlJhbmdlLmgiIHNpbmNlIHdlIGNhbiBq
dXN0IHVzZQorICAgICAgICBhIGZvcndhcmQgZGVjbGFyYXRpb24gaW5zdGVhZC4gUmVtb3ZlZCB1
bm5lZWRlZCBmb3J3YXJkIGRlY2xhcmF0aW9ucy4gU2ltcGxpZmllZAorICAgICAgICB0aGUgQml0
U3RhY2sgYW5kIFRleHRJdGVyYXRvckNvcHlhYmxlVGV4dCBjbGFzc2VzIGJ5IGluaXRpYWxpemlu
ZyBkYXRhIG1lbWJlcnMKKyAgICAgICAgYW5kIHJlbW92aW5nIGV4cGxpY2l0IGRlZmluaXRpb25z
IG9mIHRoZSBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzLiBUb29rIG91dAorICAgICAgICBh
IHN0cmF5ICJleHBsaWNpdCIgdGhhdCB3YXNuJ3QgbmVlZGVkLiBDaGFuZ2VkIHRoZSByZXR1cm4g
dmFsdWUgb2YKKyAgICAgICAgVGV4dEl0ZXJhdG9yOjpyYW5nZSB0byBTaW1wbGVSYW5nZS4KKwor
ICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yOjpQYXJhZ3JhcGhDb250ZW50SXRl
cmF0b3IpOiBDYWxsCisgICAgICAgIGNyZWF0ZUxpdmVSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6
OlBhcmFncmFwaENvbnRlbnRJdGVyYXRvcjo6YWR2YW5jZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yOjpzdGFydFBvc2l0aW9uKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3I6OmVuZFBvc2l0aW9uKTog
RGl0dG8uCisKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjplZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZSk6IFVzZSBTaW1w
bGVSYW5nZSBpbnN0ZWFkCisgICAgICAgIG9mIGEgbGl2ZSByYW5nZS4KKwogMjAyMC0wMy0wNyAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQmVnaW4gbW92aW5nIG9m
ZiBvZiBsaXZlIHJhbmdlcyBmb3IgV2ViS2l0IGludGVybmFscwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNmM0ZDM2
YzNjNWVhMDU4NTk4YmJmZTdjYzIxNDgwODY1ZTI2NDQyLi4xNmQ1MTRjNmIyYWJkNDVhMzMzMTFh
MGJhMzdiNzNkYzNhMDUxYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAzLTA4
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFRleHRJdGVy
YXRvcjo6cmFuZ2UgcmV0dXJuIGEgU2ltcGxlUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODc5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
bWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tOgorICAgICAgICAoLVtXS0RPTVRleHRJdGVyYXRvciBj
dXJyZW50UmFuZ2VdKTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW06IEFkZGVkIGluY2x1ZGVzLgorCiAyMDIw
LTAzLTA3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBCZWdpbiBt
b3Zpbmcgb2ZmIG9mIGxpdmUgcmFuZ2VzIGZvciBXZWJLaXQgaW50ZXJuYWxzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggMTMyZjg4M2U0NDQxY2FhZjk1MzA1OTM1ZjczMmFlODVhNjI4
OGE3Zi4uZTY5MzRkMGU3ZGMzZGI4Zjk2YzQ3ZTZlOWEwZjYyOThkOTQwNDEyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAzLTA4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFRleHRJdGVyYXRvcjo6cmFu
Z2UgcmV0dXJuIGEgU2ltcGxlUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwODc5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW06CisgICAgICAgICgt
W1dlYlRleHRJdGVyYXRvciBjdXJyZW50UmFuZ2VdKTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4KKwog
MjAyMC0wMy0wNyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQmVn
aW4gbW92aW5nIG9mZiBvZiBsaXZlIHJhbmdlcyBmb3IgV2ViS2l0IGludGVybmFscwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggZTI1ZWJj
MTA5OWYzNWJlMWU5ZTljNjJkMDBiN2NkYmM4MDZlM2JiMC4uYmZkZGQyMjcxZmU0MGQ4ZjE1ZjU2
OGVlMzc4MzVhYjVkYWE3MjE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC05OSw2ICs5OSw3IEBACiAjaW5jbHVkZSAiU1ZHRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcm9s
bFZpZXcuaCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRCb3VuZGFy
aWVzLmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCkBAIC0xODEwLDI1ICsxODExLDI0IEBAIENoYXJhY3Rlck9mZnNldCBB
WE9iamVjdENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFuZ2U+cmFuZ2Us
IGludCBvCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8gU29tZXRpbWVzIHRleHQgY29u
dGVudHMgaW4gYSBub2RlIGFyZSBzcGxpdHRlZCBpbnRvIHNldmVyYWwgaXRlcmF0aW9ucywgc28g
dGhhdCBpdGVyYXRvci5yYW5nZSgpLT5zdGFydE9mZnNldCgpCi0gICAgLy8gbWlnaHQgbm90IGJl
IHRoZSBjb3JyZWN0IGNoYXJhY3RlciBjb3VudC4gSGVyZSB3ZSB1c2UgYSBwcmV2aW91c05vZGUg
b2JqZWN0IHRvIGtlZXAgdHJhY2sgb2YgdGhhdC4KKyAgICAvLyBTb21ldGltZXMgdGV4dCBjb250
ZW50cyBpbiBhIG5vZGUgYXJlIHNwbGl0IGludG8gc2V2ZXJhbCBpdGVyYXRpb25zLCBzbyB0aGF0
IGl0ZXJhdG9yLnJhbmdlKCkuc3RhcnRPZmZzZXQoKQorICAgIC8vIG1pZ2h0IG5vdCBiZSB0aGUg
dG90YWwgY2hhcmFjdGVyIGNvdW50LiBIZXJlIHdlIHVzZSBhIHByZXZpb3VzTm9kZSBvYmplY3Qg
dG8ga2VlcCB0cmFjayBvZiB0aGF0LgogICAgIE5vZGUqIHByZXZpb3VzTm9kZSA9IG51bGxwdHI7
CiAgICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKICAg
ICAgICAgaW50IGN1cnJlbnRMZW5ndGggPSBpdGVyYXRvci50ZXh0KCkubGVuZ3RoKCk7CiAgICAg
ICAgIGJvb2wgaGFzUmVwbGFjZWROb2RlT3JCUiA9IGZhbHNlOwotICAgICAgICAKLSAgICAgICAg
Tm9kZSYgbm9kZSA9IGl0ZXJhdG9yLnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7CisKKyAgICAg
ICAgTm9kZSYgbm9kZSA9IGl0ZXJhdG9yLnJhbmdlKCkuc3RhcnQuY29udGFpbmVyOwogICAgICAg
ICBjdXJyZW50Tm9kZSA9ICZub2RlOwogICAgICAgICAKICAgICAgICAgLy8gV2hlbiBjdXJyZW50
TGVuZ3RoID09IDAsIHdlIGNoZWNrIGlmIHRoZXJlJ3MgYW55IHJlcGxhY2VkIG5vZGUuCiAgICAg
ICAgIC8vIElmIG5vdCwgd2Ugc2tpcCB0aGUgbm9kZSB3aXRoIG5vIGxlbmd0aC4KICAgICAgICAg
aWYgKCFjdXJyZW50TGVuZ3RoKSB7Ci0gICAgICAgICAgICBpbnQgc3ViT2Zmc2V0ID0gaXRlcmF0
b3IucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKTsKLSAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9kZSA9
IG5vZGUudHJhdmVyc2VUb0NoaWxkQXQoc3ViT2Zmc2V0KTsKLSAgICAgICAgICAgIGlmIChBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpyZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3RlcihjaGlsZE5vZGUpKSB7
CisgICAgICAgICAgICBOb2RlJiBjaGlsZE5vZGUgPSAqaXRlcmF0b3Iubm9kZSgpOworICAgICAg
ICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVy
KCZjaGlsZE5vZGUpKSB7CiAgICAgICAgICAgICAgICAgY3VtdWxhdGl2ZU9mZnNldCsrOwogICAg
ICAgICAgICAgICAgIGN1cnJlbnRMZW5ndGgrKzsKLSAgICAgICAgICAgICAgICBjdXJyZW50Tm9k
ZSA9IGNoaWxkTm9kZTsKKyAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZSA9ICZjaGlsZE5vZGU7
CiAgICAgICAgICAgICAgICAgaGFzUmVwbGFjZWROb2RlT3JCUiA9IHRydWU7CiAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4MzcsMTAgKzE4MzcsOSBA
QCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6dHJhdmVyc2VUb09mZnNldEluUmFuZ2Uo
UmVmUHRyPFJhbmdlPnJhbmdlLCBpbnQgbwogICAgICAgICAgICAgaWYgKGN1cnJlbnRMZW5ndGgg
PT0gMSkgewogICAgICAgICAgICAgICAgIGlmIChpc0hUTUxTcGFjZShpdGVyYXRvci50ZXh0KClb
MF0pKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBub2RlIGhhcyBCUiB0YWcsIHdl
IHdhbnQgdG8gc2V0IHRoZSBjdXJyZW50Tm9kZSB0byBpdC4KLSAgICAgICAgICAgICAgICAgICAg
aW50IHN1Yk9mZnNldCA9IGl0ZXJhdG9yLnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAg
ICAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9kZSA9IG5vZGUudHJhdmVyc2VUb0NoaWxkQXQoc3Vi
T2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZSAmJiBjaGlsZE5vZGUt
PnJlbmRlcmVyKCkgJiYgY2hpbGROb2RlLT5yZW5kZXJlcigpLT5pc0JSKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlID0gY2hpbGROb2RlOworICAgICAgICAgICAgICAg
ICAgICBOb2RlJiBjaGlsZE5vZGUgPSAqaXRlcmF0b3Iubm9kZSgpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoY2hpbGROb2RlLnJlbmRlcmVyKCkgJiYgY2hpbGROb2RlLnJlbmRlcmVyKCktPmlz
QlIoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE5vZGUgPSAmY2hpbGROb2Rl
OwogICAgICAgICAgICAgICAgICAgICAgICAgaGFzUmVwbGFjZWROb2RlT3JCUiA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogc2hhZG93SG9zdCA9IGN1cnJlbnRO
b2RlLT5zaGFkb3dIb3N0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdl
IGFyZSBlbnRlcmluZyB0ZXh0IGNvbnRyb2xzLCB3ZSBzaG91bGQgc2V0IHRoZSBjdXJyZW50Tm9k
ZQpAQCAtMTg2NywxMSArMTg2NiwxMCBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6
dHJhdmVyc2VUb09mZnNldEluUmFuZ2UoUmVmUHRyPFJhbmdlPnJhbmdlLCBpbnQgbwogCiAgICAg
ICAgIGlmIChjdXJyZW50Tm9kZSA9PSBwcmV2aW91c05vZGUpIHsKICAgICAgICAgICAgIGxhc3RM
ZW5ndGggKz0gY3VycmVudExlbmd0aDsKLSAgICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9IGl0
ZXJhdG9yLnJhbmdlKCktPmVuZE9mZnNldCgpIC0gbGFzdExlbmd0aDsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9IGl0ZXJhdG9yLnJhbmdl
KCkuZW5kLm9mZnNldCAtIGxhc3RMZW5ndGg7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBsYXN0TGVuZ3RoID0gY3VycmVudExlbmd0aDsKLSAgICAgICAgICAgIGxhc3RTdGFydE9mZnNl
dCA9IGhhc1JlcGxhY2VkTm9kZU9yQlIgPyAwIDogaXRlcmF0b3IucmFuZ2UoKS0+c3RhcnRPZmZz
ZXQoKTsKKyAgICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9IGhhc1JlcGxhY2VkTm9kZU9yQlIg
PyAwIDogaXRlcmF0b3IucmFuZ2UoKS5zdGFydC5vZmZzZXQ7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIC8vIEJyZWFrIGVhcmx5IGlmIHdlIGhhdmUgYWR2YW5jZWQgZW5vdWdoIGNoYXJh
Y3RlcnMuCkBAIC0xOTAyLDcgKzE5MDAsNiBAQCBpbnQgQVhPYmplY3RDYWNoZTo6bGVuZ3RoRm9y
UmFuZ2UoUmFuZ2UqIHJhbmdlKQogewogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiAt
MTsKLSAgICAKICAgICBpbnQgbGVuZ3RoID0gMDsKICAgICBmb3IgKFRleHRJdGVyYXRvciBpdChy
YW5nZSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKICAgICAgICAgLy8gbm9uLXplcm8g
bGVuZ3RoIG1lYW5zIHRleHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMgcmVwbGFjZWQgbm9k
ZSAoQUtBICJhdHRhY2htZW50cyIgaW4gQVgpCkBAIC0xOTEwLDEzICsxOTA3LDEwIEBAIGludCBB
WE9iamVjdENhY2hlOjpsZW5ndGhGb3JSYW5nZShSYW5nZSogcmFuZ2UpCiAgICAgICAgICAgICBs
ZW5ndGggKz0gaXQudGV4dCgpLmxlbmd0aCgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IC8vIGxvY2F0ZSB0aGUgbm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlzIHJlcGxhY2Vk
IHJhbmdlCi0gICAgICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWlu
ZXIoKTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgp
OwotICAgICAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlcGxhY2VkTm9kZU5lZWRz
Q2hhcmFjdGVyKG5vZGUudHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KSkpCisgICAgICAgICAgICBp
ZiAoQWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIoaXQubm9k
ZSgpKSkKICAgICAgICAgICAgICAgICArK2xlbmd0aDsKICAgICAgICAgfQogICAgIH0KLSAgICAg
ICAgCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMjNhMTVmZGMzN2Y1N2E2
MjkzNTU3OThiZTU5YzI4NTc0YjU1MGQxZS4uNjE5MTIxZDY2MjcxMDYyNDg5MjM1NTEwMTcyZGNm
OTNhNWQ0OTYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMjgxLDExICsxMjgxLDcgQEAgU3RyaW5nIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OnN0cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4gcmFuZ2UpIGNvbnN0
CiAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobGlzdE1hcmtlclRleHRGb3JOb2RlQW5k
UG9zaXRpb24oaXQubm9kZSgpLCBWaXNpYmxlUG9zaXRpb24ocmFuZ2UtPnN0YXJ0UG9zaXRpb24o
KSkpKTsKICAgICAgICAgICAgIGl0LmFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBsb2NhdGUgdGhlIG5vZGUgYW5kIHN0
YXJ0aW5nIG9mZnNldCBmb3IgdGhpcyByZXBsYWNlZCByYW5nZQotICAgICAgICAgICAgTm9kZSYg
bm9kZSA9IGl0LnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICBBU1NFUlQo
Jm5vZGUgPT0gJml0LnJhbmdlKCktPmVuZENvbnRhaW5lcigpKTsKLSAgICAgICAgICAgIGludCBv
ZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgpOwotICAgICAgICAgICAgaWYgKHJlcGxh
Y2VkTm9kZU5lZWRzQ2hhcmFjdGVyKG5vZGUudHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KSkpCisg
ICAgICAgICAgICBpZiAocmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIoaXQubm9kZSgpKSkKICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChvYmplY3RSZXBsYWNlbWVudENoYXJhY3Rlcik7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzA4LDEwICsxMzA0LDcgQEAgU3RyaW5nIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQ
b3NpdGlvblIKICAgICAgICAgICAgIGl0LmFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoYnVpbGRl
cik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBsb2NhdGUgdGhlIG5vZGUgYW5k
IHN0YXJ0aW5nIG9mZnNldCBmb3IgdGhpcyByZXBsYWNlZCByYW5nZQotICAgICAgICAgICAgTm9k
ZSYgbm9kZSA9IGl0LnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICBBU1NF
UlQoJm5vZGUgPT0gJml0LnJhbmdlKCktPmVuZENvbnRhaW5lcigpKTsKLSAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgpOwotICAgICAgICAgICAgaWYgKHJl
cGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVyKG5vZGUudHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KSkp
CisgICAgICAgICAgICBpZiAocmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIoaXQubm9kZSgpKSkK
ICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChvYmplY3RSZXBsYWNlbWVudENoYXJhY3Rl
cik7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzI0LDcgKzEzMTcsNyBAQCBpbnQgQWNjZXNzaWJp
bGl0eU9iamVjdDo6bGVuZ3RoRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBv
c2l0aW9uUmFuZwogICAgIC8vIEZJWE1FOiBNdWx0aS1ieXRlIHN1cHBvcnQKICAgICBpZiAodmlz
aWJsZVBvc2l0aW9uUmFuZ2UuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICAKKwog
ICAgIGludCBsZW5ndGggPSAwOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBtYWtlUmFuZ2Uo
dmlzaWJsZVBvc2l0aW9uUmFuZ2Uuc3RhcnQsIHZpc2libGVQb3NpdGlvblJhbmdlLmVuZCk7CiAg
ICAgZm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UuZ2V0KCkpOyAhaXQuYXRFbmQoKTsgaXQuYWR2
YW5jZSgpKSB7CkBAIC0xMzMyLDE2ICsxMzI1LDExIEBAIGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpsZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5n
CiAgICAgICAgIGlmIChpdC50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICBsZW5ndGggKz0g
aXQudGV4dCgpLmxlbmd0aCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIGxvY2F0
ZSB0aGUgbm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlzIHJlcGxhY2VkIHJhbmdlCi0g
ICAgICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKLSAg
ICAgICAgICAgIEFTU0VSVCgmbm9kZSA9PSAmaXQucmFuZ2UoKS0+ZW5kQ29udGFpbmVyKCkpOwot
ICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7Ci0KLSAg
ICAgICAgICAgIGlmIChyZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3Rlcihub2RlLnRyYXZlcnNlVG9D
aGlsZEF0KG9mZnNldCkpKQorICAgICAgICAgICAgaWYgKHJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFj
dGVyKGl0Lm5vZGUoKSkpCiAgICAgICAgICAgICAgICAgKytsZW5ndGg7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCisKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDExMDk2MGM2ODQ5MGQ5NjQ0NGVjZDEzNzgzMmQyMjdm
ZjJlOGZhZmEuLjI2NjNlZGZjZDQzMjU3MjE4MzFhZGI3ZGQ4ZDMzMmIwOWM4NDgyNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC03MCw2ICs3MCw3IEBACiAj
aW1wb3J0ICJSZW5kZXJWaWV3LmgiCiAjaW1wb3J0ICJSZW5kZXJXaWRnZXQuaCIKICNpbXBvcnQg
IlNjcm9sbFZpZXcuaCIKKyNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCiAjaW1wb3J0ICJUZXh0Q2hl
Y2tlckNsaWVudC5oIgogI2ltcG9ydCAiVGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW1wb3J0ICJU
ZXh0RGVjb3JhdGlvblBhaW50ZXIuaCIKQEAgLTc5LDEyICs4MCwxMiBAQAogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJ
U2VydmljZXNTUEkuaD4KICNpbXBvcnQgPHd0Zi9PYmpDUnVudGltZUV4dHJhcy5oPgotI2lmIEVO
QUJMRShUUkVFX0RFQlVHR0lORykgfHwgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCisKKyNpZiBFTkFC
TEUoVFJFRV9ERUJVR0dJTkcpCiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
ZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiAvLyBDZWxsIFRhYmxlcwogI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENl
bGxzQXR0cmlidXRlCkBAIC0xMDYwLDcgKzEwNjEsNyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0
ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIFJl
bgogICAgIAogICAgIC8vIEluZGljYXRlIGJhY2tncm91bmQgaGlnaGxpZ2h0aW5nLgogICAgIGZv
ciAoTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJl
bnROb2RlKCkpIHsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUobWFya1RhZykpCisgICAg
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6bWFya1RhZykpCiAgICAgICAgICAg
ICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBAIkFYSGlnaGxpZ2h0Iiwg
QFlFUywgcmFuZ2UpOwogICAgIH0KIH0KQEAgLTEyNTYsMjIgKzEyNTcsMTYgQEAgLSAoTlNBdHRy
aWJ1dGVkU3RyaW5nKilkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTooaWQp
dGV4dE1hcmtlclJhbmcKICAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0
cmluZyA9IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07CiAgICAgICAg
IFRleHRJdGVyYXRvciBpdChyYW5nZS5nZXQoKSk7CiAgICAgICAgIHdoaWxlICghaXQuYXRFbmQo
KSkgewotICAgICAgICAgICAgLy8gbG9jYXRlIHRoZSBub2RlIGFuZCBzdGFydGluZyBvZmZzZXQg
Zm9yIHRoaXMgcmFuZ2UKLSAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLT5zdGFy
dENvbnRhaW5lcigpOwotICAgICAgICAgICAgQVNTRVJUKCZub2RlID09ICZpdC5yYW5nZSgpLT5l
bmRDb250YWluZXIoKSk7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gaXQucmFuZ2UoKS0+c3Rh
cnRPZmZzZXQoKTsKLQorICAgICAgICAgICAgTm9kZSYgbm9kZSA9ICppdC5ub2RlKCk7CiAgICAg
ICAgICAgICAvLyBub24temVybyBsZW5ndGggbWVhbnMgdGV4dHVhbCBub2RlLCB6ZXJvIGxlbmd0
aCBtZWFucyByZXBsYWNlZCBub2RlIChBS0EgImF0dGFjaG1lbnRzIiBpbiBBWCkKICAgICAgICAg
ICAgIGlmIChpdC50ZXh0KCkubGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICAvLyBBZGQgdGhl
IHRleHQgb2YgdGhlIGxpc3QgbWFya2VyIGl0ZW0gaWYgbmVjZXNzYXJ5LgotICAgICAgICAgICAg
ICAgIFN0cmluZyBsaXN0TWFya2VyVGV4dCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxpc3RNYXJr
ZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKCZub2RlLCBWaXNpYmxlUG9zaXRpb24oaXQucmFuZ2Uo
KS0+c3RhcnRQb3NpdGlvbigpKSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJU
ZXh0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRp
b24oJm5vZGUsIFZpc2libGVQb3NpdGlvbihjcmVhdGVMaXZlUmFuZ2UoaXQucmFuZ2UoKSktPnN0
YXJ0UG9zaXRpb24oKSkpOwogICAgICAgICAgICAgICAgIGlmICghbGlzdE1hcmtlclRleHQuaXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0
KGF0dHJTdHJpbmcsICZub2RlLCBsaXN0TWFya2VyVGV4dCwgc3BlbGxDaGVjayk7CiAgICAgICAg
ICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5nLCAmbm9kZSwg
aXQudGV4dCgpLCBzcGVsbENoZWNrKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgTm9kZSogcmVwbGFjZWROb2RlID0gbm9kZS50cmF2ZXJzZVRvQ2hpbGRBdChvZmZzZXQp
OwotICAgICAgICAgICAgICAgIE5TU3RyaW5nICphdHRhY2htZW50U3RyaW5nID0gbnNTdHJpbmdG
b3JSZXBsYWNlZE5vZGUocmVwbGFjZWROb2RlKTsKLSAgICAgICAgICAgICAgICBpZiAoYXR0YWNo
bWVudFN0cmluZykgeworICAgICAgICAgICAgICAgIGlmIChOU1N0cmluZyAqYXR0YWNobWVudFN0
cmluZyA9IG5zU3RyaW5nRm9yUmVwbGFjZWROb2RlKCZub2RlKSkgewogICAgICAgICAgICAgICAg
ICAgICBOU1JhbmdlIGF0dHJTdHJpbmdSYW5nZSA9IE5TTWFrZVJhbmdlKFthdHRyU3RyaW5nIGxl
bmd0aF0sIFthdHRhY2htZW50U3RyaW5nIGxlbmd0aF0pOwogCiAgICAgICAgICAgICAgICAgICAg
IC8vIGFwcGVuZCB0aGUgcGxhY2Vob2xkZXIgc3RyaW5nCkBAIC0xMjgxLDcgKzEyNzYsNyBAQCAt
IChOU0F0dHJpYnV0ZWRTdHJpbmcqKWRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlOihpZCl0ZXh0TWFya2VyUmFuZwogICAgICAgICAgICAgICAgICAgICBbYXR0clN0cmluZyBz
ZXRBdHRyaWJ1dGVzOm5pbCByYW5nZTphdHRyU3RyaW5nUmFuZ2VdOwogCiAgICAgICAgICAgICAg
ICAgICAgIC8vIGFkZCB0aGUgYXR0YWNobWVudCBhdHRyaWJ1dGUKLSAgICAgICAgICAgICAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gcmVwbGFjZWROb2RlLT5yZW5kZXJlcigpLT5k
b2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVwbGFjZWROb2RlLT5yZW5k
ZXJlcigpKTsKKyAgICAgICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0g
bm9kZS5yZW5kZXJlcigpLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUo
bm9kZS5yZW5kZXJlcigpKTsKICAgICAgICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdT
ZXRFbGVtZW50KGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUF0dGFjaG1lbnRUZXh0QXR0cmli
dXRlLCBvYmosIGF0dHJTdHJpbmdSYW5nZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQpAQCAtMjE5Myw2ICsyMTg4LDcgQEAgLSAoTlNTdHJpbmcqKXN1YnJvbGUKICAgICAgICAg
cmV0dXJuIEAiQVhTdWJzY3JpcHRTdHlsZUdyb3VwIjsKIAogICAgIGlmIChzZWxmLmF4QmFja2lu
Z09iamVjdC0+aXNTdHlsZUZvcm1hdEdyb3VwKCkpIHsKKyAgICAgICAgdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKICAgICAgICAgYXV0byB0YWdOYW1lID0gc2VsZi5heEJhY2tpbmdPYmplY3Qt
PnRhZ05hbWUoKTsKICAgICAgICAgaWYgKHRhZ05hbWUgPT0ga2JkVGFnKQogICAgICAgICAgICAg
cmV0dXJuIEAiQVhLZXlib2FyZElucHV0U3R5bGVHcm91cCI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IDJiZmUxNWUwMzVhMTc1MDBl
ODE1YzkxODA2ODNlODliNzQ2OTYwODcuLmNjNzI4NDc1YzZjMTQ5MWQ4YTA1Y2IyZjRkMjRjNTcx
NzQ4MGQ0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRy
b2xsZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXI6OmNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByCiB7CiAg
ICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5nZTsKICAgICBmb3IgKFRleHRJdGVyYXRv
ciB0ZXh0SXRlcmF0b3IoJnJhbmdlKTsgIXRleHRJdGVyYXRvci5hdEVuZCgpOyB0ZXh0SXRlcmF0
b3IuYWR2YW5jZSgpKQotICAgICAgICB0ZXh0UmFuZ2UuYXBwZW5kKHRleHRJdGVyYXRvci5yYW5n
ZSgpKTsKKyAgICAgICAgdGV4dFJhbmdlLmFwcGVuZChjcmVhdGVMaXZlUmFuZ2UodGV4dEl0ZXJh
dG9yLnJhbmdlKCkpKTsKICAgICByZXR1cm4gdGV4dFJhbmdlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmNwcAppbmRleCBiNDdhMjliMWIxMDI0MjEwZDVlZWU5OWMyNDQ3ODgxNzM0MzcyYzc2Li4z
M2RiYjRlMWRlMGQ4MWQ3NTBlMmJmZmNiMzk4NWM5NDI2ZDgyOGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlBvc2l0aW9uSXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVy
RmxleGlibGVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJHcmlkLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UmFuZ2VCb3VuZGFyeVBvaW50LmgKaW5kZXggNzY1ZjRhMDA3OGNlNjYzY2I2Yjc2N2EyYWI0MzUw
Y2I2ZGRlOTRjYS4uZDhjZWU3N2U1Yzc4NGJjMGU4NjRjYmU2NWE0YTE5MGY1YWY3YzIzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaApAQCAtMzQsNyArMzQsNyBAQCBj
bGFzcyBSYW5nZUJvdW5kYXJ5UG9pbnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IFJhbmdlQm91
bmRhcnlQb2ludChOb2RlKiBjb250YWluZXIpOwogCi0gICAgY29uc3QgUG9zaXRpb24gdG9Qb3Np
dGlvbigpIGNvbnN0OworICAgIFBvc2l0aW9uIHRvUG9zaXRpb24oKSBjb25zdDsKIAogICAgIE5v
ZGUqIGNvbnRhaW5lcigpIGNvbnN0OwogICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0OwpAQCAt
ODUsNyArODUsNyBAQCBpbmxpbmUgdm9pZCBSYW5nZUJvdW5kYXJ5UG9pbnQ6OmVuc3VyZU9mZnNl
dElzVmFsaWQoKSBjb25zdAogICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBtX2NoaWxkQmVmb3Jl
Qm91bmRhcnktPmNvbXB1dGVOb2RlSW5kZXgoKSArIDE7CiB9CiAKLWlubGluZSBjb25zdCBQb3Np
dGlvbiBSYW5nZUJvdW5kYXJ5UG9pbnQ6OnRvUG9zaXRpb24oKSBjb25zdAoraW5saW5lIFBvc2l0
aW9uIFJhbmdlQm91bmRhcnlQb2ludDo6dG9Qb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgZW5zdXJl
T2Zmc2V0SXNWYWxpZCgpOwogICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24o
bV9jb250YWluZXJOb2RlLmdldCgpLCBtX29mZnNldEluQ29udGFpbmVyLnZhbHVlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDUzYzJkMjU2ZWQyOGE3ZTVj
YzAzZmNkNmI2ZjNjZThkYzMwMzRhZDIuLjcwMWE3OTY5ZjVhZTFiNjkwMTc2YjU2MzNkYTU1Y2Nm
MjAzMDAwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA1IEFsZXhleSBQcm9za3Vy
eWFrb3YuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xNDAsMTUgKzE0MCw4IEBAIHByaXZhdGU6CiAK
IC8vIC0tLS0tLS0tCiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBiaXRzSW5Xb3JkID0gc2l6ZW9m
KHVuc2lnbmVkKSAqIDg7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgYml0SW5Xb3JkTWFzayA9IGJp
dHNJbldvcmQgLSAxOwotCi1CaXRTdGFjazo6Qml0U3RhY2soKQotICAgIDogbV9zaXplKDApCi17
Ci19Ci0KLUJpdFN0YWNrOjp+Qml0U3RhY2soKSA9IGRlZmF1bHQ7CitzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIGJpdHNJbldvcmQgPSBzaXplb2YodW5zaWduZWQpICogODsKK3N0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgYml0SW5Xb3JkTWFzayA9IGJpdHNJbldvcmQgLSAxOwogCiB2b2lkIEJp
dFN0YWNrOjpwdXNoKGJvb2wgYml0KQogewpAQCAtMTgxLDExICsxNzQsNiBAQCBib29sIEJpdFN0
YWNrOjp0b3AoKSBjb25zdAogICAgIHJldHVybiBtX3dvcmRzLmxhc3QoKSAmICgxVSA8PCBzaGlm
dCk7CiB9CiAKLXVuc2lnbmVkIEJpdFN0YWNrOjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9zaXplOwotfQotCiAvLyAtLS0tLS0tLQogCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgUmFu
Z2U6OnBhc3RMYXN0Tm9kZSwgZXhjZXB0IGZvciB0aGUgZmFjdCB0aGF0IGl0IGNhbiBjbGltYiB1
cCBvdXQgb2Ygc2hhZG93IHRyZWVzLgpAQCAtMTEyOCwyOSArMTExNiwyNSBAQCB2b2lkIFRleHRJ
dGVyYXRvcjo6ZW1pdFRleHQoVGV4dCYgdGV4dE5vZGUsIFJlbmRlclRleHQmIHJlbmRlcmVyLCBp
bnQgdGV4dFN0YXJ0TwogICAgIG1faGFzRW1pdHRlZCA9IHRydWU7CiB9CiAKLVJlZjxSYW5nZT4g
VGV4dEl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CitTaW1wbGVSYW5nZSBUZXh0SXRlcmF0b3I6OnJh
bmdlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWF0RW5kKCkpOwotCi0gICAgLy8gdXNlIHRoZSBj
dXJyZW50IHJ1biBpbmZvcm1hdGlvbiwgaWYgd2UgaGF2ZSBpdAorICAgIC8vIFVzZSB0aGUgY3Vy
cmVudCBydW4gaW5mb3JtYXRpb24sIGlmIHdlIGhhdmUgaXQuCiAgICAgaWYgKG1fcG9zaXRpb25P
ZmZzZXRCYXNlTm9kZSkgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IG1fcG9zaXRpb25PZmZz
ZXRCYXNlTm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpOwogICAgICAgICBtX3Bvc2l0aW9uU3RhcnRP
ZmZzZXQgKz0gaW5kZXg7CiAgICAgICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgKz0gaW5kZXg7CiAg
ICAgICAgIG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZSA9IG51bGxwdHI7CiAgICAgfQotICAgIHJl
dHVybiBSYW5nZTo6Y3JlYXRlKG1fcG9zaXRpb25Ob2RlLT5kb2N1bWVudCgpLCBtX3Bvc2l0aW9u
Tm9kZSwgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0LCBtX3Bvc2l0aW9uTm9kZSwgbV9wb3NpdGlvbkVu
ZE9mZnNldCk7CisgICAgcmV0dXJuIHsgeyAqbV9wb3NpdGlvbk5vZGUsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3Bvc2l0aW9uU3RhcnRPZmZzZXQpIH0sIHsgKm1fcG9zaXRpb25Ob2RlLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9wb3NpdGlvbkVuZE9mZnNldCkgfSB9OwogfQotICAgIAorCiBO
b2RlKiBUZXh0SXRlcmF0b3I6Om5vZGUoKSBjb25zdAogewotICAgIFJlZjxSYW5nZT4gdGV4dFJh
bmdlID0gcmFuZ2UoKTsKLQotICAgIE5vZGUmIG5vZGUgPSB0ZXh0UmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCk7Ci0gICAgaWYgKG5vZGUuaXNDaGFyYWN0ZXJEYXRhTm9kZSgpKQotICAgICAgICByZXR1
cm4gJm5vZGU7Ci0gICAgCi0gICAgcmV0dXJuIG5vZGUudHJhdmVyc2VUb0NoaWxkQXQodGV4dFJh
bmdlLT5zdGFydE9mZnNldCgpKTsKKyAgICBhdXRvIHN0YXJ0ID0gdGhpcy0+cmFuZ2UoKS5zdGFy
dDsKKyAgICBpZiAoc3RhcnQuY29udGFpbmVyLT5pc0NoYXJhY3RlckRhdGFOb2RlKCkpCisgICAg
ICAgIHJldHVybiBzdGFydC5jb250YWluZXIucHRyKCk7CisgICAgcmV0dXJuIHN0YXJ0LmNvbnRh
aW5lci0+dHJhdmVyc2VUb0NoaWxkQXQoc3RhcnQub2Zmc2V0KTsKIH0KIAogLy8gLS0tLS0tLS0K
QEAgLTE0MjIsMTkgKzE0MDYsMTcgQEAgQ2hhcmFjdGVySXRlcmF0b3I6OkNoYXJhY3Rlckl0ZXJh
dG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckIKIAogUmVmPFJh
bmdlPiBDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAogewotICAgIFJlZjxSYW5nZT4g
cmFuZ2UgPSBtX3VuZGVybHlpbmdJdGVyYXRvci5yYW5nZSgpOworICAgIFNpbXBsZVJhbmdlIHJh
bmdlID0gbV91bmRlcmx5aW5nSXRlcmF0b3IucmFuZ2UoKTsKICAgICBpZiAoIW1fdW5kZXJseWlu
Z0l0ZXJhdG9yLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKG1fdW5kZXJseWluZ0l0ZXJhdG9yLnRl
eHQoKS5sZW5ndGgoKSA8PSAxKSB7CisgICAgICAgIGlmIChtX3VuZGVybHlpbmdJdGVyYXRvci50
ZXh0KCkubGVuZ3RoKCkgPD0gMSkKICAgICAgICAgICAgIEFTU0VSVChtX3J1bk9mZnNldCA9PSAw
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUmIG5vZGUgPSByYW5nZS0+c3Rh
cnRDb250YWluZXIoKTsKLSAgICAgICAgICAgIEFTU0VSVCgmbm9kZSA9PSAmcmFuZ2UtPmVuZENv
bnRhaW5lcigpKTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSByYW5nZS0+c3RhcnRPZmZzZXQo
KSArIG1fcnVuT2Zmc2V0OwotICAgICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0KG5vZGUsIG9mZnNl
dCk7Ci0gICAgICAgICAgICByYW5nZS0+c2V0RW5kKG5vZGUsIG9mZnNldCArIDEpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIE5vZGUmIG5vZGUgPSByYW5nZS5zdGFydC5jb250YWluZXI7
CisgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSByYW5nZS5zdGFydE9mZnNldCgpICsgbV9y
dW5PZmZzZXQ7CisgICAgICAgICAgICByYW5nZSA9IHsgeyBub2RlLCBvZmZzZXQgfSwgeyBub2Rl
LCBvZmZzZXQgKyAxIH0gfTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmFuZ2U7Cisg
ICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyYW5nZSk7CiB9CiAKIHZvaWQgQ2hhcmFjdGVySXRl
cmF0b3I6OmFkdmFuY2UoaW50IGNvdW50KQpAQCAtMjQzOSw3ICsyNDIxLDcgQEAgUmVmUHRyPFJh
bmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5v
ZGUqIHNjb3BlLCBpbnQKIAogICAgIGZvciAoOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7
CiAgICAgICAgIGludCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7Ci0gICAgICAgIHRleHRS
dW5SYW5nZSA9IGl0LnJhbmdlKCk7CisgICAgICAgIHRleHRSdW5SYW5nZSA9IGNyZWF0ZUxpdmVS
YW5nZShpdC5yYW5nZSgpKTsKIAogICAgICAgICBib29sIGZvdW5kU3RhcnQgPSByYW5nZUxvY2F0
aW9uID49IGRvY1RleHRQb3NpdGlvbiAmJiByYW5nZUxvY2F0aW9uIDw9IGRvY1RleHRQb3NpdGlv
biArIGxlbmd0aDsKICAgICAgICAgYm9vbCBmb3VuZEVuZCA9IHJhbmdlRW5kID49IGRvY1RleHRQ
b3NpdGlvbiAmJiByYW5nZUVuZCA8PSBkb2NUZXh0UG9zaXRpb24gKyBsZW5ndGg7CkBAIC0yNDUw
LDggKzI0MzIsOCBAQCBSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRp
b25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludAogICAgICAgICAgICAgaWYgKGxl
bmd0aCA9PSAxICYmIChpdC50ZXh0KClbMF0gPT0gJ1xuJyB8fCBpc0luc2lkZVJlcGxhY2VkRWxl
bWVudChpdCkpKSB7CiAgICAgICAgICAgICAgICAgaXQuYWR2YW5jZSgpOwogICAgICAgICAgICAg
ICAgIGlmICghaXQuYXRFbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8UmFuZ2U+IHJh
bmdlID0gaXQucmFuZ2UoKTsKLSAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRF
bmQocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBzdGFydCA9IGl0LnJhbmdlKCkuc3RhcnQ7CisgICAgICAgICAg
ICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKFdURk1vdmUoc3RhcnQuY29udGFpbmVyKSwg
c3RhcnQub2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICBQb3NpdGlvbiBydW5TdGFydCA9IHRleHRSdW5SYW5nZS0+c3RhcnRQb3NpdGlvbigpOwog
ICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBydW5FbmQgPSBWaXNpYmxlUG9zaXRpb24ocnVu
U3RhcnQpLm5leHQoKS5kZWVwRXF1aXZhbGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmgKaW5kZXggMTAzMDRhZmY4NzhmNGZmZWM1OGI5ZjkwMzVkYjkxZjRkMDVkN2IyNS4u
ZWNiMTBkNzUxMzhjMDdkNmE5ZjU2ZjcxOGFkMjgyMTcwZDgyMTNlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjQgKzI1LDE5IEBACiAKICNwcmFnbWEgb25j
ZQogCi0vLyBGSVhNRTogTW92ZSBlYWNoIGl0ZXJhdG9yIGNsYXNzIGludG8gYSBzZXBhcmF0ZSBo
ZWFkZXIgZmlsZS4KLQogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTGluZUxh
eW91dFRyYXZlcnNhbC5oIgotI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElubGluZVRl
eHRCb3g7CitjbGFzcyBSYW5nZTsKIGNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBSZW5kZXJUZXh0
RnJhZ21lbnQ7CiAKLW5hbWVzcGFjZSBTaW1wbGVMaW5lTGF5b3V0IHsKLWNsYXNzIFJ1blJlc29s
dmVyOwotfQorc3RydWN0IFNpbXBsZVJhbmdlOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxh
aW5UZXh0KFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9y
ID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9IGZh
bHNlKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFrU3Bh
Y2UoUG9zaXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBU
ZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFsc2Up
OwpAQCAtNjAsMzEgKzU1LDIxIEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmb2xkUXVvdGVNYXJr
cyhjb25zdCBTdHJpbmcmKTsKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgc29tZXdoZXJlIGVsc2UgaW4g
dGhlIGVkaXRpbmcgZGlyZWN0b3J5LiBJdCBkb2Vzbid0IGJlbG9uZyBoZXJlLgogYm9vbCBpc1Jl
bmRlcmVyUmVwbGFjZWRFbGVtZW50KFJlbmRlck9iamVjdCopOwogCisvLyBGSVhNRTogTW92ZSBl
YWNoIGl0ZXJhdG9yIGNsYXNzIGludG8gYSBzZXBhcmF0ZSBoZWFkZXIgZmlsZS4KKwogY2xhc3Mg
Qml0U3RhY2sgewogcHVibGljOgotICAgIEJpdFN0YWNrKCk7Ci0gICAgfkJpdFN0YWNrKCk7Ci0K
ICAgICB2b2lkIHB1c2goYm9vbCk7CiAgICAgdm9pZCBwb3AoKTsKLQogICAgIGJvb2wgdG9wKCkg
Y29uc3Q7Ci0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHVuc2ln
bmVkIG1fc2l6ZTsKKyAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07CiAgICAgVmVjdG9yPHVuc2ln
bmVkLCAxPiBtX3dvcmRzOwogfTsKIAogY2xhc3MgVGV4dEl0ZXJhdG9yQ29weWFibGVUZXh0IHsK
IHB1YmxpYzoKLSAgICBUZXh0SXRlcmF0b3JDb3B5YWJsZVRleHQoKQotICAgICAgICA6IG1fc2lu
Z2xlQ2hhcmFjdGVyKDApCi0gICAgICAgICwgbV9vZmZzZXQoMCkKLSAgICAgICAgLCBtX2xlbmd0
aCgwKQotICAgIHsKLSAgICB9Ci0KICAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdCB7IHJldHVy
biBtX3NpbmdsZUNoYXJhY3RlciA/IFN0cmluZ1ZpZXcoJm1fc2luZ2xlQ2hhcmFjdGVyLCAxKSA6
IFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX29mZnNldCwgbV9sZW5ndGgpOyB9CiAg
ICAgdm9pZCBhcHBlbmRUb1N0cmluZ0J1aWxkZXIoU3RyaW5nQnVpbGRlciYpIGNvbnN0OwogCkBA
IC05NCwxMCArNzksMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0KFVDaGFyKTsKIAogcHJpdmF0
ZToKLSAgICBVQ2hhciBtX3NpbmdsZUNoYXJhY3RlcjsKKyAgICBVQ2hhciBtX3NpbmdsZUNoYXJh
Y3RlciB7IDAgfTsKICAgICBTdHJpbmcgbV9zdHJpbmc7Ci0gICAgdW5zaWduZWQgbV9vZmZzZXQ7
Ci0gICAgdW5zaWduZWQgbV9sZW5ndGg7CisgICAgdW5zaWduZWQgbV9vZmZzZXQgeyAwIH07Cisg
ICAgdW5zaWduZWQgbV9sZW5ndGggeyAwIH07CiB9OwogCiAvLyBJdGVyYXRlcyB0aHJvdWdoIHRo
ZSBET00gcmFuZ2UsIHJldHVybmluZyBhbGwgdGhlIHRleHQsIGFuZCAwLWxlbmd0aCBib3VuZGFy
aWVzCkBAIC0xMDcsNyArOTIsNyBAQCBwcml2YXRlOgogY2xhc3MgVGV4dEl0ZXJhdG9yIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBUZXh0SXRlcmF0b3IoUG9zaXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworICAgIFdFQkNP
UkVfRVhQT1JUIFRleHRJdGVyYXRvcihQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBUZXh0
SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJh
dG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIFdFQkNPUkVf
RVhQT1JUIH5UZXh0SXRlcmF0b3IoKTsKIApAQCAtMTE1LDcgKzEwMCw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2UoKTsKIAogICAgIFN0cmluZ1ZpZXcgdGV4dCgp
IGNvbnN0IHsgQVNTRVJUKCFhdEVuZCgpKTsgcmV0dXJuIG1fdGV4dDsgfQotICAgIFdFQkNPUkVf
RVhQT1JUIFJlZjxSYW5nZT4gcmFuZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaW1w
bGVSYW5nZSByYW5nZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIE5vZGUqIG5vZGUoKSBj
b25zdDsKIAogICAgIGNvbnN0IFRleHRJdGVyYXRvckNvcHlhYmxlVGV4dCYgY29weWFibGVUZXh0
KCkgY29uc3QgeyBBU1NFUlQoIWF0RW5kKCkpOyByZXR1cm4gbV9jb3B5YWJsZVRleHQ7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
ci5jcHAKaW5kZXggNDE3ZjJhOTY0ZjAyNTc2N2UyM2RhMzdmMWE0MjUzZmYzMTVkNmJlZi4uNmNk
MTdkMTMyZWNmOTg3ZmM0Y2M0NGY1NjllNDlkYzgxMWJkYjg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTE0
MSw3ICsxNDEsNyBAQCBjbGFzcyBQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IgewogcHVibGljOgog
ICAgIFBhcmFncmFwaENvbnRlbnRJdGVyYXRvcihjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
IFBvc2l0aW9uJiBlbmQpCiAgICAgICAgIDogbV9pdGVyYXRvcihzdGFydCwgZW5kKQotICAgICAg
ICAsIG1faXRlcmF0b3JOb2RlKG1faXRlcmF0b3IuYXRFbmQoKSA/IG51bGxwdHIgOiBtX2l0ZXJh
dG9yLnJhbmdlKCktPmZpcnN0Tm9kZSgpKQorICAgICAgICAsIG1faXRlcmF0b3JOb2RlKG1faXRl
cmF0b3IuYXRFbmQoKSA/IG51bGxwdHIgOiBjcmVhdGVMaXZlUmFuZ2UobV9pdGVyYXRvci5yYW5n
ZSgpKS0+Zmlyc3ROb2RlKCkpCiAgICAgICAgICwgbV9jdXJyZW50Tm9kZUZvckZpbmRpbmdJbnZp
c2libGVDb250ZW50KHN0YXJ0LmZpcnN0Tm9kZSgpKQogICAgICAgICAsIG1fcGFzdEVuZE5vZGUo
ZW5kLmZpcnN0Tm9kZSgpKQogICAgIHsKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGF1dG8gcHJldmlvdXNJdGVyYXRvck5vZGUgPSBtX2l0ZXJhdG9yTm9kZTsKIAogICAgICAg
ICBtX2l0ZXJhdG9yLmFkdmFuY2UoKTsKLSAgICAgICAgbV9pdGVyYXRvck5vZGUgPSBtX2l0ZXJh
dG9yLmF0RW5kKCkgPyBudWxscHRyIDogbV9pdGVyYXRvci5yYW5nZSgpLT5maXJzdE5vZGUoKTsK
KyAgICAgICAgbV9pdGVyYXRvck5vZGUgPSBtX2l0ZXJhdG9yLmF0RW5kKCkgPyBudWxscHRyIDog
Y3JlYXRlTGl2ZVJhbmdlKG1faXRlcmF0b3IucmFuZ2UoKSktPmZpcnN0Tm9kZSgpOwogICAgICAg
ICBpZiAocHJldmlvdXNJdGVyYXRvck5vZGUgIT0gbV9pdGVyYXRvck5vZGUpCiAgICAgICAgICAg
ICBtb3ZlQ3VycmVudE5vZGVGb3J3YXJkKCk7CiAgICAgfQpAQCAtMTkzLDEyICsxOTMsMTIgQEAg
cHVibGljOgogCiAgICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbigpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9pdGVyYXRvci5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCk7CisgICAgICAgIHJldHVy
biBjcmVhdGVMaXZlUmFuZ2UobV9pdGVyYXRvci5yYW5nZSgpKS0+c3RhcnRQb3NpdGlvbigpOwog
ICAgIH0KIAogICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBtX2l0ZXJhdG9yLnJhbmdlKCktPmVuZFBvc2l0aW9uKCk7CisgICAgICAgIHJldHVybiBjcmVh
dGVMaXZlUmFuZ2UobV9pdGVyYXRvci5yYW5nZSgpKS0+ZW5kUG9zaXRpb24oKTsKICAgICB9CiAK
ICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvci5hdEVuZCgpICYmIG1f
Y3VycmVudE5vZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVudCA9PSBtX3Bhc3RFbmROb2RlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXgg
YzM5NTkyNGJkODVmODRhMGFlMmFmMzM3NDNlZDlmOWY3YzZhM2IxMS4uYTk1YjY0MWFkYTA4YjVl
YmZlYjBkYTUwN2M3YzNhNzE1OTgzNjFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNTgsOCArNTgsMTAgQEAKICNpbXBvcnQgIkhUTUxU
YWJsZUNlbGxFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW1w
b3J0ICJMb2FkZXJOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJl
bmRlckltYWdlLmgiCiAjaW1wb3J0ICJSZW5kZXJUZXh0LmgiCisjaW1wb3J0ICJTaW1wbGVSYW5n
ZS5oIgogI2ltcG9ydCAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJTdHlsZWRFbGVtZW50
LmgiCiAjaW1wb3J0ICJUZXh0SXRlcmF0b3IuaCIKQEAgLTIzOTUsMTEgKzIzOTcsMTEgQEAgTlNB
dHRyaWJ1dGVkU3RyaW5nICplZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZShSYW5nZSYg
cmFuZ2UsIEluY2x1ZGVJbWFnZXMKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4g
YXR0cnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogCiAg
ICAgZm9yIChUZXh0SXRlcmF0b3IgaXQoJnJhbmdlKTsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2Uo
KSkgewotICAgICAgICBSZWZQdHI8UmFuZ2U+IGN1cnJlbnRUZXh0UmFuZ2UgPSBpdC5yYW5nZSgp
OwotICAgICAgICBOb2RlJiBzdGFydENvbnRhaW5lciA9IGN1cnJlbnRUZXh0UmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCk7Ci0gICAgICAgIE5vZGUmIGVuZENvbnRhaW5lciA9IGN1cnJlbnRUZXh0UmFu
Z2UtPmVuZENvbnRhaW5lcigpOwotICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBjdXJyZW50VGV4
dFJhbmdlLT5zdGFydE9mZnNldCgpOwotICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gY3VycmVudFRl
eHRSYW5nZS0+ZW5kT2Zmc2V0KCk7CisgICAgICAgIFNpbXBsZVJhbmdlIGN1cnJlbnRUZXh0UmFu
Z2UgPSBpdC5yYW5nZSgpOworICAgICAgICBOb2RlJiBzdGFydENvbnRhaW5lciA9IGN1cnJlbnRU
ZXh0UmFuZ2Uuc3RhcnRDb250YWluZXIoKTsKKyAgICAgICAgTm9kZSYgZW5kQ29udGFpbmVyID0g
Y3VycmVudFRleHRSYW5nZS5lbmRDb250YWluZXIoKTsKKyAgICAgICAgaW50IHN0YXJ0T2Zmc2V0
ID0gY3VycmVudFRleHRSYW5nZS5zdGFydE9mZnNldCgpOworICAgICAgICBpbnQgZW5kT2Zmc2V0
ID0gY3VycmVudFRleHRSYW5nZS5lbmRPZmZzZXQoKTsKIAogICAgICAgICBpZiAoaW5jbHVkZU9y
U2tpcEltYWdlcyA9PSBJbmNsdWRlSW1hZ2VzSW5BdHRyaWJ1dGVkU3RyaW5nOjpZZXMpIHsKICAg
ICAgICAgICAgIGlmICgmc3RhcnRDb250YWluZXIgPT0gJmVuZENvbnRhaW5lciAmJiAoc3RhcnRP
ZmZzZXQgPT0gZW5kT2Zmc2V0IC0gMSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRl
cmF0b3IubW0KaW5kZXggMDg0ZjMwMDVkNjEwM2Q0ZTI1MDMzYzI1NmM3MGMwZTA2NDA0MWNkOC4u
NzliMmU0ZjU3ZjdiMTViZTBjOTliM2IzMTg2NWVmOGRjN2I0MTc5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRl
cmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAi
V0tET01JbnRlcm5hbHMuaCIKICNpbXBvcnQgIldLRE9NUmFuZ2UuaCIKKyNpbXBvcnQgPFdlYkNv
cmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAKIEBp
bnRlcmZhY2UgV0tET01UZXh0SXRlcmF0b3IgKCkgewpAQCAtNjIsNyArNjMsNyBAQCAtIChCT09M
KWF0RW5kCiAKIC0gKFdLRE9NUmFuZ2UgKiljdXJyZW50UmFuZ2UKIHsKLSAgICByZXR1cm4gV2Vi
S2l0Ojp0b1dLRE9NUmFuZ2UoX3RleHRJdGVyYXRvci0+cmFuZ2UoKS5wdHIoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9XS0RPTVJhbmdlKGNyZWF0ZUxpdmVSYW5nZShfdGV4dEl0ZXJhdG9yLT5y
YW5nZSgpKS5wdHIoKSk7CiB9CiAKIC8vIEZJWE1FOiBDb25zaWRlciBkZXByZWNhdGluZyB0aGlz
IG1ldGhvZCBhbmQgY3JlYXRpbmcgb25lIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBjb3B5aW5nIDgt
Yml0IGNoYXJhY3RlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KaW5kZXggODUxMWM1NmUxYmExZGIyYWNmYWMxNTE0
YWE0NzUzYzgyNmE1ZDZhZC4uMTEwMTNjZTVlYzhhOTdhOWExMjE0ZTg1OWI5NWZiZTg0YjRmNmNl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
UGFnZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlBhZ2VDb2NvYS5tbQpAQCAtMzgsMTkgKzM4LDE5IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Vk
aXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRm9jdXNDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RS
ZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm9kZVJlbmRlclN0eWxlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1BheW1lbnRDb29yZGluYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmFuZ2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUmVuZGVyRWxlbWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJPYmplY3Qu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Np
bXBsZVJhbmdlLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKIAogbmFtZXNwYWNlIFdlYktpdCB7
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJl
Y2VpdmVMb2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMp
CiB7CkBAIC0xMjAsMjkgKzEyMCwyOCBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRp
Y3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSYgZnJhbWUsIFJhbmdlJiByYQogewogICAg
IEVkaXRvciYgZWRpdG9yID0gZnJhbWUuZWRpdG9yKCk7CiAgICAgZWRpdG9yLnNldElzR2V0dGlu
Z0RpY3Rpb25hcnlQb3B1cEluZm8odHJ1ZSk7Ci0gICAgCisKICAgICBEaWN0aW9uYXJ5UG9wdXBJ
bmZvIGRpY3Rpb25hcnlQb3B1cEluZm87CiAgICAgaWYgKHJhbmdlLnRleHQoKS5zdHJpcFdoaXRl
U3BhY2UoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgZWRpdG9yLnNldElzR2V0dGluZ0RpY3Rpb25h
cnlQb3B1cEluZm8oZmFsc2UpOwogICAgICAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsK
ICAgICB9Ci0gICAgCisKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKICAgICByYW5nZS5h
YnNvbHV0ZVRleHRRdWFkcyhxdWFkcyk7CiAgICAgaWYgKHF1YWRzLmlzRW1wdHkoKSkgewogICAg
ICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyhmYWxzZSk7CiAgICAg
ICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwogICAgIH0KLSAgICAKKwogICAgIEludFJl
Y3QgcmFuZ2VSZWN0ID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvV2luZG93KHF1YWRzWzBdLmVu
Y2xvc2luZ0JvdW5kaW5nQm94KCkpOwotICAgIAorCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlID0gcmFuZ2Uuc3RhcnRDb250YWluZXIoKS5yZW5kZXJTdHlsZSgpOwogICAgIGZsb2F0IHNj
YWxlZEFzY2VudCA9IHN0eWxlID8gc3R5bGUtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgKiBwYWdl
U2NhbGVGYWN0b3IoKSA6IDA7CiAgICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW4gPSBGbG9h
dFBvaW50KHJhbmdlUmVjdC54KCksIHJhbmdlUmVjdC55KCkgKyBzY2FsZWRBc2NlbnQpOwogICAg
IGRpY3Rpb25hcnlQb3B1cEluZm8ub3B0aW9ucyA9IG9wdGlvbnM7CiAKICNpZiBQTEFURk9STShN
QUMpCi0KICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKm5zQXR0cmlidXRlZFN0cmluZyA9IGVkaXRp
bmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKHJhbmdlLCBJbmNsdWRlSW1hZ2VzSW5BdHRyaWJ1
dGVkU3RyaW5nOjpObyk7CiAgICAgCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUF0dHJpYnV0ZWRT
dHJpbmc+IHNjYWxlZE5TQXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpbbnNBdHRyaWJ1dGVkU3RyaW5nIHN0
cmluZ11dKTsKQEAgLTE2MCw5ICsxNTksOCBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6
OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSYgZnJhbWUsIFJhbmdlJiByYQogICAg
ICAgICAKICAgICAgICAgW3NjYWxlZE5TQXR0cmlidXRlZFN0cmluZyBhZGRBdHRyaWJ1dGVzOnNj
YWxlZEF0dHJpYnV0ZXMuZ2V0KCkgcmFuZ2U6cmFuZ2VdOwogICAgIH1dOwotCiAjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQotICAgIAorCiAgICAgVGV4dEluZGljYXRvck9wdGlvbnMgaW5kaWNhdG9y
T3B0aW9ucyA9IFRleHRJbmRpY2F0b3JPcHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFsbENv
bnRlbnRGb3JDb21wbGV4UmFuZ2VzOwogICAgIGlmIChwcmVzZW50YXRpb25UcmFuc2l0aW9uID09
IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGUp
CiAgICAgICAgIGluZGljYXRvck9wdGlvbnMgfD0gVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVT
bmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdobGlnaHQ7CkBAIC0xNzIsMTYgKzE3MCwxNCBAQCBEaWN0
aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFt
ZSYgZnJhbWUsIFJhbmdlJiByYQogICAgICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFy
eVBvcHVwSW5mbyhmYWxzZSk7CiAgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwog
ICAgIH0KLSAgICAKKwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvciA9IHRl
eHRJbmRpY2F0b3ItPmRhdGEoKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgZGljdGlvbmFyeVBv
cHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5nID0gc2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5nOwotI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKLSAgICAKLSNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKKyNl
bGlmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmli
dXRlZFN0cmluZyA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpyYW5nZS50ZXh0KCldKTsKLSNlbmRpZiAvLyBQTEFURk9STShNQUNDQVRB
TFlTVCkKLSAgICAKKyNlbmRpZgorCiAgICAgZWRpdG9yLnNldElzR2V0dGluZ0RpY3Rpb25hcnlQ
b3B1cEluZm8oZmFsc2UpOwogICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3Iu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQpp
bmRleCA0NzZiODcxMGEyNmY2MDg3NzkwNDY3ODk3NmM0MzRkZjFjMTE4ZGNmLi4zNTdjNTI4Mjgz
NmFhOGRiYWRhMjFlY2U0OTM4ODVlNGZlOGJiMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsy
OSw4IEBACiAjaW1wb3J0ICJET01SYW5nZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJUeXBlc0lu
dGVybmFsLmgiCiAjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NpbXBsZVJhbmdl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRJdGVyYXRvci5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CkBAIC04NSwxMCArODcsMTAgQEAgLSAo
Qk9PTClhdEVuZAogCiAtIChET01SYW5nZSAqKWN1cnJlbnRSYW5nZQogewotICAgIFdlYkNvcmU6
OlRleHRJdGVyYXRvciYgdGV4dEl0ZXJhdG9yID0gKl9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yOwor
ICAgIGF1dG8mIHRleHRJdGVyYXRvciA9ICpfcHJpdmF0ZS0+X3RleHRJdGVyYXRvcjsKICAgICBp
ZiAodGV4dEl0ZXJhdG9yLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBraXQodGV4dEl0ZXJhdG9yLnJhbmdlKCkucHRyKCkpOworICAgIHJldHVybiBraXQoY3Jl
YXRlTGl2ZVJhbmdlKHRleHRJdGVyYXRvci5yYW5nZSgpKS5wdHIoKSk7CiB9CiAKIC8vIEZJWE1F
OiBDb25zaWRlciBkZXByZWNhdGluZyB0aGlzIG1ldGhvZCBhbmQgY3JlYXRpbmcgb25lIHRoYXQg
ZG9lcyBub3QgcmVxdWlyZSBjb3B5aW5nIDgtYml0IGNoYXJhY3RlcnMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393011</attachid>
            <date>2020-03-08 23:34:05 -0700</date>
            <delta_ts>2020-03-09 20:12:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208797-20200308233403.patch</filename>
            <type>text/plain</type>
            <size>42795</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2EyYzZiNzJmYjY5NThm
ZTk5MThhYjdhNjQ0NWI0ODE1MGYzNmYxOC4uZDc3YTU4NDQwNmI1YmEyY2QzNWZhMzRlM2M1M2Y2
MGYwNzAyNTQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTAzLTA4ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFRleHRJdGVyYXRvcjo6
cmFuZ2UgcmV0dXJuIGEgU2ltcGxlUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwODc5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKTog
VXBkYXRlZCBzaW5jZQorICAgICAgICBUZXh0SXRlcmF0b3I6OnJhbmdlIHJldHVybnMgYSBTaW1w
bGVSYW5nZS4gQWxzbyB1c2UgVGV4dEl0ZXJhdG9yOjpub2RlIHdoZXJlCisgICAgICAgIGFwcHJv
cHJpYXRlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHRoZSBjb2RlIGZvciBpdCBoZXJlLgorICAgICAg
ICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bGVuZ3RoRm9yUmFuZ2UpOiBVc2UgVGV4dEl0ZXJh
dG9yOjpub2RlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ0ZvclJh
bmdlIGNvbnN0KTogVXNlIFRleHRJdGVyYXRvcjo6bm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsZW5ndGhGb3JWaXNpYmxl
UG9zaXRpb25SYW5nZSBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6YXR0cmli
dXRlZDpdKToKKyAgICAgICAgVXNlIFRleHRJdGVyYXRvcjo6bm9kZSBhbmQgY3JlYXRlTGl2ZVJh
bmdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW06IEFkZGVkIGluY2x1ZGUKKyAgICAgICAgb2YgU2ltcGxlUmFuZ2UgYW5k
IHJlbW92ZWQgInVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXMiLgorICAgICAgICAoQVhBdHRyaWJ1
dGVTdHJpbmdTZXRTdHlsZSk6IFVzZSBIVE1MTmFtZXMgbmFtZXNwYWNlIGV4cGxpY2l0bHkuCisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlOnNwZWxsQ2hlY2s6XSk6CisgICAgICAgIFVzZSBUZXh0SXRl
cmF0b3I6Om5vZGUuCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHN1
YnJvbGVdKTogVXNlIEhUTUxOYW1lcyBuYW1lc3BhY2UgZXhwbGljaXRseS4KKworICAgICAgICAq
IGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyk6IFVzZSBjcmVhdGVMaXZl
UmFuZ2UKKyAgICAgICAgaGVyZSBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGNvbnZlcnQgbW92ZSB0
aGUgY2xhc3MgdG8gU2ltcGxlUmFuZ2UgYXQgdGhpcyB0aW1lLgorCisgICAgICAgICogZG9tL1Bv
c2l0aW9uLmNwcDogQWRkZWQgaW5jbHVkZSBvZiBSYW5nZS5oLgorCisgICAgICAgICogZG9tL1Jh
bmdlQm91bmRhcnlQb2ludC5oOiBSZW1vdmVkIGEgYm9ndXMgImNvbnN0IiBvbiB0aGUgcmV0dXJu
IHZhbHVlIG9mCisgICAgICAgIFJhbmdlQm91bmRhcnlQb2ludDo6dG9Qb3NpdGlvbi4KKworICAg
ICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdFN0
YWNrOjpCaXRTdGFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCaXRTdGFjazo6c2l6
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdl
IGNvbnN0KTogUmV0dXJuIGEgU2ltcGxlUmFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6Om5vZGUgY29uc3QpOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisgICAgICAgIChXZWJD
b3JlOjpDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UgY29uc3QpOiBVc2UgU2ltcGxlUmFuZ2Ugcmln
aHQgdXAgdW50aWwgdGhlCisgICAgICAgIHJldHVybiBzdGF0ZW1lbnQsIHdoZXJlIHdlIGRvIGNy
ZWF0ZUxpdmVSYW5nZS4gV2lsbCBjb21lIGJhY2sgYW5kIHJlbW92ZSB0aGF0IHNvb24uCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKTog
VXNlIGNyZWF0ZUxpdmVSYW5nZSBpbgorICAgICAgICBvbmUgcGxhY2UsIFNpbXBsZVJhbmdlIGlu
IGFub3RoZXIuCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOiBSZW1vdmVkIGlu
Y2x1ZGUgb2YgIlJhbmdlLmgiIHNpbmNlIHdlIGNhbiBqdXN0IHVzZQorICAgICAgICBhIGZvcndh
cmQgZGVjbGFyYXRpb24gaW5zdGVhZC4gUmVtb3ZlZCB1bm5lZWRlZCBmb3J3YXJkIGRlY2xhcmF0
aW9ucy4gU2ltcGxpZmllZAorICAgICAgICB0aGUgQml0U3RhY2sgYW5kIFRleHRJdGVyYXRvckNv
cHlhYmxlVGV4dCBjbGFzc2VzIGJ5IGluaXRpYWxpemluZyBkYXRhIG1lbWJlcnMKKyAgICAgICAg
YW5kIHJlbW92aW5nIGV4cGxpY2l0IGRlZmluaXRpb25zIG9mIHRoZSBjb25zdHJ1Y3RvcnMgYW5k
IGRlc3RydWN0b3JzLiBUb29rIG91dAorICAgICAgICBhIHN0cmF5ICJleHBsaWNpdCIgdGhhdCB3
YXNuJ3QgbmVlZGVkLiBDaGFuZ2VkIHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgICAgICAgVGV4dEl0
ZXJhdG9yOjpyYW5nZSB0byBTaW1wbGVSYW5nZS4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29u
dGVudEl0ZXJhdG9yOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IpOiBDYWxsCisgICAgICAgIGNy
ZWF0ZUxpdmVSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlBhcmFncmFwaENvbnRlbnRJdGVyYXRv
cjo6YWR2YW5jZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29udGVudEl0
ZXJhdG9yOjpzdGFydFBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYXJhZ3Jh
cGhDb250ZW50SXRlcmF0b3I6OmVuZFBvc2l0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0
aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZSk6IFVzZSBjcmVhdGVMaXZlUmFuZ2UuCisKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpl
ZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZSk6IFVzZSBTaW1wbGVSYW5nZSBpbnN0ZWFk
CisgICAgICAgIG9mIGEgbGl2ZSByYW5nZS4KKwogMjAyMC0wMy0wNyAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQmVnaW4gbW92aW5nIG9mZiBvZiBsaXZlIHJhbmdl
cyBmb3IgV2ViS2l0IGludGVybmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNmM0ZDM2YzNjNWVhMDU4NTk4YmJm
ZTdjYzIxNDgwODY1ZTI2NDQyLi4xNmQ1MTRjNmIyYWJkNDVhMzMzMTFhMGJhMzdiNzNkYzNhMDUx
YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAzLTA4ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFRleHRJdGVyYXRvcjo6cmFuZ2UgcmV0
dXJuIGEgU2ltcGxlUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwODc5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NVGV4dEl0
ZXJhdG9yLm1tOgorICAgICAgICAoLVtXS0RPTVRleHRJdGVyYXRvciBjdXJyZW50UmFuZ2VdKTog
VXNlIGNyZWF0ZUxpdmVSYW5nZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9XZWJQYWdlQ29jb2EubW06IEFkZGVkIGluY2x1ZGVzLgorCiAyMDIwLTAzLTA3ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBCZWdpbiBtb3Zpbmcgb2ZmIG9mIGxp
dmUgcmFuZ2VzIGZvciBXZWJLaXQgaW50ZXJuYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggMTMyZjg4M2U0NDQxY2FhZjk1MzA1OTM1ZjczMmFlODVhNjI4OGE3Zi4uZTY5MzRkMGU3
ZGMzZGI4Zjk2YzQ3ZTZlOWEwZjYyOThkOTQwNDEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAzLTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBNYWtlIFRleHRJdGVyYXRvcjo6cmFuZ2UgcmV0dXJuIGEgU2lt
cGxlUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwODc5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW06CisgICAgICAgICgtW1dlYlRleHRJdGVyYXRv
ciBjdXJyZW50UmFuZ2VdKTogVXNlIGNyZWF0ZUxpdmVSYW5nZS4KKwogMjAyMC0wMy0wNyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQmVnaW4gbW92aW5nIG9mZiBv
ZiBsaXZlIHJhbmdlcyBmb3IgV2ViS2l0IGludGVybmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggZTI1ZWJjMTA5OWYzNWJlMWU5ZTlj
NjJkMDBiN2NkYmM4MDZlM2JiMC4uYmZkZGQyMjcxZmU0MGQ4ZjE1ZjU2OGVlMzc4MzVhYjVkYWE3
MjE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCkBAIC05OSw2ICs5OSw3IEBACiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKKyNpbmNs
dWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgiCiAjaW5jbHVk
ZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgi
CkBAIC0xODEwLDI1ICsxODExLDI0IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0
cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFuZ2U+cmFuZ2UsIGludCBvCiAgICAgICAg
IH0KICAgICB9CiAgICAgCi0gICAgLy8gU29tZXRpbWVzIHRleHQgY29udGVudHMgaW4gYSBub2Rl
IGFyZSBzcGxpdHRlZCBpbnRvIHNldmVyYWwgaXRlcmF0aW9ucywgc28gdGhhdCBpdGVyYXRvci5y
YW5nZSgpLT5zdGFydE9mZnNldCgpCi0gICAgLy8gbWlnaHQgbm90IGJlIHRoZSBjb3JyZWN0IGNo
YXJhY3RlciBjb3VudC4gSGVyZSB3ZSB1c2UgYSBwcmV2aW91c05vZGUgb2JqZWN0IHRvIGtlZXAg
dHJhY2sgb2YgdGhhdC4KKyAgICAvLyBTb21ldGltZXMgdGV4dCBjb250ZW50cyBpbiBhIG5vZGUg
YXJlIHNwbGl0IGludG8gc2V2ZXJhbCBpdGVyYXRpb25zLCBzbyB0aGF0IGl0ZXJhdG9yLnJhbmdl
KCkuc3RhcnRPZmZzZXQoKQorICAgIC8vIG1pZ2h0IG5vdCBiZSB0aGUgdG90YWwgY2hhcmFjdGVy
IGNvdW50LiBIZXJlIHdlIHVzZSBhIHByZXZpb3VzTm9kZSBvYmplY3QgdG8ga2VlcCB0cmFjayBv
ZiB0aGF0LgogICAgIE5vZGUqIHByZXZpb3VzTm9kZSA9IG51bGxwdHI7CiAgICAgZm9yICg7ICFp
dGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKICAgICAgICAgaW50IGN1cnJl
bnRMZW5ndGggPSBpdGVyYXRvci50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIGJvb2wgaGFzUmVw
bGFjZWROb2RlT3JCUiA9IGZhbHNlOwotICAgICAgICAKLSAgICAgICAgTm9kZSYgbm9kZSA9IGl0
ZXJhdG9yLnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7CisKKyAgICAgICAgTm9kZSYgbm9kZSA9
IGl0ZXJhdG9yLnJhbmdlKCkuc3RhcnQuY29udGFpbmVyOwogICAgICAgICBjdXJyZW50Tm9kZSA9
ICZub2RlOwogICAgICAgICAKICAgICAgICAgLy8gV2hlbiBjdXJyZW50TGVuZ3RoID09IDAsIHdl
IGNoZWNrIGlmIHRoZXJlJ3MgYW55IHJlcGxhY2VkIG5vZGUuCiAgICAgICAgIC8vIElmIG5vdCwg
d2Ugc2tpcCB0aGUgbm9kZSB3aXRoIG5vIGxlbmd0aC4KICAgICAgICAgaWYgKCFjdXJyZW50TGVu
Z3RoKSB7Ci0gICAgICAgICAgICBpbnQgc3ViT2Zmc2V0ID0gaXRlcmF0b3IucmFuZ2UoKS0+c3Rh
cnRPZmZzZXQoKTsKLSAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9kZSA9IG5vZGUudHJhdmVyc2VU
b0NoaWxkQXQoc3ViT2Zmc2V0KTsKLSAgICAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpyZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3RlcihjaGlsZE5vZGUpKSB7CisgICAgICAgICAgICBO
b2RlJiBjaGlsZE5vZGUgPSAqaXRlcmF0b3Iubm9kZSgpOworICAgICAgICAgICAgaWYgKEFjY2Vz
c2liaWxpdHlPYmplY3Q6OnJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVyKCZjaGlsZE5vZGUpKSB7
CiAgICAgICAgICAgICAgICAgY3VtdWxhdGl2ZU9mZnNldCsrOwogICAgICAgICAgICAgICAgIGN1
cnJlbnRMZW5ndGgrKzsKLSAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGNoaWxkTm9kZTsK
KyAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZSA9ICZjaGlsZE5vZGU7CiAgICAgICAgICAgICAg
ICAgaGFzUmVwbGFjZWROb2RlT3JCUiA9IHRydWU7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTE4MzcsMTAgKzE4MzcsOSBAQCBDaGFyYWN0ZXJPZmZz
ZXQgQVhPYmplY3RDYWNoZTo6dHJhdmVyc2VUb09mZnNldEluUmFuZ2UoUmVmUHRyPFJhbmdlPnJh
bmdlLCBpbnQgbwogICAgICAgICAgICAgaWYgKGN1cnJlbnRMZW5ndGggPT0gMSkgewogICAgICAg
ICAgICAgICAgIGlmIChpc0hUTUxTcGFjZShpdGVyYXRvci50ZXh0KClbMF0pKSB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIElmIHRoZSBub2RlIGhhcyBCUiB0YWcsIHdlIHdhbnQgdG8gc2V0IHRo
ZSBjdXJyZW50Tm9kZSB0byBpdC4KLSAgICAgICAgICAgICAgICAgICAgaW50IHN1Yk9mZnNldCA9
IGl0ZXJhdG9yLnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIE5v
ZGUqIGNoaWxkTm9kZSA9IG5vZGUudHJhdmVyc2VUb0NoaWxkQXQoc3ViT2Zmc2V0KTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZSAmJiBjaGlsZE5vZGUtPnJlbmRlcmVyKCkgJiYg
Y2hpbGROb2RlLT5yZW5kZXJlcigpLT5pc0JSKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnROb2RlID0gY2hpbGROb2RlOworICAgICAgICAgICAgICAgICAgICBOb2RlJiBjaGls
ZE5vZGUgPSAqaXRlcmF0b3Iubm9kZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRO
b2RlLnJlbmRlcmVyKCkgJiYgY2hpbGROb2RlLnJlbmRlcmVyKCktPmlzQlIoKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY3VycmVudE5vZGUgPSAmY2hpbGROb2RlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaGFzUmVwbGFjZWROb2RlT3JCUiA9IHRydWU7CiAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoYXV0byogc2hhZG93SG9zdCA9IGN1cnJlbnROb2RlLT5zaGFkb3dIb3N0
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIGFyZSBlbnRlcmluZyB0
ZXh0IGNvbnRyb2xzLCB3ZSBzaG91bGQgc2V0IHRoZSBjdXJyZW50Tm9kZQpAQCAtMTg2NywxMSAr
MTg2NiwxMCBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6dHJhdmVyc2VUb09mZnNl
dEluUmFuZ2UoUmVmUHRyPFJhbmdlPnJhbmdlLCBpbnQgbwogCiAgICAgICAgIGlmIChjdXJyZW50
Tm9kZSA9PSBwcmV2aW91c05vZGUpIHsKICAgICAgICAgICAgIGxhc3RMZW5ndGggKz0gY3VycmVu
dExlbmd0aDsKLSAgICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9IGl0ZXJhdG9yLnJhbmdlKCkt
PmVuZE9mZnNldCgpIC0gbGFzdExlbmd0aDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9IGl0ZXJhdG9yLnJhbmdlKCkuZW5kLm9mZnNldCAt
IGxhc3RMZW5ndGg7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsYXN0TGVuZ3RoID0g
Y3VycmVudExlbmd0aDsKLSAgICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9IGhhc1JlcGxhY2Vk
Tm9kZU9yQlIgPyAwIDogaXRlcmF0b3IucmFuZ2UoKS0+c3RhcnRPZmZzZXQoKTsKKyAgICAgICAg
ICAgIGxhc3RTdGFydE9mZnNldCA9IGhhc1JlcGxhY2VkTm9kZU9yQlIgPyAwIDogaXRlcmF0b3Iu
cmFuZ2UoKS5zdGFydC5vZmZzZXQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEJy
ZWFrIGVhcmx5IGlmIHdlIGhhdmUgYWR2YW5jZWQgZW5vdWdoIGNoYXJhY3RlcnMuCkBAIC0xOTAy
LDcgKzE5MDAsNiBAQCBpbnQgQVhPYmplY3RDYWNoZTo6bGVuZ3RoRm9yUmFuZ2UoUmFuZ2UqIHJh
bmdlKQogewogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICAKICAgICBp
bnQgbGVuZ3RoID0gMDsKICAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5nZSk7ICFpdC5hdEVu
ZCgpOyBpdC5hZHZhbmNlKCkpIHsKICAgICAgICAgLy8gbm9uLXplcm8gbGVuZ3RoIG1lYW5zIHRl
eHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMgcmVwbGFjZWQgbm9kZSAoQUtBICJhdHRhY2ht
ZW50cyIgaW4gQVgpCkBAIC0xOTEwLDEzICsxOTA3LDEwIEBAIGludCBBWE9iamVjdENhY2hlOjps
ZW5ndGhGb3JSYW5nZShSYW5nZSogcmFuZ2UpCiAgICAgICAgICAgICBsZW5ndGggKz0gaXQudGV4
dCgpLmxlbmd0aCgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIGxvY2F0ZSB0aGUg
bm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlzIHJlcGxhY2VkIHJhbmdlCi0gICAgICAg
ICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKLSAgICAgICAg
ICAgIGludCBvZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgpOwotICAgICAgICAgICAg
aWYgKEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVyKG5vZGUu
dHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KSkpCisgICAgICAgICAgICBpZiAoQWNjZXNzaWJpbGl0
eU9iamVjdDo6cmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIoaXQubm9kZSgpKSkKICAgICAgICAg
ICAgICAgICArK2xlbmd0aDsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAgCiAgICAgcmV0dXJu
IGxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMjNhMTVmZGMzN2Y1N2E2MjkzNTU3OThiZTU5YzI4
NTc0YjU1MGQxZS4uNjE5MTIxZDY2MjcxMDYyNDg5MjM1NTEwMTcyZGNmOTNhNWQ0OTYwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCkBAIC0xMjgxLDExICsxMjgxLDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OnN0cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4gcmFuZ2UpIGNvbnN0CiAgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQobGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oaXQubm9k
ZSgpLCBWaXNpYmxlUG9zaXRpb24ocmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkpKTsKICAgICAgICAg
ICAgIGl0LmFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAvLyBsb2NhdGUgdGhlIG5vZGUgYW5kIHN0YXJ0aW5nIG9mZnNldCBm
b3IgdGhpcyByZXBsYWNlZCByYW5nZQotICAgICAgICAgICAgTm9kZSYgbm9kZSA9IGl0LnJhbmdl
KCktPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICBBU1NFUlQoJm5vZGUgPT0gJml0LnJh
bmdlKCktPmVuZENvbnRhaW5lcigpKTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5n
ZSgpLT5zdGFydE9mZnNldCgpOwotICAgICAgICAgICAgaWYgKHJlcGxhY2VkTm9kZU5lZWRzQ2hh
cmFjdGVyKG5vZGUudHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KSkpCisgICAgICAgICAgICBpZiAo
cmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIoaXQubm9kZSgpKSkKICAgICAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZChvYmplY3RSZXBsYWNlbWVudENoYXJhY3Rlcik7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xMzA4LDEwICsxMzA0LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0
cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblIKICAgICAg
ICAgICAgIGl0LmFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBsb2NhdGUgdGhlIG5vZGUgYW5kIHN0YXJ0aW5nIG9mZnNl
dCBmb3IgdGhpcyByZXBsYWNlZCByYW5nZQotICAgICAgICAgICAgTm9kZSYgbm9kZSA9IGl0LnJh
bmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICBBU1NFUlQoJm5vZGUgPT0gJml0
LnJhbmdlKCktPmVuZENvbnRhaW5lcigpKTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdC5y
YW5nZSgpLT5zdGFydE9mZnNldCgpOwotICAgICAgICAgICAgaWYgKHJlcGxhY2VkTm9kZU5lZWRz
Q2hhcmFjdGVyKG5vZGUudHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KSkpCisgICAgICAgICAgICBp
ZiAocmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIoaXQubm9kZSgpKSkKICAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZChvYmplY3RSZXBsYWNlbWVudENoYXJhY3Rlcik7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xMzI0LDcgKzEzMTcsNyBAQCBpbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGVu
Z3RoRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZwogICAg
IC8vIEZJWE1FOiBNdWx0aS1ieXRlIHN1cHBvcnQKICAgICBpZiAodmlzaWJsZVBvc2l0aW9uUmFu
Z2UuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICAKKwogICAgIGludCBsZW5ndGgg
PSAwOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBtYWtlUmFuZ2UodmlzaWJsZVBvc2l0aW9u
UmFuZ2Uuc3RhcnQsIHZpc2libGVQb3NpdGlvblJhbmdlLmVuZCk7CiAgICAgZm9yIChUZXh0SXRl
cmF0b3IgaXQocmFuZ2UuZ2V0KCkpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CkBAIC0x
MzMyLDE2ICsxMzI1LDExIEBAIGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsZW5ndGhGb3JWaXNp
YmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nCiAgICAgICAgIGlmIChp
dC50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICBsZW5ndGggKz0gaXQudGV4dCgpLmxlbmd0
aCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIGxvY2F0ZSB0aGUgbm9kZSBhbmQg
c3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlzIHJlcGxhY2VkIHJhbmdlCi0gICAgICAgICAgICBOb2Rl
JiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKLSAgICAgICAgICAgIEFTU0VS
VCgmbm9kZSA9PSAmaXQucmFuZ2UoKS0+ZW5kQ29udGFpbmVyKCkpOwotICAgICAgICAgICAgaW50
IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICAgICAgICAgIGlmIChy
ZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3Rlcihub2RlLnRyYXZlcnNlVG9DaGlsZEF0KG9mZnNldCkp
KQorICAgICAgICAgICAgaWYgKHJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVyKGl0Lm5vZGUoKSkp
CiAgICAgICAgICAgICAgICAgKytsZW5ndGg7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAg
ICByZXR1cm4gbGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tCmluZGV4IDVkZWUxZmJkMGFmNzM2ZGRlOWIyYjcxNDhhMjE4YmI0MTM5OWI0N2UuLmJlOTQ2
MzczOWU2MTRmOTc4OWNiMjY3NWQ5OTRkNTA2ZmE2Y2I3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC01NCw2ICs1NCw3IEBACiAjaW1wb3J0ICJTVkdOYW1l
cy5oIgogI2ltcG9ydCAiU1ZHRWxlbWVudC5oIgogI2ltcG9ydCAiU2VsZWN0aW9uUmVjdC5oIgor
I2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlRleHRJdGVyYXRvci5oIgogI2ltcG9y
dCAiV0FLU2Nyb2xsVmlldy5oIgogI2ltcG9ydCAiV0FLV2luZG93LmgiCkBAIC0yMjU3LDExICsy
MjU4LDggQEAgLSAoTlNBcnJheSAqKWFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6KE5TQXJyYXkg
KiltYXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmkKICAgICBOU011dGFibGVBcnJheSogYXJy
YXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKICAgICBUZXh0SXRlcmF0b3IgaXQo
bWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBlbmRWaXNpYmxlUG9zaXRpb24pLmdldCgp
KTsKICAgICBmb3IgKDsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewotICAgICAgICAvLyBs
b2NhdGUgdGhlIG5vZGUgYW5kIHN0YXJ0aW5nIG9mZnNldCBmb3IgdGhpcyByYW5nZQotICAgICAg
ICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKLSAgICAgICAgQVNT
RVJUKCZub2RlID09ICZpdC5yYW5nZSgpLT5lbmRDb250YWluZXIoKSk7Ci0gICAgICAgIGludCBv
ZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgpOwotICAgICAgICAKKyAgICAgICAgTm9k
ZSYgbm9kZSA9ICppdC5ub2RlKCk7CisKICAgICAgICAgLy8gbm9uLXplcm8gbGVuZ3RoIG1lYW5z
IHRleHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMgcmVwbGFjZWQgbm9kZSAoQUtBICJhdHRh
Y2htZW50cyIgaW4gQVgpCiAgICAgICAgIGlmIChpdC50ZXh0KCkubGVuZ3RoKCkgIT0gMCkgewog
ICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVkKSB7CkBAIC0yMjY5LDIyICsyMjY3LDIwIEBAIC0g
KE5TQXJyYXkgKilhcnJheU9mVGV4dEZvclRleHRNYXJrZXJzOihOU0FycmF5ICopbWFya2VycyBh
dHRyaWJ1dGVkOihCT09MKWF0dHJpCiAgICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogbGlua09iamVjdCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2hvckVsZW1lbnRGb3JOb2Rl
KCZub2RlKTsKICAgICAgICAgICAgICAgICBpZiAoW3NlbGYgX2FkZEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6bGlua09iamVjdCB0b1RleHRNYXJrZXJBcnJheTphcnJheV0pCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgLy8gTmV4
dCBjaGVjayBpZiB0aGlzIHJlZ2lvbiBpcyByZXByZXNlbnRlZCBieSBhIGhlYWRpbmcuCiAgICAg
ICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGluZ09iamVjdCA9IEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmhlYWRpbmdFbGVtZW50Rm9yTm9kZSgmbm9kZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKFtzZWxmIF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0OmhlYWRpbmdPYmplY3QgdG9UZXh0
TWFya2VyQXJyYXk6YXJyYXldKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9kZSwg
VmlzaWJsZVBvc2l0aW9uKGl0LnJhbmdlKCktPnN0YXJ0UG9zaXRpb24oKSkpOworCisgICAgICAg
ICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlz
dE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIFZpc2libGVQb3NpdGlvbihjcmVh
dGVMaXZlUmFuZ2UoaXQucmFuZ2UoKSktPnN0YXJ0UG9zaXRpb24oKSkpOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGlmICghbGlzdE1hcmtlclRleHQuaXNFbXB0eSgpKSAKICAg
ICAgICAgICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpsaXN0TWFya2VyVGV4dF07CiAgICAg
ICAgICAgICAgICAgLy8gVGhlcmUgd2FzIG5vdCBhbiBlbGVtZW50IHJlcHJlc2VudGF0aW9uLCBz
byBqdXN0IHJldHVybiB0aGUgdGV4dC4KICAgICAgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
Oml0LnRleHQoKS5jcmVhdGVOU1N0cmluZygpLmdldCgpXTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1h
cmtlclRleHQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQ
b3NpdGlvbigmbm9kZSwgVmlzaWJsZVBvc2l0aW9uKGl0LnJhbmdlKCktPnN0YXJ0UG9zaXRpb24o
KSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1h
cmtlclRleHQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQ
b3NpdGlvbigmbm9kZSwgVmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxpdmVSYW5nZShpdC5yYW5nZSgp
KS0+c3RhcnRQb3NpdGlvbigpKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoIWxpc3RNYXJrZXJU
ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICBOU011dGFibGVBdHRyaWJ1dGVk
U3RyaW5nKiBhdHRyU3RyaW5nID0gW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0XTsKQEAgLTIyOTIsMjIgKzIyODgsMTkgQEAgLSAoTlNBcnJheSAqKWFycmF5T2ZUZXh0Rm9y
VGV4dE1hcmtlcnM6KE5TQXJyYXkgKiltYXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmkKICAg
ICAgICAgICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDphdHRyU3RyaW5nXTsKICAgICAgICAg
ICAgICAgICAgICAgW2F0dHJTdHJpbmcgcmVsZWFzZV07CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyAqYXR0clN0cmluZyA9IFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07
CiAgICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5n
LCAmbm9kZSwgaXQudGV4dCgpLmNyZWF0ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSk7
CiAgICAgICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDphdHRyU3RyaW5nXTsKICAgICAgICAg
ICAgICAgICBbYXR0clN0cmluZyByZWxlYXNlXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIE5vZGUqIHJlcGxhY2VkTm9kZSA9IG5vZGUudHJhdmVyc2VUb0No
aWxkQXQob2Zmc2V0KTsKLSAgICAgICAgICAgIGlmIChyZXBsYWNlZE5vZGUpIHsKLSAgICAgICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBzZWxmLmF4QmFja2luZ09iamVjdC0+
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZXBsYWNlZE5vZGUtPnJlbmRlcmVyKCkpOwot
ICAgICAgICAgICAgICAgIGlmIChvYmogJiYgIW9iai0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
KQotICAgICAgICAgICAgICAgICAgICBbc2VsZiBfYWRkQWNjZXNzaWJpbGl0eU9iamVjdDpvYmog
dG9UZXh0TWFya2VyQXJyYXk6YXJyYXldOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2Fj
aGUoKS0+Z2V0T3JDcmVhdGUobm9kZS5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIGlmIChvYmog
JiYgIW9iai0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQorICAgICAgICAgICAgICAgIFtzZWxm
IF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0Om9iaiB0b1RleHRNYXJrZXJBcnJheTphcnJheV07CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gW2FycmF5IGF1dG9yZWxlYXNlXTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAxMTA5NjBj
Njg0OTBkOTY0NDRlY2QxMzc4MzJkMjI3ZmYyZThmYWZhLi4yNjYzZWRmY2Q0MzI1NzIxODMxYWRi
N2RkOGQzMzJiMDljODQ4MjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQpAQCAtNzAsNiArNzAsNyBAQAogI2ltcG9ydCAiUmVuZGVyVmlldy5oIgogI2ltcG9ydCAi
UmVuZGVyV2lkZ2V0LmgiCiAjaW1wb3J0ICJTY3JvbGxWaWV3LmgiCisjaW1wb3J0ICJTaW1wbGVS
YW5nZS5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXJDbGllbnQuaCIKICNpbXBvcnQgIlRleHRDaGVj
a2luZ0hlbHBlci5oIgogI2ltcG9ydCAiVGV4dERlY29yYXRpb25QYWludGVyLmgiCkBAIC03OSwx
MiArODAsMTIgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDx3dGYvT2Jq
Q1J1bnRpbWVFeHRyYXMuaD4KLSNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpIHx8IEVOQUJMRShN
RVRFUl9FTEVNRU5UKQorCisjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQogI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogLy8gQ2VsbCBUYWJsZXMKICNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDZWxsc0F0dHJpYnV0ZQpAQCAtMTA2MCw3ICsxMDYxLDcg
QEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW4KICAgICAKICAgICAvLyBJbmRpY2F0ZSBiYWNrZ3Jv
dW5kIGhpZ2hsaWdodGluZy4KICAgICBmb3IgKE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgp
OyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChub2RlLT5o
YXNUYWdOYW1lKG1hcmtUYWcpKQorICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6Om1hcmtUYWcpKQogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0
clN0cmluZywgQCJBWEhpZ2hsaWdodCIsIEBZRVMsIHJhbmdlKTsKICAgICB9CiB9CkBAIC0xMjU2
LDIyICsxMjU3LDE2IEBAIC0gKE5TQXR0cmlidXRlZFN0cmluZyopZG9BWEF0dHJpYnV0ZWRTdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2U6KGlkKXRleHRNYXJrZXJSYW5nCiAgICAgICAgIE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcgPSBbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRdOwogICAgICAgICBUZXh0SXRlcmF0b3IgaXQocmFuZ2UuZ2V0KCkpOwog
ICAgICAgICB3aGlsZSAoIWl0LmF0RW5kKCkpIHsKLSAgICAgICAgICAgIC8vIGxvY2F0ZSB0aGUg
bm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlzIHJhbmdlCi0gICAgICAgICAgICBOb2Rl
JiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKLSAgICAgICAgICAgIEFTU0VS
VCgmbm9kZSA9PSAmaXQucmFuZ2UoKS0+ZW5kQ29udGFpbmVyKCkpOwotICAgICAgICAgICAgaW50
IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7Ci0KKyAgICAgICAgICAgIE5vZGUm
IG5vZGUgPSAqaXQubm9kZSgpOwogICAgICAgICAgICAgLy8gbm9uLXplcm8gbGVuZ3RoIG1lYW5z
IHRleHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMgcmVwbGFjZWQgbm9kZSAoQUtBICJhdHRh
Y2htZW50cyIgaW4gQVgpCiAgICAgICAgICAgICBpZiAoaXQudGV4dCgpLmxlbmd0aCgpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gQWRkIHRoZSB0ZXh0IG9mIHRoZSBsaXN0IG1hcmtlciBpdGVtIGlm
IG5lY2Vzc2FyeS4KLSAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9kZSwg
VmlzaWJsZVBvc2l0aW9uKGl0LnJhbmdlKCktPnN0YXJ0UG9zaXRpb24oKSkpOworICAgICAgICAg
ICAgICAgIFN0cmluZyBsaXN0TWFya2VyVGV4dCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxpc3RN
YXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKCZub2RlLCBWaXNpYmxlUG9zaXRpb24oY3JlYXRl
TGl2ZVJhbmdlKGl0LnJhbmdlKCkpLT5zdGFydFBvc2l0aW9uKCkpKTsKICAgICAgICAgICAgICAg
ICBpZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgQVhB
dHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5nLCAmbm9kZSwgbGlzdE1hcmtlclRl
eHQsIHNwZWxsQ2hlY2spOwogICAgICAgICAgICAgICAgIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVu
ZFRleHQoYXR0clN0cmluZywgJm5vZGUsIGl0LnRleHQoKSwgc3BlbGxDaGVjayk7CiAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIE5vZGUqIHJlcGxhY2VkTm9kZSA9IG5vZGUu
dHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBOU1N0cmluZyAqYXR0
YWNobWVudFN0cmluZyA9IG5zU3RyaW5nRm9yUmVwbGFjZWROb2RlKHJlcGxhY2VkTm9kZSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoTlNTdHJpbmcgKmF0dGFjaG1lbnRTdHJpbmcgPSBuc1N0cmluZ0ZvclJlcGxhY2VkTm9kZSgm
bm9kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgTlNSYW5nZSBhdHRyU3RyaW5nUmFuZ2UgPSBO
U01ha2VSYW5nZShbYXR0clN0cmluZyBsZW5ndGhdLCBbYXR0YWNobWVudFN0cmluZyBsZW5ndGhd
KTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBhcHBlbmQgdGhlIHBsYWNlaG9sZGVyIHN0cmlu
ZwpAQCAtMTI4MSw3ICsxMjc2LDcgQEAgLSAoTlNBdHRyaWJ1dGVkU3RyaW5nKilkb0FYQXR0cmli
dXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTooaWQpdGV4dE1hcmtlclJhbmcKICAgICAgICAg
ICAgICAgICAgICAgW2F0dHJTdHJpbmcgc2V0QXR0cmlidXRlczpuaWwgcmFuZ2U6YXR0clN0cmlu
Z1JhbmdlXTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBhZGQgdGhlIGF0dGFjaG1lbnQgYXR0
cmlidXRlCi0gICAgICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IHJl
cGxhY2VkTm9kZS0+cmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKHJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKSk7CisgICAgICAgICAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IG5vZGUucmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS5heE9i
amVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG5vZGUucmVuZGVyZXIoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0RWxlbWVudChhdHRyU3RyaW5nLCBOU0FjY2Vzc2li
aWxpdHlBdHRhY2htZW50VGV4dEF0dHJpYnV0ZSwgb2JqLCBhdHRyU3RyaW5nUmFuZ2UpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIxOTMsNiArMjE4OCw3IEBAIC0gKE5T
U3RyaW5nKilzdWJyb2xlCiAgICAgICAgIHJldHVybiBAIkFYU3Vic2NyaXB0U3R5bGVHcm91cCI7
CiAKICAgICBpZiAoc2VsZi5heEJhY2tpbmdPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSB7
CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAgICAgICAgIGF1dG8gdGFnTmFt
ZSA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT50YWdOYW1lKCk7CiAgICAgICAgIGlmICh0YWdOYW1l
ID09IGtiZFRhZykKICAgICAgICAgICAgIHJldHVybiBAIkFYS2V5Ym9hcmRJbnB1dFN0eWxlR3Jv
dXAiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cAppbmRleCAyYmZlMTVlMDM1YTE3NTAwZTgxNWM5MTgwNjgzZTg5Yjc0Njk2MDg3Li5jYzcyODQ3
NWM2YzE0OTFkOGEwNWNiMmY0ZDI0YzU3MTc0ODBkNDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCBWZWN0
b3I8UmVmUHRyPFJhbmdlPj4gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJh
bmdlcyhjb25zdCBSYW5nZSYgcgogewogICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiB0ZXh0UmFu
Z2U7CiAgICAgZm9yIChUZXh0SXRlcmF0b3IgdGV4dEl0ZXJhdG9yKCZyYW5nZSk7ICF0ZXh0SXRl
cmF0b3IuYXRFbmQoKTsgdGV4dEl0ZXJhdG9yLmFkdmFuY2UoKSkKLSAgICAgICAgdGV4dFJhbmdl
LmFwcGVuZCh0ZXh0SXRlcmF0b3IucmFuZ2UoKSk7CisgICAgICAgIHRleHRSYW5nZS5hcHBlbmQo
Y3JlYXRlTGl2ZVJhbmdlKHRleHRJdGVyYXRvci5yYW5nZSgpKSk7CiAgICAgcmV0dXJuIHRleHRS
YW5nZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggYjQ3YTI5YjFiMTAyNDIxMGQ1
ZWVlOTljMjQ0Nzg4MTczNDM3MmM3Ni4uMzNkYmI0ZTFkZTBkODFkNzUwZTJiZmZjYjM5ODVjOTQy
NmQ4MjhjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJQ
b3NpdGlvbkl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJC
bG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckZsZXhpYmxlQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVy
R3JpZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2lu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCmluZGV4IDc2NWY0
YTAwNzhjZTY2M2NiNmI3NjdhMmFiNDM1MGNiNmRkZTk0Y2EuLmQ4Y2VlNzdlNWM3ODRiYzBlODY0
Y2JlNjVhNGExOTBmNWFmN2MyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZUJvdW5kYXJ5UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBv
aW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUmFuZ2VCb3VuZGFyeVBvaW50IHsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBSYW5nZUJvdW5kYXJ5UG9pbnQoTm9kZSogY29udGFpbmVyKTsKIAot
ICAgIGNvbnN0IFBvc2l0aW9uIHRvUG9zaXRpb24oKSBjb25zdDsKKyAgICBQb3NpdGlvbiB0b1Bv
c2l0aW9uKCkgY29uc3Q7CiAKICAgICBOb2RlKiBjb250YWluZXIoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBvZmZzZXQoKSBjb25zdDsKQEAgLTg1LDcgKzg1LDcgQEAgaW5saW5lIHZvaWQgUmFuZ2VC
b3VuZGFyeVBvaW50OjplbnN1cmVPZmZzZXRJc1ZhbGlkKCkgY29uc3QKICAgICBtX29mZnNldElu
Q29udGFpbmVyID0gbV9jaGlsZEJlZm9yZUJvdW5kYXJ5LT5jb21wdXRlTm9kZUluZGV4KCkgKyAx
OwogfQogCi1pbmxpbmUgY29uc3QgUG9zaXRpb24gUmFuZ2VCb3VuZGFyeVBvaW50Ojp0b1Bvc2l0
aW9uKCkgY29uc3QKK2lubGluZSBQb3NpdGlvbiBSYW5nZUJvdW5kYXJ5UG9pbnQ6OnRvUG9zaXRp
b24oKSBjb25zdAogewogICAgIGVuc3VyZU9mZnNldElzVmFsaWQoKTsKICAgICByZXR1cm4gY3Jl
YXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG1fY29udGFpbmVyTm9kZS5nZXQoKSwgbV9vZmZzZXRJ
bkNvbnRhaW5lci52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNw
cAppbmRleCA1M2MyZDI1NmVkMjhhN2U1Y2MwM2ZjZDZiNmYzY2U4ZGMzMDM0YWQyLi43MDFhNzk2
OWY1YWUxYjY5MDE3NmI1NjMzZGE1NWNjZjIwMzAwMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNSBBbGV4ZXkgUHJvc2t1cnlha292LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTQw
LDE1ICsxNDAsOCBAQCBwcml2YXRlOgogCiAvLyAtLS0tLS0tLQogCi1zdGF0aWMgY29uc3QgdW5z
aWduZWQgYml0c0luV29yZCA9IHNpemVvZih1bnNpZ25lZCkgKiA4Owotc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGJpdEluV29yZE1hc2sgPSBiaXRzSW5Xb3JkIC0gMTsKLQotQml0U3RhY2s6OkJpdFN0
YWNrKCkKLSAgICA6IG1fc2l6ZSgwKQotewotfQotCi1CaXRTdGFjazo6fkJpdFN0YWNrKCkgPSBk
ZWZhdWx0Oworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRzSW5Xb3JkID0gc2l6ZW9mKHVu
c2lnbmVkKSAqIDg7CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGJpdEluV29yZE1hc2sgPSBi
aXRzSW5Xb3JkIC0gMTsKIAogdm9pZCBCaXRTdGFjazo6cHVzaChib29sIGJpdCkKIHsKQEAgLTE4
MSwxMSArMTc0LDYgQEAgYm9vbCBCaXRTdGFjazo6dG9wKCkgY29uc3QKICAgICByZXR1cm4gbV93
b3Jkcy5sYXN0KCkgJiAoMVUgPDwgc2hpZnQpOwogfQogCi11bnNpZ25lZCBCaXRTdGFjazo6c2l6
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2l6ZTsKLX0KLQogLy8gLS0tLS0tLS0KIAogLy8g
VGhpcyBmdW5jdGlvbiBpcyBsaWtlIFJhbmdlOjpwYXN0TGFzdE5vZGUsIGV4Y2VwdCBmb3IgdGhl
IGZhY3QgdGhhdCBpdCBjYW4gY2xpbWIgdXAgb3V0IG9mIHNoYWRvdyB0cmVlcy4KQEAgLTExMjgs
MjkgKzExMTYsMjUgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KFRleHQmIHRleHROb2Rl
LCBSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRleHRTdGFydE8KICAgICBtX2hhc0VtaXR0ZWQg
PSB0cnVlOwogfQogCi1SZWY8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAorU2lt
cGxlUmFuZ2UgVGV4dEl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFhdEVu
ZCgpKTsKLQotICAgIC8vIHVzZSB0aGUgY3VycmVudCBydW4gaW5mb3JtYXRpb24sIGlmIHdlIGhh
dmUgaXQKKyAgICAvLyBVc2UgdGhlIGN1cnJlbnQgcnVuIGluZm9ybWF0aW9uLCBpZiB3ZSBoYXZl
IGl0LgogICAgIGlmIChtX3Bvc2l0aW9uT2Zmc2V0QmFzZU5vZGUpIHsKICAgICAgICAgdW5zaWdu
ZWQgaW5kZXggPSBtX3Bvc2l0aW9uT2Zmc2V0QmFzZU5vZGUtPmNvbXB1dGVOb2RlSW5kZXgoKTsK
ICAgICAgICAgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0ICs9IGluZGV4OwogICAgICAgICBtX3Bvc2l0
aW9uRW5kT2Zmc2V0ICs9IGluZGV4OwogICAgICAgICBtX3Bvc2l0aW9uT2Zmc2V0QmFzZU5vZGUg
PSBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShtX3Bvc2l0aW9uTm9k
ZS0+ZG9jdW1lbnQoKSwgbV9wb3NpdGlvbk5vZGUsIG1fcG9zaXRpb25TdGFydE9mZnNldCwgbV9w
b3NpdGlvbk5vZGUsIG1fcG9zaXRpb25FbmRPZmZzZXQpOworICAgIHJldHVybiB7IHsgKm1fcG9z
aXRpb25Ob2RlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wb3NpdGlvblN0YXJ0T2Zmc2V0KSB9
LCB7ICptX3Bvc2l0aW9uTm9kZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9zaXRpb25FbmRP
ZmZzZXQpIH0gfTsKIH0KLSAgICAKKwogTm9kZSogVGV4dEl0ZXJhdG9yOjpub2RlKCkgY29uc3QK
IHsKLSAgICBSZWY8UmFuZ2U+IHRleHRSYW5nZSA9IHJhbmdlKCk7Ci0KLSAgICBOb2RlJiBub2Rl
ID0gdGV4dFJhbmdlLT5zdGFydENvbnRhaW5lcigpOwotICAgIGlmIChub2RlLmlzQ2hhcmFjdGVy
RGF0YU5vZGUoKSkKLSAgICAgICAgcmV0dXJuICZub2RlOwotICAgIAotICAgIHJldHVybiBub2Rl
LnRyYXZlcnNlVG9DaGlsZEF0KHRleHRSYW5nZS0+c3RhcnRPZmZzZXQoKSk7CisgICAgYXV0byBz
dGFydCA9IHRoaXMtPnJhbmdlKCkuc3RhcnQ7CisgICAgaWYgKHN0YXJ0LmNvbnRhaW5lci0+aXND
aGFyYWN0ZXJEYXRhTm9kZSgpKQorICAgICAgICByZXR1cm4gc3RhcnQuY29udGFpbmVyLnB0cigp
OworICAgIHJldHVybiBzdGFydC5jb250YWluZXItPnRyYXZlcnNlVG9DaGlsZEF0KHN0YXJ0Lm9m
ZnNldCk7CiB9CiAKIC8vIC0tLS0tLS0tCkBAIC0xNDIyLDE5ICsxNDA2LDE3IEBAIENoYXJhY3Rl
ckl0ZXJhdG9yOjpDaGFyYWN0ZXJJdGVyYXRvcihQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5k
LCBUZXh0SXRlcmF0b3JCCiAKIFJlZjxSYW5nZT4gQ2hhcmFjdGVySXRlcmF0b3I6OnJhbmdlKCkg
Y29uc3QKIHsKLSAgICBSZWY8UmFuZ2U+IHJhbmdlID0gbV91bmRlcmx5aW5nSXRlcmF0b3IucmFu
Z2UoKTsKKyAgICBTaW1wbGVSYW5nZSByYW5nZSA9IG1fdW5kZXJseWluZ0l0ZXJhdG9yLnJhbmdl
KCk7CiAgICAgaWYgKCFtX3VuZGVybHlpbmdJdGVyYXRvci5hdEVuZCgpKSB7Ci0gICAgICAgIGlm
IChtX3VuZGVybHlpbmdJdGVyYXRvci50ZXh0KCkubGVuZ3RoKCkgPD0gMSkgeworICAgICAgICBp
ZiAobV91bmRlcmx5aW5nSXRlcmF0b3IudGV4dCgpLmxlbmd0aCgpIDw9IDEpCiAgICAgICAgICAg
ICBBU1NFUlQobV9ydW5PZmZzZXQgPT0gMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBOb2RlJiBub2RlID0gcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICBBU1NF
UlQoJm5vZGUgPT0gJnJhbmdlLT5lbmRDb250YWluZXIoKSk7Ci0gICAgICAgICAgICBpbnQgb2Zm
c2V0ID0gcmFuZ2UtPnN0YXJ0T2Zmc2V0KCkgKyBtX3J1bk9mZnNldDsKLSAgICAgICAgICAgIHJh
bmdlLT5zZXRTdGFydChub2RlLCBvZmZzZXQpOwotICAgICAgICAgICAgcmFuZ2UtPnNldEVuZChu
b2RlLCBvZmZzZXQgKyAxKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBOb2RlJiBub2Rl
ID0gcmFuZ2Uuc3RhcnQuY29udGFpbmVyOworICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0g
cmFuZ2Uuc3RhcnRPZmZzZXQoKSArIG1fcnVuT2Zmc2V0OworICAgICAgICAgICAgcmFuZ2UgPSB7
IHsgbm9kZSwgb2Zmc2V0IH0sIHsgbm9kZSwgb2Zmc2V0ICsgMSB9IH07CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgcmV0dXJuIHJhbmdlOworICAgIHJldHVybiBjcmVhdGVMaXZlUmFuZ2UocmFuZ2Up
OwogfQogCiB2b2lkIENoYXJhY3Rlckl0ZXJhdG9yOjphZHZhbmNlKGludCBjb3VudCkKQEAgLTI0
MzksNyArMjQyMSw3IEBAIFJlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwgaW50CiAKICAgICBmb3IgKDsgIWl0
LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewogICAgICAgICBpbnQgbGVuZ3RoID0gaXQudGV4dCgp
Lmxlbmd0aCgpOwotICAgICAgICB0ZXh0UnVuUmFuZ2UgPSBpdC5yYW5nZSgpOworICAgICAgICB0
ZXh0UnVuUmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoaXQucmFuZ2UoKSk7CiAKICAgICAgICAgYm9v
bCBmb3VuZFN0YXJ0ID0gcmFuZ2VMb2NhdGlvbiA+PSBkb2NUZXh0UG9zaXRpb24gJiYgcmFuZ2VM
b2NhdGlvbiA8PSBkb2NUZXh0UG9zaXRpb24gKyBsZW5ndGg7CiAgICAgICAgIGJvb2wgZm91bmRF
bmQgPSByYW5nZUVuZCA+PSBkb2NUZXh0UG9zaXRpb24gJiYgcmFuZ2VFbmQgPD0gZG9jVGV4dFBv
c2l0aW9uICsgbGVuZ3RoOwpAQCAtMjQ1MCw4ICsyNDMyLDggQEAgUmVmUHRyPFJhbmdlPiBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3Bl
LCBpbnQKICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMSAmJiAoaXQudGV4dCgpWzBdID09ICdc
bicgfHwgaXNJbnNpZGVSZXBsYWNlZEVsZW1lbnQoaXQpKSkgewogICAgICAgICAgICAgICAgIGl0
LmFkdmFuY2UoKTsKICAgICAgICAgICAgICAgICBpZiAoIWl0LmF0RW5kKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgUmVmPFJhbmdlPiByYW5nZSA9IGl0LnJhbmdlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKHJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5n
ZS0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gc3RhcnQgPSBpdC5y
YW5nZSgpLnN0YXJ0OworICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVuZChX
VEZNb3ZlKHN0YXJ0LmNvbnRhaW5lciksIHN0YXJ0Lm9mZnNldCk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVuU3RhcnQgPSB0ZXh0UnVu
UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcnVu
RW5kID0gVmlzaWJsZVBvc2l0aW9uKHJ1blN0YXJ0KS5uZXh0KCkuZGVlcEVxdWl2YWxlbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDEwMzA0YWZmODc4ZjRmZmVj
NThiOWY5MDM1ZGI5MWY0ZDA1ZDdiMjUuLmVjYjEwZDc1MTM4YzA3ZDZhOWY1NmY3MThhZDI4MjE3
MGQ4MjEzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDI0
ICsyNSwxOSBAQAogCiAjcHJhZ21hIG9uY2UKIAotLy8gRklYTUU6IE1vdmUgZWFjaCBpdGVyYXRv
ciBjbGFzcyBpbnRvIGEgc2VwYXJhdGUgaGVhZGVyIGZpbGUuCi0KICNpbmNsdWRlICJGaW5kT3B0
aW9ucy5oIgogI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKLSNpbmNsdWRlICJSYW5n
ZS5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvckJlaGF2aW9yLmgiCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBJbmxpbmVUZXh0Qm94OworY2xhc3MgUmFuZ2U7CiBjbGFzcyBSZW5k
ZXJUZXh0OwogY2xhc3MgUmVuZGVyVGV4dEZyYWdtZW50OwogCi1uYW1lc3BhY2UgU2ltcGxlTGlu
ZUxheW91dCB7Ci1jbGFzcyBSdW5SZXNvbHZlcjsKLX0KK3N0cnVjdCBTaW1wbGVSYW5nZTsKIAog
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHBsYWluVGV4dChQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24g
ZW5kLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvciwg
Ym9vbCBpc0Rpc3BsYXlTdHJpbmcgPSBmYWxzZSk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcGxh
aW5UZXh0UmVwbGFjaW5nTm9CcmVha1NwYWNlKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQs
IFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29s
IGlzRGlzcGxheVN0cmluZyA9IGZhbHNlKTsKQEAgLTYwLDMxICs1NSwyMSBAQCBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgZm9sZFF1b3RlTWFya3MoY29uc3QgU3RyaW5nJik7CiAvLyBGSVhNRTogTW92
ZSB0aGlzIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBlZGl0aW5nIGRpcmVjdG9yeS4gSXQgZG9lc24n
dCBiZWxvbmcgaGVyZS4KIGJvb2wgaXNSZW5kZXJlclJlcGxhY2VkRWxlbWVudChSZW5kZXJPYmpl
Y3QqKTsKIAorLy8gRklYTUU6IE1vdmUgZWFjaCBpdGVyYXRvciBjbGFzcyBpbnRvIGEgc2VwYXJh
dGUgaGVhZGVyIGZpbGUuCisKIGNsYXNzIEJpdFN0YWNrIHsKIHB1YmxpYzoKLSAgICBCaXRTdGFj
aygpOwotICAgIH5CaXRTdGFjaygpOwotCiAgICAgdm9pZCBwdXNoKGJvb2wpOwogICAgIHZvaWQg
cG9wKCk7Ci0KICAgICBib29sIHRvcCgpIGNvbnN0OwotICAgIHVuc2lnbmVkIHNpemUoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBtX3NpemU7CisgICAgdW5zaWduZWQgbV9zaXpl
IHsgMCB9OwogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMT4gbV93b3JkczsKIH07CiAKIGNsYXNzIFRl
eHRJdGVyYXRvckNvcHlhYmxlVGV4dCB7CiBwdWJsaWM6Ci0gICAgVGV4dEl0ZXJhdG9yQ29weWFi
bGVUZXh0KCkKLSAgICAgICAgOiBtX3NpbmdsZUNoYXJhY3RlcigwKQotICAgICAgICAsIG1fb2Zm
c2V0KDApCi0gICAgICAgICwgbV9sZW5ndGgoMCkKLSAgICB7Ci0gICAgfQotCiAgICAgU3RyaW5n
VmlldyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9zaW5nbGVDaGFyYWN0ZXIgPyBTdHJpbmdWaWV3
KCZtX3NpbmdsZUNoYXJhY3RlciwgMSkgOiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmco
bV9vZmZzZXQsIG1fbGVuZ3RoKTsgfQogICAgIHZvaWQgYXBwZW5kVG9TdHJpbmdCdWlsZGVyKFN0
cmluZ0J1aWxkZXImKSBjb25zdDsKIApAQCAtOTQsMTAgKzc5LDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldChVQ2hhcik7CiAKIHByaXZhdGU6Ci0gICAgVUNoYXIgbV9zaW5nbGVDaGFyYWN0ZXI7
CisgICAgVUNoYXIgbV9zaW5nbGVDaGFyYWN0ZXIgeyAwIH07CiAgICAgU3RyaW5nIG1fc3RyaW5n
OwotICAgIHVuc2lnbmVkIG1fb2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fbGVuZ3RoOworICAgIHVu
c2lnbmVkIG1fb2Zmc2V0IHsgMCB9OworICAgIHVuc2lnbmVkIG1fbGVuZ3RoIHsgMCB9OwogfTsK
IAogLy8gSXRlcmF0ZXMgdGhyb3VnaCB0aGUgRE9NIHJhbmdlLCByZXR1cm5pbmcgYWxsIHRoZSB0
ZXh0LCBhbmQgMC1sZW5ndGggYm91bmRhcmllcwpAQCAtMTA3LDcgKzkyLDcgQEAgcHJpdmF0ZToK
IGNsYXNzIFRleHRJdGVyYXRvciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgVGV4dEl0ZXJhdG9yKFBvc2l0aW9uIHN0
YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVm
YXVsdEJlaGF2aW9yKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBUZXh0SXRlcmF0b3IoUG9zaXRpb24g
c3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JE
ZWZhdWx0QmVoYXZpb3IpOwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFRleHRJdGVyYXRv
cihjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJlaGF2aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVs
dEJlaGF2aW9yKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+VGV4dEl0ZXJhdG9yKCk7CiAKQEAgLTEx
NSw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZHZhbmNlKCk7
CiAKICAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdCB7IEFTU0VSVCghYXRFbmQoKSk7IHJldHVy
biBtX3RleHQ7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8UmFuZ2U+IHJhbmdlKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgcmFuZ2UoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBOb2RlKiBub2RlKCkgY29uc3Q7CiAKICAgICBjb25zdCBUZXh0SXRlcmF0b3JD
b3B5YWJsZVRleHQmIGNvcHlhYmxlVGV4dCgpIGNvbnN0IHsgQVNTRVJUKCFhdEVuZCgpKTsgcmV0
dXJuIG1fY29weWFibGVUZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDQxN2YyYTk2NGYwMjU3NjdlMjNk
YTM3ZjFhNDI1M2ZmMzE1ZDZiZWYuLjZjZDE3ZDEzMmVjZjk4N2ZjNGNjNDRmNTY5ZTQ5ZGM4MTFi
ZGI4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgY2xhc3MgUGFyYWdyYXBoQ29u
dGVudEl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IoY29u
c3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQogICAgICAgICA6IG1faXRl
cmF0b3Ioc3RhcnQsIGVuZCkKLSAgICAgICAgLCBtX2l0ZXJhdG9yTm9kZShtX2l0ZXJhdG9yLmF0
RW5kKCkgPyBudWxscHRyIDogbV9pdGVyYXRvci5yYW5nZSgpLT5maXJzdE5vZGUoKSkKKyAgICAg
ICAgLCBtX2l0ZXJhdG9yTm9kZShtX2l0ZXJhdG9yLmF0RW5kKCkgPyBudWxscHRyIDogY3JlYXRl
TGl2ZVJhbmdlKG1faXRlcmF0b3IucmFuZ2UoKSktPmZpcnN0Tm9kZSgpKQogICAgICAgICAsIG1f
Y3VycmVudE5vZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVudChzdGFydC5maXJzdE5vZGUoKSkK
ICAgICAgICAgLCBtX3Bhc3RFbmROb2RlKGVuZC5maXJzdE5vZGUoKSkKICAgICB7CkBAIC0xNjEs
NyArMTYxLDcgQEAgcHVibGljOgogICAgICAgICBhdXRvIHByZXZpb3VzSXRlcmF0b3JOb2RlID0g
bV9pdGVyYXRvck5vZGU7CiAKICAgICAgICAgbV9pdGVyYXRvci5hZHZhbmNlKCk7Ci0gICAgICAg
IG1faXRlcmF0b3JOb2RlID0gbV9pdGVyYXRvci5hdEVuZCgpID8gbnVsbHB0ciA6IG1faXRlcmF0
b3IucmFuZ2UoKS0+Zmlyc3ROb2RlKCk7CisgICAgICAgIG1faXRlcmF0b3JOb2RlID0gbV9pdGVy
YXRvci5hdEVuZCgpID8gbnVsbHB0ciA6IGNyZWF0ZUxpdmVSYW5nZShtX2l0ZXJhdG9yLnJhbmdl
KCkpLT5maXJzdE5vZGUoKTsKICAgICAgICAgaWYgKHByZXZpb3VzSXRlcmF0b3JOb2RlICE9IG1f
aXRlcmF0b3JOb2RlKQogICAgICAgICAgICAgbW92ZUN1cnJlbnROb2RlRm9yd2FyZCgpOwogICAg
IH0KQEAgLTE5MywxMiArMTkzLDEyIEBAIHB1YmxpYzoKIAogICAgIFBvc2l0aW9uIHN0YXJ0UG9z
aXRpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faXRlcmF0b3IucmFuZ2UoKS0+c3RhcnRQ
b3NpdGlvbigpOworICAgICAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKG1faXRlcmF0b3IucmFu
Z2UoKSktPnN0YXJ0UG9zaXRpb24oKTsKICAgICB9CiAKICAgICBQb3NpdGlvbiBlbmRQb3NpdGlv
bigpCiAgICAgewotICAgICAgICByZXR1cm4gbV9pdGVyYXRvci5yYW5nZSgpLT5lbmRQb3NpdGlv
bigpOworICAgICAgICByZXR1cm4gY3JlYXRlTGl2ZVJhbmdlKG1faXRlcmF0b3IucmFuZ2UoKSkt
PmVuZFBvc2l0aW9uKCk7CiAgICAgfQogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXRlcmF0b3IuYXRFbmQoKSAmJiBtX2N1cnJlbnROb2RlRm9yRmluZGluZ0ludmlzaWJsZUNv
bnRlbnQgPT0gbV9wYXN0RW5kTm9kZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9EYXRhRGV0ZWN0aW9uLm1tCmluZGV4IGM4OWI5MGM4ODFhZDgxNmRmOWQ2ODU2ODhhMGZiOWNl
YmZiMzBhODYuLmM2MWUzNTY1ODI3ZGI0ZWVlZmZhNzY3MDhkNmEwOTQxOTQzZTgwZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTQzLDYg
KzQzLDcgQEAKICNpbXBvcnQgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbXBvcnQgIlJhbmdlLmgiCiAj
aW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKKyNpbXBvcnQgIlNpbXBsZVJhbmdlLmgiCiAjaW1wb3J0
ICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbXBvcnQgIlRleHQuaCIKICNpbXBvcnQgIlRleHRJdGVy
YXRvci5oIgpAQCAtNDk5LDcgKzUwMCw3IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVj
dENvbnRlbnRJblJhbmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiAgICAg
ICAgICAgICBpdGVyYXRvci5hZHZhbmNlKCk7CiAKICAgICAgICAgVmVjdG9yPFJlZlB0cjxSYW5n
ZT4+IGZyYWdtZW50UmFuZ2VzOwotICAgICAgICBSZWZQdHI8UmFuZ2U+IGN1cnJlbnRSYW5nZSA9
IGl0ZXJhdG9yLnJhbmdlKCk7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFJhbmdlID0g
Y3JlYXRlTGl2ZVJhbmdlKGl0ZXJhdG9yLnJhbmdlKCkpOwogICAgICAgICBDRkluZGV4IGZyYWdt
ZW50SW5kZXggPSBxdWVyeVJhbmdlLnN0YXJ0LnF1ZXJ5SW5kZXg7CiAgICAgICAgIGlmIChmcmFn
bWVudEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpCiAgICAgICAgICAgICBmcmFn
bWVudFJhbmdlcy5hcHBlbmQoVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY3VycmVudFJhbmdlLCBx
dWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCwgcXVlcnlSYW5nZS5lbmQub2Zmc2V0IC0gcXVlcnlSYW5n
ZS5zdGFydC5vZmZzZXQpKTsKQEAgLTUxNiw3ICs1MTcsNyBAQCBOU0FycmF5ICpEYXRhRGV0ZWN0
aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShSZWZQdHI8UmFuZ2U+JiBjb250ZXh0UmFuZ2UsIERh
dGFEZQogICAgICAgICAgICAgZm9yICg7IGl0ZXJhdG9yQ291bnQgPCBpdGVyYXRvclRhcmdldEFk
dmFuY2VDb3VudDsgKytpdGVyYXRvckNvdW50KQogICAgICAgICAgICAgICAgIGl0ZXJhdG9yLmFk
dmFuY2UoKTsKIAotICAgICAgICAgICAgY3VycmVudFJhbmdlID0gaXRlcmF0b3IucmFuZ2UoKTsK
KyAgICAgICAgICAgIGN1cnJlbnRSYW5nZSA9IGNyZWF0ZUxpdmVSYW5nZShpdGVyYXRvci5yYW5n
ZSgpKTsKICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gZnJhZ21lbnRSYW5nZSA9IChmcmFnbWVu
dEluZGV4ID09IHF1ZXJ5UmFuZ2UuZW5kLnF1ZXJ5SW5kZXgpID8gIFJhbmdlOjpjcmVhdGUoY3Vy
cmVudFJhbmdlLT5vd25lckRvY3VtZW50KCksICZjdXJyZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KCksIGN1cnJlbnRSYW5nZS0+c3RhcnRPZmZzZXQoKSwgJmN1cnJlbnRSYW5nZS0+ZW5kQ29udGFp
bmVyKCksIGN1cnJlbnRSYW5nZS0+c3RhcnRPZmZzZXQoKSArIHF1ZXJ5UmFuZ2UuZW5kLm9mZnNl
dCkgOiBjdXJyZW50UmFuZ2U7CiAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHByZXZpb3VzUmFu
Z2UgPSBmcmFnbWVudFJhbmdlcy5sYXN0KCk7CiAgICAgICAgICAgICBpZiAoJnByZXZpb3VzUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCkgPT0gJmZyYWdtZW50UmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQppbmRl
eCBjMzk1OTI0YmQ4NWY4NGEwYWUyYWYzMzc0M2VkOWY5ZjdjNmEzYjExLi5hOTViNjQxYWRhMDhi
NWViZmViMGRhNTA3YzdjM2E3MTU5ODM2MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCkBAIC01OCw4ICs1OCwxMCBAQAogI2ltcG9ydCAiSFRN
TFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNpbXBvcnQgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNp
bXBvcnQgIkxvYWRlck5TVVJMRXh0cmFzLmgiCisjaW1wb3J0ICJSYW5nZS5oIgogI2ltcG9ydCAi
UmVuZGVySW1hZ2UuaCIKICNpbXBvcnQgIlJlbmRlclRleHQuaCIKKyNpbXBvcnQgIlNpbXBsZVJh
bmdlLmgiCiAjaW1wb3J0ICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbXBvcnQgIlN0eWxlZEVsZW1l
bnQuaCIKICNpbXBvcnQgIlRleHRJdGVyYXRvci5oIgpAQCAtMjM5NSwxMSArMjM5NywxMSBAQCBO
U0F0dHJpYnV0ZWRTdHJpbmcgKmVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKFJhbmdl
JiByYW5nZSwgSW5jbHVkZUltYWdlcwogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5
PiBhdHRycyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAK
ICAgICBmb3IgKFRleHRJdGVyYXRvciBpdCgmcmFuZ2UpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5j
ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFRleHRSYW5nZSA9IGl0LnJhbmdl
KCk7Ci0gICAgICAgIE5vZGUmIHN0YXJ0Q29udGFpbmVyID0gY3VycmVudFRleHRSYW5nZS0+c3Rh
cnRDb250YWluZXIoKTsKLSAgICAgICAgTm9kZSYgZW5kQ29udGFpbmVyID0gY3VycmVudFRleHRS
YW5nZS0+ZW5kQ29udGFpbmVyKCk7Ci0gICAgICAgIGludCBzdGFydE9mZnNldCA9IGN1cnJlbnRU
ZXh0UmFuZ2UtPnN0YXJ0T2Zmc2V0KCk7Ci0gICAgICAgIGludCBlbmRPZmZzZXQgPSBjdXJyZW50
VGV4dFJhbmdlLT5lbmRPZmZzZXQoKTsKKyAgICAgICAgU2ltcGxlUmFuZ2UgY3VycmVudFRleHRS
YW5nZSA9IGl0LnJhbmdlKCk7CisgICAgICAgIE5vZGUmIHN0YXJ0Q29udGFpbmVyID0gY3VycmVu
dFRleHRSYW5nZS5zdGFydENvbnRhaW5lcigpOworICAgICAgICBOb2RlJiBlbmRDb250YWluZXIg
PSBjdXJyZW50VGV4dFJhbmdlLmVuZENvbnRhaW5lcigpOworICAgICAgICBpbnQgc3RhcnRPZmZz
ZXQgPSBjdXJyZW50VGV4dFJhbmdlLnN0YXJ0T2Zmc2V0KCk7CisgICAgICAgIGludCBlbmRPZmZz
ZXQgPSBjdXJyZW50VGV4dFJhbmdlLmVuZE9mZnNldCgpOwogCiAgICAgICAgIGlmIChpbmNsdWRl
T3JTa2lwSW1hZ2VzID09IEluY2x1ZGVJbWFnZXNJbkF0dHJpYnV0ZWRTdHJpbmc6Olllcykgewog
ICAgICAgICAgICAgaWYgKCZzdGFydENvbnRhaW5lciA9PSAmZW5kQ29udGFpbmVyICYmIChzdGFy
dE9mZnNldCA9PSBlbmRPZmZzZXQgLSAxKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJ
dGVyYXRvci5tbQppbmRleCAwODRmMzAwNWQ2MTAzZDRlMjUwMzNjMjU2YzcwYzBlMDY0MDQxY2Q4
Li43OWIyZTRmNTdmN2IxNWJlMGM5OWIzYjMxODY1ZWY4ZGM3YjQxNzllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTVRleHRJ
dGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTVRleHRJdGVyYXRvci5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0
ICJXS0RPTUludGVybmFscy5oIgogI2ltcG9ydCAiV0tET01SYW5nZS5oIgorI2ltcG9ydCA8V2Vi
Q29yZS9TaW1wbGVSYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KIAog
QGludGVyZmFjZSBXS0RPTVRleHRJdGVyYXRvciAoKSB7CkBAIC02Miw3ICs2Myw3IEBAIC0gKEJP
T0wpYXRFbmQKIAogLSAoV0tET01SYW5nZSAqKWN1cnJlbnRSYW5nZQogewotICAgIHJldHVybiBX
ZWJLaXQ6OnRvV0tET01SYW5nZShfdGV4dEl0ZXJhdG9yLT5yYW5nZSgpLnB0cigpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b1dLRE9NUmFuZ2UoY3JlYXRlTGl2ZVJhbmdlKF90ZXh0SXRlcmF0b3It
PnJhbmdlKCkpLnB0cigpKTsKIH0KIAogLy8gRklYTUU6IENvbnNpZGVyIGRlcHJlY2F0aW5nIHRo
aXMgbWV0aG9kIGFuZCBjcmVhdGluZyBvbmUgdGhhdCBkb2VzIG5vdCByZXF1aXJlIGNvcHlpbmcg
OC1iaXQgY2hhcmFjdGVycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQppbmRleCA4NTExYzU2ZTFiYTFkYjJhY2ZhYzE1
MTRhYTQ3NTNjODI2YTVkNmFkLi4xMTAxM2NlNWVjOGE5N2E5YTEyMTRlODU5Yjk1ZmJlODRiNGY2
Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJQYWdlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tCkBAIC0zOCwxOSArMzgsMTkgQEAKICNpbXBvcnQgPFdlYkNvcmUv
RWRpdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVz
dFJlc3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob2RlUmVuZGVyU3R5bGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGF5bWVudENvb3JkaW5hdG9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9SYW5nZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SZW5kZXJFbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1JlbmRlck9iamVj
dC5oPgotI2ltcG9ydCA8V2ViQ29yZS9UZXh0SXRlcmF0b3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
U2ltcGxlUmFuZ2UuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlk
UmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldGVy
cykKIHsKQEAgLTEyMCwyOSArMTIwLDI4IEBAIERpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6
ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhCiB7CiAg
ICAgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS5lZGl0b3IoKTsKICAgICBlZGl0b3Iuc2V0SXNHZXR0
aW5nRGljdGlvbmFyeVBvcHVwSW5mbyh0cnVlKTsKLSAgICAKKwogICAgIERpY3Rpb25hcnlQb3B1
cEluZm8gZGljdGlvbmFyeVBvcHVwSW5mbzsKICAgICBpZiAocmFuZ2UudGV4dCgpLnN0cmlwV2hp
dGVTcGFjZSgpLmlzRW1wdHkoKSkgewogICAgICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlv
bmFyeVBvcHVwSW5mbyhmYWxzZSk7CiAgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZv
OwogICAgIH0KLSAgICAKKwogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwogICAgIHJhbmdl
LmFic29sdXRlVGV4dFF1YWRzKHF1YWRzKTsKICAgICBpZiAocXVhZHMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvKGZhbHNlKTsKICAg
ICAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CiAgICAgfQotICAgIAorCiAgICAgSW50
UmVjdCByYW5nZVJlY3QgPSBmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9XaW5kb3cocXVhZHNbMF0u
ZW5jbG9zaW5nQm91bmRpbmdCb3goKSk7Ci0gICAgCisKICAgICBjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUgPSByYW5nZS5zdGFydENvbnRhaW5lcigpLnJlbmRlclN0eWxlKCk7CiAgICAgZmxvYXQg
c2NhbGVkQXNjZW50ID0gc3R5bGUgPyBzdHlsZS0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSAqIHBh
Z2VTY2FsZUZhY3RvcigpIDogMDsKICAgICBkaWN0aW9uYXJ5UG9wdXBJbmZvLm9yaWdpbiA9IEZs
b2F0UG9pbnQocmFuZ2VSZWN0LngoKSwgcmFuZ2VSZWN0LnkoKSArIHNjYWxlZEFzY2VudCk7CiAg
ICAgZGljdGlvbmFyeVBvcHVwSW5mby5vcHRpb25zID0gb3B0aW9uczsKIAogI2lmIFBMQVRGT1JN
KE1BQykKLQogICAgIE5TQXR0cmlidXRlZFN0cmluZyAqbnNBdHRyaWJ1dGVkU3RyaW5nID0gZWRp
dGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UocmFuZ2UsIEluY2x1ZGVJbWFnZXNJbkF0dHJp
YnV0ZWRTdHJpbmc6Ok5vKTsKICAgICAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZz4gc2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TTXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOltuc0F0dHJpYnV0ZWRTdHJpbmcg
c3RyaW5nXV0pOwpAQCAtMTYwLDkgKzE1OSw4IEBAIERpY3Rpb25hcnlQb3B1cEluZm8gV2ViUGFn
ZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhCiAg
ICAgICAgIAogICAgICAgICBbc2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5nIGFkZEF0dHJpYnV0ZXM6
c2NhbGVkQXR0cmlidXRlcy5nZXQoKSByYW5nZTpyYW5nZV07CiAgICAgfV07Ci0KICNlbmRpZiAv
LyBQTEFURk9STShNQUMpCi0gICAgCisKICAgICBUZXh0SW5kaWNhdG9yT3B0aW9ucyBpbmRpY2F0
b3JPcHRpb25zID0gVGV4dEluZGljYXRvck9wdGlvblVzZUJvdW5kaW5nUmVjdEFuZFBhaW50QWxs
Q29udGVudEZvckNvbXBsZXhSYW5nZXM7CiAgICAgaWYgKHByZXNlbnRhdGlvblRyYW5zaXRpb24g
PT0gVGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkJvdW5jZUFuZENyb3NzZmFk
ZSkKICAgICAgICAgaW5kaWNhdG9yT3B0aW9ucyB8PSBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVk
ZVNuYXBzaG90V2l0aFNlbGVjdGlvbkhpZ2hsaWdodDsKQEAgLTE3MiwxNiArMTcwLDE0IEBAIERp
Y3Rpb25hcnlQb3B1cEluZm8gV2ViUGFnZTo6ZGljdGlvbmFyeVBvcHVwSW5mb0ZvclJhbmdlKEZy
YW1lJiBmcmFtZSwgUmFuZ2UmIHJhCiAgICAgICAgIGVkaXRvci5zZXRJc0dldHRpbmdEaWN0aW9u
YXJ5UG9wdXBJbmZvKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87
CiAgICAgfQotICAgIAorCiAgICAgZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yID0g
dGV4dEluZGljYXRvci0+ZGF0YSgpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBkaWN0aW9uYXJ5
UG9wdXBJbmZvLmF0dHJpYnV0ZWRTdHJpbmcgPSBzY2FsZWROU0F0dHJpYnV0ZWRTdHJpbmc7Ci0j
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotICAgIAotI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQor
I2VsaWYgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgZGljdGlvbmFyeVBvcHVwSW5mby5hdHRy
aWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOnJhbmdlLnRleHQoKV0pOwotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQotICAgIAorI2VuZGlmCisKICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFy
eVBvcHVwSW5mbyhmYWxzZSk7CiAgICAgcmV0dXJuIGRpY3Rpb25hcnlQb3B1cEluZm87CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRv
ci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1t
CmluZGV4IDQ3NmI4NzEwYTI2ZjYwODc3OTA0Njc4OTc2YzQzNGRmMWMxMThkY2YuLjM1N2M1Mjgy
ODM2YWE4ZGJhZGEyMWVjZTQ5Mzg4NWU0ZmU4YmIxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYg
KzI5LDggQEAKICNpbXBvcnQgIkRPTVJhbmdlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlR5cGVz
SW50ZXJuYWwuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvUmFuZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFu
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KQEAgLTg1LDEwICs4NywxMCBAQCAt
IChCT09MKWF0RW5kCiAKIC0gKERPTVJhbmdlICopY3VycmVudFJhbmdlCiB7Ci0gICAgV2ViQ29y
ZTo6VGV4dEl0ZXJhdG9yJiB0ZXh0SXRlcmF0b3IgPSAqX3ByaXZhdGUtPl90ZXh0SXRlcmF0b3I7
CisgICAgYXV0byYgdGV4dEl0ZXJhdG9yID0gKl9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yOwogICAg
IGlmICh0ZXh0SXRlcmF0b3IuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIGtpdCh0ZXh0SXRlcmF0b3IucmFuZ2UoKS5wdHIoKSk7CisgICAgcmV0dXJuIGtpdChj
cmVhdGVMaXZlUmFuZ2UodGV4dEl0ZXJhdG9yLnJhbmdlKCkpLnB0cigpKTsKIH0KIAogLy8gRklY
TUU6IENvbnNpZGVyIGRlcHJlY2F0aW5nIHRoaXMgbWV0aG9kIGFuZCBjcmVhdGluZyBvbmUgdGhh
dCBkb2VzIG5vdCByZXF1aXJlIGNvcHlpbmcgOC1iaXQgY2hhcmFjdGVycy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393115</attachid>
            <date>2020-03-09 20:12:41 -0700</date>
            <delta_ts>2020-03-10 20:35:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208797-20200309201236.patch</filename>
            <type>text/plain</type>
            <size>41458</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIzMTliYmNiNDc4ZTgw
NWIxZTg2NTZjYjQ1OWFjZGI1ZDNkNWRiZi4uNWQ0NGE3MmMwYjI0ZTQ5MjI4OWE2ZWMzOGY5NjVk
NmFkYjA0NWNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTAzLTA4ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFRleHRJdGVyYXRvcjo6
cmFuZ2UgcmV0dXJuIGEgU2ltcGxlUmFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwODc5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKTog
VXBkYXRlZCBzaW5jZQorICAgICAgICBUZXh0SXRlcmF0b3I6OnJhbmdlIHJldHVybnMgYSBTaW1w
bGVSYW5nZS4gQWxzbyB1c2UgVGV4dEl0ZXJhdG9yOjpub2RlIHdoZXJlCisgICAgICAgIGFwcHJv
cHJpYXRlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHRoZSBjb2RlIGZvciBpdCBoZXJlLgorICAgICAg
ICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bGVuZ3RoRm9yUmFuZ2UpOiBVc2UgVGV4dEl0ZXJh
dG9yOjpub2RlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ0ZvclJh
bmdlIGNvbnN0KTogVXNlIFRleHRJdGVyYXRvcjo6bm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsZW5ndGhGb3JWaXNpYmxl
UG9zaXRpb25SYW5nZSBjb25zdCk6IERpdHRvLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtlcnM6YXR0cmli
dXRlZDpdKToKKyAgICAgICAgVXNlIFRleHRJdGVyYXRvcjo6bm9kZSBhbmQgY3JlYXRlTGl2ZVJh
bmdlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW06IEFkZGVkIGluY2x1ZGUKKyAgICAgICAgb2YgU2ltcGxlUmFuZ2UgYW5k
IHJlbW92ZWQgInVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXMiLgorICAgICAgICAoQVhBdHRyaWJ1
dGVTdHJpbmdTZXRTdHlsZSk6IFVzZSBIVE1MTmFtZXMgbmFtZXNwYWNlIGV4cGxpY2l0bHkuCisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlOnNwZWxsQ2hlY2s6XSk6CisgICAgICAgIFVzZSBUZXh0SXRl
cmF0b3I6Om5vZGUuCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHN1
YnJvbGVdKTogVXNlIEhUTUxOYW1lcyBuYW1lc3BhY2UgZXhwbGljaXRseS4KKworICAgICAgICAq
IGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyOjpjb2xsZWN0VGV4dFJhbmdlcyk6IFVzZSBjcmVhdGVMaXZl
UmFuZ2UKKyAgICAgICAgaGVyZSBzaW5jZSB3ZSBkb24ndCB3YW50IHRvIGNvbnZlcnQgbW92ZSB0
aGUgY2xhc3MgdG8gU2ltcGxlUmFuZ2UgYXQgdGhpcyB0aW1lLgorCisgICAgICAgICogZG9tL1Bv
c2l0aW9uLmNwcDogQWRkZWQgaW5jbHVkZSBvZiBSYW5nZS5oLgorCisgICAgICAgICogZG9tL1Jh
bmdlQm91bmRhcnlQb2ludC5oOiBSZW1vdmVkIGEgYm9ndXMgImNvbnN0IiBvbiB0aGUgcmV0dXJu
IHZhbHVlIG9mCisgICAgICAgIFJhbmdlQm91bmRhcnlQb2ludDo6dG9Qb3NpdGlvbi4KKworICAg
ICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdFN0
YWNrOjpCaXRTdGFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCaXRTdGFjazo6c2l6
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdl
IGNvbnN0KTogUmV0dXJuIGEgU2ltcGxlUmFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRl
cmF0b3I6Om5vZGUgY29uc3QpOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisgICAgICAgIChXZWJD
b3JlOjpDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UgY29uc3QpOiBVc2UgU2ltcGxlUmFuZ2Ugcmln
aHQgdXAgdW50aWwgdGhlCisgICAgICAgIHJldHVybiBzdGF0ZW1lbnQsIHdoZXJlIHdlIGRvIGNy
ZWF0ZUxpdmVSYW5nZS4gV2lsbCBjb21lIGJhY2sgYW5kIHJlbW92ZSB0aGF0IHNvb24uCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKTog
VXNlIGNyZWF0ZUxpdmVSYW5nZSBpbgorICAgICAgICBvbmUgcGxhY2UsIFNpbXBsZVJhbmdlIGlu
IGFub3RoZXIuCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5oOiBSZW1vdmVkIGlu
Y2x1ZGUgb2YgIlJhbmdlLmgiIHNpbmNlIHdlIGNhbiBqdXN0IHVzZQorICAgICAgICBhIGZvcndh
cmQgZGVjbGFyYXRpb24gaW5zdGVhZC4gUmVtb3ZlZCB1bm5lZWRlZCBmb3J3YXJkIGRlY2xhcmF0
aW9ucy4gU2ltcGxpZmllZAorICAgICAgICB0aGUgQml0U3RhY2sgYW5kIFRleHRJdGVyYXRvckNv
cHlhYmxlVGV4dCBjbGFzc2VzIGJ5IGluaXRpYWxpemluZyBkYXRhIG1lbWJlcnMKKyAgICAgICAg
YW5kIHJlbW92aW5nIGV4cGxpY2l0IGRlZmluaXRpb25zIG9mIHRoZSBjb25zdHJ1Y3RvcnMgYW5k
IGRlc3RydWN0b3JzLiBUb29rIG91dAorICAgICAgICBhIHN0cmF5ICJleHBsaWNpdCIgdGhhdCB3
YXNuJ3QgbmVlZGVkLiBDaGFuZ2VkIHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgICAgICAgVGV4dEl0
ZXJhdG9yOjpyYW5nZSB0byBTaW1wbGVSYW5nZS4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29u
dGVudEl0ZXJhdG9yOjpQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IpOiBDYWxsCisgICAgICAgIGNy
ZWF0ZUxpdmVSYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OlBhcmFncmFwaENvbnRlbnRJdGVyYXRv
cjo6YWR2YW5jZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGFyYWdyYXBoQ29udGVudEl0
ZXJhdG9yOjpzdGFydFBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQYXJhZ3Jh
cGhDb250ZW50SXRlcmF0b3I6OmVuZFBvc2l0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBlZGl0
aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0
aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZSk6IFVzZSBjcmVhdGVMaXZlUmFuZ2UuCisKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpl
ZGl0aW5nQXR0cmlidXRlZFN0cmluZ0Zyb21SYW5nZSk6IFVzZSBTaW1wbGVSYW5nZSBpbnN0ZWFk
CisgICAgICAgIG9mIGEgbGl2ZSByYW5nZS4KKwogMjAyMC0wMy0wOSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlQoIW1fdGV4dENoZWNraW5n
UmVxdWVzdCkgb24gZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLXJlbW92ZS1mcmFt
ZS5odG1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDFiZjFmNGYzMDU0NGYzMjJkZjlmNDc5ZWFjZTdjYzIzZWQ4NDhi
ZjkuLjRkYWMzMjUyNmRkZmE3YmQ3MzYwYmViZjI5ZGJhZGMzMGE3OWMxYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjAtMDMtMDggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIE1ha2UgVGV4dEl0ZXJhdG9yOjpyYW5nZSByZXR1cm4gYSBTaW1wbGVSYW5n
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4Nzk3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW06CisgICAg
ICAgICgtW1dLRE9NVGV4dEl0ZXJhdG9yIGN1cnJlbnRSYW5nZV0pOiBVc2UgY3JlYXRlTGl2ZVJh
bmdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5t
bTogQWRkZWQgaW5jbHVkZXMuCisKIDIwMjAtMDMtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUKCFtX3RleHRDaGVja2luZ1JlcXVlc3Qp
IG9uIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRtbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDFmMzQyYWNhOWM0MjA0ZmNlYmUxMzIzYTA0
MjRhZGM2NjE5ODI5MjkuLjEwNTU0NTFmNTBmMzM1ODEyMjhjYmIyZTA1ZjJjYmU3ZWM3YzQ1NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMy0w
OCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBUZXh0SXRl
cmF0b3I6OnJhbmdlIHJldHVybiBhIFNpbXBsZVJhbmdlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg3OTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tOgor
ICAgICAgICAoLVtXZWJUZXh0SXRlcmF0b3IgY3VycmVudFJhbmdlXSk6IFVzZSBjcmVhdGVMaXZl
UmFuZ2UuCisKIDIwMjAtMDMtMDkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgQVNTRVJUKCFtX3RleHRDaGVja2luZ1JlcXVlc3QpIG9uIGVkaXRpbmcv
c3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRtbApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggZTI1ZWJjMTA5OWYz
NWJlMWU5ZTljNjJkMDBiN2NkYmM4MDZlM2JiMC4uZDQ5MzQwMjBjY2Q3Mjk0YTg2ZGIxYzI2NTYw
NjY5Njc3YmE3ZjJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwCkBAIC05OSw2ICs5OSw3IEBACiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgog
I2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcm9sbFZpZXcu
aCIKKyNpbmNsdWRlICJTaW1wbGVSYW5nZS5oIgogI2luY2x1ZGUgIlRleHRCb3VuZGFyaWVzLmgi
CiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEl0
ZXJhdG9yLmgiCkBAIC0xODEwLDIxICsxODExLDIwIEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVj
dENhY2hlOjp0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFuZ2U+cmFuZ2UsIGludCBv
CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgLy8gU29tZXRpbWVzIHRleHQgY29udGVudHMg
aW4gYSBub2RlIGFyZSBzcGxpdHRlZCBpbnRvIHNldmVyYWwgaXRlcmF0aW9ucywgc28gdGhhdCBp
dGVyYXRvci5yYW5nZSgpLT5zdGFydE9mZnNldCgpCi0gICAgLy8gbWlnaHQgbm90IGJlIHRoZSBj
b3JyZWN0IGNoYXJhY3RlciBjb3VudC4gSGVyZSB3ZSB1c2UgYSBwcmV2aW91c05vZGUgb2JqZWN0
IHRvIGtlZXAgdHJhY2sgb2YgdGhhdC4KKyAgICAvLyBTb21ldGltZXMgdGV4dCBjb250ZW50cyBp
biBhIG5vZGUgYXJlIHNwbGl0IGludG8gc2V2ZXJhbCBpdGVyYXRpb25zLCBzbyB0aGF0IGl0ZXJh
dG9yLnJhbmdlKCkuc3RhcnRPZmZzZXQoKQorICAgIC8vIG1pZ2h0IG5vdCBiZSB0aGUgdG90YWwg
Y2hhcmFjdGVyIGNvdW50LiBIZXJlIHdlIHVzZSBhIHByZXZpb3VzTm9kZSBvYmplY3QgdG8ga2Vl
cCB0cmFjayBvZiB0aGF0LgogICAgIE5vZGUqIHByZXZpb3VzTm9kZSA9IG51bGxwdHI7CiAgICAg
Zm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKICAgICAgICAg
aW50IGN1cnJlbnRMZW5ndGggPSBpdGVyYXRvci50ZXh0KCkubGVuZ3RoKCk7CiAgICAgICAgIGJv
b2wgaGFzUmVwbGFjZWROb2RlT3JCUiA9IGZhbHNlOwotICAgICAgICAKLSAgICAgICAgTm9kZSYg
bm9kZSA9IGl0ZXJhdG9yLnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7CisKKyAgICAgICAgTm9k
ZSYgbm9kZSA9IGl0ZXJhdG9yLnJhbmdlKCkuc3RhcnQuY29udGFpbmVyOwogICAgICAgICBjdXJy
ZW50Tm9kZSA9ICZub2RlOwogICAgICAgICAKICAgICAgICAgLy8gV2hlbiBjdXJyZW50TGVuZ3Ro
ID09IDAsIHdlIGNoZWNrIGlmIHRoZXJlJ3MgYW55IHJlcGxhY2VkIG5vZGUuCiAgICAgICAgIC8v
IElmIG5vdCwgd2Ugc2tpcCB0aGUgbm9kZSB3aXRoIG5vIGxlbmd0aC4KICAgICAgICAgaWYgKCFj
dXJyZW50TGVuZ3RoKSB7Ci0gICAgICAgICAgICBpbnQgc3ViT2Zmc2V0ID0gaXRlcmF0b3IucmFu
Z2UoKS0+c3RhcnRPZmZzZXQoKTsKLSAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9kZSA9IG5vZGUu
dHJhdmVyc2VUb0NoaWxkQXQoc3ViT2Zmc2V0KTsKKyAgICAgICAgICAgIE5vZGUqIGNoaWxkTm9k
ZSA9IGl0ZXJhdG9yLm5vZGUoKTsKICAgICAgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpyZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3RlcihjaGlsZE5vZGUpKSB7CiAgICAgICAgICAgICAg
ICAgY3VtdWxhdGl2ZU9mZnNldCsrOwogICAgICAgICAgICAgICAgIGN1cnJlbnRMZW5ndGgrKzsK
QEAgLTE4MzcsOCArMTgzNyw3IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2
ZXJzZVRvT2Zmc2V0SW5SYW5nZShSZWZQdHI8UmFuZ2U+cmFuZ2UsIGludCBvCiAgICAgICAgICAg
ICBpZiAoY3VycmVudExlbmd0aCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgaWYgKGlzSFRNTFNw
YWNlKGl0ZXJhdG9yLnRleHQoKVswXSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhl
IG5vZGUgaGFzIEJSIHRhZywgd2Ugd2FudCB0byBzZXQgdGhlIGN1cnJlbnROb2RlIHRvIGl0Lgot
ICAgICAgICAgICAgICAgICAgICBpbnQgc3ViT2Zmc2V0ID0gaXRlcmF0b3IucmFuZ2UoKS0+c3Rh
cnRPZmZzZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogY2hpbGROb2RlID0gbm9kZS50
cmF2ZXJzZVRvQ2hpbGRBdChzdWJPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBj
aGlsZE5vZGUgPSBpdGVyYXRvci5ub2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGls
ZE5vZGUgJiYgY2hpbGROb2RlLT5yZW5kZXJlcigpICYmIGNoaWxkTm9kZS0+cmVuZGVyZXIoKS0+
aXNCUigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGNoaWxkTm9k
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1JlcGxhY2VkTm9kZU9yQlIgPSB0cnVlOwpA
QCAtMTg2NywxMSArMTg2NiwxMCBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6dHJh
dmVyc2VUb09mZnNldEluUmFuZ2UoUmVmUHRyPFJhbmdlPnJhbmdlLCBpbnQgbwogCiAgICAgICAg
IGlmIChjdXJyZW50Tm9kZSA9PSBwcmV2aW91c05vZGUpIHsKICAgICAgICAgICAgIGxhc3RMZW5n
dGggKz0gY3VycmVudExlbmd0aDsKLSAgICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9IGl0ZXJh
dG9yLnJhbmdlKCktPmVuZE9mZnNldCgpIC0gbGFzdExlbmd0aDsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9IGl0ZXJhdG9yLnJhbmdlKCku
ZW5kLm9mZnNldCAtIGxhc3RMZW5ndGg7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBs
YXN0TGVuZ3RoID0gY3VycmVudExlbmd0aDsKLSAgICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9
IGhhc1JlcGxhY2VkTm9kZU9yQlIgPyAwIDogaXRlcmF0b3IucmFuZ2UoKS0+c3RhcnRPZmZzZXQo
KTsKKyAgICAgICAgICAgIGxhc3RTdGFydE9mZnNldCA9IGhhc1JlcGxhY2VkTm9kZU9yQlIgPyAw
IDogaXRlcmF0b3IucmFuZ2UoKS5zdGFydC5vZmZzZXQ7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIC8vIEJyZWFrIGVhcmx5IGlmIHdlIGhhdmUgYWR2YW5jZWQgZW5vdWdoIGNoYXJhY3Rl
cnMuCkBAIC0xOTAyLDcgKzE5MDAsNiBAQCBpbnQgQVhPYmplY3RDYWNoZTo6bGVuZ3RoRm9yUmFu
Z2UoUmFuZ2UqIHJhbmdlKQogewogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiAtMTsK
LSAgICAKICAgICBpbnQgbGVuZ3RoID0gMDsKICAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyYW5n
ZSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKICAgICAgICAgLy8gbm9uLXplcm8gbGVu
Z3RoIG1lYW5zIHRleHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMgcmVwbGFjZWQgbm9kZSAo
QUtBICJhdHRhY2htZW50cyIgaW4gQVgpCkBAIC0xOTEwLDEzICsxOTA3LDEwIEBAIGludCBBWE9i
amVjdENhY2hlOjpsZW5ndGhGb3JSYW5nZShSYW5nZSogcmFuZ2UpCiAgICAgICAgICAgICBsZW5n
dGggKz0gaXQudGV4dCgpLmxlbmd0aCgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8v
IGxvY2F0ZSB0aGUgbm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlzIHJlcGxhY2VkIHJh
bmdlCi0gICAgICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIo
KTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgpOwot
ICAgICAgICAgICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlcGxhY2VkTm9kZU5lZWRzQ2hh
cmFjdGVyKG5vZGUudHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KSkpCisgICAgICAgICAgICBpZiAo
QWNjZXNzaWJpbGl0eU9iamVjdDo6cmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIoaXQubm9kZSgp
KSkKICAgICAgICAgICAgICAgICArK2xlbmd0aDsKICAgICAgICAgfQogICAgIH0KLSAgICAgICAg
CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMjNhMTVmZGMzN2Y1N2E2Mjkz
NTU3OThiZTU5YzI4NTc0YjU1MGQxZS4uNjE5MTIxZDY2MjcxMDYyNDg5MjM1NTEwMTcyZGNmOTNh
NWQ0OTYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMjgxLDExICsxMjgxLDcgQEAgU3RyaW5nIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnN0cmluZ0ZvclJhbmdlKFJlZlB0cjxSYW5nZT4gcmFuZ2UpIGNvbnN0CiAg
ICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9z
aXRpb24oaXQubm9kZSgpLCBWaXNpYmxlUG9zaXRpb24ocmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkp
KTsKICAgICAgICAgICAgIGl0LmFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBsb2NhdGUgdGhlIG5vZGUgYW5kIHN0YXJ0
aW5nIG9mZnNldCBmb3IgdGhpcyByZXBsYWNlZCByYW5nZQotICAgICAgICAgICAgTm9kZSYgbm9k
ZSA9IGl0LnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICBBU1NFUlQoJm5v
ZGUgPT0gJml0LnJhbmdlKCktPmVuZENvbnRhaW5lcigpKTsKLSAgICAgICAgICAgIGludCBvZmZz
ZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgpOwotICAgICAgICAgICAgaWYgKHJlcGxhY2Vk
Tm9kZU5lZWRzQ2hhcmFjdGVyKG5vZGUudHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KSkpCisgICAg
ICAgICAgICBpZiAocmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIoaXQubm9kZSgpKSkKICAgICAg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChvYmplY3RSZXBsYWNlbWVudENoYXJhY3Rlcik7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xMzA4LDEwICsxMzA0LDcgQEAgU3RyaW5nIEFjY2Vzc2liaWxp
dHlPYmplY3Q6OnN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3Np
dGlvblIKICAgICAgICAgICAgIGl0LmFwcGVuZFRleHRUb1N0cmluZ0J1aWxkZXIoYnVpbGRlcik7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBsb2NhdGUgdGhlIG5vZGUgYW5kIHN0
YXJ0aW5nIG9mZnNldCBmb3IgdGhpcyByZXBsYWNlZCByYW5nZQotICAgICAgICAgICAgTm9kZSYg
bm9kZSA9IGl0LnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKCk7Ci0gICAgICAgICAgICBBU1NFUlQo
Jm5vZGUgPT0gJml0LnJhbmdlKCktPmVuZENvbnRhaW5lcigpKTsKLSAgICAgICAgICAgIGludCBv
ZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgpOwotICAgICAgICAgICAgaWYgKHJlcGxh
Y2VkTm9kZU5lZWRzQ2hhcmFjdGVyKG5vZGUudHJhdmVyc2VUb0NoaWxkQXQob2Zmc2V0KSkpCisg
ICAgICAgICAgICBpZiAocmVwbGFjZWROb2RlTmVlZHNDaGFyYWN0ZXIoaXQubm9kZSgpKSkKICAg
ICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChvYmplY3RSZXBsYWNlbWVudENoYXJhY3Rlcik7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzI0LDcgKzEzMTcsNyBAQCBpbnQgQWNjZXNzaWJpbGl0
eU9iamVjdDo6bGVuZ3RoRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0
aW9uUmFuZwogICAgIC8vIEZJWE1FOiBNdWx0aS1ieXRlIHN1cHBvcnQKICAgICBpZiAodmlzaWJs
ZVBvc2l0aW9uUmFuZ2UuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICAKKwogICAg
IGludCBsZW5ndGggPSAwOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBtYWtlUmFuZ2Uodmlz
aWJsZVBvc2l0aW9uUmFuZ2Uuc3RhcnQsIHZpc2libGVQb3NpdGlvblJhbmdlLmVuZCk7CiAgICAg
Zm9yIChUZXh0SXRlcmF0b3IgaXQocmFuZ2UuZ2V0KCkpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5j
ZSgpKSB7CkBAIC0xMzMyLDE2ICsxMzI1LDExIEBAIGludCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojps
ZW5ndGhGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nCiAg
ICAgICAgIGlmIChpdC50ZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgICAgICBsZW5ndGggKz0gaXQu
dGV4dCgpLmxlbmd0aCgpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8vIGxvY2F0ZSB0
aGUgbm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlzIHJlcGxhY2VkIHJhbmdlCi0gICAg
ICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsKLSAgICAg
ICAgICAgIEFTU0VSVCgmbm9kZSA9PSAmaXQucmFuZ2UoKS0+ZW5kQ29udGFpbmVyKCkpOwotICAg
ICAgICAgICAgaW50IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0T2Zmc2V0KCk7Ci0KLSAgICAg
ICAgICAgIGlmIChyZXBsYWNlZE5vZGVOZWVkc0NoYXJhY3Rlcihub2RlLnRyYXZlcnNlVG9DaGls
ZEF0KG9mZnNldCkpKQorICAgICAgICAgICAgaWYgKHJlcGxhY2VkTm9kZU5lZWRzQ2hhcmFjdGVy
KGl0Lm5vZGUoKSkpCiAgICAgICAgICAgICAgICAgKytsZW5ndGg7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgCisKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCmluZGV4IDVkZWUxZmJkMGFmNzM2ZGRlOWIyYjcxNDhhMjE4YmI0MTM5
OWI0N2UuLjAyZDlhMDZmY2U3OGIxZTllOTk0ZWI3MGFhOGM1MmE0YjNiODBkODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC01NCw2ICs1NCw3IEBACiAjaW1w
b3J0ICJTVkdOYW1lcy5oIgogI2ltcG9ydCAiU1ZHRWxlbWVudC5oIgogI2ltcG9ydCAiU2VsZWN0
aW9uUmVjdC5oIgorI2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlRleHRJdGVyYXRv
ci5oIgogI2ltcG9ydCAiV0FLU2Nyb2xsVmlldy5oIgogI2ltcG9ydCAiV0FLV2luZG93LmgiCkBA
IC0yMjU3LDExICsyMjU4LDggQEAgLSAoTlNBcnJheSAqKWFycmF5T2ZUZXh0Rm9yVGV4dE1hcmtl
cnM6KE5TQXJyYXkgKiltYXJrZXJzIGF0dHJpYnV0ZWQ6KEJPT0wpYXR0cmkKICAgICBOU011dGFi
bGVBcnJheSogYXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKICAgICBUZXh0
SXRlcmF0b3IgaXQobWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBlbmRWaXNpYmxlUG9z
aXRpb24pLmdldCgpKTsKICAgICBmb3IgKDsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewot
ICAgICAgICAvLyBsb2NhdGUgdGhlIG5vZGUgYW5kIHN0YXJ0aW5nIG9mZnNldCBmb3IgdGhpcyBy
YW5nZQotICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKTsK
LSAgICAgICAgQVNTRVJUKCZub2RlID09ICZpdC5yYW5nZSgpLT5lbmRDb250YWluZXIoKSk7Ci0g
ICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldCgpOwotICAgICAgICAK
KyAgICAgICAgTm9kZSYgbm9kZSA9IGl0LnJhbmdlKCkuc3RhcnQuY29udGFpbmVyOworCiAgICAg
ICAgIC8vIG5vbi16ZXJvIGxlbmd0aCBtZWFucyB0ZXh0dWFsIG5vZGUsIHplcm8gbGVuZ3RoIG1l
YW5zIHJlcGxhY2VkIG5vZGUgKEFLQSAiYXR0YWNobWVudHMiIGluIEFYKQogICAgICAgICBpZiAo
aXQudGV4dCgpLmxlbmd0aCgpICE9IDApIHsKICAgICAgICAgICAgIGlmICghYXR0cmlidXRlZCkg
ewpAQCAtMjI2OSwyMiArMjI2NywyMCBAQCAtIChOU0FycmF5ICopYXJyYXlPZlRleHRGb3JUZXh0
TWFya2VyczooTlNBcnJheSAqKW1hcmtlcnMgYXR0cmlidXRlZDooQk9PTClhdHRyaQogICAgICAg
ICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpbmtPYmplY3QgPSBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphbmNob3JFbGVtZW50Rm9yTm9kZSgmbm9kZSk7CiAgICAgICAgICAgICAgICAgaWYg
KFtzZWxmIF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0OmxpbmtPYmplY3QgdG9UZXh0TWFya2VyQXJy
YXk6YXJyYXldKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICAKKwogICAgICAgICAgICAgICAgIC8vIE5leHQgY2hlY2sgaWYgdGhpcyByZWdpb24gaXMgcmVw
cmVzZW50ZWQgYnkgYSBoZWFkaW5nLgogICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGhlYWRpbmdPYmplY3QgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoZWFkaW5nRWxlbWVudEZv
ck5vZGUoJm5vZGUpOwogICAgICAgICAgICAgICAgIGlmIChbc2VsZiBfYWRkQWNjZXNzaWJpbGl0
eU9iamVjdDpoZWFkaW5nT2JqZWN0IHRvVGV4dE1hcmtlckFycmF5OmFycmF5XSkKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
U3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6bGlzdE1hcmtlclRl
eHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIFZpc2libGVQb3NpdGlvbihpdC5yYW5nZSgpLT5z
dGFydFBvc2l0aW9uKCkpKTsKKworICAgICAgICAgICAgICAgIFN0cmluZyBsaXN0TWFya2VyVGV4
dCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9u
KCZub2RlLCBWaXNpYmxlUG9zaXRpb24oY3JlYXRlTGl2ZVJhbmdlKGl0LnJhbmdlKCkpLT5zdGFy
dFBvc2l0aW9uKCkpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIWxp
c3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkgCiAgICAgICAgICAgICAgICAgICAgIFthcnJheSBhZGRP
YmplY3Q6bGlzdE1hcmtlclRleHRdOwogICAgICAgICAgICAgICAgIC8vIFRoZXJlIHdhcyBub3Qg
YW4gZWxlbWVudCByZXByZXNlbnRhdGlvbiwgc28ganVzdCByZXR1cm4gdGhlIHRleHQuCiAgICAg
ICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDppdC50ZXh0KCkuY3JlYXRlTlNTdHJpbmcoKS5n
ZXQoKV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNzaWJpbGl0eU9iamVj
dDo6bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIFZpc2libGVQb3NpdGlv
bihpdC5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNzaWJpbGl0eU9iamVj
dDo6bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIFZpc2libGVQb3NpdGlv
bihjcmVhdGVMaXZlUmFuZ2UoaXQucmFuZ2UoKSktPnN0YXJ0UG9zaXRpb24oKSkpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKCFsaXN0TWFya2VyVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZyA9IFtbTlNNdXRh
YmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF07CkBAIC0yMjkyLDE0ICsyMjg4LDE0IEBA
IC0gKE5TQXJyYXkgKilhcnJheU9mVGV4dEZvclRleHRNYXJrZXJzOihOU0FycmF5ICopbWFya2Vy
cyBhdHRyaWJ1dGVkOihCT09MKWF0dHJpCiAgICAgICAgICAgICAgICAgICAgIFthcnJheSBhZGRP
YmplY3Q6YXR0clN0cmluZ107CiAgICAgICAgICAgICAgICAgICAgIFthdHRyU3RyaW5nIHJlbGVh
c2VdOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAg
ICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgKmF0dHJTdHJpbmcgPSBbW05TTXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdOwogICAgICAgICAgICAgICAgIEFYQXR0cmlidXRl
ZFN0cmluZ0FwcGVuZFRleHQoYXR0clN0cmluZywgJm5vZGUsIGl0LnRleHQoKS5jcmVhdGVOU1N0
cmluZ1dpdGhvdXRDb3B5aW5nKCkuZ2V0KCkpOwogICAgICAgICAgICAgICAgIFthcnJheSBhZGRP
YmplY3Q6YXR0clN0cmluZ107CiAgICAgICAgICAgICAgICAgW2F0dHJTdHJpbmcgcmVsZWFzZV07
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiByZXBs
YWNlZE5vZGUgPSBub2RlLnRyYXZlcnNlVG9DaGlsZEF0KG9mZnNldCk7CisgICAgICAgICAgICBO
b2RlKiByZXBsYWNlZE5vZGUgPSBpdC5ub2RlKCk7CiAgICAgICAgICAgICBpZiAocmVwbGFjZWRO
b2RlKSB7CiAgICAgICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gc2VsZi5h
eEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVwbGFjZWROb2Rl
LT5yZW5kZXJlcigpKTsKICAgICAgICAgICAgICAgICBpZiAob2JqICYmICFvYmotPmFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSkKQEAgLTIzMDcsNyArMjMwMyw3IEBAIC0gKE5TQXJyYXkgKilhcnJh
eU9mVGV4dEZvclRleHRNYXJrZXJzOihOU0FycmF5ICopbWFya2VycyBhdHRyaWJ1dGVkOihCT09M
KWF0dHJpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1
cm4gW2FycmF5IGF1dG9yZWxlYXNlXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbQppbmRleCAxMTA5NjBjNjg0OTBkOTY0NDRlY2QxMzc4MzJkMjI3ZmYyZThmYWZh
Li45MDAxN2FkOTk0OTdiOTU3ZGFkMmU5Y2FjMmE5MjNlN2E4YzdlYjEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtNzAsNiArNzAsNyBAQAogI2ltcG9ydCAi
UmVuZGVyVmlldy5oIgogI2ltcG9ydCAiUmVuZGVyV2lkZ2V0LmgiCiAjaW1wb3J0ICJTY3JvbGxW
aWV3LmgiCisjaW1wb3J0ICJTaW1wbGVSYW5nZS5oIgogI2ltcG9ydCAiVGV4dENoZWNrZXJDbGll
bnQuaCIKICNpbXBvcnQgIlRleHRDaGVja2luZ0hlbHBlci5oIgogI2ltcG9ydCAiVGV4dERlY29y
YXRpb25QYWludGVyLmgiCkBAIC03OSwxMiArODAsMTIgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvTlNBY2Nlc3NpYmlsaXR5U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZpY2Vz
U1BJLmg+CiAjaW1wb3J0IDx3dGYvT2JqQ1J1bnRpbWVFeHRyYXMuaD4KLSNpZiBFTkFCTEUoVFJF
RV9ERUJVR0dJTkcpIHx8IEVOQUJMRShNRVRFUl9FTEVNRU5UKQorCisjaWYgRU5BQkxFKFRSRUVf
REVCVUdHSU5HKQogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2VuZGlmCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAog
Ly8gQ2VsbCBUYWJsZXMKICNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDZWxsc0F0dHJp
YnV0ZQpAQCAtMTA2MCw3ICsxMDYxLDcgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdT
ZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW4KICAgICAK
ICAgICAvLyBJbmRpY2F0ZSBiYWNrZ3JvdW5kIGhpZ2hsaWdodGluZy4KICAgICBmb3IgKE5vZGUq
IG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgp
KSB7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKG1hcmtUYWcpKQorICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om1hcmtUYWcpKQogICAgICAgICAgICAgQVhBdHRy
aWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgQCJBWEhpZ2hsaWdodCIsIEBZRVMsIHJh
bmdlKTsKICAgICB9CiB9CkBAIC0xMjU2LDIwICsxMjU3LDE3IEBAIC0gKE5TQXR0cmlidXRlZFN0
cmluZyopZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2U6KGlkKXRleHRNYXJr
ZXJSYW5nCiAgICAgICAgIE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcgPSBb
W05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdOwogICAgICAgICBUZXh0SXRl
cmF0b3IgaXQocmFuZ2UuZ2V0KCkpOwogICAgICAgICB3aGlsZSAoIWl0LmF0RW5kKCkpIHsKLSAg
ICAgICAgICAgIC8vIGxvY2F0ZSB0aGUgbm9kZSBhbmQgc3RhcnRpbmcgb2Zmc2V0IGZvciB0aGlz
IHJhbmdlCi0gICAgICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS0+c3RhcnRDb250YWlu
ZXIoKTsKLSAgICAgICAgICAgIEFTU0VSVCgmbm9kZSA9PSAmaXQucmFuZ2UoKS0+ZW5kQ29udGFp
bmVyKCkpOwotICAgICAgICAgICAgaW50IG9mZnNldCA9IGl0LnJhbmdlKCktPnN0YXJ0T2Zmc2V0
KCk7CisgICAgICAgICAgICBOb2RlJiBub2RlID0gaXQucmFuZ2UoKS5zdGFydC5jb250YWluZXI7
CiAKICAgICAgICAgICAgIC8vIG5vbi16ZXJvIGxlbmd0aCBtZWFucyB0ZXh0dWFsIG5vZGUsIHpl
cm8gbGVuZ3RoIG1lYW5zIHJlcGxhY2VkIG5vZGUgKEFLQSAiYXR0YWNobWVudHMiIGluIEFYKQog
ICAgICAgICAgICAgaWYgKGl0LnRleHQoKS5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIC8v
IEFkZCB0aGUgdGV4dCBvZiB0aGUgbGlzdCBtYXJrZXIgaXRlbSBpZiBuZWNlc3NhcnkuCi0gICAg
ICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6
bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIFZpc2libGVQb3NpdGlvbihp
dC5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCkpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGlz
dE1hcmtlclRleHQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVB
bmRQb3NpdGlvbigmbm9kZSwgVmlzaWJsZVBvc2l0aW9uKGNyZWF0ZUxpdmVSYW5nZShpdC5yYW5n
ZSgpKS0+c3RhcnRQb3NpdGlvbigpKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFsaXN0TWFya2Vy
VGV4dC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgIEFYQXR0cmlidXRlZFN0cmluZ0Fw
cGVuZFRleHQoYXR0clN0cmluZywgJm5vZGUsIGxpc3RNYXJrZXJUZXh0LCBzcGVsbENoZWNrKTsK
ICAgICAgICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcs
ICZub2RlLCBpdC50ZXh0KCksIHNwZWxsQ2hlY2spOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBOb2RlKiByZXBsYWNlZE5vZGUgPSBub2RlLnRyYXZlcnNlVG9DaGlsZEF0
KG9mZnNldCk7CisgICAgICAgICAgICAgICAgTm9kZSogcmVwbGFjZWROb2RlID0gaXQubm9kZSgp
OwogICAgICAgICAgICAgICAgIE5TU3RyaW5nICphdHRhY2htZW50U3RyaW5nID0gbnNTdHJpbmdG
b3JSZXBsYWNlZE5vZGUocmVwbGFjZWROb2RlKTsKICAgICAgICAgICAgICAgICBpZiAoYXR0YWNo
bWVudFN0cmluZykgewogICAgICAgICAgICAgICAgICAgICBOU1JhbmdlIGF0dHJTdHJpbmdSYW5n
ZSA9IE5TTWFrZVJhbmdlKFthdHRyU3RyaW5nIGxlbmd0aF0sIFthdHRhY2htZW50U3RyaW5nIGxl
bmd0aF0pOwpAQCAtMjE5Myw2ICsyMTkxLDcgQEAgLSAoTlNTdHJpbmcqKXN1YnJvbGUKICAgICAg
ICAgcmV0dXJuIEAiQVhTdWJzY3JpcHRTdHlsZUdyb3VwIjsKIAogICAgIGlmIChzZWxmLmF4QmFj
a2luZ09iamVjdC0+aXNTdHlsZUZvcm1hdEdyb3VwKCkpIHsKKyAgICAgICAgdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKICAgICAgICAgYXV0byB0YWdOYW1lID0gc2VsZi5heEJhY2tpbmdPYmpl
Y3QtPnRhZ05hbWUoKTsKICAgICAgICAgaWYgKHRhZ05hbWUgPT0ga2JkVGFnKQogICAgICAgICAg
ICAgcmV0dXJuIEAiQVhLZXlib2FyZElucHV0U3R5bGVHcm91cCI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IDJiZmUxNWUwMzVhMTc1
MDBlODE1YzkxODA2ODNlODliNzQ2OTYwODcuLmNjNzI4NDc1YzZjMTQ5MWQ4YTA1Y2IyZjRkMjRj
NTcxNzQ4MGQ0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNv
bnRyb2xsZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXI6OmNvbGxlY3RUZXh0UmFuZ2VzKGNvbnN0IFJhbmdlJiByCiB7
CiAgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHRleHRSYW5nZTsKICAgICBmb3IgKFRleHRJdGVy
YXRvciB0ZXh0SXRlcmF0b3IoJnJhbmdlKTsgIXRleHRJdGVyYXRvci5hdEVuZCgpOyB0ZXh0SXRl
cmF0b3IuYWR2YW5jZSgpKQotICAgICAgICB0ZXh0UmFuZ2UuYXBwZW5kKHRleHRJdGVyYXRvci5y
YW5nZSgpKTsKKyAgICAgICAgdGV4dFJhbmdlLmFwcGVuZChjcmVhdGVMaXZlUmFuZ2UodGV4dEl0
ZXJhdG9yLnJhbmdlKCkpKTsKICAgICByZXR1cm4gdGV4dFJhbmdlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uLmNwcAppbmRleCBiNDdhMjliMWIxMDI0MjEwZDVlZWU5OWMyNDQ3ODgxNzM0MzcyYzc2
Li4zM2RiYjRlMWRlMGQ4MWQ3NTBlMmJmZmNiMzk4NWM5NDI2ZDgyOGM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlBvc2l0aW9uSXRlcmF0b3IuaCIKKyNp
bmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRmxleGlibGVCb3guaCIKICNpbmNsdWRlICJSZW5kZXJHcmlkLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2VCb3VuZGFyeVBvaW50LmgKaW5kZXggNzY1ZjRhMDA3OGNlNjYzY2I2Yjc2N2EyYWI0
MzUwY2I2ZGRlOTRjYS4uZDhjZWU3N2U1Yzc4NGJjMGU4NjRjYmU2NWE0YTE5MGY1YWY3YzIzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaApAQCAtMzQsNyArMzQsNyBA
QCBjbGFzcyBSYW5nZUJvdW5kYXJ5UG9pbnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IFJhbmdl
Qm91bmRhcnlQb2ludChOb2RlKiBjb250YWluZXIpOwogCi0gICAgY29uc3QgUG9zaXRpb24gdG9Q
b3NpdGlvbigpIGNvbnN0OworICAgIFBvc2l0aW9uIHRvUG9zaXRpb24oKSBjb25zdDsKIAogICAg
IE5vZGUqIGNvbnRhaW5lcigpIGNvbnN0OwogICAgIHVuc2lnbmVkIG9mZnNldCgpIGNvbnN0OwpA
QCAtODUsNyArODUsNyBAQCBpbmxpbmUgdm9pZCBSYW5nZUJvdW5kYXJ5UG9pbnQ6OmVuc3VyZU9m
ZnNldElzVmFsaWQoKSBjb25zdAogICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBtX2NoaWxkQmVm
b3JlQm91bmRhcnktPmNvbXB1dGVOb2RlSW5kZXgoKSArIDE7CiB9CiAKLWlubGluZSBjb25zdCBQ
b3NpdGlvbiBSYW5nZUJvdW5kYXJ5UG9pbnQ6OnRvUG9zaXRpb24oKSBjb25zdAoraW5saW5lIFBv
c2l0aW9uIFJhbmdlQm91bmRhcnlQb2ludDo6dG9Qb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgZW5z
dXJlT2Zmc2V0SXNWYWxpZCgpOwogICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRp
b24obV9jb250YWluZXJOb2RlLmdldCgpLCBtX29mZnNldEluQ29udGFpbmVyLnZhbHVlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDUzYzJkMjU2ZWQyOGE3
ZTVjYzAzZmNkNmI2ZjNjZThkYzMwMzRhZDIuLjcwMWE3OTY5ZjVhZTFiNjkwMTc2YjU2MzNkYTU1
Y2NmMjAzMDAwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA1IEFsZXhleSBQcm9z
a3VyeWFrb3YuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xNDAsMTUgKzE0MCw4IEBAIHByaXZhdGU6
CiAKIC8vIC0tLS0tLS0tCiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBiaXRzSW5Xb3JkID0gc2l6
ZW9mKHVuc2lnbmVkKSAqIDg7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgYml0SW5Xb3JkTWFzayA9
IGJpdHNJbldvcmQgLSAxOwotCi1CaXRTdGFjazo6Qml0U3RhY2soKQotICAgIDogbV9zaXplKDAp
Ci17Ci19Ci0KLUJpdFN0YWNrOjp+Qml0U3RhY2soKSA9IGRlZmF1bHQ7CitzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGJpdHNJbldvcmQgPSBzaXplb2YodW5zaWduZWQpICogODsKK3N0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgYml0SW5Xb3JkTWFzayA9IGJpdHNJbldvcmQgLSAxOwogCiB2b2lk
IEJpdFN0YWNrOjpwdXNoKGJvb2wgYml0KQogewpAQCAtMTgxLDExICsxNzQsNiBAQCBib29sIEJp
dFN0YWNrOjp0b3AoKSBjb25zdAogICAgIHJldHVybiBtX3dvcmRzLmxhc3QoKSAmICgxVSA8PCBz
aGlmdCk7CiB9CiAKLXVuc2lnbmVkIEJpdFN0YWNrOjpzaXplKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9zaXplOwotfQotCiAvLyAtLS0tLS0tLQogCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGxpa2Ug
UmFuZ2U6OnBhc3RMYXN0Tm9kZSwgZXhjZXB0IGZvciB0aGUgZmFjdCB0aGF0IGl0IGNhbiBjbGlt
YiB1cCBvdXQgb2Ygc2hhZG93IHRyZWVzLgpAQCAtMTEyOCwyOSArMTExNiwyNSBAQCB2b2lkIFRl
eHRJdGVyYXRvcjo6ZW1pdFRleHQoVGV4dCYgdGV4dE5vZGUsIFJlbmRlclRleHQmIHJlbmRlcmVy
LCBpbnQgdGV4dFN0YXJ0TwogICAgIG1faGFzRW1pdHRlZCA9IHRydWU7CiB9CiAKLVJlZjxSYW5n
ZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CitTaW1wbGVSYW5nZSBUZXh0SXRlcmF0b3I6
OnJhbmdlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWF0RW5kKCkpOwotCi0gICAgLy8gdXNlIHRo
ZSBjdXJyZW50IHJ1biBpbmZvcm1hdGlvbiwgaWYgd2UgaGF2ZSBpdAorICAgIC8vIFVzZSB0aGUg
Y3VycmVudCBydW4gaW5mb3JtYXRpb24sIGlmIHdlIGhhdmUgaXQuCiAgICAgaWYgKG1fcG9zaXRp
b25PZmZzZXRCYXNlTm9kZSkgewogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IG1fcG9zaXRpb25P
ZmZzZXRCYXNlTm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpOwogICAgICAgICBtX3Bvc2l0aW9uU3Rh
cnRPZmZzZXQgKz0gaW5kZXg7CiAgICAgICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgKz0gaW5kZXg7
CiAgICAgICAgIG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZSA9IG51bGxwdHI7CiAgICAgfQotICAg
IHJldHVybiBSYW5nZTo6Y3JlYXRlKG1fcG9zaXRpb25Ob2RlLT5kb2N1bWVudCgpLCBtX3Bvc2l0
aW9uTm9kZSwgbV9wb3NpdGlvblN0YXJ0T2Zmc2V0LCBtX3Bvc2l0aW9uTm9kZSwgbV9wb3NpdGlv
bkVuZE9mZnNldCk7CisgICAgcmV0dXJuIHsgeyAqbV9wb3NpdGlvbk5vZGUsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3Bvc2l0aW9uU3RhcnRPZmZzZXQpIH0sIHsgKm1fcG9zaXRpb25Ob2RlLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wb3NpdGlvbkVuZE9mZnNldCkgfSB9OwogfQotICAgIAor
CiBOb2RlKiBUZXh0SXRlcmF0b3I6Om5vZGUoKSBjb25zdAogewotICAgIFJlZjxSYW5nZT4gdGV4
dFJhbmdlID0gcmFuZ2UoKTsKLQotICAgIE5vZGUmIG5vZGUgPSB0ZXh0UmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCk7Ci0gICAgaWYgKG5vZGUuaXNDaGFyYWN0ZXJEYXRhTm9kZSgpKQotICAgICAgICBy
ZXR1cm4gJm5vZGU7Ci0gICAgCi0gICAgcmV0dXJuIG5vZGUudHJhdmVyc2VUb0NoaWxkQXQodGV4
dFJhbmdlLT5zdGFydE9mZnNldCgpKTsKKyAgICBhdXRvIHN0YXJ0ID0gdGhpcy0+cmFuZ2UoKS5z
dGFydDsKKyAgICBpZiAoc3RhcnQuY29udGFpbmVyLT5pc0NoYXJhY3RlckRhdGFOb2RlKCkpCisg
ICAgICAgIHJldHVybiBzdGFydC5jb250YWluZXIucHRyKCk7CisgICAgcmV0dXJuIHN0YXJ0LmNv
bnRhaW5lci0+dHJhdmVyc2VUb0NoaWxkQXQoc3RhcnQub2Zmc2V0KTsKIH0KIAogLy8gLS0tLS0t
LS0KQEAgLTE0MjIsMTkgKzE0MDYsMTcgQEAgQ2hhcmFjdGVySXRlcmF0b3I6OkNoYXJhY3Rlckl0
ZXJhdG9yKFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckIKIAogUmVm
PFJhbmdlPiBDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAogewotICAgIFJlZjxSYW5n
ZT4gcmFuZ2UgPSBtX3VuZGVybHlpbmdJdGVyYXRvci5yYW5nZSgpOworICAgIFNpbXBsZVJhbmdl
IHJhbmdlID0gbV91bmRlcmx5aW5nSXRlcmF0b3IucmFuZ2UoKTsKICAgICBpZiAoIW1fdW5kZXJs
eWluZ0l0ZXJhdG9yLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKG1fdW5kZXJseWluZ0l0ZXJhdG9y
LnRleHQoKS5sZW5ndGgoKSA8PSAxKSB7CisgICAgICAgIGlmIChtX3VuZGVybHlpbmdJdGVyYXRv
ci50ZXh0KCkubGVuZ3RoKCkgPD0gMSkKICAgICAgICAgICAgIEFTU0VSVChtX3J1bk9mZnNldCA9
PSAwKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIE5vZGUmIG5vZGUgPSByYW5nZS0+
c3RhcnRDb250YWluZXIoKTsKLSAgICAgICAgICAgIEFTU0VSVCgmbm9kZSA9PSAmcmFuZ2UtPmVu
ZENvbnRhaW5lcigpKTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSByYW5nZS0+c3RhcnRPZmZz
ZXQoKSArIG1fcnVuT2Zmc2V0OwotICAgICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0KG5vZGUsIG9m
ZnNldCk7Ci0gICAgICAgICAgICByYW5nZS0+c2V0RW5kKG5vZGUsIG9mZnNldCArIDEpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIE5vZGUmIG5vZGUgPSByYW5nZS5zdGFydC5jb250YWlu
ZXI7CisgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSByYW5nZS5zdGFydE9mZnNldCgpICsg
bV9ydW5PZmZzZXQ7CisgICAgICAgICAgICByYW5nZSA9IHsgeyBub2RlLCBvZmZzZXQgfSwgeyBu
b2RlLCBvZmZzZXQgKyAxIH0gfTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmFuZ2U7
CisgICAgcmV0dXJuIGNyZWF0ZUxpdmVSYW5nZShyYW5nZSk7CiB9CiAKIHZvaWQgQ2hhcmFjdGVy
SXRlcmF0b3I6OmFkdmFuY2UoaW50IGNvdW50KQpAQCAtMjQzOSw3ICsyNDIxLDcgQEAgUmVmUHRy
PFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5l
ck5vZGUqIHNjb3BlLCBpbnQKIAogICAgIGZvciAoOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgp
KSB7CiAgICAgICAgIGludCBsZW5ndGggPSBpdC50ZXh0KCkubGVuZ3RoKCk7Ci0gICAgICAgIHRl
eHRSdW5SYW5nZSA9IGl0LnJhbmdlKCk7CisgICAgICAgIHRleHRSdW5SYW5nZSA9IGNyZWF0ZUxp
dmVSYW5nZShpdC5yYW5nZSgpKTsKIAogICAgICAgICBib29sIGZvdW5kU3RhcnQgPSByYW5nZUxv
Y2F0aW9uID49IGRvY1RleHRQb3NpdGlvbiAmJiByYW5nZUxvY2F0aW9uIDw9IGRvY1RleHRQb3Np
dGlvbiArIGxlbmd0aDsKICAgICAgICAgYm9vbCBmb3VuZEVuZCA9IHJhbmdlRW5kID49IGRvY1Rl
eHRQb3NpdGlvbiAmJiByYW5nZUVuZCA8PSBkb2NUZXh0UG9zaXRpb24gKyBsZW5ndGg7CkBAIC0y
NDUwLDggKzI0MzIsOCBAQCBSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsIGludAogICAgICAgICAgICAgaWYg
KGxlbmd0aCA9PSAxICYmIChpdC50ZXh0KClbMF0gPT0gJ1xuJyB8fCBpc0luc2lkZVJlcGxhY2Vk
RWxlbWVudChpdCkpKSB7CiAgICAgICAgICAgICAgICAgaXQuYWR2YW5jZSgpOwogICAgICAgICAg
ICAgICAgIGlmICghaXQuYXRFbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8UmFuZ2U+
IHJhbmdlID0gaXQucmFuZ2UoKTsKLSAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5z
ZXRFbmQocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBzdGFydCA9IGl0LnJhbmdlKCkuc3RhcnQ7CisgICAgICAg
ICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKFdURk1vdmUoc3RhcnQuY29udGFpbmVy
KSwgc3RhcnQub2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBQb3NpdGlvbiBydW5TdGFydCA9IHRleHRSdW5SYW5nZS0+c3RhcnRQb3NpdGlvbigp
OwogICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBydW5FbmQgPSBWaXNpYmxlUG9zaXRpb24o
cnVuU3RhcnQpLm5leHQoKS5kZWVwRXF1aXZhbGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dEl0ZXJhdG9yLmgKaW5kZXggMTAzMDRhZmY4NzhmNGZmZWM1OGI5ZjkwMzVkYjkxZjRkMDVkN2Iy
NS4uZWNiMTBkNzUxMzhjMDdkNmE5ZjU2ZjcxOGFkMjgyMTcwZDgyMTNlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjQgKzI1LDE5IEBACiAKICNwcmFnbWEg
b25jZQogCi0vLyBGSVhNRTogTW92ZSBlYWNoIGl0ZXJhdG9yIGNsYXNzIGludG8gYSBzZXBhcmF0
ZSBoZWFkZXIgZmlsZS4KLQogI2luY2x1ZGUgIkZpbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiTGlu
ZUxheW91dFRyYXZlcnNhbC5oIgotI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dEl0
ZXJhdG9yQmVoYXZpb3IuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElubGlu
ZVRleHRCb3g7CitjbGFzcyBSYW5nZTsKIGNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBSZW5kZXJU
ZXh0RnJhZ21lbnQ7CiAKLW5hbWVzcGFjZSBTaW1wbGVMaW5lTGF5b3V0IHsKLWNsYXNzIFJ1blJl
c29sdmVyOwotfQorc3RydWN0IFNpbXBsZVJhbmdlOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
cGxhaW5UZXh0KFBvc2l0aW9uIHN0YXJ0LCBQb3NpdGlvbiBlbmQsIFRleHRJdGVyYXRvckJlaGF2
aW9yID0gVGV4dEl0ZXJhdG9yRGVmYXVsdEJlaGF2aW9yLCBib29sIGlzRGlzcGxheVN0cmluZyA9
IGZhbHNlKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwbGFpblRleHRSZXBsYWNpbmdOb0JyZWFr
U3BhY2UoUG9zaXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ig
PSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IsIGJvb2wgaXNEaXNwbGF5U3RyaW5nID0gZmFs
c2UpOwpAQCAtNjAsMzEgKzU1LDIxIEBAIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBmb2xkUXVvdGVN
YXJrcyhjb25zdCBTdHJpbmcmKTsKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgc29tZXdoZXJlIGVsc2Ug
aW4gdGhlIGVkaXRpbmcgZGlyZWN0b3J5LiBJdCBkb2Vzbid0IGJlbG9uZyBoZXJlLgogYm9vbCBp
c1JlbmRlcmVyUmVwbGFjZWRFbGVtZW50KFJlbmRlck9iamVjdCopOwogCisvLyBGSVhNRTogTW92
ZSBlYWNoIGl0ZXJhdG9yIGNsYXNzIGludG8gYSBzZXBhcmF0ZSBoZWFkZXIgZmlsZS4KKwogY2xh
c3MgQml0U3RhY2sgewogcHVibGljOgotICAgIEJpdFN0YWNrKCk7Ci0gICAgfkJpdFN0YWNrKCk7
Ci0KICAgICB2b2lkIHB1c2goYm9vbCk7CiAgICAgdm9pZCBwb3AoKTsKLQogICAgIGJvb2wgdG9w
KCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHVu
c2lnbmVkIG1fc2l6ZTsKKyAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07CiAgICAgVmVjdG9yPHVu
c2lnbmVkLCAxPiBtX3dvcmRzOwogfTsKIAogY2xhc3MgVGV4dEl0ZXJhdG9yQ29weWFibGVUZXh0
IHsKIHB1YmxpYzoKLSAgICBUZXh0SXRlcmF0b3JDb3B5YWJsZVRleHQoKQotICAgICAgICA6IG1f
c2luZ2xlQ2hhcmFjdGVyKDApCi0gICAgICAgICwgbV9vZmZzZXQoMCkKLSAgICAgICAgLCBtX2xl
bmd0aCgwKQotICAgIHsKLSAgICB9Ci0KICAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdCB7IHJl
dHVybiBtX3NpbmdsZUNoYXJhY3RlciA/IFN0cmluZ1ZpZXcoJm1fc2luZ2xlQ2hhcmFjdGVyLCAx
KSA6IFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZyhtX29mZnNldCwgbV9sZW5ndGgpOyB9
CiAgICAgdm9pZCBhcHBlbmRUb1N0cmluZ0J1aWxkZXIoU3RyaW5nQnVpbGRlciYpIGNvbnN0Owog
CkBAIC05NCwxMCArNzksMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0KFVDaGFyKTsKIAogcHJp
dmF0ZToKLSAgICBVQ2hhciBtX3NpbmdsZUNoYXJhY3RlcjsKKyAgICBVQ2hhciBtX3NpbmdsZUNo
YXJhY3RlciB7IDAgfTsKICAgICBTdHJpbmcgbV9zdHJpbmc7Ci0gICAgdW5zaWduZWQgbV9vZmZz
ZXQ7Ci0gICAgdW5zaWduZWQgbV9sZW5ndGg7CisgICAgdW5zaWduZWQgbV9vZmZzZXQgeyAwIH07
CisgICAgdW5zaWduZWQgbV9sZW5ndGggeyAwIH07CiB9OwogCiAvLyBJdGVyYXRlcyB0aHJvdWdo
IHRoZSBET00gcmFuZ2UsIHJldHVybmluZyBhbGwgdGhlIHRleHQsIGFuZCAwLWxlbmd0aCBib3Vu
ZGFyaWVzCkBAIC0xMDcsNyArOTIsNyBAQCBwcml2YXRlOgogY2xhc3MgVGV4dEl0ZXJhdG9yIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBUZXh0SXRlcmF0b3IoUG9zaXRpb24gc3RhcnQsIFBvc2l0aW9uIGVuZCwgVGV4
dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOworICAgIFdF
QkNPUkVfRVhQT1JUIFRleHRJdGVyYXRvcihQb3NpdGlvbiBzdGFydCwgUG9zaXRpb24gZW5kLCBU
ZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckRlZmF1bHRCZWhhdmlvcik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRlcmF0b3JEZWZhdWx0QmVoYXZpb3IpOwogICAgIFdFQkNP
UkVfRVhQT1JUIH5UZXh0SXRlcmF0b3IoKTsKIApAQCAtMTE1LDcgKzEwMCw3IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkdmFuY2UoKTsKIAogICAgIFN0cmluZ1ZpZXcgdGV4
dCgpIGNvbnN0IHsgQVNTRVJUKCFhdEVuZCgpKTsgcmV0dXJuIG1fdGV4dDsgfQotICAgIFdFQkNP
UkVfRVhQT1JUIFJlZjxSYW5nZT4gcmFuZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBT
aW1wbGVSYW5nZSByYW5nZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIE5vZGUqIG5vZGUo
KSBjb25zdDsKIAogICAgIGNvbnN0IFRleHRJdGVyYXRvckNvcHlhYmxlVGV4dCYgY29weWFibGVU
ZXh0KCkgY29uc3QgeyBBU1NFUlQoIWF0RW5kKCkpOyByZXR1cm4gbV9jb3B5YWJsZVRleHQ7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggNDE3ZjJhOTY0ZjAyNTc2N2UyM2RhMzdmMWE0MjUzZmYzMTVkNmJlZi4u
NmNkMTdkMTMyZWNmOTg3ZmM0Y2M0NGY1NjllNDlkYzgxMWJkYjg2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAg
LTE0MSw3ICsxNDEsNyBAQCBjbGFzcyBQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IgewogcHVibGlj
OgogICAgIFBhcmFncmFwaENvbnRlbnRJdGVyYXRvcihjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNv
bnN0IFBvc2l0aW9uJiBlbmQpCiAgICAgICAgIDogbV9pdGVyYXRvcihzdGFydCwgZW5kKQotICAg
ICAgICAsIG1faXRlcmF0b3JOb2RlKG1faXRlcmF0b3IuYXRFbmQoKSA/IG51bGxwdHIgOiBtX2l0
ZXJhdG9yLnJhbmdlKCktPmZpcnN0Tm9kZSgpKQorICAgICAgICAsIG1faXRlcmF0b3JOb2RlKG1f
aXRlcmF0b3IuYXRFbmQoKSA/IG51bGxwdHIgOiBjcmVhdGVMaXZlUmFuZ2UobV9pdGVyYXRvci5y
YW5nZSgpKS0+Zmlyc3ROb2RlKCkpCiAgICAgICAgICwgbV9jdXJyZW50Tm9kZUZvckZpbmRpbmdJ
bnZpc2libGVDb250ZW50KHN0YXJ0LmZpcnN0Tm9kZSgpKQogICAgICAgICAsIG1fcGFzdEVuZE5v
ZGUoZW5kLmZpcnN0Tm9kZSgpKQogICAgIHsKQEAgLTE2MSw3ICsxNjEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGF1dG8gcHJldmlvdXNJdGVyYXRvck5vZGUgPSBtX2l0ZXJhdG9yTm9kZTsKIAogICAg
ICAgICBtX2l0ZXJhdG9yLmFkdmFuY2UoKTsKLSAgICAgICAgbV9pdGVyYXRvck5vZGUgPSBtX2l0
ZXJhdG9yLmF0RW5kKCkgPyBudWxscHRyIDogbV9pdGVyYXRvci5yYW5nZSgpLT5maXJzdE5vZGUo
KTsKKyAgICAgICAgbV9pdGVyYXRvck5vZGUgPSBtX2l0ZXJhdG9yLmF0RW5kKCkgPyBudWxscHRy
IDogY3JlYXRlTGl2ZVJhbmdlKG1faXRlcmF0b3IucmFuZ2UoKSktPmZpcnN0Tm9kZSgpOwogICAg
ICAgICBpZiAocHJldmlvdXNJdGVyYXRvck5vZGUgIT0gbV9pdGVyYXRvck5vZGUpCiAgICAgICAg
ICAgICBtb3ZlQ3VycmVudE5vZGVGb3J3YXJkKCk7CiAgICAgfQpAQCAtMTkzLDEyICsxOTMsMTIg
QEAgcHVibGljOgogCiAgICAgUG9zaXRpb24gc3RhcnRQb3NpdGlvbigpCiAgICAgewotICAgICAg
ICByZXR1cm4gbV9pdGVyYXRvci5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCk7CisgICAgICAgIHJl
dHVybiBjcmVhdGVMaXZlUmFuZ2UobV9pdGVyYXRvci5yYW5nZSgpKS0+c3RhcnRQb3NpdGlvbigp
OwogICAgIH0KIAogICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2l0ZXJhdG9yLnJhbmdlKCktPmVuZFBvc2l0aW9uKCk7CisgICAgICAgIHJldHVybiBj
cmVhdGVMaXZlUmFuZ2UobV9pdGVyYXRvci5yYW5nZSgpKS0+ZW5kUG9zaXRpb24oKTsKICAgICB9
CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvci5hdEVuZCgpICYm
IG1fY3VycmVudE5vZGVGb3JGaW5kaW5nSW52aXNpYmxlQ29udGVudCA9PSBtX3Bhc3RFbmROb2Rl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5k
ZXggYzg5YjkwYzg4MWFkODE2ZGY5ZDY4NTY4OGEwZmI5Y2ViZmIzMGE4Ni4uYzYxZTM1NjU4Mjdk
YjRlZWVmZmE3NjcwOGQ2YTA5NDE5NDNlODBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCAiTm9k
ZVRyYXZlcnNhbC5oIgogI2ltcG9ydCAiUmFuZ2UuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5o
IgorI2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlN0eWxlUHJvcGVydGllcy5oIgog
I2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiCkBAIC00OTksNyArNTAw
LDcgQEAgTlNBcnJheSAqRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UoUmVmUHRy
PFJhbmdlPiYgY29udGV4dFJhbmdlLCBEYXRhRGUKICAgICAgICAgICAgIGl0ZXJhdG9yLmFkdmFu
Y2UoKTsKIAogICAgICAgICBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gZnJhZ21lbnRSYW5nZXM7Ci0g
ICAgICAgIFJlZlB0cjxSYW5nZT4gY3VycmVudFJhbmdlID0gaXRlcmF0b3IucmFuZ2UoKTsKKyAg
ICAgICAgUmVmUHRyPFJhbmdlPiBjdXJyZW50UmFuZ2UgPSBjcmVhdGVMaXZlUmFuZ2UoaXRlcmF0
b3IucmFuZ2UoKSk7CiAgICAgICAgIENGSW5kZXggZnJhZ21lbnRJbmRleCA9IHF1ZXJ5UmFuZ2Uu
c3RhcnQucXVlcnlJbmRleDsKICAgICAgICAgaWYgKGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5n
ZS5lbmQucXVlcnlJbmRleCkKICAgICAgICAgICAgIGZyYWdtZW50UmFuZ2VzLmFwcGVuZChUZXh0
SXRlcmF0b3I6OnN1YnJhbmdlKCpjdXJyZW50UmFuZ2UsIHF1ZXJ5UmFuZ2Uuc3RhcnQub2Zmc2V0
LCBxdWVyeVJhbmdlLmVuZC5vZmZzZXQgLSBxdWVyeVJhbmdlLnN0YXJ0Lm9mZnNldCkpOwpAQCAt
NTE2LDcgKzUxNyw3IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJh
bmdlKFJlZlB0cjxSYW5nZT4mIGNvbnRleHRSYW5nZSwgRGF0YURlCiAgICAgICAgICAgICBmb3Ig
KDsgaXRlcmF0b3JDb3VudCA8IGl0ZXJhdG9yVGFyZ2V0QWR2YW5jZUNvdW50OyArK2l0ZXJhdG9y
Q291bnQpCiAgICAgICAgICAgICAgICAgaXRlcmF0b3IuYWR2YW5jZSgpOwogCi0gICAgICAgICAg
ICBjdXJyZW50UmFuZ2UgPSBpdGVyYXRvci5yYW5nZSgpOworICAgICAgICAgICAgY3VycmVudFJh
bmdlID0gY3JlYXRlTGl2ZVJhbmdlKGl0ZXJhdG9yLnJhbmdlKCkpOwogICAgICAgICAgICAgUmVm
UHRyPFJhbmdlPiBmcmFnbWVudFJhbmdlID0gKGZyYWdtZW50SW5kZXggPT0gcXVlcnlSYW5nZS5l
bmQucXVlcnlJbmRleCkgPyAgUmFuZ2U6OmNyZWF0ZShjdXJyZW50UmFuZ2UtPm93bmVyRG9jdW1l
bnQoKSwgJmN1cnJlbnRSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgY3VycmVudFJhbmdlLT5zdGFy
dE9mZnNldCgpLCAmY3VycmVudFJhbmdlLT5lbmRDb250YWluZXIoKSwgY3VycmVudFJhbmdlLT5z
dGFydE9mZnNldCgpICsgcXVlcnlSYW5nZS5lbmQub2Zmc2V0KSA6IGN1cnJlbnRSYW5nZTsKICAg
ICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcHJldmlvdXNSYW5nZSA9IGZyYWdtZW50UmFuZ2VzLmxh
c3QoKTsKICAgICAgICAgICAgIGlmICgmcHJldmlvdXNSYW5nZS0+c3RhcnRDb250YWluZXIoKSA9
PSAmZnJhZ21lbnRSYW5nZS0+c3RhcnRDb250YWluZXIoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGMzOTU5MjRiZDg1Zjg0YTBhZTJh
ZjMzNzQzZWQ5ZjlmN2M2YTNiMTEuLjRmN2ZhYTBlMWNhOTFkODMyZGVlNTc5ZDkzYWVlM2FiMWE5
ZTBjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0KQEAgLTU4LDggKzU4LDEwIEBACiAjaW1wb3J0ICJIVE1MVGFibGVDZWxsRWxlbWVudC5oIgog
I2ltcG9ydCAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2ltcG9ydCAiTG9hZGVyTlNVUkxFeHRy
YXMuaCIKKyNpbXBvcnQgIlJhbmdlLmgiCiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgogI2ltcG9y
dCAiUmVuZGVyVGV4dC5oIgorI2ltcG9ydCAiU2ltcGxlUmFuZ2UuaCIKICNpbXBvcnQgIlN0eWxl
UHJvcGVydGllcy5oIgogI2ltcG9ydCAiU3R5bGVkRWxlbWVudC5oIgogI2ltcG9ydCAiVGV4dEl0
ZXJhdG9yLmgiCkBAIC0yMzk1LDExICsyMzk3LDExIEBAIE5TQXR0cmlidXRlZFN0cmluZyAqZWRp
dGluZ0F0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoUmFuZ2UmIHJhbmdlLCBJbmNsdWRlSW1hZ2Vz
CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGF0dHJzID0gYWRvcHROUyhbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgIGZvciAoVGV4dEl0ZXJhdG9y
IGl0KCZyYW5nZSk7ICFpdC5hdEVuZCgpOyBpdC5hZHZhbmNlKCkpIHsKLSAgICAgICAgUmVmUHRy
PFJhbmdlPiBjdXJyZW50VGV4dFJhbmdlID0gaXQucmFuZ2UoKTsKLSAgICAgICAgTm9kZSYgc3Rh
cnRDb250YWluZXIgPSBjdXJyZW50VGV4dFJhbmdlLT5zdGFydENvbnRhaW5lcigpOwotICAgICAg
ICBOb2RlJiBlbmRDb250YWluZXIgPSBjdXJyZW50VGV4dFJhbmdlLT5lbmRDb250YWluZXIoKTsK
LSAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gY3VycmVudFRleHRSYW5nZS0+c3RhcnRPZmZzZXQo
KTsKLSAgICAgICAgaW50IGVuZE9mZnNldCA9IGN1cnJlbnRUZXh0UmFuZ2UtPmVuZE9mZnNldCgp
OworICAgICAgICBTaW1wbGVSYW5nZSBjdXJyZW50VGV4dFJhbmdlID0gaXQucmFuZ2UoKTsKKyAg
ICAgICAgTm9kZSYgc3RhcnRDb250YWluZXIgPSBjdXJyZW50VGV4dFJhbmdlLnN0YXJ0LmNvbnRh
aW5lcjsKKyAgICAgICAgTm9kZSYgZW5kQ29udGFpbmVyID0gY3VycmVudFRleHRSYW5nZS5lbmQu
Y29udGFpbmVyOworICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBjdXJyZW50VGV4dFJhbmdlLnN0
YXJ0Lm9mZnNldDsKKyAgICAgICAgaW50IGVuZE9mZnNldCA9IGN1cnJlbnRUZXh0UmFuZ2UuZW5k
Lm9mZnNldDsKIAogICAgICAgICBpZiAoaW5jbHVkZU9yU2tpcEltYWdlcyA9PSBJbmNsdWRlSW1h
Z2VzSW5BdHRyaWJ1dGVkU3RyaW5nOjpZZXMpIHsKICAgICAgICAgICAgIGlmICgmc3RhcnRDb250
YWluZXIgPT0gJmVuZENvbnRhaW5lciAmJiAoc3RhcnRPZmZzZXQgPT0gZW5kT2Zmc2V0IC0gMSkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NVGV4dEl0ZXJhdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KaW5kZXggMDg0ZjMwMDVk
NjEwM2Q0ZTI1MDMzYzI1NmM3MGMwZTA2NDA0MWNkOC4uNzliMmU0ZjU3ZjdiMTViZTBjOTliM2Iz
MTg2NWVmOGRjN2I0MTc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3IubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01UZXh0SXRlcmF0b3Iu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiV0tET01JbnRlcm5hbHMuaCIKICNpbXBv
cnQgIldLRE9NUmFuZ2UuaCIKKyNpbXBvcnQgPFdlYkNvcmUvU2ltcGxlUmFuZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAKIEBpbnRlcmZhY2UgV0tET01UZXh0SXRlcmF0
b3IgKCkgewpAQCAtNjIsNyArNjMsNyBAQCAtIChCT09MKWF0RW5kCiAKIC0gKFdLRE9NUmFuZ2Ug
KiljdXJyZW50UmFuZ2UKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9NUmFuZ2UoX3RleHRJ
dGVyYXRvci0+cmFuZ2UoKS5wdHIoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTVJhbmdl
KGNyZWF0ZUxpdmVSYW5nZShfdGV4dEl0ZXJhdG9yLT5yYW5nZSgpKS5wdHIoKSk7CiB9CiAKIC8v
IEZJWE1FOiBDb25zaWRlciBkZXByZWNhdGluZyB0aGlzIG1ldGhvZCBhbmQgY3JlYXRpbmcgb25l
IHRoYXQgZG9lcyBub3QgcmVxdWlyZSBjb3B5aW5nIDgtYml0IGNoYXJhY3RlcnMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0KaW5kZXggOGI2ODFhYWE4NDk4YWFlYjhiZjNiNTRmMDIzMmNiYWFmM2ViYjUxYS4uMDdlMGUy
NDIxOWRjZjI0ZmQ1NTlkZDI3MjljNWU1ZTYyODMxMzNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQpAQCAtMzgs
MjAgKzM4LDIwIEBACiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRvci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9FdmVudEhhbmRsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250cm9sbGVyLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29udmVy
dGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvTm9kZVJlbmRlclN0eWxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRDb29yZGluYXRv
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyRWxlbWVudC5o
PgotI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2lt
cGxlUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEl0ZXJhdG9yLmg+CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhjb25z
dCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXRlcnMpCiB7CkBAIC0xMjEsMjkgKzEyMSwyOCBA
QCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5n
ZShGcmFtZSYgZnJhbWUsIFJhbmdlJiByYQogewogICAgIEVkaXRvciYgZWRpdG9yID0gZnJhbWUu
ZWRpdG9yKCk7CiAgICAgZWRpdG9yLnNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8odHJ1
ZSk7Ci0gICAgCisKICAgICBEaWN0aW9uYXJ5UG9wdXBJbmZvIGRpY3Rpb25hcnlQb3B1cEluZm87
CiAgICAgaWYgKHJhbmdlLnRleHQoKS5zdHJpcFdoaXRlU3BhY2UoKS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgZWRpdG9yLnNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oZmFsc2UpOwogICAg
ICAgICByZXR1cm4gZGljdGlvbmFyeVBvcHVwSW5mbzsKICAgICB9Ci0gICAgCisKICAgICBWZWN0
b3I8RmxvYXRRdWFkPiBxdWFkczsKICAgICByYW5nZS5hYnNvbHV0ZVRleHRRdWFkcyhxdWFkcyk7
CiAgICAgaWYgKHF1YWRzLmlzRW1wdHkoKSkgewogICAgICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5n
RGljdGlvbmFyeVBvcHVwSW5mbyhmYWxzZSk7CiAgICAgICAgIHJldHVybiBkaWN0aW9uYXJ5UG9w
dXBJbmZvOwogICAgIH0KLSAgICAKKwogICAgIEludFJlY3QgcmFuZ2VSZWN0ID0gZnJhbWUudmll
dygpLT5jb250ZW50c1RvV2luZG93KHF1YWRzWzBdLmVuY2xvc2luZ0JvdW5kaW5nQm94KCkpOwot
ICAgIAorCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmFuZ2Uuc3RhcnRDb250YWlu
ZXIoKS5yZW5kZXJTdHlsZSgpOwogICAgIGZsb2F0IHNjYWxlZEFzY2VudCA9IHN0eWxlID8gc3R5
bGUtPmZvbnRNZXRyaWNzKCkuYXNjZW50KCkgKiBwYWdlU2NhbGVGYWN0b3IoKSA6IDA7CiAgICAg
ZGljdGlvbmFyeVBvcHVwSW5mby5vcmlnaW4gPSBGbG9hdFBvaW50KHJhbmdlUmVjdC54KCksIHJh
bmdlUmVjdC55KCkgKyBzY2FsZWRBc2NlbnQpOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8ub3B0
aW9ucyA9IG9wdGlvbnM7CiAKICNpZiBQTEFURk9STShNQUMpCi0KICAgICBOU0F0dHJpYnV0ZWRT
dHJpbmcgKm5zQXR0cmlidXRlZFN0cmluZyA9IGVkaXRpbmdBdHRyaWJ1dGVkU3RyaW5nRnJvbVJh
bmdlKHJhbmdlLCBJbmNsdWRlSW1hZ2VzSW5BdHRyaWJ1dGVkU3RyaW5nOjpObyk7CiAgICAgCiAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmc+IHNjYWxlZE5TQXR0cmlidXRl
ZFN0cmluZyA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFN0cmluZzpbbnNBdHRyaWJ1dGVkU3RyaW5nIHN0cmluZ11dKTsKQEAgLTE2MSw5ICsxNjAs
OCBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JS
YW5nZShGcmFtZSYgZnJhbWUsIFJhbmdlJiByYQogICAgICAgICAKICAgICAgICAgW3NjYWxlZE5T
QXR0cmlidXRlZFN0cmluZyBhZGRBdHRyaWJ1dGVzOnNjYWxlZEF0dHJpYnV0ZXMuZ2V0KCkgcmFu
Z2U6cmFuZ2VdOwogICAgIH1dOwotCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotICAgIAorCiAg
ICAgVGV4dEluZGljYXRvck9wdGlvbnMgaW5kaWNhdG9yT3B0aW9ucyA9IFRleHRJbmRpY2F0b3JP
cHRpb25Vc2VCb3VuZGluZ1JlY3RBbmRQYWludEFsbENvbnRlbnRGb3JDb21wbGV4UmFuZ2VzOwog
ICAgIGlmIChwcmVzZW50YXRpb25UcmFuc2l0aW9uID09IFRleHRJbmRpY2F0b3JQcmVzZW50YXRp
b25UcmFuc2l0aW9uOjpCb3VuY2VBbmRDcm9zc2ZhZGUpCiAgICAgICAgIGluZGljYXRvck9wdGlv
bnMgfD0gVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hvdFdpdGhTZWxlY3Rpb25IaWdo
bGlnaHQ7CkBAIC0xNzMsMTYgKzE3MSwxNCBAQCBEaWN0aW9uYXJ5UG9wdXBJbmZvIFdlYlBhZ2U6
OmRpY3Rpb25hcnlQb3B1cEluZm9Gb3JSYW5nZShGcmFtZSYgZnJhbWUsIFJhbmdlJiByYQogICAg
ICAgICBlZGl0b3Iuc2V0SXNHZXR0aW5nRGljdGlvbmFyeVBvcHVwSW5mbyhmYWxzZSk7CiAgICAg
ICAgIHJldHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwogICAgIH0KLSAgICAKKwogICAgIGRpY3Rp
b25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvciA9IHRleHRJbmRpY2F0b3ItPmRhdGEoKTsKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgZGljdGlvbmFyeVBvcHVwSW5mby5hdHRyaWJ1dGVkU3RyaW5n
ID0gc2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5nOwotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLSAg
ICAKLSNpZiBQTEFURk9STShNQUNDQVRBTFlTVCkKKyNlbGlmIFBMQVRGT1JNKE1BQ0NBVEFMWVNU
KQogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8uYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0TlMoW1tO
U011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpyYW5nZS50ZXh0
KCldKTsKLSNlbmRpZiAvLyBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICAKKyNlbmRpZgorCiAg
ICAgZWRpdG9yLnNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oZmFsc2UpOwogICAgIHJl
dHVybiBkaWN0aW9uYXJ5UG9wdXBJbmZvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJUZXh0SXRlcmF0b3IubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQppbmRleCA0NzZiODcxMGEyNmY2MDg3Nzkw
NDY3ODk3NmM0MzRkZjFjMTE4ZGNmLi4zNTdjNTI4MjgzNmFhOGRiYWRhMjFlY2U0OTM4ODVlNGZl
OGJiMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRl
eHRJdGVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlRl
eHRJdGVyYXRvci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDksIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw4IEBACiAjaW1wb3J0ICJET01SYW5n
ZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgiCiAjaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Jhbmdl
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NpbXBsZVJhbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Rl
eHRJdGVyYXRvci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9S
dW5Mb29wLmg+CkBAIC04NSwxMCArODcsMTAgQEAgLSAoQk9PTClhdEVuZAogCiAtIChET01SYW5n
ZSAqKWN1cnJlbnRSYW5nZQogewotICAgIFdlYkNvcmU6OlRleHRJdGVyYXRvciYgdGV4dEl0ZXJh
dG9yID0gKl9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yOworICAgIGF1dG8mIHRleHRJdGVyYXRvciA9
ICpfcHJpdmF0ZS0+X3RleHRJdGVyYXRvcjsKICAgICBpZiAodGV4dEl0ZXJhdG9yLmF0RW5kKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBraXQodGV4dEl0ZXJhdG9yLnJh
bmdlKCkucHRyKCkpOworICAgIHJldHVybiBraXQoY3JlYXRlTGl2ZVJhbmdlKHRleHRJdGVyYXRv
ci5yYW5nZSgpKS5wdHIoKSk7CiB9CiAKIC8vIEZJWE1FOiBDb25zaWRlciBkZXByZWNhdGluZyB0
aGlzIG1ldGhvZCBhbmQgY3JlYXRpbmcgb25lIHRoYXQgZG9lcyBub3QgcmVxdWlyZSBjb3B5aW5n
IDgtYml0IGNoYXJhY3RlcnMuCg==
</data>
<flag name="review"
          id="408490"
          type_id="1"
          status="+"
          setter="don.olmstead"
    />
          </attachment>
      

    </bug>

</bugzilla>