<?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>57507</bug_id>
          
          <creation_ts>2011-03-30 14:55:30 -0700</creation_ts>
          <short_desc>Clean up IndexedDB WebKit API</short_desc>
          <delta_ts>2011-04-06 16:34:33 -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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>57684</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Orlow">jorlow</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric</cc>
    
    <cc>hans</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>376703</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-30 14:55:30 -0700</bug_when>
    <thetext>Clean up IndexedDB WebKit API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376704</commentid>
    <comment_count>1</comment_count>
      <attachid>87623</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-30 14:58:00 -0700</bug_when>
    <thetext>Created attachment 87623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376705</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-03-30 14:58:36 -0700</bug_when>
    <thetext>100% mechanical cleanup...no logic changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376717</commentid>
    <comment_count>3</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-03-30 15:11:29 -0700</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376739</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 15:32:55 -0700</bug_when>
    <thetext>Attachment 87623 did not build on chromium:
Build output: http://queues.webkit.org/results/8309019</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376964</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 23:45:05 -0700</bug_when>
    <thetext>Attachment 87623 did not build on chromium:
Build output: http://queues.webkit.org/results/8154154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378173</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-04-01 16:12:24 -0700</bug_when>
    <thetext>Committed r82738: &lt;http://trac.webkit.org/changeset/82738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378221</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-01 17:05:58 -0700</bug_when>
    <thetext>This appears to have broken Broke storage/indexeddb/objectstore-autoincrement.html and InjectIDBKey.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378745</commentid>
    <comment_count>8</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-04-04 05:55:20 -0700</bug_when>
    <thetext>Re-opening since this got reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378747</commentid>
    <comment_count>9</comment_count>
      <attachid>88053</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-04-04 05:59:54 -0700</bug_when>
    <thetext>Created attachment 88053
fixed patch

Uploading patch again, with fix the should make all tests pass this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378749</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-04 06:05:16 -0700</bug_when>
    <thetext>Attachment 88053 did not build on chromium:
Build output: http://queues.webkit.org/results/8247991</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378751</commentid>
    <comment_count>11</comment_count>
      <attachid>88054</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-04-04 06:14:23 -0700</bug_when>
    <thetext>Created attachment 88054
manual upload

webkit-patch upload fail; doing it manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378753</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-04 06:19:40 -0700</bug_when>
    <thetext>Attachment 88053 did not build on chromium:
Build output: http://queues.webkit.org/results/8185934</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379004</commentid>
    <comment_count>13</comment_count>
      <attachid>88054</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-04 13:19:28 -0700</bug_when>
    <thetext>Comment on attachment 88054
manual upload

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

Thanks for picking up this change.  What was the bug with the old patch?

&gt; Source/WebKit/chromium/ChangeLog:14
&gt; +        Second try: added WebCore:: qualifier to
&gt; +        injectIDBKeyIntoSerializedValue in WebIDBKey.cpp.

Usually we don&apos;t put this kind of information in ChangeLogs.  We usually put it in bug comments because it&apos;s information about how the patch was produced, not why the change is being made.

&gt; Source/WebKit/chromium/src/WebIDBTransactionImpl.cpp:2
&gt; - * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

We probably shouldn&apos;t change just the copyright in this file.

&gt; Source/WebKit/chromium/src/WebIDBTransactionImpl.h:2
&gt; - * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

Or this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379403</commentid>
    <comment_count>14</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-04-05 02:32:56 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 88054 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88054&amp;action=review
&gt; 
&gt; Thanks for picking up this change.  What was the bug with the old patch?

Jeremy added a &quot;using namespace WebCore;&quot; directive to WebIDBkey when he moved it into the WebKit namespace, and removed the WebCore:: qualifier from the call to injectIDBKeyIntoSerializedValue. This made it call the wrong thing, so I put the WebCore qualifier back on that call.

&gt; 
&gt; &gt; Source/WebKit/chromium/ChangeLog:14
&gt; &gt; +        Second try: added WebCore:: qualifier to
&gt; &gt; +        injectIDBKeyIntoSerializedValue in WebIDBKey.cpp.
&gt; 
&gt; Usually we don&apos;t put this kind of information in ChangeLogs.  We usually put it in bug comments because it&apos;s information about how the patch was produced, not why the change is being made.
Ok, removed.

&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebIDBTransactionImpl.cpp:2
&gt; &gt; - * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; &gt; + * Copyright (C) 2011 Google Inc. All rights reserved.
&gt; 
&gt; We probably shouldn&apos;t change just the copyright in this file.
Fixed.

&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebIDBTransactionImpl.h:2
&gt; &gt; - * Copyright (C) 2010 Google Inc. All rights reserved.
&gt; &gt; + * Copyright (C) 2011 Google Inc. All rights reserved.
&gt; 
&gt; Or this one.
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379404</commentid>
    <comment_count>15</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-04-05 02:38:31 -0700</bug_when>
    <thetext>Committed r82917: &lt;http://trac.webkit.org/changeset/82917&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379430</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-05 03:50:50 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82917 might have broken GTK Linux 32-bit Debug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380959</commentid>
    <comment_count>17</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-04-06 16:34:33 -0700</bug_when>
    <thetext>Thanks Hans!  Glad we had tests.  :-)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87623</attachid>
            <date>2011-03-30 14:58:00 -0700</date>
            <delta_ts>2011-04-04 05:59:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57507-20110330145759.patch</filename>
            <type>text/plain</type>
            <size>70385</size>
            <attacher name="Jeremy Orlow">jorlow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI0OTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
