<?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>159548</bug_id>
          
          <creation_ts>2016-07-08 00:18:05 -0700</creation_ts>
          <short_desc>Purge PassRefPtr in platform/efl and platform/mac</short_desc>
          <delta_ts>2016-07-11 23:25:20 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1208995</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-07-08 00:18:05 -0700</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208996</commentid>
    <comment_count>1</comment_count>
      <attachid>283114</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-07-08 00:21:17 -0700</bug_when>
    <thetext>Created attachment 283114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209435</commentid>
    <comment_count>2</comment_count>
      <attachid>283258</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-07-09 06:30:02 -0700</bug_when>
    <thetext>Created attachment 283258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209596</commentid>
    <comment_count>3</comment_count>
      <attachid>283302</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-07-10 23:33:44 -0700</bug_when>
    <thetext>Created attachment 283302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209603</commentid>
    <comment_count>4</comment_count>
      <attachid>283304</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-07-11 00:34:16 -0700</bug_when>
    <thetext>Created attachment 283304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209674</commentid>
    <comment_count>5</comment_count>
      <attachid>283304</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-07-11 09:15:24 -0700</bug_when>
    <thetext>Comment on attachment 283304
Patch

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

&gt; Source/WebCore/platform/mac/PasteboardMac.mm:174
&gt;          m_changeCount = platformStrategies()-&gt;pasteboardStrategy()-&gt;setBufferForType(0, WebSmartPastePboardType, m_pasteboardName);

nullptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209929</commentid>
    <comment_count>6</comment_count>
      <attachid>283385</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-07-11 21:20:48 -0700</bug_when>
    <thetext>Created attachment 283385
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209950</commentid>
    <comment_count>7</comment_count>
      <attachid>283385</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-11 23:25:15 -0700</bug_when>
    <thetext>Comment on attachment 283385
Patch for landing

Clearing flags on attachment: 283385

Committed r203109: &lt;http://trac.webkit.org/changeset/203109&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209951</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-11 23:25:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283114</attachid>
            <date>2016-07-08 00:21:17 -0700</date>
            <delta_ts>2016-07-09 06:29:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159548-20160708162040.patch</filename>
            <type>text/plain</type>
            <size>33105</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyOTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNhNTljYjE3OGJkY2Qy
MTRkNTA4NzVkMDQwOTJhODgxMTY1NmVlOC4uNGY5MTdiOTkxNWJhZWFjYjRjMDA4OGMzNWYyZTM4
MGUzMWY0ZWIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE2LTA3LTA4ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIHBsYXRmb3JtL2VmbCBhbmQgcGxhdGZvcm0vbWFjIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGFsbCB1c2Ugb2YgUGFzc1Jl
ZlB0ciBhbmQgY2xlYW4gdXAgdW5uZWNlc3NhcnkgdGFicyBhbmQgc3BhY2VzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJF
Zmw6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNQcm92aWRlckVmbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcklPUy5tbToKKyAgICAgICAgKFNPRlRfTElOS19DT05TVEFOVCk6CisgICAgICAgICgt
W1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgaW5pdFdpdGhTcGVlY2hTeW50aGVzaXplcjpdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBtYXBTcGVlY2hSYXRlVG9QbGF0
Zm9ybVJhdGU6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlYWtV
dHRlcmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgcGF1c2Vd
KToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciByZXN1bWVdKToKKyAgICAg
ICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBjYW5jZWxdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoU3ludGhlc2lzV3JhcHBlciBzcGVlY2hTeW50aGVzaXplcjpkaWRTdGFydFNwZWVjaFV0
dGVyYW5jZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBzcGVlY2hT
eW50aGVzaXplcjpkaWRGaW5pc2hTcGVlY2hVdHRlcmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3ludGhlc2l6ZXI6ZGlkUGF1c2VTcGVlY2hVdHRl
cmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3lu
dGhlc2l6ZXI6ZGlkQ29udGludWVTcGVlY2hVdHRlcmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3ludGhlc2l6ZXI6ZGlkQ2FuY2VsU3BlZWNoVXR0
ZXJhbmNlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWVjaFN5
bnRoZXNpemVyOndpbGxTcGVha1JhbmdlT2ZTcGVlY2hTdHJpbmc6dXR0ZXJhbmNlOl0pOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWspOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtUGFzdGVib2FyZDo6Z2V0UGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
OjpzZXRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1hYy5tbToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3Jh
cHBlciBpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hT
eW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hT
eW50aGVzaXNXcmFwcGVyIHBhdXNlXSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dy
YXBwZXIgcmVzdW1lXSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgY2Fu
Y2VsXSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3ludGhl
c2l6ZXI6ZGlkRmluaXNoU3BlYWtpbmc6XSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6ZGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVh
ayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6Y2Fu
Y2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJN
b2NrLmg6CisKIDIwMTYtMDctMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBIVE1MVGl0bGVFbGVtZW50LnRleHQgc2hvdWxkIG9ubHkgYWNjb3VudCBmb3IgZGly
ZWN0IGNoaWxkcmVuIFRleHQgbm9kZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5LmgKaW5kZXggNGI2Y2FlNDRkZDZlZWQ5MDNjMzNlZjczY2E4NDQ3ZDgzYTBj
NTY2ZC4uNjMwMDg1ZWZmYzE1M2E3Mjg0N2EyZGNkMGRmNjgwMWE0NzZmYWY3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTIwLDcgKzIwLDcg
QEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmbmRlZiBQYXN0ZWJvYXJkU3RyYXRlZ3lfaApA
QCAtNjAsMTEgKzYwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB1bmlxdWVOYW1l
KCkgPSAwOwogICAgIHZpcnR1YWwgQ29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwogICAgIHZpcnR1YWwgVVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSA9IDA7Ci0gICAgCisKICAgICB2aXJ0dWFsIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
PSAwOwogICAgIHZpcnR1YWwgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmly
dHVhbCBsb25nIGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwgY29uc3QgU3RyaW5n
JiB0b1Bhc3RlYm9hcmQpID0gMDsKLSAgICB2aXJ0dWFsIGxvbmcgc2V0QnVmZmVyRm9yVHlwZShQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIGxvbmcgc2V0QnVm
ZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBsb25nIHNldFBh
dGhuYW1lc0ZvclR5cGUoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVh
bCBsb25nIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDI5MTI4
NThmMGY3OWE2ZTNjNzU2ZmI4MWUzMTQyNDIwMDE5OGJiNzUuLjBiYjZlMmQyMGZjODA5MGI0YTk4
ZTZlOGZkYjM1OWIwNzkzZTI0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
ICNpZm5kZWYgUGxhdGZvcm1QYXN0ZWJvYXJkX2gKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtUGFzdGVib2FyZCgpOwogI2VuZGlmCiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyB1bmlxdWVOYW1lKCk7Ci0gICAgCisKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcyk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBhdGhuYW1l
c0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhv
ZHMgd2lsbCByZXR1cm4gMCBpZiBwYXN0ZWJvYXJkIG93bmVyc2hpcCBoYXMgYmVlbiB0YWtlbiBm
cm9tIHVzLgogICAgIFdFQkNPUkVfRVhQT1JUIGxvbmcgY29weShjb25zdCBTdHJpbmcmIGZyb21Q
YXN0ZWJvYXJkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBsb25nIHNldEJ1ZmZlckZvclR5cGUoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBsb25nIHNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBzZXRQ
YXRobmFtZXNGb3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIGxvbmcgc2V0U3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyLmgKaW5kZXggYjVkMTg2MGU4YWJkYmM5ZDNkNjc4MzdkNzIwY2JkNjc5YzFjYWZjNy4uNDhl
ZGEzZWQ5YmQwNDQ2NWI5ODlhNTQzMzY0ZDYzODkzMWZhYTI5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaApAQCAtNzEsMTMg
KzcxLDEzIEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTogV2UgaGF2ZSBtdWx0aXBsZSB2aXJ0dWFs
IGZ1bmN0aW9ucyBqdXN0IHNvIHdlIGNhbiBzdXBwb3J0IGEgbW9jayBmb3IgdGVzdGluZy4KICAg
ICAvLyBTZWVtcyB3YXN0ZWZ1bC4gV291bGQgYmUgbmljZSB0byBmaW5kIGEgYmV0dGVyIHdheS4K
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKCk7
Ci0gICAgCisKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2U+PiYgdm9pY2VMaXN0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKFBhc3NS
ZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAg
dmlydHVhbCB2b2lkIGNhbmNlbCgpOwotICAgIAorCiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplckNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zcGVlY2hTeW50aGVzaXplckNs
aWVudDsgfQogCiBwcm90ZWN0ZWQ6CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIG1fdm9pY2VMaXN0SXNJbml0aWFsaXplZDsKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50KiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xpZW50OwotICAgIAorCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXI+IG1fcGxh
dGZvcm1TcGVlY2hXcmFwcGVyOwogI2VuZGlmCkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmw+IG1f
cGxhdGZvcm1TcGVlY2hXcmFwcGVyOwogI2VuZGlmCiB9OwotICAgIAorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbi5oCmluZGV4IDFjNjgwZTMzZDVkYTM5NjU3Mzk3ZmNiZWVhZWJiMjM2NTgwN2JmNzUu
LmZjZWZkODY5YzJiMDk4NDAxODc3NTM1N2Q4NDE4MjEyOTVlMzBhMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb24uaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb24oKSB7IH0KIAogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVl
IGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gZGF0YSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNFcXVh
bChjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpIGNvbnN0ID0gMDsKIAog
ICAgIGVudW0gUGxhdGZvcm1UeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmNw
cAppbmRleCA4MmQxMWE2M2Y0ZWQwNGU1YzkzNjZlNmFkY2ExYWUwOWRmODQ0MDZhLi42MTk3YmE5
ZmI4MGNiYWUyODU2YzA4ZmQ5ODQ5NzNlMzcxNDhhOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lz
UHJvdmlkZXJFZmwuY3BwCkBAIC0xMzYsMTQgKzEzNiwxNCBAQCB2b2lkIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzUHJvdmlkZXJFZmw6OnJlc3VtZSgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsOjpzcGVhayhQYXNzUmVm
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCit2b2lkIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmw6OnNwZWFrKFJlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJiB1dHRlcmFuY2UpCiB7CiAgICAgaWYgKCFlbmdpbmVJ
bml0KCkgfHwgIXV0dGVyYW5jZSkgewogICAgICAgICBmaXJlU3BlZWNoRXZlbnQoU3BlZWNoRXJy
b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV91dHRlcmFuY2UgPSB1dHRlcmFu
Y2U7CisgICAgbV91dHRlcmFuY2UgPSBXVEZNb3ZlKHV0dGVyYW5jZSk7CiAgICAgU3RyaW5nIHZv
aWNlID0gdm9pY2VOYW1lKG1fdXR0ZXJhbmNlKTsKICAgICBlc3BlYWtfU2V0Vm9pY2VCeU5hbWUo
dm9pY2UudXRmOCgpLmRhdGEoKSk7CiAgICAgZXNwZWFrX1NldFBhcmFtZXRlcihlc3BlYWtSQVRF
LCBjb252ZXJ0UmF0ZVRvRXNwZWFrVmFsdWUobV91dHRlcmFuY2UtPnJhdGUoKSksIDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2lzUHJvdmlkZXJFZmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmgKaW5kZXggMDZkNWYxZTc3MWIzZWI1YzY0YjMyYzNk
ZjhhMmZhY2YwNWIxMmJmYS4uZDZiYTJlYzk0MmY3YzE5ZmZhOTdiYTFiMTM5MzFhNzZhZjJmMzIy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzUHJvdmlkZXJFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVWb2ljZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlPj4mKTsKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9pZCBy
ZXN1bWUoKTsKLSAgICB2b2lkIHNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+KTsKKyAgICB2b2lkIHNwZWFrKFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4mJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIHByaXZhdGU6CiAgICAgYm9v
bCBlbmdpbmVJbml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckVmbC5jcHAKaW5kZXggNDY3YzdlMjlkMTIw
ZmJlM2VkNWRkMWIwNTdiZWFjMDQwY2UzZDc2OC4uNmZkMGYyMWQ2ZTQ3NWZhYmY0ZWRhMzFlMjRj
MzBmNzg1Njk1NWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRWZsLmNwcApAQCAtNjMsMTAgKzYzLDEw
IEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVzdW1lKCkKICAgICBtX3BsYXRm
b3JtU3BlZWNoV3JhcHBlci0+cmVzdW1lKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcjo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4gdXR0ZXJhbmNlKQordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayhSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiYgdXR0ZXJhbmNlKQogewogICAg
IEFTU0VSVChtX3BsYXRmb3JtU3BlZWNoV3JhcHBlcik7Ci0gICAgbV9wbGF0Zm9ybVNwZWVjaFdy
YXBwZXItPnNwZWFrKHV0dGVyYW5jZSk7CisgICAgbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXItPnNw
ZWFrKFdURk1vdmUodXR0ZXJhbmNlKSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcjo6Y2FuY2VsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0KaW5kZXggNjY4YjE1MjVkNmJjZDI1
YmQyNWJlY2U2MzA3MDU3NjgzOGRhZTcwNy4uM2I4OGFkZmZkODUwNjVmZTlhMTRlMGM1NjI3OTVi
MzQwMjM1NjY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0KQEAgLTksNyArOSw3IEBACiAgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAorICoK
ICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAogICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQpAQCAtNTUsNyArNTUsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9u
LCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKICAgICBXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKiBtX3N5bnRoZXNpemVyT2JqZWN0OwogICAgIC8v
IEhvbGQgYSBSZWYgdG8gdGhlIHV0dGVyYW5jZSBzbyB0aGF0IGl0IHdvbid0IGRpc2FwcGVhciB1
bnRpbCB0aGUgc3ludGggaXMgZG9uZSB3aXRoIGl0LgogICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV91dHRlcmFuY2U7Ci0gICAgCisKICAgICBS
ZXRhaW5QdHI8QVZTcGVlY2hTeW50aGVzaXplcj4gbV9zeW50aGVzaXplcjsKIH0KIApAQCAtNzAs
NyArNzAsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVy
YW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKKwogICAgIG1fc3ludGhlc2l6ZXJP
YmplY3QgPSBzeW50aGVzaXplcjsKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTgzLDcgKzgzLDcg
QEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VNYXhp
bXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgICAgIHJhdGUgKj0gQVZTcGVlY2hVdHRlcmFuY2VE
ZWZhdWx0U3BlZWNoUmF0ZTsKICAgICBlbHNlCiAgICAgICAgIHJhdGUgPSBBVlNwZWVjaFV0dGVy
YW5jZURlZmF1bHRTcGVlY2hSYXRlICsgKChyYXRlIC0gMSkgKiAoQVZTcGVlY2hVdHRlcmFuY2VN
YXhpbXVtU3BlZWNoUmF0ZSAtIEFWU3BlZWNoVXR0ZXJhbmNlRGVmYXVsdFNwZWVjaFJhdGUpKTsK
LSAgICAKKwogICAgIHJldHVybiByYXRlOwogfQogCkBAIC05MiwxMCArOTIsMTAgQEAgU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNo
UmF0ZSwgZmxvYXQpCiAgICAgLy8gV2hlbiBzcGVhayBpcyBjYWxsZWQgd2Ugc2hvdWxkIG5vdCBo
YXZlIGFuIGV4aXN0aW5nIHNwZWVjaCB1dHRlcmFuY2Ugb3V0c3RhbmRpbmcuCiAgICAgQVNTRVJU
KCFtX3V0dGVyYW5jZSk7CiAgICAgQVNTRVJUKHV0dGVyYW5jZSk7Ci0gICAgCisKICAgICBpZiAo
IXV0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAgICAgaWYgKCFtX3N5bnRoZXNpemVyKSB7CiAgICAgICAgIG1fc3ludGhl
c2l6ZXIgPSBhZG9wdE5TKFthbGxvY0FWU3BlZWNoU3ludGhlc2l6ZXJJbnN0YW5jZSgpIGluaXRd
KTsKQEAgLTExMyw3ICsxMTMsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBB
VlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKICAgICAgICAgICAgIHZv
aWNlTGFuZ3VhZ2UgPSB1dHRlcmFuY2UtPmxhbmcoKTsKICAgICB9IGVsc2UKICAgICAgICAgdm9p
Y2VMYW5ndWFnZSA9IHV0dGVyYW5jZS0+dm9pY2UoKS0+bGFuZygpOwotICAgIAorCiAgICAgQVZT
cGVlY2hTeW50aGVzaXNWb2ljZSAqYXZWb2ljZSA9IG5pbDsKICAgICBpZiAodm9pY2VMYW5ndWFn
ZSkKICAgICAgICAgYXZWb2ljZSA9IFtBVlNwZWVjaFN5bnRoZXNpc1ZvaWNlQ2xhc3Mgdm9pY2VX
aXRoTGFuZ3VhZ2U6dm9pY2VMYW5ndWFnZV07CkBAIC0xMjUsNyArMTI1LDcgQEAgU09GVF9MSU5L
X0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0
ZSwgZmxvYXQpCiAgICAgW2F2VXR0ZXJhbmNlIHNldFBpdGNoTXVsdGlwbGllcjp1dHRlcmFuY2Ut
PnBpdGNoKCldOwogICAgIFthdlV0dGVyYW5jZSBzZXRWb2ljZTphdlZvaWNlXTsKICAgICBtX3V0
dGVyYW5jZSA9IHV0dGVyYW5jZTsKLSAgICAKKwogICAgIFttX3N5bnRoZXNpemVyIHNwZWFrVXR0
ZXJhbmNlOmF2VXR0ZXJhbmNlXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CkBA
IC0xMzQsNyArMTM0LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVl
Y2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiB7CiAgICAgaWYgKCFtX3V0dGVy
YW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiAgICAgW21fc3ludGhlc2l6ZXIgcGF1c2VTcGVha2luZ0F0Qm91bmRhcnk6QVZTcGVl
Y2hCb3VuZGFyeUltbWVkaWF0ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpAQCAt
MTQ0LDcgKzE0NCw3IEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNo
VXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQogewogICAgIGlmICghbV91dHRlcmFu
Y2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwogICAgIFttX3N5bnRoZXNpemVyIGNvbnRpbnVlU3BlYWtpbmddOwogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKQEAgLTE1NCw3ICsxNTQsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQo
QVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkK
IHsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBbbV9zeW50aGVzaXplciBzdG9wU3BlYWtp
bmdBdEJvdW5kYXJ5OkFWU3BlZWNoQm91bmRhcnlJbW1lZGlhdGVdOwogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKQEAgLTE2Niw3ICsxNjYsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZG
b3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKICAg
ICBVTlVTRURfUEFSQU0odXR0ZXJhbmNlKTsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICBtX3N5bnRoZXNpemVyT2JqZWN0LT5jbGllbnQoKS0+ZGlk
U3RhcnRTcGVha2luZyhtX3V0dGVyYW5jZSk7CiB9CiAKQEAgLTE3NiwxMSArMTc2LDExIEBAIFNP
RlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNw
ZWVjaFJhdGUsIGZsb2F0KQogICAgIFVOVVNFRF9QQVJBTSh1dHRlcmFuY2UpOwogICAgIGlmICgh
bV91dHRlcmFuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vIENsZWFyIHRoZSBt
X3V0dGVyYW5jZSB2YXJpYWJsZSBpbiBjYXNlIGZpbmlzaCBzcGVha2luZyBraWNrcyBvZmYgYSBu
ZXcgc3BlYWtpbmcgam9iIGltbWVkaWF0ZWx5LgogICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gcGxhdGZvcm1VdHRlcmFuY2UgPSBtX3V0dGVyYW5j
ZTsKICAgICBtX3V0dGVyYW5jZSA9IG51bGxwdHI7Ci0gICAgCisKICAgICBtX3N5bnRoZXNpemVy
T2JqZWN0LT5jbGllbnQoKS0+ZGlkRmluaXNoU3BlYWtpbmcocGxhdGZvcm1VdHRlcmFuY2UpOwog
fQogCkBAIC0xOTAsNyArMTkwLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwg
QVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgVU5VU0VEX1BB
UkFNKHV0dGVyYW5jZSk7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwot
ICAgIAorCiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xpZW50KCktPmRpZFBhdXNlU3BlYWtp
bmcobV91dHRlcmFuY2UpOwogfQogCkBAIC0yMDAsNyArMjAwLDcgQEAgU09GVF9MSU5LX0NPTlNU
QU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxv
YXQpCiAgICAgVU5VU0VEX1BBUkFNKHV0dGVyYW5jZSk7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xpZW50
KCktPmRpZFJlc3VtZVNwZWFraW5nKG1fdXR0ZXJhbmNlKTsKIH0KIApAQCAtMjEwLDExICsyMTAs
MTEgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VN
YXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgVU5VU0VEX1BBUkFNKHV0dGVyYW5jZSk7CiAg
ICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgLy8gQ2xl
YXIgdGhlIG1fdXR0ZXJhbmNlIHZhcmlhYmxlIGluIGNhc2UgZmluaXNoIHNwZWFraW5nIGtpY2tz
IG9mZiBhIG5ldyBzcGVha2luZyBqb2IgaW1tZWRpYXRlbHkuCiAgICAgUmVmUHRyPFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBwbGF0Zm9ybVV0dGVyYW5jZSA9IG1f
dXR0ZXJhbmNlOwogICAgIG1fdXR0ZXJhbmNlID0gbnVsbHB0cjsKLSAgICAKKwogICAgIG1fc3lu
dGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRGaW5pc2hTcGVha2luZyhwbGF0Zm9ybVV0dGVy
YW5jZSk7CiB9CiAKQEAgLTIyMiwxMCArMjIyLDEwIEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZv
dW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQogewog
ICAgIFVOVVNFRF9QQVJBTShzeW50aGVzaXplcik7CiAgICAgVU5VU0VEX1BBUkFNKHV0dGVyYW5j
ZSk7Ci0gICAgCisKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47Ci0gICAg
CisKICAgICAvLyBpT1Mgb25seSBzdXBwb3J0cyB3b3JkIGJvdW5kYXJpZXMuCiAgICAgbV9zeW50
aGVzaXplck9iamVjdC0+Y2xpZW50KCktPmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChtX3V0dGVyYW5j
ZSwgV2ViQ29yZTo6U3BlZWNoV29yZEJvdW5kYXJ5LCBjaGFyYWN0ZXJSYW5nZS5sb2NhdGlvbik7
CiB9CkBAIC0yNjYsMTEgKzI2NiwxMSBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6
OnJlc3VtZSgpCiAgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIHJlc3VtZV07CiB9
CiAKLXZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQordm9pZCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyOjpzcGVhayhSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U+JiYgdXR0ZXJhbmNlKQogewogICAgIGlmICghbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIp
CiAgICAgICAgIG1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyID0gYWRvcHROUyhbW1dlYlNwZWVjaFN5
bnRoZXNpc1dyYXBwZXIgYWxsb2NdIGluaXRXaXRoU3BlZWNoU3ludGhlc2l6ZXI6dGhpc10pOwot
ICAgIAorCiAgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIHNwZWFrVXR0ZXJhbmNl
OnV0dGVyYW5jZS5nZXQoKV07CiB9CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCgpCiB7CiAgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFw
cGVyLmdldCgpIGNhbmNlbF07CiB9Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggYWVjNGE2OTQ0
MGVmMGQ2NGJlNmEyZjc4Yjk2ZjBmN2Q0OTQ3MDQ4Ny4uMTBkYjNkYmJiMjMzYTkzNThiMzRiYjk4
MTBkMzFmODkwZTM2OTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC00MCw3ICs0MCw3IEBAIFBsYXRmb3JtUGFz
dGVib2FyZDo6UGxhdGZvcm1QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVz
KQogewogICAgIE5TQXJyYXkgKnBhc3RlYm9hcmRUeXBlcyA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkg
dHlwZXNdOwotICAgIAorCiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3Bhc3RlYm9h
cmRUeXBlcyBjb3VudF07IGkrKykKICAgICAgICAgdHlwZXMuYXBwZW5kKFtwYXN0ZWJvYXJkVHlw
ZXMgb2JqZWN0QXRJbmRleDppXSk7CiB9CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMs
IGNvbnN0IFN0CiAgICAgTlNBcnJheSogcGF0aHMgPSBbbV9wYXN0ZWJvYXJkLmdldCgpIHByb3Bl
cnR5TGlzdEZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmIChbcGF0aHMgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgewogICAgICAgICBwYXRobmFtZXMuYXBwZW5kKChOU1N0
cmluZyAqKXBhdGhzKTsKLSAgICAgICAgcmV0dXJuOyAgICAgICAgCisgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3BhdGhzIGNvdW50XTsgaSsr
KQogICAgICAgICBwYXRobmFtZXMuYXBwZW5kKFtwYXRocyBvYmplY3RBdEluZGV4OmldKTsKQEAg
LTg1LDE0ICs4NSwxNCBAQCBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1bmlxdWVOYW1lKCkK
IENvbG9yIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29sb3IoKQogewogICAgIE5TQ29sb3IgKmNvbG9y
ID0gW05TQ29sb3IgY29sb3JGcm9tUGFzdGVib2FyZDptX3Bhc3RlYm9hcmQuZ2V0KCldOwotICAg
IAotICAgIC8vIFRoZSBjb2xvciBtYXkgbm90IGJlIGluIGFuIFJHQiBjb2xvcnNwYWNlLiBUaGlz
IGNvbW1vbmx5IG9jY3VycyB3aGVuIGEgY29sb3IgaXMgCisKKyAgICAvLyBUaGUgY29sb3IgbWF5
IG5vdCBiZSBpbiBhbiBSR0IgY29sb3JzcGFjZS4gVGhpcyBjb21tb25seSBvY2N1cnMgd2hlbiBh
IGNvbG9yIGlzCiAgICAgLy8gZHJhZ2dlZCBmcm9tIHRoZSBOU0NvbG9yUGFuZWwgZ3JheXNjYWxl
IHBpY2tlci4KICAgICBpZiAoW1tjb2xvciBjb2xvclNwYWNlXSBjb2xvclNwYWNlTW9kZWxdICE9
IE5TUkdCQ29sb3JTcGFjZU1vZGVsKQogICAgICAgICBjb2xvciA9IFtjb2xvciBjb2xvclVzaW5n
Q29sb3JTcGFjZU5hbWU6TlNDYWxpYnJhdGVkUkdCQ29sb3JTcGFjZV07Ci0gICAgCi0gICAgcmV0
dXJuIG1ha2VSR0JBKChpbnQpKFtjb2xvciByZWRDb21wb25lbnRdICogMjU1LjAgKyAwLjUpLCAo
aW50KShbY29sb3IgZ3JlZW5Db21wb25lbnRdICogMjU1LjAgKyAwLjUpLCAKLSAgICAgICAgICAg
ICAgICAgICAgKGludCkoW2NvbG9yIGJsdWVDb21wb25lbnRdICogMjU1LjAgKyAwLjUpLCAoaW50
KShbY29sb3IgYWxwaGFDb21wb25lbnRdICogMjU1LjAgKyAwLjUpKTsgICAgCisKKyAgICByZXR1
cm4gbWFrZVJHQkEoKGludCkoW2NvbG9yIHJlZENvbXBvbmVudF0gKiAyNTUuMCArIDAuNSksIChp
bnQpKFtjb2xvciBncmVlbkNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSksCisgICAgICAgIChpbnQp
KFtjb2xvciBibHVlQ29tcG9uZW50XSAqIDI1NS4wICsgMC41KSwgKGludCkoW2NvbG9yIGFscGhh
Q29tcG9uZW50XSAqIDI1NS4wICsgMC41KSk7CiB9CiAKIFVSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnVybCgpCkBAIC0xMDQsMTMgKzEwNCwxMyBAQCBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29w
eShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkKQogewogICAgIE5TUGFzdGVib2FyZCogcGFz
dGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOmZyb21QYXN0ZWJvYXJk
XTsKICAgICBOU0FycmF5KiB0eXBlcyA9IFtwYXN0ZWJvYXJkIHR5cGVzXTsKLSAgICAKKwogICAg
IFttX3Bhc3RlYm9hcmQuZ2V0KCkgYWRkVHlwZXM6dHlwZXMgb3duZXI6bmlsXTsKICAgICBmb3Ig
KE5TVUludGVnZXIgaSA9IDA7IGkgPCBbdHlwZXMgY291bnRdOyBpKyspIHsKICAgICAgICAgTlNT
dHJpbmcqIHR5cGUgPSBbdHlwZXMgb2JqZWN0QXRJbmRleDppXTsKICAgICAgICAgaWYgKCFbbV9w
YXN0ZWJvYXJkLmdldCgpIHNldERhdGE6W3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6dHlwZV0gZm9y
VHlwZTp0eXBlXSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0gICAgCisgICAgfQogICAg
IHJldHVybiBjaGFuZ2VDb3VudCgpOwogfQogCkBAIC0xMzUsNyArMTM1LDcgQEAgbG9uZyBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMpCiAgICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQuZ2V0KCkgZGVjbGFyZVR5cGVzOnR5cGVz
LmdldCgpIG93bmVyOm5pbF07CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZm
ZXJGb3JUeXBlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpCitsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlw
ZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsK
ICAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBi
dWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVd
OwogICAgIGlmICghZGlkV3JpdGVEYXRhKQpAQCAtMTQ1LDcgKzE0NSw3IEBAIGxvbmcgUGxhdGZv
cm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIsIGNvbnN0CiAKIGxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRQYXRobmFtZXNGb3JU
eXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpCiB7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBwYXRocyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOyAgICAKKyAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+IHBhdGhzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXRobmFtZXMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIFtwYXRocy5nZXQoKSBhZGRPYmplY3Q6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnBh
dGhuYW1lc1tpXV1dOwogICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZC5nZXQo
KSBzZXRQcm9wZXJ0eUxpc3Q6cGF0aHMuZ2V0KCkgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTWFjLm1tCmluZGV4IGUyZWJkMWI3ZThjNjg1Zjg5ODZlNzRhODY0OWM3NWM4
Yzk3MDM0NDAuLmM5NGE0ODliMjEwMDdjY2E3NmIxMWVlMmE3NzYwODVjNGQyNzkxNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyTWFjLm1tCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZS5oIgogI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKICNpbmNsdWRlIDxBcHBLaXQvTlNTcGVlY2hTeW50aGVzaXplci5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgRU5BQkxF
KFNQRUVDSF9TWU5USEVTSVMpCkBAIC00MCw3ICszOSw3IEBACiAgICAgV2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplciogbV9zeW50aGVzaXplck9iamVjdDsKICAgICAvLyBIb2xkIGEg
UmVmIHRvIHRoZSB1dHRlcmFuY2Ugc28gdGhhdCBpdCB3b24ndCBkaXNhcHBlYXIgdW50aWwgdGhl
IHN5bnRoIGlzIGRvbmUgd2l0aCBpdC4KICAgICBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSogbV91dHRlcmFuY2U7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8TlNTcGVl
Y2hTeW50aGVzaXplcj4gbV9zeW50aGVzaXplcjsKICAgICBmbG9hdCBtX2Jhc2VQaXRjaDsKIH0K
QEAgLTU2LDcgKzU1LDcgQEAKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKKwogICAgIG1fc3ludGhlc2l6ZXJPYmplY3QgPSBzeW50
aGVzaXplcjsKICAgICBbc2VsZiB1cGRhdGVCYXNlUGl0Y2hGb3JTeW50aGVzaXplcl07CiAgICAg
cmV0dXJuIHNlbGY7CkBAIC04OCwxNiArODcsMTYgQEAKICAgICAvLyBXaGVuIHNwZWFrIGlzIGNh
bGxlZCB3ZSBzaG91bGQgbm90IGhhdmUgYW4gZXhpc3Rpbmcgc3BlZWNoIHV0dGVyYW5jZSBvdXRz
dGFuZGluZy4KICAgICBBU1NFUlQoIW1fdXR0ZXJhbmNlKTsKICAgICBBU1NFUlQodXR0ZXJhbmNl
KTsKLSAgICAKKwogICAgIGlmICghbV9zeW50aGVzaXplcikgewogICAgICAgICBtX3N5bnRoZXNp
emVyID0gYWRvcHROUyhbW05TU3BlZWNoU3ludGhlc2l6ZXIgYWxsb2NdIGluaXRXaXRoVm9pY2U6
bmlsXSk7CiAgICAgICAgIFttX3N5bnRoZXNpemVyIHNldERlbGVnYXRlOnNlbGZdOwogICAgIH0K
LSAgICAKKwogICAgIC8vIEZpbmQgaWYgd2Ugc2hvdWxkIHVzZSBhIHNwZWNpZmljIHZvaWNlIGJh
c2VkIG9uIHRoZSB2b2ljZVVSSSBpbiB1dHRlcmFuY2UuCiAgICAgLy8gT3RoZXJ3aXNlLCBmaW5k
IHRoZSB2b2ljZSB0aGF0IG1hdGNoZXMgdGhlIGxhbmd1YWdlLiBUaGUgTWFjIGRvZXNuJ3QgaGF2
ZSBhIGRlZmF1bHQgdm9pY2UgcGVyIGxhbmd1YWdlLCBzbyB0aGUgZmlyc3QKICAgICAvLyBvbmUg
d2lsbCBoYXZlIHRvIGRvLgotICAgIAorCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZSogdXR0ZXJhbmNlVm9pY2UgPSB1dHRlcmFuY2UtPnZvaWNlKCk7CiAgICAgLy8g
SWYgbm8gdm9pY2Ugd2FzIHNwZWNpZmllZCwgdHJ5IHRvIG1hdGNoIGJ5IGxhbmd1YWdlLgogICAg
IGlmICghdXR0ZXJhbmNlVm9pY2UgJiYgIXV0dGVyYW5jZS0+bGFuZygpLmlzRW1wdHkoKSkgewpA
QCAtMTA5LDcgKzEwOCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAg
CisKICAgICBOU1N0cmluZyAqdm9pY2VVUkkgPSBuaWw7CiAgICAgaWYgKHV0dGVyYW5jZVZvaWNl
KQogICAgICAgICB2b2ljZVVSSSA9IHV0dGVyYW5jZVZvaWNlLT52b2ljZVVSSSgpOwpAQCAtMTI0
LDE0ICsxMjMsMTQgQEAKICAgICAgICAgLy8gUmVzZXQgdGhlIGJhc2UgcGl0Y2ggd2hlbmV2ZXIg
d2UgY2hhbmdlIHZvaWNlcy4KICAgICAgICAgdXBkYXRlUGl0Y2ggPSBZRVM7CiAgICAgfQotICAg
IAorCiAgICAgaWYgKG1fYmFzZVBpdGNoID09IDAgfHwgdXBkYXRlUGl0Y2gpCi0gICAgICAgIFtz
ZWxmIHVwZGF0ZUJhc2VQaXRjaEZvclN5bnRoZXNpemVyXTsgICAgCi0gICAgCisgICAgICAgIFtz
ZWxmIHVwZGF0ZUJhc2VQaXRjaEZvclN5bnRoZXNpemVyXTsKKwogICAgIFttX3N5bnRoZXNpemVy
IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OltzZWxmIGNvbnZlcnRQaXRjaFRv
TlNTcGVlY2hWYWx1ZTp1dHRlcmFuY2UtPnBpdGNoKCldXSBmb3JQcm9wZXJ0eTpOU1NwZWVjaFBp
dGNoQmFzZVByb3BlcnR5IGVycm9yOm5pbF07CiAgICAgW21fc3ludGhlc2l6ZXIgc2V0UmF0ZTpb
c2VsZiBjb252ZXJ0UmF0ZVRvV1BNOnV0dGVyYW5jZS0+cmF0ZSgpXV07CiAgICAgW21fc3ludGhl
c2l6ZXIgc2V0Vm9sdW1lOnV0dGVyYW5jZS0+dm9sdW1lKCldOwotICAgIAorCiAgICAgbV91dHRl
cmFuY2UgPSB1dHRlcmFuY2U7CiAgICAgW21fc3ludGhlc2l6ZXIgc3RhcnRTcGVha2luZ1N0cmlu
Zzp1dHRlcmFuY2UtPnRleHQoKV07CiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xpZW50KCkt
PmRpZFN0YXJ0U3BlYWtpbmcodXR0ZXJhbmNlKTsKQEAgLTE0MSw3ICsxNDAsNyBAQAogewogICAg
IGlmICghbV91dHRlcmFuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIFttX3N5bnRo
ZXNpemVyIHBhdXNlU3BlYWtpbmdBdEJvdW5kYXJ5Ok5TU3BlZWNoSW1tZWRpYXRlQm91bmRhcnld
OwogICAgIG1fc3ludGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRQYXVzZVNwZWFraW5nKG1f
dXR0ZXJhbmNlKTsKIH0KQEAgLTE1MCw3ICsxNDksNyBAQAogewogICAgIGlmICghbV91dHRlcmFu
Y2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIFttX3N5bnRoZXNpemVyIGNvbnRpbnVl
U3BlYWtpbmddOwogICAgIG1fc3ludGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRSZXN1bWVT
cGVha2luZyhtX3V0dGVyYW5jZSk7CiB9CkBAIC0xNTksNyArMTU4LDcgQEAKIHsKICAgICBpZiAo
IW1fdXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBbbV9zeW50aGVzaXpl
ciBzdG9wU3BlYWtpbmdBdEJvdW5kYXJ5Ok5TU3BlZWNoSW1tZWRpYXRlQm91bmRhcnldOwogICAg
IG1fc3ludGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5zcGVha2luZ0Vycm9yT2NjdXJyZWQobV91
dHRlcmFuY2UpOwogICAgIG1fdXR0ZXJhbmNlID0gMDsKQEAgLTE3NiwxMyArMTc1LDEzIEBACiB7
CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgVU5V
U0VEX1BBUkFNKHNlbmRlcik7Ci0gICAgCisKICAgICAvLyBDbGVhciB0aGUgbV91dHRlcmFuY2Ug
dmFyaWFibGUgaW4gY2FzZSBmaW5pc2ggc3BlYWtpbmcga2lja3Mgb2ZmIGEgbmV3IHNwZWFraW5n
IGpvYiBpbW1lZGlhdGVseS4KICAgICBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZSogdXR0ZXJhbmNlID0gbV91dHRlcmFuY2U7CiAgICAgbV91dHRlcmFuY2UgPSAwOwot
ICAgIAorCiAgICAgaWYgKGZpbmlzaGVkU3BlYWtpbmcpCiAgICAgICAgIG1fc3ludGhlc2l6ZXJP
YmplY3QtPmNsaWVudCgpLT5kaWRGaW5pc2hTcGVha2luZyh1dHRlcmFuY2UpOwogICAgIGVsc2UK
QEAgLTIyMywyMyArMjIyLDIzIEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5p
dGlhbGl6ZVZvaWNlTGlzdCgpCiAgICAgZm9yIChOU1VJbnRlZ2VyIGsgPSAwOyBrIDwgY291bnQ7
IGsrKykgewogICAgICAgICBOU1N0cmluZyAqdm9pY2VOYW1lID0gW2F2YWlsYWJsZVZvaWNlcyBv
YmplY3RBdEluZGV4OmtdOwogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbTlNT
cGVlY2hTeW50aGVzaXplciBhdHRyaWJ1dGVzRm9yVm9pY2U6dm9pY2VOYW1lXTsKLSAgICAgICAg
CisKICAgICAgICAgTlNTdHJpbmcgKnZvaWNlVVJJID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5
Ok5TVm9pY2VJZGVudGlmaWVyXTsKICAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBbYXR0cmlidXRl
cyBvYmplY3RGb3JLZXk6TlNWb2ljZU5hbWVdOwogICAgICAgICBOU1N0cmluZyAqbGFuZ3VhZ2Ug
PSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNWb2ljZUxvY2FsZUlkZW50aWZpZXJdOwogICAg
ICAgICBOU0xvY2FsZSAqbG9jYWxlID0gW1tOU0xvY2FsZSBhbGxvY10gaW5pdFdpdGhMb2NhbGVJ
ZGVudGlmaWVyOmxhbmd1YWdlXTsKICAgICAgICAgTlNTdHJpbmcgKmRlZmF1bHRWb2ljZVVSSSA9
IHdrU3BlZWNoU3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZShsb2Nh
bGUpOwogICAgICAgICBbbG9jYWxlIHJlbGVhc2VdOwotICAgICAgICAKKwogICAgICAgICAvLyBD
aGFuZ2UgdG8gQkNQLTQ3IGZvcm1hdCBhcyBkZWZpbmVkIGJ5IHNwZWMuCiAgICAgICAgIGxhbmd1
YWdlID0gW2xhbmd1YWdlIHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIl8i
IHdpdGhTdHJpbmc6QCItIl07Ci0gICAgICAgIAorCiAgICAgICAgIGJvb2wgaXNEZWZhdWx0ID0g
W2RlZmF1bHRWb2ljZVVSSSBpc0VxdWFsVG9TdHJpbmc6dm9pY2VVUkldOwotICAgICAgICAKKwog
ICAgICAgICBtX3ZvaWNlTGlzdC5hcHBlbmQoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6
Y3JlYXRlKHZvaWNlVVJJLCBuYW1lLCBsYW5ndWFnZSwgdHJ1ZSwgaXNEZWZhdWx0KSk7CiAgICAg
fQogfQotICAgIAorCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnBhdXNlKCkKIHsK
ICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgcGF1c2VdOwpAQCAtMjQ5LDEyICsy
NDgsMTIgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQogewogICAg
IFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSByZXN1bWVdOwogfQotICAgIAotdm9pZCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcjo6c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYm
IHV0dGVyYW5jZSkKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyKQogICAgICAg
ICBtX3BsYXRmb3JtU3BlZWNoV3JhcHBlciA9IGFkb3B0TlMoW1tXZWJTcGVlY2hTeW50aGVzaXNX
cmFwcGVyIGFsbG9jXSBpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOnRoaXNdKTsKLSAgICAKKwog
ICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBzcGVha1V0dGVyYW5jZTp1dHRlcmFu
Y2UuZ2V0KCldOwogfQogCkBAIC0yNjIsNyArMjYxLDcgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyOjpjYW5jZWwoKQogewogICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQo
KSBjYW5jZWxdOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFj
LmgKaW5kZXggMWJjZjg3YWQ4YWJlYzUyY2YzZTNiY2Q3M2JkOTM3MGQyZmVlMjBlYS4uMjIzODZi
NWFmMzY5NWQyNzI0MTc2Y2M0ZGNlZGE2OTE5NjFlNGUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uTWFjLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+IGNyZWF0ZShpZCk7CiAKICAgICBKU0M6
OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdCBvdmVycmlkZTsKLSAg
ICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBkYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzRXF1
YWwoY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKSBjb25zdCBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCmluZGV4IDY5YWQ0MTdkMDJi
MjM1Zjg5YWRkOTdjMmFjNmEzNDc4YmYwNWVmYWUuLjMwY2JkNWJkYWIzZGMyMzY0ODkyMGM5NTBh
NjIyNjMyOWUyNDQxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0KQEAg
LTcyLDcgKzcyLDcgQEAgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBTZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6Y3JlYXQKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYyhuYXRpdmVWYWx1ZSkp
OwogfQogCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbk1hYzo6ZGF0YSgpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjOjpkYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KQEAgLTEzNSwxMCArMTM1LDEwIEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0
aFZhbHVlSW5Db250ZXh0KGlkIHZhbHVlLCBKU0NvbnRleHQgKmNvbnRleHQpCiAKICAgICBpZiAo
W3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQogICAgICAgICByZXR1cm4ganNW
YWx1ZVdpdGhEYXRhSW5Db250ZXh0KHZhbHVlLCBjb250ZXh0KTsKLSAgICAKKwogICAgIGlmIChb
dmFsdWUgaXNLaW5kT2ZDbGFzczpbQVZNZXRhZGF0YUl0ZW0gY2xhc3NdXSkKICAgICAgICAgcmV0
dXJuIGpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQodmFsdWUsIGNvbnRleHQpOwot
ICAgIAorCiAgICAgcmV0dXJuIG5pbDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcApp
bmRleCBjMGI0ZGZhMmM2ZjIyNDRlYWE0ZGE4ODY0ZDVjNGIzMjYzMjU5MmRjLi5mYzM3NjczMjYw
NTM2Y2I0MmZhY2VlNzBjZThiNThkZTlhNmEzYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2Nr
LmNwcApAQCAtMzYsNyArMzYsNyBAQCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2soUGxhdGZvcm1TcGVlY2hTeW50aAogICAgICwgbV9z
cGVha2luZ0ZpbmlzaGVkVGltZXIoKnRoaXMsICZQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
azo6c3BlYWtpbmdGaW5pc2hlZCkKIHsKIH0KLSAgICAKKwogUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2s6On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaygpCiB7CiB9CkBAIC00Niwx
MCArNDYsMTAgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtpbmdG
aW5pc2hlZCgpCiAgICAgQVNTRVJUKG1fdXR0ZXJhbmNlLmdldCgpKTsKICAgICBSZWZQdHI8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHByb3RlY3QobV91dHRlcmFuY2UpOwogICAg
IG1fdXR0ZXJhbmNlID0gbnVsbHB0cjsKLSAgICAKKwogICAgIGNsaWVudCgpLT5kaWRGaW5pc2hT
cGVha2luZyhwcm90ZWN0KTsKIH0KLSAgICAKKwogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jazo6aW5pdGlhbGl6ZVZvaWNlTGlzdCgpCiB7CiAgICAgbV92b2ljZUxpc3QuYXBwZW5k
KFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShTdHJpbmcoIm1vY2sudm9pY2Uu
YnJ1Y2UiKSwgU3RyaW5nKCJicnVjZSIpLCBTdHJpbmcoImVuLVVTIiksIHRydWUsIHRydWUpKTsK
QEAgLTU3LDI1ICs1NywyNSBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpp
bml0aWFsaXplVm9pY2VMaXN0KCkKICAgICBtX3ZvaWNlTGlzdC5hcHBlbmQoUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKFN0cmluZygibW9jay52b2ljZS5sb2dhbiIpLCBTdHJp
bmcoImxvZ2FuIiksIFN0cmluZygiZnItQ0EiKSwgdHJ1ZSwgdHJ1ZSkpOwogfQogCi12b2lkIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCit2b2lkIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJNb2NrOjpzcGVhayhSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+JiYgdXR0ZXJhbmNlKQogewogICAgIEFTU0VSVCghbV91dHRlcmFuY2UpOwotICAgIG1fdXR0
ZXJhbmNlID0gdXR0ZXJhbmNlOworICAgIG1fdXR0ZXJhbmNlID0gV1RGTW92ZSh1dHRlcmFuY2Up
OwogICAgIGNsaWVudCgpLT5kaWRTdGFydFNwZWFraW5nKG1fdXR0ZXJhbmNlKTsKLSAgICAKKwog
ICAgIC8vIEZpcmUgYSBmYWtlIHdvcmQgYW5kIHRoZW4gc2VudGVuY2UgYm91bmRhcnkgZXZlbnQu
CiAgICAgY2xpZW50KCktPmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChtX3V0dGVyYW5jZSwgU3BlZWNo
V29yZEJvdW5kYXJ5LCAwKTsKICAgICBjbGllbnQoKS0+Ym91bmRhcnlFdmVudE9jY3VycmVkKG1f
dXR0ZXJhbmNlLCBTcGVlY2hTZW50ZW5jZUJvdW5kYXJ5LCBtX3V0dGVyYW5jZS0+dGV4dCgpLmxl
bmd0aCgpKTsKLSAgICAKKwogICAgIC8vIEdpdmUgdGhlIGZha2Ugc3BlZWNoIGpvYiBzb21lIHRp
bWUgc28gdGhhdCBwYXVzZSBhbmQgb3RoZXIgZnVuY3Rpb25zIGhhdmUgdGltZSB0byBiZSBjYWxs
ZWQuCiAgICAgbV9zcGVha2luZ0ZpbmlzaGVkVGltZXIuc3RhcnRPbmVTaG90KC4xKTsKIH0KLSAg
ICAKKwogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6Y2FuY2VsKCkKIHsKICAg
ICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBtX3NwZWFr
aW5nRmluaXNoZWRUaW1lci5zdG9wKCk7CiAgICAgY2xpZW50KCktPnNwZWFraW5nRXJyb3JPY2N1
cnJlZChtX3V0dGVyYW5jZSk7CiAgICAgbV91dHRlcmFuY2UgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
TW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTW9jay5oCmluZGV4IDhkOTc0ODhiMDJkMGQyMTNiODU1NmU1MzM0YjU3YTI4YjI5Mzdl
MDMuLjk5MjFmYmQ0YTMxMjI2NTI2NjljNGRkMzJjYWJlOGE0MTMxOWVmNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1v
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJNb2NrLmgKQEAgLTMyLDI1ICszMiwyNSBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2sgOiBwdWJsaWMgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2soUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplckNsaWVudCopOwogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2soKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOworICAgIHZpcnR1YWwgdm9pZCBzcGVhayhSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBw
YXVzZSgpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsKCk7Ci0gICAgCisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVWb2lj
ZUxpc3QoKTsKICAgICB2b2lkIHNwZWFraW5nRmluaXNoZWQoKTsKLSAgICAKKwogICAgIFRpbWVy
IG1fc3BlYWtpbmdGaW5pc2hlZFRpbWVyOwogICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4gbV91dHRlcmFuY2U7CiB9OwotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283258</attachid>
            <date>2016-07-09 06:30:02 -0700</date>
            <delta_ts>2016-07-10 23:33:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159548-20160709222923.patch</filename>
            <type>text/plain</type>
            <size>42885</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWEwMzhkZmEzNTcwM2Q4
ZDQ5ZDBhMGY4ZDExNjU2OTMwMWU3Y2NiMS4uMjA3NjI4OTE5ZWNiMWMwNjA2YWMzYzRlNzNlMGQ2
Yjc1YTFkNWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE2LTA3LTA5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIHBsYXRmb3JtL2VmbCBhbmQgcGxhdGZvcm0vbWFjIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGFsbCB1c2Ugb2YgUGFzc1Jl
ZlB0ciBhbmQgY2xlYW4gdXAgdW5uZWNlc3NhcnkgdGFicyBhbmQgc3BhY2VzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJF
Zmw6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNQcm92aWRlckVmbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcklPUy5tbToKKyAgICAgICAgKFNPRlRfTElOS19DT05TVEFOVCk6CisgICAgICAgICgt
W1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgaW5pdFdpdGhTcGVlY2hTeW50aGVzaXplcjpdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBtYXBTcGVlY2hSYXRlVG9QbGF0
Zm9ybVJhdGU6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlYWtV
dHRlcmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgcGF1c2Vd
KToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciByZXN1bWVdKToKKyAgICAg
ICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBjYW5jZWxdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoU3ludGhlc2lzV3JhcHBlciBzcGVlY2hTeW50aGVzaXplcjpkaWRTdGFydFNwZWVjaFV0
dGVyYW5jZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBzcGVlY2hT
eW50aGVzaXplcjpkaWRGaW5pc2hTcGVlY2hVdHRlcmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3ludGhlc2l6ZXI6ZGlkUGF1c2VTcGVlY2hVdHRl
cmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3lu
dGhlc2l6ZXI6ZGlkQ29udGludWVTcGVlY2hVdHRlcmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3ludGhlc2l6ZXI6ZGlkQ2FuY2VsU3BlZWNoVXR0
ZXJhbmNlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWVjaFN5
bnRoZXNpemVyOndpbGxTcGVha1JhbmdlT2ZTcGVlY2hTdHJpbmc6dXR0ZXJhbmNlOl0pOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWspOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6d3JpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0UGF0aG5hbWVzRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Y29weSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbToKKyAgICAgICAg
KC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOl0p
OgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOl0p
OgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHBhdXNlXSk6CisgICAgICAg
ICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgcmVzdW1lXSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFN5bnRoZXNpc1dyYXBwZXIgY2FuY2VsXSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRo
ZXNpc1dyYXBwZXIgc3BlZWNoU3ludGhlc2l6ZXI6ZGlkRmluaXNoU3BlYWtpbmc6XSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VM
aXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFr
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b25NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1SZXBy
ZXNlbnRhdGlvbk1hYzo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aFZhbHVl
SW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVhayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jazo6Y2FuY2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmg6CisKIDIwMTYtMDctMDggIEZyZWRlcmljIFdh
bmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBtb3ZhYmxl
bGltaXRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDA2YWFhODE5NDE0MTc4NWE3MDZhMGY1MjBmNmUy
NWFhYjE5M2UxOGIuLjE3NmNkMWI3NmNmYWViYjUxMDY3OTZjNzliZmI3YmFjZGY0ZWNjZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wNy0wOSAgR3l1eW91bmcgS2lt
ICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHVyZ2UgUGFzc1JlZlB0ciBp
biBwbGF0Zm9ybS9lZmwgYW5kIHBsYXRmb3JtL21hYyAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBhbGwgdXNlIG9mIFBhc3NSZWZQdHIgYW5k
IGNsZWFuIHVwIHVubmVjZXNzYXJ5IHRhYnMgYW5kIHNwYWNlcy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0QnVmZmVyRm9yVHlwZSk6CisKIDIwMTYtMDctMDggIEppZXdlbiBUYW4gIDxqaWV3
ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWZpbmUgRFlMRF9NQUNPU1hfVkVSU0lPTl8x
MF8xMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDEyYTE3MTFmNDIyODM1ZmM4ZDQzM2RkZTNhM2JjOWU2ODhhMmI3
ODcuLmJiMzcyZjFjMWI1ZDk3OGQyMjk0ZDc2NGZkOWMwY2JhZjY0OTU5YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxNi0wNy0wOSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2lt
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHVyZ2UgUGFzc1JlZlB0ciBpbiBwbGF0Zm9ybS9lZmwg
YW5kIHBsYXRmb3JtL21hYyAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW92ZSBhbGwgdXNlIG9mIFBhc3NSZWZQdHIgYW5kIGNsZWFuIHVwIHVubmVj
ZXNzYXJ5IHRhYnMgYW5kIHNwYWNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTYt
MDctMDcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50
IEZpbHRlcmluZ10gTG9hZCBibG9ja2VkIHBhZ2VzIG1vcmUgbGlrZSBvdGhlciBlcnJvciBwYWdl
cyBhcmUgbG9hZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oCmluZGV4IDRiNmNhZTQ0ZGQ2ZWVkOTAzYzMzZWY3M2NhODQ0N2Q4M2EwYzU2NmQuLjYzMDA4
NWVmZmMxNTNhNzI4NDdhMmRjZDBkZjY4MDFhNDc2ZmFmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKICNpZm5kZWYgUGFzdGVib2FyZFN0cmF0ZWd5X2gKQEAgLTYwLDExICs2
MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpID0gMDsKICAg
ICB2aXJ0dWFsIENvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
ICAgICB2aXJ0dWFsIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwot
ICAgIAorCiAgICAgdmlydHVhbCBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2
aXJ0dWFsIGxvbmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBj
b3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJv
YXJkKSA9IDA7Ci0gICAgdmlydHVhbCBsb25nIHNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBsb25nIHNldEJ1ZmZlckZvclR5cGUo
U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBzZXRQYXRobmFtZXNGb3JU
eXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBzZXRT
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCAyOTEyODU4ZjBmNzlhNmUz
Yzc1NmZiODFlMzE0MjQyMDAxOThiYjc1Li4wYmI2ZTJkMjBmYzgwOTBiNGE5OGU2ZThmZGIzNTli
MDc5M2UyNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIFBs
YXRmb3JtUGFzdGVib2FyZF9oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybVBhc3RlYm9hcmQoKTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBTdHJpbmcgdW5pcXVlTmFtZSgpOwotICAgIAorCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwogICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZl
Y3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwpA
QCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0
dXJuIDAgaWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAg
ICBXRUJDT1JFX0VYUE9SVCBsb25nIGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIGxvbmcgc2V0UGF0aG5hbWVzRm9y
VHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBsb25nIHNldFN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCmluZGV4
IGI1ZDE4NjBlOGFiZGJjOWQzZDY3ODM3ZDcyMGNiZDY3OWMxY2FmYzcuLjQ4ZWRhM2VkOWJkMDQ0
NjViOTg5YTU0MzM2NGQ2Mzg5MzFmYWEyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTcxLDEzICs3MSwxMyBAQCBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IFdlIGhhdmUgbXVsdGlwbGUgdmlydHVhbCBmdW5jdGlvbnMg
anVzdCBzbyB3ZSBjYW4gc3VwcG9ydCBhIG1vY2sgZm9yIHRlc3RpbmcuCiAgICAgLy8gU2VlbXMg
d2FzdGVmdWwuIFdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIGJldHRlciB3YXkuCiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpOwotICAgIAorCiAg
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPj4mIHZv
aWNlTGlzdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzcGVhayhQYXNzUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPik7CisgICAgdmlydHVhbCB2b2lkIHNwZWFrKFJl
ZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJik7CiAgICAgdmlydHVhbCB2
b2lkIHBhdXNlKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWwoKTsKLSAgICAKKwogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQq
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7IH0KIAog
cHJvdGVjdGVkOgpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3ZvaWNl
TGlzdElzSW5pdGlhbGl6ZWQ7CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCog
bV9zcGVlY2hTeW50aGVzaXplckNsaWVudDsKLSAgICAKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFJldGFpblB0cjxXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyPiBtX3BsYXRmb3JtU3BlZWNo
V3JhcHBlcjsKICNlbmRpZgpAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsPiBtX3BsYXRmb3JtU3Bl
ZWNoV3JhcHBlcjsKICNlbmRpZgogfTsKLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaApp
bmRleCAxYzY4MGUzM2Q1ZGEzOTY1NzM5N2ZjYmVlYWViYjIzNjU4MDdiZjc1Li5mY2VmZDg2OWMy
YjA5ODQwMTg3NzUzNTdkODQxODIxMjk1ZTMwYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uKCkgeyB9CiAKICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6
ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+IGRhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGRhdGEoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzRXF1YWwoY29uc3QgU2Vy
aWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKSBjb25zdCA9IDA7CiAKICAgICBlbnVtIFBs
YXRmb3JtVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5jcHAKaW5kZXggODJk
MTFhNjNmNGVkMDRlNWM5MzY2ZTZhZGNhMWFlMDlkZjg0NDA2YS4uNjE5N2JhOWZiODBjYmFlMjg1
NmMwOGZkOTg0OTczZTM3MTQ4YThmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZs
LmNwcApAQCAtMTM2LDE0ICsxMzYsMTQgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1By
b3ZpZGVyRWZsOjpyZXN1bWUoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbDo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQordm9pZCBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1Byb3ZpZGVyRWZsOjpzcGVhayhSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+JiYgdXR0ZXJhbmNlKQogewogICAgIGlmICghZW5naW5lSW5pdCgpIHx8ICF1
dHRlcmFuY2UpIHsKICAgICAgICAgZmlyZVNwZWVjaEV2ZW50KFNwZWVjaEVycm9yKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlOworICAgIG1f
dXR0ZXJhbmNlID0gV1RGTW92ZSh1dHRlcmFuY2UpOwogICAgIFN0cmluZyB2b2ljZSA9IHZvaWNl
TmFtZShtX3V0dGVyYW5jZSk7CiAgICAgZXNwZWFrX1NldFZvaWNlQnlOYW1lKHZvaWNlLnV0Zjgo
KS5kYXRhKCkpOwogICAgIGVzcGVha19TZXRQYXJhbWV0ZXIoZXNwZWFrUkFURSwgY29udmVydFJh
dGVUb0VzcGVha1ZhbHVlKG1fdXR0ZXJhbmNlLT5yYXRlKCkpLCAwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVy
RWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNQcm92aWRlckVmbC5oCmluZGV4IDA2ZDVmMWU3NzFiM2ViNWM2NGIzMmMzZGY4YTJmYWNmMDVi
MTJiZmEuLmQ2YmEyZWM5NDJmN2MxOWZmYTk3YmExYjEzOTMxYTc2YWYyZjMyMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1By
b3ZpZGVyRWZsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbml0aWFsaXplVm9pY2VMaXN0KFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZT4+Jik7CiAgICAgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7Ci0g
ICAgdm9pZCBzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Pik7CisgICAgdm9pZCBzcGVhayhSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+JiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiBwcml2YXRlOgogICAgIGJvb2wgZW5naW5lSW5p
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJFZmwuY3BwCmluZGV4IDQ2N2M3ZTI5ZDEyMGZiZTNlZDVkZDFi
MDU3YmVhYzA0MGNlM2Q3NjguLjZmZDBmMjFkNmU0NzVmYWJmNGVkYTMxZTI0YzMwZjc4NTY5NTVj
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckVmbC5jcHAKQEAgLTYzLDEwICs2MywxMCBAQCB2b2lkIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJlc3VtZSgpCiAgICAgbV9wbGF0Zm9ybVNwZWVjaFdy
YXBwZXItPnJlc3VtZSgpOwogfQogCi12b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNw
ZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5j
ZSkKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWsoUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYmIHV0dGVyYW5jZSkKIHsKICAgICBBU1NFUlQobV9w
bGF0Zm9ybVNwZWVjaFdyYXBwZXIpOwotICAgIG1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLT5zcGVh
ayh1dHRlcmFuY2UpOworICAgIG1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLT5zcGVhayhXVEZNb3Zl
KHV0dGVyYW5jZSkpOwogfQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNl
bCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCmluZGV4IDY2OGIxNTI1ZDZiY2QyNWJkMjViZWNlNjMw
NzA1NzY4MzhkYWU3MDcuLjNiODhhZGZmZDg1MDY1ZmU5YTE0ZTBjNTYyNzk1YjM0MDIzNTY2OWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVySU9TLm1tCkBAIC05LDcgKzksNyBAQAogICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
ICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAKKyAqCiAgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKICAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKQEAg
LTU1LDcgKzU1LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hV
dHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplciogbV9zeW50aGVzaXplck9iamVjdDsKICAgICAvLyBIb2xkIGEgUmVm
IHRvIHRoZSB1dHRlcmFuY2Ugc28gdGhhdCBpdCB3b24ndCBkaXNhcHBlYXIgdW50aWwgdGhlIHN5
bnRoIGlzIGRvbmUgd2l0aCBpdC4KICAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+IG1fdXR0ZXJhbmNlOwotICAgIAorCiAgICAgUmV0YWluUHRyPEFW
U3BlZWNoU3ludGhlc2l6ZXI+IG1fc3ludGhlc2l6ZXI7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAg
U09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVt
U3BlZWNoUmF0ZSwgZmxvYXQpCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAgICBtX3N5bnRoZXNpemVyT2JqZWN0ID0gc3lu
dGhlc2l6ZXI7CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC04Myw3ICs4Myw3IEBAIFNPRlRfTElO
S19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJh
dGUsIGZsb2F0KQogICAgICAgICByYXRlICo9IEFWU3BlZWNoVXR0ZXJhbmNlRGVmYXVsdFNwZWVj
aFJhdGU7CiAgICAgZWxzZQogICAgICAgICByYXRlID0gQVZTcGVlY2hVdHRlcmFuY2VEZWZhdWx0
U3BlZWNoUmF0ZSArICgocmF0ZSAtIDEpICogKEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVj
aFJhdGUgLSBBVlNwZWVjaFV0dGVyYW5jZURlZmF1bHRTcGVlY2hSYXRlKSk7Ci0gICAgCisKICAg
ICByZXR1cm4gcmF0ZTsKIH0KIApAQCAtOTIsMTAgKzkyLDEwIEBAIFNPRlRfTElOS19DT05TVEFO
VChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0
KQogICAgIC8vIFdoZW4gc3BlYWsgaXMgY2FsbGVkIHdlIHNob3VsZCBub3QgaGF2ZSBhbiBleGlz
dGluZyBzcGVlY2ggdXR0ZXJhbmNlIG91dHN0YW5kaW5nLgogICAgIEFTU0VSVCghbV91dHRlcmFu
Y2UpOwogICAgIEFTU0VSVCh1dHRlcmFuY2UpOwotICAgIAorCiAgICAgaWYgKCF1dHRlcmFuY2Up
CiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UwogICAgIGlmICghbV9zeW50aGVzaXplcikgewogICAgICAgICBtX3N5bnRoZXNpemVyID0gYWRv
cHROUyhbYWxsb2NBVlNwZWVjaFN5bnRoZXNpemVySW5zdGFuY2UoKSBpbml0XSk7CkBAIC0xMTMs
NyArMTEzLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRl
cmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgICAgICAgICB2b2ljZUxhbmd1YWdl
ID0gdXR0ZXJhbmNlLT5sYW5nKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHZvaWNlTGFuZ3VhZ2Ug
PSB1dHRlcmFuY2UtPnZvaWNlKCktPmxhbmcoKTsKLSAgICAKKwogICAgIEFWU3BlZWNoU3ludGhl
c2lzVm9pY2UgKmF2Vm9pY2UgPSBuaWw7CiAgICAgaWYgKHZvaWNlTGFuZ3VhZ2UpCiAgICAgICAg
IGF2Vm9pY2UgPSBbQVZTcGVlY2hTeW50aGVzaXNWb2ljZUNsYXNzIHZvaWNlV2l0aExhbmd1YWdl
OnZvaWNlTGFuZ3VhZ2VdOwpAQCAtMTI1LDcgKzEyNSw3IEBAIFNPRlRfTElOS19DT05TVEFOVChB
VkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQog
ICAgIFthdlV0dGVyYW5jZSBzZXRQaXRjaE11bHRpcGxpZXI6dXR0ZXJhbmNlLT5waXRjaCgpXTsK
ICAgICBbYXZVdHRlcmFuY2Ugc2V0Vm9pY2U6YXZWb2ljZV07CiAgICAgbV91dHRlcmFuY2UgPSB1
dHRlcmFuY2U7Ci0gICAgCisKICAgICBbbV9zeW50aGVzaXplciBzcGVha1V0dGVyYW5jZTphdlV0
dGVyYW5jZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpAQCAtMTM0LDcgKzEz
NCw3IEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNl
TWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQogewogICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAg
IFttX3N5bnRoZXNpemVyIHBhdXNlU3BlYWtpbmdBdEJvdW5kYXJ5OkFWU3BlZWNoQm91bmRhcnlJ
bW1lZGlhdGVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTE0NCw3ICsxNDQs
NyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1h
eGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKIHsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBb
bV9zeW50aGVzaXplciBjb250aW51ZVNwZWFraW5nXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCkBAIC0xNTQsNyArMTU0LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlv
biwgQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiB7CiAgICAgaWYg
KCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiAgICAgW21fc3ludGhlc2l6ZXIgc3RvcFNwZWFraW5nQXRCb3VuZGFy
eTpBVlNwZWVjaEJvdW5kYXJ5SW1tZWRpYXRlXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCkBAIC0xNjYsNyArMTY2LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwg
QVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgVU5VU0VEX1BB
UkFNKHV0dGVyYW5jZSk7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwot
ICAgIAorCiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xpZW50KCktPmRpZFN0YXJ0U3BlYWtp
bmcobV91dHRlcmFuY2UpOwogfQogCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBTT0ZUX0xJTktfQ09O
U1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBm
bG9hdCkKICAgICBVTlVTRURfUEFSQU0odXR0ZXJhbmNlKTsKICAgICBpZiAoIW1fdXR0ZXJhbmNl
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyBDbGVhciB0aGUgbV91dHRlcmFuY2Ug
dmFyaWFibGUgaW4gY2FzZSBmaW5pc2ggc3BlYWtpbmcga2lja3Mgb2ZmIGEgbmV3IHNwZWFraW5n
IGpvYiBpbW1lZGlhdGVseS4KICAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2U+IHBsYXRmb3JtVXR0ZXJhbmNlID0gbV91dHRlcmFuY2U7CiAgICAgbV91
dHRlcmFuY2UgPSBudWxscHRyOwotICAgIAorCiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xp
ZW50KCktPmRpZEZpbmlzaFNwZWFraW5nKHBsYXRmb3JtVXR0ZXJhbmNlKTsKIH0KIApAQCAtMTkw
LDcgKzE5MCw3IEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0
ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQogICAgIFVOVVNFRF9QQVJBTSh1dHRlcmFu
Y2UpOwogICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAg
IG1fc3ludGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRQYXVzZVNwZWFraW5nKG1fdXR0ZXJh
bmNlKTsKIH0KIApAQCAtMjAwLDcgKzIwMCw3IEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5k
YXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQogICAgIFVO
VVNFRF9QQVJBTSh1dHRlcmFuY2UpOwogICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIG1fc3ludGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRSZXN1
bWVTcGVha2luZyhtX3V0dGVyYW5jZSk7CiB9CiAKQEAgLTIxMCwxMSArMjEwLDExIEBAIFNPRlRf
TElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVj
aFJhdGUsIGZsb2F0KQogICAgIFVOVVNFRF9QQVJBTSh1dHRlcmFuY2UpOwogICAgIGlmICghbV91
dHRlcmFuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vIENsZWFyIHRoZSBtX3V0
dGVyYW5jZSB2YXJpYWJsZSBpbiBjYXNlIGZpbmlzaCBzcGVha2luZyBraWNrcyBvZmYgYSBuZXcg
c3BlYWtpbmcgam9iIGltbWVkaWF0ZWx5LgogICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gcGxhdGZvcm1VdHRlcmFuY2UgPSBtX3V0dGVyYW5jZTsK
ICAgICBtX3V0dGVyYW5jZSA9IG51bGxwdHI7Ci0gICAgCisKICAgICBtX3N5bnRoZXNpemVyT2Jq
ZWN0LT5jbGllbnQoKS0+ZGlkRmluaXNoU3BlYWtpbmcocGxhdGZvcm1VdHRlcmFuY2UpOwogfQog
CkBAIC0yMjIsMTAgKzIyMiwxMCBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBB
VlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKIHsKICAgICBVTlVTRURf
UEFSQU0oc3ludGhlc2l6ZXIpOwogICAgIFVOVVNFRF9QQVJBTSh1dHRlcmFuY2UpOwotICAgIAor
CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgLy8g
aU9TIG9ubHkgc3VwcG9ydHMgd29yZCBib3VuZGFyaWVzLgogICAgIG1fc3ludGhlc2l6ZXJPYmpl
Y3QtPmNsaWVudCgpLT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQobV91dHRlcmFuY2UsIFdlYkNvcmU6
OlNwZWVjaFdvcmRCb3VuZGFyeSwgY2hhcmFjdGVyUmFuZ2UubG9jYXRpb24pOwogfQpAQCAtMjY2
LDExICsyNjYsMTEgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQog
ICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSByZXN1bWVdOwogfQogCi12b2lkIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcjo6c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYmIHV0
dGVyYW5jZSkKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyKQogICAgICAgICBt
X3BsYXRmb3JtU3BlZWNoV3JhcHBlciA9IGFkb3B0TlMoW1tXZWJTcGVlY2hTeW50aGVzaXNXcmFw
cGVyIGFsbG9jXSBpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOnRoaXNdKTsKLSAgICAKKwogICAg
IFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBzcGVha1V0dGVyYW5jZTp1dHRlcmFuY2Uu
Z2V0KCldOwogfQogCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjpjYW5jZWwoKQogewogICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBj
YW5jZWxdOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KaW5kZXggNzZhNzg0MTU4N2YyYzk5MjljZTgzMTBmOTM5OTUxOTJmZjYx
MTlkOS4uZWIyY2I5YTcyOGQyY2I3ZDBiNGFjNmQzMTAwNTg2NWYzOGY4NjdhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTE2OSwxNSArMTY5
LDE1IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQm
IGNvbnRlbnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29u
dGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBj
b250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgbV9jaGFu
Z2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0
QnVmZmVyRm9yVHlwZShjb250ZW50LmNsaWVudERhdGFbaV0sIGNvbnRlbnQuY2xpZW50VHlwZXNb
aV0sIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRl
bnQuY2xpZW50RGF0YVtpXS5nZXQoKSwgY29udGVudC5jbGllbnRUeXBlc1tpXSwgbV9wYXN0ZWJv
YXJkTmFtZSk7CiAgICAgaWYgKGNvbnRlbnQuY2FuU21hcnRDb3B5T3JEZWxldGUpCiAgICAgICAg
IG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPnNldEJ1ZmZlckZvclR5cGUoMCwgV2ViU21hcnRQYXN0ZVBib2FyZFR5cGUsIG1fcGFzdGVi
b2FyZE5hbWUpOwogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpCi0gICAg
ICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LCBX
ZWJBcmNoaXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdl
Q291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1
ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LmdldCgpLCBXZWJBcmNo
aXZlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgaWYgKGNvbnRlbnQuZGF0YUlu
UlRGREZvcm1hdCkKLSAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRhdGFJblJU
RkRGb3JtYXQsIE5TUlRGRFBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBt
X2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluUlRGREZvcm1hdC5nZXQoKSwgTlNSVEZE
UGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgaWYgKGNvbnRlbnQuZGF0YUluUlRG
Rm9ybWF0KQotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluUlRGRm9y
bWF0LCBOU1JURlBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBtX2NoYW5n
ZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRC
dWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LmdldCgpLCBOU1JURlBib2FyZFR5
cGUsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGlmICghY29udGVudC5kYXRhSW5TdHJpbmdGb3Jt
YXQuaXNOdWxsKCkpCiAgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUoY29udGVudC5kYXRhSW5T
dHJpbmdGb3JtYXQsIE5TU3RyaW5nUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiB9CkBA
IC0yNjMsNyArMjYzLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJk
SW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNT
dXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUocGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlN
RVR5cGUpKTsKIAogICAgIG1fY2hhbmdlQ291bnQgPSB3cml0ZVVSTEZvclR5cGVzKHdyaXRhYmxl
VHlwZXNGb3JJbWFnZSgpLCBtX3Bhc3RlYm9hcmROYW1lLCBwYXN0ZWJvYXJkSW1hZ2UudXJsKTsK
LSAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShpbWFnZURh
dGEpLCBOU1RJRkZQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICBtX2NoYW5nZUNv
dW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZm
ZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShpbWFnZURhdGEpLnB0cigpLCBOU1RJ
RkZQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICB3cml0ZUZpbGVXcmFwcGVyQXNS
VEZEQXR0YWNobWVudChmaWxlV3JhcHBlcihwYXN0ZWJvYXJkSW1hZ2UpLCBtX3Bhc3RlYm9hcmRO
YW1lLCBtX2NoYW5nZUNvdW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KaW5kZXggYWVjNGE2OTQ0MGVmMGQ2NGJl
NmEyZjc4Yjk2ZjBmN2Q0OTQ3MDQ4Ny4uMTBkYjNkYmJiMjMzYTkzNThiMzRiYjk4MTBkMzFmODkw
ZTM2OTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tCkBAIC00MCw3ICs0MCw3IEBAIFBsYXRmb3JtUGFzdGVib2FyZDo6
UGxhdGZvcm1QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB2b2lkIFBs
YXRmb3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKQogewogICAg
IE5TQXJyYXkgKnBhc3RlYm9hcmRUeXBlcyA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkgdHlwZXNdOwot
ICAgIAorCiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3Bhc3RlYm9hcmRUeXBlcyBj
b3VudF07IGkrKykKICAgICAgICAgdHlwZXMuYXBwZW5kKFtwYXN0ZWJvYXJkVHlwZXMgb2JqZWN0
QXRJbmRleDppXSk7CiB9CkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJk
OjpnZXRQYXRobmFtZXNGb3JUeXBlKFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0
CiAgICAgTlNBcnJheSogcGF0aHMgPSBbbV9wYXN0ZWJvYXJkLmdldCgpIHByb3BlcnR5TGlzdEZv
clR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlmIChbcGF0aHMgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSkgewogICAgICAgICBwYXRobmFtZXMuYXBwZW5kKChOU1N0cmluZyAqKXBh
dGhzKTsKLSAgICAgICAgcmV0dXJuOyAgICAgICAgCisgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3BhdGhzIGNvdW50XTsgaSsrKQogICAgICAg
ICBwYXRobmFtZXMuYXBwZW5kKFtwYXRocyBvYmplY3RBdEluZGV4OmldKTsKQEAgLTg1LDE0ICs4
NSwxNCBAQCBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1bmlxdWVOYW1lKCkKIENvbG9yIFBs
YXRmb3JtUGFzdGVib2FyZDo6Y29sb3IoKQogewogICAgIE5TQ29sb3IgKmNvbG9yID0gW05TQ29s
b3IgY29sb3JGcm9tUGFzdGVib2FyZDptX3Bhc3RlYm9hcmQuZ2V0KCldOwotICAgIAotICAgIC8v
IFRoZSBjb2xvciBtYXkgbm90IGJlIGluIGFuIFJHQiBjb2xvcnNwYWNlLiBUaGlzIGNvbW1vbmx5
IG9jY3VycyB3aGVuIGEgY29sb3IgaXMgCisKKyAgICAvLyBUaGUgY29sb3IgbWF5IG5vdCBiZSBp
biBhbiBSR0IgY29sb3JzcGFjZS4gVGhpcyBjb21tb25seSBvY2N1cnMgd2hlbiBhIGNvbG9yIGlz
CiAgICAgLy8gZHJhZ2dlZCBmcm9tIHRoZSBOU0NvbG9yUGFuZWwgZ3JheXNjYWxlIHBpY2tlci4K
ICAgICBpZiAoW1tjb2xvciBjb2xvclNwYWNlXSBjb2xvclNwYWNlTW9kZWxdICE9IE5TUkdCQ29s
b3JTcGFjZU1vZGVsKQogICAgICAgICBjb2xvciA9IFtjb2xvciBjb2xvclVzaW5nQ29sb3JTcGFj
ZU5hbWU6TlNDYWxpYnJhdGVkUkdCQ29sb3JTcGFjZV07Ci0gICAgCi0gICAgcmV0dXJuIG1ha2VS
R0JBKChpbnQpKFtjb2xvciByZWRDb21wb25lbnRdICogMjU1LjAgKyAwLjUpLCAoaW50KShbY29s
b3IgZ3JlZW5Db21wb25lbnRdICogMjU1LjAgKyAwLjUpLCAKLSAgICAgICAgICAgICAgICAgICAg
KGludCkoW2NvbG9yIGJsdWVDb21wb25lbnRdICogMjU1LjAgKyAwLjUpLCAoaW50KShbY29sb3Ig
YWxwaGFDb21wb25lbnRdICogMjU1LjAgKyAwLjUpKTsgICAgCisKKyAgICByZXR1cm4gbWFrZVJH
QkEoKGludCkoW2NvbG9yIHJlZENvbXBvbmVudF0gKiAyNTUuMCArIDAuNSksIChpbnQpKFtjb2xv
ciBncmVlbkNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSksCisgICAgICAgIChpbnQpKFtjb2xvciBi
bHVlQ29tcG9uZW50XSAqIDI1NS4wICsgMC41KSwgKGludCkoW2NvbG9yIGFscGhhQ29tcG9uZW50
XSAqIDI1NS4wICsgMC41KSk7CiB9CiAKIFVSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVybCgpCkBA
IC0xMDQsMTMgKzEwNCwxMyBAQCBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29weShjb25zdCBT
dHJpbmcmIGZyb21QYXN0ZWJvYXJkKQogewogICAgIE5TUGFzdGVib2FyZCogcGFzdGVib2FyZCA9
IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOmZyb21QYXN0ZWJvYXJkXTsKICAgICBO
U0FycmF5KiB0eXBlcyA9IFtwYXN0ZWJvYXJkIHR5cGVzXTsKLSAgICAKKwogICAgIFttX3Bhc3Rl
Ym9hcmQuZ2V0KCkgYWRkVHlwZXM6dHlwZXMgb3duZXI6bmlsXTsKICAgICBmb3IgKE5TVUludGVn
ZXIgaSA9IDA7IGkgPCBbdHlwZXMgY291bnRdOyBpKyspIHsKICAgICAgICAgTlNTdHJpbmcqIHR5
cGUgPSBbdHlwZXMgb2JqZWN0QXRJbmRleDppXTsKICAgICAgICAgaWYgKCFbbV9wYXN0ZWJvYXJk
LmdldCgpIHNldERhdGE6W3Bhc3RlYm9hcmQgZGF0YUZvclR5cGU6dHlwZV0gZm9yVHlwZTp0eXBl
XSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0gICAgCisgICAgfQogICAgIHJldHVybiBj
aGFuZ2VDb3VudCgpOwogfQogCkBAIC0xMzUsNyArMTM1LDcgQEAgbG9uZyBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpCiAg
ICAgcmV0dXJuIFttX3Bhc3RlYm9hcmQuZ2V0KCkgZGVjbGFyZVR5cGVzOnR5cGVzLmdldCgpIG93
bmVyOm5pbF07CiB9CiAKLWxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBl
KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCitsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRC
dWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKICAgICBCT09M
IGRpZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQgc2V0RGF0YTpidWZmZXIgPyBidWZmZXItPmNy
ZWF0ZU5TRGF0YSgpLmdldCgpIDogbmlsIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwogICAgIGlm
ICghZGlkV3JpdGVEYXRhKQpAQCAtMTQ1LDcgKzE0NSw3IEBAIGxvbmcgUGxhdGZvcm1QYXN0ZWJv
YXJkOjpzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGNv
bnN0CiAKIGxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRQYXRobmFtZXNGb3JUeXBlKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUp
CiB7Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBwYXRocyA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOyAgICAKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IHBhdGhzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXRobmFtZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIFtw
YXRocy5nZXQoKSBhZGRPYmplY3Q6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OnBhdGhuYW1lc1tp
XV1dOwogICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFzdGVib2FyZC5nZXQoKSBzZXRQcm9w
ZXJ0eUxpc3Q6cGF0aHMuZ2V0KCkgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTWFjLm1tCmluZGV4IGUyZWJkMWI3ZThjNjg1Zjg5ODZlNzRhODY0OWM3NWM4Yzk3MDM0NDAu
LmM5NGE0ODliMjEwMDdjY2E3NmIxMWVlMmE3NzYwODVjNGQyNzkxNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTWFjLm1tCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZS5oIgogI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbmNs
dWRlIDxBcHBLaXQvTlNTcGVlY2hTeW50aGVzaXplci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgRU5BQkxFKFNQRUVDSF9T
WU5USEVTSVMpCkBAIC00MCw3ICszOSw3IEBACiAgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplciogbV9zeW50aGVzaXplck9iamVjdDsKICAgICAvLyBIb2xkIGEgUmVmIHRvIHRo
ZSB1dHRlcmFuY2Ugc28gdGhhdCBpdCB3b24ndCBkaXNhcHBlYXIgdW50aWwgdGhlIHN5bnRoIGlz
IGRvbmUgd2l0aCBpdC4KICAgICBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZSogbV91dHRlcmFuY2U7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8TlNTcGVlY2hTeW50aGVz
aXplcj4gbV9zeW50aGVzaXplcjsKICAgICBmbG9hdCBtX2Jhc2VQaXRjaDsKIH0KQEAgLTU2LDcg
KzU1LDcgQEAKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAKKwogICAgIG1fc3ludGhlc2l6ZXJPYmplY3QgPSBzeW50aGVzaXplcjsK
ICAgICBbc2VsZiB1cGRhdGVCYXNlUGl0Y2hGb3JTeW50aGVzaXplcl07CiAgICAgcmV0dXJuIHNl
bGY7CkBAIC04OCwxNiArODcsMTYgQEAKICAgICAvLyBXaGVuIHNwZWFrIGlzIGNhbGxlZCB3ZSBz
aG91bGQgbm90IGhhdmUgYW4gZXhpc3Rpbmcgc3BlZWNoIHV0dGVyYW5jZSBvdXRzdGFuZGluZy4K
ICAgICBBU1NFUlQoIW1fdXR0ZXJhbmNlKTsKICAgICBBU1NFUlQodXR0ZXJhbmNlKTsKLSAgICAK
KwogICAgIGlmICghbV9zeW50aGVzaXplcikgewogICAgICAgICBtX3N5bnRoZXNpemVyID0gYWRv
cHROUyhbW05TU3BlZWNoU3ludGhlc2l6ZXIgYWxsb2NdIGluaXRXaXRoVm9pY2U6bmlsXSk7CiAg
ICAgICAgIFttX3N5bnRoZXNpemVyIHNldERlbGVnYXRlOnNlbGZdOwogICAgIH0KLSAgICAKKwog
ICAgIC8vIEZpbmQgaWYgd2Ugc2hvdWxkIHVzZSBhIHNwZWNpZmljIHZvaWNlIGJhc2VkIG9uIHRo
ZSB2b2ljZVVSSSBpbiB1dHRlcmFuY2UuCiAgICAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSB2b2lj
ZSB0aGF0IG1hdGNoZXMgdGhlIGxhbmd1YWdlLiBUaGUgTWFjIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1
bHQgdm9pY2UgcGVyIGxhbmd1YWdlLCBzbyB0aGUgZmlyc3QKICAgICAvLyBvbmUgd2lsbCBoYXZl
IHRvIGRvLgotICAgIAorCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZSogdXR0ZXJhbmNlVm9pY2UgPSB1dHRlcmFuY2UtPnZvaWNlKCk7CiAgICAgLy8gSWYgbm8gdm9p
Y2Ugd2FzIHNwZWNpZmllZCwgdHJ5IHRvIG1hdGNoIGJ5IGxhbmd1YWdlLgogICAgIGlmICghdXR0
ZXJhbmNlVm9pY2UgJiYgIXV0dGVyYW5jZS0+bGFuZygpLmlzRW1wdHkoKSkgewpAQCAtMTA5LDcg
KzEwOCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBO
U1N0cmluZyAqdm9pY2VVUkkgPSBuaWw7CiAgICAgaWYgKHV0dGVyYW5jZVZvaWNlKQogICAgICAg
ICB2b2ljZVVSSSA9IHV0dGVyYW5jZVZvaWNlLT52b2ljZVVSSSgpOwpAQCAtMTI0LDE0ICsxMjMs
MTQgQEAKICAgICAgICAgLy8gUmVzZXQgdGhlIGJhc2UgcGl0Y2ggd2hlbmV2ZXIgd2UgY2hhbmdl
IHZvaWNlcy4KICAgICAgICAgdXBkYXRlUGl0Y2ggPSBZRVM7CiAgICAgfQotICAgIAorCiAgICAg
aWYgKG1fYmFzZVBpdGNoID09IDAgfHwgdXBkYXRlUGl0Y2gpCi0gICAgICAgIFtzZWxmIHVwZGF0
ZUJhc2VQaXRjaEZvclN5bnRoZXNpemVyXTsgICAgCi0gICAgCisgICAgICAgIFtzZWxmIHVwZGF0
ZUJhc2VQaXRjaEZvclN5bnRoZXNpemVyXTsKKwogICAgIFttX3N5bnRoZXNpemVyIHNldE9iamVj
dDpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OltzZWxmIGNvbnZlcnRQaXRjaFRvTlNTcGVlY2hW
YWx1ZTp1dHRlcmFuY2UtPnBpdGNoKCldXSBmb3JQcm9wZXJ0eTpOU1NwZWVjaFBpdGNoQmFzZVBy
b3BlcnR5IGVycm9yOm5pbF07CiAgICAgW21fc3ludGhlc2l6ZXIgc2V0UmF0ZTpbc2VsZiBjb252
ZXJ0UmF0ZVRvV1BNOnV0dGVyYW5jZS0+cmF0ZSgpXV07CiAgICAgW21fc3ludGhlc2l6ZXIgc2V0
Vm9sdW1lOnV0dGVyYW5jZS0+dm9sdW1lKCldOwotICAgIAorCiAgICAgbV91dHRlcmFuY2UgPSB1
dHRlcmFuY2U7CiAgICAgW21fc3ludGhlc2l6ZXIgc3RhcnRTcGVha2luZ1N0cmluZzp1dHRlcmFu
Y2UtPnRleHQoKV07CiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xpZW50KCktPmRpZFN0YXJ0
U3BlYWtpbmcodXR0ZXJhbmNlKTsKQEAgLTE0MSw3ICsxNDAsNyBAQAogewogICAgIGlmICghbV91
dHRlcmFuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIFttX3N5bnRoZXNpemVyIHBh
dXNlU3BlYWtpbmdBdEJvdW5kYXJ5Ok5TU3BlZWNoSW1tZWRpYXRlQm91bmRhcnldOwogICAgIG1f
c3ludGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRQYXVzZVNwZWFraW5nKG1fdXR0ZXJhbmNl
KTsKIH0KQEAgLTE1MCw3ICsxNDksNyBAQAogewogICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIFttX3N5bnRoZXNpemVyIGNvbnRpbnVlU3BlYWtpbmdd
OwogICAgIG1fc3ludGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRSZXN1bWVTcGVha2luZyht
X3V0dGVyYW5jZSk7CiB9CkBAIC0xNTksNyArMTU4LDcgQEAKIHsKICAgICBpZiAoIW1fdXR0ZXJh
bmNlKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBbbV9zeW50aGVzaXplciBzdG9wU3Bl
YWtpbmdBdEJvdW5kYXJ5Ok5TU3BlZWNoSW1tZWRpYXRlQm91bmRhcnldOwogICAgIG1fc3ludGhl
c2l6ZXJPYmplY3QtPmNsaWVudCgpLT5zcGVha2luZ0Vycm9yT2NjdXJyZWQobV91dHRlcmFuY2Up
OwogICAgIG1fdXR0ZXJhbmNlID0gMDsKQEAgLTE3NiwxMyArMTc1LDEzIEBACiB7CiAgICAgaWYg
KCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgVU5VU0VEX1BBUkFN
KHNlbmRlcik7Ci0gICAgCisKICAgICAvLyBDbGVhciB0aGUgbV91dHRlcmFuY2UgdmFyaWFibGUg
aW4gY2FzZSBmaW5pc2ggc3BlYWtpbmcga2lja3Mgb2ZmIGEgbmV3IHNwZWFraW5nIGpvYiBpbW1l
ZGlhdGVseS4KICAgICBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSog
dXR0ZXJhbmNlID0gbV91dHRlcmFuY2U7CiAgICAgbV91dHRlcmFuY2UgPSAwOwotICAgIAorCiAg
ICAgaWYgKGZpbmlzaGVkU3BlYWtpbmcpCiAgICAgICAgIG1fc3ludGhlc2l6ZXJPYmplY3QtPmNs
aWVudCgpLT5kaWRGaW5pc2hTcGVha2luZyh1dHRlcmFuY2UpOwogICAgIGVsc2UKQEAgLTIyMywy
MyArMjIyLDIzIEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6aW5pdGlhbGl6ZVZv
aWNlTGlzdCgpCiAgICAgZm9yIChOU1VJbnRlZ2VyIGsgPSAwOyBrIDwgY291bnQ7IGsrKykgewog
ICAgICAgICBOU1N0cmluZyAqdm9pY2VOYW1lID0gW2F2YWlsYWJsZVZvaWNlcyBvYmplY3RBdElu
ZGV4OmtdOwogICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbTlNTcGVlY2hTeW50
aGVzaXplciBhdHRyaWJ1dGVzRm9yVm9pY2U6dm9pY2VOYW1lXTsKLSAgICAgICAgCisKICAgICAg
ICAgTlNTdHJpbmcgKnZvaWNlVVJJID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVm9pY2VJ
ZGVudGlmaWVyXTsKICAgICAgICAgTlNTdHJpbmcgKm5hbWUgPSBbYXR0cmlidXRlcyBvYmplY3RG
b3JLZXk6TlNWb2ljZU5hbWVdOwogICAgICAgICBOU1N0cmluZyAqbGFuZ3VhZ2UgPSBbYXR0cmli
dXRlcyBvYmplY3RGb3JLZXk6TlNWb2ljZUxvY2FsZUlkZW50aWZpZXJdOwogICAgICAgICBOU0xv
Y2FsZSAqbG9jYWxlID0gW1tOU0xvY2FsZSBhbGxvY10gaW5pdFdpdGhMb2NhbGVJZGVudGlmaWVy
Omxhbmd1YWdlXTsKICAgICAgICAgTlNTdHJpbmcgKmRlZmF1bHRWb2ljZVVSSSA9IHdrU3BlZWNo
U3ludGhlc2lzR2V0RGVmYXVsdFZvaWNlSWRlbnRpZmllckZvckxvY2FsZShsb2NhbGUpOwogICAg
ICAgICBbbG9jYWxlIHJlbGVhc2VdOwotICAgICAgICAKKwogICAgICAgICAvLyBDaGFuZ2UgdG8g
QkNQLTQ3IGZvcm1hdCBhcyBkZWZpbmVkIGJ5IHNwZWMuCiAgICAgICAgIGxhbmd1YWdlID0gW2xh
bmd1YWdlIHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIl8iIHdpdGhTdHJp
bmc6QCItIl07Ci0gICAgICAgIAorCiAgICAgICAgIGJvb2wgaXNEZWZhdWx0ID0gW2RlZmF1bHRW
b2ljZVVSSSBpc0VxdWFsVG9TdHJpbmc6dm9pY2VVUkldOwotICAgICAgICAKKwogICAgICAgICBt
X3ZvaWNlTGlzdC5hcHBlbmQoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6Y3JlYXRlKHZv
aWNlVVJJLCBuYW1lLCBsYW5ndWFnZSwgdHJ1ZSwgaXNEZWZhdWx0KSk7CiAgICAgfQogfQotICAg
IAorCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnBhdXNlKCkKIHsKICAgICBbbV9w
bGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgcGF1c2VdOwpAQCAtMjQ5LDEyICsyNDgsMTIgQEAg
dm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQogewogICAgIFttX3BsYXRm
b3JtU3BlZWNoV3JhcHBlci5nZXQoKSByZXN1bWVdOwogfQotICAgIAotdm9pZCBQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyOjpzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlPiB1dHRlcmFuY2UpCisKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6
c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYmIHV0dGVyYW5j
ZSkKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyKQogICAgICAgICBtX3BsYXRm
b3JtU3BlZWNoV3JhcHBlciA9IGFkb3B0TlMoW1tXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIGFs
bG9jXSBpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOnRoaXNdKTsKLSAgICAKKwogICAgIFttX3Bs
YXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBzcGVha1V0dGVyYW5jZTp1dHRlcmFuY2UuZ2V0KCld
OwogfQogCkBAIC0yNjIsNyArMjYxLDcgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
OjpjYW5jZWwoKQogewogICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBjYW5jZWxd
OwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgKaW5kZXgg
MWJjZjg3YWQ4YWJlYzUyY2YzZTNiY2Q3M2JkOTM3MGQyZmVlMjBlYS4uMjIzODZiNWFmMzY5NWQy
NzI0MTc2Y2M0ZGNlZGE2OTE5NjFlNGUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
TWFjLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+IGNyZWF0ZShpZCk7CiAKICAgICBKU0M6OkpTVmFsdWUg
ZGVzZXJpYWxpemUoSlNDOjpFeGVjU3RhdGUqKSBjb25zdCBvdmVycmlkZTsKLSAgICBQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBkYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiBkYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzRXF1YWwoY29uc3Qg
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKSBjb25zdCBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCmluZGV4IDY5YWQ0MTdkMDJiMjM1Zjg5YWRk
OTdjMmFjNmEzNDc4YmYwNWVmYWUuLjMwY2JkNWJkYWIzZGMyMzY0ODkyMGM5NTBhNjIyNjMyOWUy
NDQxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVk
UGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0KQEAgLTcyLDcgKzcy
LDcgQEAgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBTZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6Y3JlYXQKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYyhuYXRpdmVWYWx1ZSkpOwogfQogCi1Q
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1h
Yzo6ZGF0YSgpIGNvbnN0CitSZWZQdHI8QXJyYXlCdWZmZXI+IFNlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uTWFjOjpkYXRhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
QEAgLTEzNSwxMCArMTM1LDEwIEBAIHN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aFZhbHVlSW5D
b250ZXh0KGlkIHZhbHVlLCBKU0NvbnRleHQgKmNvbnRleHQpCiAKICAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQogICAgICAgICByZXR1cm4ganNWYWx1ZVdpdGhE
YXRhSW5Db250ZXh0KHZhbHVlLCBjb250ZXh0KTsKLSAgICAKKwogICAgIGlmIChbdmFsdWUgaXNL
aW5kT2ZDbGFzczpbQVZNZXRhZGF0YUl0ZW0gY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIGpzVmFs
dWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQodmFsdWUsIGNvbnRleHQpOwotICAgIAorCiAg
ICAgcmV0dXJuIG5pbDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAppbmRleCBjMGI0
ZGZhMmM2ZjIyNDRlYWE0ZGE4ODY0ZDVjNGIzMjYzMjU5MmRjLi5mYzM3NjczMjYwNTM2Y2I0MmZh
Y2VlNzBjZThiNThkZTlhNmEzYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmNwcApAQCAt
MzYsNyArMzYsNyBAQCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1vY2soUGxhdGZvcm1TcGVlY2hTeW50aAogICAgICwgbV9zcGVha2luZ0Zp
bmlzaGVkVGltZXIoKnRoaXMsICZQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtp
bmdGaW5pc2hlZCkKIHsKIH0KLSAgICAKKwogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6
On5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaygpCiB7CiB9CkBAIC00NiwxMCArNDYsMTAg
QEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtpbmdGaW5pc2hlZCgp
CiAgICAgQVNTRVJUKG1fdXR0ZXJhbmNlLmdldCgpKTsKICAgICBSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+IHByb3RlY3QobV91dHRlcmFuY2UpOwogICAgIG1fdXR0ZXJh
bmNlID0gbnVsbHB0cjsKLSAgICAKKwogICAgIGNsaWVudCgpLT5kaWRGaW5pc2hTcGVha2luZyhw
cm90ZWN0KTsKIH0KLSAgICAKKwogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6
aW5pdGlhbGl6ZVZvaWNlTGlzdCgpCiB7CiAgICAgbV92b2ljZUxpc3QuYXBwZW5kKFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShTdHJpbmcoIm1vY2sudm9pY2UuYnJ1Y2UiKSwg
U3RyaW5nKCJicnVjZSIpLCBTdHJpbmcoImVuLVVTIiksIHRydWUsIHRydWUpKTsKQEAgLTU3LDI1
ICs1NywyNSBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjppbml0aWFsaXpl
Vm9pY2VMaXN0KCkKICAgICBtX3ZvaWNlTGlzdC5hcHBlbmQoUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZTo6Y3JlYXRlKFN0cmluZygibW9jay52b2ljZS5sb2dhbiIpLCBTdHJpbmcoImxvZ2Fu
IiksIFN0cmluZygiZnItQ0EiKSwgdHJ1ZSwgdHJ1ZSkpOwogfQogCi12b2lkIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJN
b2NrOjpzcGVhayhSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiYgdXR0
ZXJhbmNlKQogewogICAgIEFTU0VSVCghbV91dHRlcmFuY2UpOwotICAgIG1fdXR0ZXJhbmNlID0g
dXR0ZXJhbmNlOworICAgIG1fdXR0ZXJhbmNlID0gV1RGTW92ZSh1dHRlcmFuY2UpOwogICAgIGNs
aWVudCgpLT5kaWRTdGFydFNwZWFraW5nKG1fdXR0ZXJhbmNlKTsKLSAgICAKKwogICAgIC8vIEZp
cmUgYSBmYWtlIHdvcmQgYW5kIHRoZW4gc2VudGVuY2UgYm91bmRhcnkgZXZlbnQuCiAgICAgY2xp
ZW50KCktPmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChtX3V0dGVyYW5jZSwgU3BlZWNoV29yZEJvdW5k
YXJ5LCAwKTsKICAgICBjbGllbnQoKS0+Ym91bmRhcnlFdmVudE9jY3VycmVkKG1fdXR0ZXJhbmNl
LCBTcGVlY2hTZW50ZW5jZUJvdW5kYXJ5LCBtX3V0dGVyYW5jZS0+dGV4dCgpLmxlbmd0aCgpKTsK
LSAgICAKKwogICAgIC8vIEdpdmUgdGhlIGZha2Ugc3BlZWNoIGpvYiBzb21lIHRpbWUgc28gdGhh
dCBwYXVzZSBhbmQgb3RoZXIgZnVuY3Rpb25zIGhhdmUgdGltZSB0byBiZSBjYWxsZWQuCiAgICAg
bV9zcGVha2luZ0ZpbmlzaGVkVGltZXIuc3RhcnRPbmVTaG90KC4xKTsKIH0KLSAgICAKKwogdm9p
ZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6Y2FuY2VsKCkKIHsKICAgICBpZiAoIW1f
dXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBtX3NwZWFraW5nRmluaXNo
ZWRUaW1lci5zdG9wKCk7CiAgICAgY2xpZW50KCktPnNwZWFraW5nRXJyb3JPY2N1cnJlZChtX3V0
dGVyYW5jZSk7CiAgICAgbV91dHRlcmFuY2UgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
ay5oCmluZGV4IDhkOTc0ODhiMDJkMGQyMTNiODU1NmU1MzM0YjU3YTI4YjI5MzdlMDMuLjk5MjFm
YmQ0YTMxMjI2NTI2NjljNGRkMzJjYWJlOGE0MTMxOWVmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJN
b2NrLmgKQEAgLTMyLDI1ICszMiwyNSBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLSAgICAKKwogY2xhc3MgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2sg
OiBwdWJsaWMgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciB7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2soUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ckNsaWVudCopOwogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2so
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4pOworICAgIHZpcnR1YWwgdm9pZCBzcGVhayhSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7Ci0g
ICAgCisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVWb2ljZUxpc3QoKTsK
ICAgICB2b2lkIHNwZWFraW5nRmluaXNoZWQoKTsKLSAgICAKKwogICAgIFRpbWVyIG1fc3BlYWtp
bmdGaW5pc2hlZFRpbWVyOwogICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4gbV91dHRlcmFuY2U7CiB9OwotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXgg
YjM0NWRkYWYwNzQ5NWM3MTgxN2VjZjE5YjBmNzA3OTQ0MWFjZTQ4Zi4uMzdjZjhkZmZlYTg5MzA1
ZDg0MDhjYzhmZTViMmZhZTE5NTAxNTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTkxLDcgKzkx
LDcgQEAgcHJpdmF0ZToKICAgICBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwog
ICAgIGxvbmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBjb3B5KGNv
bnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkKSBv
dmVycmlkZTsKLSAgICBsb25nIHNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBsb25nIHNldEJ1ZmZlckZvclR5cGUoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRQYXRobmFtZXNG
b3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRT
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQppbmRleCBjZWViZjM3ZTY0MGE2ODc2MTM3MzJmNWM0Mzg2Yzc1YzljZTA0ZTM1Li42YWI1
ZTg2OWM2NjY0YWUxMDA0NjE5ZWY5NWVmNWQ4Y2Q0ZjI2MTA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CkBAIC0yMTYsNyArMjE2LDcgQEAgbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnMKICAgICByZXR1cm4g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRUeXBlcyhwYXN0ZWJvYXJkVHlw
ZXMpOwogfQogCi1sb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQorbG9uZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAg
cmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlw
ZShidWZmZXIsIHBhc3RlYm9hcmRUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCAwMjI1
NDk3MTEyNDZhOWYyMTljNzliYjZjZTIwYWRiYmQ5OTI5MzRjLi4yNDc5YzA0NzQyNjBkYzkyYzFk
Mjg2MDg5YTE4MGI0NjYzYWUzZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC0xMTYsNyArMTE2
LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUKICAgICB9CiAgICAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
ICo+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwgc2l6ZSk7Ci0gICAgbmV3Q2hhbmdlQ291
bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUo
YnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CisgICAgbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLmdldCgpLCBw
YXN0ZWJvYXJkVHlwZSk7CiB9CiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZDk5ZmZjNzI0NTY0MTdjZDkyZmJkZjQ0YjE0ZTFlNzQx
N2NiZTFiOC4uMmUyYjgxM2E1YjZmNWExYWZhMjA1ZTA1MWZkYWI4ZTgxMzBlYWNmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNDUyLDcgKzQ1Miw3IEBAIGxvbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zCiAgICAgcmV0dXJuIG5ld0NoYW5nZUNvdW50OwogfQogCi1sb25n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQorbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZl
ckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgU2hhcmVkTWVtb3J5OjpI
YW5kbGUgaGFuZGxlOwogICAgIGlmIChidWZmZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCmluZGV4IDM5OGVhMDNlNjliZjZmNGZlNzgxOGYyMTZlMmM2MDhmYjU1ODc0YjcuLjBm
ZjQ3NGE3NGM4OTlmOTY5Yzg2NTdlNjBjMDllZDJhN2UyMjUzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaApAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIGxvbmcgYWRk
VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICBsb25nIGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwg
Y29uc3QgU3RyaW5nJiB0b1Bhc3RlYm9hcmQpIG92ZXJyaWRlOwotICAgIGxvbmcgc2V0QnVmZmVy
Rm9yVHlwZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwor
ICAgIGxvbmcgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKICAgICBsb25nIHNldFBhdGhuYW1lc0ZvclR5cGUoY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKICAgICBsb25nIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgb3ZlcnJpZGU7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283302</attachid>
            <date>2016-07-10 23:33:44 -0700</date>
            <delta_ts>2016-07-11 00:34:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159548-20160711153302.patch</filename>
            <type>text/plain</type>
            <size>43495</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWEwMzhkZmEzNTcwM2Q4
ZDQ5ZDBhMGY4ZDExNjU2OTMwMWU3Y2NiMS4uMjA3NjI4OTE5ZWNiMWMwNjA2YWMzYzRlNzNlMGQ2
Yjc1YTFkNWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE2LTA3LTA5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIHBsYXRmb3JtL2VmbCBhbmQgcGxhdGZvcm0vbWFjIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGFsbCB1c2Ugb2YgUGFzc1Jl
ZlB0ciBhbmQgY2xlYW4gdXAgdW5uZWNlc3NhcnkgdGFicyBhbmQgc3BhY2VzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVi
b2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJF
Zmw6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNQcm92aWRlckVmbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcklPUy5tbToKKyAgICAgICAgKFNPRlRfTElOS19DT05TVEFOVCk6CisgICAgICAgICgt
W1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgaW5pdFdpdGhTcGVlY2hTeW50aGVzaXplcjpdKToK
KyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBtYXBTcGVlY2hSYXRlVG9QbGF0
Zm9ybVJhdGU6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlYWtV
dHRlcmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgcGF1c2Vd
KToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciByZXN1bWVdKToKKyAgICAg
ICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBjYW5jZWxdKToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoU3ludGhlc2lzV3JhcHBlciBzcGVlY2hTeW50aGVzaXplcjpkaWRTdGFydFNwZWVjaFV0
dGVyYW5jZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBzcGVlY2hT
eW50aGVzaXplcjpkaWRGaW5pc2hTcGVlY2hVdHRlcmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3ludGhlc2l6ZXI6ZGlkUGF1c2VTcGVlY2hVdHRl
cmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3lu
dGhlc2l6ZXI6ZGlkQ29udGludWVTcGVlY2hVdHRlcmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3ludGhlc2l6ZXI6ZGlkQ2FuY2VsU3BlZWNoVXR0
ZXJhbmNlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWVjaFN5
bnRoZXNpemVyOndpbGxTcGVha1JhbmdlT2ZTcGVlY2hTdHJpbmc6dXR0ZXJhbmNlOl0pOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWspOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6d3JpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9h
cmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0UGF0aG5hbWVzRm9y
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6Y29weSk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbToKKyAgICAgICAg
KC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOl0p
OgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOl0p
OgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHBhdXNlXSk6CisgICAgICAg
ICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgcmVzdW1lXSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFN5bnRoZXNpc1dyYXBwZXIgY2FuY2VsXSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRo
ZXNpc1dyYXBwZXIgc3BlZWNoU3ludGhlc2l6ZXI6ZGlkRmluaXNoU3BlYWtpbmc6XSk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VM
aXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFr
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b25NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1SZXBy
ZXNlbnRhdGlvbk1hYzo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aFZhbHVl
SW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6
ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVhayk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jazo6Y2FuY2VsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmg6CisKIDIwMTYtMDctMDggIEZyZWRlcmljIFdh
bmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBtb3ZhYmxl
bGltaXRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDA2YWFhODE5NDE0MTc4NWE3MDZhMGY1MjBmNmUy
NWFhYjE5M2UxOGIuLjE3NmNkMWI3NmNmYWViYjUxMDY3OTZjNzliZmI3YmFjZGY0ZWNjZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wNy0wOSAgR3l1eW91bmcgS2lt
ICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHVyZ2UgUGFzc1JlZlB0ciBp
biBwbGF0Zm9ybS9lZmwgYW5kIHBsYXRmb3JtL21hYyAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBhbGwgdXNlIG9mIFBhc3NSZWZQdHIgYW5k
IGNsZWFuIHVwIHVubmVjZXNzYXJ5IHRhYnMgYW5kIHNwYWNlcy4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0QnVmZmVyRm9yVHlwZSk6CisKIDIwMTYtMDctMDggIEppZXdlbiBUYW4gIDxqaWV3
ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWZpbmUgRFlMRF9NQUNPU1hfVkVSU0lPTl8x
MF8xMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDEyYTE3MTFmNDIyODM1ZmM4ZDQzM2RkZTNhM2JjOWU2ODhhMmI3
ODcuLmJiMzcyZjFjMWI1ZDk3OGQyMjk0ZDc2NGZkOWMwY2JhZjY0OTU5YTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxNi0wNy0wOSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2lt
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUHVyZ2UgUGFzc1JlZlB0ciBpbiBwbGF0Zm9ybS9lZmwg
YW5kIHBsYXRmb3JtL21hYyAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTU0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW92ZSBhbGwgdXNlIG9mIFBhc3NSZWZQdHIgYW5kIGNsZWFuIHVwIHVubmVj
ZXNzYXJ5IHRhYnMgYW5kIHNwYWNlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTYt
MDctMDcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb250ZW50
IEZpbHRlcmluZ10gTG9hZCBibG9ja2VkIHBhZ2VzIG1vcmUgbGlrZSBvdGhlciBlcnJvciBwYWdl
cyBhcmUgbG9hZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVn
eS5oCmluZGV4IDRiNmNhZTQ0ZGQ2ZWVkOTAzYzMzZWY3M2NhODQ0N2Q4M2EwYzU2NmQuLjYzMDA4
NWVmZmMxNTNhNzI4NDdhMmRjZDBkZjY4MDFhNDc2ZmFmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKICNpZm5kZWYgUGFzdGVib2FyZFN0cmF0ZWd5X2gKQEAgLTYwLDExICs2
MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpID0gMDsKICAg
ICB2aXJ0dWFsIENvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
ICAgICB2aXJ0dWFsIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwot
ICAgIAorCiAgICAgdmlydHVhbCBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2
aXJ0dWFsIGxvbmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBj
b3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJv
YXJkKSA9IDA7Ci0gICAgdmlydHVhbCBsb25nIHNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCBsb25nIHNldEJ1ZmZlckZvclR5cGUo
U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBzZXRQYXRobmFtZXNGb3JU
eXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgbG9uZyBzZXRT
dHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCAyOTEyODU4ZjBmNzlhNmUz
Yzc1NmZiODFlMzE0MjQyMDAxOThiYjc1Li4wYmI2ZTJkMjBmYzgwOTBiNGE5OGU2ZThmZGIzNTli
MDc5M2UyNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBh
c3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIFBs
YXRmb3JtUGFzdGVib2FyZF9oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybVBhc3RlYm9hcmQoKTsKICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBTdHJpbmcgdW5pcXVlTmFtZSgpOwotICAgIAorCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpOwogICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQYXRobmFtZXNGb3JUeXBlKFZl
Y3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwpA
QCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgcmV0
dXJuIDAgaWYgcGFzdGVib2FyZCBvd25lcnNoaXAgaGFzIGJlZW4gdGFrZW4gZnJvbSB1cy4KICAg
ICBXRUJDT1JFX0VYUE9SVCBsb25nIGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIGxvbmcgc2V0UGF0aG5hbWVzRm9y
VHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBsb25nIHNldFN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCmluZGV4
IGI1ZDE4NjBlOGFiZGJjOWQzZDY3ODM3ZDcyMGNiZDY3OWMxY2FmYzcuLjQ4ZWRhM2VkOWJkMDQ0
NjViOTg5YTU0MzM2NGQ2Mzg5MzFmYWEyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKQEAgLTcxLDEzICs3MSwxMyBAQCBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IFdlIGhhdmUgbXVsdGlwbGUgdmlydHVhbCBmdW5jdGlvbnMg
anVzdCBzbyB3ZSBjYW4gc3VwcG9ydCBhIG1vY2sgZm9yIHRlc3RpbmcuCiAgICAgLy8gU2VlbXMg
d2FzdGVmdWwuIFdvdWxkIGJlIG5pY2UgdG8gZmluZCBhIGJldHRlciB3YXkuCiAgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcigpOwotICAgIAorCiAg
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPj4mIHZv
aWNlTGlzdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzcGVhayhQYXNzUmVmUHRyPFBsYXRm
b3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPik7CisgICAgdmlydHVhbCB2b2lkIHNwZWFrKFJl
ZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJik7CiAgICAgdmlydHVhbCB2
b2lkIHBhdXNlKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWwoKTsKLSAgICAKKwogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQq
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlZWNoU3ludGhlc2l6ZXJDbGllbnQ7IH0KIAog
cHJvdGVjdGVkOgpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3ZvaWNl
TGlzdElzSW5pdGlhbGl6ZWQ7CiAgICAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudCog
bV9zcGVlY2hTeW50aGVzaXplckNsaWVudDsKLSAgICAKKwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIFJldGFpblB0cjxXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyPiBtX3BsYXRmb3JtU3BlZWNo
V3JhcHBlcjsKICNlbmRpZgpAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsPiBtX3BsYXRmb3JtU3Bl
ZWNoV3JhcHBlcjsKICNlbmRpZgogfTsKLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaApp
bmRleCAxYzY4MGUzM2Q1ZGEzOTY1NzM5N2ZjYmVlYWViYjIzNjU4MDdiZjc1Li5mY2VmZDg2OWMy
YjA5ODQwMTg3NzUzNTdkODQxODIxMjk1ZTMwYTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uKCkgeyB9CiAKICAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6
ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+IGRhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGRhdGEoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzRXF1YWwoY29uc3QgU2Vy
aWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKSBjb25zdCA9IDA7CiAKICAgICBlbnVtIFBs
YXRmb3JtVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5jcHAKaW5kZXggODJk
MTFhNjNmNGVkMDRlNWM5MzY2ZTZhZGNhMWFlMDlkZjg0NDA2YS4uNjE5N2JhOWZiODBjYmFlMjg1
NmMwOGZkOTg0OTczZTM3MTQ4YThmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZs
LmNwcApAQCAtMTM2LDE0ICsxMzYsMTQgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1By
b3ZpZGVyRWZsOjpyZXN1bWUoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbDo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQordm9pZCBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1Byb3ZpZGVyRWZsOjpzcGVhayhSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+JiYgdXR0ZXJhbmNlKQogewogICAgIGlmICghZW5naW5lSW5pdCgpIHx8ICF1
dHRlcmFuY2UpIHsKICAgICAgICAgZmlyZVNwZWVjaEV2ZW50KFNwZWVjaEVycm9yKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlOworICAgIG1f
dXR0ZXJhbmNlID0gV1RGTW92ZSh1dHRlcmFuY2UpOwogICAgIFN0cmluZyB2b2ljZSA9IHZvaWNl
TmFtZShtX3V0dGVyYW5jZSk7CiAgICAgZXNwZWFrX1NldFZvaWNlQnlOYW1lKHZvaWNlLnV0Zjgo
KS5kYXRhKCkpOwogICAgIGVzcGVha19TZXRQYXJhbWV0ZXIoZXNwZWFrUkFURSwgY29udmVydFJh
dGVUb0VzcGVha1ZhbHVlKG1fdXR0ZXJhbmNlLT5yYXRlKCkpLCAwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVy
RWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNQcm92aWRlckVmbC5oCmluZGV4IDA2ZDVmMWU3NzFiM2ViNWM2NGIzMmMzZGY4YTJmYWNmMDVi
MTJiZmEuLmQ2YmEyZWM5NDJmN2MxOWZmYTk3YmExYjEzOTMxYTc2YWYyZjMyMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1By
b3ZpZGVyRWZsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbml0aWFsaXplVm9pY2VMaXN0KFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZT4+Jik7CiAgICAgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7Ci0g
ICAgdm9pZCBzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Pik7CisgICAgdm9pZCBzcGVhayhSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U+JiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiBwcml2YXRlOgogICAgIGJvb2wgZW5naW5lSW5p
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJFZmwuY3BwCmluZGV4IDQ2N2M3ZTI5ZDEyMGZiZTNlZDVkZDFi
MDU3YmVhYzA0MGNlM2Q3NjguLjZmZDBmMjFkNmU0NzVmYWJmNGVkYTMxZTI0YzMwZjc4NTY5NTVj
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckVmbC5jcHAKQEAgLTYzLDEwICs2MywxMCBAQCB2b2lkIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJlc3VtZSgpCiAgICAgbV9wbGF0Zm9ybVNwZWVjaFdy
YXBwZXItPnJlc3VtZSgpOwogfQogCi12b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNw
ZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5j
ZSkKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWsoUmVmUHRyPFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYmIHV0dGVyYW5jZSkKIHsKICAgICBBU1NFUlQobV9w
bGF0Zm9ybVNwZWVjaFdyYXBwZXIpOwotICAgIG1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLT5zcGVh
ayh1dHRlcmFuY2UpOworICAgIG1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLT5zcGVhayhXVEZNb3Zl
KHV0dGVyYW5jZSkpOwogfQogCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNl
bCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0
ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQppbmRleCAxNTYzYTEyNWM0ZDJkMGJhMjkyMzAxN2E4NjkwZjkwZmE4NmJhMzQw
Li5kODg4NmZiN2Y3MDllYWQ1YmM3NTk2MGVlNmNlMzM2MGU3MzIwN2JmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAg
LTEyNSw3ICsxMjUsNyBAQCBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKQogICAgIHJldHVybiAwOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVi
b2FyZDo6c2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0
cmluZyYpCitsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRC
dWZmZXIqLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cklPUy5tbQppbmRleCA2NjhiMTUyNWQ2YmNkMjViZDI1YmVjZTYzMDcwNTc2ODM4ZGFlNzA3Li4z
Yjg4YWRmZmQ4NTA2NWZlOWExNGUwYzU2Mjc5NWIzNDAyMzU2NjlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cklPUy5tbQpAQCAtOSw3ICs5LDcgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCiAg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECiAgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCkBAIC01NSw3ICs1NSw3IEBAIFNP
RlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNw
ZWVjaFJhdGUsIGZsb2F0KQogICAgIFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIq
IG1fc3ludGhlc2l6ZXJPYmplY3Q7CiAgICAgLy8gSG9sZCBhIFJlZiB0byB0aGUgdXR0ZXJhbmNl
IHNvIHRoYXQgaXQgd29uJ3QgZGlzYXBwZWFyIHVudGlsIHRoZSBzeW50aCBpcyBkb25lIHdpdGgg
aXQuCiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
PiBtX3V0dGVyYW5jZTsKLSAgICAKKwogICAgIFJldGFpblB0cjxBVlNwZWVjaFN5bnRoZXNpemVy
PiBtX3N5bnRoZXNpemVyOwogfQogCkBAIC03MCw3ICs3MCw3IEBAIFNPRlRfTElOS19DT05TVEFO
VChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0
KQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIAorCiAgICAgbV9zeW50aGVzaXplck9iamVjdCA9IHN5bnRoZXNpemVyOwogICAgIHJl
dHVybiBzZWxmOwogfQpAQCAtODMsNyArODMsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3Vu
ZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKICAgICAg
ICAgcmF0ZSAqPSBBVlNwZWVjaFV0dGVyYW5jZURlZmF1bHRTcGVlY2hSYXRlOwogICAgIGVsc2UK
ICAgICAgICAgcmF0ZSA9IEFWU3BlZWNoVXR0ZXJhbmNlRGVmYXVsdFNwZWVjaFJhdGUgKyAoKHJh
dGUgLSAxKSAqIChBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlIC0gQVZTcGVlY2hV
dHRlcmFuY2VEZWZhdWx0U3BlZWNoUmF0ZSkpOwotICAgIAorCiAgICAgcmV0dXJuIHJhdGU7CiB9
CiAKQEAgLTkyLDEwICs5MiwxMCBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBB
VlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKICAgICAvLyBXaGVuIHNw
ZWFrIGlzIGNhbGxlZCB3ZSBzaG91bGQgbm90IGhhdmUgYW4gZXhpc3Rpbmcgc3BlZWNoIHV0dGVy
YW5jZSBvdXRzdGFuZGluZy4KICAgICBBU1NFUlQoIW1fdXR0ZXJhbmNlKTsKICAgICBBU1NFUlQo
dXR0ZXJhbmNlKTsKLSAgICAKKwogICAgIGlmICghdXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47
Ci0gICAgCisKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBpZiAoIW1fc3lu
dGhlc2l6ZXIpIHsKICAgICAgICAgbV9zeW50aGVzaXplciA9IGFkb3B0TlMoW2FsbG9jQVZTcGVl
Y2hTeW50aGVzaXplckluc3RhbmNlKCkgaW5pdF0pOwpAQCAtMTEzLDcgKzExMyw3IEBAIFNPRlRf
TElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVj
aFJhdGUsIGZsb2F0KQogICAgICAgICAgICAgdm9pY2VMYW5ndWFnZSA9IHV0dGVyYW5jZS0+bGFu
ZygpOwogICAgIH0gZWxzZQogICAgICAgICB2b2ljZUxhbmd1YWdlID0gdXR0ZXJhbmNlLT52b2lj
ZSgpLT5sYW5nKCk7Ci0gICAgCisKICAgICBBVlNwZWVjaFN5bnRoZXNpc1ZvaWNlICphdlZvaWNl
ID0gbmlsOwogICAgIGlmICh2b2ljZUxhbmd1YWdlKQogICAgICAgICBhdlZvaWNlID0gW0FWU3Bl
ZWNoU3ludGhlc2lzVm9pY2VDbGFzcyB2b2ljZVdpdGhMYW5ndWFnZTp2b2ljZUxhbmd1YWdlXTsK
QEAgLTEyNSw3ICsxMjUsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNw
ZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKICAgICBbYXZVdHRlcmFuY2Ug
c2V0UGl0Y2hNdWx0aXBsaWVyOnV0dGVyYW5jZS0+cGl0Y2goKV07CiAgICAgW2F2VXR0ZXJhbmNl
IHNldFZvaWNlOmF2Vm9pY2VdOwogICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlOwotICAgIAor
CiAgICAgW21fc3ludGhlc2l6ZXIgc3BlYWtVdHRlcmFuY2U6YXZVdHRlcmFuY2VdOwogICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCBTT0ZUX0xJTktf
Q09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRl
LCBmbG9hdCkKIHsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47Ci0gICAg
CisKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBbbV9zeW50aGVzaXplciBw
YXVzZVNwZWFraW5nQXRCb3VuZGFyeTpBVlNwZWVjaEJvdW5kYXJ5SW1tZWRpYXRlXTsKICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBAIC0xNDQsNyArMTQ0LDcgQEAgU09GVF9MSU5LX0NP
TlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwg
ZmxvYXQpCiB7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAor
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgW21fc3ludGhlc2l6ZXIgY29u
dGludWVTcGVha2luZ107CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpAQCAtMTU0LDcg
KzE1NCw3IEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJh
bmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQogewogICAgIGlmICghbV91dHRlcmFuY2UpCiAg
ICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwog
ICAgIFttX3N5bnRoZXNpemVyIHN0b3BTcGVha2luZ0F0Qm91bmRhcnk6QVZTcGVlY2hCb3VuZGFy
eUltbWVkaWF0ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwpAQCAtMTY2LDcgKzE2
Niw3IEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNl
TWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQogICAgIFVOVVNFRF9QQVJBTSh1dHRlcmFuY2UpOwog
ICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIG1fc3lu
dGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRTdGFydFNwZWFraW5nKG1fdXR0ZXJhbmNlKTsK
IH0KIApAQCAtMTc2LDExICsxNzYsMTEgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlv
biwgQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgVU5VU0VE
X1BBUkFNKHV0dGVyYW5jZSk7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJu
OwotICAgIAorCiAgICAgLy8gQ2xlYXIgdGhlIG1fdXR0ZXJhbmNlIHZhcmlhYmxlIGluIGNhc2Ug
ZmluaXNoIHNwZWFraW5nIGtpY2tzIG9mZiBhIG5ldyBzcGVha2luZyBqb2IgaW1tZWRpYXRlbHku
CiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBw
bGF0Zm9ybVV0dGVyYW5jZSA9IG1fdXR0ZXJhbmNlOwogICAgIG1fdXR0ZXJhbmNlID0gbnVsbHB0
cjsKLSAgICAKKwogICAgIG1fc3ludGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRGaW5pc2hT
cGVha2luZyhwbGF0Zm9ybVV0dGVyYW5jZSk7CiB9CiAKQEAgLTE5MCw3ICsxOTAsNyBAQCBTT0ZU
X0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVl
Y2hSYXRlLCBmbG9hdCkKICAgICBVTlVTRURfUEFSQU0odXR0ZXJhbmNlKTsKICAgICBpZiAoIW1f
dXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBtX3N5bnRoZXNpemVyT2Jq
ZWN0LT5jbGllbnQoKS0+ZGlkUGF1c2VTcGVha2luZyhtX3V0dGVyYW5jZSk7CiB9CiAKQEAgLTIw
MCw3ICsyMDAsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0
dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKICAgICBVTlVTRURfUEFSQU0odXR0ZXJh
bmNlKTsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAg
ICBtX3N5bnRoZXNpemVyT2JqZWN0LT5jbGllbnQoKS0+ZGlkUmVzdW1lU3BlYWtpbmcobV91dHRl
cmFuY2UpOwogfQogCkBAIC0yMTAsMTEgKzIxMCwxMSBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZG
b3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKICAg
ICBVTlVTRURfUEFSQU0odXR0ZXJhbmNlKTsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICAvLyBDbGVhciB0aGUgbV91dHRlcmFuY2UgdmFyaWFibGUg
aW4gY2FzZSBmaW5pc2ggc3BlYWtpbmcga2lja3Mgb2ZmIGEgbmV3IHNwZWFraW5nIGpvYiBpbW1l
ZGlhdGVseS4KICAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2U+IHBsYXRmb3JtVXR0ZXJhbmNlID0gbV91dHRlcmFuY2U7CiAgICAgbV91dHRlcmFuY2Ug
PSBudWxscHRyOwotICAgIAorCiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xpZW50KCktPmRp
ZEZpbmlzaFNwZWFraW5nKHBsYXRmb3JtVXR0ZXJhbmNlKTsKIH0KIApAQCAtMjIyLDEwICsyMjIs
MTAgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VN
YXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN5bnRoZXNpemVy
KTsKICAgICBVTlVTRURfUEFSQU0odXR0ZXJhbmNlKTsKLSAgICAKKwogICAgIGlmICghbV91dHRl
cmFuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vIGlPUyBvbmx5IHN1cHBvcnRz
IHdvcmQgYm91bmRhcmllcy4KICAgICBtX3N5bnRoZXNpemVyT2JqZWN0LT5jbGllbnQoKS0+Ym91
bmRhcnlFdmVudE9jY3VycmVkKG1fdXR0ZXJhbmNlLCBXZWJDb3JlOjpTcGVlY2hXb3JkQm91bmRh
cnksIGNoYXJhY3RlclJhbmdlLmxvY2F0aW9uKTsKIH0KQEAgLTI2NiwxMSArMjY2LDExIEBAIHZv
aWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVzdW1lKCkKICAgICBbbV9wbGF0Zm9ybVNw
ZWVjaFdyYXBwZXIuZ2V0KCkgcmVzdW1lXTsKIH0KIAotdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjpzcGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
PiB1dHRlcmFuY2UpCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFJlZlB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJiB1dHRlcmFuY2UpCiB7CiAgICAg
aWYgKCFtX3BsYXRmb3JtU3BlZWNoV3JhcHBlcikKICAgICAgICAgbV9wbGF0Zm9ybVNwZWVjaFdy
YXBwZXIgPSBhZG9wdE5TKFtbV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBhbGxvY10gaW5pdFdp
dGhTcGVlY2hTeW50aGVzaXplcjp0aGlzXSk7Ci0gICAgCisKICAgICBbbV9wbGF0Zm9ybVNwZWVj
aFdyYXBwZXIuZ2V0KCkgc3BlYWtVdHRlcmFuY2U6dXR0ZXJhbmNlLmdldCgpXTsKIH0KIApAQCAt
Mjc4LDcgKzI3OCw3IEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y2FuY2VsKCkK
IHsKICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgY2FuY2VsXTsKIH0KLSAgICAK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5U
SEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmlu
ZGV4IDc2YTc4NDE1ODdmMmM5OTI5Y2U4MzEwZjkzOTk1MTkyZmY2MTE5ZDkuLmViMmNiOWE3Mjhk
MmNiN2QwYjRhYzZkMzEwMDU4NjVmMzhmODY3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0xNjksMTUgKzE2OSwxNSBAQCB2b2lkIFBhc3Rl
Ym9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogCiAgICAg
QVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5z
aXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBl
cy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29u
dGVudC5jbGllbnREYXRhW2ldLCBjb250ZW50LmNsaWVudFR5cGVzW2ldLCBtX3Bhc3RlYm9hcmRO
YW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmNsaWVudERhdGFbaV0u
Z2V0KCksIGNvbnRlbnQuY2xpZW50VHlwZXNbaV0sIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGlm
IChjb250ZW50LmNhblNtYXJ0Q29weU9yRGVsZXRlKQogICAgICAgICBtX2NoYW5nZUNvdW50ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JU
eXBlKDAsIFdlYlNtYXJ0UGFzdGVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICBp
ZiAoY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KQotICAgICAgICBtX2NoYW5nZUNvdW50
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJG
b3JUeXBlKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCwgV2ViQXJjaGl2ZVBib2FyZFR5
cGUsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRl
bnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC5nZXQoKSwgV2ViQXJjaGl2ZVBib2FyZFR5cGUsIG1f
cGFzdGVib2FyZE5hbWUpOwogICAgIGlmIChjb250ZW50LmRhdGFJblJURkRGb3JtYXQpCi0gICAg
ICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0
ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5SVEZERm9ybWF0LCBOU1JURkRQ
Ym9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlw
ZShjb250ZW50LmRhdGFJblJURkRGb3JtYXQuZ2V0KCksIE5TUlRGRFBib2FyZFR5cGUsIG1fcGFz
dGVib2FyZE5hbWUpOwogICAgIGlmIChjb250ZW50LmRhdGFJblJURkZvcm1hdCkKLSAgICAgICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRhdGFJblJURkZvcm1hdCwgTlNSVEZQYm9hcmRU
eXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250
ZW50LmRhdGFJblJURkZvcm1hdC5nZXQoKSwgTlNSVEZQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmRO
YW1lKTsKICAgICBpZiAoIWNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0LmlzTnVsbCgpKQogICAg
ICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5zZXRTdHJpbmdGb3JUeXBlKGNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0LCBOU1N0
cmluZ1Bib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwogfQpAQCAtMjYzLDcgKzI2Myw3IEBA
IHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJk
SW1hZ2UpCiAgICAgQVNTRVJUKE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNv
dXJjZU1JTUVUeXBlKHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKSk7CiAKICAgICBt
X2NoYW5nZUNvdW50ID0gd3JpdGVVUkxGb3JUeXBlcyh3cml0YWJsZVR5cGVzRm9ySW1hZ2UoKSwg
bV9wYXN0ZWJvYXJkTmFtZSwgcGFzdGVib2FyZEltYWdlLnVybCk7Ci0gICAgbV9jaGFuZ2VDb3Vu
dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVy
Rm9yVHlwZShTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGEoaW1hZ2VEYXRhKSwgTlNUSUZGUGJvYXJk
VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRC
dWZmZXI6OndyYXBDRkRhdGEoaW1hZ2VEYXRhKS5wdHIoKSwgTlNUSUZGUGJvYXJkVHlwZSwgbV9w
YXN0ZWJvYXJkTmFtZSk7CiAgICAgd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoZmls
ZVdyYXBwZXIocGFzdGVib2FyZEltYWdlKSwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3Vu
dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Q
YXN0ZWJvYXJkTWFjLm1tCmluZGV4IGFlYzRhNjk0NDBlZjBkNjRiZTZhMmY3OGI5NmYwZjdkNDk0
NzA0ODcuLjEwZGIzZGJiYjIzM2E5MzU4YjM0YmI5ODEwZDMxZjg5MGUzNjkyYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bQpAQCAtNDAsNyArNDAsNyBAQCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OlBsYXRmb3JtUGFzdGVib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcykKIHsKICAgICBOU0FycmF5ICpwYXN0ZWJv
YXJkVHlwZXMgPSBbbV9wYXN0ZWJvYXJkLmdldCgpIHR5cGVzXTsKLSAgICAKKwogICAgIGZvciAo
TlNVSW50ZWdlciBpID0gMDsgaSA8IFtwYXN0ZWJvYXJkVHlwZXMgY291bnRdOyBpKyspCiAgICAg
ICAgIHR5cGVzLmFwcGVuZChbcGFzdGVib2FyZFR5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwogfQpA
QCAtNTgsNyArNTgsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0UGF0aG5hbWVzRm9y
VHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdAogICAgIE5TQXJyYXkqIHBh
dGhzID0gW21fcGFzdGVib2FyZC5nZXQoKSBwcm9wZXJ0eUxpc3RGb3JUeXBlOnBhc3RlYm9hcmRU
eXBlXTsKICAgICBpZiAoW3BhdGhzIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsK
ICAgICAgICAgcGF0aG5hbWVzLmFwcGVuZCgoTlNTdHJpbmcgKilwYXRocyk7Ci0gICAgICAgIHJl
dHVybjsgICAgICAgIAorICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGZvciAoTlNVSW50ZWdl
ciBpID0gMDsgaSA8IFtwYXRocyBjb3VudF07IGkrKykKICAgICAgICAgcGF0aG5hbWVzLmFwcGVu
ZChbcGF0aHMgb2JqZWN0QXRJbmRleDppXSk7CkBAIC04NSwxNCArODUsMTQgQEAgU3RyaW5nIFBs
YXRmb3JtUGFzdGVib2FyZDo6dW5pcXVlTmFtZSgpCiBDb2xvciBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OmNvbG9yKCkKIHsKICAgICBOU0NvbG9yICpjb2xvciA9IFtOU0NvbG9yIGNvbG9yRnJvbVBhc3Rl
Ym9hcmQ6bV9wYXN0ZWJvYXJkLmdldCgpXTsKLSAgICAKLSAgICAvLyBUaGUgY29sb3IgbWF5IG5v
dCBiZSBpbiBhbiBSR0IgY29sb3JzcGFjZS4gVGhpcyBjb21tb25seSBvY2N1cnMgd2hlbiBhIGNv
bG9yIGlzIAorCisgICAgLy8gVGhlIGNvbG9yIG1heSBub3QgYmUgaW4gYW4gUkdCIGNvbG9yc3Bh
Y2UuIFRoaXMgY29tbW9ubHkgb2NjdXJzIHdoZW4gYSBjb2xvciBpcwogICAgIC8vIGRyYWdnZWQg
ZnJvbSB0aGUgTlNDb2xvclBhbmVsIGdyYXlzY2FsZSBwaWNrZXIuCiAgICAgaWYgKFtbY29sb3Ig
Y29sb3JTcGFjZV0gY29sb3JTcGFjZU1vZGVsXSAhPSBOU1JHQkNvbG9yU3BhY2VNb2RlbCkKICAg
ICAgICAgY29sb3IgPSBbY29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TQ2FsaWJyYXRl
ZFJHQkNvbG9yU3BhY2VdOwotICAgIAotICAgIHJldHVybiBtYWtlUkdCQSgoaW50KShbY29sb3Ig
cmVkQ29tcG9uZW50XSAqIDI1NS4wICsgMC41KSwgKGludCkoW2NvbG9yIGdyZWVuQ29tcG9uZW50
XSAqIDI1NS4wICsgMC41KSwgCi0gICAgICAgICAgICAgICAgICAgIChpbnQpKFtjb2xvciBibHVl
Q29tcG9uZW50XSAqIDI1NS4wICsgMC41KSwgKGludCkoW2NvbG9yIGFscGhhQ29tcG9uZW50XSAq
IDI1NS4wICsgMC41KSk7ICAgIAorCisgICAgcmV0dXJuIG1ha2VSR0JBKChpbnQpKFtjb2xvciBy
ZWRDb21wb25lbnRdICogMjU1LjAgKyAwLjUpLCAoaW50KShbY29sb3IgZ3JlZW5Db21wb25lbnRd
ICogMjU1LjAgKyAwLjUpLAorICAgICAgICAoaW50KShbY29sb3IgYmx1ZUNvbXBvbmVudF0gKiAy
NTUuMCArIDAuNSksIChpbnQpKFtjb2xvciBhbHBoYUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSkp
OwogfQogCiBVUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwoKQpAQCAtMTA0LDEzICsxMDQsMTMg
QEAgbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVi
b2FyZCkKIHsKICAgICBOU1Bhc3RlYm9hcmQqIHBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBh
c3RlYm9hcmRXaXRoTmFtZTpmcm9tUGFzdGVib2FyZF07CiAgICAgTlNBcnJheSogdHlwZXMgPSBb
cGFzdGVib2FyZCB0eXBlc107Ci0gICAgCisKICAgICBbbV9wYXN0ZWJvYXJkLmdldCgpIGFkZFR5
cGVzOnR5cGVzIG93bmVyOm5pbF07CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3R5
cGVzIGNvdW50XTsgaSsrKSB7CiAgICAgICAgIE5TU3RyaW5nKiB0eXBlID0gW3R5cGVzIG9iamVj
dEF0SW5kZXg6aV07CiAgICAgICAgIGlmICghW21fcGFzdGVib2FyZC5nZXQoKSBzZXREYXRhOltw
YXN0ZWJvYXJkIGRhdGFGb3JUeXBlOnR5cGVdIGZvclR5cGU6dHlwZV0pCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9ICAgIAorICAgIH0KICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKIH0K
IApAQCAtMTM1LDcgKzEzNSw3IEBAIGxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQogICAgIHJldHVybiBbbV9wYXN0
ZWJvYXJkLmdldCgpIGRlY2xhcmVUeXBlczp0eXBlcy5nZXQoKSBvd25lcjpuaWxdOwogfQogCi1s
b25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorbG9uZyBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpCiB7CiAgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBb
bV9wYXN0ZWJvYXJkIHNldERhdGE6YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KSA6IG5pbCBmb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkK
QEAgLTE0NSw3ICsxNDUsNyBAQCBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9y
VHlwZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBjb25zdAogCiBsb25nIFBsYXRm
b3JtUGFzdGVib2FyZDo6c2V0UGF0aG5hbWVzRm9yVHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewotICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gcGF0aHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRdKTsgICAgCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBwYXRocyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcGF0aG5hbWVzLnNpemUoKTsgKytpKQogICAgICAgICBbcGF0aHMuZ2V0KCkgYWRkT2Jq
ZWN0OltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpwYXRobmFtZXNbaV1dXTsKICAgICBCT09MIGRp
ZFdyaXRlRGF0YSA9IFttX3Bhc3RlYm9hcmQuZ2V0KCkgc2V0UHJvcGVydHlMaXN0OnBhdGhzLmdl
dCgpIGZvclR5cGU6cGFzdGVib2FyZFR5cGVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQppbmRleCBl
MmViZDFiN2U4YzY4NWY4OTg2ZTc0YTg2NDljNzVjOGM5NzAzNDQwLi5jOTRhNDg5YjIxMDA3Y2Nh
NzZiMTFlZTJhNzc2MDg1YzRkMjc5MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpAQCAtMzAs
NyArMzAsNiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKICNp
bmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8QXBwS2l0L05TU3Bl
ZWNoU3ludGhlc2l6ZXIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpAQCAtNDAs
NyArMzksNyBAQAogICAgIFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIG1fc3lu
dGhlc2l6ZXJPYmplY3Q7CiAgICAgLy8gSG9sZCBhIFJlZiB0byB0aGUgdXR0ZXJhbmNlIHNvIHRo
YXQgaXQgd29uJ3QgZGlzYXBwZWFyIHVudGlsIHRoZSBzeW50aCBpcyBkb25lIHdpdGggaXQuCiAg
ICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIG1fdXR0ZXJhbmNl
OwotICAgIAorCiAgICAgUmV0YWluUHRyPE5TU3BlZWNoU3ludGhlc2l6ZXI+IG1fc3ludGhlc2l6
ZXI7CiAgICAgZmxvYXQgbV9iYXNlUGl0Y2g7CiB9CkBAIC01Niw3ICs1NSw3IEBACiB7CiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisK
ICAgICBtX3N5bnRoZXNpemVyT2JqZWN0ID0gc3ludGhlc2l6ZXI7CiAgICAgW3NlbGYgdXBkYXRl
QmFzZVBpdGNoRm9yU3ludGhlc2l6ZXJdOwogICAgIHJldHVybiBzZWxmOwpAQCAtODgsMTYgKzg3
LDE2IEBACiAgICAgLy8gV2hlbiBzcGVhayBpcyBjYWxsZWQgd2Ugc2hvdWxkIG5vdCBoYXZlIGFu
IGV4aXN0aW5nIHNwZWVjaCB1dHRlcmFuY2Ugb3V0c3RhbmRpbmcuCiAgICAgQVNTRVJUKCFtX3V0
dGVyYW5jZSk7CiAgICAgQVNTRVJUKHV0dGVyYW5jZSk7Ci0gICAgCisKICAgICBpZiAoIW1fc3lu
dGhlc2l6ZXIpIHsKICAgICAgICAgbV9zeW50aGVzaXplciA9IGFkb3B0TlMoW1tOU1NwZWVjaFN5
bnRoZXNpemVyIGFsbG9jXSBpbml0V2l0aFZvaWNlOm5pbF0pOwogICAgICAgICBbbV9zeW50aGVz
aXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKICAgICB9Ci0gICAgCisKICAgICAvLyBGaW5kIGlmIHdl
IHNob3VsZCB1c2UgYSBzcGVjaWZpYyB2b2ljZSBiYXNlZCBvbiB0aGUgdm9pY2VVUkkgaW4gdXR0
ZXJhbmNlLgogICAgIC8vIE90aGVyd2lzZSwgZmluZCB0aGUgdm9pY2UgdGhhdCBtYXRjaGVzIHRo
ZSBsYW5ndWFnZS4gVGhlIE1hYyBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IHZvaWNlIHBlciBsYW5n
dWFnZSwgc28gdGhlIGZpcnN0CiAgICAgLy8gb25lIHdpbGwgaGF2ZSB0byBkby4KLSAgICAKKwog
ICAgIFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UqIHV0dGVyYW5jZVZvaWNl
ID0gdXR0ZXJhbmNlLT52b2ljZSgpOwogICAgIC8vIElmIG5vIHZvaWNlIHdhcyBzcGVjaWZpZWQs
IHRyeSB0byBtYXRjaCBieSBsYW5ndWFnZS4KICAgICBpZiAoIXV0dGVyYW5jZVZvaWNlICYmICF1
dHRlcmFuY2UtPmxhbmcoKS5pc0VtcHR5KCkpIHsKQEAgLTEwOSw3ICsxMDgsNyBAQAogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgTlNTdHJpbmcgKnZvaWNlVVJJ
ID0gbmlsOwogICAgIGlmICh1dHRlcmFuY2VWb2ljZSkKICAgICAgICAgdm9pY2VVUkkgPSB1dHRl
cmFuY2VWb2ljZS0+dm9pY2VVUkkoKTsKQEAgLTEyNCwxNCArMTIzLDE0IEBACiAgICAgICAgIC8v
IFJlc2V0IHRoZSBiYXNlIHBpdGNoIHdoZW5ldmVyIHdlIGNoYW5nZSB2b2ljZXMuCiAgICAgICAg
IHVwZGF0ZVBpdGNoID0gWUVTOwogICAgIH0KLSAgICAKKwogICAgIGlmIChtX2Jhc2VQaXRjaCA9
PSAwIHx8IHVwZGF0ZVBpdGNoKQotICAgICAgICBbc2VsZiB1cGRhdGVCYXNlUGl0Y2hGb3JTeW50
aGVzaXplcl07ICAgIAotICAgIAorICAgICAgICBbc2VsZiB1cGRhdGVCYXNlUGl0Y2hGb3JTeW50
aGVzaXplcl07CisKICAgICBbbV9zeW50aGVzaXplciBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJl
cldpdGhGbG9hdDpbc2VsZiBjb252ZXJ0UGl0Y2hUb05TU3BlZWNoVmFsdWU6dXR0ZXJhbmNlLT5w
aXRjaCgpXV0gZm9yUHJvcGVydHk6TlNTcGVlY2hQaXRjaEJhc2VQcm9wZXJ0eSBlcnJvcjpuaWxd
OwogICAgIFttX3N5bnRoZXNpemVyIHNldFJhdGU6W3NlbGYgY29udmVydFJhdGVUb1dQTTp1dHRl
cmFuY2UtPnJhdGUoKV1dOwogICAgIFttX3N5bnRoZXNpemVyIHNldFZvbHVtZTp1dHRlcmFuY2Ut
PnZvbHVtZSgpXTsKLSAgICAKKwogICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlOwogICAgIFtt
X3N5bnRoZXNpemVyIHN0YXJ0U3BlYWtpbmdTdHJpbmc6dXR0ZXJhbmNlLT50ZXh0KCldOwogICAg
IG1fc3ludGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRTdGFydFNwZWFraW5nKHV0dGVyYW5j
ZSk7CkBAIC0xNDEsNyArMTQwLDcgQEAKIHsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICBbbV9zeW50aGVzaXplciBwYXVzZVNwZWFraW5nQXRCb3Vu
ZGFyeTpOU1NwZWVjaEltbWVkaWF0ZUJvdW5kYXJ5XTsKICAgICBtX3N5bnRoZXNpemVyT2JqZWN0
LT5jbGllbnQoKS0+ZGlkUGF1c2VTcGVha2luZyhtX3V0dGVyYW5jZSk7CiB9CkBAIC0xNTAsNyAr
MTQ5LDcgQEAKIHsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47Ci0gICAg
CisKICAgICBbbV9zeW50aGVzaXplciBjb250aW51ZVNwZWFraW5nXTsKICAgICBtX3N5bnRoZXNp
emVyT2JqZWN0LT5jbGllbnQoKS0+ZGlkUmVzdW1lU3BlYWtpbmcobV91dHRlcmFuY2UpOwogfQpA
QCAtMTU5LDcgKzE1OCw3IEBACiB7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0
dXJuOwotICAgIAorCiAgICAgW21fc3ludGhlc2l6ZXIgc3RvcFNwZWFraW5nQXRCb3VuZGFyeTpO
U1NwZWVjaEltbWVkaWF0ZUJvdW5kYXJ5XTsKICAgICBtX3N5bnRoZXNpemVyT2JqZWN0LT5jbGll
bnQoKS0+c3BlYWtpbmdFcnJvck9jY3VycmVkKG1fdXR0ZXJhbmNlKTsKICAgICBtX3V0dGVyYW5j
ZSA9IDA7CkBAIC0xNzYsMTMgKzE3NSwxMyBAQAogewogICAgIGlmICghbV91dHRlcmFuY2UpCiAg
ICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIAor
CiAgICAgLy8gQ2xlYXIgdGhlIG1fdXR0ZXJhbmNlIHZhcmlhYmxlIGluIGNhc2UgZmluaXNoIHNw
ZWFraW5nIGtpY2tzIG9mZiBhIG5ldyBzcGVha2luZyBqb2IgaW1tZWRpYXRlbHkuCiAgICAgV2Vi
Q29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSA9IG1fdXR0
ZXJhbmNlOwogICAgIG1fdXR0ZXJhbmNlID0gMDsKLSAgICAKKwogICAgIGlmIChmaW5pc2hlZFNw
ZWFraW5nKQogICAgICAgICBtX3N5bnRoZXNpemVyT2JqZWN0LT5jbGllbnQoKS0+ZGlkRmluaXNo
U3BlYWtpbmcodXR0ZXJhbmNlKTsKICAgICBlbHNlCkBAIC0yMjMsMjMgKzIyMiwyMyBAQCB2b2lk
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmluaXRpYWxpemVWb2ljZUxpc3QoKQogICAgIGZv
ciAoTlNVSW50ZWdlciBrID0gMDsgayA8IGNvdW50OyBrKyspIHsKICAgICAgICAgTlNTdHJpbmcg
KnZvaWNlTmFtZSA9IFthdmFpbGFibGVWb2ljZXMgb2JqZWN0QXRJbmRleDprXTsKICAgICAgICAg
TlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gW05TU3BlZWNoU3ludGhlc2l6ZXIgYXR0cmlidXRl
c0ZvclZvaWNlOnZvaWNlTmFtZV07Ci0gICAgICAgIAorCiAgICAgICAgIE5TU3RyaW5nICp2b2lj
ZVVSSSA9IFthdHRyaWJ1dGVzIG9iamVjdEZvcktleTpOU1ZvaWNlSWRlbnRpZmllcl07CiAgICAg
ICAgIE5TU3RyaW5nICpuYW1lID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVm9pY2VOYW1l
XTsKICAgICAgICAgTlNTdHJpbmcgKmxhbmd1YWdlID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5
Ok5TVm9pY2VMb2NhbGVJZGVudGlmaWVyXTsKICAgICAgICAgTlNMb2NhbGUgKmxvY2FsZSA9IFtb
TlNMb2NhbGUgYWxsb2NdIGluaXRXaXRoTG9jYWxlSWRlbnRpZmllcjpsYW5ndWFnZV07CiAgICAg
ICAgIE5TU3RyaW5nICpkZWZhdWx0Vm9pY2VVUkkgPSB3a1NwZWVjaFN5bnRoZXNpc0dldERlZmF1
bHRWb2ljZUlkZW50aWZpZXJGb3JMb2NhbGUobG9jYWxlKTsKICAgICAgICAgW2xvY2FsZSByZWxl
YXNlXTsKLSAgICAgICAgCisKICAgICAgICAgLy8gQ2hhbmdlIHRvIEJDUC00NyBmb3JtYXQgYXMg
ZGVmaW5lZCBieSBzcGVjLgogICAgICAgICBsYW5ndWFnZSA9IFtsYW5ndWFnZSBzdHJpbmdCeVJl
cGxhY2luZ09jY3VycmVuY2VzT2ZTdHJpbmc6QCJfIiB3aXRoU3RyaW5nOkAiLSJdOwotICAgICAg
ICAKKwogICAgICAgICBib29sIGlzRGVmYXVsdCA9IFtkZWZhdWx0Vm9pY2VVUkkgaXNFcXVhbFRv
U3RyaW5nOnZvaWNlVVJJXTsKLSAgICAgICAgCisKICAgICAgICAgbV92b2ljZUxpc3QuYXBwZW5k
KFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZSh2b2ljZVVSSSwgbmFtZSwgbGFu
Z3VhZ2UsIHRydWUsIGlzRGVmYXVsdCkpOwogICAgIH0KIH0KLSAgICAKKwogdm9pZCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyOjpwYXVzZSgpCiB7CiAgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFw
cGVyLmdldCgpIHBhdXNlXTsKQEAgLTI0OSwxMiArMjQ4LDEyIEBAIHZvaWQgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcjo6cmVzdW1lKCkKIHsKICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIu
Z2V0KCkgcmVzdW1lXTsKIH0KLSAgICAKLXZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6
c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJh
bmNlKQorCit2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFJlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJiB1dHRlcmFuY2UpCiB7CiAgICAgaWYgKCFt
X3BsYXRmb3JtU3BlZWNoV3JhcHBlcikKICAgICAgICAgbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIg
PSBhZG9wdE5TKFtbV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBhbGxvY10gaW5pdFdpdGhTcGVl
Y2hTeW50aGVzaXplcjp0aGlzXSk7Ci0gICAgCisKICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBw
ZXIuZ2V0KCkgc3BlYWtVdHRlcmFuY2U6dXR0ZXJhbmNlLmdldCgpXTsKIH0KIApAQCAtMjYyLDcg
KzI2MSw3IEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6Y2FuY2VsKCkKIHsKICAg
ICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgY2FuY2VsXTsKIH0KLSAgICAKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oCmluZGV4IDFiY2Y4N2FkOGFiZWM1MmNm
M2UzYmNkNzNiZDkzNzBkMmZlZTIwZWEuLjIyMzg2YjVhZjM2OTVkMjcyNDE3NmNjNGRjZWRhNjkx
OTYxZTRlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2Vu
dGF0aW9uPiBjcmVhdGUoaWQpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplKEpTQzo6
RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
ZGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSgpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc0VxdWFsKGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9y
bVJlcHJlc2VudGF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbk1hYy5tbQppbmRleCA2OWFkNDE3ZDAyYjIzNWY4OWFkZDk3YzJhYzZhMzQ3OGJmMDVl
ZmFlLi4zMGNiZDViZGFiM2RjMjM2NDg5MjBjOTUwYTYyMjYzMjllMjQ0MTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCkBAIC03Miw3ICs3Miw3IEBAIFJlZjxTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b25NYWM6OmNyZWF0CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb25NYWMobmF0aXZlVmFsdWUpKTsKIH0KIAotUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWM6OmRhdGEoKSBjb25zdAor
UmVmUHRyPEFycmF5QnVmZmVyPiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6
ZGF0YSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0xMzUsMTAgKzEzNSwx
MCBAQCBzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChpZCB2YWx1ZSwg
SlNDb250ZXh0ICpjb250ZXh0KQogCiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0Rh
dGEgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoRGF0YUluQ29udGV4dCh2YWx1
ZSwgY29udGV4dCk7Ci0gICAgCisKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W0FWTWV0
YWRhdGFJdGVtIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJ
dGVtSW5Db250ZXh0KHZhbHVlLCBjb250ZXh0KTsKLSAgICAKKwogICAgIHJldHVybiBuaWw7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAKaW5kZXggYzBiNGRmYTJjNmYyMjQ0ZWFhNGRh
ODg2NGQ1YzRiMzI2MzI1OTJkYy4uZmMzNzY3MzI2MDUzNmNiNDJmYWNlZTcwY2U4YjU4ZGU5YTZh
M2FlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2Nr
KFBsYXRmb3JtU3BlZWNoU3ludGgKICAgICAsIG1fc3BlYWtpbmdGaW5pc2hlZFRpbWVyKCp0aGlz
LCAmUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFraW5nRmluaXNoZWQpCiB7CiB9
Ci0gICAgCisKIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjp+UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2soKQogewogfQpAQCAtNDYsMTAgKzQ2LDEwIEBAIHZvaWQgUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFraW5nRmluaXNoZWQoKQogICAgIEFTU0VSVChtX3V0
dGVyYW5jZS5nZXQoKSk7CiAgICAgUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlPiBwcm90ZWN0KG1fdXR0ZXJhbmNlKTsKICAgICBtX3V0dGVyYW5jZSA9IG51bGxwdHI7Ci0g
ICAgCisKICAgICBjbGllbnQoKS0+ZGlkRmluaXNoU3BlYWtpbmcocHJvdGVjdCk7CiB9Ci0gICAg
CisKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OmluaXRpYWxpemVWb2ljZUxp
c3QoKQogewogICAgIG1fdm9pY2VMaXN0LmFwcGVuZChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlOjpjcmVhdGUoU3RyaW5nKCJtb2NrLnZvaWNlLmJydWNlIiksIFN0cmluZygiYnJ1Y2UiKSwg
U3RyaW5nKCJlbi1VUyIpLCB0cnVlLCB0cnVlKSk7CkBAIC01NywyNSArNTcsMjUgQEAgdm9pZCBQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6aW5pdGlhbGl6ZVZvaWNlTGlzdCgpCiAgICAg
bV92b2ljZUxpc3QuYXBwZW5kKFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShT
dHJpbmcoIm1vY2sudm9pY2UubG9nYW4iKSwgU3RyaW5nKCJsb2dhbiIpLCBTdHJpbmcoImZyLUNB
IiksIHRydWUsIHRydWUpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
azo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0
ZXJhbmNlKQordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWsoUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYmIHV0dGVyYW5jZSkKIHsKICAgICBB
U1NFUlQoIW1fdXR0ZXJhbmNlKTsKLSAgICBtX3V0dGVyYW5jZSA9IHV0dGVyYW5jZTsKKyAgICBt
X3V0dGVyYW5jZSA9IFdURk1vdmUodXR0ZXJhbmNlKTsKICAgICBjbGllbnQoKS0+ZGlkU3RhcnRT
cGVha2luZyhtX3V0dGVyYW5jZSk7Ci0gICAgCisKICAgICAvLyBGaXJlIGEgZmFrZSB3b3JkIGFu
ZCB0aGVuIHNlbnRlbmNlIGJvdW5kYXJ5IGV2ZW50LgogICAgIGNsaWVudCgpLT5ib3VuZGFyeUV2
ZW50T2NjdXJyZWQobV91dHRlcmFuY2UsIFNwZWVjaFdvcmRCb3VuZGFyeSwgMCk7CiAgICAgY2xp
ZW50KCktPmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChtX3V0dGVyYW5jZSwgU3BlZWNoU2VudGVuY2VC
b3VuZGFyeSwgbV91dHRlcmFuY2UtPnRleHQoKS5sZW5ndGgoKSk7Ci0gICAgCisKICAgICAvLyBH
aXZlIHRoZSBmYWtlIHNwZWVjaCBqb2Igc29tZSB0aW1lIHNvIHRoYXQgcGF1c2UgYW5kIG90aGVy
IGZ1bmN0aW9ucyBoYXZlIHRpbWUgdG8gYmUgY2FsbGVkLgogICAgIG1fc3BlYWtpbmdGaW5pc2hl
ZFRpbWVyLnN0YXJ0T25lU2hvdCguMSk7CiB9Ci0gICAgCisKIHZvaWQgUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2s6OmNhbmNlbCgpCiB7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCiAgICAgbV9zcGVha2luZ0ZpbmlzaGVkVGltZXIuc3RvcCgpOwog
ICAgIGNsaWVudCgpLT5zcGVha2luZ0Vycm9yT2NjdXJyZWQobV91dHRlcmFuY2UpOwogICAgIG1f
dXR0ZXJhbmNlID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaAppbmRleCA4ZDk3NDg4
YjAyZDBkMjEzYjg1NTZlNTMzNGI1N2EyOGIyOTM3ZTAzLi45OTIxZmJkNGEzMTIyNjUyNjY5YzRk
ZDMyY2FiZThhNDEzMTllZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oCkBAIC0zMiwyNSAr
MzIsMjUgQEAKICNpbmNsdWRlICJUaW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
CisKIGNsYXNzIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrIDogcHVibGljIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrKFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqKTsKIAogICAg
IHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrKCk7Ci0gICAgdmlydHVhbCB2
b2lkIHNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKICAgICB2aXJ0dWFsIHZvaWQg
cmVzdW1lKCk7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOwotICAgIAorCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplVm9pY2VMaXN0KCk7CiAgICAgdm9pZCBzcGVha2lu
Z0ZpbmlzaGVkKCk7Ci0gICAgCisKICAgICBUaW1lciBtX3NwZWFraW5nRmluaXNoZWRUaW1lcjsK
ICAgICBSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IG1fdXR0ZXJhbmNl
OwogfTsKLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGIzNDVkZGFmMDc0OTVjNzE4
MTdlY2YxOWIwZjcwNzk0NDFhY2U0OGYuLjM3Y2Y4ZGZmZWE4OTMwNWQ4NDA4Y2M4ZmU1YjJmYWUx
OTUwMTU4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAg
ICAgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICAgICBsb25nIHNldFR5cGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIGxvbmcgY29weShjb25zdCBTdHJpbmcmIGZyb21Q
YXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCkgb3ZlcnJpZGU7Ci0gICAgbG9u
ZyBzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CisgICAgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpIG92ZXJyaWRlOwogICAgIGxvbmcgc2V0UGF0aG5hbWVzRm9yVHlwZShjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIGxvbmcgc2V0U3RyaW5nRm9yVHlwZShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggY2VlYmYz
N2U2NDBhNjg3NjEzNzMyZjVjNDM4NmM3NWM5Y2UwNGUzNS4uNmFiNWU4NjljNjY2NGFlMTAwNDYx
OWVmOTVlZjVkOGNkNGYyNjEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMjE2LDcgKzIxNiw3
IEBAIGxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotbG9uZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKK2xvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJG
b3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJv
YXJkVHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggMDIyNTQ5NzExMjQ2YTlmMjE5Yzc5
YmI2Y2UyMGFkYmJkOTkyOTM0Yy4uMjQ3OWMwNDc0MjYwZGM5MmMxZDI4NjA4OWExODBiNDY2M2Fl
M2VjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lCiAgICAgfQogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9y
eUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlC
dWZmZXItPmRhdGEoKSksIHNpemUpOwotICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVib2Fy
ZFR5cGUpOworICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZFR5cGUpOwog
fQogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3Bw
CmluZGV4IGQ5OWZmYzcyNDU2NDE3Y2Q5MmZiZGY0NGIxNGUxZTc0MTdjYmUxYjguLjJlMmI4MTNh
NWI2ZjVhMWFmYTIwNWUwNTFmZGFiOGU4MTMwZWFjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKQEAgLTQ1Miw3ICs0NTIsNyBAQCBsb25nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29u
cwogICAgIHJldHVybiBuZXdDaGFuZ2VDb3VudDsKIH0KIAotbG9uZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkKK2xvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1
ZmZlciogYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogewogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAg
ICBpZiAoYnVmZmVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAzOThl
YTAzZTY5YmY2ZjRmZTc4MThmMjE2ZTJjNjA4ZmI1NTg3NGI3Li4wZmY0NzRhNzRjODk5Zjk2OWM4
NjU3ZTYwYzA5ZWQyYTdlMjI1MzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgK
QEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogICAgIGxvbmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAg
bG9uZyBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9Q
YXN0ZWJvYXJkKSBvdmVycmlkZTsKLSAgICBsb25nIHNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBsb25nIHNldEJ1ZmZl
ckZvclR5cGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBz
ZXRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAg
ICAgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283304</attachid>
            <date>2016-07-11 00:34:16 -0700</date>
            <delta_ts>2016-07-11 21:20:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159548-20160711163334.patch</filename>
            <type>text/plain</type>
            <size>43775</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWEwMzhkZmEzNTcwM2Q4
ZDQ5ZDBhMGY4ZDExNjU2OTMwMWU3Y2NiMS4uYTY0ZDBjYzA0ZTY2M2JhNTNkZDY0YmQ5OGVlOTNi
NTM1YTE1MjAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA3LTExICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIHBsYXRmb3JtL2VmbCBhbmQgcGxhdGZvcm0vbWFjIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGFsbCB1c2Ugb2YgUGFzc1Jl
ZlB0ciBhbmQgY2xlYW4gdXAgdW5uZWNlc3NhcnkgdGFicyBhbmQgc3BhY2VzLgorICAgICAgICBX
ZWJLaXQyIGNvZGVzIGFyZSBhbHNvIGNoYW5nZWQgYmVjYXVzZSBvZiBzZXRCdWZmZXJGb3JUeXBl
KCkncyBtb2RpZmljYXRpb24uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBj
aGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0v
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1BsYXRm
b3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbDo6c3BlYWspOgorICAgICAgICAqIHBsYXRm
b3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmg6CisgICAgICAgICog
cGxhdGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJFZmwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWspOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tOgorICAgICAgICAoU09GVF9MSU5L
X0NPTlNUQU5UKToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBpbml0V2l0
aFNwZWVjaFN5bnRoZXNpemVyOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFw
cGVyIG1hcFNwZWVjaFJhdGVUb1BsYXRmb3JtUmF0ZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNo
U3ludGhlc2lzV3JhcHBlciBzcGVha1V0dGVyYW5jZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNo
U3ludGhlc2lzV3JhcHBlciBwYXVzZV0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNX
cmFwcGVyIHJlc3VtZV0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIGNh
bmNlbF0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWVjaFN5bnRo
ZXNpemVyOmRpZFN0YXJ0U3BlZWNoVXR0ZXJhbmNlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hT
eW50aGVzaXNXcmFwcGVyIHNwZWVjaFN5bnRoZXNpemVyOmRpZEZpbmlzaFNwZWVjaFV0dGVyYW5j
ZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBzcGVlY2hTeW50aGVz
aXplcjpkaWRQYXVzZVNwZWVjaFV0dGVyYW5jZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3lu
dGhlc2lzV3JhcHBlciBzcGVlY2hTeW50aGVzaXplcjpkaWRDb250aW51ZVNwZWVjaFV0dGVyYW5j
ZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBzcGVlY2hTeW50aGVz
aXplcjpkaWRDYW5jZWxTcGVlY2hVdHRlcmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5
bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3ludGhlc2l6ZXI6d2lsbFNwZWFrUmFuZ2VPZlNwZWVjaFN0
cmluZzp1dHRlcmFuY2U6XSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjpzcGVhayk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6Z2V0VHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0
ZWJvYXJkOjpnZXRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
UGFzdGVib2FyZDo6Y29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJk
Ojpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVy
Rm9yVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFBhdGhu
YW1lc0ZvclR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTWFjLm1tOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIGluaXRX
aXRoU3BlZWNoU3ludGhlc2l6ZXI6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dy
YXBwZXIgc3BlYWtVdHRlcmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dy
YXBwZXIgcGF1c2VdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciByZXN1
bWVdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBjYW5jZWxdKToKKyAg
ICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlciBzcGVlY2hTeW50aGVzaXplcjpkaWRG
aW5pc2hTcGVha2luZzpdKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXI6OmluaXRpYWxpemVWb2ljZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplcjo6c3BlYWspOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9T
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjOjpkYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVmFsdWVXaXRoVmFsdWVJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFraW5nRmluaXNoZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpjYW5jZWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaDoKKwog
MjAxNi0wNy0wOCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIG1vdmFibGVsaW1pdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMDZhYWE4
MTk0MTQxNzg1YTcwNmEwZjUyMGY2ZTI1YWFiMTkzZTE4Yi4uMTc2Y2QxYjc2Y2ZhZWJiNTEwNjc5
NmM3OWJmYjdiYWNkZjRlY2NlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDE2LTA3LTA5ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBQdXJnZSBQYXNzUmVmUHRyIGluIHBsYXRmb3JtL2VmbCBhbmQgcGxhdGZvcm0vbWFjIAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTQ4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGFs
bCB1c2Ugb2YgUGFzc1JlZlB0ciBhbmQgY2xlYW4gdXAgdW5uZWNlc3NhcnkgdGFicyBhbmQgc3Bh
Y2VzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tOgorICAg
ICAgICAoV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKwogMjAxNi0w
Ny0wOCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIERlZmlu
ZSBEWUxEX01BQ09TWF9WRVJTSU9OXzEwXzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTJhMTcxMWY0MjI4MzVm
YzhkNDMzZGRlM2EzYmM5ZTY4OGEyYjc4Ny4uNjY5MTE3ZWY3MTM4MjVhYWI2NDMxMDgyMzA5ZTQ2
YWMwOTkwYjU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA3LTA5ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIHBsYXRmb3JtL2VmbCBhbmQgcGxhdGZvcm0vbWFjIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGFsbCB1c2Ugb2YgUGFzc1Jl
ZlB0ciBhbmQgY2xlYW4gdXAgdW5uZWNlc3NhcnkgdGFicyBhbmQgc3BhY2VzLgorICAgICAgICBX
ZWJLaXQyIGNvZGVzIGFyZSBhbHNvIGNoYW5nZWQgYmVjYXVzZSBvZiBzZXRCdWZmZXJGb3JUeXBl
KCkncyBtb2RpZmljYXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVi
b2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6
c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorCiAyMDE2LTA3LTA3
ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29udGVudCBGaWx0
ZXJpbmddIExvYWQgYmxvY2tlZCBwYWdlcyBtb3JlIGxpa2Ugb3RoZXIgZXJyb3IgcGFnZXMgYXJl
IGxvYWRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0
cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApp
bmRleCA0YjZjYWU0NGRkNmVlZDkwM2MzM2VmNzNjYTg0NDdkODNhMGM1NjZkLi42MzAwODVlZmZj
MTUzYTcyODQ3YTJkY2QwZGY2ODAxYTQ3NmZhZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCiAjaWZuZGVmIFBhc3RlYm9hcmRTdHJhdGVneV9oCkBAIC02MCwxMSArNjAsMTEg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVuaXF1ZU5hbWUoKSA9IDA7CiAgICAgdmly
dHVhbCBDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAg
dmlydHVhbCBVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICAK
KwogICAgIHZpcnR1YWwgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVh
bCBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIGxvbmcgY29weShj
b25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCkg
PSAwOwotICAgIHZpcnR1YWwgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOworICAgIHZpcnR1YWwgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIGxvbmcgc2V0UGF0aG5hbWVzRm9yVHlwZShj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIGxvbmcgc2V0U3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggMjkxMjg1OGYwZjc5YTZlM2M3NTZm
YjgxZTMxNDI0MjAwMTk4YmI3NS4uMGJiNmUyZDIwZmM4MDkwYjRhOThlNmU4ZmRiMzU5YjA3OTNl
MjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgK
QEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmbmRlZiBQbGF0Zm9y
bVBhc3RlYm9hcmRfaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIHVuaXF1ZU5hbWUoKTsKLSAgICAKKwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Z2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8
U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKQEAgLTcw
LDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIHJldHVybiAw
IGlmIHBhc3RlYm9hcmQgb3duZXJzaGlwIGhhcyBiZWVuIHRha2VuIGZyb20gdXMuCiAgICAgV0VC
Q09SRV9FWFBPUlQgbG9uZyBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQpOwotICAg
IFdFQkNPUkVfRVhQT1JUIGxvbmcgc2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JU
IGxvbmcgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBsb25nIHNldFBhdGhuYW1lc0ZvclR5cGUo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaAppbmRleCBiNWQx
ODYwZThhYmRiYzlkM2Q2NzgzN2Q3MjBjYmQ2NzljMWNhZmM3Li40OGVkYTNlZDliZDA0NDY1Yjk4
OWE1NDMzNjRkNjM4OTMxZmFhMjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCkBAIC03MSwxMyArNzEsMTMgQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBXZSBoYXZlIG11bHRpcGxlIHZpcnR1YWwgZnVuY3Rpb25zIGp1c3Qg
c28gd2UgY2FuIHN1cHBvcnQgYSBtb2NrIGZvciB0ZXN0aW5nLgogICAgIC8vIFNlZW1zIHdhc3Rl
ZnVsLiBXb3VsZCBiZSBuaWNlIHRvIGZpbmQgYSBiZXR0ZXIgd2F5LgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKTsKLSAgICAKKwogICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4+JiB2b2ljZUxp
c3QoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOworICAgIHZpcnR1YWwgdm9pZCBzcGVhayhSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiYpOwogICAgIHZpcnR1YWwgdm9pZCBw
YXVzZSgpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsKCk7Ci0gICAgCisKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50KiBjbGll
bnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xpZW50OyB9CiAKIHByb3Rl
Y3RlZDoKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV92b2ljZUxpc3RJ
c0luaXRpYWxpemVkOwogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqIG1fc3Bl
ZWNoU3ludGhlc2l6ZXJDbGllbnQ7Ci0gICAgCisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBS
ZXRhaW5QdHI8V2ViU3BlZWNoU3ludGhlc2lzV3JhcHBlcj4gbV9wbGF0Zm9ybVNwZWVjaFdyYXBw
ZXI7CiAjZW5kaWYKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbD4gbV9wbGF0Zm9ybVNwZWVjaFdy
YXBwZXI7CiAjZW5kaWYKIH07Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmgKaW5kZXgg
MWM2ODBlMzNkNWRhMzk2NTczOTdmY2JlZWFlYmIyMzY1ODA3YmY3NS4uZmNlZmQ4NjljMmIwOTg0
MDE4Nzc1MzU3ZDg0MTgyMTI5NWUzMGEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oCkBAIC0zOSw3
ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbigpIHsgfQogCiAgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlND
OjpFeGVjU3RhdGUqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBkYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEFycmF5QnVmZmVyPiBk
YXRhKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0VxdWFsKGNvbnN0IFNlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJikgY29uc3QgPSAwOwogCiAgICAgZW51bSBQbGF0Zm9y
bVR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuY3BwCmluZGV4IDgyZDExYTYz
ZjRlZDA0ZTVjOTM2NmU2YWRjYTFhZTA5ZGY4NDQwNmEuLjYxOTdiYTlmYjgwY2JhZTI4NTZjMDhm
ZDk4NDk3M2UzNzE0OGE4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5jcHAK
QEAgLTEzNiwxNCArMTM2LDE0IEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRl
ckVmbDo6cmVzdW1lKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmw6OnNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNQcm92aWRlckVmbDo6c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlPiYmIHV0dGVyYW5jZSkKIHsKICAgICBpZiAoIWVuZ2luZUluaXQoKSB8fCAhdXR0ZXJh
bmNlKSB7CiAgICAgICAgIGZpcmVTcGVlY2hFdmVudChTcGVlY2hFcnJvcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX3V0dGVyYW5jZSA9IHV0dGVyYW5jZTsKKyAgICBtX3V0dGVy
YW5jZSA9IFdURk1vdmUodXR0ZXJhbmNlKTsKICAgICBTdHJpbmcgdm9pY2UgPSB2b2ljZU5hbWUo
bV91dHRlcmFuY2UpOwogICAgIGVzcGVha19TZXRWb2ljZUJ5TmFtZSh2b2ljZS51dGY4KCkuZGF0
YSgpKTsKICAgICBlc3BlYWtfU2V0UGFyYW1ldGVyKGVzcGVha1JBVEUsIGNvbnZlcnRSYXRlVG9F
c3BlYWtWYWx1ZShtX3V0dGVyYW5jZS0+cmF0ZSgpKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJv
dmlkZXJFZmwuaAppbmRleCAwNmQ1ZjFlNzcxYjNlYjVjNjRiMzJjM2RmOGEyZmFjZjA1YjEyYmZh
Li5kNmJhMmVjOTQyZjdjMTlmZmE5N2JhMWIxMzkzMWE3NmFmMmYzMjJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRl
ckVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1Byb3ZpZGVyRWZsLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZvaWQg
aW5pdGlhbGl6ZVZvaWNlTGlzdChWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
Vm9pY2U+PiYpOwogICAgIHZvaWQgcGF1c2UoKTsKICAgICB2b2lkIHJlc3VtZSgpOwotICAgIHZv
aWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOwor
ICAgIHZvaWQgc3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYm
KTsKICAgICB2b2lkIGNhbmNlbCgpOwogcHJpdmF0ZToKICAgICBib29sIGVuZ2luZUluaXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpemVyRWZsLmNwcAppbmRleCA0NjdjN2UyOWQxMjBmYmUzZWQ1ZGQxYjA1N2Jl
YWMwNDBjZTNkNzY4Li42ZmQwZjIxZDZlNDc1ZmFiZjRlZGEzMWUyNGMzMGY3ODU2OTU1Yzg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplckVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJFZmwuY3BwCkBAIC02MywxMCArNjMsMTAgQEAgdm9pZCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQogICAgIG1fcGxhdGZvcm1TcGVlY2hXcmFwcGVy
LT5yZXN1bWUoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayhQ
YXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCit2
b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFJlZlB0cjxQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpc1V0dGVyYW5jZT4mJiB1dHRlcmFuY2UpCiB7CiAgICAgQVNTRVJUKG1fcGxhdGZv
cm1TcGVlY2hXcmFwcGVyKTsKLSAgICBtX3BsYXRmb3JtU3BlZWNoV3JhcHBlci0+c3BlYWsodXR0
ZXJhbmNlKTsKKyAgICBtX3BsYXRmb3JtU3BlZWNoV3JhcHBlci0+c3BlYWsoV1RGTW92ZSh1dHRl
cmFuY2UpKTsKIH0KIAogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjYW5jZWwoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0KaW5kZXggMTU2M2ExMjVjNGQyZDBiYTI5MjMwMTdhODY5MGY5MGZhODZiYTM0MC4uZDg4
ODZmYjdmNzA5ZWFkNWJjNzU5NjBlZTZjZTMzNjBlNzMyMDdiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0xMjUs
NyArMTI1LDcgQEAgbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldFR5cGVzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JikKICAgICByZXR1cm4gMDsKIH0KIAotbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcm
KQorbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVy
KiwgY29uc3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVySU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1Mu
bW0KaW5kZXggNjY4YjE1MjVkNmJjZDI1YmQyNWJlY2U2MzA3MDU3NjgzOGRhZTcwNy4uM2I4OGFk
ZmZkODUwNjVmZTlhMTRlMGM1NjI3OTViMzQwMjM1NjY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1Mu
bW0KQEAgLTksNyArOSw3IEBACiAgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQogICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAogICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQpAQCAtNTUsNyArNTUsNyBAQCBTT0ZUX0xJ
TktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hS
YXRlLCBmbG9hdCkKICAgICBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKiBtX3N5
bnRoZXNpemVyT2JqZWN0OwogICAgIC8vIEhvbGQgYSBSZWYgdG8gdGhlIHV0dGVyYW5jZSBzbyB0
aGF0IGl0IHdvbid0IGRpc2FwcGVhciB1bnRpbCB0aGUgc3ludGggaXMgZG9uZSB3aXRoIGl0Lgog
ICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV91
dHRlcmFuY2U7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8QVZTcGVlY2hTeW50aGVzaXplcj4gbV9z
eW50aGVzaXplcjsKIH0KIApAQCAtNzAsNyArNzAsNyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZG
b3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKIHsK
ICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICAKKwogICAgIG1fc3ludGhlc2l6ZXJPYmplY3QgPSBzeW50aGVzaXplcjsKICAgICByZXR1cm4g
c2VsZjsKIH0KQEAgLTgzLDcgKzgzLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlv
biwgQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgICAgIHJh
dGUgKj0gQVZTcGVlY2hVdHRlcmFuY2VEZWZhdWx0U3BlZWNoUmF0ZTsKICAgICBlbHNlCiAgICAg
ICAgIHJhdGUgPSBBVlNwZWVjaFV0dGVyYW5jZURlZmF1bHRTcGVlY2hSYXRlICsgKChyYXRlIC0g
MSkgKiAoQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSAtIEFWU3BlZWNoVXR0ZXJh
bmNlRGVmYXVsdFNwZWVjaFJhdGUpKTsKLSAgICAKKwogICAgIHJldHVybiByYXRlOwogfQogCkBA
IC05MiwxMCArOTIsMTAgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVl
Y2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgLy8gV2hlbiBzcGVhayBp
cyBjYWxsZWQgd2Ugc2hvdWxkIG5vdCBoYXZlIGFuIGV4aXN0aW5nIHNwZWVjaCB1dHRlcmFuY2Ug
b3V0c3RhbmRpbmcuCiAgICAgQVNTRVJUKCFtX3V0dGVyYW5jZSk7CiAgICAgQVNTRVJUKHV0dGVy
YW5jZSk7Ci0gICAgCisKICAgICBpZiAoIXV0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAg
IAorCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgaWYgKCFtX3N5bnRoZXNp
emVyKSB7CiAgICAgICAgIG1fc3ludGhlc2l6ZXIgPSBhZG9wdE5TKFthbGxvY0FWU3BlZWNoU3lu
dGhlc2l6ZXJJbnN0YW5jZSgpIGluaXRdKTsKQEAgLTExMyw3ICsxMTMsNyBAQCBTT0ZUX0xJTktf
Q09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRl
LCBmbG9hdCkKICAgICAgICAgICAgIHZvaWNlTGFuZ3VhZ2UgPSB1dHRlcmFuY2UtPmxhbmcoKTsK
ICAgICB9IGVsc2UKICAgICAgICAgdm9pY2VMYW5ndWFnZSA9IHV0dGVyYW5jZS0+dm9pY2UoKS0+
bGFuZygpOwotICAgIAorCiAgICAgQVZTcGVlY2hTeW50aGVzaXNWb2ljZSAqYXZWb2ljZSA9IG5p
bDsKICAgICBpZiAodm9pY2VMYW5ndWFnZSkKICAgICAgICAgYXZWb2ljZSA9IFtBVlNwZWVjaFN5
bnRoZXNpc1ZvaWNlQ2xhc3Mgdm9pY2VXaXRoTGFuZ3VhZ2U6dm9pY2VMYW5ndWFnZV07CkBAIC0x
MjUsNyArMTI1LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hV
dHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgW2F2VXR0ZXJhbmNlIHNldFBp
dGNoTXVsdGlwbGllcjp1dHRlcmFuY2UtPnBpdGNoKCldOwogICAgIFthdlV0dGVyYW5jZSBzZXRW
b2ljZTphdlZvaWNlXTsKICAgICBtX3V0dGVyYW5jZSA9IHV0dGVyYW5jZTsKLSAgICAKKwogICAg
IFttX3N5bnRoZXNpemVyIHNwZWFrVXR0ZXJhbmNlOmF2VXR0ZXJhbmNlXTsKICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCiB9CkBAIC0xMzQsNyArMTM0LDcgQEAgU09GVF9MSU5LX0NPTlNU
QU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxv
YXQpCiB7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgW21fc3ludGhlc2l6ZXIgcGF1c2VT
cGVha2luZ0F0Qm91bmRhcnk6QVZTcGVlY2hCb3VuZGFyeUltbWVkaWF0ZV07CiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwpAQCAtMTQ0LDcgKzE0NCw3IEBAIFNPRlRfTElOS19DT05TVEFO
VChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0
KQogewogICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIFttX3N5bnRoZXNpemVyIGNvbnRpbnVl
U3BlYWtpbmddOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTE1NCw3ICsxNTQs
NyBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1h
eGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKIHsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBb
bV9zeW50aGVzaXplciBzdG9wU3BlYWtpbmdBdEJvdW5kYXJ5OkFWU3BlZWNoQm91bmRhcnlJbW1l
ZGlhdGVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTE2Niw3ICsxNjYsNyBA
QCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGlt
dW1TcGVlY2hSYXRlLCBmbG9hdCkKICAgICBVTlVTRURfUEFSQU0odXR0ZXJhbmNlKTsKICAgICBp
ZiAoIW1fdXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBtX3N5bnRoZXNp
emVyT2JqZWN0LT5jbGllbnQoKS0+ZGlkU3RhcnRTcGVha2luZyhtX3V0dGVyYW5jZSk7CiB9CiAK
QEAgLTE3NiwxMSArMTc2LDExIEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFW
U3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQogICAgIFVOVVNFRF9QQVJB
TSh1dHRlcmFuY2UpOwogICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKKwogICAgIC8vIENsZWFyIHRoZSBtX3V0dGVyYW5jZSB2YXJpYWJsZSBpbiBjYXNlIGZpbmlz
aCBzcGVha2luZyBraWNrcyBvZmYgYSBuZXcgc3BlYWtpbmcgam9iIGltbWVkaWF0ZWx5LgogICAg
IFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gcGxhdGZv
cm1VdHRlcmFuY2UgPSBtX3V0dGVyYW5jZTsKICAgICBtX3V0dGVyYW5jZSA9IG51bGxwdHI7Ci0g
ICAgCisKICAgICBtX3N5bnRoZXNpemVyT2JqZWN0LT5jbGllbnQoKS0+ZGlkRmluaXNoU3BlYWtp
bmcocGxhdGZvcm1VdHRlcmFuY2UpOwogfQogCkBAIC0xOTAsNyArMTkwLDcgQEAgU09GVF9MSU5L
X0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0
ZSwgZmxvYXQpCiAgICAgVU5VU0VEX1BBUkFNKHV0dGVyYW5jZSk7CiAgICAgaWYgKCFtX3V0dGVy
YW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+
Y2xpZW50KCktPmRpZFBhdXNlU3BlYWtpbmcobV91dHRlcmFuY2UpOwogfQogCkBAIC0yMDAsNyAr
MjAwLDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFu
Y2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgVU5VU0VEX1BBUkFNKHV0dGVyYW5jZSk7
CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgbV9z
eW50aGVzaXplck9iamVjdC0+Y2xpZW50KCktPmRpZFJlc3VtZVNwZWFraW5nKG1fdXR0ZXJhbmNl
KTsKIH0KIApAQCAtMjEwLDExICsyMTAsMTEgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRh
dGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgVU5V
U0VEX1BBUkFNKHV0dGVyYW5jZSk7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0
dXJuOwotICAgIAorCiAgICAgLy8gQ2xlYXIgdGhlIG1fdXR0ZXJhbmNlIHZhcmlhYmxlIGluIGNh
c2UgZmluaXNoIHNwZWFraW5nIGtpY2tzIG9mZiBhIG5ldyBzcGVha2luZyBqb2IgaW1tZWRpYXRl
bHkuCiAgICAgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
PiBwbGF0Zm9ybVV0dGVyYW5jZSA9IG1fdXR0ZXJhbmNlOwogICAgIG1fdXR0ZXJhbmNlID0gbnVs
bHB0cjsKLSAgICAKKwogICAgIG1fc3ludGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRGaW5p
c2hTcGVha2luZyhwbGF0Zm9ybVV0dGVyYW5jZSk7CiB9CiAKQEAgLTIyMiwxMCArMjIyLDEwIEBA
IFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11
bVNwZWVjaFJhdGUsIGZsb2F0KQogewogICAgIFVOVVNFRF9QQVJBTShzeW50aGVzaXplcik7CiAg
ICAgVU5VU0VEX1BBUkFNKHV0dGVyYW5jZSk7Ci0gICAgCisKICAgICBpZiAoIW1fdXR0ZXJhbmNl
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyBpT1Mgb25seSBzdXBwb3J0cyB3b3Jk
IGJvdW5kYXJpZXMuCiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xpZW50KCktPmJvdW5kYXJ5
RXZlbnRPY2N1cnJlZChtX3V0dGVyYW5jZSwgV2ViQ29yZTo6U3BlZWNoV29yZEJvdW5kYXJ5LCBj
aGFyYWN0ZXJSYW5nZS5sb2NhdGlvbik7CiB9CkBAIC0yNjYsMTEgKzI2NiwxMSBAQCB2b2lkIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnJlc3VtZSgpCiAgICAgW21fcGxhdGZvcm1TcGVlY2hX
cmFwcGVyLmdldCgpIHJlc3VtZV07CiB9CiAKLXZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
cjo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0
ZXJhbmNlKQordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayhSZWZQdHI8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiYgdXR0ZXJhbmNlKQogewogICAgIGlmICgh
bV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIpCiAgICAgICAgIG1fcGxhdGZvcm1TcGVlY2hXcmFwcGVy
ID0gYWRvcHROUyhbW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgYWxsb2NdIGluaXRXaXRoU3Bl
ZWNoU3ludGhlc2l6ZXI6dGhpc10pOwotICAgIAorCiAgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFw
cGVyLmdldCgpIHNwZWFrVXR0ZXJhbmNlOnV0dGVyYW5jZS5nZXQoKV07CiB9CiAKQEAgLTI3OCw3
ICsyNzgsNyBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCgpCiB7CiAg
ICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIGNhbmNlbF07CiB9Ci0gICAgCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA3
NmE3ODQxNTg3ZjJjOTkyOWNlODMxMGY5Mzk5NTE5MmZmNjExOWQ5Li5lYjJjYjlhNzI4ZDJjYjdk
MGI0YWM2ZDMxMDA1ODY1ZjM4Zjg2N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMTY5LDE1ICsxNjksMTUgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIAogICAgIEFTU0VS
VChjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgp
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6
ZSgpOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJh
dGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQu
Y2xpZW50RGF0YVtpXSwgY29udGVudC5jbGllbnRUeXBlc1tpXSwgbV9wYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2Fy
ZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5jbGllbnREYXRhW2ldLmdldCgp
LCBjb250ZW50LmNsaWVudFR5cGVzW2ldLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICBpZiAoY29u
dGVudC5jYW5TbWFydENvcHlPckRlbGV0ZSkKICAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZSgw
LCBXZWJTbWFydFBhc3RlUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgaWYgKGNv
bnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCkKLSAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlw
ZShjb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQsIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBt
X3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRh
dGFJbldlYkFyY2hpdmVGb3JtYXQuZ2V0KCksIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBtX3Bhc3Rl
Ym9hcmROYW1lKTsKICAgICBpZiAoY29udGVudC5kYXRhSW5SVEZERm9ybWF0KQotICAgICAgICBt
X2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgp
LT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluUlRGREZvcm1hdCwgTlNSVEZEUGJvYXJk
VHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29u
dGVudC5kYXRhSW5SVEZERm9ybWF0LmdldCgpLCBOU1JURkRQYm9hcmRUeXBlLCBtX3Bhc3RlYm9h
cmROYW1lKTsKICAgICBpZiAoY29udGVudC5kYXRhSW5SVEZGb3JtYXQpCi0gICAgICAgIG1fY2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dEJ1ZmZlckZvclR5cGUoY29udGVudC5kYXRhSW5SVEZGb3JtYXQsIE5TUlRGUGJvYXJkVHlwZSwg
bV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoY29udGVudC5k
YXRhSW5SVEZGb3JtYXQuZ2V0KCksIE5TUlRGUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7
CiAgICAgaWYgKCFjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdC5pc051bGwoKSkKICAgICAgICAg
bV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+c2V0U3RyaW5nRm9yVHlwZShjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdCwgTlNTdHJpbmdQ
Ym9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKIH0KQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdl
KQogICAgIEFTU0VSVChNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VN
SU1FVHlwZShwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSkpOwogCiAgICAgbV9jaGFu
Z2VDb3VudCA9IHdyaXRlVVJMRm9yVHlwZXMod3JpdGFibGVUeXBlc0ZvckltYWdlKCksIG1fcGFz
dGVib2FyZE5hbWUsIHBhc3RlYm9hcmRJbWFnZS51cmwpOwotICAgIG1fY2hhbmdlQ291bnQgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5
cGUoU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKGltYWdlRGF0YSksIE5TVElGRlBib2FyZFR5cGUs
IG1fcGFzdGVib2FyZE5hbWUpOworICAgIG1fY2hhbmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVy
Ojp3cmFwQ0ZEYXRhKGltYWdlRGF0YSkucHRyKCksIE5TVElGRlBib2FyZFR5cGUsIG1fcGFzdGVi
b2FyZE5hbWUpOwogICAgIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KGZpbGVXcmFw
cGVyKHBhc3RlYm9hcmRJbWFnZSksIG1fcGFzdGVib2FyZE5hbWUsIG1fY2hhbmdlQ291bnQpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0
ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbQppbmRleCBhZWM0YTY5NDQwZWYwZDY0YmU2YTJmNzhiOTZmMGY3ZDQ5NDcwNDg3
Li4xMGRiM2RiYmIyMzNhOTM1OGIzNGJiOTgxMGQzMWY4OTBlMzY5MmI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KQEAg
LTQwLDcgKzQwLDcgQEAgUGxhdGZvcm1QYXN0ZWJvYXJkOjpQbGF0Zm9ybVBhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjpnZXRU
eXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCiB7CiAgICAgTlNBcnJheSAqcGFzdGVib2FyZFR5
cGVzID0gW21fcGFzdGVib2FyZC5nZXQoKSB0eXBlc107Ci0gICAgCisKICAgICBmb3IgKE5TVUlu
dGVnZXIgaSA9IDA7IGkgPCBbcGFzdGVib2FyZFR5cGVzIGNvdW50XTsgaSsrKQogICAgICAgICB0
eXBlcy5hcHBlbmQoW3Bhc3RlYm9hcmRUeXBlcyBvYmplY3RBdEluZGV4OmldKTsKIH0KQEAgLTU4
LDcgKzU4LDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFBhdGhuYW1lc0ZvclR5cGUo
VmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3QKICAgICBOU0FycmF5KiBwYXRocyA9
IFttX3Bhc3RlYm9hcmQuZ2V0KCkgcHJvcGVydHlMaXN0Rm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07
CiAgICAgaWYgKFtwYXRocyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CiAgICAg
ICAgIHBhdGhuYW1lcy5hcHBlbmQoKE5TU3RyaW5nICopcGF0aHMpOwotICAgICAgICByZXR1cm47
ICAgICAgICAKKyAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBmb3IgKE5TVUludGVnZXIgaSA9
IDA7IGkgPCBbcGF0aHMgY291bnRdOyBpKyspCiAgICAgICAgIHBhdGhuYW1lcy5hcHBlbmQoW3Bh
dGhzIG9iamVjdEF0SW5kZXg6aV0pOwpAQCAtODUsMTQgKzg1LDE0IEBAIFN0cmluZyBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnVuaXF1ZU5hbWUoKQogQ29sb3IgUGxhdGZvcm1QYXN0ZWJvYXJkOjpjb2xv
cigpCiB7CiAgICAgTlNDb2xvciAqY29sb3IgPSBbTlNDb2xvciBjb2xvckZyb21QYXN0ZWJvYXJk
Om1fcGFzdGVib2FyZC5nZXQoKV07Ci0gICAgCi0gICAgLy8gVGhlIGNvbG9yIG1heSBub3QgYmUg
aW4gYW4gUkdCIGNvbG9yc3BhY2UuIFRoaXMgY29tbW9ubHkgb2NjdXJzIHdoZW4gYSBjb2xvciBp
cyAKKworICAgIC8vIFRoZSBjb2xvciBtYXkgbm90IGJlIGluIGFuIFJHQiBjb2xvcnNwYWNlLiBU
aGlzIGNvbW1vbmx5IG9jY3VycyB3aGVuIGEgY29sb3IgaXMKICAgICAvLyBkcmFnZ2VkIGZyb20g
dGhlIE5TQ29sb3JQYW5lbCBncmF5c2NhbGUgcGlja2VyLgogICAgIGlmIChbW2NvbG9yIGNvbG9y
U3BhY2VdIGNvbG9yU3BhY2VNb2RlbF0gIT0gTlNSR0JDb2xvclNwYWNlTW9kZWwpCiAgICAgICAg
IGNvbG9yID0gW2NvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0NhbGlicmF0ZWRSR0JD
b2xvclNwYWNlXTsKLSAgICAKLSAgICByZXR1cm4gbWFrZVJHQkEoKGludCkoW2NvbG9yIHJlZENv
bXBvbmVudF0gKiAyNTUuMCArIDAuNSksIChpbnQpKFtjb2xvciBncmVlbkNvbXBvbmVudF0gKiAy
NTUuMCArIDAuNSksIAotICAgICAgICAgICAgICAgICAgICAoaW50KShbY29sb3IgYmx1ZUNvbXBv
bmVudF0gKiAyNTUuMCArIDAuNSksIChpbnQpKFtjb2xvciBhbHBoYUNvbXBvbmVudF0gKiAyNTUu
MCArIDAuNSkpOyAgICAKKworICAgIHJldHVybiBtYWtlUkdCQSgoaW50KShbY29sb3IgcmVkQ29t
cG9uZW50XSAqIDI1NS4wICsgMC41KSwgKGludCkoW2NvbG9yIGdyZWVuQ29tcG9uZW50XSAqIDI1
NS4wICsgMC41KSwKKyAgICAgICAgKGludCkoW2NvbG9yIGJsdWVDb21wb25lbnRdICogMjU1LjAg
KyAwLjUpLCAoaW50KShbY29sb3IgYWxwaGFDb21wb25lbnRdICogMjU1LjAgKyAwLjUpKTsKIH0K
IAogVVJMIFBsYXRmb3JtUGFzdGVib2FyZDo6dXJsKCkKQEAgLTEwNCwxMyArMTA0LDEzIEBAIGxv
bmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQp
CiB7CiAgICAgTlNQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJv
YXJkV2l0aE5hbWU6ZnJvbVBhc3RlYm9hcmRdOwogICAgIE5TQXJyYXkqIHR5cGVzID0gW3Bhc3Rl
Ym9hcmQgdHlwZXNdOwotICAgIAorCiAgICAgW21fcGFzdGVib2FyZC5nZXQoKSBhZGRUeXBlczp0
eXBlcyBvd25lcjpuaWxdOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IFt0eXBlcyBj
b3VudF07IGkrKykgewogICAgICAgICBOU1N0cmluZyogdHlwZSA9IFt0eXBlcyBvYmplY3RBdElu
ZGV4OmldOwogICAgICAgICBpZiAoIVttX3Bhc3RlYm9hcmQuZ2V0KCkgc2V0RGF0YTpbcGFzdGVi
b2FyZCBkYXRhRm9yVHlwZTp0eXBlXSBmb3JUeXBlOnR5cGVdKQogICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfSAgICAKKyAgICB9CiAgICAgcmV0dXJuIGNoYW5nZUNvdW50KCk7CiB9CiAKQEAg
LTEzNSw3ICsxMzUsNyBAQCBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0VHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKICAgICByZXR1cm4gW21fcGFzdGVib2Fy
ZC5nZXQoKSBkZWNsYXJlVHlwZXM6dHlwZXMuZ2V0KCkgb3duZXI6bmlsXTsKIH0KIAotbG9uZyBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKK2xvbmcgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKQogewogICAgIEJPT0wgZGlkV3JpdGVEYXRhID0gW21fcGFz
dGVib2FyZCBzZXREYXRhOmJ1ZmZlciA/IGJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgOiBu
aWwgZm9yVHlwZTpwYXN0ZWJvYXJkVHlwZV07CiAgICAgaWYgKCFkaWRXcml0ZURhdGEpCkBAIC0x
NDUsNyArMTQ1LDcgQEAgbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1ZmZlckZvclR5cGUo
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciwgY29uc3QKIAogbG9uZyBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OnNldFBhdGhuYW1lc0ZvclR5cGUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhu
YW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkKIHsKLSAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlQXJyYXk+IHBhdGhzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
XSk7ICAgIAorICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gcGF0aHMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHBhdGhuYW1lcy5zaXplKCk7ICsraSkKICAgICAgICAgW3BhdGhzLmdldCgpIGFkZE9iamVjdDpb
TlNBcnJheSBhcnJheVdpdGhPYmplY3Q6cGF0aG5hbWVzW2ldXV07CiAgICAgQk9PTCBkaWRXcml0
ZURhdGEgPSBbbV9wYXN0ZWJvYXJkLmdldCgpIHNldFByb3BlcnR5TGlzdDpwYXRocy5nZXQoKSBm
b3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KaW5kZXggZTJlYmQx
YjdlOGM2ODVmODk4NmU3NGE4NjQ5Yzc1YzhjOTcwMzQ0MC4uYzk0YTQ4OWIyMTAwN2NjYTc2YjEx
ZWUyYTc3NjA4NWM0ZDI3OTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW0KQEAgLTMwLDcgKzMw
LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUgPEFwcEtpdC9OU1NwZWVjaFN5
bnRoZXNpemVyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKQEAgLTQwLDcgKzM5
LDcgQEAKICAgICBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyKiBtX3N5bnRoZXNp
emVyT2JqZWN0OwogICAgIC8vIEhvbGQgYSBSZWYgdG8gdGhlIHV0dGVyYW5jZSBzbyB0aGF0IGl0
IHdvbid0IGRpc2FwcGVhciB1bnRpbCB0aGUgc3ludGggaXMgZG9uZSB3aXRoIGl0LgogICAgIFdl
YkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBtX3V0dGVyYW5jZTsKLSAg
ICAKKwogICAgIFJldGFpblB0cjxOU1NwZWVjaFN5bnRoZXNpemVyPiBtX3N5bnRoZXNpemVyOwog
ICAgIGZsb2F0IG1fYmFzZVBpdGNoOwogfQpAQCAtNTYsNyArNTUsNyBAQAogewogICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAorCiAgICAg
bV9zeW50aGVzaXplck9iamVjdCA9IHN5bnRoZXNpemVyOwogICAgIFtzZWxmIHVwZGF0ZUJhc2VQ
aXRjaEZvclN5bnRoZXNpemVyXTsKICAgICByZXR1cm4gc2VsZjsKQEAgLTg4LDE2ICs4NywxNiBA
QAogICAgIC8vIFdoZW4gc3BlYWsgaXMgY2FsbGVkIHdlIHNob3VsZCBub3QgaGF2ZSBhbiBleGlz
dGluZyBzcGVlY2ggdXR0ZXJhbmNlIG91dHN0YW5kaW5nLgogICAgIEFTU0VSVCghbV91dHRlcmFu
Y2UpOwogICAgIEFTU0VSVCh1dHRlcmFuY2UpOwotICAgIAorCiAgICAgaWYgKCFtX3N5bnRoZXNp
emVyKSB7CiAgICAgICAgIG1fc3ludGhlc2l6ZXIgPSBhZG9wdE5TKFtbTlNTcGVlY2hTeW50aGVz
aXplciBhbGxvY10gaW5pdFdpdGhWb2ljZTpuaWxdKTsKICAgICAgICAgW21fc3ludGhlc2l6ZXIg
c2V0RGVsZWdhdGU6c2VsZl07CiAgICAgfQotICAgIAorCiAgICAgLy8gRmluZCBpZiB3ZSBzaG91
bGQgdXNlIGEgc3BlY2lmaWMgdm9pY2UgYmFzZWQgb24gdGhlIHZvaWNlVVJJIGluIHV0dGVyYW5j
ZS4KICAgICAvLyBPdGhlcndpc2UsIGZpbmQgdGhlIHZvaWNlIHRoYXQgbWF0Y2hlcyB0aGUgbGFu
Z3VhZ2UuIFRoZSBNYWMgZG9lc24ndCBoYXZlIGEgZGVmYXVsdCB2b2ljZSBwZXIgbGFuZ3VhZ2Us
IHNvIHRoZSBmaXJzdAogICAgIC8vIG9uZSB3aWxsIGhhdmUgdG8gZG8uCi0gICAgCisKICAgICBX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKiB1dHRlcmFuY2VWb2ljZSA9IHV0
dGVyYW5jZS0+dm9pY2UoKTsKICAgICAvLyBJZiBubyB2b2ljZSB3YXMgc3BlY2lmaWVkLCB0cnkg
dG8gbWF0Y2ggYnkgbGFuZ3VhZ2UuCiAgICAgaWYgKCF1dHRlcmFuY2VWb2ljZSAmJiAhdXR0ZXJh
bmNlLT5sYW5nKCkuaXNFbXB0eSgpKSB7CkBAIC0xMDksNyArMTA4LDcgQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIE5TU3RyaW5nICp2b2ljZVVSSSA9IG5p
bDsKICAgICBpZiAodXR0ZXJhbmNlVm9pY2UpCiAgICAgICAgIHZvaWNlVVJJID0gdXR0ZXJhbmNl
Vm9pY2UtPnZvaWNlVVJJKCk7CkBAIC0xMjQsMTQgKzEyMywxNCBAQAogICAgICAgICAvLyBSZXNl
dCB0aGUgYmFzZSBwaXRjaCB3aGVuZXZlciB3ZSBjaGFuZ2Ugdm9pY2VzLgogICAgICAgICB1cGRh
dGVQaXRjaCA9IFlFUzsKICAgICB9Ci0gICAgCisKICAgICBpZiAobV9iYXNlUGl0Y2ggPT0gMCB8
fCB1cGRhdGVQaXRjaCkKLSAgICAgICAgW3NlbGYgdXBkYXRlQmFzZVBpdGNoRm9yU3ludGhlc2l6
ZXJdOyAgICAKLSAgICAKKyAgICAgICAgW3NlbGYgdXBkYXRlQmFzZVBpdGNoRm9yU3ludGhlc2l6
ZXJdOworCiAgICAgW21fc3ludGhlc2l6ZXIgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
RmxvYXQ6W3NlbGYgY29udmVydFBpdGNoVG9OU1NwZWVjaFZhbHVlOnV0dGVyYW5jZS0+cGl0Y2go
KV1dIGZvclByb3BlcnR5Ok5TU3BlZWNoUGl0Y2hCYXNlUHJvcGVydHkgZXJyb3I6bmlsXTsKICAg
ICBbbV9zeW50aGVzaXplciBzZXRSYXRlOltzZWxmIGNvbnZlcnRSYXRlVG9XUE06dXR0ZXJhbmNl
LT5yYXRlKCldXTsKICAgICBbbV9zeW50aGVzaXplciBzZXRWb2x1bWU6dXR0ZXJhbmNlLT52b2x1
bWUoKV07Ci0gICAgCisKICAgICBtX3V0dGVyYW5jZSA9IHV0dGVyYW5jZTsKICAgICBbbV9zeW50
aGVzaXplciBzdGFydFNwZWFraW5nU3RyaW5nOnV0dGVyYW5jZS0+dGV4dCgpXTsKICAgICBtX3N5
bnRoZXNpemVyT2JqZWN0LT5jbGllbnQoKS0+ZGlkU3RhcnRTcGVha2luZyh1dHRlcmFuY2UpOwpA
QCAtMTQxLDcgKzE0MCw3IEBACiB7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0
dXJuOwotICAgIAorCiAgICAgW21fc3ludGhlc2l6ZXIgcGF1c2VTcGVha2luZ0F0Qm91bmRhcnk6
TlNTcGVlY2hJbW1lZGlhdGVCb3VuZGFyeV07CiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xp
ZW50KCktPmRpZFBhdXNlU3BlYWtpbmcobV91dHRlcmFuY2UpOwogfQpAQCAtMTUwLDcgKzE0OSw3
IEBACiB7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAg
ICAgW21fc3ludGhlc2l6ZXIgY29udGludWVTcGVha2luZ107CiAgICAgbV9zeW50aGVzaXplck9i
amVjdC0+Y2xpZW50KCktPmRpZFJlc3VtZVNwZWFraW5nKG1fdXR0ZXJhbmNlKTsKIH0KQEAgLTE1
OSw3ICsxNTgsNyBAQAogewogICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIFttX3N5bnRoZXNpemVyIHN0b3BTcGVha2luZ0F0Qm91bmRhcnk6TlNTcGVl
Y2hJbW1lZGlhdGVCb3VuZGFyeV07CiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xpZW50KCkt
PnNwZWFraW5nRXJyb3JPY2N1cnJlZChtX3V0dGVyYW5jZSk7CiAgICAgbV91dHRlcmFuY2UgPSAw
OwpAQCAtMTc2LDEzICsxNzUsMTMgQEAKIHsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKICAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKLSAgICAKKwogICAg
IC8vIENsZWFyIHRoZSBtX3V0dGVyYW5jZSB2YXJpYWJsZSBpbiBjYXNlIGZpbmlzaCBzcGVha2lu
ZyBraWNrcyBvZmYgYSBuZXcgc3BlYWtpbmcgam9iIGltbWVkaWF0ZWx5LgogICAgIFdlYkNvcmU6
OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiB1dHRlcmFuY2UgPSBtX3V0dGVyYW5j
ZTsKICAgICBtX3V0dGVyYW5jZSA9IDA7Ci0gICAgCisKICAgICBpZiAoZmluaXNoZWRTcGVha2lu
ZykKICAgICAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xpZW50KCktPmRpZEZpbmlzaFNwZWFr
aW5nKHV0dGVyYW5jZSk7CiAgICAgZWxzZQpAQCAtMjIzLDIzICsyMjIsMjMgQEAgdm9pZCBQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjppbml0aWFsaXplVm9pY2VMaXN0KCkKICAgICBmb3IgKE5T
VUludGVnZXIgayA9IDA7IGsgPCBjb3VudDsgaysrKSB7CiAgICAgICAgIE5TU3RyaW5nICp2b2lj
ZU5hbWUgPSBbYXZhaWxhYmxlVm9pY2VzIG9iamVjdEF0SW5kZXg6a107CiAgICAgICAgIE5TRGlj
dGlvbmFyeSAqYXR0cmlidXRlcyA9IFtOU1NwZWVjaFN5bnRoZXNpemVyIGF0dHJpYnV0ZXNGb3JW
b2ljZTp2b2ljZU5hbWVdOwotICAgICAgICAKKwogICAgICAgICBOU1N0cmluZyAqdm9pY2VVUkkg
PSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNWb2ljZUlkZW50aWZpZXJdOwogICAgICAgICBO
U1N0cmluZyAqbmFtZSA9IFthdHRyaWJ1dGVzIG9iamVjdEZvcktleTpOU1ZvaWNlTmFtZV07CiAg
ICAgICAgIE5TU3RyaW5nICpsYW5ndWFnZSA9IFthdHRyaWJ1dGVzIG9iamVjdEZvcktleTpOU1Zv
aWNlTG9jYWxlSWRlbnRpZmllcl07CiAgICAgICAgIE5TTG9jYWxlICpsb2NhbGUgPSBbW05TTG9j
YWxlIGFsbG9jXSBpbml0V2l0aExvY2FsZUlkZW50aWZpZXI6bGFuZ3VhZ2VdOwogICAgICAgICBO
U1N0cmluZyAqZGVmYXVsdFZvaWNlVVJJID0gd2tTcGVlY2hTeW50aGVzaXNHZXREZWZhdWx0Vm9p
Y2VJZGVudGlmaWVyRm9yTG9jYWxlKGxvY2FsZSk7CiAgICAgICAgIFtsb2NhbGUgcmVsZWFzZV07
Ci0gICAgICAgIAorCiAgICAgICAgIC8vIENoYW5nZSB0byBCQ1AtNDcgZm9ybWF0IGFzIGRlZmlu
ZWQgYnkgc3BlYy4KICAgICAgICAgbGFuZ3VhZ2UgPSBbbGFuZ3VhZ2Ugc3RyaW5nQnlSZXBsYWNp
bmdPY2N1cnJlbmNlc09mU3RyaW5nOkAiXyIgd2l0aFN0cmluZzpAIi0iXTsKLSAgICAgICAgCisK
ICAgICAgICAgYm9vbCBpc0RlZmF1bHQgPSBbZGVmYXVsdFZvaWNlVVJJIGlzRXF1YWxUb1N0cmlu
Zzp2b2ljZVVSSV07Ci0gICAgICAgIAorCiAgICAgICAgIG1fdm9pY2VMaXN0LmFwcGVuZChQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUodm9pY2VVUkksIG5hbWUsIGxhbmd1YWdl
LCB0cnVlLCBpc0RlZmF1bHQpKTsKICAgICB9CiB9Ci0gICAgCisKIHZvaWQgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplcjo6cGF1c2UoKQogewogICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5n
ZXQoKSBwYXVzZV07CkBAIC0yNDksMTIgKzI0OCwxMiBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI6OnJlc3VtZSgpCiB7CiAgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgp
IHJlc3VtZV07CiB9Ci0gICAgCi12b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFr
KFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkK
Kwordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayhSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiYgdXR0ZXJhbmNlKQogewogICAgIGlmICghbV9wbGF0
Zm9ybVNwZWVjaFdyYXBwZXIpCiAgICAgICAgIG1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyID0gYWRv
cHROUyhbW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgYWxsb2NdIGluaXRXaXRoU3BlZWNoU3lu
dGhlc2l6ZXI6dGhpc10pOwotICAgIAorCiAgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdl
dCgpIHNwZWFrVXR0ZXJhbmNlOnV0dGVyYW5jZS5nZXQoKV07CiB9CiAKQEAgLTI2Miw3ICsyNjEs
NyBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXI6OmNhbmNlbCgpCiB7CiAgICAgW21f
cGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIGNhbmNlbF07CiB9Ci0gICAgCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaAppbmRleCAxYmNmODdhZDhhYmVjNTJjZjNlM2Jj
ZDczYmQ5MzcwZDJmZWUyMGVhLi4yMjM4NmI1YWYzNjk1ZDI3MjQxNzZjYzRkY2VkYTY5MTk2MWU0
ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaApAQCAtNDIsNyArNDIsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bj4gY3JlYXRlKGlkKTsKIAogICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkV4ZWNT
dGF0ZSopIGNvbnN0IG92ZXJyaWRlOwotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIGJvb2wgaXNFcXVhbChjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1SZXBy
ZXNlbnRhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b25NYWMubW0KaW5kZXggNjlhZDQxN2QwMmIyMzVmODlhZGQ5N2MyYWM2YTM0NzhiZjA1ZWZhZS4u
MzBjYmQ1YmRhYjNkYzIzNjQ4OTIwYzk1MGE2MjI2MzI5ZTI0NDExOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hYy5tbQpAQCAtNzIsNyArNzIsNyBAQCBSZWY8U2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb24+IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFj
OjpjcmVhdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uTWFjKG5hdGl2ZVZhbHVlKSk7CiB9CiAKLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjOjpkYXRhKCkgY29uc3QKK1JlZlB0
cjxBcnJheUJ1ZmZlcj4gU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWM6OmRhdGEo
KSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtMTM1LDEwICsxMzUsMTAgQEAg
c3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoVmFsdWVJbkNvbnRleHQoaWQgdmFsdWUsIEpTQ29u
dGV4dCAqY29udGV4dCkKIAogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNs
YXNzXV0pCiAgICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aERhdGFJbkNvbnRleHQodmFsdWUsIGNv
bnRleHQpOwotICAgIAorCiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltBVk1ldGFkYXRh
SXRlbSBjbGFzc11dKQogICAgICAgICByZXR1cm4ganNWYWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUlu
Q29udGV4dCh2YWx1ZSwgY29udGV4dCk7Ci0gICAgCisKICAgICByZXR1cm4gbmlsOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2suY3BwCmluZGV4IGMwYjRkZmEyYzZmMjI0NGVhYTRkYTg4NjRk
NWM0YjMyNjMyNTkyZGMuLmZjMzc2NzMyNjA1MzZjYjQyZmFjZWU3MGNlOGI1OGRlOWE2YTNhZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3BwCkBAIC0zNiw3ICszNiw3IEBAIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jayhQbGF0
Zm9ybVNwZWVjaFN5bnRoCiAgICAgLCBtX3NwZWFraW5nRmluaXNoZWRUaW1lcigqdGhpcywgJlBs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVkKQogewogfQotICAg
IAorCiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6flBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrKCkKIHsKIH0KQEAgLTQ2LDEwICs0NiwxMCBAQCB2b2lkIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJNb2NrOjpzcGVha2luZ0ZpbmlzaGVkKCkKICAgICBBU1NFUlQobV91dHRlcmFu
Y2UuZ2V0KCkpOwogICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4g
cHJvdGVjdChtX3V0dGVyYW5jZSk7CiAgICAgbV91dHRlcmFuY2UgPSBudWxscHRyOwotICAgIAor
CiAgICAgY2xpZW50KCktPmRpZEZpbmlzaFNwZWFraW5nKHByb3RlY3QpOwogfQotICAgIAorCiB2
b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrOjppbml0aWFsaXplVm9pY2VMaXN0KCkK
IHsKICAgICBtX3ZvaWNlTGlzdC5hcHBlbmQoUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTo6
Y3JlYXRlKFN0cmluZygibW9jay52b2ljZS5icnVjZSIpLCBTdHJpbmcoImJydWNlIiksIFN0cmlu
ZygiZW4tVVMiKSwgdHJ1ZSwgdHJ1ZSkpOwpAQCAtNTcsMjUgKzU3LDI1IEBAIHZvaWQgUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplck1vY2s6OmluaXRpYWxpemVWb2ljZUxpc3QoKQogICAgIG1fdm9p
Y2VMaXN0LmFwcGVuZChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoU3RyaW5n
KCJtb2NrLnZvaWNlLmxvZ2FuIiksIFN0cmluZygibG9nYW4iKSwgU3RyaW5nKCJmci1DQSIpLCB0
cnVlLCB0cnVlKSk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNw
ZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IHV0dGVyYW5j
ZSkKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OnNwZWFrKFJlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJiB1dHRlcmFuY2UpCiB7CiAgICAgQVNTRVJU
KCFtX3V0dGVyYW5jZSk7Ci0gICAgbV91dHRlcmFuY2UgPSB1dHRlcmFuY2U7CisgICAgbV91dHRl
cmFuY2UgPSBXVEZNb3ZlKHV0dGVyYW5jZSk7CiAgICAgY2xpZW50KCktPmRpZFN0YXJ0U3BlYWtp
bmcobV91dHRlcmFuY2UpOwotICAgIAorCiAgICAgLy8gRmlyZSBhIGZha2Ugd29yZCBhbmQgdGhl
biBzZW50ZW5jZSBib3VuZGFyeSBldmVudC4KICAgICBjbGllbnQoKS0+Ym91bmRhcnlFdmVudE9j
Y3VycmVkKG1fdXR0ZXJhbmNlLCBTcGVlY2hXb3JkQm91bmRhcnksIDApOwogICAgIGNsaWVudCgp
LT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQobV91dHRlcmFuY2UsIFNwZWVjaFNlbnRlbmNlQm91bmRh
cnksIG1fdXR0ZXJhbmNlLT50ZXh0KCkubGVuZ3RoKCkpOwotICAgIAorCiAgICAgLy8gR2l2ZSB0
aGUgZmFrZSBzcGVlY2ggam9iIHNvbWUgdGltZSBzbyB0aGF0IHBhdXNlIGFuZCBvdGhlciBmdW5j
dGlvbnMgaGF2ZSB0aW1lIHRvIGJlIGNhbGxlZC4KICAgICBtX3NwZWFraW5nRmluaXNoZWRUaW1l
ci5zdGFydE9uZVNob3QoLjEpOwogfQotICAgIAorCiB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXJNb2NrOjpjYW5jZWwoKQogewogICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIG1fc3BlYWtpbmdGaW5pc2hlZFRpbWVyLnN0b3AoKTsKICAgICBj
bGllbnQoKS0+c3BlYWtpbmdFcnJvck9jY3VycmVkKG1fdXR0ZXJhbmNlKTsKICAgICBtX3V0dGVy
YW5jZSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrLmgKaW5kZXggOGQ5NzQ4OGIwMmQw
ZDIxM2I4NTU2ZTUzMzRiNTdhMjhiMjkzN2UwMy4uOTkyMWZiZDRhMzEyMjY1MjY2OWM0ZGQzMmNh
YmU4YTQxMzE5ZWY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Q
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaApAQCAtMzIsMjUgKzMyLDI1
IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiBj
bGFzcyBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jayA6IHB1YmxpYyBQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTW9jayhQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50Kik7CiAKICAgICB2aXJ0
dWFsIH5QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jaygpOwotICAgIHZpcnR1YWwgdm9pZCBz
cGVhayhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPik7CisgICAg
dmlydHVhbCB2b2lkIHNwZWFrKFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3Vt
ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKLSAgICAKKwogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZvaWNlTGlzdCgpOwogICAgIHZvaWQgc3BlYWtpbmdGaW5p
c2hlZCgpOwotICAgIAorCiAgICAgVGltZXIgbV9zcGVha2luZ0ZpbmlzaGVkVGltZXI7CiAgICAg
UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBtX3V0dGVyYW5jZTsKIH07
Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTUEVF
Q0hfU1lOVEhFU0lTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBiMzQ1ZGRhZjA3NDk1YzcxODE3ZWNm
MTliMGY3MDc5NDQxYWNlNDhmLi4zN2NmOGRmZmVhODkzMDVkODQwOGNjOGZlNWIyZmFlMTk1MDE1
ODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIGxv
bmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICAgICBsb25nIGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVi
b2FyZCwgY29uc3QgU3RyaW5nJiB0b1Bhc3RlYm9hcmQpIG92ZXJyaWRlOwotICAgIGxvbmcgc2V0
QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOworICAgIGxvbmcgc2V0QnVmZmVyRm9yVHlwZShXZWJDb3JlOjpTaGFyZWRCdWZmZXIqLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKICAgICBsb25nIHNldFBhdGhuYW1lc0ZvclR5cGUoY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKICAgICBsb25nIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCmluZGV4IGNlZWJmMzdlNjQw
YTY4NzYxMzczMmY1YzQzODZjNzVjOWNlMDRlMzUuLjZhYjVlODY5YzY2NjRhZTEwMDQ2MTllZjk1
ZWY1ZDhjZDRmMjYxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KQEAgLTIxNiw3ICsyMTYsNyBAQCBs
b25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhc3RlYm9hcmRUeXBlcywgY29ucwogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRUeXBlcyk7CiB9CiAKLWxvbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUpCitsb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlw
ZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5
cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IDAyMjU0OTcxMTI0NmE5ZjIxOWM3OWJiNmNl
MjBhZGJiZDk5MjkzNGMuLjI0NzljMDQ3NDI2MGRjOTJjMWQyODYwODlhMTgwYjQ2NjNhZTNlYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJk
UHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZQogICAgIH0KICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZm
ZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6
UmVhZE9ubHkpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVy
LT5kYXRhKCkpLCBzaXplKTsKLSAgICBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIsIHBhc3RlYm9hcmRUeXBl
KTsKKyAgICBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuc2V0QnVmZmVyRm9yVHlwZShidWZmZXIuZ2V0KCksIHBhc3RlYm9hcmRUeXBlKTsKIH0KIAog
I2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRl
eCBkOTlmZmM3MjQ1NjQxN2NkOTJmYmRmNDRiMTRlMWU3NDE3Y2JlMWI4Li4yZTJiODEzYTViNmY1
YTFhZmEyMDVlMDUxZmRhYjhlODEzMGVhY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnMKICAg
ICByZXR1cm4gbmV3Q2hhbmdlQ291bnQ7CiB9CiAKLWxvbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCits
b25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIq
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKIHsKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgaWYg
KGJ1ZmZlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMzk4ZWEwM2U2
OWJmNmY0ZmU3ODE4ZjIxNmUyYzYwOGZiNTU4NzRiNy4uMGZmNDc0YTc0Yzg5OWY5NjljODY1N2U2
MGMwOWVkMmE3ZTIyNTMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC05
OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKICAgICBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIGxvbmcg
Y29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVi
b2FyZCkgb3ZlcnJpZGU7Ci0gICAgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgbG9uZyBzZXRCdWZmZXJGb3JU
eXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIGxvbmcgc2V0UGF0
aG5hbWVzRm9yVHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIGxv
bmcgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283385</attachid>
            <date>2016-07-11 21:20:48 -0700</date>
            <delta_ts>2016-07-11 23:25:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-159548-20160712132005.patch</filename>
            <type>text/plain</type>
            <size>43987</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWM1YmQ5YmQwNmExOWJl