OGJlY2RiYTg0NWNjZTgwZTRmOTRiNTU5OTEzYjYwZWQ1Y2M5OGY5Ny4uMzk3YWE5ZTU0MjE0MDIx
NjY0MGVmYTYwZWQ4ODM2MjY4ODAxNmM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMDggQEAKKzIwMTEtMDMtMzAgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q2xlYW4gdXAgSW5kZXhlZERCIFdlYktpdCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NTA3CisKKyAgICAgICAgUmVuYW1lIHRoZSBiYWNrZW5k
IHByb3h5IGZpbGVzIHRoYXQgZGlkbid0IGhhdmUgQmFja2VuZCBpbiB0aGVpciBuYW1lLgorICAg
ICAgICBFdmVyeXRoaW5nIGluIFdlYktpdCBzaG91bGQgYmUgaW4gdGhlIFdlYktpdCBuYW1lc3Bh
Y2UuCisgICAgICAgIFB1dCBldmVyeXRoaW5nIGJlaGluZCB0aGUgZmVhdHVyZSBmbGFnIHNvIHdl
J3JlIGNvbnNpc3RpZW50LgorICAgICAgICBQdXQgdGhlIGZlYXR1cmUgZmxhZyAjaWYgYWJvdmUg
aW5jbHVkZXMuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHNyYy9JREJDYWxs
YmFja3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpjcmVh
dGUpOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6SURCQ2FsbGJhY2tzUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25FcnJvcik6CisgICAg
ICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHNy
Yy9JREJDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJDdXJzb3JCYWNrZW5kUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJDdXJzb3JCYWNrZW5kUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OklEQkN1cnNvckJhY2tlbmRQcm94eTo6SURCQ3Vyc29yQmFja2Vu
ZFByb3h5KToKKyAgICAgICAgKiBzcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5Lmg6CisgICAgICAg
ICogc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURC
RGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFi
YXNlQmFja2VuZFByb3h5OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojp+SURCRGF0YWJhc2VCYWNrZW5kUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6bmFtZSk6CisgICAgICAg
IChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojp2ZXJzaW9uKToKKyAgICAgICAgKFdl
YktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om9iamVjdFN0b3JlTmFtZXMpOgorICAgICAg
ICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6ZGVsZXRlT2JqZWN0U3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6c2V0VmVyc2lv
bik6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojp0cmFuc2FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjbG9zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpvcGVuKToKKyAgICAgICAg
KiBzcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OklEQkRh
dGFiYXNlQ2FsbGJhY2tzUHJveHk6OklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkpOgorICAgICAg
ICAqIHNyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgICogc3JjL0lEQkZh
Y3RvcnlCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJGYWN0b3J5QmFja2Vu
ZFByb3h5OjpJREJGYWN0b3J5QmFja2VuZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6SURCRmFj
dG9yeUJhY2tlbmRQcm94eTo6b3Blbik6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuaDoKKyAgICAgICAgKiBzcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJREJJbmRleEJhY2tlbmRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6SURCSW5kZXhCYWNrZW5kUHJveHk6OklEQkluZGV4QmFja2VuZFByb3h5KToKKyAgICAgICAg
KiBzcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBzcmMvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJPYmplY3RTdG9yZUJhY2tl
bmRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5k
UHJveHk6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6On5JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpuYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmtleVBhdGgpOgorICAgICAg
ICAoV2ViS2l0OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6aW5kZXhOYW1lcyk6CisgICAg
ICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpnZXQpOgorICAgICAgICAo
V2ViS2l0OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6cHV0KToKKyAgICAgICAgKFdlYktp
dDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNsZWFyKToKKyAgICAgICAgKFdl
YktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZUluZGV4KToKKyAgICAgICAg
KFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmluZGV4KToKKyAgICAgICAgKFdl
YktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmRlbGV0ZUluZGV4KToKKyAgICAgICAg
KFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6Om9wZW5DdXJzb3IpOgorICAgICAg
ICAqIHNyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oOiBBZGRlZC4KKyAgICAgICAgKiBz
cmMvSURCT2JqZWN0U3RvcmVQcm94eS5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9JREJUcmFu
c2FjdGlvbkJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQlRyYW5zYWN0aW9u
QmFja2VuZFByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6b2JqZWN0U3RvcmUpOgorICAgICAgICAqIHNy
Yy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpJREJUcmFu
c2FjdGlvbkJhY2tlbmRQcm94eTo6Z2V0V2ViSURCVHJhbnNhY3Rpb24pOgorICAgICAgICAqIHNy
Yy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURC
VHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SURC
VHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eTo6SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eSk6
CisgICAgICAgICogc3JjL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkuaDoKKyAgICAgICAg
KiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNh
bGxiYWNrc0ltcGw6Om9uRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxsYmFja3NJ
bXBsOjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmg6Cisg
ICAgICAgICogc3JjL1dlYklEQkN1cnNvckltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJD
dXJzb3JJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJz
aW9uQ2hhbmdlKToKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmg6
CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlRXJyb3IuY3BwOgorICAgICAgICAqIHNyYy9X
ZWJJREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUltcGwu
aDoKKyAgICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJGYWN0b3J5SW1wbDo6V2ViSURCRmFjdG9yeUltcGwpOgorICAgICAgICAqIHNyYy9X
ZWJJREJGYWN0b3J5SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJJbmRleEltcGwuY3BwOgor
ICAgICAgICAqIHNyYy9XZWJJREJJbmRleEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCS2V5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5OjpjcmVhdGVGcm9tVmFsdWVBbmRLZXlQ
YXRoKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCS2V5OjppbmplY3RJREJLZXlJbnRvU2VyaWFs
aXplZFZhbHVlKToKKyAgICAgICAgKiBzcmMvV2ViSURCS2V5UGF0aC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQktleVBhdGg6Om9wZXJhdG9yIGNvbnN0IFdURjo6VmVjdG9yPElEQktleVBh
dGhFbGVtZW50LCAwPiYpOgorICAgICAgICAqIHNyYy9XZWJJREJLZXlSYW5nZS5jcHA6CisgICAg
ICAgICogc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHA6CisgICAgICAgICogc3JjL1dlYklE
Qk9iamVjdFN0b3JlSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxi
YWNrc0ltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0lt
cGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNwcDoKKyAgICAgICAg
KiBzcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmg6CisKIDIwMTEtMDMtMjkgIEpvaG4gQWJkLUVs
LU1hbGVrICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENo
YW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGQ0NzI0OGU0ZjUyOWQ0MDgzNDNl
YWUxNDA4ZGQ3YjZkNmNjMTI3NTQuLjdiOWNkMWNjNTU5YmViMzgyODRjNjkyYmMyNTMxMTI0ZTc5
OWFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM1OSwxNCArMzU5LDE0IEBA
CiAgICAgICAgICAgICAgICAgJ3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgnLAotICAgICAgICAgICAgICAg
ICdzcmMvSURCRGF0YWJhc2VQcm94eS5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMvSURCRGF0
YWJhc2VQcm94eS5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0lEQkRhdGFiYXNlQmFja2VuZFBy
b3h5LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5o
JywKICAgICAgICAgICAgICAgICAnc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9JREJPYmpl
Y3RTdG9yZVByb3h5LmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9JREJPYmplY3RTdG9yZVBy
b3h5LmgnLAorICAgICAgICAgICAgICAgICdzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHku
Y3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Lmgn
LAogICAgICAgICAgICAgICAgICdzcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5jcHAnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCmluZGV4
IDcyNzA5MmExNTg1N2MwOWRiYWZkZWQwOTA1NTY1ZTFmODEwOTc3YWEuLmM1MzZjMzhkYWMxNTlh
NmQ1OGUwYTYzZGQ1MjVkMzY2NWNkMjNiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksOCArMjksMTAgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogCisjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ3Vyc29ySW1w
bC5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgpAQCAtMzksMTYgKzQxLDE2IEBA
CiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgiCiAjaW5jbHVkZSAiV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmgiCiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUGFzc1JlZlB0cjxJREJDYWxsYmFja3NQcm94eT4gSURCQ2FsbGJhY2tzUHJveHk6
OmNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCitQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrc1Byb3h5PiBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKFBh
c3NPd25QdHI8V2ViSURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJREJDYWxsYmFja3NQcm94eShjYWxsYmFja3MpKTsKIH0KIAotSURCQ2FsbGJhY2tz
UHJveHk6OklEQkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKK0lEQkNhbGxiYWNrc1Byb3h5OjpJREJDYWxsYmFja3NQcm94eShQYXNz
T3duUHRyPFdlYklEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgIDogbV9jYWxsYmFja3MoY2Fs
bGJhY2tzKQogewogfQpAQCAtNTksMzIgKzYxLDMyIEBAIElEQkNhbGxiYWNrc1Byb3h5Ojp+SURC
Q2FsbGJhY2tzUHJveHkoKQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkVycm9yKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gaWRiRGF0YWJhc2VFcnJvcikKIHsKLSAgICBtX2NhbGxi
YWNrcy0+b25FcnJvcihXZWJLaXQ6OldlYklEQkRhdGFiYXNlRXJyb3IoaWRiRGF0YWJhc2VFcnJv
cikpOworICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKFdlYklEQkRhdGFiYXNlRXJyb3IoaWRiRGF0
YWJhc2VFcnJvcikpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBpZGJDdXJzb3JCYWNrZW5kKQogewot
ICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbChp
ZGJDdXJzb3JCYWNrZW5kKSk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhuZXcgV2ViSURC
Q3Vyc29ySW1wbChpZGJDdXJzb3JCYWNrZW5kKSk7CiB9CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJv
eHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZCkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJLaXQ6OldlYklEQkRh
dGFiYXNlSW1wbChiYWNrZW5kKSk7CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhuZXcgV2Vi
SURCRGF0YWJhc2VJbXBsKGJhY2tlbmQpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6
b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCiB7Ci0gICAgbV9jYWxsYmFja3Mt
Pm9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQktleShpZGJLZXkpKTsKKyAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKFdlYklEQktleShpZGJLZXkpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94
eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBi
YWNrZW5kKQogewotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYktpdDo6V2ViSURC
VHJhbnNhY3Rpb25JbXBsKGJhY2tlbmQpKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5l
dyBXZWJJREJUcmFuc2FjdGlvbkltcGwoYmFja2VuZCkpOwogfQogCiB2b2lkIElEQkNhbGxiYWNr
c1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYktpdDo6
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkpOworICAgIG1f
Y2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSkpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoKQpA
QCAtOTIsNiArOTQsNiBAQCB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoKQogICAg
IG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmlu
ZGV4IDY4Mjk4NDVkMGY4ZTg2NzA4ZGJkOTcwNzZlMWM5NTQ3YmM1YWJiZWEuLmU5ZjQ1ZmY1Y2Yx
MjQ0ODEyMDVmN2ZmYTAxMmRiNDRjOTZiZTQ0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw0MCArMjksMzcgQEAKICNpZm5kZWYgSURCQ2Fs
bGJhY2tzUHJveHlfaAogI2RlZmluZSBJREJDYWxsYmFja3NQcm94eV9oCiAKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQogbmFtZXNw
YWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJJREJDYWxsYmFja3M7Ci19CiAKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFdlYklEQkNhbGxiYWNrczsKIAotY2xhc3MgSURCQ2FsbGJhY2tzUHJveHkg
OiBwdWJsaWMgSURCQ2FsbGJhY2tzIHsKK2NsYXNzIElEQkNhbGxiYWNrc1Byb3h5IDogcHVibGlj
IFdlYkNvcmU6OklEQkNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzUHJveHk+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCQ2FsbGJh
Y2tzPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzUHJveHk+IGNyZWF0ZShQ
YXNzT3duUHRyPFdlYklEQkNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgfklEQkNhbGxiYWNrc1By
b3h5KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZT4pOwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8SURCS2V5Pik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwotICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgb25FcnJvcihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KTsK
KyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZT4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KTsKKyAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5Pik7CisgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7
CiAKIHByaXZhdGU6Ci0gICAgSURCQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJLaXQ6Oldl
YklEQkNhbGxiYWNrcz4pOworICAgIElEQkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViSURC
Q2FsbGJhY2tzPik7CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJJREJDYWxsYmFja3M+IG1fY2Fs
bGJhY2tzOworICAgIE93blB0cjxXZWJJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tl
bmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5k
UHJveHkuY3BwCmluZGV4IGIzYjllYTdmZDAwMDkzM2JlZGRiYmFjNTIyMzM0Y2VjOGEzM2M0YzQu
LjdkYWI2YTI4ZmEyMGZhOGRjNTFiNmY3N2FkMjUwZmZiN2MwNWY3YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwxNCAr
MzYsMTYgQEAKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKICNpbmNsdWRlICJXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLVBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gSURCQ3Vyc29y
QmFja2VuZFByb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkN1cnNvcj4gaWRi
Q3Vyc29yKQorbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZT4gSURCQ3Vyc29yQmFja2VuZFByb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJJ
REJDdXJzb3I+IGlkYkN1cnNvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1cnNv
ckJhY2tlbmRQcm94eShpZGJDdXJzb3IpKTsKIH0KIAotSURCQ3Vyc29yQmFja2VuZFByb3h5OjpJ
REJDdXJzb3JCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkN1cnNvcj4gaWRi
Q3Vyc29yKQorSURCQ3Vyc29yQmFja2VuZFByb3h5OjpJREJDdXJzb3JCYWNrZW5kUHJveHkoUGFz
c093blB0cjxXZWJJREJDdXJzb3I+IGlkYkN1cnNvcikKICAgICA6IG1faWRiQ3Vyc29yKGlkYkN1
cnNvcikKIHsKIH0KQEAgLTg3LDYgKzg5LDYgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kUHJveHk6
OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEUKICAg
ICBtX2lkYkN1cnNvci0+ZGVsZXRlRnVuY3Rpb24obmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2Fs
bGJhY2tzKSwgZWMpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAppbmRleCAw
YzJlMWM3MzIxNmEwZjkzMTNkYTJmMDcwMjQzMWM3NGUyMmJkYTg1Li5kNzI1MzYwNTAyOWNjOTJi
ZjhhMGE4NjA1ZDA0NDNlODU1ODFiZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSwyOCArMzUsMjggQEAKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIElEQkN1cnNvckJhY2tlbmRQcm94
eSA6IHB1YmxpYyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlIHsKK2NsYXNzIElEQkN1cnNvckJh
Y2tlbmRQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
PiBjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkN1cnNvcj4pOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZShQYXNz
T3duUHRyPFdlYklEQkN1cnNvcj4pOwogICAgIHZpcnR1YWwgfklEQkN1cnNvckJhY2tlbmRQcm94
eSgpOwogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24oKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRpbnVl
RnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQktleT4ga2V5KCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwog
CiBwcml2YXRlOgotICAgIElEQkN1cnNvckJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYktpdDo6
V2ViSURCQ3Vyc29yPik7CisgICAgSURCQ3Vyc29yQmFja2VuZFByb3h5KFBhc3NPd25QdHI8V2Vi
SURCQ3Vyc29yPik7CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJJREJDdXJzb3I+IG1faWRiQ3Vy
c29yOworICAgIE93blB0cjxXZWJJREJDdXJzb3I+IG1faWRiQ3Vyc29yOwogfTsKIAotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tz
UHJveHkuY3BwCmluZGV4IDI4YzEzNGZiNmEzMmE3YWY3YTQ5YWM3Nzk3NWZmZGEyMzIzZDZhOTAu
LjgxNmZhZjZjNGRlNzBhZTY5MjY5MzBkMGRlNTBlMGVlMmQxMTc4NWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHku
Y3BwCkBAIC0zMCwxNCArMzAsMTYgQEAKIAogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1QYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IElEQkRhdGFiYXNlQ2FsbGJh
Y2tzUHJveHk6OmNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFj
a3M+IGNhbGxiYWNrcykKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzUHJveHk+IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShQYXNz
T3duUHRyPFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KGNhbGxiYWNrcykpOwogfQog
Ci1JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KFBh
c3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQorSURC
RGF0YWJhc2VDYWxsYmFja3NQcm94eTo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eShQYXNzT3du
UHRyPFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgOiBtX2NhbGxiYWNr
cyhjYWxsYmFja3MpCiB7CiB9CkBAIC01MSw2ICs1Myw2IEBAIHZvaWQgSURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eTo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgcmVxdWVzdGVkVmVyc2lv
bikKICAgICBtX2NhbGxiYWNrcy0+b25WZXJzaW9uQ2hhbmdlKHJlcXVlc3RlZFZlcnNpb24pOwog
fQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oCmluZGV4IDlmZDdhMGIz
ZTZkMjRiMzU5NTlkZDZjMzUzYmUyNWYwY2ZjN2E3ZTcuLmFmZmRjZTc3ZDVkOTU4ZGMwMGUwZjZm
ODBhY2ZmYjgwMTI5NThiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgKQEAgLTI2LDMwICsyNiwyOSBAQAogI2lm
bmRlZiBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5X2gKICNkZWZpbmUgSURCRGF0YWJhc2VDYWxs
YmFja3NQcm94eV9oCiAKLSNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgotCiAjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNr
cy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgeyBj
bGFzcyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrczsgfQorbmFtZXNwYWNlIFdlYktpdCB7CiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOwogCi1jbGFz
cyBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5IDogcHVibGljIElEQkRhdGFiYXNlQ2FsbGJhY2tz
IHsKK2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6SURC
RGF0YWJhc2VDYWxsYmFja3MgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzUHJveHk+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0
YWJhc2VDYWxsYmFja3M+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrc1Byb3h5PiBjcmVhdGUoUGFzc093blB0cjxXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwog
ICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRWZXJzaW9uKTsKIAog
cHJpdmF0ZToKLSAgICBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViS2l0
OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4pOworICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHkoUGFzc093blB0cjxXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogCi0gICAgT3duUHRyPFdl
YktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIE93blB0cjxX
ZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiB9OwogCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKaW5k
ZXggOWU1Y2NjMDI5N2I0ZTBiNzE2N2M0ZDY3MjY5ZjhlYTY1OTRkNDk5Ni4uMTgyNGViODZmZTky
NjIyNGU1NjA4MzZhMWEwNzMxN2U4MTdiOTI5MSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksOSArMjksMTEgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZFByb3h5LmgiCiAK
KyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3Qu
aCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQkRh
dGFiYXNlRXJyb3IuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1
ZGUgIldlYklEQkRhdGFiYXNlLmgiCkBAIC00MSw5ICs0Myw5IEBACiAjaW5jbHVkZSAiV2ViS2l0
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgV2ViS2l0IHsKIAogUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZT4gSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6Y3JlYXRlKCkKIHsKQEAgLTUxLDcgKzUzLDcg
QEAgUGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gSURCRmFjdG9yeUJhY2tl
bmRQcm94eTo6Y3JlYXRlKCkKIH0KIAogSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6SURCRmFjdG9y
eUJhY2tlbmRQcm94eSgpCi0gICAgOiBtX3dlYklEQkZhY3RvcnkoV2ViS2l0Ojp3ZWJLaXRDbGll
bnQoKS0+aWRiRmFjdG9yeSgpKQorICAgIDogbV93ZWJJREJGYWN0b3J5KHdlYktpdENsaWVudCgp
LT5pZGJGYWN0b3J5KCkpCiB7CiB9CiAKQEAgLTYxLDEwICs2MywxMCBAQCBJREJGYWN0b3J5QmFj
a2VuZFByb3h5Ojp+SURCRmFjdG9yeUJhY2tlbmRQcm94eSgpCiAKIHZvaWQgSURCRmFjdG9yeUJh
Y2tlbmRQcm94eTo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiwgRnJhbWUq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIsIGludDY0X3QgbWF4aW11bVNpemUsIEJhY2tp
bmdTdG9yZVR5cGUgYmFja2luZ1N0b3JlVHlwZSkKIHsKLSAgICBXZWJLaXQ6OldlYkZyYW1lKiB3
ZWJGcmFtZSA9IFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpOwotICAgIG1f
d2ViSURCRmFjdG9yeS0+b3BlbihuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFj
a3MpLCBvcmlnaW4sIHdlYkZyYW1lLCBkYXRhRGlyLCBtYXhpbXVtU2l6ZSwgc3RhdGljX2Nhc3Q8
V2ViS2l0OjpXZWJJREJGYWN0b3J5OjpCYWNraW5nU3RvcmVUeXBlPihiYWNraW5nU3RvcmVUeXBl
KSk7CisgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJh
bWUpOworICAgIG1fd2ViSURCRmFjdG9yeS0+b3BlbihuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpLCBvcmlnaW4sIHdlYkZyYW1lLCBkYXRhRGlyLCBtYXhpbXVtU2l6ZSwg
c3RhdGljX2Nhc3Q8V2ViSURCRmFjdG9yeTo6QmFja2luZ1N0b3JlVHlwZT4oYmFja2luZ1N0b3Jl
VHlwZSkpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5oCmluZGV4IDU5MzA1
MWU1YmMzYzc4ZWJiZmYzMDY3NDI0ZDFiODIyNzVmNWE4OWEuLjg5ZWQzNTUyZGRhZmRhM2JmZDMy
ZTE1ZTNmYjc0ZDc1OWMxZDY1MzIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMzIgKzI5LDMyIEBACiAjaWZuZGVmIElEQkZh
Y3RvcnlCYWNrZW5kUHJveHlfaAogI2RlZmluZSBJREJGYWN0b3J5QmFja2VuZFByb3h5X2gKIAot
I2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCi0KICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKIAotbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYklEQkZhY3Rvcnk7
IH0KKyNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7IGNsYXNzIERPTVN0cmluZ0xpc3Q7IH0KIAotbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIERPTVN0cmluZ0xpc3Q7CitjbGFzcyBXZWJJREJG
YWN0b3J5OwogCi1jbGFzcyBJREJGYWN0b3J5QmFja2VuZFByb3h5IDogcHVibGljIElEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlIHsKK2NsYXNzIElEQkZhY3RvcnlCYWNrZW5kUHJveHkgOiBwdWJs
aWMgV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4g
Y3JlYXRlKCk7CiAgICAgdmlydHVhbCB+SURCRmFjdG9yeUJhY2tlbmRQcm94eSgpOwogCi0gICAg
UGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBkYXRhYmFzZXModm9pZCkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0
YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSk7CisgICAgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0PiBkYXRhYmFzZXModm9pZCkgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJD
b3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwg
QmFja2luZ1N0b3JlVHlwZSk7CiAKIHByaXZhdGU6CiAgICAgSURCRmFjdG9yeUJhY2tlbmRQcm94
eSgpOwogCiAgICAgLy8gV2UgZG9uJ3Qgb3duIHRoaXMgcG9pbnRlciAodW5saWtlIGFsbCB0aGUg
b3RoZXIgcHJveHkgY2xhc3NlcyB3aGljaCBkbykuCi0gICAgV2ViS2l0OjpXZWJJREJGYWN0b3J5
KiBtX3dlYklEQkZhY3Rvcnk7CisgICAgV2ViSURCRmFjdG9yeSogbV93ZWJJREJGYWN0b3J5Owog
fTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJh
Y2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tl
bmRQcm94eS5jcHAKaW5kZXggNDEwNzUwZTA4NjdkMzZlMDQxNWFlNjcxNGNiZDA4YzQ5YjhkYzFi
MS4uNTU2YzliNmM0YjlhZTJmNGZiMTVjNjE3YTU3ZGFmZGZlMjVkYzVhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxNCAr
MzcsMTYgQEAKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKICNpbmNsdWRlICJXZWJJREJLZXlSYW5n
ZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
UGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQkluZGV4QmFja2VuZFByb3h5
OjpjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkluZGV4PiBpbmRleCkKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCSW5k
ZXhCYWNrZW5kUHJveHk6OmNyZWF0ZShQYXNzT3duUHRyPFdlYklEQkluZGV4PiBpbmRleCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkluZGV4QmFja2VuZFByb3h5KGluZGV4KSk7CiB9
CiAKLUlEQkluZGV4QmFja2VuZFByb3h5OjpJREJJbmRleEJhY2tlbmRQcm94eShQYXNzT3duUHRy
PFdlYktpdDo6V2ViSURCSW5kZXg+IGluZGV4KQorSURCSW5kZXhCYWNrZW5kUHJveHk6OklEQklu
ZGV4QmFja2VuZFByb3h5KFBhc3NPd25QdHI8V2ViSURCSW5kZXg+IGluZGV4KQogICAgIDogbV93
ZWJJREJJbmRleChpbmRleCkKIHsKIH0KQEAgLTEwNSw2ICsxMDcsNiBAQCB2b2lkIElEQkluZGV4
QmFja2VuZFByb3h5OjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFjawogICAgIG1fd2ViSURCSW5kZXgtPmdldEtleShrZXksIG5ldyBXZWJJREJDYWxs
YmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2Fj
dGlvbigpLCBlYyk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaAppbmRleCBlOWRl
MDVhZTI0ZmQwOTgyNWU2MGU0OTQ4ZTczYjI0MWI5ZGE1Y2EzLi5iNjM2NDBmYWM0ODE5N2NmYmIz
ZDNlZGJkMmM2NzE4MjRkMmE3YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTkgKzI2LDE5IEBACiAjaWZuZGVmIElEQkluZGV4
QmFja2VuZFByb3h5X2gKICNkZWZpbmUgSURCSW5kZXhCYWNrZW5kUHJveHlfaAogCisjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCisKICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZh
Y2UuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsg
Y2xhc3MgV2ViSURCSW5kZXg7IH0KK25hbWVzcGFjZSBXZWJLaXQgewogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBXZWJJREJJbmRleDsKIAotY2xhc3MgSURCSW5kZXhCYWNrZW5kUHJveHkg
OiBwdWJsaWMgSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlIHsKK2NsYXNzIElEQkluZGV4QmFja2Vu
ZFByb3h5IDogcHVibGljIFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVh
dGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkluZGV4Pik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoUGFzc093blB0cjxXZWJJREJJbmRl
eD4pOwogICAgIHZpcnR1YWwgfklEQkluZGV4QmFja2VuZFByb3h5KCk7CiAKICAgICB2aXJ0dWFs
IFN0cmluZyBuYW1lKCk7CkBAIC00NiwxOCArNDYsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U3RyaW5nIGtleVBhdGgoKTsKICAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hv
cnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbktl
eUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9u
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGdldEtleShQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vy
c29yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAg
IHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFu
Z2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2Fs
bGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0S2V5KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5Piwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6
Ci0gICAgSURCSW5kZXhCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkluZGV4
Pik7CisgICAgSURCSW5kZXhCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJJREJJbmRleD4pOwog
Ci0gICAgT3duUHRyPFdlYktpdDo6V2ViSURCSW5kZXg+IG1fd2ViSURCSW5kZXg7CisgICAgT3du
UHRyPFdlYklEQkluZGV4PiBtX3dlYklEQkluZGV4OwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jYjBlZTMyODhiOTAxMWRlM2Q5NDJjNzA4YmE5NDIyZGZkZTFiNDI3Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNr
ZW5kUHJveHkuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eV9oCisjZGVmaW5lIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5X2gKKwor
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYklEQk9iamVjdFN0b3JlOworCitjbGFzcyBJREJPYmplY3RT
dG9yZUJhY2tlbmRQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bnRlcmZhY2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViSURCT2JqZWN0
U3RvcmU+KTsKKyAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eSgpOworCisg
ICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGtleVBh
dGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RE9NU3RyaW5nTGlz
dD4gaW5kZXhOYW1lcygpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGdldChQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBwdXQoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFB1dE1vZGUsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBj
bGVhcihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKworICAg
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRl
eChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUs
IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFu
Z2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2Fs
bGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgorICAgIElEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5KFBhc3NPd25QdHI8V2ViSURCT2JqZWN0U3RvcmU+KTsKKworICAgIE93blB0cjxXZWJJ
REJPYmplY3RTdG9yZT4gbV93ZWJJREJPYmplY3RTdG9yZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKKworI2VuZGlmIC8vIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3Jl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHku
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTZlMzc0ODMwOTI3YzIzOTRhNDk1NDhh
ZDViNmRjMGJmOWU3YzM0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJREJPYmplY3RT
dG9yZVByb3h5X2gKLSNkZWZpbmUgSURCT2JqZWN0U3RvcmVQcm94eV9oCi0KLSNpbmNsdWRlICJJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLW5hbWVzcGFjZSBXZWJLaXQgeyBj
bGFzcyBXZWJJREJPYmplY3RTdG9yZTsgfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IElEQk9iamVjdFN0b3JlUHJveHkgOiBwdWJsaWMgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2U+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU+
KTsKLSAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZVByb3h5KCk7Ci0KLSAgICB2aXJ0dWFsIFN0
cmluZyBuYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwot
Ci0gICAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NS
ZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotCi0g
ICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2ln
bmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0KLXByaXZhdGU6Ci0gICAg
SURCT2JqZWN0U3RvcmVQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU+
KTsKLQotICAgIE93blB0cjxXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlPiBtX3dlYklEQk9iamVj
dFN0b3JlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLQotI2VuZGlm
IC8vIElEQk9iamVjdFN0b3JlUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwCmluZGV4IDk1YzkwZDU5
ODY4ZDc3MWU0MWU0MjJkYjJjMzE5Yzg2NWMxMjc0ZmMuLjZkOTFmNDg3ZTI5NjgxYTgyOTU4ZDVh
YTlkODVhNzZiNjM2MzlmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjEgKzI4LDIzIEBACiAKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlUHJv
eHkuaCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJv
ci5oIgogI2luY2x1ZGUgIldlYklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViSURCVHJh
bnNhY3Rpb24uaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwuaCIK
IAotbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkJhY2tl
bmRQcm94eTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4gdHJh
bnNhY3Rpb24pCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+IElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVhdGUoUGFz
c093blB0cjxXZWJJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24pCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSh0cmFuc2FjdGlvbikpOwogfQog
Ci1JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHko
UGFzc093blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbikKK0lEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eShQYXNzT3du
UHRyPFdlYklEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbikKICAgICA6IG1fd2ViSURCVHJhbnNh
Y3Rpb24odHJhbnNhY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fd2ViSURCVHJhbnNhY3Rpb24pOwpA
QCAtNTQsMTAgKzU2LDEwIEBAIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Ojp+SURCVHJhbnNh
Y3Rpb25CYWNrZW5kUHJveHkoKQogCiBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6Om9iamVjdFN0b3JlKGNvbnN0IFN0
cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgV2ViS2l0OjpXZWJJREJPYmpl
Y3RTdG9yZSogb2JqZWN0U3RvcmUgPSBtX3dlYklEQlRyYW5zYWN0aW9uLT5vYmplY3RTdG9yZShu
YW1lLCBlYyk7CisgICAgV2ViSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlID0gbV93ZWJJREJU
cmFuc2FjdGlvbi0+b2JqZWN0U3RvcmUobmFtZSwgZWMpOwogICAgIGlmICghb2JqZWN0U3RvcmUp
CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBJREJPYmplY3RTdG9yZVByb3h5OjpjcmVh
dGUob2JqZWN0U3RvcmUpOworICAgIHJldHVybiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6
Y3JlYXRlKG9iamVjdFN0b3JlKTsKIH0KIAogdW5zaWduZWQgc2hvcnQgSURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHk6Om1vZGUoKSBjb25zdApAQCAtODgsNiArOTAsNiBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uQmFja2VuZFByb3h5OjpzZXRDYWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3Mq
IGNhbGxiYWNrcwogICAgIG1fd2ViSURCVHJhbnNhY3Rpb24tPnNldENhbGxiYWNrcyhuZXcgV2Vi
SURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgKaW5kZXggOTZkNzI5MzI4YzgxZmVlYTdiNjY4
MGMyZGM0Nzk0YmM3OTY2Zjc5OC4uMTAzZjU1MjNjNTQ2NjYzYmU4MmRhNzEwZWRiMDA2OWY2OTM2
NWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rp
b25CYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFu
c2FjdGlvbkJhY2tlbmRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDM4ICsyNiwzNyBAQAogI2lmbmRlZiBJREJUcmFuc2FjdGlv
bkJhY2tlbmRQcm94eV9oCiAjZGVmaW5lIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5X2gKIAot
I2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgotCiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOyB9Citu
YW1lc3BhY2UgV2ViS2l0IHsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV2ViSURCVHJh
bnNhY3Rpb247CiAKLWNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5IDogcHVibGljIElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSB7CitjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tl
bmRQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Ug
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4pOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3Jl
YXRlKFBhc3NPd25QdHI8V2ViSURCVHJhbnNhY3Rpb24+KTsKICAgICB2aXJ0dWFsIH5JREJUcmFu
c2FjdGlvbkJhY2tlbmRQcm94eSgpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBtb2Rl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCk7Ci0gICAgdmlydHVhbCBib29sIHNj
aGVkdWxlVGFzayhQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBQYXNz
T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKKyAgICB2aXJ0dWFsIGJvb2wg
c2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzaz4sIFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4p
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Q2FsbGJhY2tzKElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKik7CisgICAgdmlydHVh
bCB2b2lkIHNldENhbGxiYWNrcyhXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyopOwog
Ci0gICAgV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbiogZ2V0V2ViSURCVHJhbnNhY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3dlYklEQlRyYW5zYWN0aW9uLmdldCgpOyB9CisgICAgV2ViSURCVHJh
bnNhY3Rpb24qIGdldFdlYklEQlRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV93ZWJJREJU
cmFuc2FjdGlvbi5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZFByb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4pOworICAgIElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5KFBhc3NPd25QdHI8V2ViSURCVHJhbnNhY3Rpb24+KTsKIAot
ICAgIE93blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uPiBtX3dlYklEQlRyYW5zYWN0aW9u
OworICAgIE93blB0cjxXZWJJREJUcmFuc2FjdGlvbj4gbV93ZWJJREJUcmFuc2FjdGlvbjsKIH07
CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rp
b25DYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFu
c2FjdGlvbkNhbGxiYWNrc1Byb3h5LmNwcAppbmRleCBlYmRhMWRkNDM0MWJiMDhlZGQzMWE2Zjc1
ZmM4M2U1ODg1MjFkZWViLi44M2Q3ZTNhMWQ2NTViMDQ0YjVlMjI5ZGQ4YTE2MGI5MGI4MTExMTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkNh
bGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFu
c2FjdGlvbkNhbGxiYWNrc1Byb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxOCArMjksMjAgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmgiCiAKKyNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uQ2FsbGJh
Y2tzLmgiCiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5PiBJREJUcmFuc2FjdGlvbkNhbGxi
YWNrc1Byb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJv
eHk+IElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShQYXNzT3duUHRyPFdlYklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5KGNhbGxiYWNrcykpOwogfQogCi1JREJU
cmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5OjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5KFBh
c3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gY2FsbGJhY2tzKQor
SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eTo6SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94
eShQYXNzT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAg
OiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCiB7CiB9CkBAIC01OSw2ICs2MSw2IEBAIHZvaWQgSURC
VHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eTo6b25Db21wbGV0ZSgpCiAgICAgbV9jYWxsYmFja3Mt
Pm9uQ29tcGxldGUoKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
UHJveHkuaAppbmRleCA3OWMzMmY2OTZjOGNkMDMwMTk5NzE5NWQ1MzBhNzQ2M2U1NGUxMGY3Li4w
NDRlZWNmNzFmMTQxYzI5Y2Q3YjI3N2RlNDVjZDViNDllNGFiNzU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94
eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI5LDMzICsyOSwzMiBAQAogI2lmbmRlZiBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5X2gK
ICNkZWZpbmUgSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eV9oCiAKLSNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkNhbGxiYWNrcy5oIgotCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAK
KyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktp
dCB7IGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzOyB9CituYW1lc3BhY2UgV2ViS2l0
IHsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3M7CiAKLWNsYXNzIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkgOiBwdWJsaWMgSURCVHJh
bnNhY3Rpb25DYWxsYmFja3MgeworY2xhc3MgSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eSA6
IHB1YmxpYyBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eT4gY3JlYXRlKFBh
c3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4pOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk+IGNyZWF0ZShQYXNzT3du
UHRyPFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB+SURCVHJhbnNh
Y3Rpb25DYWxsYmFja3NQcm94eSgpOwogCiAgICAgdmlydHVhbCB2b2lkIG9uQWJvcnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0ZSgpOwogCiBwcml2YXRlOgotICAgIElEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzPik7CisgICAgSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdl
YklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPik7CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJJREJU
cmFuc2FjdGlvbkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgT3duUHRyPFdlYklEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IGNlMzA3YTQ1
NGM1YThhOTNjNDIyZDRmMTA5MDJiOTRkZTU4NTQ5MjkuLjI0ZDNmNmNjOWU2MDA1ZmQ5MzUzMmM5
ZjNjOTc2YzE0YzZhMzQ1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEwICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwuaCIKIAorI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCQ3Vy
c29yQmFja2VuZFByb3h5LmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCIK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VQcm94
eS5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2Vu
ZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgiCkBAIC0zOSw5ICs0MSw5IEBA
CiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXZWJLaXQg
ewogCiBXZWJJREJDYWxsYmFja3NJbXBsOjpXZWJJREJDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCkBA
IC01MiwzMiArNTQsMzIgQEAgV2ViSURCQ2FsbGJhY2tzSW1wbDo6fldlYklEQkNhbGxiYWNrc0lt
cGwoKQogewogfQogCi12b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uRXJyb3IoY29uc3QgV2Vi
S2l0OjpXZWJJREJEYXRhYmFzZUVycm9yJiBlcnJvcikKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1w
bDo6b25FcnJvcihjb25zdCBXZWJJREJEYXRhYmFzZUVycm9yJiBlcnJvcikKIHsKICAgICBtX2Nh
bGxiYWNrcy0+b25FcnJvcihlcnJvcik7CiB9CiAKLXZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6
b25TdWNjZXNzKFdlYktpdDo6V2ViSURCQ3Vyc29yKiBjdXJzb3IpCit2b2lkIFdlYklEQkNhbGxi
YWNrc0ltcGw6Om9uU3VjY2VzcyhXZWJJREJDdXJzb3IqIGN1cnNvcikKIHsKICAgICBtX2NhbGxi
YWNrcy0+b25TdWNjZXNzKElEQkN1cnNvckJhY2tlbmRQcm94eTo6Y3JlYXRlKGN1cnNvcikpOwog
fQogCi12b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQkRh
dGFiYXNlKiB3ZWJLaXRJbnN0YW5jZSkKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNj
ZXNzKFdlYklEQkRhdGFiYXNlKiB3ZWJLaXRJbnN0YW5jZSkKIHsKLSAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKElEQkRhdGFiYXNlUHJveHk6OmNyZWF0ZSh3ZWJLaXRJbnN0YW5jZSkpOworICAg
IG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZSh3
ZWJLaXRJbnN0YW5jZSkpOwogfQogCi12b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vz
cyhjb25zdCBXZWJLaXQ6OldlYklEQktleSYga2V5KQordm9pZCBXZWJJREJDYWxsYmFja3NJbXBs
OjpvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5JiBrZXkpCiB7CiAgICAgbV9jYWxsYmFja3MtPm9u
U3VjY2VzcyhrZXkpOwogfQogCi12b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhX
ZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uKiB3ZWJLaXRJbnN0YW5jZSkKK3ZvaWQgV2ViSURCQ2Fs
bGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQlRyYW5zYWN0aW9uKiB3ZWJLaXRJbnN0YW5jZSkK
IHsKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5
OjpjcmVhdGUod2ViS2l0SW5zdGFuY2UpKTsKIH0KIAotdm9pZCBXZWJJREJDYWxsYmFja3NJbXBs
OjpvblN1Y2Nlc3MoY29uc3QgV2ViS2l0OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSkKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNv
bnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQogewog
ICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKIH0KQEAg
LTg3LDYgKzg5LDYgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvbkJsb2NrZWQoKQogICAg
IG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwu
aAppbmRleCAwNTdhYTI1MWJlY2EwMjE5ODhiNDM0YmRiY2JhYTBiNmM0MmI3NjI4Li5jNDg2NjAx
MmRiYzkwOTIwYjYzNjc1OGQyOGFlYjFhYWMzMWRiZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDM1ICsyNiwzNSBAQAogI2lmbmRl
ZiBXZWJJREJDYWxsYmFja3NJbXBsX2gKICNkZWZpbmUgV2ViSURCQ2FsbGJhY2tzSW1wbF9oCiAK
KyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNr
cy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSURCQ2FsbGJhY2tzOyB9CiAKLWNsYXNzIElEQkNh
bGxiYWNrczsKK25hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJJREJDYWxsYmFja3NJbXBs
IDogcHVibGljIFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzIHsKK2NsYXNzIFdlYklEQkNhbGxiYWNr
c0ltcGwgOiBwdWJsaWMgV2ViSURCQ2FsbGJhY2tzIHsKIHB1YmxpYzoKLSAgICBXZWJJREJDYWxs
YmFja3NJbXBsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgV2ViSURCQ2FsbGJhY2tz
SW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgfldl
YklEQkNhbGxiYWNrc0ltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKGNvbnN0IFdl
YktpdDo6V2ViSURCRGF0YWJhc2VFcnJvciYpOwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
V2ViS2l0OjpXZWJJREJDdXJzb3IqKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYktp
dDo6V2ViSURCRGF0YWJhc2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdl
YktpdDo6V2ViSURCS2V5Jik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6Oldl
YklEQlRyYW5zYWN0aW9uKik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJL
aXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOworICAgIHZpcnR1YWwgdm9pZCBvbkVycm9y
KGNvbnN0IFdlYklEQkRhdGFiYXNlRXJyb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFdlYklEQkN1cnNvciopOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCRGF0YWJh
c2UqKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYpOworICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCVHJhbnNhY3Rpb24qKTsKKyAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOwogICAgIHZp
cnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBtX2NhbGxiYWNrczsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiBtX2Nh
bGxiYWNrczsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAogCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2Vu
ZGlmIC8vIFdlYklEQkNhbGxiYWNrc0ltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcAppbmRleCA4NmM0ZjU3YjA3MGQwODBlYjBkYjQ2NDk5
NzNiMjFhOGM5YjQwNzcxLi42YzAwMTJlMDk5YWQ3NjdkOGYyMzc2NjI3NjdlOTRkNzUyMjliYjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Niw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSURCQ3Vyc29y
SW1wbC5oIgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKICNpbmNsdWRlICJJREJB
bnkuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2UuaCIKQEAgLTgwLDQgKzgyLDYgQEAgdm9pZCBXZWJJREJDdXJzb3JJ
bXBsOjpkZWxldGVGdW5jdGlvbihXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0
aW9uQ28KICAgICBtX2lkYkN1cnNvckJhY2tlbmQtPmRlbGV0ZUZ1bmN0aW9uKElEQkNhbGxiYWNr
c1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgZWMpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vy
c29ySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5o
CmluZGV4IGRlMTdhOTlhNTczYjA2M2RlMWFlNDE3ZjU5MGU2YjlhMjMwNWM4MWUuLmMyMzc5MjA3
M2NjZDI0YTRmMzA0ODYzZWQ1MzM5MjZhZTBkZGQ2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBXZWJJREJD
dXJzb3JJbXBsX2gKICNkZWZpbmUgV2ViSURCQ3Vyc29ySW1wbF9oCiAKKyNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJXZWJJREJDdXJzb3IuaCIKQEAgLTU2LDQgKzU4LDYg
QEAgcHVibGljOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQorCiAjZW5kaWYgLy8gV2ViSURCQ3Vyc29ySW1wbF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmNwcAppbmRleCAzY2EwMjc0NWZhMzZiNjFhMWI1YmI0NmY4ZjFjNjMyNWZlYjdiMDcx
Li4wZmVjODRhZjUzODMzYmI1ZTExODgzYWQxZDA3ZjFmNTcyOTE4N2JmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbC5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNr
cy5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYklEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICA6IG1fY2FsbGJhY2tzKGNhbGxi
YWNrcykKQEAgLTQyLDExICs0NCwxMSBAQCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6On5X
ZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKQogewogfQogCi12b2lkIFdlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB2
ZXJzaW9uKQordm9pZCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5n
ZShjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24pCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uVmVyc2lv
bkNoYW5nZSh2ZXJzaW9uKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmgKaW5kZXggYmEzZGM1ZWNiYTJjM2U2MDk1NjNlOTM1YWI2NDQwYTkxZTEzZmMzOS4u
ZDQ5MTZhZjY1MzhjODQ3NDQ3NGY5ZTIwZjhiY2VmYzhmYjg5ZjAzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
LmgKQEAgLTM0LDIzICszNCwyMyBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2Vi
Q29yZSB7IGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOyB9CiAKLWNsYXNzIElEQkRhdGFiYXNl
Q2FsbGJhY2tzOworbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYklEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbCA6IHB1YmxpYyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKK2Ns
YXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCA6IHB1YmxpYyBXZWJJREJEYXRhYmFzZUNh
bGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KTsKKyAgICBXZWJJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogICAgIHZp
cnR1YWwgfldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lk
IG9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgdmVyc2lvbik7CisgICAg
dmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24pOwog
CiBwcml2YXRlOgotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9jYWxsYmFja3M7
CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsK
IH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0j
ZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2VuZGlmIC8vIFdl
YklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkRhdGFiYXNlRXJyb3IuY3BwCmluZGV4IDc0MTNhZTZhYzhlODNlZDRlNjYw
NmQ4YzQ4ZmY4MWQ0ZGQ5NWFjZjguLjI1ZTIwMmMyMTk2ZjE4ODJjNmNhMTBlMDNlYjNmYTdhNTNm
MWM3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFi
YXNlRXJyb3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKwogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcu
aCIKIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCAyYTk3OTIzMzg5YTQxZWQ4Y2QzNmIy
YTdlYzg0OTc2ZjczZmQ1N2E5Li45MmRkNWFkMzdiNWZjYzBmNjg3ZWVmY2VmNjYwYmY5OWRjMzIz
NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNl
SW1wbC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYklE
QkRhdGFiYXNlSW1wbC5oIgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKICNpbmNs
dWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKICNp
bmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKQEAgLTM2LDggKzM4LDYgQEAK
ICNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJUcmFu
c2FjdGlvbkltcGwuaCIKIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTIsNiArMTEyLDYg
QEAgdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6Om9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3Mq
IGNhbGxiYWNrcykKICAgICBtX2RhdGFiYXNlQmFja2VuZC0+b3BlbihtX2RhdGFiYXNlQ2FsbGJh
Y2tzKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggMGUxZDAzZWUxMWVmMzQz
M2Q0NjI0N2VlM2ZjNmVhNjA5NDUwOGVlOS4uMDYxZjVjMjA4MDQ3MzE3ODgxNjlhMzkwNjY1NzA3
MzMxYTdhZDgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjYsMTkgKzI2LDE5IEBACiAjaWZuZGVmIFdlYklEQkRhdGFiYXNlSW1wbF9oCiAj
ZGVmaW5lIFdlYklEQkRhdGFiYXNlSW1wbF9oCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKwogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U7Ci1jbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNr
c1Byb3h5OwotfQorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U7IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIElEQkRhdGFiYXNlQ2Fs
bGJhY2tzUHJveHk7CiBjbGFzcyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrczsKIGNsYXNzIFdlYklE
Qk9iamVjdFN0b3JlOwogY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CkBAIC02Myw5ICs2MywxMSBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBtX2RhdGFiYXNlQmFja2VuZDsKLSAgICBXVEY6OlJlZlB0cjxX
ZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwor
ICAgIFdURjo6UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IG1fZGF0YWJhc2VDYWxs
YmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYklEQkRh
dGFiYXNlSW1wbF9oCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAppbmRleCAz
ZTIxYWY1Njg5Y2NhODA3ZjIyYTYzMGUwOTM0MzRhMmU1Y2U4NDM0Li43OTM2OThlNTk4N2MxN2E3
OWFjY2IyMTlkOTYwODdmMDc4ZWEzM2NmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeUltcGwuaCIKIAorI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklE
QkNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCkBA
IC0zOCw4ICs0MCw2IEBACiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MCw3ICs1MCw3
IEBAIFdlYklEQkZhY3RvcnkqIFdlYklEQkZhY3Rvcnk6OmNyZWF0ZSgpCiB9CiAKIFdlYklEQkZh
Y3RvcnlJbXBsOjpXZWJJREJGYWN0b3J5SW1wbCgpCi0gICAgOiBtX2lkYkZhY3RvcnlCYWNrZW5k
KFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Y3JlYXRlKCkpCisgICAgOiBtX2lkYkZh
Y3RvcnlCYWNrZW5kKElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Y3JlYXRlKCkpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCmluZGV4IDBm
ZmQyODk1MDY4ZTI1YmUxMGVmZWYwNGEwZmFhMGFlN2Y0N2I2YjQuLjYyYmQ5ZWQ5Mjc4Y2JhNDM2
ZmUzNDcxYTJhNDBjNzI1M2VmYjA0M2MgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRmFjdG9yeUltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICsyOSw4IEBACiAjaWZuZGVmIFdlYklEQkZhY3RvcnlJ
bXBsX2gKICNkZWZpbmUgV2ViSURCRmFjdG9yeUltcGxfaAogCisjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKICNpbmNsdWRlICJXZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2Vi
SURCRmFjdG9yeS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUwLDQgKzUyLDYgQEAg
cHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKKyNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKwogI2VuZGlmIC8vIFdlYklEQkZhY3RvcnlJbXBsX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCmluZGV4IDZlOGUxZjI0
NDgzOTAzYWNhOTgyNTg4NTJiYjJlNTdiOTQ1ZWVhYzguLmZhMzNkYTk1M2E4MDYyMzYxNWRkYzEx
Y2ZiMDRmZDY0YzI2ZDNiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkluZGV4SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCSW5kZXhJbXBsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViSURCSW5kZXhJbXBsLmgiCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwog
I2luY2x1ZGUgIklEQkNhbGxiYWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCSW5kZXguaCIKICNp
bmNsdWRlICJJREJLZXlSYW5nZS5oIgpAQCAtMzMsOCArMzUsNiBAQAogI2luY2x1ZGUgIldlYklE
QktleS5oIgogI2luY2x1ZGUgIldlYklEQktleVJhbmdlLmgiCiAKLSNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtODgsNiArODgsNiBAQCB2b2lkIFdlYklEQkluZGV4SW1wbDo6Z2V0S2V5KGNvbnN0
IFdlYklEQktleSYga2V5UmFuZ2UsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhYwogICAgIG1fYmFj
a2VuZC0+Z2V0S2V5KGtleVJhbmdlLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNr
cyksIHRyYW5zYWN0aW9uLmdldElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7
CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJJbmRleEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCmluZGV4IGY2OGRhN2YwNjAxOGZiNWQ3OWFkZjQ2YzFh
Y2M5MDA0Zjg4NGNjYTMuLmIwNDdjMmY4NTk2ZmUxZmYwYWJiMGUzOTI0ODE3NzhiYzc3MTkwZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2
LDggQEAKICNpZm5kZWYgV2ViSURCSW5kZXhJbXBsX2gKICNkZWZpbmUgV2ViSURCSW5kZXhJbXBs
X2gKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCiAjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCiAjaW5jbHVkZSAiV2ViSURCSW5kZXguaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgpAQCAtNTcsNCArNTksNiBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAor
I2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCiAjZW5kaWYgLy8gV2ViSURCSW5k
ZXhJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktl
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXkuY3BwCmluZGV4IGEy
MDE0NmVhZDQ2OTc4YTU0MDJhNzg5N2QxMzVkYWE0NGFlY2M3ZTQuLjE3OWNlMTkxMjEzOWQ2NGZm
MjA4MWFjZTE0MjBlYTJhNjM2NDM0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQktleS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCS2V5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtODAsMTIgKzgwLDEyIEBAIFdlYklEQktleSBXZWJJREJLZXk6OmNyZWF0ZUZy
b21WYWx1ZUFuZEtleVBhdGgoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzCiB7CiAg
ICAgaWYgKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFdl
YklEQktleTo6Y3JlYXRlSW52YWxpZCgpOwotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVJREJL
ZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGlk
YktleVBhdGgpOworICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5k
S2V5UGF0aChzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGlkYktleVBhdGgpOwogfQogCiBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUgV2ViSURCS2V5OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZh
bHVlKGNvbnN0IFdlYklEQktleSYga2V5LCBjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUm
IHZhbHVlLCBjb25zdCBXZWJJREJLZXlQYXRoJiBwYXRoKQogewotICAgIHJldHVybiBXZWJDb3Jl
OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIHBhdGgpOworICAg
IHJldHVybiBpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIHBhdGgp
OwogfQogCiB2b2lkIFdlYklEQktleTo6YXNzaWduKGNvbnN0IFdlYklEQktleSYgdmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlQYXRoLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleVBhdGguY3BwCmluZGV4IDllYjMz
ZDY3NTU3ZDI5OGFhNjA2NGM5MTk2NjM3NjM5MmI1MWE1MmUuLjMwOWMwZDkxYWE4NWI3YzU3ZDZh
MmM4OGRjYTExNmQ3MmY0MWFmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQktleVBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQktleVBhdGguY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBXZWJJREJLZXlQYXRoOjpyZXNldCgpCiAg
ICAgbV9wcml2YXRlLnJlc2V0KDApOwogfQogCi1XZWJJREJLZXlQYXRoOjpvcGVyYXRvciBjb25z
dCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpJREJLZXlQYXRoRWxlbWVudCwgMD4mKCkgY29uc3QKK1dl
YklEQktleVBhdGg6Om9wZXJhdG9yIGNvbnN0IFdURjo6VmVjdG9yPElEQktleVBhdGhFbGVtZW50
LCAwPiYoKSBjb25zdAogewogICAgIHJldHVybiAqbV9wcml2YXRlLmdldCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UmFuZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UmFuZ2UuY3BwCmluZGV4IDUxN2ZmMDA2
OTA4ZjY4YTVkNTE4YjQ0NTZiM2M0MzMyYmNmY2QwMGIuLmVhNjQxZTk2MDQ5NmVhNDFlMTdjYWRh
ZDg4MzIzMmEzMThkYTMwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQktleVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJLZXlSYW5nZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsMTEgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViSURCS2V5UmFuZ2UuaCIKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCiAj
aW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJX
ZWJJREJLZXkuaCIKIAotdXNpbmcgV2ViQ29yZTo6SURCS2V5UmFuZ2U7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTkzLDMgKzk1LDUgQEAgV2Vi
SURCS2V5UmFuZ2U6Om9wZXJhdG9yIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+KCkgY29uc3QKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVj
dFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RT
dG9yZUltcGwuY3BwCmluZGV4IDU2ZTM1NGQwMmQ0YWZjYWVhNmY2YmQxZDk3NzZmYjQzN2Q1NTE0
ZTAuLjBhNjdmMzY3NWI0ZGI4ZjYzNDNlYTdlNjBkMjhhNjk1NzAzMWQwNjYgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2
ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSURCT2JqZWN0U3Rv
cmVJbXBsLmgiCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIkRP
TVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUg
IklEQkluZGV4QmFja2VuZEludGVyZmFjZS5oIgpAQCAtMzcsOCArMzksNiBAQAogI2luY2x1ZGUg
IldlYklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTEzLDYgKzExMyw2IEBAIHZvaWQgV2Vi
SURCT2JqZWN0U3RvcmVJbXBsOjpvcGVuQ3Vyc29yKGNvbnN0IFdlYklEQktleVJhbmdlJiBrZXlS
YW5nZSwgdW5zaWduZWQKICAgICBtX29iamVjdFN0b3JlLT5vcGVuQ3Vyc29yKGtleVJhbmdlLCBk
aXJlY3Rpb24sIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgdHJhbnNhY3Rp
b24uZ2V0SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKCksIGVjKTsKIH0KIAotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggM2UyZGZhYmI1OTUwMjBjNTA3OTdhZmI5ZjBh
ZTY1YjQyNmY1OWYwNC4uZjEwOTNlZDViYzU0MDRlMmI3MmEzMmNkMWU2ZWQ4YWRkNzkxMzc3YyAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJ
bXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBXZWJJREJPYmplY3RTdG9yZUltcGxfaAogI2RlZmlu
ZSBXZWJJREJPYmplY3RTdG9yZUltcGxfaAogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZS5o
IgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC02NCw0ICs2Niw2IEBAIHB1YmxpYzoK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKwogI2VuZGlmIC8vIFdlYklEQk9iamVjdFN0b3JlSW1wbF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3NJbXBsLmNwcAppbmRleCA4NDgxODJlMTU0MjdiOThkNDFjYzY3Y2Q2MjJmNDdkNTE5NjY3MDEz
Li4yZjE2NDc3ZDI1MDdlNzU4NjA5MDZjMTE5NjA4Y2I0MmQwY2EwYjYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzSW1wbC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzAsNyArMzAsOSBAQAogCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25DYWxs
YmFja3MuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGw6
OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbChQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCkBAIC01
MSw2ICs1Myw2IEBAIHZvaWQgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsOjpvbkNvbXBs
ZXRlKCkKICAgICBtX2NhbGxiYWNrcy0+b25Db21wbGV0ZSgpOwogfQogCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwuaAppbmRleCA0MTZhYzNjNTg1ZTJlY2Ey
MjBlMzZkZGVhMjVlOTc4MGJkM2NmNTdhLi44YWNiMDk1NTBhMDliMDY3NGI1OGI5MGIyMzVjMWNm
MzY2MzRlNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJU
cmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiwyNCArMzIsMjQgQEAKICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJREJUcmFuc2FjdGlvbkNhbGxi
YWNrczsgfQogCi1jbGFzcyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrczsKK25hbWVzcGFjZSBXZWJL
aXQgewogCi1jbGFzcyBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgV2Vi
S2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyB7CitjbGFzcyBXZWJJREJUcmFuc2FjdGlv
bkNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3MgewogcHVi
bGljOgotICAgIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbChQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQ2FsbGJhY2tzPik7CisgICAgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBs
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+KTsKICAgICB2aXJ0
dWFsIH5XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBvbkFib3J0KCk7CiAgICAgdmlydHVhbCB2b2lkIG9uQ29tcGxldGUoKTsKIAogcHJpdmF0ZToK
LSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiB9Owog
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlm
CisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNlbmRpZiAvLyBXZWJJREJU
cmFuc2FjdGlvbkNhbGxiYWNrc0ltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAKaW5kZXggMWVkNmY0YmYxZjcxZTY5OGNj
Mjk1YWJlMDExMGIyZDQwOWE4ZmE2MC4uYWRhOWRhMDQ5MGJlNWJjMWRhMzczOThmOThiNDEyMjMw
YTRjNTM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJh
bnNhY3Rpb25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJU
cmFuc2FjdGlvbkltcGwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QlRyYW5zYWN0aW9uSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJh
bnNhY3Rpb25JbXBsLmgKaW5kZXggZDI2ZmMzN2RjNTA0NDkxNzA0NjFkMjc3YjQ5OTMxOTUwNGVi
NTY2My4uNGYxOTgzZTJlMjliYmIwMjgwNjY2YzgwMDNjYzA4ZmVhOGM5N2EzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88053</attachid>
            <date>2011-04-04 05:59:54 -0700</date>
            <delta_ts>2011-04-04 06:14:23 -0700</delta_ts>
            <desc>fixed patch</desc>
            <filename>bug-57507-20110404135952.patch</filename>
            <type>text/plain</type>
            <size>70339</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI3MzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
NDUzNjM1NTIzMjE0MDEyYWFiYjJlYTJlMTkxNmFhMjE0NmQ3MWQ1MC4uODMzMDNkZGNmYTg0MzIz
NTMwOGE2MTI4YzFiNDg3NGJkMmEwZTc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMTEgQEAKKzIwMTEtMDQtMDQgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKQorCisgICAgICAgIENs
ZWFuIHVwIEluZGV4ZWREQiBXZWJLaXQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NzUwNworCisgICAgICAgIFJlbmFtZSB0aGUgYmFja2VuZCBw
cm94eSBmaWxlcyB0aGF0IGRpZG4ndCBoYXZlIEJhY2tlbmQgaW4gdGhlaXIgbmFtZS4KKyAgICAg
ICAgRXZlcnl0aGluZyBpbiBXZWJLaXQgc2hvdWxkIGJlIGluIHRoZSBXZWJLaXQgbmFtZXNwYWNl
LgorICAgICAgICBQdXQgZXZlcnl0aGluZyBiZWhpbmQgdGhlIGZlYXR1cmUgZmxhZyBzbyB3ZSdy
ZSBjb25zaXN0aWVudC4KKyAgICAgICAgUHV0IHRoZSBmZWF0dXJlIGZsYWcgI2lmIGFib3ZlIGlu
Y2x1ZGVzLgorCisgICAgICAgIFNlY29uZCB0cnk6IGFkZGVkIFdlYkNvcmU6OiBxdWFsaWZpZXIg
dG8KKyAgICAgICAgaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSBpbiBXZWJJREJLZXku
Y3BwLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6OklEQkNhbGxiYWNrc1Byb3h5KToK
KyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uRXJyb3IpOgorICAgICAgICAo
V2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKToKKyAgICAgICAgKiBzcmMvSURC
Q2FsbGJhY2tzUHJveHkuaDoKKyAgICAgICAgKiBzcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SURCQ3Vyc29yQmFja2VuZFByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpJREJDdXJzb3JCYWNrZW5kUHJveHk6OklEQkN1cnNvckJhY2tlbmRQcm94
eSk6CisgICAgICAgICogc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oOgorICAgICAgICAqIHNy
Yy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFi
YXNlQmFja2VuZFByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJh
Y2tlbmRQcm94eTo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpJ
REJEYXRhYmFzZUJhY2tlbmRQcm94eTo6fklEQkRhdGFiYXNlQmFja2VuZFByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om5hbWUpOgorICAgICAgICAoV2Vi
S2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6dmVyc2lvbik6CisgICAgICAgIChXZWJLaXQ6
OklEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpvYmplY3RTdG9yZU5hbWVzKToKKyAgICAgICAgKFdl
YktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmRlbGV0ZU9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnNldFZlcnNpb24pOgor
ICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6dHJhbnNhY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6Y2xvc2UpOgorICAgICAg
ICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6b3Blbik6CisgICAgICAgICogc3Jj
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5OjpJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KToKKyAgICAgICAgKiBz
cmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJGYWN0b3J5
QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRmFjdG9yeUJhY2tlbmRQcm94
eTo6SURCRmFjdG9yeUJhY2tlbmRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OklEQkZhY3RvcnlC
YWNrZW5kUHJveHk6Om9wZW4pOgorICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5
Lmg6CisgICAgICAgICogc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SURCSW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OklE
QkluZGV4QmFja2VuZFByb3h5OjpJREJJbmRleEJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3Jj
L0lEQkluZGV4QmFja2VuZFByb3h5Lmg6CisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlQmFj
a2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJv
eHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5
OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5Ojp+SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6bmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjprZXlQYXRoKToKKyAgICAgICAgKFdl
YktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmluZGV4TmFtZXMpOgorICAgICAgICAo
V2ViS2l0OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Z2V0KToKKyAgICAgICAgKFdlYktp
dDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OklE
Qk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjbGVhcik6CisgICAgICAgIChXZWJLaXQ6
OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJL
aXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjppbmRleCk6CisgICAgICAgIChXZWJLaXQ6
OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpkZWxldGVJbmRleCk6CisgICAgICAgIChXZWJL
aXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKiBz
cmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaDogQWRkZWQuCisgICAgICAgICogc3JjL0lE
Qk9iamVjdFN0b3JlUHJveHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvSURCVHJhbnNhY3Rp
b25CYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJUcmFuc2FjdGlvbkJhY2tl
bmRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
UHJveHk6OklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6SURC
VHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6Om9iamVjdFN0b3JlKToKKyAgICAgICAgKiBzcmMvSURC
VHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6SURCVHJhbnNhY3Rp
b25CYWNrZW5kUHJveHk6OmdldFdlYklEQlRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBzcmMvSURC
VHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OklEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzUHJveHk6OklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkpOgorICAg
ICAgICAqIHNyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAgICogc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxsYmFj
a3NJbXBsOjpvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzSW1wbDo6
b25TdWNjZXNzKToKKyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oOgorICAgICAg
ICAqIHNyYy9XZWJJREJDdXJzb3JJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURCQ3Vyc29y
SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNo
YW5nZSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oOgorICAg
ICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUVycm9yLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmg6Cisg
ICAgICAgICogc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCRmFjdG9yeUltcGw6OldlYklEQkZhY3RvcnlJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSURC
RmFjdG9yeUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCSW5kZXhJbXBsLmNwcDoKKyAgICAg
ICAgKiBzcmMvV2ViSURCSW5kZXhJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQktleS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleTo6Y3JlYXRlRnJvbVZhbHVlQW5kS2V5UGF0aCk6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRW
YWx1ZSk6CisgICAgICAgICogc3JjL1dlYklEQktleVBhdGguY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJLZXlQYXRoOjpvcGVyYXRvciBjb25zdCBXVEY6OlZlY3RvcjxJREJLZXlQYXRoRWxl
bWVudCwgMD4mKToKKyAgICAgICAgKiBzcmMvV2ViSURCS2V5UmFuZ2UuY3BwOgorICAgICAgICAq
IHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJPYmpl
Y3RTdG9yZUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJ
bXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmg6
CisgICAgICAgICogc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHA6CisgICAgICAgICogc3Jj
L1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oOgorCiAyMDExLTA0LTAxICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQXR0ZW1wdCB0byBmaXggdGhlIENocm9taXVtIGJ1
aWxkIHVzaW5nIHRoZSBncmVhdCBhbmQgcG93ZXJmdWwgZ2l0LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCmluZGV4IDcyZGRiNDVmZGY4Zjk1ZDI4OTQ4ZjEwNzY4MDYwYTYzYTFkYjhjY2EuLjI2
M2I0OWU1NDgyNzVkMTFhNmI0Y2MwMjRlZjFiZjVjZmQwOTY0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKQEAgLTM1OSwxNCArMzU5LDE0IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9J
REJDdXJzb3JCYWNrZW5kUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5LmgnLAotICAgICAgICAgICAgICAgICdzcmMvSURCRGF0YWJhc2VQcm94eS5j
cHAnLAotICAgICAgICAgICAgICAgICdzcmMvSURCRGF0YWJhc2VQcm94eS5oJywKKyAgICAgICAg
ICAgICAgICAnc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0lEQkZh
Y3RvcnlCYWNrZW5kUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9JREJJbmRleEJhY2tl
bmRQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvSURCSW5kZXhCYWNrZW5kUHJveHku
aCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmNwcCcsCi0gICAg
ICAgICAgICAgICAgJ3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmgnLAorICAgICAgICAgICAgICAg
ICdzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwJywKKyAgICAgICAgICAgICAgICAn
c3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgnLAogICAgICAgICAgICAgICAgICdzcmMv
SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0lE
QlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvSURCVHJh
bnNhY3Rpb25DYWxsYmFja3NQcm94eS5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCmluZGV4IDcyNzA5MmExNTg1N2MwOWRiYWZkZWQw
OTA1NTY1ZTFmODEwOTc3YWEuLmM1MzZjMzhkYWMxNTlhNmQ1OGUwYTYzZGQ1MjVkMzY2NWNkMjNi
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94
eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksOCArMjksMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJDYWxs
YmFja3NQcm94eS5oIgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRl
ICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3Iu
aCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJh
Y2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ3Vyc29ySW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkRh
dGFiYXNlSW1wbC5oIgpAQCAtMzksMTYgKzQxLDE2IEBACiAjaW5jbHVkZSAiV2ViSURCVHJhbnNh
Y3Rpb25JbXBsLmgiCiAjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKLSNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxJREJD
YWxsYmFja3NQcm94eT4gSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShQYXNzT3duUHRyPFdlYktp
dDo6V2ViSURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCitQYXNzUmVmUHRyPElEQkNhbGxiYWNrc1By
b3h5PiBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViSURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDYWxsYmFja3NQcm94
eShjYWxsYmFja3MpKTsKIH0KIAotSURCQ2FsbGJhY2tzUHJveHk6OklEQkNhbGxiYWNrc1Byb3h5
KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK0lEQkNhbGxi
YWNrc1Byb3h5OjpJREJDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQogICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogewogfQpAQCAtNTksMzIg
KzYxLDMyIEBAIElEQkNhbGxiYWNrc1Byb3h5Ojp+SURCQ2FsbGJhY2tzUHJveHkoKQogCiB2b2lk
IElEQkNhbGxiYWNrc1Byb3h5OjpvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4g
aWRiRGF0YWJhc2VFcnJvcikKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihXZWJLaXQ6Oldl
YklEQkRhdGFiYXNlRXJyb3IoaWRiRGF0YWJhc2VFcnJvcikpOworICAgIG1fY2FsbGJhY2tzLT5v
bkVycm9yKFdlYklEQkRhdGFiYXNlRXJyb3IoaWRiRGF0YWJhc2VFcnJvcikpOwogfQogCiB2b2lk
IElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlPiBpZGJDdXJzb3JCYWNrZW5kKQogewotICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nl
c3MobmV3IFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbChpZGJDdXJzb3JCYWNrZW5kKSk7CisgICAg
bV9jYWxsYmFja3MtPm9uU3VjY2VzcyhuZXcgV2ViSURCQ3Vyc29ySW1wbChpZGJDdXJzb3JCYWNr
ZW5kKSk7CiB9CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKIHsKLSAgICBtX2NhbGxiYWNr
cy0+b25TdWNjZXNzKG5ldyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbChiYWNrZW5kKSk7Cisg
ICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGJhY2tlbmQp
KTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
S2V5PiBpZGJLZXkpCiB7Ci0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJLaXQ6OldlYklE
QktleShpZGJLZXkpKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYklEQktleShpZGJL
ZXkpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogewotICAgIG1fY2FsbGJh
Y2tzLT5vblN1Y2Nlc3MobmV3IFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25JbXBsKGJhY2tlbmQp
KTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJUcmFuc2FjdGlvbkltcGwo
YmFja2VuZCkpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsKLSAg
ICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYktpdDo6V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
KHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkpOwogfQogCiB2b2lk
IElEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoKQpAQCAtOTIsNiArOTQsNiBAQCB2b2lkIElE
QkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoKQogICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQo
KTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4IDY4Mjk4NDVkMGY4ZTg2NzA4ZGJk
OTcwNzZlMWM5NTQ3YmM1YWJiZWEuLmU5ZjQ1ZmY1Y2YxMjQ0ODEyMDVmN2ZmYTAxMmRiNDRjOTZi
ZTQ0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNr
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJv
eHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yOSw0MCArMjksMzcgQEAKICNpZm5kZWYgSURCQ2FsbGJhY2tzUHJveHlfaAogI2RlZmluZSBJ
REJDYWxsYmFja3NQcm94eV9oCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2lu
Y2x1ZGUgIklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLSNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQogbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJJ
REJDYWxsYmFja3M7Ci19CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdlYklEQkNhbGxi
YWNrczsKIAotY2xhc3MgSURCQ2FsbGJhY2tzUHJveHkgOiBwdWJsaWMgSURCQ2FsbGJhY2tzIHsK
K2NsYXNzIElEQkNhbGxiYWNrc1Byb3h5IDogcHVibGljIFdlYkNvcmU6OklEQkNhbGxiYWNrcyB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzUHJveHk+IGNyZWF0
ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzPik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzUHJveHk+IGNyZWF0ZShQYXNzT3duUHRyPFdlYklEQkNhbGxiYWNr
cz4pOwogICAgIHZpcnR1YWwgfklEQkNhbGxiYWNrc1Byb3h5KCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgb25FcnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KTsKLSAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4pOwotICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5Pik7
Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4pOwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4pOworICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCS2V5Pik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOworICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
KTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CiAKIHByaXZhdGU6Ci0gICAgSURCQ2Fs
bGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkNhbGxiYWNrcz4pOworICAgIElE
QkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViSURCQ2FsbGJhY2tzPik7CiAKLSAgICBPd25Q
dHI8V2ViS2l0OjpXZWJJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIE93blB0cjxXZWJJ
REJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCmluZGV4IGIzYjllYTdm
ZDAwMDkzM2JlZGRiYmFjNTIyMzM0Y2VjOGEzM2M0YzQuLjdkYWI2YTI4ZmEyMGZhOGRjNTFiNmY3
N2FkMjUwZmZiN2MwNWY3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwxNCArMzYsMTYgQEAKICNpbmNsdWRlICJXZWJJ
REJLZXkuaCIKICNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAotbmFtZXNw
YWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVBhc3NSZWZQdHI8SURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZT4gSURCQ3Vyc29yQmFja2VuZFByb3h5OjpjcmVhdGUoUGFz
c093blB0cjxXZWJLaXQ6OldlYklEQkN1cnNvcj4gaWRiQ3Vyc29yKQorbmFtZXNwYWNlIFdlYktp
dCB7CisKK1Bhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gSURCQ3Vyc29yQmFj
a2VuZFByb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJJREJDdXJzb3I+IGlkYkN1cnNvcikKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkN1cnNvckJhY2tlbmRQcm94eShpZGJDdXJzb3Ip
KTsKIH0KIAotSURCQ3Vyc29yQmFja2VuZFByb3h5OjpJREJDdXJzb3JCYWNrZW5kUHJveHkoUGFz
c093blB0cjxXZWJLaXQ6OldlYklEQkN1cnNvcj4gaWRiQ3Vyc29yKQorSURCQ3Vyc29yQmFja2Vu
ZFByb3h5OjpJREJDdXJzb3JCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJJREJDdXJzb3I+IGlk
YkN1cnNvcikKICAgICA6IG1faWRiQ3Vyc29yKGlkYkN1cnNvcikKIHsKIH0KQEAgLTg3LDYgKzg5
LDYgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEUKICAgICBtX2lkYkN1cnNvci0+ZGVsZXRlRnVu
Y3Rpb24obmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOwogfQogCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAppbmRleCAwYzJlMWM3MzIxNmEwZjkzMTNkYTJmMDcw
MjQzMWM3NGUyMmJkYTg1Li5kNzI1MzYwNTAyOWNjOTJiZjhhMGE4NjA1ZDA0NDNlODU1ODFiZjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5k
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5k
UHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNSwyOCArMzUsMjggQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdlYktp
dCB7CiAKLWNsYXNzIElEQkN1cnNvckJhY2tlbmRQcm94eSA6IHB1YmxpYyBJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlIHsKK2NsYXNzIElEQkN1cnNvckJhY2tlbmRQcm94eSA6IHB1YmxpYyBXZWJD
b3JlOjpJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoUGFzc093blB0cjxXZWJL
aXQ6OldlYklEQkN1cnNvcj4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZShQYXNzT3duUHRyPFdlYklEQkN1cnNvcj4pOwog
ICAgIHZpcnR1YWwgfklEQkN1cnNvckJhY2tlbmRQcm94eSgpOwogCiAgICAgdmlydHVhbCB1bnNp
Z25lZCBzaG9ydCBkaXJlY3Rpb24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURC
S2V5PiBrZXkoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gdmFsdWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJL
ZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRp
b25Db2RlJik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4ga2V5KCkg
Y29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJpbWFyeUtl
eSgpIGNvbnN0OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHZhbHVlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVm
UHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJh
Y2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgotICAgIElEQkN1cnNv
ckJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCQ3Vyc29yPik7CisgICAgSURC
Q3Vyc29yQmFja2VuZFByb3h5KFBhc3NPd25QdHI8V2ViSURCQ3Vyc29yPik7CiAKLSAgICBPd25Q
dHI8V2ViS2l0OjpXZWJJREJDdXJzb3I+IG1faWRiQ3Vyc29yOworICAgIE93blB0cjxXZWJJREJD
dXJzb3I+IG1faWRiQ3Vyc29yOwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuY3BwCmluZGV4IDI4YzEzNGZi
NmEzMmE3YWY3YTQ5YWM3Nzk3NWZmZGEyMzIzZDZhOTAuLjgxNmZhZjZjNGRlNzBhZTY5MjY5MzBk
MGRlNTBlMGVlMmQxMTc4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC0zMCwxNCArMzAsMTYgQEAK
IAogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCiAKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1QYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzUHJveHk+IElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShQYXNzT3du
UHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IElEQkRh
dGFiYXNlQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5KGNhbGxiYWNrcykpOwogfQogCi1JREJEYXRhYmFzZUNhbGxiYWNrc1By
b3h5OjpJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJE
YXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzKQorSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6
SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCiB7CiB9CkBAIC01
MSw2ICs1Myw2IEBAIHZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eTo6b25WZXJzaW9uQ2hh
bmdlKGNvbnN0IFN0cmluZyYgcmVxdWVzdGVkVmVyc2lvbikKICAgICBtX2NhbGxiYWNrcy0+b25W
ZXJzaW9uQ2hhbmdlKHJlcXVlc3RlZFZlcnNpb24pOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJh
c2VDYWxsYmFja3NQcm94eS5oCmluZGV4IDlmZDdhMGIzZTZkMjRiMzU5NTlkZDZjMzUzYmUyNWYw
Y2ZjN2E3ZTcuLmFmZmRjZTc3ZDVkOTU4ZGMwMGUwZjZmODBhY2ZmYjgwMTI5NThiM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNr
c1Byb3h5LmgKQEAgLTI2LDMwICsyNiwyOSBAQAogI2lmbmRlZiBJREJEYXRhYmFzZUNhbGxiYWNr
c1Byb3h5X2gKICNkZWZpbmUgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eV9oCiAKLSNpbmNsdWRl
ICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgotCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgeyBjbGFzcyBXZWJJREJEYXRhYmFzZUNhbGxi
YWNrczsgfQorbmFtZXNwYWNlIFdlYktpdCB7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzOwogCi1jbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc1By
b3h5IDogcHVibGljIElEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKK2NsYXNzIElEQkRhdGFiYXNlQ2Fs
bGJhY2tzUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3MgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IGNy
ZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3M+KTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBjcmVhdGUoUGFzc093
blB0cjxXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNl
Q2FsbGJhY2tzUHJveHkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29u
c3QgU3RyaW5nJiByZXF1ZXN0ZWRWZXJzaW9uKTsKIAogcHJpdmF0ZToKLSAgICBJREJEYXRhYmFz
ZUNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxiYWNr
cz4pOworICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJJREJEYXRh
YmFzZUNhbGxiYWNrcz4pOwogCi0gICAgT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxs
YmFja3M+IG1fY2FsbGJhY2tzOworICAgIE93blB0cjxXZWJJREJEYXRhYmFzZUNhbGxiYWNrcz4g
bV9jYWxsYmFja3M7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKaW5kZXggOWU1Y2NjMDI5N2I0ZTBiNzE2N2M0
ZDY3MjY5ZjhlYTY1OTRkNDk5Ni4uMTgyNGViODZmZTkyNjIyNGU1NjA4MzZhMWEwNzMxN2U4MTdi
OTI5MSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJh
Y2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9y
eUJhY2tlbmRQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjksOSArMjksMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJJREJGYWN0b3J5QmFja2VuZFByb3h5LmgiCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKwogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFz
ZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKLSNpbmNsdWRl
ICJJREJEYXRhYmFzZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViSURCQ2FsbGJhY2tzSW1wbC5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlLmgiCkBA
IC00MSw5ICs0Myw5IEBACiAjaW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2Vi
VmVjdG9yLmgiCiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViS2l0IHsKIAog
UGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gSURCRmFjdG9yeUJhY2tlbmRQ
cm94eTo6Y3JlYXRlKCkKIHsKQEAgLTUxLDcgKzUzLDcgQEAgUGFzc1JlZlB0cjxJREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZT4gSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6Y3JlYXRlKCkKIH0KIAog
SURCRmFjdG9yeUJhY2tlbmRQcm94eTo6SURCRmFjdG9yeUJhY2tlbmRQcm94eSgpCi0gICAgOiBt
X3dlYklEQkZhY3RvcnkoV2ViS2l0Ojp3ZWJLaXRDbGllbnQoKS0+aWRiRmFjdG9yeSgpKQorICAg
IDogbV93ZWJJREJGYWN0b3J5KHdlYktpdENsaWVudCgpLT5pZGJGYWN0b3J5KCkpCiB7CiB9CiAK
QEAgLTYxLDEwICs2MywxMCBAQCBJREJGYWN0b3J5QmFja2VuZFByb3h5Ojp+SURCRmFjdG9yeUJh
Y2tlbmRQcm94eSgpCiAKIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiwgRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRh
dGFEaXIsIGludDY0X3QgbWF4aW11bVNpemUsIEJhY2tpbmdTdG9yZVR5cGUgYmFja2luZ1N0b3Jl
VHlwZSkKIHsKLSAgICBXZWJLaXQ6OldlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYktpdDo6V2ViRnJh
bWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpOwotICAgIG1fd2ViSURCRmFjdG9yeS0+b3BlbihuYW1l
LCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBvcmlnaW4sIHdlYkZyYW1lLCBk
YXRhRGlyLCBtYXhpbXVtU2l6ZSwgc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJJREJGYWN0b3J5OjpC
YWNraW5nU3RvcmVUeXBlPihiYWNraW5nU3RvcmVUeXBlKSk7CisgICAgV2ViRnJhbWUqIHdlYkZy
YW1lID0gV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpOworICAgIG1fd2ViSURCRmFjdG9y
eS0+b3BlbihuYW1lLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBvcmlnaW4s
IHdlYkZyYW1lLCBkYXRhRGlyLCBtYXhpbXVtU2l6ZSwgc3RhdGljX2Nhc3Q8V2ViSURCRmFjdG9y
eTo6QmFja2luZ1N0b3JlVHlwZT4oYmFja2luZ1N0b3JlVHlwZSkpOwogfQogCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCRmFjdG9yeUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RmFjdG9yeUJhY2tlbmRQcm94eS5oCmluZGV4IDU5MzA1MWU1YmMzYzc4ZWJiZmYzMDY3NDI0ZDFi
ODIyNzVmNWE4OWEuLjg5ZWQzNTUyZGRhZmRhM2JmZDMyZTE1ZTNmYjc0ZDc1OWMxZDY1MzIgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksMzIgKzI5LDMyIEBACiAjaWZuZGVmIElEQkZhY3RvcnlCYWNrZW5kUHJveHlfaAogI2Rl
ZmluZSBJREJGYWN0b3J5QmFja2VuZFByb3h5X2gKIAotI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNr
ZW5kSW50ZXJmYWNlLmgiCi0KICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotbmFtZXNw
YWNlIFdlYktpdCB7IGNsYXNzIFdlYklEQkZhY3Rvcnk7IH0KKyNpbmNsdWRlICJJREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIERPTVN0cmlu
Z0xpc3Q7IH0KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNs
YXNzIERPTVN0cmluZ0xpc3Q7CitjbGFzcyBXZWJJREJGYWN0b3J5OwogCi1jbGFzcyBJREJGYWN0
b3J5QmFja2VuZFByb3h5IDogcHVibGljIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlIHsKK2Ns
YXNzIElEQkZhY3RvcnlCYWNrZW5kUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6SURCRmFjdG9yeUJh
Y2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+
SURCRmFjdG9yeUJhY2tlbmRQcm94eSgpOwogCi0gICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0
PiBkYXRhYmFzZXModm9pZCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+LCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6
ZSwgQmFja2luZ1N0b3JlVHlwZSk7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdM
aXN0PiBkYXRhYmFzZXModm9pZCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmlu
ZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSk7CiAKIHBy
aXZhdGU6CiAgICAgSURCRmFjdG9yeUJhY2tlbmRQcm94eSgpOwogCiAgICAgLy8gV2UgZG9uJ3Qg
b3duIHRoaXMgcG9pbnRlciAodW5saWtlIGFsbCB0aGUgb3RoZXIgcHJveHkgY2xhc3NlcyB3aGlj
aCBkbykuCi0gICAgV2ViS2l0OjpXZWJJREJGYWN0b3J5KiBtX3dlYklEQkZhY3Rvcnk7CisgICAg
V2ViSURCRmFjdG9yeSogbV93ZWJJREJGYWN0b3J5OwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5jcHAKaW5kZXggNDEwNzUw
ZTA4NjdkMzZlMDQxNWFlNjcxNGNiZDA4YzQ5YjhkYzFiMS4uNTU2YzliNmM0YjlhZTJmNGZiMTVj
NjE3YTU3ZGFmZGZlMjVkYzVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCSW5kZXhCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywxNCArMzcsMTYgQEAKICNpbmNsdWRlICJXZWJJ
REJLZXkuaCIKICNpbmNsdWRlICJXZWJJREJLZXlSYW5nZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IElEQkluZGV4QmFja2VuZFByb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJL
aXQ6OldlYklEQkluZGV4PiBpbmRleCkKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRy
PElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCSW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZShQ
YXNzT3duUHRyPFdlYklEQkluZGV4PiBpbmRleCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IElEQkluZGV4QmFja2VuZFByb3h5KGluZGV4KSk7CiB9CiAKLUlEQkluZGV4QmFja2VuZFByb3h5
OjpJREJJbmRleEJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCSW5kZXg+IGlu
ZGV4KQorSURCSW5kZXhCYWNrZW5kUHJveHk6OklEQkluZGV4QmFja2VuZFByb3h5KFBhc3NPd25Q
dHI8V2ViSURCSW5kZXg+IGluZGV4KQogICAgIDogbV93ZWJJREJJbmRleChpbmRleCkKIHsKIH0K
QEAgLTEwNSw2ICsxMDcsNiBAQCB2b2lkIElEQkluZGV4QmFja2VuZFByb3h5OjpnZXRLZXkoUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFjawogICAgIG1fd2ViSURC
SW5kZXgtPmdldEtleShrZXksIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0
cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7CiB9CiAKLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJJbmRleEJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCSW5kZXhCYWNrZW5kUHJveHkuaAppbmRleCBlOWRlMDVhZTI0ZmQwOTgyNWU2MGU0OTQ4ZTcz
YjI0MWI5ZGE1Y2EzLi5iNjM2NDBmYWM0ODE5N2NmYmIzZDNlZGJkMmM2NzE4MjRkMmE3YTZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRleEJhY2tlbmRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjYsMTkgKzI2LDE5IEBACiAjaWZuZGVmIElEQkluZGV4QmFja2VuZFByb3h5X2gKICNkZWZpbmUg
SURCSW5kZXhCYWNrZW5kUHJveHlfaAogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisK
ICNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAotI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQotCi1uYW1lc3BhY2UgV2ViS2l0IHsgY2xhc3MgV2ViSURCSW5kZXg7IH0KK25h
bWVzcGFjZSBXZWJLaXQgewogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBXZWJJREJJbmRl
eDsKIAotY2xhc3MgSURCSW5kZXhCYWNrZW5kUHJveHkgOiBwdWJsaWMgSURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlIHsKK2NsYXNzIElEQkluZGV4QmFja2VuZFByb3h5IDogcHVibGljIFdlYkNvcmU6
OklEQkluZGV4QmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6Oldl
YklEQkluZGV4Pik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJm
YWNlPiBjcmVhdGUoUGFzc093blB0cjxXZWJJREJJbmRleD4pOwogICAgIHZpcnR1YWwgfklEQklu
ZGV4QmFja2VuZFByb3h5KCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCk7CkBAIC00Niwx
OCArNDYsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKTsKICAgICB2
aXJ0dWFsIGJvb2wgdW5pcXVlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4sIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgdmlydHVhbCB2b2lkIGdldEtleShQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8V2ViQ29yZTo6
SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBvcGVuS2V5Q3Vy
c29yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAg
IHZpcnR1YWwgdm9pZCBnZXQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
S2V5KFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJD
YWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6Ci0gICAgSURCSW5kZXhCYWNrZW5kUHJv
eHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkluZGV4Pik7CisgICAgSURCSW5kZXhCYWNrZW5k
UHJveHkoUGFzc093blB0cjxXZWJJREJJbmRleD4pOwogCi0gICAgT3duUHRyPFdlYktpdDo6V2Vi
SURCSW5kZXg+IG1fd2ViSURCSW5kZXg7CisgICAgT3duUHRyPFdlYklEQkluZGV4PiBtX3dlYklE
QkluZGV4OwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjBlZTMyODhiOTAxMWRl
M2Q5NDJjNzA4YmE5NDIyZGZkZTFiNDI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaApAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eV9oCisjZGVmaW5l
IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5X2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYklE
Qk9iamVjdFN0b3JlOworCitjbGFzcyBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eSA6IHB1Ymxp
YyBXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViSURCT2JqZWN0U3RvcmU+KTsKKyAgICB2aXJ0dWFsIH5J
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eSgpOworCisgICAgdmlydHVhbCBTdHJpbmcgbmFtZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RE9NU3RyaW5nTGlzdD4gaW5kZXhOYW1lcygpIGNvbnN0Owor
CisgICAgdmlydHVhbCB2b2lkIGdldChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBwdXQoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQktleT4sIFB1dE1vZGUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2Fs
bGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tz
PiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBjbGVhcihQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEludGVyZmFjZT4gaW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBkZWxldGVJbmRleChj
b25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKworICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vy
c29yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5UmFuZ2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworCitw
cml2YXRlOgorICAgIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5KFBhc3NPd25QdHI8V2ViSURC
T2JqZWN0U3RvcmU+KTsKKworICAgIE93blB0cjxXZWJJREJPYmplY3RTdG9yZT4gbV93ZWJJREJP
YmplY3RTdG9yZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKKworI2Vu
ZGlmIC8vIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggYTZlMzc0ODMwOTI3YzIzOTRhNDk1NDhhZDViNmRjMGJmOWU3YzM0NS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJREJPYmplY3RTdG9yZVByb3h5X2gKLSNkZWZpbmUgSURC
T2JqZWN0U3RvcmVQcm94eV9oCi0KLSNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2UuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi0jaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCi0KLW5hbWVzcGFjZSBXZWJLaXQgeyBjbGFzcyBXZWJJREJPYmplY3RTdG9yZTsg
fQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIElEQk9iamVjdFN0b3JlUHJveHkgOiBw
dWJsaWMgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZShQYXNz
T3duUHRyPFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU+KTsKLSAgICB2aXJ0dWFsIH5JREJPYmpl
Y3RTdG9yZVByb3h5KCk7Ci0KLSAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxE
T01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lk
IHB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5
PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1
bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVh
bCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgUGFzc1JlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgdmlydHVhbCB2b2lkIG9wZW5DdXJz
b3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBF
eGNlcHRpb25Db2RlJik7Ci0KLXByaXZhdGU6Ci0gICAgSURCT2JqZWN0U3RvcmVQcm94eShQYXNz
T3duUHRyPFdlYktpdDo6V2ViSURCT2JqZWN0U3RvcmU+KTsKLQotICAgIE93blB0cjxXZWJLaXQ6
OldlYklEQk9iamVjdFN0b3JlPiBtX3dlYklEQk9iamVjdFN0b3JlOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIElEQk9iamVjdFN0b3JlUHJveHlf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rp
b25CYWNrZW5kUHJveHkuY3BwCmluZGV4IDk1YzkwZDU5ODY4ZDc3MWU0MWU0MjJkYjJjMzE5Yzg2
NWMxMjc0ZmMuLjZkOTFmNDg3ZTI5NjgxYTgyOTU4ZDVhYTlkODVhNzZiNjM2MzlmMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsMjEgKzI4LDIzIEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIAotI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlUHJveHkuaCIKKyNpbmNsdWRlICJJREJPYmpl
Y3RTdG9yZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
LmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgIldlYklEQk9i
amVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJX
ZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y3JlYXRlKFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24pCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJJREJUcmFuc2FjdGlv
bj4gdHJhbnNhY3Rpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlv
bkJhY2tlbmRQcm94eSh0cmFuc2FjdGlvbikpOwogfQogCi1JREJUcmFuc2FjdGlvbkJhY2tlbmRQ
cm94eTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklE
QlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbikKK0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uPiB0
cmFuc2FjdGlvbikKICAgICA6IG1fd2ViSURCVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKG1fd2ViSURCVHJhbnNhY3Rpb24pOwpAQCAtNTQsMTAgKzU2LDEwIEBAIElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5Ojp+SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkoKQogCiBQ
YXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gSURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHk6Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgV2ViS2l0OjpXZWJJREJPYmplY3RTdG9yZSogb2JqZWN0U3RvcmUgPSBt
X3dlYklEQlRyYW5zYWN0aW9uLT5vYmplY3RTdG9yZShuYW1lLCBlYyk7CisgICAgV2ViSURCT2Jq
ZWN0U3RvcmUqIG9iamVjdFN0b3JlID0gbV93ZWJJREJUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmUo
bmFtZSwgZWMpOwogICAgIGlmICghb2JqZWN0U3RvcmUpCiAgICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiBJREJPYmplY3RTdG9yZVByb3h5OjpjcmVhdGUob2JqZWN0U3RvcmUpOworICAgIHJl
dHVybiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3JlYXRlKG9iamVjdFN0b3JlKTsKIH0K
IAogdW5zaWduZWQgc2hvcnQgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6Om1vZGUoKSBjb25z
dApAQCAtODgsNiArOTAsNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpzZXRD
YWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqIGNhbGxiYWNrcwogICAgIG1fd2ViSURC
VHJhbnNhY3Rpb24tPnNldENhbGxiYWNrcyhuZXcgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJ
bXBsKGNhbGxiYWNrcykpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFBy
b3h5LmgKaW5kZXggOTZkNzI5MzI4YzgxZmVlYTdiNjY4MGMyZGM0Nzk0YmM3OTY2Zjc5OC4uMTAz
ZjU1MjNjNTQ2NjYzYmU4MmRhNzEwZWRiMDA2OWY2OTM2NWNkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDM4
ICsyNiwzNyBAQAogI2lmbmRlZiBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eV9oCiAjZGVmaW5l
IElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5X2gKIAotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZS5oIgotCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNp
bmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAotbmFtZXNwYWNlIFdlYktp
dCB7IGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOyB9CituYW1lc3BhY2UgV2ViS2l0IHsKIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAKLWNsYXNzIElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5IDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSB7CitjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSA6IHB1YmxpYyBXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlKFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViSURCVHJh
bnNhY3Rpb24+KTsKICAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSgpOwog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4g
b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBtb2RlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIGFib3J0KCk7Ci0gICAgdmlydHVhbCBib29sIHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2s+KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIFBhc3NPd25QdHI8V2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21wbGV0ZVRhc2tFdmVudHMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKElEQlRy
YW5zYWN0aW9uQ2FsbGJhY2tzKik7CisgICAgdmlydHVhbCB2b2lkIHNldENhbGxiYWNrcyhXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyopOwogCi0gICAgV2ViS2l0OjpXZWJJREJUcmFu
c2FjdGlvbiogZ2V0V2ViSURCVHJhbnNhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3dlYklEQlRy
YW5zYWN0aW9uLmdldCgpOyB9CisgICAgV2ViSURCVHJhbnNhY3Rpb24qIGdldFdlYklEQlRyYW5z
YWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV93ZWJJREJUcmFuc2FjdGlvbi5nZXQoKTsgfQogCiBw
cml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KFBhc3NPd25QdHI8V2ViS2l0
OjpXZWJJREJUcmFuc2FjdGlvbj4pOworICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KFBh
c3NPd25QdHI8V2ViSURCVHJhbnNhY3Rpb24+KTsKIAotICAgIE93blB0cjxXZWJLaXQ6OldlYklE
QlRyYW5zYWN0aW9uPiBtX3dlYklEQlRyYW5zYWN0aW9uOworICAgIE93blB0cjxXZWJJREJUcmFu
c2FjdGlvbj4gbV93ZWJJREJUcmFuc2FjdGlvbjsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmNw
cAppbmRleCBlYmRhMWRkNDM0MWJiMDhlZGQzMWE2Zjc1ZmM4M2U1ODg1MjFkZWViLi44M2Q3ZTNh
MWQ2NTViMDQ0YjVlMjI5ZGQ4YTE2MGI5MGI4MTExMTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OSwxOCArMjksMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJUcmFuc2Fj
dGlvbkNhbGxiYWNrc1Byb3h5LmgiCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwog
I2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCiAKLSNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkNh
bGxiYWNrc1Byb3h5PiBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoUGFzc093
blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBjYWxsYmFja3MpCitQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk+IElEQlRyYW5zYWN0aW9uQ2FsbGJh
Y2tzUHJveHk6OmNyZWF0ZShQYXNzT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkNhbGxi
YWNrc1Byb3h5KGNhbGxiYWNrcykpOwogfQogCi1JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5
OjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJU
cmFuc2FjdGlvbkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQ
cm94eTo6SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3Mp
CiB7CiB9CkBAIC01OSw2ICs2MSw2IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94
eTo6b25Db21wbGV0ZSgpCiAgICAgbV9jYWxsYmFja3MtPm9uQ29tcGxldGUoKTsKIH0KIAotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkuaAppbmRleCA3OWMzMmY2OTZj
OGNkMDMwMTk5NzE5NWQ1MzBhNzQ2M2U1NGUxMGY3Li4wNDRlZWNmNzFmMTQxYzI5Y2Q3YjI3N2Rl
NDVjZDViNDllNGFiNzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDMzICsyOSwzMiBAQAogI2lmbmRl
ZiBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5X2gKICNkZWZpbmUgSURCVHJhbnNhY3Rpb25D
YWxsYmFja3NQcm94eV9oCiAKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgot
CiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYklEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzOyB9CituYW1lc3BhY2UgV2ViS2l0IHsKIAotbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3M7CiAKLWNsYXNzIElEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzUHJveHkgOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25DYWxsYmFja3MgeworY2xh
c3MgSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25DYWxsYmFja3NQcm94eT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJU
cmFuc2FjdGlvbkNhbGxiYWNrcz4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQ2FsbGJhY2tzUHJveHk+IGNyZWF0ZShQYXNzT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzPik7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eSgpOwog
CiAgICAgdmlydHVhbCB2b2lkIG9uQWJvcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0
ZSgpOwogCiBwcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkoUGFzc093
blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPik7CisgICAgSURCVHJhbnNh
Y3Rpb25DYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
Pik7CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gbV9j
YWxsYmFja3M7CisgICAgT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBtX2NhbGxi
YWNrczsKIH07CiAKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IGNlMzA3YTQ1NGM1YThhOTNjNDIyZDRmMTA5MDJiOTRk
ZTU4NTQ5MjkuLjI0ZDNmNmNjOWU2MDA1ZmQ5MzUzMmM5ZjNjOTc2YzE0YzZhMzQ1NzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2
LDEwICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxi
YWNrc0ltcGwuaCIKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCiAjaW5jbHVkZSAi
SURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZFByb3h5LmgiCisjaW5j
bHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kUHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVy
cm9yLmgiCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VQcm94eS5oIgogI2luY2x1ZGUgIklEQktleS5o
IgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
SURCQ2FsbGJhY2tzLmgiCkBAIC0zOSw5ICs0MSw5IEBACiAjaW5jbHVkZSAiV2ViSURCVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAotI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJJREJDYWxsYmFja3NJbXBs
OjpXZWJJREJDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CiAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCkBAIC01MiwzMiArNTQsMzIgQEAgV2ViSURC
Q2FsbGJhY2tzSW1wbDo6fldlYklEQkNhbGxiYWNrc0ltcGwoKQogewogfQogCi12b2lkIFdlYklE
QkNhbGxiYWNrc0ltcGw6Om9uRXJyb3IoY29uc3QgV2ViS2l0OjpXZWJJREJEYXRhYmFzZUVycm9y
JiBlcnJvcikKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25FcnJvcihjb25zdCBXZWJJREJE
YXRhYmFzZUVycm9yJiBlcnJvcikKIHsKICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7
CiB9CiAKLXZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYktpdDo6V2ViSURC
Q3Vyc29yKiBjdXJzb3IpCit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhXZWJJ
REJDdXJzb3IqIGN1cnNvcikKIHsKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQkN1cnNv
ckJhY2tlbmRQcm94eTo6Y3JlYXRlKGN1cnNvcikpOwogfQogCi12b2lkIFdlYklEQkNhbGxiYWNr
c0ltcGw6Om9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQkRhdGFiYXNlKiB3ZWJLaXRJbnN0YW5jZSkK
K3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQkRhdGFiYXNlKiB3ZWJL
aXRJbnN0YW5jZSkKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQkRhdGFiYXNlUHJv
eHk6OmNyZWF0ZSh3ZWJLaXRJbnN0YW5jZSkpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0ZSh3ZWJLaXRJbnN0YW5jZSkpOwogfQogCi12
b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJLaXQ6OldlYklEQktl
eSYga2V5KQordm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViSURC
S2V5JiBrZXkpCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhrZXkpOwogfQogCi12b2lk
IFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9u
KiB3ZWJLaXRJbnN0YW5jZSkKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdl
YklEQlRyYW5zYWN0aW9uKiB3ZWJLaXRJbnN0YW5jZSkKIHsKICAgICBtX2NhbGxiYWNrcy0+b25T
dWNjZXNzKElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVhdGUod2ViS2l0SW5zdGFuY2Up
KTsKIH0KIAotdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViS2l0
OjpXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKK3ZvaWQg
V2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nl
c3Moc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKIH0KQEAgLTg3LDYgKzg5LDYgQEAgdm9pZCBXZWJJ
REJDYWxsYmFja3NJbXBsOjpvbkJsb2NrZWQoKQogICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQo
KTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaAppbmRleCAwNTdhYTI1MWJlY2EwMjE5
ODhiNDM0YmRiY2JhYTBiNmM0MmI3NjI4Li5jNDg2NjAxMmRiYzkwOTIwYjYzNjc1OGQyOGFlYjFh
YWMzMWRiZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2Fs
bGJhY2tzSW1wbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI2LDM1ICsyNiwzNSBAQAogI2lmbmRlZiBXZWJJREJDYWxsYmFja3NJbXBsX2gK
ICNkZWZpbmUgV2ViSURCQ2FsbGJhY2tzSW1wbF9oCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKwogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi0jaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xh
c3MgSURCQ2FsbGJhY2tzOyB9CiAKLWNsYXNzIElEQkNhbGxiYWNrczsKK25hbWVzcGFjZSBXZWJL
aXQgewogCi1jbGFzcyBXZWJJREJDYWxsYmFja3NJbXBsIDogcHVibGljIFdlYktpdDo6V2ViSURC
Q2FsbGJhY2tzIHsKK2NsYXNzIFdlYklEQkNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgV2ViSURCQ2Fs
bGJhY2tzIHsKIHB1YmxpYzoKLSAgICBXZWJJREJDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPik7CisgICAgV2ViSURCQ2FsbGJhY2tzSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgfldlYklEQkNhbGxiYWNrc0ltcGwoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKGNvbnN0IFdlYktpdDo6V2ViSURCRGF0YWJhc2VFcnJv
ciYpOwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViS2l0OjpXZWJJREJDdXJzb3IqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYktpdDo6V2ViSURCRGF0YWJhc2UqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYktpdDo6V2ViSURCS2V5Jik7Ci0gICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uKik7Ci0gICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYpOworICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKGNvbnN0IFdlYklEQkRhdGFiYXNlRXJy
b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklEQkN1cnNvciopOworICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCRGF0YWJhc2UqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKGNvbnN0IFdlYklEQktleSYpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
V2ViSURCVHJhbnNhY3Rpb24qKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsK
IAogcHJpdmF0ZToKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYKKyNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2VuZGlmIC8vIFdlYklEQkNhbGxiYWNrc0lt
cGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29y
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNw
cAppbmRleCA4NmM0ZjU3YjA3MGQwODBlYjBkYjQ2NDk5NzNiMjFhOGM5YjQwNzcxLi42YzAwMTJl
MDk5YWQ3NjdkOGYyMzc2NjI3NjdlOTRkNzUyMjliYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSURCQ3Vyc29ySW1wbC5oIgogCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisKICNpbmNsdWRlICJJREJBbnkuaCIKICNpbmNsdWRlICJJREJDYWxs
YmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKQEAg
LTgwLDQgKzgyLDYgQEAgdm9pZCBXZWJJREJDdXJzb3JJbXBsOjpkZWxldGVGdW5jdGlvbihXZWJJ
REJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ28KICAgICBtX2lkYkN1cnNvckJh
Y2tlbmQtPmRlbGV0ZUZ1bmN0aW9uKElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tz
KSwgZWMpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oCmluZGV4IGRlMTdhOTlhNTczYjA2M2Rl
MWFlNDE3ZjU5MGU2YjlhMjMwNWM4MWUuLmMyMzc5MjA3M2NjZDI0YTRmMzA0ODYzZWQ1MzM5MjZh
ZTBkZGQ2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1
cnNvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJ
bXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBXZWJJREJDdXJzb3JJbXBsX2gKICNkZWZpbmUgV2Vi
SURCQ3Vyc29ySW1wbF9oCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJXZWJJREJDdXJzb3IuaCIKQEAgLTU2LDQgKzU4LDYgQEAgcHVibGljOgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAorI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCiAjZW5k
aWYgLy8gV2ViSURCQ3Vyc29ySW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcAppbmRleCAzY2EwMjc0
NWZhMzZiNjFhMWI1YmI0NmY4ZjFjNjMyNWZlYjdiMDcxLi4wZmVjODRhZjUzODMzYmI1ZTExODgz
YWQxZDA3ZjFmNTcyOTE4N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTMxLDcgKzMxLDkg
QEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6V2ViSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNh
bGxiYWNrcykKICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKQEAgLTQyLDExICs0NCwxMSBA
QCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6On5XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0lt
cGwoKQogewogfQogCi12b2lkIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9u
Q2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB2ZXJzaW9uKQordm9pZCBXZWJJREJEYXRh
YmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJTdHJpbmcmIHZlcnNp
b24pCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsKIH0KIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKaW5kZXggYmEzZGM1ZWNi
YTJjM2U2MDk1NjNlOTM1YWI2NDQwYTkxZTEzZmMzOS4uZDQ5MTZhZjY1MzhjODQ3NDQ3NGY5ZTIw
ZjhiY2VmYzhmYjg5ZjAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKQEAgLTM0LDIzICszNCwyMyBAQAog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQkRhdGFiYXNl
Q2FsbGJhY2tzOyB9CiAKLWNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOworbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWNsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCA6IHB1YmxpYyBXZWJL
aXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKK2NsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbCA6IHB1YmxpYyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAg
V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+KTsKKyAgICBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJEYXRhYmFzZUNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYgdmVyc2lvbik7CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNo
YW5nZShjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24pOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgUmVmUHRyPFdlYkNvcmU6OklE
QkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAogI2VuZGlmIC8vIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlRXJy
b3IuY3BwCmluZGV4IDc0MTNhZTZhYzhlODNlZDRlNjYwNmQ4YzQ4ZmY4MWQ0ZGQ5NWFjZjguLjI1
ZTIwMmMyMTk2ZjE4ODJjNmNhMTBlMDNlYjNmYTdhNTNmMWM3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlRXJyb3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlRXJyb3IuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMSwxMSArMzEs
MTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9y
LmgiCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIklEQkRhdGFi
YXNlRXJyb3IuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKIAotI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFz
ZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBs
LmNwcAppbmRleCAyYTk3OTIzMzg5YTQxZWQ4Y2QzNmIyYTdlYzg0OTc2ZjczZmQ1N2E5Li45MmRk
NWFkMzdiNWZjYzBmNjg3ZWVmY2VmNjYwYmY5OWRjMzIzNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgogCisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAj
aW5jbHVkZSAiSURCQ2FsbGJhY2tzUHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2UuaCIKQEAgLTM2LDggKzM4LDYgQEAKICNpbmNsdWRlICJXZWJJREJPYmplY3RT
dG9yZUltcGwuaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbkltcGwuaCIKIAotI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0xMTIsNiArMTEyLDYgQEAgdm9pZCBXZWJJREJEYXRhYmFzZUlt
cGw6Om9wZW4oV2ViSURCRGF0YWJhc2VDYWxsYmFja3MqIGNhbGxiYWNrcykKICAgICBtX2RhdGFi
YXNlQmFja2VuZC0+b3BlbihtX2RhdGFiYXNlQ2FsbGJhY2tzKTsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0
YWJhc2VJbXBsLmgKaW5kZXggMGUxZDAzZWUxMWVmMzQzM2Q0NjI0N2VlM2ZjNmVhNjA5NDUwOGVl
OS4uMDYxZjVjMjA4MDQ3MzE3ODgxNjlhMzkwNjY1NzA3MzMxYTdhZDgyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTkgKzI2LDE5IEBA
CiAjaWZuZGVmIFdlYklEQkRhdGFiYXNlSW1wbF9oCiAjZGVmaW5lIFdlYklEQkRhdGFiYXNlSW1w
bF9oCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJXZWJJREJEYXRh
YmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U7Ci1jbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OwotfQorbmFtZXNwYWNlIFdl
YkNvcmUgeyBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U7IH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk7CiBjbGFzcyBXZWJJ
REJEYXRhYmFzZUNhbGxiYWNrczsKIGNsYXNzIFdlYklEQk9iamVjdFN0b3JlOwogY2xhc3MgV2Vi
SURCVHJhbnNhY3Rpb247CkBAIC02Myw5ICs2MywxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2Rh
dGFiYXNlQmFja2VuZDsKLSAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxi
YWNrc1Byb3h5PiBtX2RhdGFiYXNlQ2FsbGJhY2tzOworICAgIFdURjo6UmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzUHJveHk+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYklEQkRhdGFiYXNlSW1wbF9oCisKKyNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAppbmRleCAzZTIxYWY1Njg5Y2NhODA3ZjIyYTYzMGUw
OTM0MzRhMmU1Y2U4NDM0Li43OTM2OThlNTk4N2MxN2E3OWFjY2IyMTlkOTYwODdmMDc4ZWEzM2Nm
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSURC
RmFjdG9yeUltcGwuaCIKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCiAjaW5jbHVk
ZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrc1Byb3h5LmgiCiAjaW5j
bHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCkBAIC0zOCw4ICs0MCw2IEBACiAjaW5jbHVk
ZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAotI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MCw3ICs1MCw3IEBAIFdlYklEQkZhY3RvcnkqIFdlYklE
QkZhY3Rvcnk6OmNyZWF0ZSgpCiB9CiAKIFdlYklEQkZhY3RvcnlJbXBsOjpXZWJJREJGYWN0b3J5
SW1wbCgpCi0gICAgOiBtX2lkYkZhY3RvcnlCYWNrZW5kKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNr
ZW5kSW1wbDo6Y3JlYXRlKCkpCisgICAgOiBtX2lkYkZhY3RvcnlCYWNrZW5kKElEQkZhY3RvcnlC
YWNrZW5kSW1wbDo6Y3JlYXRlKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCmluZGV4IDBmZmQyODk1MDY4ZTI1YmUxMGVmZWYwNGEw
ZmFhMGFlN2Y0N2I2YjQuLjYyYmQ5ZWQ5Mjc4Y2JhNDM2ZmUzNDcxYTJhNDBjNzI1M2VmYjA0M2Mg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2
ICsyOSw4IEBACiAjaWZuZGVmIFdlYklEQkZhY3RvcnlJbXBsX2gKICNkZWZpbmUgV2ViSURCRmFj
dG9yeUltcGxfaAogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKICNpbmNsdWRlICJX
ZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTUwLDQgKzUyLDYgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2VuZGlm
IC8vIFdlYklEQkZhY3RvcnlJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJJbmRleEltcGwuY3BwCmluZGV4IDZlOGUxZjI0NDgzOTAzYWNhOTgyNTg4NTJiYjJlNTdi
OTQ1ZWVhYzguLmZhMzNkYTk1M2E4MDYyMzYxNWRkYzExY2ZiMDRmZDY0YzI2ZDNiMTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSURCSW5kZXhJbXBsLmgiCiAK
KyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIklEQkNhbGxiYWNrc1By
b3h5LmgiCiAjaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgpA
QCAtMzMsOCArMzUsNiBAQAogI2luY2x1ZGUgIldlYklEQktleS5oIgogI2luY2x1ZGUgIldlYklE
QktleVJhbmdlLmgiCiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODgsNiArODgsNiBAQCB2
b2lkIFdlYklEQkluZGV4SW1wbDo6Z2V0S2V5KGNvbnN0IFdlYklEQktleSYga2V5UmFuZ2UsIFdl
YklEQkNhbGxiYWNrcyogY2FsbGJhYwogICAgIG1fYmFja2VuZC0+Z2V0S2V5KGtleVJhbmdlLCBJ
REJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcyksIHRyYW5zYWN0aW9uLmdldElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJ
bmRleEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5o
CmluZGV4IGY2OGRhN2YwNjAxOGZiNWQ3OWFkZjQ2YzFhY2M5MDA0Zjg4NGNjYTMuLmIwNDdjMmY4
NTk2ZmUxZmYwYWJiMGUzOTI0ODE3NzhiYzc3MTkwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgV2ViSURCSW5k
ZXhJbXBsX2gKICNkZWZpbmUgV2ViSURCSW5kZXhJbXBsX2gKIAorI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViSURCSW5k
ZXguaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNTcsNCArNTksNiBAQCBwcml2
YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorCiAjZW5kaWYgLy8gV2ViSURCSW5kZXhJbXBsX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJLZXkuY3BwCmluZGV4IGEyMDE0NmVhZDQ2OTc4YTU0MDJhNzg5N2Qx
MzVkYWE0NGFlY2M3ZTQuLmYyMDM0N2EzNjFjNWFhMDBhYWE5ZDkyZDNkNjIwODE1M2VlOGM3ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5LmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtODAsNyArODAsNyBA
QCBXZWJJREJLZXkgV2ViSURCS2V5OjpjcmVhdGVGcm9tVmFsdWVBbmRLZXlQYXRoKGNvbnN0IFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgcwogewogICAgIGlmIChzZXJpYWxpemVkU2NyaXB0VmFs
dWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBXZWJJREJLZXk6OmNyZWF0ZUludmFsaWQoKTsK
LSAgICByZXR1cm4gV2ViQ29yZTo6Y3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtl
eVBhdGgoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBpZGJLZXlQYXRoKTsKKyAgICByZXR1cm4gY3Jl
YXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoc2VyaWFsaXplZFNjcmlwdFZh
bHVlLCBpZGJLZXlQYXRoKTsKIH0KIAogV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIFdlYklEQktl
eTo6aW5qZWN0SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShjb25zdCBXZWJJREJLZXkmIGtleSwg
Y29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgV2ViSURCS2V5UGF0
aCYgcGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktl
eVBhdGguY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAK
aW5kZXggOWViMzNkNjc1NTdkMjk4YWE2MDY0YzkxOTY2Mzc2MzkyYjUxYTUyZS4uMzA5YzBkOTFh
YTg1YjdjNTdkNmEyYzg4ZGNhMTE2ZDcyZjQxYWYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYklEQktleVBhdGg6
OnJlc2V0KCkKICAgICBtX3ByaXZhdGUucmVzZXQoMCk7CiB9CiAKLVdlYklEQktleVBhdGg6Om9w
ZXJhdG9yIGNvbnN0IFdURjo6VmVjdG9yPFdlYkNvcmU6OklEQktleVBhdGhFbGVtZW50LCAwPiYo
KSBjb25zdAorV2ViSURCS2V5UGF0aDo6b3BlcmF0b3IgY29uc3QgV1RGOjpWZWN0b3I8SURCS2V5
UGF0aEVsZW1lbnQsIDA+JigpIGNvbnN0CiB7CiAgICAgcmV0dXJuICptX3ByaXZhdGUuZ2V0KCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlSYW5n
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlSYW5nZS5jcHAKaW5k
ZXggNTE3ZmYwMDY5MDhmNjhhNWQ1MThiNDQ1NmIzYzQzMzJiY2ZjZDAwYi4uZWE2NDFlOTYwNDk2
ZWE0MWUxN2NhZGFkODgzMjMyYTMxOGRhMzAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCS2V5UmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQktleVJhbmdlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjYsMTMgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJJREJLZXlSYW5nZS5oIgogCisjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCisKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgog
I2luY2x1ZGUgIldlYklEQktleS5oIgogCi11c2luZyBXZWJDb3JlOjpJREJLZXlSYW5nZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtOTMsMyAr
OTUsNSBAQCBXZWJJREJLZXlSYW5nZTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4o
KSBjb25zdAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5kZXggNTZlMzU0ZDAyZDRhZmNhZWE2ZjZiZDFkOTc3
NmZiNDM3ZDU1MTRlMC4uMGE2N2YzNjc1YjRkYjhmNjM0M2VhN2U2MGQyOGE2OTU3MDMxZDA2NiAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9y
ZUltcGwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJ
REJPYmplY3RTdG9yZUltcGwuaCIKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCiAj
aW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxiYWNrc1Byb3h5Lmgi
CiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCkBAIC0zNyw4ICszOSw2IEBA
CiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTMsNiArMTEzLDYg
QEAgdm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6Om9wZW5DdXJzb3IoY29uc3QgV2ViSURCS2V5
UmFuZ2UmIGtleVJhbmdlLCB1bnNpZ25lZAogICAgIG1fb2JqZWN0U3RvcmUtPm9wZW5DdXJzb3Io
a2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShjYWxsYmFja3Mp
LCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UoKSwgZWMpOwog
fQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAppbmRleCAzZTJkZmFiYjU5NTAyMGM1
MDc5N2FmYjlmMGFlNjViNDI2ZjU5ZjA0Li5mMTA5M2VkNWJjNTQwNGUyYjcyYTMyY2QxZTZlZDhh
ZGQ3OTEzNzdjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJP
YmplY3RTdG9yZUltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFdlYklEQk9iamVjdFN0b3JlSW1w
bF9oCiAjZGVmaW5lIFdlYklEQk9iamVjdFN0b3JlSW1wbF9oCiAKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYklEQk9i
amVjdFN0b3JlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTY0LDQgKzY2LDYg
QEAgcHVibGljOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorI2VuZGlmIC8vIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQorCiAjZW5kaWYgLy8gV2ViSURCT2JqZWN0U3RvcmVJbXBsX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2Fj
dGlvbkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IDg0ODE4MmUxNTQyN2I5OGQ0MWNjNjdjZDYyMmY0
N2Q1MTk2NjcwMTMuLjJmMTY0NzdkMjUwN2U3NTg2MDkwNmMxMTk2MDhjYjQyZDBjYTBiNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJh
bnNhY3Rpb25DYWxsYmFja3NJbXBsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw5IEBACiAKICNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbkNhbGxiYWNrcy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzSW1wbDo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25DYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICA6IG1fY2FsbGJhY2tzKGNhbGxi
YWNrcykKQEAgLTUxLDYgKzUzLDYgQEAgdm9pZCBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0lt
cGw6Om9uQ29tcGxldGUoKQogICAgIG1fY2FsbGJhY2tzLT5vbkNvbXBsZXRlKCk7CiB9CiAKLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDQxNmFj
M2M1ODVlMmVjYTIyMGUzNmRkZWEyNWU5NzgwYmQzY2Y1N2EuLjhhY2IwOTU1MGEwOWIwNjc0YjU4
YjkwYjIzNWMxY2YzNjYzNGU2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDI0ICszMiwyNCBA
QAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzOyB9CiAKLWNsYXNzIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzOworbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbCA6
IHB1YmxpYyBXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzIHsKK2NsYXNzIFdlYklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbCA6IHB1YmxpYyBXZWJJREJUcmFuc2FjdGlvbkNhbGxi
YWNrcyB7CiBwdWJsaWM6Ci0gICAgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKFBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb25DYWxsYmFja3M+KTsKKyAgICBXZWJJREJUcmFuc2FjdGlvbkNh
bGxiYWNrc0ltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4p
OwogICAgIHZpcnR1YWwgfldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbCgpOwogCiAgICAg
dmlydHVhbCB2b2lkIG9uQWJvcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0ZSgpOwog
CiBwcml2YXRlOgotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gbV9jYWxsYmFj
a3M7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBtX2NhbGxi
YWNrczsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAogCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2VuZGlm
IC8vIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNwcAppbmRleCAxZWQ2ZjRi
ZjFmNzFlNjk4Y2MyOTVhYmUwMTEwYjJkNDA5YThmYTYwLi5hZGE5ZGEwNDkwYmU1YmMxZGEzNzM5
OGY5OGI0MTIyMzBhNGM1MzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJUcmFuc2FjdGlvbkltcGwuaAppbmRleCBkMjZmYzM3ZGM1MDQ0OTE3MDQ2MWQyNzdi
NDk5MzE5NTA0ZWI1NjYzLi40ZjE5ODNlMmUyOWJiYjAyODA2NjZjODAwM2NjMDhmZWE4Yzk3YTNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlv
bkltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlv
bkltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88054</attachid>
            <date>2011-04-04 06:14:23 -0700</date>
            <delta_ts>2011-04-04 13:19:28 -0700</delta_ts>
            <desc>manual upload</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>99034</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNDUzNjM1NS4uODMzMDNkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTEgQEAKKzIwMTEtMDQtMDQgIEhhbnMgV2Vu
bmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKQorCisgICAgICAgIENsZWFuIHVwIEluZGV4ZWREQiBXZWJLaXQgQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzUwNworCisgICAgICAg
IFJlbmFtZSB0aGUgYmFja2VuZCBwcm94eSBmaWxlcyB0aGF0IGRpZG4ndCBoYXZlIEJhY2tlbmQg
aW4gdGhlaXIgbmFtZS4KKyAgICAgICAgRXZlcnl0aGluZyBpbiBXZWJLaXQgc2hvdWxkIGJlIGlu
IHRoZSBXZWJLaXQgbmFtZXNwYWNlLgorICAgICAgICBQdXQgZXZlcnl0aGluZyBiZWhpbmQgdGhl
IGZlYXR1cmUgZmxhZyBzbyB3ZSdyZSBjb25zaXN0aWVudC4KKyAgICAgICAgUHV0IHRoZSBmZWF0
dXJlIGZsYWcgI2lmIGFib3ZlIGluY2x1ZGVzLgorCisgICAgICAgIFNlY29uZCB0cnk6IGFkZGVk
IFdlYkNvcmU6OiBxdWFsaWZpZXIgdG8KKyAgICAgICAgaW5qZWN0SURCS2V5SW50b1NlcmlhbGl6
ZWRWYWx1ZSBpbiBXZWJJREJLZXkuY3BwLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAg
ICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxs
YmFja3NQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6
OklEQkNhbGxiYWNrc1Byb3h5KToKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6
Om9uRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNz
KToKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuaDoKKyAgICAgICAgKiBzcmMvSURC
Q3Vyc29yQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ3Vyc29yQmFja2Vu
ZFByb3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJREJDdXJzb3JCYWNrZW5kUHJveHk6
OklEQkN1cnNvckJhY2tlbmRQcm94eSk6CisgICAgICAgICogc3JjL0lEQkN1cnNvckJhY2tlbmRQ
cm94eS5oOgorICAgICAgICAqIHNyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjcmVhdGUpOgorICAgICAgICAo
V2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6fklEQkRhdGFiYXNl
QmFja2VuZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6
Om5hbWUpOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6dmVyc2lv
bik6CisgICAgICAgIChXZWJLaXQ6OklEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpvYmplY3RTdG9y
ZU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmNyZWF0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHk6
OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6SURCRGF0YWJhc2VCYWNrZW5k
UHJveHk6OnNldFZlcnNpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQ
cm94eTo6dHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQ
cm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6
b3Blbik6CisgICAgICAgICogc3JjL0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpJREJEYXRhYmFzZUNhbGxiYWNr
c1Byb3h5KToKKyAgICAgICAgKiBzcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oOgorICAg
ICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SURCRmFjdG9yeUJhY2tlbmRQcm94eTo6SURCRmFjdG9yeUJhY2tlbmRQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6Om9wZW4pOgorICAgICAgICAqIHNyYy9J
REJGYWN0b3J5QmFja2VuZFByb3h5Lmg6CisgICAgICAgICogc3JjL0lEQkluZGV4QmFja2VuZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCSW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OklEQkluZGV4QmFja2VuZFByb3h5OjpJREJJbmRleEJhY2tlbmRQ
cm94eSk6CisgICAgICAgICogc3JjL0lEQkluZGV4QmFja2VuZFByb3h5Lmg6CisgICAgICAgICog
c3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OklEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Ojp+SURCT2JqZWN0U3RvcmVC
YWNrZW5kUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94
eTo6bmFtZSk6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Ojpr
ZXlQYXRoKToKKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6Omlu
ZGV4TmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6
Z2V0KToKKyAgICAgICAgKFdlYktpdDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OnB1dCk6
CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpkZWxldGVGdW5j
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJ
bmRleCk6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjppbmRl
eCk6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpkZWxldGVJ
bmRleCk6CisgICAgICAgIChXZWJLaXQ6OklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpvcGVu
Q3Vyc29yKToKKyAgICAgICAgKiBzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuaDogQWRk
ZWQuCisgICAgICAgICogc3JjL0lEQk9iamVjdFN0b3JlUHJveHkuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBzcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6Om9iamVjdFN0b3Jl
KToKKyAgICAgICAgKiBzcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OmdldFdlYklEQlRyYW5zYWN0aW9u
KToKKyAgICAgICAgKiBzcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk6OklEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzUHJveHkpOgorICAgICAgICAqIHNyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1By
b3h5Lmg6CisgICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJDYWxsYmFja3NJbXBsOjpvbkVycm9yKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKToKKyAgICAgICAgKiBzcmMvV2ViSURCQ2Fs
bGJhY2tzSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJDdXJzb3JJbXBsLmNwcDoKKyAgICAg
ICAgKiBzcmMvV2ViSURCQ3Vyc29ySW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFz
ZUNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZSk6CisgICAgICAgICogc3JjL1dlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJJREJEYXRhYmFzZUVycm9yLmNwcDoK
KyAgICAgICAgKiBzcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUltcGw6OldlYklEQkZhY3RvcnlJbXBsKToK
KyAgICAgICAgKiBzcmMvV2ViSURCRmFjdG9yeUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURC
SW5kZXhJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURCSW5kZXhJbXBsLmg6CisgICAgICAg
ICogc3JjL1dlYklEQktleS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleTo6Y3JlYXRl
RnJvbVZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQktleTo6aW5qZWN0
SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZSk6CisgICAgICAgICogc3JjL1dlYklEQktleVBhdGgu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJLZXlQYXRoOjpvcGVyYXRvciBjb25zdCBXVEY6
OlZlY3RvcjxJREJLZXlQYXRoRWxlbWVudCwgMD4mKToKKyAgICAgICAgKiBzcmMvV2ViSURCS2V5
UmFuZ2UuY3BwOgorICAgICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuY3BwOgorICAg
ICAgICAqIHNyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURC
VHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURCVHJhbnNh
Y3Rpb25DYWxsYmFja3NJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1w
bC5jcHA6CisgICAgICAgICogc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oOgorCiAyMDExLTA0
LTAxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQXR0ZW1wdCB0
byBmaXggdGhlIENocm9taXVtIGJ1aWxkIHVzaW5nIHRoZSBncmVhdCBhbmQgcG93ZXJmdWwgZ2l0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDcyZGRiNDUuLjI2M2I0OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTM1OSwxNCArMzU5LDE0IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9J
REJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgnLAotICAgICAgICAgICAgICAgICdzcmMvSURCRGF0
YWJhc2VQcm94eS5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMvSURCRGF0YWJhc2VQcm94eS5o
JywKKyAgICAgICAgICAgICAgICAnc3JjL0lEQkRhdGFiYXNlQmFja2VuZFByb3h5LmNwcCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9JREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9J
REJJbmRleEJhY2tlbmRQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvSURCSW5kZXhC
YWNrZW5kUHJveHkuaCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9JREJPYmplY3RTdG9yZVByb3h5
LmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmgnLAorICAg
ICAgICAgICAgICAgICdzcmMvSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwJywKKyAgICAg
ICAgICAgICAgICAnc3JjL0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgnLAogICAgICAgICAg
ICAgICAgICdzcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCmluZGV4IDcyNzA5MmEuLmM1
MzZjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNr
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQ
cm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjksOCArMjksMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJD
YWxsYmFja3NQcm94eS5oIgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNs
dWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJy
b3IuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSURCQ2Fs
bGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ3Vyc29ySW1wbC5oIgogI2luY2x1ZGUgIldlYklE
QkRhdGFiYXNlSW1wbC5oIgpAQCAtMzksMTYgKzQxLDE2IEBACiAjaW5jbHVkZSAiV2ViSURCVHJh
bnNhY3Rpb25JbXBsLmgiCiAjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAK
LSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3NQcm94eT4gSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShQYXNzT3duUHRyPFdl
YktpdDo6V2ViSURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCitQYXNzUmVmUHRyPElEQkNhbGxiYWNr
c1Byb3h5PiBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViSURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJDYWxsYmFja3NQ
cm94eShjYWxsYmFja3MpKTsKIH0KIAotSURCQ2FsbGJhY2tzUHJveHk6OklEQkNhbGxiYWNrc1By
b3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK0lEQkNh
bGxiYWNrc1Byb3h5OjpJREJDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogewogfQpAQCAtNTks
MzIgKzYxLDMyIEBAIElEQkNhbGxiYWNrc1Byb3h5Ojp+SURCQ2FsbGJhY2tzUHJveHkoKQogCiB2
b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJv
cj4gaWRiRGF0YWJhc2VFcnJvcikKIHsKLSAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihXZWJLaXQ6
OldlYklEQkRhdGFiYXNlRXJyb3IoaWRiRGF0YWJhc2VFcnJvcikpOworICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKFdlYklEQkRhdGFiYXNlRXJyb3IoaWRiRGF0YWJhc2VFcnJvcikpOwogfQogCiB2
b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlPiBpZGJDdXJzb3JCYWNrZW5kKQogewotICAgIG1fY2FsbGJhY2tzLT5vblN1
Y2Nlc3MobmV3IFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbChpZGJDdXJzb3JCYWNrZW5kKSk7Cisg
ICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhuZXcgV2ViSURCQ3Vyc29ySW1wbChpZGJDdXJzb3JC
YWNrZW5kKSk7CiB9CiAKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKIHsKLSAgICBtX2NhbGxi
YWNrcy0+b25TdWNjZXNzKG5ldyBXZWJLaXQ6OldlYklEQkRhdGFiYXNlSW1wbChiYWNrZW5kKSk7
CisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhuZXcgV2ViSURCRGF0YWJhc2VJbXBsKGJhY2tl
bmQpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCS2V5PiBpZGJLZXkpCiB7Ci0gICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhXZWJLaXQ6Oldl
YklEQktleShpZGJLZXkpKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYklEQktleShp
ZGJLZXkpKTsKIH0KIAogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogewotICAgIG1fY2Fs
bGJhY2tzLT5vblN1Y2Nlc3MobmV3IFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb25JbXBsKGJhY2tl
bmQpKTsKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKG5ldyBXZWJJREJUcmFuc2FjdGlvbklt
cGwoYmFja2VuZCkpOwogfQogCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsK
LSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYktpdDo6V2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkpOwogfQogCiB2
b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoKQpAQCAtOTIsNiArOTQsNiBAQCB2b2lk
IElEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2NrZWQoKQogICAgIG1fY2FsbGJhY2tzLT5vbkJsb2Nr
ZWQoKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4IDY4Mjk4NDUuLmU5ZjQ1ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw0
MCArMjksMzcgQEAKICNpZm5kZWYgSURCQ2FsbGJhY2tzUHJveHlfaAogI2RlZmluZSBJREJDYWxs
YmFja3NQcm94eV9oCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUg
IklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLSNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKLQogbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJJREJDYWxs
YmFja3M7Ci19CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdlYklEQkNhbGxiYWNrczsK
IAotY2xhc3MgSURCQ2FsbGJhY2tzUHJveHkgOiBwdWJsaWMgSURCQ2FsbGJhY2tzIHsKK2NsYXNz
IElEQkNhbGxiYWNrc1Byb3h5IDogcHVibGljIFdlYkNvcmU6OklEQkNhbGxiYWNrcyB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzUHJveHk+IGNyZWF0ZShQYXNz
T3duUHRyPFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzPik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzUHJveHk+IGNyZWF0ZShQYXNzT3duUHRyPFdlYklEQkNhbGxiYWNrcz4pOwog
ICAgIHZpcnR1YWwgfklEQkNhbGxiYWNrc1Byb3h5KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb25F
cnJvcihQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4pOwotICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5Pik7Ci0gICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4pOwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4pOworICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCS2V5Pik7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOworICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAg
ICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CiAKIHByaXZhdGU6Ci0gICAgSURCQ2FsbGJhY2tz
UHJveHkoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkNhbGxiYWNrcz4pOworICAgIElEQkNhbGxi
YWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViSURCQ2FsbGJhY2tzPik7CiAKLSAgICBPd25QdHI8V2Vi
S2l0OjpXZWJJREJDYWxsYmFja3M+IG1fY2FsbGJhY2tzOworICAgIE93blB0cjxXZWJJREJDYWxs
YmFja3M+IG1fY2FsbGJhY2tzOwogfTsKIAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCmluZGV4IGIzYjllYTcuLjdkYWI2
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tl
bmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFj
a2VuZFByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNiwxNCArMzYsMTYgQEAKICNpbmNsdWRlICJXZWJJREJLZXkuaCIKICNpbmNs
dWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZT4gSURCQ3Vyc29yQmFja2VuZFByb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6
OldlYklEQkN1cnNvcj4gaWRiQ3Vyc29yKQorbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gSURCQ3Vyc29yQmFja2VuZFByb3h5OjpjcmVh
dGUoUGFzc093blB0cjxXZWJJREJDdXJzb3I+IGlkYkN1cnNvcikKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQkN1cnNvckJhY2tlbmRQcm94eShpZGJDdXJzb3IpKTsKIH0KIAotSURCQ3Vy
c29yQmFja2VuZFByb3h5OjpJREJDdXJzb3JCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJLaXQ6
OldlYklEQkN1cnNvcj4gaWRiQ3Vyc29yKQorSURCQ3Vyc29yQmFja2VuZFByb3h5OjpJREJDdXJz
b3JCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJJREJDdXJzb3I+IGlkYkN1cnNvcikKICAgICA6
IG1faWRiQ3Vyc29yKGlkYkN1cnNvcikKIHsKIH0KQEAgLTg3LDYgKzg5LDYgQEAgdm9pZCBJREJD
dXJzb3JCYWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIEUKICAgICBtX2lkYkN1cnNvci0+ZGVsZXRlRnVuY3Rpb24obmV3IFdlYklE
QkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29y
QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNr
ZW5kUHJveHkuaAppbmRleCAwYzJlMWM3Li5kNzI1MzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSwyOCArMzUsMjggQEAKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIElEQkN1cnNvckJh
Y2tlbmRQcm94eSA6IHB1YmxpYyBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlIHsKK2NsYXNzIElE
QkN1cnNvckJhY2tlbmRQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlPiBjcmVhdGUoUGFzc093blB0cjxXZWJLaXQ6OldlYklEQkN1cnNvcj4pOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGNy
ZWF0ZShQYXNzT3duUHRyPFdlYklEQkN1cnNvcj4pOwogICAgIHZpcnR1YWwgfklEQkN1cnNvckJh
Y2tlbmRQcm94eSgpOwogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24oKSBj
b25zdDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lk
IGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24o
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4ga2V5KCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQktleT4gcHJpbWFyeUtleSgpIGNvbnN0OworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKCkgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+
LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0
aW9uKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSYpOwogCiBwcml2YXRlOgotICAgIElEQkN1cnNvckJhY2tlbmRQcm94eShQYXNzT3duUHRy
PFdlYktpdDo6V2ViSURCQ3Vyc29yPik7CisgICAgSURCQ3Vyc29yQmFja2VuZFByb3h5KFBhc3NP
d25QdHI8V2ViSURCQ3Vyc29yPik7CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJJREJDdXJzb3I+
IG1faWRiQ3Vyc29yOworICAgIE93blB0cjxXZWJJREJDdXJzb3I+IG1faWRiQ3Vyc29yOwogfTsK
IAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUJh
Y2tlbmRQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U1ZWNj
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFi
YXNlQmFja2VuZFByb3h5LmNwcApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRQcm94eS5oIgorCisjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCisjaW5j
bHVkZSAiSURCQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIK
KyNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIgorI2luY2x1ZGUgIklEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5LmgiCisjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgor
I2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwu
aCIKKyNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIldlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbC5oIgorI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNs
dWRlICJXZWJJREJPYmplY3RTdG9yZS5oIgorI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFBy
b3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJJREJEYXRhYmFzZT4gZGF0YWJhc2UpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZUJhY2tlbmRQcm94eShkYXRhYmFzZSkpOwor
fQorCitJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6SURCRGF0YWJhc2VCYWNrZW5kUHJveHkoUGFz
c093blB0cjxXZWJJREJEYXRhYmFzZT4gZGF0YWJhc2UpCisgICAgOiBtX3dlYklEQkRhdGFiYXNl
KGRhdGFiYXNlKQoreworfQorCitJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6fklEQkRhdGFiYXNl
QmFja2VuZFByb3h5KCkKK3sKK30KKworU3RyaW5nIElEQkRhdGFiYXNlQmFja2VuZFByb3h5Ojpu
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+bmFtZSgpOworfQor
CitTdHJpbmcgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OnZlcnNpb24oKSBjb25zdAoreworICAg
IHJldHVybiBtX3dlYklEQkRhdGFiYXNlLT52ZXJzaW9uKCk7Cit9CisKK1Bhc3NSZWZQdHI8RE9N
U3RyaW5nTGlzdD4gSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6Om9iamVjdFN0b3JlTmFtZXMoKSBj
b25zdAoreworICAgIHJldHVybiBtX3dlYklEQkRhdGFiYXNlLT5vYmplY3RTdG9yZU5hbWVzKCk7
Cit9CisKK1Bhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRh
YmFzZUJhY2tlbmRQcm94eTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgYXV0b0luY3JlbWVudCwgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
Ly8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIg
dG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKKyAgICAvLyBhbGwgaW1wbGVt
ZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgorICAgIElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURC
VHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7CisgICAgV2ViSURCT2JqZWN0
U3RvcmUqIG9iamVjdFN0b3JlID0gbV93ZWJJREJEYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmUo
bmFtZSwga2V5UGF0aCwgYXV0b0luY3JlbWVudCwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklE
QlRyYW5zYWN0aW9uKCksIGVjKTsKKyAgICBpZiAoIW9iamVjdFN0b3JlKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmNyZWF0ZShvYmpl
Y3RTdG9yZSk7Cit9CisKK3ZvaWQgSURCRGF0YWJhc2VCYWNrZW5kUHJveHk6OmRlbGV0ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gVGhlIHRyYW5zYWN0
aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmpl
Y3QgYXMsIGluIHRoZSByZW5kZXJlciwKKyAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElE
QiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgorICAgIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kUHJveHkqPih0cmFuc2FjdGlvbik7CisgICAgbV93ZWJJREJEYXRhYmFzZS0+ZGVsZXRlT2Jq
ZWN0U3RvcmUobmFtZSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCks
IGVjKTsKK30KKwordm9pZCBJREJEYXRhYmFzZUJhY2tlbmRQcm94eTo6c2V0VmVyc2lvbihjb25z
dCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBtX3dlYklEQkRhdGFiYXNlLT5zZXRWZXJzaW9uKHZlcnNpb24s
IG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIGVjKTsKK30KKworUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZFByb3h5
Ojp0cmFuc2FjdGlvbihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBt
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBXZWJET01TdHJpbmdMaXN0IG5hbWVzKHN0
b3JlTmFtZXMpOworICAgIFdlYklEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IG1fd2ViSURC
RGF0YWJhc2UtPnRyYW5zYWN0aW9uKG5hbWVzLCBtb2RlLCBlYyk7CisgICAgaWYgKCF0cmFuc2Fj
dGlvbikgeworICAgICAgICBBU1NFUlQoZWMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg
ICAgcmV0dXJuIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVhdGUodHJhbnNhY3Rpb24p
OworfQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpjbG9zZShQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQ2FsbGJhY2tzPikKK3sKKyAgICBtX3dlYklEQkRhdGFiYXNlLT5jbG9zZSgpOwor
fQorCit2b2lkIElEQkRhdGFiYXNlQmFja2VuZFByb3h5OjpvcGVuKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzKQoreworICAgIG1fd2ViSURCRGF0YWJh
c2UtPm9wZW4obmV3IFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbChkYXRhYmFzZUNhbGxiYWNr
cykpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RGF0YWJhc2VCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRh
dGFiYXNlQmFja2VuZFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NWE1YmFmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkRhdGFiYXNlQmFja2VuZFByb3h5LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SURCRGF0YWJhc2VCYWNrZW5kUHJveHlfaAorI2RlZmluZSBJREJEYXRhYmFzZUJhY2tlbmRQcm94
eV9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJREJEYXRhYmFzZTsKKworY2xhc3MgSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZShQYXNzT3duUHRyPFdlYklEQkRhdGFiYXNlPik7Cisg
ICAgdmlydHVhbCB+SURCRGF0YWJhc2VCYWNrZW5kUHJveHkoKTsKKworICAgIHZpcnR1YWwgU3Ry
aW5nIG5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3Jl
TmFtZXMoKSBjb25zdDsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHNldFZlcnNpb24oY29uc3QgU3RyaW5nJiB2
ZXJzaW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gdHJhbnNhY3Rpb24oV2ViQ29yZTo6RE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5z
aWduZWQgc2hvcnQgbW9kZSwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwg
dm9pZCBjbG9zZShQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CisK
KyAgICB2aXJ0dWFsIHZvaWQgb3BlbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQ2Fs
bGJhY2tzPik7CisKK3ByaXZhdGU6CisgICAgSURCRGF0YWJhc2VCYWNrZW5kUHJveHkoUGFzc093
blB0cjxXZWJJREJEYXRhYmFzZT4pOworCisgICAgT3duUHRyPFdlYklEQkRhdGFiYXNlPiBtX3dl
YklEQkRhdGFiYXNlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgorCisj
ZW5kaWYgLy8gSURCRGF0YWJhc2VCYWNrZW5kUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcAppbmRleCAy
OGMxMzRmLi44MTZmYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmNwcApAQCAtMzAsMTQgKzMwLDE2IEBACiAK
ICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrc1Byb3h5PiBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoUGFzc093blB0
cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBJREJEYXRh
YmFzZUNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJJREJEYXRhYmFzZUNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2VD
YWxsYmFja3NQcm94eShjYWxsYmFja3MpKTsKIH0KIAotSURCRGF0YWJhc2VDYWxsYmFja3NQcm94
eTo6SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0
YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKK0lEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6OklE
QkRhdGFiYXNlQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxXZWJJREJEYXRhYmFzZUNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogewogfQpAQCAtNTEs
NiArNTMsNiBAQCB2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk6Om9uVmVyc2lvbkNoYW5n
ZShjb25zdCBTdHJpbmcmIHJlcXVlc3RlZFZlcnNpb24pCiAgICAgbV9jYWxsYmFja3MtPm9uVmVy
c2lvbkNoYW5nZShyZXF1ZXN0ZWRWZXJzaW9uKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
Q2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNl
Q2FsbGJhY2tzUHJveHkuaAppbmRleCA5ZmQ3YTBiLi5hZmZkY2U3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eS5oCkBA
IC0yNiwzMCArMjYsMjkgQEAKICNpZm5kZWYgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eV9oCiAj
ZGVmaW5lIElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHlfaAogCi0jaW5jbHVkZSAiSURCRGF0YWJh
c2VDYWxsYmFja3MuaCIKLQogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVk
ZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
Ci1uYW1lc3BhY2UgV2ViS2l0IHsgY2xhc3MgV2ViSURCRGF0YWJhc2VDYWxsYmFja3M7IH0KK25h
bWVzcGFjZSBXZWJLaXQgewogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBXZWJJREJEYXRh
YmFzZUNhbGxiYWNrczsKIAotY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NQcm94eSA6IHB1Ymxp
YyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7CitjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5
IDogcHVibGljIFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBjcmVhdGUoUGFzc093
blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzPik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NQcm94eT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViSURC
RGF0YWJhc2VDYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrc1By
b3h5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYg
cmVxdWVzdGVkVmVyc2lvbik7CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0YWJhc2VDYWxsYmFja3NQ
cm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCRGF0YWJhc2VDYWxsYmFja3M+KTsKKyAgICBJ
REJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViSURCRGF0YWJhc2VDYWxsYmFj
a3M+KTsKIAotICAgIE93blB0cjxXZWJLaXQ6OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2Nh
bGxiYWNrczsKKyAgICBPd25QdHI8V2ViSURCRGF0YWJhc2VDYWxsYmFja3M+IG1fY2FsbGJhY2tz
OwogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJEYXRh
YmFzZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJv
eHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmU3Mzc4Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiSURCRGF0YWJhc2VQcm94eS5oIgotCi0jaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5o
IgotI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJh
Y2tzLmgiCi0jaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVQcm94eS5oIgotI2luY2x1ZGUgIklEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5LmgiCi0jaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgot
I2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgotI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwu
aCIKLSNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgotI2luY2x1ZGUgIldlYklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbC5oIgotI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKLSNpbmNs
dWRlICJXZWJJREJPYmplY3RTdG9yZS5oIgotI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uLmgi
Ci0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1QYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VQcm94
eTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJEYXRhYmFzZT4gZGF0YWJhc2UpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZVByb3h5KGRhdGFiYXNlKSk7Ci19
Ci0KLUlEQkRhdGFiYXNlUHJveHk6OklEQkRhdGFiYXNlUHJveHkoUGFzc093blB0cjxXZWJLaXQ6
OldlYklEQkRhdGFiYXNlPiBkYXRhYmFzZSkKLSAgICA6IG1fd2ViSURCRGF0YWJhc2UoZGF0YWJh
c2UpCi17Ci19Ci0KLUlEQkRhdGFiYXNlUHJveHk6On5JREJEYXRhYmFzZVByb3h5KCkKLXsKLX0K
LQotU3RyaW5nIElEQkRhdGFiYXNlUHJveHk6Om5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBt
X3dlYklEQkRhdGFiYXNlLT5uYW1lKCk7Ci19Ci0KLVN0cmluZyBJREJEYXRhYmFzZVByb3h5Ojp2
ZXJzaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93ZWJJREJEYXRhYmFzZS0+dmVyc2lvbigp
OwotfQotCi1QYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQkRhdGFiYXNlUHJveHk6Om9iamVj
dFN0b3JlTmFtZXMoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYklEQkRhdGFiYXNlLT5vYmpl
Y3RTdG9yZU5hbWVzKCk7Ci19Ci0KLVBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlPiBJREJEYXRhYmFzZVByb3h5OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50LCBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykK
LXsKLSAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEg
cG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAotICAgIC8vIGFs
bCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9iamVjdHMuCi0g
ICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkgPSBzdGF0aWNf
Y2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsKLSAgICBXZWJL
aXQ6OldlYklEQk9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSA9IG1fd2ViSURCRGF0YWJhc2UtPmNy
ZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsICp0cmFuc2FjdGlv
blByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7Ci0gICAgaWYgKCFvYmplY3RTdG9y
ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIElEQk9iamVjdFN0b3JlUHJveHk6OmNy
ZWF0ZShvYmplY3RTdG9yZSk7Ci19Ci0KLXZvaWQgSURCRGF0YWJhc2VQcm94eTo6ZGVsZXRlT2Jq
ZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICAvLyBUaGUgdHJhbnNh
Y3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9i
amVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAotICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2Yg
SURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9iamVjdHMuCi0gICAgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkgPSBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsKLSAgICBtX3dlYklEQkRhdGFiYXNlLT5kZWxldGVP
YmplY3RTdG9yZShuYW1lLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24o
KSwgZWMpOwotfQotCi12b2lkIElEQkRhdGFiYXNlUHJveHk6OnNldFZlcnNpb24oY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcywgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgbV93ZWJJREJEYXRhYmFzZS0+c2V0VmVyc2lvbih2ZXJzaW9uLCBuZXcg
V2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7Ci19Ci0KLVBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZVByb3h5Ojp0cmFuc2FjdGlv
bihET01TdHJpbmdMaXN0KiBzdG9yZU5hbWVzLCB1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRp
b25Db2RlJiBlYykKLXsKLSAgICBXZWJLaXQ6OldlYkRPTVN0cmluZ0xpc3QgbmFtZXMoc3RvcmVO
YW1lcyk7Ci0gICAgV2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSBtX3dl
YklEQkRhdGFiYXNlLT50cmFuc2FjdGlvbihuYW1lcywgbW9kZSwgZWMpOwotICAgIGlmICghdHJh
bnNhY3Rpb24pIHsKLSAgICAgICAgQVNTRVJUKGVjKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotICAgIHJldHVybiBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6Y3JlYXRlKHRyYW5zYWN0
aW9uKTsKLX0KLQotdm9pZCBJREJEYXRhYmFzZVByb3h5OjpjbG9zZShQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPikKLXsKLSAgICBtX3dlYklEQkRhdGFiYXNlLT5jbG9zZSgpOwotfQot
Ci12b2lkIElEQkRhdGFiYXNlUHJveHk6Om9wZW4oUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gZGF0YWJhc2VDYWxsYmFja3MpCi17Ci0gICAgbV93ZWJJREJEYXRhYmFzZS0+b3Blbihu
ZXcgV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKGRhdGFiYXNlQ2FsbGJhY2tzKSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRGF0YWJhc2VQcm94eS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2U4MzQ2Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkRhdGFiYXNlUHJveHkuaAorKysgL2Rldi9udWxsCkBA
IC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIElEQkRhdGFiYXNlUHJveHlfaAotI2RlZmlu
ZSBJREJEYXRhYmFzZVByb3h5X2gKLQotI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZS5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLSNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKLQotbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYklEQkRhdGFiYXNlOyB9Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSURCRGF0YWJhc2VQcm94eSA6IHB1YmxpYyBJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0
OjpXZWJJREJEYXRhYmFzZT4pOwotICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlUHJveHkoKTsKLQot
ICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyB2ZXJz
aW9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVj
dFN0b3JlTmFtZXMoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIGF1dG9JbmNyZW1lbnQsIElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZlcnNp
b24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24o
RE9NU3RyaW5nTGlzdCogc3RvcmVOYW1lcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzPik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgb3BlbihQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzPik7Ci0KLXByaXZhdGU6Ci0gICAgSURCRGF0YWJhc2VQcm94eShQYXNzT3duUHRy
PFdlYktpdDo6V2ViSURCRGF0YWJhc2U+KTsKLQotICAgIE93blB0cjxXZWJLaXQ6OldlYklEQkRh
dGFiYXNlPiBtX3dlYklEQkRhdGFiYXNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYKLQotI2VuZGlmIC8vIElEQkRhdGFiYXNlUHJveHlfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAppbmRleCA5
ZTVjY2MwLi4xODI0ZWI4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw5ICsyOSwxMSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kUHJveHkuaCIKIAorI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQorCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgorI2luY2x1ZGUg
IklEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5o
IgotI2luY2x1ZGUgIklEQkRhdGFiYXNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwu
aCIKICNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0
YWJhc2UuaCIKQEAgLTQxLDkgKzQzLDkgQEAKICNpbmNsdWRlICJXZWJLaXRDbGllbnQuaCIKICNp
bmNsdWRlICJXZWJWZWN0b3IuaCIKIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBX
ZWJLaXQgewogCiBQYXNzUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBJREJGYWN0
b3J5QmFja2VuZFByb3h5OjpjcmVhdGUoKQogewpAQCAtNTEsNyArNTMsNyBAQCBQYXNzUmVmUHRy
PElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpjcmVh
dGUoKQogfQogCiBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpJREJGYWN0b3J5QmFja2VuZFByb3h5
KCkKLSAgICA6IG1fd2ViSURCRmFjdG9yeShXZWJLaXQ6OndlYktpdENsaWVudCgpLT5pZGJGYWN0
b3J5KCkpCisgICAgOiBtX3dlYklEQkZhY3Rvcnkod2ViS2l0Q2xpZW50KCktPmlkYkZhY3Rvcnko
KSkKIHsKIH0KIApAQCAtNjEsMTAgKzYzLDEwIEBAIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6On5J
REJGYWN0b3J5QmFja2VuZFByb3h5KCkKIAogdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5Ojpv
cGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luLCBGcmFtZSogZnJhbWUsIGNvbnN0
IFN0cmluZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSBi
YWNraW5nU3RvcmVUeXBlKQogewotICAgIFdlYktpdDo6V2ViRnJhbWUqIHdlYkZyYW1lID0gV2Vi
S2l0OjpXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSk7Ci0gICAgbV93ZWJJREJGYWN0b3J5
LT5vcGVuKG5hbWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIG9yaWdpbiwg
d2ViRnJhbWUsIGRhdGFEaXIsIG1heGltdW1TaXplLCBzdGF0aWNfY2FzdDxXZWJLaXQ6OldlYklE
QkZhY3Rvcnk6OkJhY2tpbmdTdG9yZVR5cGU+KGJhY2tpbmdTdG9yZVR5cGUpKTsKKyAgICBXZWJG
cmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSk7CisgICAgbV93
ZWJJREJGYWN0b3J5LT5vcGVuKG5hbWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNr
cyksIG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIsIG1heGltdW1TaXplLCBzdGF0aWNfY2FzdDxX
ZWJJREJGYWN0b3J5OjpCYWNraW5nU3RvcmVUeXBlPihiYWNraW5nU3RvcmVUeXBlKSk7CiB9CiAK
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmgKaW5kZXggNTkzMDUxZS4uODllZDM1NSAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOSwzMiArMjksMzIgQEAKICNpZm5kZWYgSURCRmFjdG9yeUJhY2tlbmRQcm94eV9oCiAj
ZGVmaW5lIElEQkZhY3RvcnlCYWNrZW5kUHJveHlfaAogCi0jaW5jbHVkZSAiSURCRmFjdG9yeUJh
Y2tlbmRJbnRlcmZhY2UuaCIKLQogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi1uYW1l
c3BhY2UgV2ViS2l0IHsgY2xhc3MgV2ViSURCRmFjdG9yeTsgfQorI2luY2x1ZGUgIklEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRE9NU3Ry
aW5nTGlzdDsgfQogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViS2l0IHsKIAot
Y2xhc3MgRE9NU3RyaW5nTGlzdDsKK2NsYXNzIFdlYklEQkZhY3Rvcnk7CiAKLWNsYXNzIElEQkZh
Y3RvcnlCYWNrZW5kUHJveHkgOiBwdWJsaWMgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2Ugewor
Y2xhc3MgSURCRmFjdG9yeUJhY2tlbmRQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpJREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRmFj
dG9yeUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFs
IH5JREJGYWN0b3J5QmFja2VuZFByb3h5KCk7CiAKLSAgICBQYXNzUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IGRhdGFiYXNlcyh2b2lkKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4sIEZyYW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyLCBpbnQ2NF90IG1heGltdW1T
aXplLCBCYWNraW5nU3RvcmVUeXBlKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0cmlu
Z0xpc3Q+IGRhdGFiYXNlcyh2b2lkKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4sIFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3Ry
aW5nJiBkYXRhRGlyLCBpbnQ2NF90IG1heGltdW1TaXplLCBCYWNraW5nU3RvcmVUeXBlKTsKIAog
cHJpdmF0ZToKICAgICBJREJGYWN0b3J5QmFja2VuZFByb3h5KCk7CiAKICAgICAvLyBXZSBkb24n
dCBvd24gdGhpcyBwb2ludGVyICh1bmxpa2UgYWxsIHRoZSBvdGhlciBwcm94eSBjbGFzc2VzIHdo
aWNoIGRvKS4KLSAgICBXZWJLaXQ6OldlYklEQkZhY3RvcnkqIG1fd2ViSURCRmFjdG9yeTsKKyAg
ICBXZWJJREJGYWN0b3J5KiBtX3dlYklEQkZhY3Rvcnk7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmNwcAppbmRleCA0MTA3
NTBlLi41NTZjOWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJ
bmRleEJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
SW5kZXhCYWNrZW5kUHJveHkuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDE0ICszNywxNiBAQAogI2luY2x1ZGUgIldlYklEQktleS5o
IgogI2luY2x1ZGUgIldlYklEQktleVJhbmdlLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1QYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVy
ZmFjZT4gSURCSW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2Vi
SURCSW5kZXg+IGluZGV4KQorbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJJbmRleEJhY2tlbmRQcm94eTo6Y3JlYXRlKFBhc3NPd25Q
dHI8V2ViSURCSW5kZXg+IGluZGV4KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCSW5k
ZXhCYWNrZW5kUHJveHkoaW5kZXgpKTsKIH0KIAotSURCSW5kZXhCYWNrZW5kUHJveHk6OklEQklu
ZGV4QmFja2VuZFByb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJJbmRleD4gaW5kZXgpCitJ
REJJbmRleEJhY2tlbmRQcm94eTo6SURCSW5kZXhCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJJ
REJJbmRleD4gaW5kZXgpCiAgICAgOiBtX3dlYklEQkluZGV4KGluZGV4KQogewogfQpAQCAtMTA1
LDYgKzEwNyw2IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kUHJveHk6OmdldEtleShQYXNzUmVmUHRy
PElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrCiAgICAgbV93ZWJJREJJbmRleC0+
Z2V0S2V5KGtleSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0
aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkluZGV4QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJJbmRl
eEJhY2tlbmRQcm94eS5oCmluZGV4IGU5ZGUwNWEuLmI2MzY0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkluZGV4QmFja2VuZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCSW5kZXhCYWNrZW5kUHJveHkuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxOSArMjYsMTkgQEAK
ICNpZm5kZWYgSURCSW5kZXhCYWNrZW5kUHJveHlfaAogI2RlZmluZSBJREJJbmRleEJhY2tlbmRQ
cm94eV9oCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIklEQklu
ZGV4QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLW5h
bWVzcGFjZSBXZWJLaXQgeyBjbGFzcyBXZWJJREJJbmRleDsgfQorbmFtZXNwYWNlIFdlYktpdCB7
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdlYklEQkluZGV4OwogCi1jbGFzcyBJREJJ
bmRleEJhY2tlbmRQcm94eSA6IHB1YmxpYyBJREJJbmRleEJhY2tlbmRJbnRlcmZhY2UgeworY2xh
c3MgSURCSW5kZXhCYWNrZW5kUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5k
SW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tl
bmRJbnRlcmZhY2U+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCSW5kZXg+KTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZShQYXNz
T3duUHRyPFdlYklEQkluZGV4Pik7CiAgICAgdmlydHVhbCB+SURCSW5kZXhCYWNrZW5kUHJveHko
KTsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKTsKQEAgLTQ2LDE4ICs0NiwxOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpOwogICAgIHZpcnR1YWwgYm9vbCB1bmlx
dWUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFu
Z2U+LCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+LCB1bnNpZ25l
ZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXQoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSosIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0S2V5KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7CisgICAgdmly
dHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXlSYW5nZT4sIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+
LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIG9wZW5LZXlDdXJzb3IoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJLZXlSYW5nZT4sIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIGdl
dChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2Fs
bGJhY2tzPiwgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBnZXRLZXkoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUmKTsKIAogcHJpdmF0ZToKLSAgICBJREJJbmRleEJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdl
YktpdDo6V2ViSURCSW5kZXg+KTsKKyAgICBJREJJbmRleEJhY2tlbmRQcm94eShQYXNzT3duUHRy
PFdlYklEQkluZGV4Pik7CiAKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJJREJJbmRleD4gbV93ZWJJ
REJJbmRleDsKKyAgICBPd25QdHI8V2ViSURCSW5kZXg+IG1fd2ViSURCSW5kZXg7CiB9OwogCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3JlQmFj
a2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVjdFN0b3Jl
QmFja2VuZFByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yYTBl
MDc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHkuY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgiCisK
KyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3Qu
aCIKKyNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJJREJJbmRleEJhY2tlbmRQ
cm94eS5oIgorI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rp
b25CYWNrZW5kUHJveHkuaCIKKyNpbmNsdWRlICJXZWJJREJDYWxsYmFja3NJbXBsLmgiCisjaW5j
bHVkZSAiV2ViSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJXZWJJREJJbmRleC5oIgorI2luY2x1
ZGUgIldlYklEQktleS5oIgorI2luY2x1ZGUgIldlYklEQk9iamVjdFN0b3JlLmgiCisjaW5jbHVk
ZSAiV2ViSURCVHJhbnNhY3Rpb25JbXBsLmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVj
dFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGUoUGFzc093blB0cjxXZWJJREJPYmplY3RTdG9yZT4g
b2JqZWN0U3RvcmUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJPYmplY3RTdG9yZUJh
Y2tlbmRQcm94eShvYmplY3RTdG9yZSkpOworfQorCitJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94
eTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJJREJPYmplY3RTdG9y
ZT4gb2JqZWN0U3RvcmUpCisgICAgOiBtX3dlYklEQk9iamVjdFN0b3JlKG9iamVjdFN0b3JlKQor
eworfQorCitJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6fklEQk9iamVjdFN0b3JlQmFja2Vu
ZFByb3h5KCkKK3sKK30KKworU3RyaW5nIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpuYW1l
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJJREJPYmplY3RTdG9yZS0+bmFtZSgpOworfQor
CitTdHJpbmcgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmtleVBhdGgoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3dlYklEQk9iamVjdFN0b3JlLT5rZXlQYXRoKCk7Cit9CisKK1Bhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmluZGV4TmFtZXMo
KSBjb25zdAoreworICAgIHJldHVybiBtX3dlYklEQk9iamVjdFN0b3JlLT5pbmRleE5hbWVzKCk7
Cit9CisKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmdldChQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK3sK
KyAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9p
bnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAorICAgIC8vIGFsbCBp
bXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9iamVjdHMuCisgICAg
SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkgPSBzdGF0aWNfY2Fz
dDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsKKyAgICBtX3dlYklE
Qk9iamVjdFN0b3JlLT5nZXQoa2V5LCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3Mp
LCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMpOworfQorCit2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpwdXQoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQdXRNb2RlIHB1dE1v
ZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8v
IFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRv
IGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVu
dGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFu
c2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIG1fd2ViSURCT2JqZWN0
U3RvcmUtPnB1dCh2YWx1ZSwga2V5LCBzdGF0aWNfY2FzdDxXZWJJREJPYmplY3RTdG9yZTo6UHV0
TW9kZT4ocHV0TW9kZSksIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFu
c2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7Cit9CisKK3ZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVy
IHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxl
bWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJU
cmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElE
QlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIG1fd2ViSURCT2Jq
ZWN0U3RvcmUtPmRlbGV0ZUZ1bmN0aW9uKGtleSwgbmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2Fs
bGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsK
K30KKwordm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y2xlYXIoUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0
cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gVGhlIHRyYW5zYWN0aW9u
IHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3Qg
YXMsIGluIHRoZSByZW5kZXJlciwKKyAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBp
bnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgorICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFBy
b3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5k
UHJveHkqPih0cmFuc2FjdGlvbik7CisgICAgbV93ZWJJREJPYmplY3RTdG9yZS0+Y2xlYXIobmV3
IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdl
YklEQlRyYW5zYWN0aW9uKCksIGVjKTsKK30KKworUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJ
bnRlcmZhY2U+IElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5OjpjcmVhdGVJbmRleChjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCwgYm9vbCB1bmlxdWUsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBw
b2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxs
IGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAg
ICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19j
YXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIFdlYklE
QkluZGV4KiBpbmRleCA9IG1fd2ViSURCT2JqZWN0U3RvcmUtPmNyZWF0ZUluZGV4KG5hbWUsIGtl
eVBhdGgsIHVuaXF1ZSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCks
IGVjKTsKKyAgICBpZiAoIWluZGV4KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSURC
SW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZShpbmRleCk7Cit9CisKK1Bhc3NSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6aW5kZXgoY29u
c3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBXZWJJREJJbmRleCog
aW5kZXggPSBtX3dlYklEQk9iamVjdFN0b3JlLT5pbmRleChuYW1lLCBlYyk7CisgICAgaWYgKCFp
bmRleCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIElEQkluZGV4QmFja2VuZFByb3h5
OjpjcmVhdGUoaW5kZXgpOworfQorCit2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5Ojpk
ZWxldGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIC8vIFRoZSB0cmFu
c2FjdGlvbiBwb2ludGVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkg
b2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVyZXIsCisgICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBv
ZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJveHkgb2JqZWN0cy4KKyAgICBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eSogdHJhbnNhY3Rpb25Qcm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9u
QmFja2VuZFByb3h5Kj4odHJhbnNhY3Rpb24pOworICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPmRl
bGV0ZUluZGV4KG5hbWUsICp0cmFuc2FjdGlvblByb3h5LT5nZXRXZWJJREJUcmFuc2FjdGlvbigp
LCBlYyk7Cit9CisKK3ZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHk6Om9wZW5DdXJzb3Io
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gVGhl
IHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBw
cm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKKyAgICAvLyBhbGwgaW1wbGVtZW50YXRp
b25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgorICAgIElEQlRyYW5zYWN0
aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7CisgICAgbV93ZWJJREJPYmplY3RTdG9y
ZS0+b3BlbkN1cnNvcihyYW5nZSwgZGlyZWN0aW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChj
YWxsYmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24oKSwgZWMp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9i
amVjdFN0b3JlQmFja2VuZFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MC4uY2IwZWUzMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQk9iamVjdFN0b3JlQmFja2VuZFByb3h5LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHlfaAorI2RlZmluZSBJREJPYmplY3RTdG9y
ZUJhY2tlbmRQcm94eV9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1
ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJREJPYmplY3RTdG9yZTsK
KworY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6SURC
T2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZShQYXNz
T3duUHRyPFdlYklEQk9iamVjdFN0b3JlPik7CisgICAgdmlydHVhbCB+SURCT2JqZWN0U3RvcmVC
YWNrZW5kUHJveHkoKTsKKworICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkRPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25zdDsKKworICAgIHZpcnR1YWwg
dm9pZCBnZXQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSos
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHV0KFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJLZXk+LCBQdXRNb2RlLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNv
cmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+
LCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlJik7CisKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4QmFja2VuZElu
dGVyZmFjZT4gY3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtl
eVBhdGgsIGJvb2wgdW5pcXVlLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqLCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQktleVJhbmdlPiwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSosIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKworcHJpdmF0ZToKKyAgICBJ
REJPYmplY3RTdG9yZUJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYklEQk9iamVjdFN0b3JlPik7
CisKKyAgICBPd25QdHI8V2ViSURCT2JqZWN0U3RvcmU+IG1fd2ViSURCT2JqZWN0U3RvcmU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCisKKyNlbmRpZiAvLyBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRQcm94eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJPYmplY3RTdG9yZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQk9iamVjdFN0b3JlUHJveHkuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBk
Njg3MWUwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9iamVj
dFN0b3JlUHJveHkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVQcm94eS5oIgotCi0j
aW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgotI2luY2x1ZGUgIklEQkNhbGxiYWNrcy5oIgotI2lu
Y2x1ZGUgIklEQkluZGV4QmFja2VuZFByb3h5LmgiCi0jaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIK
LSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIgotI2luY2x1ZGUgIldlYklE
QkNhbGxiYWNrc0ltcGwuaCIKLSNpbmNsdWRlICJXZWJJREJLZXlSYW5nZS5oIgotI2luY2x1ZGUg
IldlYklEQkluZGV4LmgiCi0jaW5jbHVkZSAiV2ViSURCS2V5LmgiCi0jaW5jbHVkZSAiV2ViSURC
T2JqZWN0U3RvcmUuaCIKLSNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbkltcGwuaCIKLSNpbmNs
dWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLQotI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlPiBJREJPYmplY3RTdG9yZVByb3h5OjpjcmVhdGUoUGFzc093blB0
cjxXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZSkKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IElEQk9iamVjdFN0b3JlUHJveHkob2JqZWN0U3RvcmUpKTsKLX0KLQotSURC
T2JqZWN0U3RvcmVQcm94eTo6SURCT2JqZWN0U3RvcmVQcm94eShQYXNzT3duUHRyPFdlYktpdDo6
V2ViSURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlKQotICAgIDogbV93ZWJJREJPYmplY3RTdG9y
ZShvYmplY3RTdG9yZSkKLXsKLX0KLQotSURCT2JqZWN0U3RvcmVQcm94eTo6fklEQk9iamVjdFN0
b3JlUHJveHkoKQotewotfQotCi1TdHJpbmcgSURCT2JqZWN0U3RvcmVQcm94eTo6bmFtZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fd2ViSURCT2JqZWN0U3RvcmUtPm5hbWUoKTsKLX0KLQotU3Ry
aW5nIElEQk9iamVjdFN0b3JlUHJveHk6OmtleVBhdGgoKSBjb25zdAotewotICAgIHJldHVybiBt
X3dlYklEQk9iamVjdFN0b3JlLT5rZXlQYXRoKCk7Ci19Ci0KLVBhc3NSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gSURCT2JqZWN0U3RvcmVQcm94eTo6aW5kZXhOYW1lcygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fd2ViSURCT2JqZWN0U3RvcmUtPmluZGV4TmFtZXMoKTsKLX0KLQotdm9pZCBJREJPYmpl
Y3RTdG9yZVByb3h5OjpnZXQoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBv
aW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMs
IGluIHRoZSByZW5kZXJlciwKLSAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRl
cmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgotICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5
KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJv
eHkqPih0cmFuc2FjdGlvbik7Ci0gICAgbV93ZWJJREJPYmplY3RTdG9yZS0+Z2V0KGtleSwgbmV3
IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdl
YklEQlRyYW5zYWN0aW9uKCksIGVjKTsKLX0KLQotdm9pZCBJREJPYmplY3RTdG9yZVByb3h5Ojpw
dXQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQotewotICAgIC8vIFRoZSB0cmFuc2FjdGlvbiBwb2ludGVyIGlzIGd1YXJh
bnRlZWQgdG8gYmUgYSBwb2ludGVyIHRvIGEgcHJveHkgb2JqZWN0IGFzLCBpbiB0aGUgcmVuZGVy
ZXIsCi0gICAgLy8gYWxsIGltcGxlbWVudGF0aW9ucyBvZiBJREIgaW50ZXJmYWNlcyBhcmUgcHJv
eHkgb2JqZWN0cy4KLSAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSogdHJhbnNhY3Rpb25Q
cm94eSA9IHN0YXRpY19jYXN0PElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Kj4odHJhbnNhY3Rp
b24pOwotICAgIG1fd2ViSURCT2JqZWN0U3RvcmUtPnB1dCh2YWx1ZSwga2V5LCBzdGF0aWNfY2Fz
dDxXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlOjpQdXRNb2RlPihwdXRNb2RlKSwgbmV3IFdlYklE
QkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5zYWN0aW9uUHJveHktPmdldFdlYklEQlRy
YW5zYWN0aW9uKCksIGVjKTsKLX0KLQotdm9pZCBJREJPYmplY3RTdG9yZVByb3h5OjpkZWxldGVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBn
dWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRlciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJl
bmRlcmVyLAotICAgIC8vIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJl
IHByb3h5IG9iamVjdHMuCi0gICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0
aW9uUHJveHkgPSBzdGF0aWNfY2FzdDxJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5z
YWN0aW9uKTsKLSAgICBtX3dlYklEQk9iamVjdFN0b3JlLT5kZWxldGVGdW5jdGlvbihrZXksIG5l
dyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksICp0cmFuc2FjdGlvblByb3h5LT5nZXRX
ZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7Ci19Ci0KLXZvaWQgSURCT2JqZWN0U3RvcmVQcm94eTo6
Y2xlYXIoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAg
Ly8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIg
dG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKLSAgICAvLyBhbGwgaW1wbGVt
ZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgotICAgIElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURC
VHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7Ci0gICAgbV93ZWJJREJPYmpl
Y3RTdG9yZS0+Y2xlYXIobmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgKnRyYW5z
YWN0aW9uUHJveHktPmdldFdlYklEQlRyYW5zYWN0aW9uKCksIGVjKTsKLX0KLQotUGFzc1JlZlB0
cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IElEQk9iamVjdFN0b3JlUHJveHk6OmNyZWF0ZUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgLy8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVl
ZCB0byBiZSBhIHBvaW50ZXIgdG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwK
LSAgICAvLyBhbGwgaW1wbGVtZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBv
YmplY3RzLgotICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5
ID0gc3RhdGljX2Nhc3Q8SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7
Ci0gICAgV2ViS2l0OjpXZWJJREJJbmRleCogaW5kZXggPSBtX3dlYklEQk9iamVjdFN0b3JlLT5j
cmVhdGVJbmRleChuYW1lLCBrZXlQYXRoLCB1bmlxdWUsICp0cmFuc2FjdGlvblByb3h5LT5nZXRX
ZWJJREJUcmFuc2FjdGlvbigpLCBlYyk7Ci0gICAgaWYgKCFpbmRleCkKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgcmV0dXJuIElEQkluZGV4QmFja2VuZFByb3h5OjpjcmVhdGUoaW5kZXgpOwotfQot
Ci1QYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVQcm94
eTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBX
ZWJLaXQ6OldlYklEQkluZGV4KiBpbmRleCA9IG1fd2ViSURCT2JqZWN0U3RvcmUtPmluZGV4KG5h
bWUsIGVjKTsKLSAgICBpZiAoIWluZGV4KQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4g
SURCSW5kZXhCYWNrZW5kUHJveHk6OmNyZWF0ZShpbmRleCk7Ci19Ci0KLXZvaWQgSURCT2JqZWN0
U3RvcmVQcm94eTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAg
ICAvLyBUaGUgdHJhbnNhY3Rpb24gcG9pbnRlciBpcyBndWFyYW50ZWVkIHRvIGJlIGEgcG9pbnRl
ciB0byBhIHByb3h5IG9iamVjdCBhcywgaW4gdGhlIHJlbmRlcmVyLAotICAgIC8vIGFsbCBpbXBs
ZW1lbnRhdGlvbnMgb2YgSURCIGludGVyZmFjZXMgYXJlIHByb3h5IG9iamVjdHMuCi0gICAgSURC
VHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqIHRyYW5zYWN0aW9uUHJveHkgPSBzdGF0aWNfY2FzdDxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSo+KHRyYW5zYWN0aW9uKTsKLSAgICBtX3dlYklEQk9i
amVjdFN0b3JlLT5kZWxldGVJbmRleChuYW1lLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURC
VHJhbnNhY3Rpb24oKSwgZWMpOwotfQotCi12b2lkIElEQk9iamVjdFN0b3JlUHJveHk6Om9wZW5D
dXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVj
dGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAg
Ly8gVGhlIHRyYW5zYWN0aW9uIHBvaW50ZXIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIHBvaW50ZXIg
dG8gYSBwcm94eSBvYmplY3QgYXMsIGluIHRoZSByZW5kZXJlciwKLSAgICAvLyBhbGwgaW1wbGVt
ZW50YXRpb25zIG9mIElEQiBpbnRlcmZhY2VzIGFyZSBwcm94eSBvYmplY3RzLgotICAgIElEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5KiB0cmFuc2FjdGlvblByb3h5ID0gc3RhdGljX2Nhc3Q8SURC
VHJhbnNhY3Rpb25CYWNrZW5kUHJveHkqPih0cmFuc2FjdGlvbik7Ci0gICAgbV93ZWJJREJPYmpl
Y3RTdG9yZS0+b3BlbkN1cnNvcihyYW5nZSwgZGlyZWN0aW9uLCBuZXcgV2ViSURCQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpLCAqdHJhbnNhY3Rpb25Qcm94eS0+Z2V0V2ViSURCVHJhbnNhY3Rpb24o
KSwgZWMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQk9iamVjdFN0b3JlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQk9i
amVjdFN0b3JlUHJveHkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTZlMzc0OC4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJPYmplY3RTdG9yZVBy
b3h5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJREJP
YmplY3RTdG9yZVByb3h5X2gKLSNkZWZpbmUgSURCT2JqZWN0U3RvcmVQcm94eV9oCi0KLSNpbmNs
dWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLW5hbWVzcGFjZSBXZWJL
aXQgeyBjbGFzcyBXZWJJREJPYmplY3RTdG9yZTsgfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIElEQk9iamVjdFN0b3JlUHJveHkgOiBwdWJsaWMgSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCT2JqZWN0
U3RvcmU+KTsKLSAgICB2aXJ0dWFsIH5JREJPYmplY3RTdG9yZVByb3h5KCk7Ci0KLSAgICB2aXJ0
dWFsIFN0cmluZyBuYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcga2V5UGF0aCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBpbmRleE5hbWVzKCkg
Y29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIHB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUHV0TW9kZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5Piwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uq
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29k
ZSYpOwotCi0gICAgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGNyZWF0ZUlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1
ZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpbmRleChjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgRXhjZXB0aW9uQ29kZSYp
OwotCi0gICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4s
IHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBFeGNlcHRpb25Db2RlJik7Ci0KLXByaXZhdGU6
Ci0gICAgSURCT2JqZWN0U3RvcmVQcm94eShQYXNzT3duUHRyPFdlYktpdDo6V2ViSURCT2JqZWN0
U3RvcmU+KTsKLQotICAgIE93blB0cjxXZWJLaXQ6OldlYklEQk9iamVjdFN0b3JlPiBtX3dlYklE
Qk9iamVjdFN0b3JlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLQot
I2VuZGlmIC8vIElEQk9iamVjdFN0b3JlUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuY3BwCmluZGV4IDk1
YzkwZDUuLjZkOTFmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjEgKzI4LDIzIEBACiAKICNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlUHJveHku
aCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5o
IgogI2luY2x1ZGUgIldlYklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViSURCVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlICJXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwuaCIKIAot
bmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJUcmFuc2FjdGlvbkJhY2tlbmRQ
cm94eTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4gdHJhbnNh
Y3Rpb24pCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjpjcmVhdGUoUGFzc093
blB0cjxXZWJJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSh0cmFuc2FjdGlvbikpOwogfQogCi1J
REJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkoUGFz
c093blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbikKK0lEQlRyYW5z
YWN0aW9uQmFja2VuZFByb3h5OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eShQYXNzT3duUHRy
PFdlYklEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbikKICAgICA6IG1fd2ViSURCVHJhbnNhY3Rp
b24odHJhbnNhY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fd2ViSURCVHJhbnNhY3Rpb24pOwpAQCAt
NTQsMTAgKzU2LDEwIEBAIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Ojp+SURCVHJhbnNhY3Rp
b25CYWNrZW5kUHJveHkoKQogCiBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVy
ZmFjZT4gSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6Om9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgV2ViS2l0OjpXZWJJREJPYmplY3RT
dG9yZSogb2JqZWN0U3RvcmUgPSBtX3dlYklEQlRyYW5zYWN0aW9uLT5vYmplY3RTdG9yZShuYW1l
LCBlYyk7CisgICAgV2ViSURCT2JqZWN0U3RvcmUqIG9iamVjdFN0b3JlID0gbV93ZWJJREJUcmFu
c2FjdGlvbi0+b2JqZWN0U3RvcmUobmFtZSwgZWMpOwogICAgIGlmICghb2JqZWN0U3RvcmUpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBJREJPYmplY3RTdG9yZVByb3h5OjpjcmVhdGUo
b2JqZWN0U3RvcmUpOworICAgIHJldHVybiBJREJPYmplY3RTdG9yZUJhY2tlbmRQcm94eTo6Y3Jl
YXRlKG9iamVjdFN0b3JlKTsKIH0KIAogdW5zaWduZWQgc2hvcnQgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kUHJveHk6Om1vZGUoKSBjb25zdApAQCAtODgsNiArOTAsNiBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uQmFja2VuZFByb3h5OjpzZXRDYWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqIGNh
bGxiYWNrcwogICAgIG1fd2ViSURCVHJhbnNhY3Rpb24tPnNldENhbGxiYWNrcyhuZXcgV2ViSURC
VHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
VHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgKaW5kZXggOTZkNzI5My4uMTAzZjU1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tl
bmRQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDM4ICsyNiwzNyBAQAogI2lmbmRlZiBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94
eV9oCiAjZGVmaW5lIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5X2gKIAotI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgotCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAotbmFt
ZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uOyB9CituYW1lc3BhY2UgV2Vi
S2l0IHsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CiAK
LWNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5IDogcHVibGljIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSB7CitjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eSA6IHB1
YmxpYyBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3Jl
YXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4pOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gY3JlYXRlKFBhc3NPd25Q
dHI8V2ViSURCVHJhbnNhY3Rpb24+KTsKICAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbkJhY2tl
bmRQcm94eSgpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBtb2RlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIGFib3J0KCk7Ci0gICAgdmlydHVhbCBib29sIHNjaGVkdWxlVGFzayhQ
YXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBQYXNzT3duUHRyPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2NoZWR1bGVUYXNr
KFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4sIFBhc3NP
d25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21wbGV0ZVRhc2tFdmVudHMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2Fs
bGJhY2tzKElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKik7CisgICAgdmlydHVhbCB2b2lkIHNldENh
bGxiYWNrcyhXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyopOwogCi0gICAgV2ViS2l0
OjpXZWJJREJUcmFuc2FjdGlvbiogZ2V0V2ViSURCVHJhbnNhY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3dlYklEQlRyYW5zYWN0aW9uLmdldCgpOyB9CisgICAgV2ViSURCVHJhbnNhY3Rpb24qIGdl
dFdlYklEQlRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV93ZWJJREJUcmFuc2FjdGlvbi5n
ZXQoKTsgfQogCiBwcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5KFBhc3NP
d25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbj4pOworICAgIElEQlRyYW5zYWN0aW9uQmFj
a2VuZFByb3h5KFBhc3NPd25QdHI8V2ViSURCVHJhbnNhY3Rpb24+KTsKIAotICAgIE93blB0cjxX
ZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uPiBtX3dlYklEQlRyYW5zYWN0aW9uOworICAgIE93blB0
cjxXZWJJREJUcmFuc2FjdGlvbj4gbV93ZWJJREJUcmFuc2FjdGlvbjsKIH07CiAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkNhbGxi
YWNrc1Byb3h5LmNwcAppbmRleCBlYmRhMWRkLi44M2Q3ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yOSwxOCArMjksMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbkNhbGxiYWNrc1Byb3h5LmgiCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
KwogI2luY2x1ZGUgIldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCiAKLSNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7CituYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkNhbGxiYWNrc1Byb3h5PiBJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoUGFz
c093blB0cjxXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBjYWxsYmFja3MpCitQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHk+IElEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzUHJveHk6OmNyZWF0ZShQYXNzT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbkNh
bGxiYWNrc1Byb3h5KGNhbGxiYWNrcykpOwogfQogCi1JREJUcmFuc2FjdGlvbkNhbGxiYWNrc1By
b3h5OjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJ
REJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3NQcm94eTo6SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQlRy
YW5zYWN0aW9uQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFj
a3MpCiB7CiB9CkBAIC01OSw2ICs2MSw2IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25DYWxsYmFja3NQ
cm94eTo6b25Db21wbGV0ZSgpCiAgICAgbV9jYWxsYmFja3MtPm9uQ29tcGxldGUoKTsKIH0KIAot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkuaAppbmRleCA3OWMzMmY2
Li4wNDRlZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFu
c2FjdGlvbkNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDMzICsyOSwzMiBAQAogI2lmbmRlZiBJREJU
cmFuc2FjdGlvbkNhbGxiYWNrc1Byb3h5X2gKICNkZWZpbmUgSURCVHJhbnNhY3Rpb25DYWxsYmFj
a3NQcm94eV9oCiAKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcy5oIgotCiAjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNhbGxi
YWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7IGNsYXNzIFdlYklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzOyB9CituYW1lc3BhY2UgV2ViS2l0IHsKIAotbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3M7CiAKLWNsYXNzIElEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzUHJveHkgOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25DYWxsYmFja3MgeworY2xhc3MgSURC
VHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25DYWxsYmFja3NQcm94eT4gY3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2Fj
dGlvbkNhbGxiYWNrcz4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzUHJveHk+IGNyZWF0ZShQYXNzT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
Pik7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25DYWxsYmFja3NQcm94eSgpOwogCiAgICAg
dmlydHVhbCB2b2lkIG9uQWJvcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0ZSgpOwog
CiBwcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzUHJveHkoUGFzc093blB0cjxX
ZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPik7CisgICAgSURCVHJhbnNhY3Rpb25D
YWxsYmFja3NQcm94eShQYXNzT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPik7CiAK
LSAgICBPd25QdHI8V2ViS2l0OjpXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gbV9jYWxsYmFj
a3M7CisgICAgT3duUHRyPFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsK
IH07CiAKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJD
YWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxi
YWNrc0ltcGwuY3BwCmluZGV4IGNlMzA3YTQuLjI0ZDNmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEwICsyNiwxMiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrc0ltcGwuaCIKIAor
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgi
CiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZFByb3h5LmgiCisjaW5jbHVkZSAiSURCRGF0YWJh
c2VCYWNrZW5kUHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCi0jaW5jbHVk
ZSAiSURCRGF0YWJhc2VQcm94eS5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzLmgi
CkBAIC0zOSw5ICs0MSw5IEBACiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKICNpbmNs
dWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAotI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJJREJDYWxsYmFja3NJbXBsOjpXZWJJREJDYWxsYmFj
a3NJbXBsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAgOiBtX2NhbGxi
YWNrcyhjYWxsYmFja3MpCkBAIC01MiwzMiArNTQsMzIgQEAgV2ViSURCQ2FsbGJhY2tzSW1wbDo6
fldlYklEQkNhbGxiYWNrc0ltcGwoKQogewogfQogCi12b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6
Om9uRXJyb3IoY29uc3QgV2ViS2l0OjpXZWJJREJEYXRhYmFzZUVycm9yJiBlcnJvcikKK3ZvaWQg
V2ViSURCQ2FsbGJhY2tzSW1wbDo6b25FcnJvcihjb25zdCBXZWJJREJEYXRhYmFzZUVycm9yJiBl
cnJvcikKIHsKICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7CiB9CiAKLXZvaWQgV2Vi
SURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYktpdDo6V2ViSURCQ3Vyc29yKiBjdXJzb3Ip
Cit2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhXZWJJREJDdXJzb3IqIGN1cnNv
cikKIHsKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQkN1cnNvckJhY2tlbmRQcm94eTo6
Y3JlYXRlKGN1cnNvcikpOwogfQogCi12b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vz
cyhXZWJLaXQ6OldlYklEQkRhdGFiYXNlKiB3ZWJLaXRJbnN0YW5jZSkKK3ZvaWQgV2ViSURCQ2Fs
bGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQkRhdGFiYXNlKiB3ZWJLaXRJbnN0YW5jZSkKIHsK
LSAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQkRhdGFiYXNlUHJveHk6OmNyZWF0ZSh3ZWJL
aXRJbnN0YW5jZSkpOworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoSURCRGF0YWJhc2VCYWNr
ZW5kUHJveHk6OmNyZWF0ZSh3ZWJLaXRJbnN0YW5jZSkpOwogfQogCi12b2lkIFdlYklEQkNhbGxi
YWNrc0ltcGw6Om9uU3VjY2Vzcyhjb25zdCBXZWJLaXQ6OldlYklEQktleSYga2V5KQordm9pZCBX
ZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViSURCS2V5JiBrZXkpCiB7CiAg
ICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhrZXkpOwogfQogCi12b2lkIFdlYklEQkNhbGxiYWNr
c0ltcGw6Om9uU3VjY2VzcyhXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uKiB3ZWJLaXRJbnN0YW5j
ZSkKK3ZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzKFdlYklEQlRyYW5zYWN0aW9u
KiB3ZWJLaXRJbnN0YW5jZSkKIHsKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQlRyYW5z
YWN0aW9uQmFja2VuZFByb3h5OjpjcmVhdGUod2ViS2l0SW5zdGFuY2UpKTsKIH0KIAotdm9pZCBX
ZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViS2l0OjpXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKK3ZvaWQgV2ViSURCQ2FsbGJhY2tz
SW1wbDo6b25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKQogewogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moc2VyaWFsaXplZFNj
cmlwdFZhbHVlKTsKIH0KQEAgLTg3LDYgKzg5LDYgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBs
OjpvbkJsb2NrZWQoKQogICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKIH0KIAotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkNhbGxiYWNrc0ltcGwuaAppbmRleCAwNTdhYTI1Li5jNDg2NjAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDM1ICsyNiwzNSBA
QAogI2lmbmRlZiBXZWJJREJDYWxsYmFja3NJbXBsX2gKICNkZWZpbmUgV2ViSURCQ2FsbGJhY2tz
SW1wbF9oCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIldlYklE
QkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSURCQ2FsbGJhY2tzOyB9CiAKLWNs
YXNzIElEQkNhbGxiYWNrczsKK25hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJJREJDYWxs
YmFja3NJbXBsIDogcHVibGljIFdlYktpdDo6V2ViSURCQ2FsbGJhY2tzIHsKK2NsYXNzIFdlYklE
QkNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgV2ViSURCQ2FsbGJhY2tzIHsKIHB1YmxpYzoKLSAgICBX
ZWJJREJDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgV2ViSURC
Q2FsbGJhY2tzSW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4pOwogICAgIHZp
cnR1YWwgfldlYklEQkNhbGxiYWNrc0ltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBvbkVycm9y
KGNvbnN0IFdlYktpdDo6V2ViSURCRGF0YWJhc2VFcnJvciYpOwotICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoV2ViS2l0OjpXZWJJREJDdXJzb3IqKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFdlYktpdDo6V2ViSURCRGF0YWJhc2UqKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KGNvbnN0IFdlYktpdDo6V2ViSURCS2V5Jik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhX
ZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uKik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhj
b25zdCBXZWJLaXQ6OldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBvbkVycm9yKGNvbnN0IFdlYklEQkRhdGFiYXNlRXJyb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFdlYklEQkN1cnNvciopOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2Vi
SURCRGF0YWJhc2UqKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYklEQktl
eSYpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURCVHJhbnNhY3Rpb24qKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8
SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJh
Y2tzPiBtX2NhbGxiYWNrczsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIAogI2VuZGlmIC8vIFdlYklEQkNhbGxiYWNrc0ltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcAppbmRleCA4NmM0ZjU3Li42YzAwMTJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Niw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSURCQ3Vyc29y
SW1wbC5oIgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKICNpbmNsdWRlICJJREJB
bnkuaCIKICNpbmNsdWRlICJJREJDYWxsYmFja3NQcm94eS5oIgogI2luY2x1ZGUgIklEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2UuaCIKQEAgLTgwLDQgKzgyLDYgQEAgdm9pZCBXZWJJREJDdXJzb3JJ
bXBsOjpkZWxldGVGdW5jdGlvbihXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0
aW9uQ28KICAgICBtX2lkYkN1cnNvckJhY2tlbmQtPmRlbGV0ZUZ1bmN0aW9uKElEQkNhbGxiYWNr
c1Byb3h5OjpjcmVhdGUoY2FsbGJhY2tzKSwgZWMpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vy
c29ySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5o
CmluZGV4IGRlMTdhOTkuLmMyMzc5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkN1cnNvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJDdXJzb3JJbXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBXZWJJREJDdXJzb3JJbXBs
X2gKICNkZWZpbmUgV2ViSURCQ3Vyc29ySW1wbF9oCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKwogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJXZWJJREJDdXJzb3IuaCIKQEAgLTU2LDQgKzU4LDYgQEAgcHVibGlj
OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCiAjZW5kaWYgLy8gV2ViSURCQ3Vyc29ySW1wbF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNw
cAppbmRleCAzY2EwMjc0Li4wZmVjODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTMxLDcg
KzMxLDkgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldl
YlN0cmluZy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6
V2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IGNhbGxiYWNrcykKICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKQEAgLTQyLDExICs0
NCwxMSBAQCBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6On5XZWJJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGwoKQogewogfQogCi12b2lkIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25W
ZXJzaW9uQ2hhbmdlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB2ZXJzaW9uKQordm9pZCBXZWJJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJTdHJpbmcm
IHZlcnNpb24pCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uVmVyc2lvbkNoYW5nZSh2ZXJzaW9uKTsK
IH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKaW5kZXggYmEz
ZGM1ZS4uZDQ5MTZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKQEAgLTM0LDIzICszNCwyMyBAQAogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQkRhdGFiYXNlQ2Fs
bGJhY2tzOyB9CiAKLWNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOworbmFtZXNwYWNlIFdlYktp
dCB7CiAKLWNsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCA6IHB1YmxpYyBXZWJLaXQ6
OldlYklEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKK2NsYXNzIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbCA6IHB1YmxpYyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAgV2Vi
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
KTsKKyAgICBXZWJJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJEYXRhYmFzZUNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwgfldlYklEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbCgpOwogCi0gICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShjb25zdCBXZWJL
aXQ6OldlYlN0cmluZyYgdmVyc2lvbik7CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5n
ZShjb25zdCBXZWJTdHJpbmcmIHZlcnNpb24pOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKIAogI2VuZGlmIC8vIFdlYklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUVy
cm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlRXJyb3Iu
Y3BwCmluZGV4IDc0MTNhZTYuLjI1ZTIwMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkRhdGFiYXNlRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkRhdGFiYXNlRXJyb3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMSwxMSArMzEsMTEgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCiAKKyNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIK
ICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQot
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJEYXRhYmFzZUltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNwcAppbmRleCAy
YTk3OTIzLi45MmRkNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkRhdGFiYXNlSW1wbC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYklEQkRhdGFiYXNlSW1wbC5oIgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tz
UHJveHkuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKQEAgLTM2
LDggKzM4LDYgQEAKICNpbmNsdWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKICNpbmNsdWRl
ICJXZWJJREJUcmFuc2FjdGlvbkltcGwuaCIKIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0x
MTIsNiArMTEyLDYgQEAgdm9pZCBXZWJJREJEYXRhYmFzZUltcGw6Om9wZW4oV2ViSURCRGF0YWJh
c2VDYWxsYmFja3MqIGNhbGxiYWNrcykKICAgICBtX2RhdGFiYXNlQmFja2VuZC0+b3BlbihtX2Rh
dGFiYXNlQ2FsbGJhY2tzKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmgKaW5kZXggMGUx
ZDAzZS4uMDYxZjVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCRGF0YWJhc2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
RGF0YWJhc2VJbXBsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjYsMTkgKzI2LDE5IEBACiAjaWZuZGVmIFdlYklEQkRhdGFiYXNlSW1wbF9o
CiAjZGVmaW5lIFdlYklEQkRhdGFiYXNlSW1wbF9oCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKKwogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1j
bGFzcyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U7Ci1jbGFzcyBJREJEYXRhYmFzZUNhbGxi
YWNrc1Byb3h5OwotfQorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U7IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIElEQkRhdGFiYXNl
Q2FsbGJhY2tzUHJveHk7CiBjbGFzcyBXZWJJREJEYXRhYmFzZUNhbGxiYWNrczsKIGNsYXNzIFdl
YklEQk9iamVjdFN0b3JlOwogY2xhc3MgV2ViSURCVHJhbnNhY3Rpb247CkBAIC02Myw5ICs2Mywx
MSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2RhdGFiYXNlQmFja2VuZDsKLSAgICBXVEY6OlJlZlB0
cjxXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc1Byb3h5PiBtX2RhdGFiYXNlQ2FsbGJhY2tz
OworICAgIFdURjo6UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzUHJveHk+IG1fZGF0YWJhc2VD
YWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYklE
QkRhdGFiYXNlSW1wbF9oCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAppbmRl
eCAzZTIxYWY1Li43OTM2OThlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRmFjdG9yeUltcGwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeUltcGwuaCIKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxi
YWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCkBAIC0zOCw4
ICs0MCw2IEBACiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01MCw3ICs1MCw3IEBAIFdl
YklEQkZhY3RvcnkqIFdlYklEQkZhY3Rvcnk6OmNyZWF0ZSgpCiB9CiAKIFdlYklEQkZhY3RvcnlJ
bXBsOjpXZWJJREJGYWN0b3J5SW1wbCgpCi0gICAgOiBtX2lkYkZhY3RvcnlCYWNrZW5kKFdlYkNv
cmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Y3JlYXRlKCkpCisgICAgOiBtX2lkYkZhY3RvcnlC
YWNrZW5kKElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Y3JlYXRlKCkpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCmluZGV4IDBmZmQyODku
LjYyYmQ5ZWQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZh
Y3RvcnlJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9y
eUltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOSw2ICsyOSw4IEBACiAjaWZuZGVmIFdlYklEQkZhY3RvcnlJbXBsX2gKICNkZWZpbmUg
V2ViSURCRmFjdG9yeUltcGxfaAogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKICNp
bmNsdWRlICJXZWJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUwLDQgKzUyLDYgQEAgcHJpdmF0ZToKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
KwogI2VuZGlmIC8vIFdlYklEQkZhY3RvcnlJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJJbmRleEltcGwuY3BwCmluZGV4IDZlOGUxZjIuLmZhMzNkYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCSW5kZXhJbXBsLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViSURCSW5kZXhJbXBsLmgiCiAK
KyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIklEQkNhbGxiYWNrc1By
b3h5LmgiCiAjaW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgpA
QCAtMzMsOCArMzUsNiBAQAogI2luY2x1ZGUgIldlYklEQktleS5oIgogI2luY2x1ZGUgIldlYklE
QktleVJhbmdlLmgiCiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODgsNiArODgsNiBAQCB2
b2lkIFdlYklEQkluZGV4SW1wbDo6Z2V0S2V5KGNvbnN0IFdlYklEQktleSYga2V5UmFuZ2UsIFdl
YklEQkNhbGxiYWNrcyogY2FsbGJhYwogICAgIG1fYmFja2VuZC0+Z2V0S2V5KGtleVJhbmdlLCBJ
REJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGNhbGxiYWNrcyksIHRyYW5zYWN0aW9uLmdldElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSgpLCBlYyk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJJ
bmRleEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkluZGV4SW1wbC5o
CmluZGV4IGY2OGRhN2YuLmIwNDdjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkluZGV4SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkluZGV4SW1wbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgV2ViSURCSW5kZXhJbXBsX2gK
ICNkZWZpbmUgV2ViSURCSW5kZXhJbXBsX2gKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViSURCSW5kZXguaCIKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNTcsNCArNTksNiBAQCBwcml2YXRlOgogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCiAjZW5kaWYgLy8gV2ViSURCSW5kZXhJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQktleS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJLZXkuY3BwCmluZGV4IGEyMDE0NmUuLmYyMDM0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCS2V5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtODAsNyArODAsNyBAQCBXZWJJREJLZXkgV2ViSURC
S2V5OjpjcmVhdGVGcm9tVmFsdWVBbmRLZXlQYXRoKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYgcwogewogICAgIGlmIChzZXJpYWxpemVkU2NyaXB0VmFsdWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBXZWJJREJLZXk6OmNyZWF0ZUludmFsaWQoKTsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Y3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoc2VyaWFsaXplZFNj
cmlwdFZhbHVlLCBpZGJLZXlQYXRoKTsKKyAgICByZXR1cm4gY3JlYXRlSURCS2V5RnJvbVNlcmlh
bGl6ZWRWYWx1ZUFuZEtleVBhdGgoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBpZGJLZXlQYXRoKTsK
IH0KIAogV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIFdlYklEQktleTo6aW5qZWN0SURCS2V5SW50
b1NlcmlhbGl6ZWRWYWx1ZShjb25zdCBXZWJJREJLZXkmIGtleSwgY29uc3QgV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlJiB2YWx1ZSwgY29uc3QgV2ViSURCS2V5UGF0aCYgcGF0aCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleVBhdGguY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAKaW5kZXggOWViMzNkNi4uMzA5
YzBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UGF0
aC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UGF0aC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjcs
NyArNjcsNyBAQCB2b2lkIFdlYklEQktleVBhdGg6OnJlc2V0KCkKICAgICBtX3ByaXZhdGUucmVz
ZXQoMCk7CiB9CiAKLVdlYklEQktleVBhdGg6Om9wZXJhdG9yIGNvbnN0IFdURjo6VmVjdG9yPFdl
YkNvcmU6OklEQktleVBhdGhFbGVtZW50LCAwPiYoKSBjb25zdAorV2ViSURCS2V5UGF0aDo6b3Bl
cmF0b3IgY29uc3QgV1RGOjpWZWN0b3I8SURCS2V5UGF0aEVsZW1lbnQsIDA+JigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuICptX3ByaXZhdGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJLZXlSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJLZXlSYW5nZS5jcHAKaW5kZXggNTE3ZmYwMC4uZWE2NDFlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCS2V5UmFuZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQktleVJhbmdlLmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjYsMTMg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJREJLZXlSYW5nZS5oIgogCisj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNs
dWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIldlYklEQktleS5oIgogCi11c2luZyBXZWJD
b3JlOjpJREJLZXlSYW5nZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtOTMsMyArOTUsNSBAQCBXZWJJREJLZXlSYW5nZTo6b3BlcmF0b3IgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4oKSBjb25zdAogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQk9iamVjdFN0b3JlSW1wbC5jcHAKaW5kZXggNTZlMzU0
ZC4uMGE2N2YzNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
T2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJJREJPYmplY3RTdG9yZUltcGwuaCIKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIklEQkNhbGxi
YWNrc1Byb3h5LmgiCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCkBAIC0z
Nyw4ICszOSw2IEBACiAjaW5jbHVkZSAiV2ViSURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0x
MTMsNiArMTEzLDYgQEAgdm9pZCBXZWJJREJPYmplY3RTdG9yZUltcGw6Om9wZW5DdXJzb3IoY29u
c3QgV2ViSURCS2V5UmFuZ2UmIGtleVJhbmdlLCB1bnNpZ25lZAogICAgIG1fb2JqZWN0U3RvcmUt
Pm9wZW5DdXJzb3Ioa2V5UmFuZ2UsIGRpcmVjdGlvbiwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0
ZShjYWxsYmFja3MpLCB0cmFuc2FjdGlvbi5nZXRJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UoKSwgZWMpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCT2JqZWN0U3RvcmVJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJPYmplY3RTdG9yZUltcGwuaAppbmRleCAzZTJk
ZmFiLi5mMTA5M2VkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJPYmplY3RTdG9yZUltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIFdlYklEQk9iamVjdFN0b3Jl
SW1wbF9oCiAjZGVmaW5lIFdlYklEQk9iamVjdFN0b3JlSW1wbF9oCiAKKyNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYklE
Qk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTY0LDQgKzY2
LDYgQEAgcHVibGljOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQorCiAjZW5kaWYgLy8gV2ViSURCT2JqZWN0U3RvcmVJbXBsX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9u
Q2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFu
c2FjdGlvbkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IDg0ODE4MmUuLjJmMTY0NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rp
b25DYWxsYmFja3NJbXBsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw5IEBACiAKICNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bkNhbGxiYWNrcy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
SW1wbDo6V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25DYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICA6IG1fY2FsbGJhY2tzKGNhbGxiYWNrcykK
QEAgLTUxLDYgKzUzLDYgQEAgdm9pZCBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGw6Om9u
Q29tcGxldGUoKQogICAgIG1fY2FsbGJhY2tzLT5vbkNvbXBsZXRlKCk7CiB9CiAKLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5oCmluZGV4IDQxNmFjM2MuLjhh
Y2IwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDI0ICszMiwyNCBAQAogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tz
OyB9CiAKLWNsYXNzIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzOworbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWNsYXNzIFdlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbCA6IHB1YmxpYyBXZWJLaXQ6
OldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzIHsKK2NsYXNzIFdlYklEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzSW1wbCA6IHB1YmxpYyBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyB7CiBwdWJsaWM6
Ci0gICAgV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsKFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25DYWxsYmFja3M+KTsKKyAgICBXZWJJREJUcmFuc2FjdGlvbkNhbGxiYWNrc0ltcGwoUGFz
c1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4pOwogICAgIHZpcnR1YWwg
fldlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIG9u
QWJvcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0ZSgpOwogCiBwcml2YXRlOgotICAg
IFJlZlB0cjxJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CisgICAgUmVmUHRy
PFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYKKyNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2VuZGlmIC8vIFdlYklEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzSW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCVHJhbnNhY3Rpb25JbXBsLmNwcAppbmRleCAxZWQ2ZjRiLi5hZGE5ZGEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1w
bC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCVHJhbnNhY3Rpb25J
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwu
aAppbmRleCBkMjZmYzM3Li40ZjE5ODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJREJUcmFuc2FjdGlvbkltcGwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCg==
</data>
<flag name="review"
          id="80514"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>