NWNhMDJjNTE3MmQ2ZWYyZWJiZmVjMWMxOS4uYTI2NjIxNzBlYTIzMTA5OGVhOGU5OTQ0Yjc4ZDNk
NWUxZDExMjBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE2LTA3LTExICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNz
UmVmUHRyIGluIHBsYXRmb3JtL2VmbCBhbmQgcGxhdGZvcm0vbWFjIAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBSZW1vdmUgYWxsIHVzZSBvZiBQYXNz
UmVmUHRyIGFuZCBjbGVhbiB1cCB1bm5lY2Vzc2FyeSB0YWJzIGFuZCBzcGFjZXMuCisgICAgICAg
IFdlYktpdDIgY29kZXMgYXJlIGFsc28gY2hhbmdlZCBiZWNhdXNlIG9mIHNldEJ1ZmZlckZvclR5
cGUoKSdzIG1vZGlmaWNhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9y
IGNoYW5nZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsOjpzcGVhayk6CisgICAgICAgICogcGxh
dGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZSk6CisgICAgICAgICogcGxhdGZv
cm0vaW9zL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJJT1MubW06CisgICAgICAgIChTT0ZUX0xJ
TktfQ09OU1RBTlQpOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIGluaXRX
aXRoU3BlZWNoU3ludGhlc2l6ZXI6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dy
YXBwZXIgbWFwU3BlZWNoUmF0ZVRvUGxhdGZvcm1SYXRlOl0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hTeW50aGVzaXNXcmFwcGVyIHNwZWFrVXR0ZXJhbmNlOl0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hTeW50aGVzaXNXcmFwcGVyIHBhdXNlXSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNp
c1dyYXBwZXIgcmVzdW1lXSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIg
Y2FuY2VsXSk6CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3lu
dGhlc2l6ZXI6ZGlkU3RhcnRTcGVlY2hVdHRlcmFuY2U6XSk6CisgICAgICAgICgtW1dlYlNwZWVj
aFN5bnRoZXNpc1dyYXBwZXIgc3BlZWNoU3ludGhlc2l6ZXI6ZGlkRmluaXNoU3BlZWNoVXR0ZXJh
bmNlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWVjaFN5bnRo
ZXNpemVyOmRpZFBhdXNlU3BlZWNoVXR0ZXJhbmNlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hT
eW50aGVzaXNXcmFwcGVyIHNwZWVjaFN5bnRoZXNpemVyOmRpZENvbnRpbnVlU3BlZWNoVXR0ZXJh
bmNlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWVjaFN5bnRo
ZXNpemVyOmRpZENhbmNlbFNwZWVjaFV0dGVyYW5jZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNo
U3ludGhlc2lzV3JhcHBlciBzcGVlY2hTeW50aGVzaXplcjp3aWxsU3BlYWtSYW5nZU9mU3BlZWNo
U3RyaW5nOnV0dGVyYW5jZTpdKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI6OnNwZWFrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1QYXN0ZWJvYXJkOjpnZXRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBh
c3RlYm9hcmQ6OmdldFBhdGhuYW1lc0ZvclR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1QYXN0ZWJvYXJkOjpjb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9h
cmQ6OmNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZm
ZXJGb3JUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6c2V0UGF0
aG5hbWVzRm9yVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJNYWMubW06CisgICAgICAgICgtW1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgaW5p
dFdpdGhTcGVlY2hTeW50aGVzaXplcjpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lz
V3JhcHBlciBzcGVha1V0dGVyYW5jZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoU3ludGhlc2lz
V3JhcHBlciBwYXVzZV0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHJl
c3VtZV0pOgorICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIGNhbmNlbF0pOgor
ICAgICAgICAoLVtXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIHNwZWVjaFN5bnRoZXNpemVyOmRp
ZEZpbmlzaFNwZWFraW5nOl0pOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcjo6aW5pdGlhbGl6ZVZvaWNlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Nlcmlh
bGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWM6OmRhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6anNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0v
bW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWtpbmdGaW5pc2hlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWspOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OmNhbmNlbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oOgor
CiAyMDE2LTA3LTExICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3Bl
ZWNoIFN5bnRoZXNpczogZ2V0dGluZyBsaXN0IG9mIHZvaWNlcyBubyBsb25nZXIgd29ya3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwppbmRleCBjMWJjMGJiZGUzNjEyNWM0NjJiZjQ4MWRkYWQ1ZGQyZjgyN2Q1MjM5
Li4yNmMzMTJmZjAyYmU4MjBmY2MwNDA4MmQwYWYyNzM4NzYxZDVmNTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDctMTEgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUB3ZWJraXQub3JnPgorCisgICAgICAgIFB1cmdlIFBhc3NSZWZQdHIgaW4gcGxhdGZvcm0v
ZWZsIGFuZCBwbGF0Zm9ybS9tYWMgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTk1NDgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVu
c2VuLgorCisgICAgICAgIFJlbW92ZSBhbGwgdXNlIG9mIFBhc3NSZWZQdHIgYW5kIGNsZWFuIHVw
IHVubmVjZXNzYXJ5IHRhYnMgYW5kIHNwYWNlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
QnVmZmVyRm9yVHlwZSk6CisKIDIwMTYtMDctMTEgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgc3ludGhldGljIGNsaWNrIG9yaWdpbiB0byBXS05hdmln
YXRpb25BY3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjQ3ZTJjZWE3OWE4ZGQ3YzUzMzVkMmNkNThlNzk2
MTUzMzVjNTAyYy4uMTNkNDRiNTFmNzY0YjBjYWEzM2EwZWNjYmRiYjUzYjcyNmU0ZjJiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2LTA3LTExICBHeXV5b3VuZyBLaW0gIDxneXV5
b3VuZy5raW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBQdXJnZSBQYXNzUmVmUHRyIGluIHBsYXRm
b3JtL2VmbCBhbmQgcGxhdGZvcm0vbWFjIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5NTQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJp
c3RlbnNlbi4KKworICAgICAgICBSZW1vdmUgYWxsIHVzZSBvZiBQYXNzUmVmUHRyIGFuZCBjbGVh
biB1cCB1bm5lY2Vzc2FyeSB0YWJzIGFuZCBzcGFjZXMuCisgICAgICAgIFdlYktpdDIgY29kZXMg
YXJlIGFsc28gY2hhbmdlZCBiZWNhdXNlIG9mIHNldEJ1ZmZlckZvclR5cGUoKSdzIG1vZGlmaWNh
dGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJk
QnVmZmVyRm9yVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldEJ1ZmZlckZvclR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisKIDIwMTYtMDctMTEgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXVtpT1NdIEludGVybWl0dGVudCBj
cmFzaCBpbiBbVUlBcHBsaWNhdGlvbiBiZWdpbkJhY2tncm91bmRUYXNrV2l0aE5hbWVdIGV4cGly
YXRpb24gaGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaAppbmRleCA0YjZjYWU0NGRkNmVlZDkwM2MzM2VmNzNjYTg0NDdkODNhMGM1NjZkLi42MzAw
ODVlZmZjMTUzYTcyODQ3YTJkY2QwZGY2ODAxYTQ3NmZhZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCiAjaWZuZGVmIFBhc3RlYm9hcmRTdHJhdGVneV9oCkBAIC02MCwxMSAr
NjAsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHVuaXF1ZU5hbWUoKSA9IDA7CiAg
ICAgdmlydHVhbCBDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7
CiAgICAgdmlydHVhbCBVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsK
LSAgICAKKwogICAgIHZpcnR1YWwgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAg
dmlydHVhbCBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIGxvbmcg
Y29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVi
b2FyZCkgPSAwOwotICAgIHZpcnR1YWwgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgPSAwOworICAgIHZpcnR1YWwgbG9uZyBzZXRCdWZmZXJGb3JUeXBl
KFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIGxvbmcgc2V0UGF0aG5hbWVzRm9y
VHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIGxvbmcgc2V0
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggMjkxMjg1OGYwZjc5YTZl
M2M3NTZmYjgxZTMxNDI0MjAwMTk4YmI3NS4uMGJiNmUyZDIwZmM4MDkwYjRhOThlNmU4ZmRiMzU5
YjA3OTNlMjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2lmbmRlZiBQ
bGF0Zm9ybVBhc3RlYm9hcmRfaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgUGxhdGZvcm1QYXN0ZWJvYXJkKCk7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3RyaW5nIHVuaXF1ZU5hbWUoKTsKLSAgICAKKwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0VHlwZXMoVmVjdG9yPFN0cmluZz4mIHR5cGVzKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShW
ZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsK
QEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIHJl
dHVybiAwIGlmIHBhc3RlYm9hcmQgb3duZXJzaGlwIGhhcyBiZWVuIHRha2VuIGZyb20gdXMuCiAg
ICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQp
OwotICAgIFdFQkNPUkVfRVhQT1JUIGxvbmcgc2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOworICAgIFdFQkNPUkVf
RVhQT1JUIGxvbmcgc2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXIqLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBsb25nIHNldFBhdGhuYW1lc0Zv
clR5cGUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaAppbmRl
eCA2ZThiODM0YzVhOTFiYTE2ZWE2ZWY5ZDZlNDA3NDIyNzNlNDZmYTY3Li4yN2Q4YmNhMGEwM2E3
YzRjZjQ3NjI2NjI3NmZlNTRmYzc4ZmE0NTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCkBAIC03MSwxMyArNzEsMTMgQEAg
cHVibGljOgogICAgIC8vIEZJWE1FOiBXZSBoYXZlIG11bHRpcGxlIHZpcnR1YWwgZnVuY3Rpb25z
IGp1c3Qgc28gd2UgY2FuIHN1cHBvcnQgYSBtb2NrIGZvciB0ZXN0aW5nLgogICAgIC8vIFNlZW1z
IHdhc3RlZnVsLiBXb3VsZCBiZSBuaWNlIHRvIGZpbmQgYSBiZXR0ZXIgd2F5LgogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgflBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKTsKLSAgICAKKwog
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4+JiB2
b2ljZUxpc3QoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOworICAgIHZpcnR1YWwgdm9pZCBzcGVhayhS
ZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiYpOwogICAgIHZpcnR1YWwg
dm9pZCBwYXVzZSgpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsKCk7Ci0gICAgCisKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ2xpZW50
KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xpZW50OyB9CiAK
IHByb3RlY3RlZDoKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV92b2lj
ZUxpc3RJc0luaXRpYWxpemVkIHsgZmFsc2UgfTsKICAgICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyQ2xpZW50KiBtX3NwZWVjaFN5bnRoZXNpemVyQ2xpZW50OwotICAgIAorCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPFdlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXI+IG1fcGxh
dGZvcm1TcGVlY2hXcmFwcGVyOwogI2VuZGlmCkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmw+IG1f
cGxhdGZvcm1TcGVlY2hXcmFwcGVyOwogI2VuZGlmCiB9OwotICAgIAorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbi5oCmluZGV4IDFjNjgwZTMzZDVkYTM5NjU3Mzk3ZmNiZWVhZWJiMjM2NTgwN2JmNzUu
LmZjZWZkODY5YzJiMDk4NDAxODc3NTM1N2Q4NDE4MjEyOTVlMzBhMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb24uaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb24oKSB7IH0KIAogICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVl
IGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxBcnJheUJ1ZmZlcj4gZGF0YSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNFcXVh
bChjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpIGNvbnN0ID0gMDsKIAog
ICAgIGVudW0gUGxhdGZvcm1UeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmNw
cAppbmRleCA4MmQxMWE2M2Y0ZWQwNGU1YzkzNjZlNmFkY2ExYWUwOWRmODQ0MDZhLi42MTk3YmE5
ZmI4MGNiYWUyODU2YzA4ZmQ5ODQ5NzNlMzcxNDhhOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lz
UHJvdmlkZXJFZmwuY3BwCkBAIC0xMzYsMTQgKzEzNiwxNCBAQCB2b2lkIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2lzUHJvdmlkZXJFZmw6OnJlc3VtZSgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsOjpzcGVhayhQYXNzUmVm
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiB1dHRlcmFuY2UpCit2b2lkIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzUHJvdmlkZXJFZmw6OnNwZWFrKFJlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4mJiB1dHRlcmFuY2UpCiB7CiAgICAgaWYgKCFlbmdpbmVJ
bml0KCkgfHwgIXV0dGVyYW5jZSkgewogICAgICAgICBmaXJlU3BlZWNoRXZlbnQoU3BlZWNoRXJy
b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV91dHRlcmFuY2UgPSB1dHRlcmFu
Y2U7CisgICAgbV91dHRlcmFuY2UgPSBXVEZNb3ZlKHV0dGVyYW5jZSk7CiAgICAgU3RyaW5nIHZv
aWNlID0gdm9pY2VOYW1lKG1fdXR0ZXJhbmNlKTsKICAgICBlc3BlYWtfU2V0Vm9pY2VCeU5hbWUo
dm9pY2UudXRmOCgpLmRhdGEoKSk7CiAgICAgZXNwZWFrX1NldFBhcmFtZXRlcihlc3BlYWtSQVRF
LCBjb252ZXJ0UmF0ZVRvRXNwZWFrVmFsdWUobV91dHRlcmFuY2UtPnJhdGUoKSksIDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNoU3ludGhl
c2lzUHJvdmlkZXJFZmwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9QbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1Byb3ZpZGVyRWZsLmgKaW5kZXggMDZkNWYxZTc3MWIzZWI1YzY0YjMyYzNk
ZjhhMmZhY2YwNWIxMmJmYS4uZDZiYTJlYzk0MmY3YzE5ZmZhOTdiYTFiMTM5MzFhNzZhZjJmMzIy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2lzUHJvdmlkZXJFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNQcm92aWRlckVmbC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVWb2ljZUxpc3QoVmVjdG9yPFJlZlB0cjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlPj4mKTsKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9pZCBy
ZXN1bWUoKTsKLSAgICB2b2lkIHNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+KTsKKyAgICB2b2lkIHNwZWFrKFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4mJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIHByaXZhdGU6CiAgICAgYm9v
bCBlbmdpbmVJbml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckVmbC5jcHAKaW5kZXggNDY3YzdlMjlkMTIw
ZmJlM2VkNWRkMWIwNTdiZWFjMDQwY2UzZDc2OC4uNmZkMGYyMWQ2ZTQ3NWZhYmY0ZWRhMzFlMjRj
MzBmNzg1Njk1NWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VmbC9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRWZsLmNwcApAQCAtNjMsMTAgKzYzLDEw
IEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVzdW1lKCkKICAgICBtX3BsYXRm
b3JtU3BlZWNoV3JhcHBlci0+cmVzdW1lKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcjo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZT4gdXR0ZXJhbmNlKQordm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpzcGVhayhSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+JiYgdXR0ZXJhbmNlKQogewogICAg
IEFTU0VSVChtX3BsYXRmb3JtU3BlZWNoV3JhcHBlcik7Ci0gICAgbV9wbGF0Zm9ybVNwZWVjaFdy
YXBwZXItPnNwZWFrKHV0dGVyYW5jZSk7CisgICAgbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXItPnNw
ZWFrKFdURk1vdmUodXR0ZXJhbmNlKSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplcjo6Y2FuY2VsKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDE1NjNhMTI1YzRkMmQwYmEyOTIzMDE3YTg2OTBm
OTBmYTg2YmEzNDAuLmQ4ODg2ZmI3ZjcwOWVhZDViYzc1OTYwZWU2Y2UzMzYwZTczMjA3YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQpAQCAtMTI1LDcgKzEyNSw3IEBAIGxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRU
eXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWxvbmcgUGxh
dGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgY29uc3QgU3RyaW5nJikKK2xvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRCdWZmZXJGb3JU
eXBlKFNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVySU9TLm1tCmluZGV4IDY2OGIxNTI1ZDZiY2QyNWJkMjViZWNlNjMwNzA1NzY4
MzhkYWU3MDcuLjNiODhhZGZmZDg1MDY1ZmU5YTE0ZTBjNTYyNzk1YjM0MDIzNTY2OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVySU9TLm1tCkBAIC05LDcgKzksNyBAQAogICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKICAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKQEAgLTU1LDcg
KzU1LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFu
Y2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplciogbV9zeW50aGVzaXplck9iamVjdDsKICAgICAvLyBIb2xkIGEgUmVmIHRvIHRo
ZSB1dHRlcmFuY2Ugc28gdGhhdCBpdCB3b24ndCBkaXNhcHBlYXIgdW50aWwgdGhlIHN5bnRoIGlz
IGRvbmUgd2l0aCBpdC4KICAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+IG1fdXR0ZXJhbmNlOwotICAgIAorCiAgICAgUmV0YWluUHRyPEFWU3BlZWNo
U3ludGhlc2l6ZXI+IG1fc3ludGhlc2l6ZXI7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgU09GVF9M
SU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNo
UmF0ZSwgZmxvYXQpCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCisKICAgICBtX3N5bnRoZXNpemVyT2JqZWN0ID0gc3ludGhlc2l6
ZXI7CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC04Myw3ICs4Myw3IEBAIFNPRlRfTElOS19DT05T
VEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZs
b2F0KQogICAgICAgICByYXRlICo9IEFWU3BlZWNoVXR0ZXJhbmNlRGVmYXVsdFNwZWVjaFJhdGU7
CiAgICAgZWxzZQogICAgICAgICByYXRlID0gQVZTcGVlY2hVdHRlcmFuY2VEZWZhdWx0U3BlZWNo
UmF0ZSArICgocmF0ZSAtIDEpICogKEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUg
LSBBVlNwZWVjaFV0dGVyYW5jZURlZmF1bHRTcGVlY2hSYXRlKSk7Ci0gICAgCisKICAgICByZXR1
cm4gcmF0ZTsKIH0KIApAQCAtOTIsMTAgKzkyLDEwIEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZv
dW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQogICAg
IC8vIFdoZW4gc3BlYWsgaXMgY2FsbGVkIHdlIHNob3VsZCBub3QgaGF2ZSBhbiBleGlzdGluZyBz
cGVlY2ggdXR0ZXJhbmNlIG91dHN0YW5kaW5nLgogICAgIEFTU0VSVCghbV91dHRlcmFuY2UpOwog
ICAgIEFTU0VSVCh1dHRlcmFuY2UpOwotICAgIAorCiAgICAgaWYgKCF1dHRlcmFuY2UpCiAgICAg
ICAgIHJldHVybjsKLSAgICAKKwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAg
IGlmICghbV9zeW50aGVzaXplcikgewogICAgICAgICBtX3N5bnRoZXNpemVyID0gYWRvcHROUyhb
YWxsb2NBVlNwZWVjaFN5bnRoZXNpemVySW5zdGFuY2UoKSBpbml0XSk7CkBAIC0xMTMsNyArMTEz
LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVlY2hVdHRlcmFuY2VN
YXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgICAgICAgICB2b2ljZUxhbmd1YWdlID0gdXR0
ZXJhbmNlLT5sYW5nKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIHZvaWNlTGFuZ3VhZ2UgPSB1dHRl
cmFuY2UtPnZvaWNlKCktPmxhbmcoKTsKLSAgICAKKwogICAgIEFWU3BlZWNoU3ludGhlc2lzVm9p
Y2UgKmF2Vm9pY2UgPSBuaWw7CiAgICAgaWYgKHZvaWNlTGFuZ3VhZ2UpCiAgICAgICAgIGF2Vm9p
Y2UgPSBbQVZTcGVlY2hTeW50aGVzaXNWb2ljZUNsYXNzIHZvaWNlV2l0aExhbmd1YWdlOnZvaWNl
TGFuZ3VhZ2VdOwpAQCAtMTI1LDcgKzEyNSw3IEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5k
YXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQogICAgIFth
dlV0dGVyYW5jZSBzZXRQaXRjaE11bHRpcGxpZXI6dXR0ZXJhbmNlLT5waXRjaCgpXTsKICAgICBb
YXZVdHRlcmFuY2Ugc2V0Vm9pY2U6YXZWb2ljZV07CiAgICAgbV91dHRlcmFuY2UgPSB1dHRlcmFu
Y2U7Ci0gICAgCisKICAgICBbbV9zeW50aGVzaXplciBzcGVha1V0dGVyYW5jZTphdlV0dGVyYW5j
ZV07CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQpAQCAtMTM0LDcgKzEzNCw3IEBA
IFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11
bVNwZWVjaFJhdGUsIGZsb2F0KQogewogICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAgICAgIHJl
dHVybjsKLSAgICAKKwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIFttX3N5
bnRoZXNpemVyIHBhdXNlU3BlYWtpbmdBdEJvdW5kYXJ5OkFWU3BlZWNoQm91bmRhcnlJbW1lZGlh
dGVdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTE0NCw3ICsxNDQsNyBAQCBT
T0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1T
cGVlY2hSYXRlLCBmbG9hdCkKIHsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAgICByZXR1
cm47Ci0gICAgCisKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBbbV9zeW50
aGVzaXplciBjb250aW51ZVNwZWFraW5nXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CkBAIC0xNTQsNyArMTU0LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZT
cGVlY2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiB7CiAgICAgaWYgKCFtX3V0
dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAgICAgW21fc3ludGhlc2l6ZXIgc3RvcFNwZWFraW5nQXRCb3VuZGFyeTpBVlNw
ZWVjaEJvdW5kYXJ5SW1tZWRpYXRlXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCkBA
IC0xNjYsNyArMTY2LDcgQEAgU09GVF9MSU5LX0NPTlNUQU5UKEFWRm91bmRhdGlvbiwgQVZTcGVl
Y2hVdHRlcmFuY2VNYXhpbXVtU3BlZWNoUmF0ZSwgZmxvYXQpCiAgICAgVU5VU0VEX1BBUkFNKHV0
dGVyYW5jZSk7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAor
CiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xpZW50KCktPmRpZFN0YXJ0U3BlYWtpbmcobV91
dHRlcmFuY2UpOwogfQogCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBTT0ZUX0xJTktfQ09OU1RBTlQo
QVZGb3VuZGF0aW9uLCBBVlNwZWVjaFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkK
ICAgICBVTlVTRURfUEFSQU0odXR0ZXJhbmNlKTsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyBDbGVhciB0aGUgbV91dHRlcmFuY2UgdmFyaWFi
bGUgaW4gY2FzZSBmaW5pc2ggc3BlYWtpbmcga2lja3Mgb2ZmIGEgbmV3IHNwZWFraW5nIGpvYiBp
bW1lZGlhdGVseS4KICAgICBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2U+IHBsYXRmb3JtVXR0ZXJhbmNlID0gbV91dHRlcmFuY2U7CiAgICAgbV91dHRlcmFu
Y2UgPSBudWxscHRyOwotICAgIAorCiAgICAgbV9zeW50aGVzaXplck9iamVjdC0+Y2xpZW50KCkt
PmRpZEZpbmlzaFNwZWFraW5nKHBsYXRmb3JtVXR0ZXJhbmNlKTsKIH0KIApAQCAtMTkwLDcgKzE5
MCw3IEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNl
TWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQogICAgIFVOVVNFRF9QQVJBTSh1dHRlcmFuY2UpOwog
ICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIG1fc3lu
dGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRQYXVzZVNwZWFraW5nKG1fdXR0ZXJhbmNlKTsK
IH0KIApAQCAtMjAwLDcgKzIwMCw3IEBAIFNPRlRfTElOS19DT05TVEFOVChBVkZvdW5kYXRpb24s
IEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUsIGZsb2F0KQogICAgIFVOVVNFRF9Q
QVJBTSh1dHRlcmFuY2UpOwogICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIG1fc3ludGhlc2l6ZXJPYmplY3QtPmNsaWVudCgpLT5kaWRSZXN1bWVTcGVh
a2luZyhtX3V0dGVyYW5jZSk7CiB9CiAKQEAgLTIxMCwxMSArMjEwLDExIEBAIFNPRlRfTElOS19D
T05TVEFOVChBVkZvdW5kYXRpb24sIEFWU3BlZWNoVXR0ZXJhbmNlTWF4aW11bVNwZWVjaFJhdGUs
IGZsb2F0KQogICAgIFVOVVNFRF9QQVJBTSh1dHRlcmFuY2UpOwogICAgIGlmICghbV91dHRlcmFu
Y2UpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vIENsZWFyIHRoZSBtX3V0dGVyYW5j
ZSB2YXJpYWJsZSBpbiBjYXNlIGZpbmlzaCBzcGVha2luZyBraWNrcyBvZmYgYSBuZXcgc3BlYWtp
bmcgam9iIGltbWVkaWF0ZWx5LgogICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpc1V0dGVyYW5jZT4gcGxhdGZvcm1VdHRlcmFuY2UgPSBtX3V0dGVyYW5jZTsKICAgICBt
X3V0dGVyYW5jZSA9IG51bGxwdHI7Ci0gICAgCisKICAgICBtX3N5bnRoZXNpemVyT2JqZWN0LT5j
bGllbnQoKS0+ZGlkRmluaXNoU3BlYWtpbmcocGxhdGZvcm1VdHRlcmFuY2UpOwogfQogCkBAIC0y
MjIsMTAgKzIyMiwxMCBAQCBTT0ZUX0xJTktfQ09OU1RBTlQoQVZGb3VuZGF0aW9uLCBBVlNwZWVj
aFV0dGVyYW5jZU1heGltdW1TcGVlY2hSYXRlLCBmbG9hdCkKIHsKICAgICBVTlVTRURfUEFSQU0o
c3ludGhlc2l6ZXIpOwogICAgIFVOVVNFRF9QQVJBTSh1dHRlcmFuY2UpOwotICAgIAorCiAgICAg
aWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgLy8gaU9TIG9u
bHkgc3VwcG9ydHMgd29yZCBib3VuZGFyaWVzLgogICAgIG1fc3ludGhlc2l6ZXJPYmplY3QtPmNs
aWVudCgpLT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQobV91dHRlcmFuY2UsIFdlYkNvcmU6OlNwZWVj
aFdvcmRCb3VuZGFyeSwgY2hhcmFjdGVyUmFuZ2UubG9jYXRpb24pOwogfQpAQCAtMjY2LDExICsy
NjYsMTEgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpyZXN1bWUoKQogICAgIFtt
X3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSByZXN1bWVdOwogfQogCi12b2lkIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2U+IHV0dGVyYW5jZSkKK3ZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6
c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYmIHV0dGVyYW5j
ZSkKIHsKICAgICBpZiAoIW1fcGxhdGZvcm1TcGVlY2hXcmFwcGVyKQogICAgICAgICBtX3BsYXRm
b3JtU3BlZWNoV3JhcHBlciA9IGFkb3B0TlMoW1tXZWJTcGVlY2hTeW50aGVzaXNXcmFwcGVyIGFs
bG9jXSBpbml0V2l0aFNwZWVjaFN5bnRoZXNpemVyOnRoaXNdKTsKLSAgICAKKwogICAgIFttX3Bs
YXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBzcGVha1V0dGVyYW5jZTp1dHRlcmFuY2UuZ2V0KCld
OwogfQogCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
OjpjYW5jZWwoKQogewogICAgIFttX3BsYXRmb3JtU3BlZWNoV3JhcHBlci5nZXQoKSBjYW5jZWxd
OwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
U1BFRUNIX1NZTlRIRVNJUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KaW5kZXggNzZhNzg0MTU4N2YyYzk5MjljZTgzMTBmOTM5OTUxOTJmZjYxMTlkOS4u
ZGYzMTIxNmYzZGZlZDNmMTZlMmZhMTAxYTY2ZjFkOWJjODZiNzcxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTE2OSwxNSArMTY5LDE1IEBA
IHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRl
bnQpCiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5j
bGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50
LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgbV9jaGFuZ2VDb3Vu
dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVy
Rm9yVHlwZShjb250ZW50LmNsaWVudERhdGFbaV0sIGNvbnRlbnQuY2xpZW50VHlwZXNbaV0sIG1f
cGFzdGVib2FyZE5hbWUpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuY2xp
ZW50RGF0YVtpXS5nZXQoKSwgY29udGVudC5jbGllbnRUeXBlc1tpXSwgbV9wYXN0ZWJvYXJkTmFt
ZSk7CiAgICAgaWYgKGNvbnRlbnQuY2FuU21hcnRDb3B5T3JEZWxldGUpCi0gICAgICAgIG1fY2hh
bmdlQ291bnQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNl
dEJ1ZmZlckZvclR5cGUoMCwgV2ViU21hcnRQYXN0ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5h
bWUpOworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3Rl
Ym9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKG51bGxwdHIsIFdlYlNtYXJ0UGFzdGVQ
Ym9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICBpZiAoY29udGVudC5kYXRhSW5XZWJB
cmNoaXZlRm9ybWF0KQotICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUlu
V2ViQXJjaGl2ZUZvcm1hdCwgV2ViQXJjaGl2ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUp
OworICAgICAgICBtX2NoYW5nZUNvdW50ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5zZXRCdWZmZXJGb3JUeXBlKGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdC5nZXQoKSwgV2ViQXJjaGl2ZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwogICAg
IGlmIChjb250ZW50LmRhdGFJblJURkRGb3JtYXQpCi0gICAgICAgIG1fY2hhbmdlQ291bnQgPSBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldEJ1ZmZlckZvclR5
cGUoY29udGVudC5kYXRhSW5SVEZERm9ybWF0LCBOU1JURkRQYm9hcmRUeXBlLCBtX3Bhc3RlYm9h
cmROYW1lKTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRhdGFJblJURkRG
b3JtYXQuZ2V0KCksIE5TUlRGRFBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgIGlm
IChjb250ZW50LmRhdGFJblJURkZvcm1hdCkKLSAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShj
b250ZW50LmRhdGFJblJURkZvcm1hdCwgTlNSVEZQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1l
KTsKKyAgICAgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJv
YXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShjb250ZW50LmRhdGFJblJURkZvcm1hdC5n
ZXQoKSwgTlNSVEZQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICBpZiAoIWNvbnRl
bnQuZGF0YUluU3RyaW5nRm9ybWF0LmlzTnVsbCgpKQogICAgICAgICBtX2NoYW5nZUNvdW50ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5zZXRTdHJpbmdGb3JU
eXBlKGNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0LCBOU1N0cmluZ1Bib2FyZFR5cGUsIG1fcGFz
dGVib2FyZE5hbWUpOwogfQpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiAgICAgQVNTRVJUKE1J
TUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlKHBhc3RlYm9h
cmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlKSk7CiAKICAgICBtX2NoYW5nZUNvdW50ID0gd3JpdGVV
UkxGb3JUeXBlcyh3cml0YWJsZVR5cGVzRm9ySW1hZ2UoKSwgbV9wYXN0ZWJvYXJkTmFtZSwgcGFz
dGVib2FyZEltYWdlLnVybCk7Ci0gICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6
OndyYXBDRkRhdGEoaW1hZ2VEYXRhKSwgTlNUSUZGUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFt
ZSk7CisgICAgbV9jaGFuZ2VDb3VudCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJk
U3RyYXRlZ3koKS0+c2V0QnVmZmVyRm9yVHlwZShTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGEoaW1h
Z2VEYXRhKS5wdHIoKSwgTlNUSUZGUGJvYXJkVHlwZSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAg
d3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoZmlsZVdyYXBwZXIocGFzdGVib2FyZElt
YWdlKSwgbV9wYXN0ZWJvYXJkTmFtZSwgbV9jaGFuZ2VDb3VudCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4
IGFlYzRhNjk0NDBlZjBkNjRiZTZhMmY3OGI5NmYwZjdkNDk0NzA0ODcuLjEwZGIzZGJiYjIzM2E5
MzU4YjM0YmI5ODEwZDMxZjg5MGUzNjkyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtNDAsNyArNDAsNyBAQCBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OlBsYXRmb3JtUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmdldFR5cGVzKFZlY3RvcjxTdHJp
bmc+JiB0eXBlcykKIHsKICAgICBOU0FycmF5ICpwYXN0ZWJvYXJkVHlwZXMgPSBbbV9wYXN0ZWJv
YXJkLmdldCgpIHR5cGVzXTsKLSAgICAKKwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8
IFtwYXN0ZWJvYXJkVHlwZXMgY291bnRdOyBpKyspCiAgICAgICAgIHR5cGVzLmFwcGVuZChbcGFz
dGVib2FyZFR5cGVzIG9iamVjdEF0SW5kZXg6aV0pOwogfQpAQCAtNTgsNyArNTgsNyBAQCB2b2lk
IFBsYXRmb3JtUGFzdGVib2FyZDo6Z2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYg
cGF0aG5hbWVzLCBjb25zdCBTdAogICAgIE5TQXJyYXkqIHBhdGhzID0gW21fcGFzdGVib2FyZC5n
ZXQoKSBwcm9wZXJ0eUxpc3RGb3JUeXBlOnBhc3RlYm9hcmRUeXBlXTsKICAgICBpZiAoW3BhdGhz
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKICAgICAgICAgcGF0aG5hbWVzLmFw
cGVuZCgoTlNTdHJpbmcgKilwYXRocyk7Ci0gICAgICAgIHJldHVybjsgICAgICAgIAorICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IFtwYXRocyBj
b3VudF07IGkrKykKICAgICAgICAgcGF0aG5hbWVzLmFwcGVuZChbcGF0aHMgb2JqZWN0QXRJbmRl
eDppXSk7CkBAIC04NSwxNCArODUsMTQgQEAgU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6dW5p
cXVlTmFtZSgpCiBDb2xvciBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKCkKIHsKICAgICBOU0Nv
bG9yICpjb2xvciA9IFtOU0NvbG9yIGNvbG9yRnJvbVBhc3RlYm9hcmQ6bV9wYXN0ZWJvYXJkLmdl
dCgpXTsKLSAgICAKLSAgICAvLyBUaGUgY29sb3IgbWF5IG5vdCBiZSBpbiBhbiBSR0IgY29sb3Jz
cGFjZS4gVGhpcyBjb21tb25seSBvY2N1cnMgd2hlbiBhIGNvbG9yIGlzIAorCisgICAgLy8gVGhl
IGNvbG9yIG1heSBub3QgYmUgaW4gYW4gUkdCIGNvbG9yc3BhY2UuIFRoaXMgY29tbW9ubHkgb2Nj
dXJzIHdoZW4gYSBjb2xvciBpcwogICAgIC8vIGRyYWdnZWQgZnJvbSB0aGUgTlNDb2xvclBhbmVs
IGdyYXlzY2FsZSBwaWNrZXIuCiAgICAgaWYgKFtbY29sb3IgY29sb3JTcGFjZV0gY29sb3JTcGFj
ZU1vZGVsXSAhPSBOU1JHQkNvbG9yU3BhY2VNb2RlbCkKICAgICAgICAgY29sb3IgPSBbY29sb3Ig
Y29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TQ2FsaWJyYXRlZFJHQkNvbG9yU3BhY2VdOwotICAg
IAotICAgIHJldHVybiBtYWtlUkdCQSgoaW50KShbY29sb3IgcmVkQ29tcG9uZW50XSAqIDI1NS4w
ICsgMC41KSwgKGludCkoW2NvbG9yIGdyZWVuQ29tcG9uZW50XSAqIDI1NS4wICsgMC41KSwgCi0g
ICAgICAgICAgICAgICAgICAgIChpbnQpKFtjb2xvciBibHVlQ29tcG9uZW50XSAqIDI1NS4wICsg
MC41KSwgKGludCkoW2NvbG9yIGFscGhhQ29tcG9uZW50XSAqIDI1NS4wICsgMC41KSk7ICAgIAor
CisgICAgcmV0dXJuIG1ha2VSR0JBKChpbnQpKFtjb2xvciByZWRDb21wb25lbnRdICogMjU1LjAg
KyAwLjUpLCAoaW50KShbY29sb3IgZ3JlZW5Db21wb25lbnRdICogMjU1LjAgKyAwLjUpLAorICAg
ICAgICAoaW50KShbY29sb3IgYmx1ZUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSksIChpbnQpKFtj
b2xvciBhbHBoYUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSkpOwogfQogCiBVUkwgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp1cmwoKQpAQCAtMTA0LDEzICsxMDQsMTMgQEAgbG9uZyBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OmNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCkKIHsKICAgICBOU1Bhc3Rl
Ym9hcmQqIHBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpmcm9t
UGFzdGVib2FyZF07CiAgICAgTlNBcnJheSogdHlwZXMgPSBbcGFzdGVib2FyZCB0eXBlc107Ci0g
ICAgCisKICAgICBbbV9wYXN0ZWJvYXJkLmdldCgpIGFkZFR5cGVzOnR5cGVzIG93bmVyOm5pbF07
CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgW3R5cGVzIGNvdW50XTsgaSsrKSB7CiAg
ICAgICAgIE5TU3RyaW5nKiB0eXBlID0gW3R5cGVzIG9iamVjdEF0SW5kZXg6aV07CiAgICAgICAg
IGlmICghW21fcGFzdGVib2FyZC5nZXQoKSBzZXREYXRhOltwYXN0ZWJvYXJkIGRhdGFGb3JUeXBl
OnR5cGVdIGZvclR5cGU6dHlwZV0pCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9ICAgIAor
ICAgIH0KICAgICByZXR1cm4gY2hhbmdlQ291bnQoKTsKIH0KIApAQCAtMTM1LDcgKzEzNSw3IEBA
IGxvbmcgUGxhdGZvcm1QYXN0ZWJvYXJkOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzKQogICAgIHJldHVybiBbbV9wYXN0ZWJvYXJkLmdldCgpIGRlY2xhcmVU
eXBlczp0eXBlcy5nZXQoKSBvd25lcjpuaWxdOwogfQogCi1sb25nIFBsYXRmb3JtUGFzdGVib2Fy
ZDo6c2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKQorbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnNldEJ1
ZmZlckZvclR5cGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpCiB7CiAgICAgQk9PTCBkaWRXcml0ZURhdGEgPSBbbV9wYXN0ZWJvYXJkIHNldERhdGE6
YnVmZmVyID8gYnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSA6IG5pbCBmb3JUeXBlOnBhc3Rl
Ym9hcmRUeXBlXTsKICAgICBpZiAoIWRpZFdyaXRlRGF0YSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBs
b25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0QnVmZmVyRm9yVHlwZShQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyLCBjb25zdAogCiBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6c2V0UGF0
aG5hbWVzRm9yVHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlKQogewotICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gcGF0
aHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsgICAgCisgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiBwYXRocyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF0aG5hbWVzLnNpemUo
KTsgKytpKQogICAgICAgICBbcGF0aHMuZ2V0KCkgYWRkT2JqZWN0OltOU0FycmF5IGFycmF5V2l0
aE9iamVjdDpwYXRobmFtZXNbaV1dXTsKICAgICBCT09MIGRpZFdyaXRlRGF0YSA9IFttX3Bhc3Rl
Ym9hcmQuZ2V0KCkgc2V0UHJvcGVydHlMaXN0OnBhdGhzLmdldCgpIGZvclR5cGU6cGFzdGVib2Fy
ZFR5cGVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQppbmRleCBjMjdiM2NmYjAzZTQzZWY2NDg4NWMx
Mzc4ZTJlYjljYjZhOWY0ZDVkLi5mMTdkODA5ZDlkYjhmODg3OTIzYTUyNDFiYzYyMWU2ZTRiZDVm
ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUg
IlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuaCIKICNpbmNsdWRlICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8QXBwS2l0L05TU3BlZWNoU3ludGhlc2l6ZXIuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
I2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQpAQCAtNDAsNyArMzksNyBAQAogICAgIFdlYkNv
cmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIqIG1fc3ludGhlc2l6ZXJPYmplY3Q7CiAgICAg
Ly8gSG9sZCBhIFJlZiB0byB0aGUgdXR0ZXJhbmNlIHNvIHRoYXQgaXQgd29uJ3QgZGlzYXBwZWFy
IHVudGlsIHRoZSBzeW50aCBpcyBkb25lIHdpdGggaXQuCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UqIG1fdXR0ZXJhbmNlOwotICAgIAorCiAgICAgUmV0YWlu
UHRyPE5TU3BlZWNoU3ludGhlc2l6ZXI+IG1fc3ludGhlc2l6ZXI7CiAgICAgZmxvYXQgbV9iYXNl
UGl0Y2g7CiB9CkBAIC01Niw3ICs1NSw3IEBACiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCisKICAgICBtX3N5bnRoZXNpemVyT2Jq
ZWN0ID0gc3ludGhlc2l6ZXI7CiAgICAgW3NlbGYgdXBkYXRlQmFzZVBpdGNoRm9yU3ludGhlc2l6
ZXJdOwogICAgIHJldHVybiBzZWxmOwpAQCAtODgsMTYgKzg3LDE2IEBACiAgICAgLy8gV2hlbiBz
cGVhayBpcyBjYWxsZWQgd2Ugc2hvdWxkIG5vdCBoYXZlIGFuIGV4aXN0aW5nIHNwZWVjaCB1dHRl
cmFuY2Ugb3V0c3RhbmRpbmcuCiAgICAgQVNTRVJUKCFtX3V0dGVyYW5jZSk7CiAgICAgQVNTRVJU
KHV0dGVyYW5jZSk7Ci0gICAgCisKICAgICBpZiAoIW1fc3ludGhlc2l6ZXIpIHsKICAgICAgICAg
bV9zeW50aGVzaXplciA9IGFkb3B0TlMoW1tOU1NwZWVjaFN5bnRoZXNpemVyIGFsbG9jXSBpbml0
V2l0aFZvaWNlOm5pbF0pOwogICAgICAgICBbbV9zeW50aGVzaXplciBzZXREZWxlZ2F0ZTpzZWxm
XTsKICAgICB9Ci0gICAgCisKICAgICAvLyBGaW5kIGlmIHdlIHNob3VsZCB1c2UgYSBzcGVjaWZp
YyB2b2ljZSBiYXNlZCBvbiB0aGUgdm9pY2VVUkkgaW4gdXR0ZXJhbmNlLgogICAgIC8vIE90aGVy
d2lzZSwgZmluZCB0aGUgdm9pY2UgdGhhdCBtYXRjaGVzIHRoZSBsYW5ndWFnZS4gVGhlIE1hYyBk
b2Vzbid0IGhhdmUgYSBkZWZhdWx0IHZvaWNlIHBlciBsYW5ndWFnZSwgc28gdGhlIGZpcnN0CiAg
ICAgLy8gb25lIHdpbGwgaGF2ZSB0byBkby4KLSAgICAKKwogICAgIFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVm9pY2UqIHV0dGVyYW5jZVZvaWNlID0gdXR0ZXJhbmNlLT52b2ljZSgp
OwogICAgIC8vIElmIG5vIHZvaWNlIHdhcyBzcGVjaWZpZWQsIHRyeSB0byBtYXRjaCBieSBsYW5n
dWFnZS4KICAgICBpZiAoIXV0dGVyYW5jZVZvaWNlICYmICF1dHRlcmFuY2UtPmxhbmcoKS5pc0Vt
cHR5KCkpIHsKQEAgLTEwOSw3ICsxMDgsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQotICAgIAorCiAgICAgTlNTdHJpbmcgKnZvaWNlVVJJID0gbmlsOwogICAgIGlmICh1dHRl
cmFuY2VWb2ljZSkKICAgICAgICAgdm9pY2VVUkkgPSB1dHRlcmFuY2VWb2ljZS0+dm9pY2VVUkko
KTsKQEAgLTEyNCwxNCArMTIzLDE0IEBACiAgICAgICAgIC8vIFJlc2V0IHRoZSBiYXNlIHBpdGNo
IHdoZW5ldmVyIHdlIGNoYW5nZSB2b2ljZXMuCiAgICAgICAgIHVwZGF0ZVBpdGNoID0gWUVTOwog
ICAgIH0KLSAgICAKKwogICAgIGlmIChtX2Jhc2VQaXRjaCA9PSAwIHx8IHVwZGF0ZVBpdGNoKQot
ICAgICAgICBbc2VsZiB1cGRhdGVCYXNlUGl0Y2hGb3JTeW50aGVzaXplcl07ICAgIAotICAgIAor
ICAgICAgICBbc2VsZiB1cGRhdGVCYXNlUGl0Y2hGb3JTeW50aGVzaXplcl07CisKICAgICBbbV9z
eW50aGVzaXplciBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDpbc2VsZiBjb252
ZXJ0UGl0Y2hUb05TU3BlZWNoVmFsdWU6dXR0ZXJhbmNlLT5waXRjaCgpXV0gZm9yUHJvcGVydHk6
TlNTcGVlY2hQaXRjaEJhc2VQcm9wZXJ0eSBlcnJvcjpuaWxdOwogICAgIFttX3N5bnRoZXNpemVy
IHNldFJhdGU6W3NlbGYgY29udmVydFJhdGVUb1dQTTp1dHRlcmFuY2UtPnJhdGUoKV1dOwogICAg
IFttX3N5bnRoZXNpemVyIHNldFZvbHVtZTp1dHRlcmFuY2UtPnZvbHVtZSgpXTsKLSAgICAKKwog
ICAgIG1fdXR0ZXJhbmNlID0gdXR0ZXJhbmNlOwogICAgIFttX3N5bnRoZXNpemVyIHN0YXJ0U3Bl
YWtpbmdTdHJpbmc6dXR0ZXJhbmNlLT50ZXh0KCldOwogICAgIG1fc3ludGhlc2l6ZXJPYmplY3Qt
PmNsaWVudCgpLT5kaWRTdGFydFNwZWFraW5nKHV0dGVyYW5jZSk7CkBAIC0xNDEsNyArMTQwLDcg
QEAKIHsKICAgICBpZiAoIW1fdXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAg
ICBbbV9zeW50aGVzaXplciBwYXVzZVNwZWFraW5nQXRCb3VuZGFyeTpOU1NwZWVjaEltbWVkaWF0
ZUJvdW5kYXJ5XTsKICAgICBtX3N5bnRoZXNpemVyT2JqZWN0LT5jbGllbnQoKS0+ZGlkUGF1c2VT
cGVha2luZyhtX3V0dGVyYW5jZSk7CiB9CkBAIC0xNTAsNyArMTQ5LDcgQEAKIHsKICAgICBpZiAo
IW1fdXR0ZXJhbmNlKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBbbV9zeW50aGVzaXpl
ciBjb250aW51ZVNwZWFraW5nXTsKICAgICBtX3N5bnRoZXNpemVyT2JqZWN0LT5jbGllbnQoKS0+
ZGlkUmVzdW1lU3BlYWtpbmcobV91dHRlcmFuY2UpOwogfQpAQCAtMTU5LDcgKzE1OCw3IEBACiB7
CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgW21f
c3ludGhlc2l6ZXIgc3RvcFNwZWFraW5nQXRCb3VuZGFyeTpOU1NwZWVjaEltbWVkaWF0ZUJvdW5k
YXJ5XTsKICAgICBtX3N5bnRoZXNpemVyT2JqZWN0LT5jbGllbnQoKS0+c3BlYWtpbmdFcnJvck9j
Y3VycmVkKG1fdXR0ZXJhbmNlKTsKICAgICBtX3V0dGVyYW5jZSA9IDA7CkBAIC0xNzYsMTMgKzE3
NSwxMyBAQAogewogICAgIGlmICghbV91dHRlcmFuY2UpCiAgICAgICAgIHJldHVybjsKLSAgICAK
KwogICAgIFVOVVNFRF9QQVJBTShzZW5kZXIpOwotICAgIAorCiAgICAgLy8gQ2xlYXIgdGhlIG1f
dXR0ZXJhbmNlIHZhcmlhYmxlIGluIGNhc2UgZmluaXNoIHNwZWFraW5nIGtpY2tzIG9mZiBhIG5l
dyBzcGVha2luZyBqb2IgaW1tZWRpYXRlbHkuCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UqIHV0dGVyYW5jZSA9IG1fdXR0ZXJhbmNlOwogICAgIG1fdXR0ZXJh
bmNlID0gMDsKLSAgICAKKwogICAgIGlmIChmaW5pc2hlZFNwZWFraW5nKQogICAgICAgICBtX3N5
bnRoZXNpemVyT2JqZWN0LT5jbGllbnQoKS0+ZGlkRmluaXNoU3BlYWtpbmcodXR0ZXJhbmNlKTsK
ICAgICBlbHNlCkBAIC0yMjIsMjMgKzIyMSwyMyBAQCB2b2lkIFBsYXRmb3JtU3BlZWNoU3ludGhl
c2l6ZXI6OmluaXRpYWxpemVWb2ljZUxpc3QoKQogICAgIGZvciAoTlNVSW50ZWdlciBrID0gMDsg
ayA8IGNvdW50OyBrKyspIHsKICAgICAgICAgTlNTdHJpbmcgKnZvaWNlTmFtZSA9IFthdmFpbGFi
bGVWb2ljZXMgb2JqZWN0QXRJbmRleDprXTsKICAgICAgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1
dGVzID0gW05TU3BlZWNoU3ludGhlc2l6ZXIgYXR0cmlidXRlc0ZvclZvaWNlOnZvaWNlTmFtZV07
Ci0gICAgICAgIAorCiAgICAgICAgIE5TU3RyaW5nICp2b2ljZVVSSSA9IFthdHRyaWJ1dGVzIG9i
amVjdEZvcktleTpOU1ZvaWNlSWRlbnRpZmllcl07CiAgICAgICAgIE5TU3RyaW5nICpuYW1lID0g
W2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVm9pY2VOYW1lXTsKICAgICAgICAgTlNTdHJpbmcg
Kmxhbmd1YWdlID0gW2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TVm9pY2VMb2NhbGVJZGVudGlm
aWVyXTsKICAgICAgICAgTlNMb2NhbGUgKmxvY2FsZSA9IFtbTlNMb2NhbGUgYWxsb2NdIGluaXRX
aXRoTG9jYWxlSWRlbnRpZmllcjpsYW5ndWFnZV07CiAgICAgICAgIE5TU3RyaW5nICpkZWZhdWx0
Vm9pY2VVUkkgPSB3a1NwZWVjaFN5bnRoZXNpc0dldERlZmF1bHRWb2ljZUlkZW50aWZpZXJGb3JM
b2NhbGUobG9jYWxlKTsKICAgICAgICAgW2xvY2FsZSByZWxlYXNlXTsKLSAgICAgICAgCisKICAg
ICAgICAgLy8gQ2hhbmdlIHRvIEJDUC00NyBmb3JtYXQgYXMgZGVmaW5lZCBieSBzcGVjLgogICAg
ICAgICBsYW5ndWFnZSA9IFtsYW5ndWFnZSBzdHJpbmdCeVJlcGxhY2luZ09jY3VycmVuY2VzT2ZT
dHJpbmc6QCJfIiB3aXRoU3RyaW5nOkAiLSJdOwotICAgICAgICAKKwogICAgICAgICBib29sIGlz
RGVmYXVsdCA9IFtkZWZhdWx0Vm9pY2VVUkkgaXNFcXVhbFRvU3RyaW5nOnZvaWNlVVJJXTsKLSAg
ICAgICAgCisKICAgICAgICAgbV92b2ljZUxpc3QuYXBwZW5kKFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVm9pY2U6OmNyZWF0ZSh2b2ljZVVSSSwgbmFtZSwgbGFuZ3VhZ2UsIHRydWUsIGlzRGVmYXVs
dCkpOwogICAgIH0KIH0KLSAgICAKKwogdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpw
YXVzZSgpCiB7CiAgICAgW21fcGxhdGZvcm1TcGVlY2hXcmFwcGVyLmdldCgpIHBhdXNlXTsKQEAg
LTI0OCwxMiArMjQ3LDEyIEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6cmVzdW1l
KCkKIHsKICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgcmVzdW1lXTsKIH0KLSAg
ICAKLXZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6c3BlYWsoUGFzc1JlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQorCit2b2lkIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXI6OnNwZWFrKFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4mJiB1dHRlcmFuY2UpCiB7CiAgICAgaWYgKCFtX3BsYXRmb3JtU3BlZWNoV3JhcHBl
cikKICAgICAgICAgbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIgPSBhZG9wdE5TKFtbV2ViU3BlZWNo
U3ludGhlc2lzV3JhcHBlciBhbGxvY10gaW5pdFdpdGhTcGVlY2hTeW50aGVzaXplcjp0aGlzXSk7
Ci0gICAgCisKICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdyYXBwZXIuZ2V0KCkgc3BlYWtVdHRlcmFu
Y2U6dXR0ZXJhbmNlLmdldCgpXTsKIH0KIApAQCAtMjYxLDcgKzI2MCw3IEBAIHZvaWQgUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplcjo6Y2FuY2VsKCkKIHsKICAgICBbbV9wbGF0Zm9ybVNwZWVjaFdy
YXBwZXIuZ2V0KCkgY2FuY2VsXTsKIH0KLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbk1hYy5oCmluZGV4IDFiY2Y4N2FkOGFiZWM1MmNmM2UzYmNkNzNiZDkzNzBkMmZlZTIw
ZWEuLjIyMzg2YjVhZjM2OTVkMjcyNDE3NmNjNGRjZWRhNjkxOTYxZTRlMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbk1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBjcmVhdGUoaWQpOwog
CiAgICAgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBpc0VxdWFsKGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJikgY29u
c3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbQppbmRleCA2
OWFkNDE3ZDAyYjIzNWY4OWFkZDk3YzJhYzZhMzQ3OGJmMDVlZmFlLi4zMGNiZDViZGFiM2RjMjM2
NDg5MjBjOTUwYTYyMjYzMjllMjQ0MTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
TWFjLm1tCkBAIC03Miw3ICs3Miw3IEBAIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbj4gU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWM6OmNyZWF0CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMobmF0
aXZlVmFsdWUpKTsKIH0KIAotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWM6OmRhdGEoKSBjb25zdAorUmVmUHRyPEFycmF5QnVmZmVyPiBT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6ZGF0YSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CkBAIC0xMzUsMTAgKzEzNSwxMCBAQCBzdGF0aWMgSlNWYWx1ZSAq
anNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChpZCB2YWx1ZSwgSlNDb250ZXh0ICpjb250ZXh0KQog
CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKICAgICAgICAg
cmV0dXJuIGpzVmFsdWVXaXRoRGF0YUluQ29udGV4dCh2YWx1ZSwgY29udGV4dCk7Ci0gICAgCisK
ICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W0FWTWV0YWRhdGFJdGVtIGNsYXNzXV0pCiAg
ICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KHZhbHVlLCBj
b250ZXh0KTsKLSAgICAKKwogICAgIHJldHVybiBuaWw7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
TW9jay5jcHAKaW5kZXggYzBiNGRmYTJjNmYyMjQ0ZWFhNGRhODg2NGQ1YzRiMzI2MzI1OTJkYy4u
ZmMzNzY3MzI2MDUzNmNiNDJmYWNlZTcwY2U4YjU4ZGU5YTZhM2FlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyTW9jay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXpl
ck1vY2s6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrKFBsYXRmb3JtU3BlZWNoU3ludGgK
ICAgICAsIG1fc3BlYWtpbmdGaW5pc2hlZFRpbWVyKCp0aGlzLCAmUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplck1vY2s6OnNwZWFraW5nRmluaXNoZWQpCiB7CiB9Ci0gICAgCisKIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrOjp+UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2soKQogewog
fQpAQCAtNDYsMTAgKzQ2LDEwIEBAIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6
OnNwZWFraW5nRmluaXNoZWQoKQogICAgIEFTU0VSVChtX3V0dGVyYW5jZS5nZXQoKSk7CiAgICAg
UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBwcm90ZWN0KG1fdXR0ZXJh
bmNlKTsKICAgICBtX3V0dGVyYW5jZSA9IG51bGxwdHI7Ci0gICAgCisKICAgICBjbGllbnQoKS0+
ZGlkRmluaXNoU3BlYWtpbmcocHJvdGVjdCk7CiB9Ci0gICAgCisKIHZvaWQgUGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplck1vY2s6OmluaXRpYWxpemVWb2ljZUxpc3QoKQogewogICAgIG1fdm9pY2VM
aXN0LmFwcGVuZChQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlOjpjcmVhdGUoU3RyaW5nKCJt
b2NrLnZvaWNlLmJydWNlIiksIFN0cmluZygiYnJ1Y2UiKSwgU3RyaW5nKCJlbi1VUyIpLCB0cnVl
LCB0cnVlKSk7CkBAIC01NywyNSArNTcsMjUgQEAgdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
emVyTW9jazo6aW5pdGlhbGl6ZVZvaWNlTGlzdCgpCiAgICAgbV92b2ljZUxpc3QuYXBwZW5kKFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShTdHJpbmcoIm1vY2sudm9pY2UubG9n
YW4iKSwgU3RyaW5nKCJsb2dhbiIpLCBTdHJpbmcoImZyLUNBIiksIHRydWUsIHRydWUpKTsKIH0K
IAotdm9pZCBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWsoUGFzc1JlZlB0cjxQ
bGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gdXR0ZXJhbmNlKQordm9pZCBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTW9jazo6c3BlYWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlPiYmIHV0dGVyYW5jZSkKIHsKICAgICBBU1NFUlQoIW1fdXR0ZXJhbmNlKTsK
LSAgICBtX3V0dGVyYW5jZSA9IHV0dGVyYW5jZTsKKyAgICBtX3V0dGVyYW5jZSA9IFdURk1vdmUo
dXR0ZXJhbmNlKTsKICAgICBjbGllbnQoKS0+ZGlkU3RhcnRTcGVha2luZyhtX3V0dGVyYW5jZSk7
Ci0gICAgCisKICAgICAvLyBGaXJlIGEgZmFrZSB3b3JkIGFuZCB0aGVuIHNlbnRlbmNlIGJvdW5k
YXJ5IGV2ZW50LgogICAgIGNsaWVudCgpLT5ib3VuZGFyeUV2ZW50T2NjdXJyZWQobV91dHRlcmFu
Y2UsIFNwZWVjaFdvcmRCb3VuZGFyeSwgMCk7CiAgICAgY2xpZW50KCktPmJvdW5kYXJ5RXZlbnRP
Y2N1cnJlZChtX3V0dGVyYW5jZSwgU3BlZWNoU2VudGVuY2VCb3VuZGFyeSwgbV91dHRlcmFuY2Ut
PnRleHQoKS5sZW5ndGgoKSk7Ci0gICAgCisKICAgICAvLyBHaXZlIHRoZSBmYWtlIHNwZWVjaCBq
b2Igc29tZSB0aW1lIHNvIHRoYXQgcGF1c2UgYW5kIG90aGVyIGZ1bmN0aW9ucyBoYXZlIHRpbWUg
dG8gYmUgY2FsbGVkLgogICAgIG1fc3BlYWtpbmdGaW5pc2hlZFRpbWVyLnN0YXJ0T25lU2hvdCgu
MSk7CiB9Ci0gICAgCisKIHZvaWQgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2s6OmNhbmNl
bCgpCiB7CiAgICAgaWYgKCFtX3V0dGVyYW5jZSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAg
ICAgbV9zcGVha2luZ0ZpbmlzaGVkVGltZXIuc3RvcCgpOwogICAgIGNsaWVudCgpLT5zcGVha2lu
Z0Vycm9yT2NjdXJyZWQobV91dHRlcmFuY2UpOwogICAgIG1fdXR0ZXJhbmNlID0gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplck1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2suaAppbmRleCA4ZDk3NDg4YjAyZDBkMjEzYjg1NTZlNTMzNGI1
N2EyOGIyOTM3ZTAzLi45OTIxZmJkNGEzMTIyNjUyNjY5YzRkZDMyY2FiZThhNDEzMTllZjY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXJNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyTW9jay5oCkBAIC0zMiwyNSArMzIsMjUgQEAKICNpbmNsdWRlICJU
aW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIGNsYXNzIFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrIDogcHVibGljIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgewog
cHVibGljOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNb2NrKFBsYXRm
b3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgflBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXJNb2NrKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKFBhc3NSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Bl
YWsoUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiYmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcGF1c2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCk7CiAgICAgdmlydHVh
bCB2b2lkIGNhbmNlbCgpOwotICAgIAorCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBpbml0
aWFsaXplVm9pY2VMaXN0KCk7CiAgICAgdm9pZCBzcGVha2luZ0ZpbmlzaGVkKCk7Ci0gICAgCisK
ICAgICBUaW1lciBtX3NwZWFraW5nRmluaXNoZWRUaW1lcjsKICAgICBSZWZQdHI8UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IG1fdXR0ZXJhbmNlOwogfTsKLSAgICAKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVDSF9TWU5USEVTSVMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCmluZGV4IGIzNDVkZGFmMDc0OTVjNzE4MTdlY2YxOWIwZjcwNzk0NDFhY2U0
OGYuLjM3Y2Y4ZGZmZWE4OTMwNWQ4NDA4Y2M4ZmU1YjJmYWUxOTUwMTU4OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgbG9uZyBhZGRUeXBlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKICAgICBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwogICAgIGxvbmcgY29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJp
bmcmIHRvUGFzdGVib2FyZCkgb3ZlcnJpZGU7Ci0gICAgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgbG9uZyBz
ZXRCdWZmZXJGb3JUeXBlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAg
IGxvbmcgc2V0UGF0aG5hbWVzRm9yVHlwZShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogICAgIGxvbmcgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5kZXggY2VlYmYzN2U2NDBhNjg3NjEzNzMyZjVjNDM4
NmM3NWM5Y2UwNGUzNS4uNmFiNWU4NjljNjY2NGFlMTAwNDYxOWVmOTVlZjVkOGNkNGYyNjEwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtMjE2LDcgKzIxNiw3IEBAIGxvbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBjb25zCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0
VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKIH0KIAotbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2xv
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLnNldEJ1ZmZlckZvclR5cGUoYnVmZmVyLCBwYXN0ZWJvYXJkVHlwZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5
Q29jb2EubW0KaW5kZXggMDIyNTQ5NzExMjQ2YTlmMjE5Yzc5YmI2Y2UyMGFkYmJkOTkyOTM0Yy4u
MjQ3OWMwNDc0MjYwZGM5MmMxZDI4NjA4OWExODBiNDY2M2FlM2VjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2Nv
YS5tbQpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0
ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lCiAgICAgfQog
ICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9y
eTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUp
OwotICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5zZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlciwgcGFzdGVib2FyZFR5cGUpOworICAgIG5ld0NoYW5n
ZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JU
eXBlKGJ1ZmZlci5nZXQoKSwgcGFzdGVib2FyZFR5cGUpOwogfQogCiAjaWYgUExBVEZPUk0oSU9T
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGQ5OWZmYzcyNDU2NDE3
Y2Q5MmZiZGY0NGIxNGUxZTc0MTdjYmUxYjguLjJlMmI4MTNhNWI2ZjVhMWFmYTIwNWUwNTFmZGFi
OGU4MTMwZWFjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTQ1
Miw3ICs0NTIsNyBAQCBsb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0VHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29ucwogICAgIHJldHVybiBuZXdDaGFu
Z2VDb3VudDsKIH0KIAotbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldEJ1ZmZlckZvclR5
cGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK2xvbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRCdWZmZXJGb3JUeXBlKFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewog
ICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICBpZiAoYnVmZmVyKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAzOThlYTAzZTY5YmY2ZjRmZTc4MThmMjE2
ZTJjNjA4ZmI1NTg3NGI3Li4wZmY0NzRhNzRjODk5Zjk2OWM4NjU3ZTYwYzA5ZWQyYTdlMjI1MzJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHJp
dmF0ZToKICAgICBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogICAgIGxvbmcg
c2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBjb3B5KGNvbnN0IFN0cmlu
ZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkKSBvdmVycmlkZTsK
LSAgICBsb25nIHNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKKyAgICBsb25nIHNldEJ1ZmZlckZvclR5cGUoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyKiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRQYXRobmFtZXNGb3JUeXBlKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAgICAgbG9uZyBzZXRTdHJpbmdGb3JU
eXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>