<?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>78831</bug_id>
          
          <creation_ts>2012-02-16 11:02:44 -0800</creation_ts>
          <short_desc>[Chromium] IndexedDB: Integrate with about:tracing</short_desc>
          <delta_ts>2012-02-22 10:42:03 -0800</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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>nduca</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>558334</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-16 11:02:44 -0800</bug_when>
    <thetext>[Chromium] IndexedDB: Integrate with about:tracing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558335</commentid>
    <comment_count>1</comment_count>
      <attachid>127411</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-16 11:03:07 -0800</bug_when>
    <thetext>Created attachment 127411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559560</commentid>
    <comment_count>2</comment_count>
      <attachid>127660</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-17 14:45:38 -0800</bug_when>
    <thetext>Created attachment 127660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559566</commentid>
    <comment_count>3</comment_count>
      <attachid>127660</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-17 14:55:19 -0800</bug_when>
    <thetext>Comment on attachment 127660
Patch

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

LGTM

&gt; Source/WebCore/bindings/v8/IDBBindingUtilities.cpp:41
&gt; +#include &quot;TraceEvent.h&quot;

Would it have been possible to do something here like
#define IDB_TRACE(a, b) TRACE_EVENT0(a, b)
#else
#define IDB_TRACE(a, b) (void)0

and then use IDB_TRACE everywhere instead of #if PLATFORM(chromium) TRACE_EVENT0(....) #endif ?

If so, I don&apos;t think you should go back and change it, mostly just wondering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559567</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-17 15:01:23 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; 
&gt; and then use IDB_TRACE everywhere instead of #if PLATFORM(chromium) TRACE_EVENT0(....) #endif ?
&gt; 
&gt; If so, I don&apos;t think you should go back and change it, mostly just wondering.

Nat, any opinions? At this point I&apos;m just copying the style used in other files.

I agree it would be more succinct.

I&apos;d go further and have it take just the one argument so:

#define IDB_TRACE(a) TRACE_EVENT0(&quot;IndexedDB&quot;, (a))

So callers can just use: IDB_TRACE(&quot;IDBObjectStore::put&quot;)

Also, we could move the now 5-line #if...#endif preamble into a header file (IDBTracing.h) but I&apos;m not sure how &quot;webkitty&quot; that is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560994</commentid>
    <comment_count>5</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-02-21 10:22:43 -0800</bug_when>
    <thetext>Neat stuff, Josh!

(In reply to comment #4)
&gt; #define IDB_TRACE(a) TRACE_EVENT0(&quot;IndexedDB&quot;, (a))
&gt; 
&gt; So callers can just use: IDB_TRACE(&quot;IDBObjectStore::put&quot;)
&gt; 

I certainly don&apos;t see a problem with it. I think this pokes at us needing to clean up the trace macro for overall webcore use, but thats a separate conversation for a separate time. Do what you want to make yourself smile, from my point of view. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561117</commentid>
    <comment_count>6</comment_count>
      <attachid>127660</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-21 12:09:08 -0800</bug_when>
    <thetext>Comment on attachment 127660
Patch

OK.  I agree that PLATFORM(CHROMIUM) seems like the wrong guard.  Also, in the rest of webcore, I think we don&apos;t guard includes if it&apos;s easy to just have a stub header.  This makes the #include lists more concise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561397</commentid>
    <comment_count>7</comment_count>
      <attachid>128088</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-21 17:12:33 -0800</bug_when>
    <thetext>Created attachment 128088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561414</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-21 17:31:16 -0800</bug_when>
    <thetext>@tony can you take another look? Guidance on the naming/formatting of the include file appreciated.

(Also, I&apos;m not sure why the bots are so unhappy with this patch. I&apos;m not seeing anything obvious.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562075</commentid>
    <comment_count>9</comment_count>
      <attachid>128088</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-22 10:00:27 -0800</bug_when>
    <thetext>Comment on attachment 128088
Patch

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

&gt; Source/WebCore/storage/IDBTracing.h:41
&gt; +#define IDB_TRACE(a) (void)0

((void)0) seems safer and what I see in Assertions.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562089</commentid>
    <comment_count>10</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-22 10:12:11 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; 
&gt; ((void)0) seems safer and what I see in Assertions.h.

Agreed, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562100</commentid>
    <comment_count>11</comment_count>
      <attachid>128239</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-22 10:17:51 -0800</bug_when>
    <thetext>Created attachment 128239
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562132</commentid>
    <comment_count>12</comment_count>
      <attachid>128239</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 10:41:57 -0800</bug_when>
    <thetext>Comment on attachment 128239
Patch for landing

Clearing flags on attachment: 128239

Committed r108520: &lt;http://trac.webkit.org/changeset/108520&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562133</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 10:42:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127411</attachid>
            <date>2012-02-16 11:03:07 -0800</date>
            <delta_ts>2012-02-17 14:45:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78831-20120216110306.patch</filename>
            <type>text/plain</type>
            <size>35566</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkxYTNkYmJkMTY5MDcx
MTAwZGJmMTc3N2YxNGUyMmFmNjUyODMyYi4uMTAzMGUxNDdjYmY3YTczNjVhNTdmZjFjMjhkMzlm
ZDllZWRkMWFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDEyLTAyLTE2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IEludGVncmF0ZSB3aXRoIGFib3V0OnRyYWNpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4ODMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAg
ICAgKiBzdG9yYWdlL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmtleSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDdXJzb3I6OnByaW1hcnlLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q3Vyc29yOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnVwZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogc3RvcmFnZS9J
REJDdXJzb3JCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNr
ZW5kSW1wbDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6
OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGlu
dWVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29u
dGludWVGdW5jdGlvbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tl
bmRJbXBsOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNr
ZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JC
YWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaFJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkN1cnNvckJhY2tlbmRJbXBsOjpjbG9zZSk6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRl
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJJbmRleDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6
Om9wZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJJbmRleDo6Z2V0S2V5KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQklu
ZGV4QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1w
bDo6b3BlbkN1cnNvckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2Vu
ZEltcGw6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1w
bDo6b3BlbktleUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBs
Ojpjb3VudEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6
OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldEludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkpOgorICAgICAgICAqIHN0
b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3Rv
cmU6Om5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpp
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y291bnQpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZmV0Y2hL
ZXlGcm9tS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RLZXlJbnRvS2V5UGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRl
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3Bl
bkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpv
cGVuQ3Vyc29ySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbDo6Y291bnRJbnRlcm5hbCk6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0
YXNrVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjp0YXNrRXZlbnRUaW1lckZpcmVkKToKKwogMjAxMi0wMi0xNSAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMDc4MzYpOiBmYXN0L2Jv
eC1zaGFkb3cvc3ByZWFkLmh0bWwgYW5kIGZhc3Qvd3JpdGluZy1tb2RlL2JveC1zaGFkb3ctKi5o
dG1sIHRlc3RzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcAppbmRleCAx
NjZjMmRkNmQzZDA5ZTY0ZWEzMWQ3MGY2MDFhZTQ2MDU5OWRjMWI0Li4yNWMwYmUxMmExMzk3Zjhh
ODE4ZjkwY2EyMzhjM2EwYzNlNDBkZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3Iu
Y3BwCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAorI2lmIFBMQVRGT1JNKENI
Uk9NSVVNKQorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBJREJDdXJzb3I6OmNyZWF0ZShQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQlJlcXVlc3QqIHJlcXVl
c3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCkBAIC02Miwy
MSArNjYsMzMgQEAgSURCQ3Vyc29yOjp+SURCQ3Vyc29yKCkKIAogdW5zaWduZWQgc2hvcnQgSURC
Q3Vyc29yOjpkaXJlY3Rpb24oKSBjb25zdAogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAg
IFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQkN1cnNvcjo6ZGlyZWN0aW9uIik7
CisjZW5kaWYKICAgICByZXR1cm4gbV9iYWNrZW5kLT5kaXJlY3Rpb24oKTsKIH0KIAogUGFzc1Jl
ZlB0cjxJREJLZXk+IElEQkN1cnNvcjo6a2V5KCkgY29uc3QKIHsKKyNpZiBQTEFURk9STShDSFJP
TUlVTSkKKyAgICBUUkFDRV9FVkVOVF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJDdXJzb3I6Omtl
eSIpOworI2VuZGlmCiAgICAgcmV0dXJuIG1fYmFja2VuZC0+a2V5KCk7CiB9CiAKIFBhc3NSZWZQ
dHI8SURCS2V5PiBJREJDdXJzb3I6OnByaW1hcnlLZXkoKSBjb25zdAogeworI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQkN1cnNv
cjo6cHJpbWFyeUtleSIpOworI2VuZGlmCiAgICAgcmV0dXJuIG1fYmFja2VuZC0+cHJpbWFyeUtl
eSgpOwogfQogCiBQYXNzUmVmUHRyPElEQkFueT4gSURCQ3Vyc29yOjp2YWx1ZSgpIGNvbnN0CiB7
CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVk
REIiLCAiSURCQ3Vyc29yOjp2YWx1ZSIpOworI2VuZGlmCiAgICAgcmV0dXJuIElEQkFueTo6Y3Jl
YXRlKG1fYmFja2VuZC0+dmFsdWUoKSk7CiB9CiAKQEAgLTg3LDYgKzEwMyw5IEBAIElEQkFueSog
SURCQ3Vyc29yOjpzb3VyY2UoKSBjb25zdAogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1
cnNvcjo6dXBkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYg
UExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIiLCAi
SURCQ3Vyc29yOjp1cGRhdGUiKTsKKyNlbmRpZgogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1
ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBt
X3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPnVwZGF0ZSh2YWx1ZSwgcmVxdWVz
dCwgZWMpOwogICAgIGlmIChlYykgewpAQCAtOTgsNiArMTE3LDkgQEAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmUKIAogdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0p
CisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURCQ3Vyc29yOjpjb250aW51
ZSIpOworI2VuZGlmCiAgICAgaWYgKGtleSAmJiAoa2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZh
bGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7
CiAgICAgICAgIHJldHVybjsKQEAgLTExNCw2ICsxMzYsOSBAQCB2b2lkIElEQkN1cnNvcjo6Y29u
dGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykK
IAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklE
QkN1cnNvcjo6ZGVsZXRlIik7CisjZW5kaWYKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVz
dCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90
cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5kZWxldGVGdW5jdGlvbihyZXF1ZXN0
LCBlYyk7CiAgICAgaWYgKGVjKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vy
c29yQmFja2VuZEltcGwuY3BwCmluZGV4IGZmNzU2Y2VkZWNhYzJhNjY5OTk5Mjc3OTk3OTM3MjY3
OTcyMTNlYjEuLjlmZDI1NTgxNDc1YTMxM2U4Nzk0YjczZmZjOTEzOWQ4YjUyMTVkOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0z
OSw2ICszOSwxMCBAQAogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCisjaWYgUExBVEZPUk0oQ0hS
T01JVU0pCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogSURCQ3Vyc29yQmFja2VuZEltcGw6OklEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NS
ZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNvciwgSURCQ3Vyc29yOjpEaXJlY3Rp
b24gZGlyZWN0aW9uLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSog
b2JqZWN0U3RvcmUpCkBAIC03OSw2ICs4Myw5IEBAIFBhc3NSZWZQdHI8SURCS2V5PiBJREJDdXJz
b3JCYWNrZW5kSW1wbDo6cHJpbWFyeUtleSgpIGNvbnN0CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBJREJDdXJzb3JCYWNrZW5kSW1wbDo6dmFsdWUoKSBjb25zdAogeworI2lm
IFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwg
IklEQkN1cnNvckJhY2tlbmRJbXBsOjp2YWx1ZSIpOworI2VuZGlmCiAgICAgaWYgKG1fY3Vyc29y
VHlwZSA9PSBJbmRleEtleUN1cnNvcikKICAgICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6Om51bGxWYWx1ZSgpOwogICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZUZyb21XaXJlKG1fY3Vyc29yLT52YWx1ZSgpKTsKQEAgLTg2LDYgKzkzLDkgQEAgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IElEQkN1cnNvckJhY2tlbmRJbXBsOjp2YWx1ZSgpIGNv
bnN0CiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnVwZGF0ZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRS
QUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQkN1cnNvckJhY2tlbmRJbXBsOjp1cGRh
dGUiKTsKKyNlbmRpZgogICAgIGlmICghbV9jdXJzb3IgfHwgbV9jdXJzb3JUeXBlID09IEluZGV4
S2V5Q3Vyc29yKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExP
V0VEX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtOTYsNiArMTA2LDkgQEAgdm9pZCBJREJDdXJz
b3JCYWNrZW5kSW1wbDo6dXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2
YWx1ZSwgUGFzc1IKIAogdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlv
bihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJw
Q2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkK
KyAgICBUUkFDRV9FVkVOVF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJDdXJzb3JCYWNrZW5kSW1w
bDo6Y29udGludWUiKTsKKyNlbmRpZgogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsK
IAogICAgIGlmIChtX2N1cnNvciAmJiBrZXkpIHsKQEAgLTEyMSw2ICsxMzQsOSBAQCB2b2lkIElE
QkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBw
cnBLZXksIFBhc3NSZWZQdAogLy8gICAgICAgICAgICBJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0
aXZpdHkoKSB3aWxsIG5lZWQgdG8gYmUgbW9kaWZpZWQgdG8gaGFuZGxlIHRoaXMhISEKIHZvaWQg
SURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29y
LCBQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UX0JFR0lO
MCgiSW5kZXhlZERCIiwgIklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUludGVybmFsIik7
CisjZW5kaWYKICAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IHBycEN1
cnNvcjsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7CiAKQEAgLTEzNSw2ICsxNTEs
OSBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhcwogCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBs
OjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9F
VkVOVF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlIik7
CisjZW5kaWYKICAgICBpZiAoIW1fY3Vyc29yIHx8IG1fY3Vyc29yVHlwZSA9PSBJbmRleEtleUN1
cnNvcikgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9F
UlI7CiAgICAgICAgIHJldHVybjsKQEAgLTE0NSwxMiArMTY0LDE4IEBAIHZvaWQgSURCQ3Vyc29y
QmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmFja3MsCiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUo
aW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNF
X0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRj
aENvbnRpbnVlIik7CisjZW5kaWYKICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
ayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRp
bnVlSW50ZXJuYWwsIHRoaXMsIG51bWJlclRvRmV0Y2gsIHBycENhbGxiYWNrcykpKQogICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CiB9
CiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4g
cHJwQ3Vyc29yLCBpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVF9CRUdJ
TjAoIkluZGV4ZWREQiIsICJJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUlu
dGVybmFsIik7CisjZW5kaWYKICAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNv
ciA9IHBycEN1cnNvcjsKIAogICAgIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGZvdW5kS2V5czsK
QEAgLTE5Nyw2ICsyMjIsOSBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENv
bnRpbnVlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhcwogCiB2b2lkIElEQkN1
cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVu
dXNlZFByZWZldGNoZXMpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZF
TlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoUmVz
ZXQiKTsKKyNlbmRpZgogICAgIG1fdHJhbnNhY3Rpb24tPmFkZFBlbmRpbmdFdmVudHMoLXVudXNl
ZFByZWZldGNoZXMpOwogICAgIG1fY3Vyc29yID0gbV9zYXZlZEN1cnNvcjsKICAgICBtX3NhdmVk
Q3Vyc29yID0gMDsKQEAgLTIxMyw2ICsyNDEsOSBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBs
OjpwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZQog
CiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjbG9zZSgpCiB7CisjaWYgUExBVEZPUk0oQ0hS
T01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURCQ3Vyc29yQmFj
a2VuZEltcGw6OmNsb3NlIik7CisjZW5kaWYKICAgICBtX2Nsb3NlZCA9IHRydWU7CiAgICAgaWYg
KG1fY3Vyc29yKQogICAgICAgICBtX2N1cnNvci0+Y2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJJbmRleC5jcHAKaW5kZXggYmYyZDM4YWYyYjE3ZjI4NTYwMDYwYWEyMTM3ZDI5YWRkMWUyYWFl
Yy4uMGQwNjNjN2QwYmJmMDUwNzdlMjBiZjMwMTAyMWVhNzEzZGQ4MTJkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJJbmRleC5jcHAKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5jbHVkZSAiSURCUmVx
dWVzdC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAKKyNpZiBQTEFURk9STShDSFJP
TUlVTSkKKyNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElE
QkN1cnNvcjo6TkVYVDsKQEAgLTU3LDYgKzYxLDkgQEAgSURCSW5kZXg6On5JREJJbmRleCgpCiAK
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURCSW5k
ZXg6Om9wZW5DdXJzb3IiKTsKKyNlbmRpZgogICAgIGlmIChkaXJlY3Rpb24gIT0gSURCQ3Vyc29y
OjpORVhUICYmIGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFICYmIGRp
cmVjdGlvbiAhPSBJREJDdXJzb3I6OlBSRVYgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6UFJF
Vl9OT19EVVBMSUNBVEUpIHsKICAgICAgICAgLy8gRklYTUU6IE1heSBuZWVkIHRvIGNoYW5nZSB3
aGVuIHNwZWNjZWQ6IGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9p
ZD0xMTQwNgogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VS
UjsKQEAgLTc1LDYgKzgyLDkgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3Bl
bkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXMKIAogUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5k
ZXhlZERCIiwgIklEQkluZGV4Ojpjb3VudCIpOworI2VuZGlmCiAgICAgUmVmUHRyPElEQlJlcXVl
c3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUo
dGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+Y291bnQoa2V5UmFu
Z2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykg
ewpAQCAtODYsNiArOTYsOSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3Vu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUAogCiBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCB1bnNpZ25lZCBz
aG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQorICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQkluZGV4OjpvcGVu
S2V5Q3Vyc29yIik7CisjZW5kaWYKICAgICBpZiAoZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6TkVY
VCAmJiBkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURSAmJiBkaXJlY3Rp
b24gIT0gSURCQ3Vyc29yOjpQUkVWICYmIGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6OlBSRVZfTk9f
RFVQTElDQVRFKSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYXkgbmVlZCB0byBjaGFuZ2Ugd2hlbiBz
cGVjY2VkOiBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTE0
MDYKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlI7CkBA
IC0xMDQsNiArMTE3LDkgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3Blbktl
eUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogCiBQYXNzUmVmUHRyPElE
QlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURCSW5k
ZXg6OmdldCIpOworI2VuZGlmCiAgICAgaWYgKGtleSAmJiAoa2V5LT50eXBlKCkgPT0gSURCS2V5
OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFU
QV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTIwLDYgKzEzNiw5IEBAIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyCiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9F
VkVOVF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJJbmRleDo6Z2V0S2V5Iik7CisjZW5kaWYKICAg
ICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkgewogICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJu
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApp
bmRleCA4NWRiMTU4YWU3YmM1YWUwOWFjNDc3OGQwOGIzYTYwMmQzODM3NmVlLi5jNDU2YmMwZjcw
OTlhNGE2Y2M3YjE2YTUxYTRmMDc4NmM0YjU0NWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAgLTM4LDYgKzM4LDEwIEBACiAjaW5jbHVk
ZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgi
CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjZW5k
aWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJREJJbmRleEJhY2tlbmRJbXBsOjpJREJJbmRl
eEJhY2tlbmRJbXBsKElEQkJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFi
YXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGwqIG9iamVjdFN0b3JlQmFja2Vu
ZCwgaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN0b3JlTmFt
ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5KQpA
QCAtNzIsNiArNzYsOSBAQCBJREJJbmRleEJhY2tlbmRJbXBsOjp+SURCSW5kZXhCYWNrZW5kSW1w
bCgpCiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgdW50eXBlZERp
cmVjdGlvbiwgSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBl
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCiB7CisjaWYgUExBVEZPUk0oQ0hS
T01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURCSW5kZXhCYWNr
ZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsIik7CisjZW5kaWYKICAgICBJREJDdXJzb3I6OkRp
cmVjdGlvbiBkaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDxJREJDdXJzb3I6OkRpcmVjdGlvbj4odW50
eXBlZERpcmVjdGlvbik7CiAKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJh
Y2tpbmdTdG9yZUN1cnNvcjsKQEAgLTEwNCw2ICsxMTEsOSBAQCB2b2lkIElEQkluZGV4QmFja2Vu
ZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cgogCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURCSW5k
ZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvciIpOworI2VuZGlmCiAgICAgUmVmUHRyPElEQkluZGV4
QmFja2VuZEltcGw+IGluZGV4ID0gdGhpczsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlID0gcHJwS2V5UmFuZ2U7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0g
cHJwQ2FsbGJhY2tzOwpAQCAtMTE0LDYgKzEyNCw5IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1w
bDo6b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgdW5zaWdu
CiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElE
QktleVJhbmdlPiBwcnBLZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9S
TShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJJbmRl
eEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yIik7CisjZW5kaWYKICAgICBSZWZQdHI8SURCSW5k
ZXhCYWNrZW5kSW1wbD4gaW5kZXggPSB0aGlzOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5
UmFuZ2UgPSBwcnBLZXlSYW5nZTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mg
PSBwcnBDYWxsYmFja3M7CkBAIC0xMjQsNiArMTM3LDkgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJ
bXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1
bnMKIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudEludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4LCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0
aW9uKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgi
SW5kZXhlZERCIiwgIklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwiKTsKKyNlbmRp
ZgogICAgIHVpbnQzMl90IGNvdW50ID0gMDsKIAogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6
OkN1cnNvcj4gYmFja2luZ1N0b3JlQ3Vyc29yID0gaW5kZXgtPm1fYmFja2luZ1N0b3JlLT5vcGVu
SW5kZXhLZXlDdXJzb3IoaW5kZXgtPm1fZGF0YWJhc2VJZCwgaW5kZXgtPm1fb2JqZWN0U3RvcmVC
YWNrZW5kLT5pZCgpLCBpbmRleC0+aWQoKSwgcmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7
CkBAIC0xNDEsMTIgKzE1NywxOCBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNvdW50SW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSQogCiB2b2lkIElE
QkluZGV4QmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9S
TShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJJbmRl
eEJhY2tlbmRJbXBsOjpjb3VudCIpOworI2VuZGlmCiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2No
ZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmY291bnRJbnRlcm5hbCwgdGhpcywgcmFuZ2Us
IGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogfQogCiB2b2lkIElEQkluZGV4QmFja2Vu
ZEltcGw6OmdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QkluZGV4QmFja2VuZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBib29sIGdl
dE9iamVjdCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKKyNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJJ
bmRleEJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbCIpOworI2VuZGlmCiAgICAgLy8gRklYTUU6IFNw
bGl0IGdldEludGVybmFsIGludG8gdHdvIGZ1bmN0aW9ucywgZ2V0dGluZyByaWQgb2ZmIHxnZXRP
YmplY3R8LgogICAgIGlmIChnZXRPYmplY3QpIHsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gaW5k
ZXgtPm1fYmFja2luZ1N0b3JlLT5nZXRPYmplY3RWaWFJbmRleChpbmRleC0+bV9kYXRhYmFzZUlk
LCBpbmRleC0+bV9vYmplY3RTdG9yZUJhY2tlbmQtPmlkKCksIGluZGV4LT5pZCgpLCAqa2V5KTsK
QEAgLTE2Nyw2ICsxODksOSBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmdldEludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZAogCiB2b2lkIElEQklu
ZGV4QmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9STShDSFJP
TUlVTSkKKyAgICBUUkFDRV9FVkVOVF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJJbmRleEJhY2tl
bmRJbXBsOjpnZXQiKTsKKyNlbmRpZgogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBp
bmRleCA9IHRoaXM7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OwogICAgIFJlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKQEAgLTE3Niw2ICsyMDEs
OSBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleT4gcHJw
S2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcwogCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6
OmdldEtleShQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBU
UkFDRV9FVkVOVF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRL
ZXkiKTsKKyNlbmRpZgogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IHRo
aXM7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OwogICAgIFJlZlB0cjxJREJDYWxs
YmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJPYmplY3RTdG9yZS5jcHAKaW5kZXggZTRjOTY1YjE0OGYxMzgxYmEzYWQ1YTdhZWEzYjZiOTA1
MDY1OWI5Yy4uY2JkMjNiYzk5MDY2NjYxZDJjM2FjYjk4NGYwNGI1ZjBiZDI1MTg5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTM5LDYgKzM5LDEwIEBA
CiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNl
ZFBhcmFtLmg+CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJUcmFjZUV2ZW50
LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgZGVmYXVsdERpcmVjdGlvbiA9IElEQkN1cnNvcjo6TkVYVDsKQEAgLTU1LDI2ICs1
OSw0MSBAQCBJREJPYmplY3RTdG9yZTo6SURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGlkYk9iagogCiBTdHJpbmcgSURCT2JqZWN0U3RvcmU6
Om5hbWUoKSBjb25zdAogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5U
X0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQk9iamVjdFN0b3JlOjpuYW1lIik7CisjZW5kaWYKICAg
ICByZXR1cm4gbV9iYWNrZW5kLT5uYW1lKCk7CiB9CiAKIFN0cmluZyBJREJPYmplY3RTdG9yZTo6
a2V5UGF0aCgpIGNvbnN0CiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZF
TlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3RvcmU6OmtleVBhdGgiKTsKKyNlbmRp
ZgogICAgIHJldHVybiBtX2JhY2tlbmQtPmtleVBhdGgoKTsKIH0KIAogUGFzc1JlZlB0cjxET01T
dHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0CiB7CisjaWYgUExB
VEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURC
T2JqZWN0U3RvcmU6OmluZGV4TmFtZXMiKTsKKyNlbmRpZgogICAgIHJldHVybiBtX2JhY2tlbmQt
PmluZGV4TmFtZXMoKTsKIH0KIAogSURCVHJhbnNhY3Rpb24qIElEQk9iamVjdFN0b3JlOjp0cmFu
c2FjdGlvbigpIGNvbnN0CiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZF
TlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uIik7Cisj
ZW5kaWYKICAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5nZXQoKTsKIH0KIAogUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lm
IFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwg
IklEQk9iamVjdFN0b3JlOjpnZXQiKTsKKyNlbmRpZgogICAgIGlmIChrZXkgJiYgKGtleS0+dHlw
ZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTkxLDYgKzExMCw5IEBA
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VW
RU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQk9iamVjdFN0b3JlOjphZGQiKTsKKyNlbmRpZgog
ICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1
cm4gMDsKQEAgLTEwNyw2ICsxMjksOSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVj
dFN0b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogCiBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9S
TShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJPYmpl
Y3RTdG9yZTo6cHV0Iik7CisjZW5kaWYKICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJ
REJLZXk6OkludmFsaWRUeXBlKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMjMsNiArMTQ4LDkgQEAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6cHV0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3MKIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9y
ZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZPUk0oQ0hS
T01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3Rv
cmU6OmRlbGV0ZSIpOworI2VuZGlmCiAgICAgaWYgKGtleSAmJiAoa2V5LT50eXBlKCkgPT0gSURC
S2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTM5LDYgKzE2Nyw5IEBAIFBhc3NSZWZQ
dHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvCiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
OmNsZWFyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5k
ZXhlZERCIiwgIklEQk9iamVjdFN0b3JlOjpjbGVhciIpOworI2VuZGlmCiAgICAgUmVmUHRyPElE
QlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55Ojpj
cmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+Y2xlYXIo
cmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYgKGVjKSB7CkBA
IC0xNTAsNiArMTgxLDkgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
Y2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXgKIAogUGFzc1JlZlB0cjxJ
REJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYXRoLCBjb25zdCBPcHRpb25zT2JqZWN0JiBvcHRpb25zLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVO
VF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgiKTsKKyNl
bmRpZgogICAgIGlmICghSURCSXNWYWxpZEtleVBhdGgoa2V5UGF0aCkpIHsKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9OX1RSQU5TSUVOVF9FUlI7CiAgICAgICAgIHJldHVy
biAwOwpAQCAtMTc0LDYgKzIwOCw5IEBAIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluCiAKIFBhc3NS
ZWZQdHI8SURCSW5kZXg+IElEQk9iamVjdFN0b3JlOjppbmRleChjb25zdCBTdHJpbmcmIG5hbWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNF
X0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQk9iamVjdFN0b3JlOjppbmRleCIpOworI2Vu
ZGlmCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24tPmZpbmlzaGVkKCkpIHsKICAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSOwogICAgICAgICByZXR1cm4gMDsK
QEAgLTIwMCw2ICsyMzcsOSBAQCB2b2lkIElEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleChjb25z
dCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJl
Y3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAg
IFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQk9iamVjdFN0b3JlOjpvcGVuQ3Vy
c29yIik7CisjZW5kaWYKICAgICBpZiAoZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6TkVYVCAmJiBk
aXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpORVhUX05PX0RVUExJQ0FURSAmJiBkaXJlY3Rpb24gIT0g
SURCQ3Vyc29yOjpQUkVWICYmIGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6OlBSRVZfTk9fRFVQTElD
QVRFKSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYXkgbmVlZCB0byBjaGFuZ2Ugd2hlbiBzcGVjY2Vk
OiBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MDYKICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q09OU1RSQUlOVF9FUlI7CkBAIC0yMTgs
NiArMjU4LDkgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6b3BlbkN1
cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKIAogUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewor
I2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERC
IiwgIklEQk9iamVjdFN0b3JlOjpjb3VudCIpOworI2VuZGlmCiAgICAgUmVmUHRyPElEQlJlcXVl
c3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgSURCQW55OjpjcmVhdGUo
dGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2VuZC0+Y291bnQocmFuZ2Us
IHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHAKaW5kZXggZjA3ZWEzZWViYTZlZTdhMzA1ZTdlOTVmMjMzY2E3MGU5OTA3ZTY2OC4uMTZh
MDk0NTljNzIxZmExYzhkYTFiNjRmOTM2N2YwOTQ5NDViMzBlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCkBAIC00NCw2
ICs0NCwxMCBAQAogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAorI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6On5JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsKCkKQEAgLTgzLDYgKzg3LDkgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjppbmRleE5hbWVzKCkgY29uc3QKIAogdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZPUk0oQ0hS
T01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6Z2V0Iik7CisjZW5kaWYKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0aGlzOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9
IHBycEtleTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFj
a3M7CkBAIC05Miw2ICs5OSw5IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0
KFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdHI8SURCQ2FsCiAKIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRl
eGVkREIiLCAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwiKTsKKyNlbmRp
ZgogICAgIFN0cmluZyB3aXJlRGF0YSA9IG9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+Z2V0
T2JqZWN0U3RvcmVSZWNvcmQob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUt
PmlkKCksICprZXkpOwogICAgIGlmICh3aXJlRGF0YS5pc051bGwoKSkgewogICAgICAgICBjYWxs
YmFja3MtPm9uU3VjY2VzcyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnVuZGVmaW5lZFZhbHVlKCkp
OwpAQCAtMTAzLDYgKzExMyw5IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAKIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQktleT4gZmV0Y2hLZXlGcm9tS2V5UGF0aChTZXJpYWxpemVkU2NyaXB0VmFs
dWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCiB7CisjaWYgUExBVEZPUk0oQ0hST01J
VU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbDo6ZmV0Y2hLZXlGcm9tS2V5UGF0aCIpOworI2VuZGlmCiAgICAgVmVjdG9yPFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4gdmFsdWVzOwogICAgIHZhbHVlcy5hcHBlbmQo
dmFsdWUpOwogICAgIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGtleXM7CkBAIC0xMTUsMTEgKzEy
OCwxNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGZldGNoS2V5RnJvbUtleVBhdGgoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29ucwogCiBzdGF0aWMgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGluamVjdEtleUludG9LZXlQYXRoKFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5U
X0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmluamVjdEtl
eUludG9LZXlQYXRoIik7CisjZW5kaWYKICAgICByZXR1cm4gSURCS2V5UGF0aEJhY2tlbmRJbXBs
OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOwog
fQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFB1
dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4w
KCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0Iik7CisjZW5kaWYK
ICAgICBpZiAodHJhbnNhY3Rpb25QdHItPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9P
TkxZKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7
CiAgICAgICAgIHJldHVybjsKQEAgLTIwMCw2ICsyMTksOSBAQCB2b2lkIElEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OnJldmVydEF1dG9JbmNyZW1lbnRLZXlDYWNoZShTY3JpcHRFeGVjdXRpb25D
b250ZQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+
IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUs
IFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IHRyYW5zYWN0aW9uKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRS
QUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OnB1dEludGVybmFsIik7CisjZW5kaWYKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiB2YWx1ZSA9IHBycFZhbHVlOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKIApA
QCAtMzI2LDYgKzM0OCw5IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAKIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBy
cEtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisj
aWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIi
LCAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlIik7CisjZW5kaWYKICAgICBpZiAo
dHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKSB7CiAgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CiAgICAgICAgIHJl
dHVybjsKQEAgLTM0NSw2ICszNzAsOSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZQogCiB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0
b3JlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UX0JFR0lO
MCgiSW5kZXhlZERCIiwgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFs
Iik7CisjZW5kaWYKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpPYmplY3RTdG9yZVJlY29y
ZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZpZXIgPSBvYmplY3RTdG9yZS0+bV9iYWNraW5nU3Rv
cmUtPmNyZWF0ZUludmFsaWRSZWNvcmRJZGVudGlmaWVyKCk7CiAgICAgaWYgKCFvYmplY3RTdG9y
ZS0+bV9iYWNraW5nU3RvcmUtPmtleUV4aXN0c0luT2JqZWN0U3RvcmUob2JqZWN0U3RvcmUtPm1f
ZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUtPmlkKCksICprZXksIHJlY29yZElkZW50aWZpZXIuZ2V0
KCkpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Ym9vbGVhblZhbHVlKGZhbHNlKSk7CkBAIC0zNjUsNiArMzkzLDkgQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlAKIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcihQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9S
TShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhciIpOworI2VuZGlmCiAgICAgaWYgKHRyYW5zYWN0aW9u
LT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSkgewogICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOwogICAgICAgICByZXR1cm47CkBAIC01
MzEsNiArNTYyLDkgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRl
eEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXMKIAogdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycFJh
bmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNF
X0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9w
ZW5DdXJzb3IiKTsKKyNlbmRpZgogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
PiBvYmplY3RTdG9yZSA9IHRoaXM7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSA9IHBy
cFJhbmdlOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNr
czsKQEAgLTU0NCw2ICs1NzgsOSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9w
ZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIHVucwogCiB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RT
dG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IHRtcERp
cmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQogeworI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbCIpOworI2VuZGlmCiAgICAg
SURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8SURCQ3Vyc29yOjpE
aXJlY3Rpb24+KHRtcERpcmVjdGlvbik7CiAKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpD
dXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvciA9IG9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKG9iamVjdFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0
b3JlLT5pZCgpLCByYW5nZS5nZXQoKSwgZGlyZWN0aW9uKTsKQEAgLTU1OCwxMiArNTk1LDE4IEBA
IHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzCiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAg
IFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNvdW50Iik7CisjZW5kaWYKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2so
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudEludGVy
bmFsLCB0aGlzLCByYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQogICAgICAgICBlYyA9
IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CiB9CiAKIHZv
aWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RT
dG9yZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiB0cmFuc2FjdGlvbikKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVO
VF9CRUdJTjAoIkluZGV4ZWREQiIsICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudElu
dGVybmFsIik7CisjZW5kaWYKICAgICB1aW50MzJfdCBjb3VudCA9IDA7CiAgICAgUmVmUHRyPElE
QkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBvYmplY3RTdG9yZS0+
bV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcihvYmplY3RTdG9yZS0+bV9kYXRh
YmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgcmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7
CiAgICAgaWYgKCFiYWNraW5nU3RvcmVDdXJzb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmluZGV4IDI0ZmExYzYwNTIx
MmQxZjJlNzBhZjA1ZmU2OWNiOTM0YjQyMjIwMjkuLmRiMWU1OTg2MDBhOTNlMDM4ZGVlMjUyN2Uy
MTllZDkyYjlmN2E0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuaCIKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y3JlYXRlKERPTVN0cmlu
Z0xpc3QqIG9iamVjdFN0b3JlcywgdW5zaWduZWQgc2hvcnQgbW9kZSwgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbCogZGF0YWJhc2UpCkBAIC0xMDQsNiArMTA4LDkgQEAgYm9vbCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2soUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjoKIAogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjphYm9ydCgpCiB7CisjaWYg
UExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJJbmRleGVkREIiLCAi
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQiKTsKKyNlbmRpZgogICAgIGlmIChtX3N0
YXRlID09IEZpbmlzaGVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTE4NSw2ICsxOTIsOSBAQCB2
b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnN0YXJ0KCkKIAogdm9pZCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsOjpjb21taXQoKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAg
IFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OmNvbW1pdCIpOworI2VuZGlmCiAgICAgLy8gVGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMg
b2JqZWN0IG1heSBiZSByZWxlYXNlZCB3aGlsZSBwZXJmb3JtaW5nIHRoZQogICAgIC8vIGNvbW1p
dCBzdGVwcyBiZWxvdy4gV2UgdGhlcmVmb3JlIHRha2UgYSBzZWxmIHJlZmVyZW5jZSB0byBrZWVw
IG91cnNlbHZlcwogICAgIC8vIGFsaXZlIHdoaWxlIGV4ZWN1dGluZyB0aGlzIG1ldGhvZC4KQEAg
LTIwMyw2ICsyMTMsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCgp
CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza1RpbWVyRmlyZWQoVGltZXI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4qKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQor
ICAgIFRSQUNFX0VWRU5UX0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OnRhc2tUaW1lckZpcmVkIik7CisjZW5kaWYKICAgICBBU1NFUlQoIW1fdGFza1F1ZXVl
LmlzRW1wdHkoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGFydFBlbmRpbmcpIHsKQEAgLTIy
Myw2ICsyMzYsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZp
cmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KgogCiB2b2lkIElEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OnRhc2tFdmVudFRpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbD4qKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5U
X0JFR0lOMCgiSW5kZXhlZERCIiwgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tFdmVu
dFRpbWVyRmlyZWQiKTsKKyNlbmRpZgogICAgIEFTU0VSVChtX3N0YXRlID09IFJ1bm5pbmcpOwog
CiAgICAgaWYgKCFtX3BlbmRpbmdFdmVudHMgJiYgbV90YXNrUXVldWUuaXNFbXB0eSgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127660</attachid>
            <date>2012-02-17 14:45:38 -0800</date>
            <delta_ts>2012-02-21 17:12:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78831-20120217144536.patch</filename>
            <type>text/plain</type>
            <size>42637</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBhYjY4NGIyMzY3M2I4
M2E3Yjg4OGFiYjVjODIzMzhjYTE3MWI1NC4uZWEwYTdmYWM3Mzk3N2Q5YzI5M2M1YmY3ZGRiNzkx
YjU2YjU3MGI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTAyLTE2ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IEludGVncmF0ZSB3aXRoIGFib3V0OnRyYWNpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4ODMxCisKKyAgICAgICAgSW5zdHJ1bWVudCBz
b21lIG9mIHRoZSBtb3JlIGludGVyZXN0aW5nIGZ1bmN0aW9ucyBzbyB0aGV5CisgICAgICAgIHNo
b3cgdXAgaW4gYW4gYWJvdXQ6dHJhY2luZyBydW4gaW4gdGhlIENocm9taXVtIHBvcnQuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL0lE
QkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmRpcmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJD
dXJzb3I6OnByaW1hcnlLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjp2YWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5k
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6dmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnVwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbklu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0
Y2hDb250aW51ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJl
ZmV0Y2hDb250aW51ZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tl
bmRJbXBsOjpwcmVmZXRjaFJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tl
bmRJbXBsOjpjbG9zZSk6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJ
bmRleDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5LZXlDdXJzb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJJbmRleDo6Z2V0S2V5KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcklu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudEludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldEludGVybmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmU6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
OjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmFkZCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9i
amVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RT
dG9yZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNyZWF0ZUlu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjppbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZTo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6Z2V0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZmV0Y2hLZXlGcm9tS2V5UGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjppbmplY3RLZXlJbnRvS2V5UGF0aCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnRJbnRl
cm5hbCk6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrVGltZXJGaXJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrRXZlbnRU
aW1lckZpcmVkKToKKwogMjAxMi0wMi0xNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwODA3MS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAK
aW5kZXggYTlhZGQxOGFkNTFlMjdhZjJjZmJlYzc3YzNjZTUyMWMwODQ0ZDIwNC4uNDk3NGZmOTRm
MzdlNjM1MTBjZTczMTZiMDRlYmI2NTYzOTFhNWZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTM3LDYgKzM3LDEwIEBA
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
KyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heGltdW1EZXB0
aCA9IDIwMDA7CkBAIC0xNDksNiArMTUzLDkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuc3Vy
ZU50aFZhbHVlT25LZXlQYXRoKHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgcm9vdFZhbHVlLAogCiBQ
YXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBh
dGgoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYga2V5UGF0aCkKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9F
VkVOVDAoIkluZGV4ZWREQiIsICJjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5
UGF0aCIpOworI2VuZGlmCiAgICAgVjhMb2NhbENvbnRleHQgbG9jYWxDb250ZXh0OwogICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2OFZhbHVlKHZhbHVlLT5kZXNlcmlhbGl6ZSgpKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhLZXkoZ2V0TnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwg
a2V5UGF0aCwga2V5UGF0aC5zaXplKCkpKTsKQEAgLTE1OSw2ICsxNjYsOSBAQCBQYXNzUmVmUHRy
PElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBhdGgoUGFzc1Jl
ZlB0cjxTZXJpYWxpegogCiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gaW5qZWN0
SURCS2V5SW50b1NlcmlhbGl6ZWRWYWx1ZShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBr
ZXlQYXRoKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5k
ZXhlZERCIiwgImluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUiKTsKKyNlbmRpZgogICAg
IFY4TG9jYWxDb250ZXh0IGxvY2FsQ29udGV4dDsKICAgICBpZiAoIWtleVBhdGguc2l6ZSgpKQog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcAppbmRleCAx
NjZjMmRkNmQzZDA5ZTY0ZWEzMWQ3MGY2MDFhZTQ2MDU5OWRjMWI0Li45YzM5ODkwMzA0MmM3M2Y0
Y2Q3YzE1OWYzNTk2M2FhMDA4MDA1ZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3Iu
Y3BwCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAorI2lmIFBMQVRGT1JNKENI
Uk9NSVVNKQorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBJREJDdXJzb3I6OmNyZWF0ZShQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQlJlcXVlc3QqIHJlcXVl
c3QsIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCkBAIC02Miwy
MSArNjYsMzMgQEAgSURCQ3Vyc29yOjp+SURCQ3Vyc29yKCkKIAogdW5zaWduZWQgc2hvcnQgSURC
Q3Vyc29yOjpkaXJlY3Rpb24oKSBjb25zdAogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAg
IFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQkN1cnNvcjo6ZGlyZWN0aW9uIik7CisjZW5k
aWYKICAgICByZXR1cm4gbV9iYWNrZW5kLT5kaXJlY3Rpb24oKTsKIH0KIAogUGFzc1JlZlB0cjxJ
REJLZXk+IElEQkN1cnNvcjo6a2V5KCkgY29uc3QKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkK
KyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJREJDdXJzb3I6OmtleSIpOworI2VuZGlm
CiAgICAgcmV0dXJuIG1fYmFja2VuZC0+a2V5KCk7CiB9CiAKIFBhc3NSZWZQdHI8SURCS2V5PiBJ
REJDdXJzb3I6OnByaW1hcnlLZXkoKSBjb25zdAogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQor
ICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQkN1cnNvcjo6cHJpbWFyeUtleSIpOwor
I2VuZGlmCiAgICAgcmV0dXJuIG1fYmFja2VuZC0+cHJpbWFyeUtleSgpOwogfQogCiBQYXNzUmVm
UHRyPElEQkFueT4gSURCQ3Vyc29yOjp2YWx1ZSgpIGNvbnN0CiB7CisjaWYgUExBVEZPUk0oQ0hS
T01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCQ3Vyc29yOjp2YWx1ZSIp
OworI2VuZGlmCiAgICAgcmV0dXJuIElEQkFueTo6Y3JlYXRlKG1fYmFja2VuZC0+dmFsdWUoKSk7
CiB9CiAKQEAgLTg3LDYgKzEwMyw5IEBAIElEQkFueSogSURCQ3Vyc29yOjpzb3VyY2UoKSBjb25z
dAogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBkYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2
YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAg
VFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCQ3Vyc29yOjp1cGRhdGUiKTsKKyNlbmRpZgog
ICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRl
eHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2Jh
Y2tlbmQtPnVwZGF0ZSh2YWx1ZSwgcmVxdWVzdCwgZWMpOwogICAgIGlmIChlYykgewpAQCAtOTgs
NiArMTE3LDkgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmUKIAogdm9pZCBJREJDdXJzb3I6OmNv
bnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIi
LCAiSURCQ3Vyc29yOjpjb250aW51ZSIpOworI2VuZGlmCiAgICAgaWYgKGtleSAmJiAoa2V5LT50
eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTExNCw2ICsxMzYsOSBA
QCB2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBFeGNlcHRpb25Db2RlJiBlYykKIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6
OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgi
SW5kZXhlZERCIiwgIklEQkN1cnNvcjo6ZGVsZXRlIik7CisjZW5kaWYKICAgICBSZWZQdHI8SURC
UmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNy
ZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5kZWxldGVG
dW5jdGlvbihyZXF1ZXN0LCBlYyk7CiAgICAgaWYgKGVjKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCmluZGV4IGZmNzU2Y2VkZWNhYzJhNjY5
OTk5Mjc3OTk3OTM3MjY3OTcyMTNlYjEuLmIzODQ0ZjgwNTZhZmM4YmQxNTVkOTFiMmFmNTIxZGZl
Yjg1NzZhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFj
a2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCisj
aWYgUExBVEZPUk0oQ0hST01JVU0pCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSURCQ3Vyc29yQmFja2VuZEltcGw6OklEQkN1cnNvckJh
Y2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGN1cnNvciwgSURC
Q3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0aW9uLCBDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIElEQk9iamVjdFN0b3JlQmFj
a2VuZEludGVyZmFjZSogb2JqZWN0U3RvcmUpCkBAIC03OSw2ICs4Myw5IEBAIFBhc3NSZWZQdHI8
SURCS2V5PiBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJpbWFyeUtleSgpIGNvbnN0CiAKIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJDdXJzb3JCYWNrZW5kSW1wbDo6dmFsdWUo
KSBjb25zdAogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5k
ZXhlZERCIiwgIklEQkN1cnNvckJhY2tlbmRJbXBsOjp2YWx1ZSIpOworI2VuZGlmCiAgICAgaWYg
KG1fY3Vyc29yVHlwZSA9PSBJbmRleEtleUN1cnNvcikKICAgICAgIHJldHVybiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOwogICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZUZyb21XaXJlKG1fY3Vyc29yLT52YWx1ZSgpKTsKQEAgLTg2LDYgKzkzLDkgQEAg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IElEQkN1cnNvckJhY2tlbmRJbXBsOjp2
YWx1ZSgpIGNvbnN0CiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnVwZGF0ZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQkN1cnNvckJhY2tlbmRJbXBsOjp1
cGRhdGUiKTsKKyNlbmRpZgogICAgIGlmICghbV9jdXJzb3IgfHwgbV9jdXJzb3JUeXBlID09IElu
ZGV4S2V5Q3Vyc29yKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9B
TExPV0VEX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtOTYsNiArMTA2LDkgQEAgdm9pZCBJREJD
dXJzb3JCYWNrZW5kSW1wbDo6dXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiB2YWx1ZSwgUGFzc1IKIAogdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9STShDSFJPTUlV
TSkKKyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJREJDdXJzb3JCYWNrZW5kSW1wbDo6
Y29udGludWUiKTsKKyNlbmRpZgogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKIAog
ICAgIGlmIChtX2N1cnNvciAmJiBrZXkpIHsKQEAgLTEyMSw2ICsxMzQsOSBAQCB2b2lkIElEQkN1
cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBL
ZXksIFBhc3NSZWZQdAogLy8gICAgICAgICAgICBJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZp
dHkoKSB3aWxsIG5lZWQgdG8gYmUgbW9kaWZpZWQgdG8gaGFuZGxlIHRoaXMhISEKIHZvaWQgSURC
Q3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29yLCBQ
YXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhl
ZERCIiwgIklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUludGVybmFsIik7CisjZW5kaWYK
ICAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IHBycEN1cnNvcjsKICAg
ICBSZWZQdHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7CiAKQEAgLTEzNSw2ICsxNTEsOSBAQCB2b2lk
IElEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhcwogCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVDAoIklu
ZGV4ZWREQiIsICJJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlIik7CisjZW5kaWYKICAgICBp
ZiAoIW1fY3Vyc29yIHx8IG1fY3Vyc29yVHlwZSA9PSBJbmRleEtleUN1cnNvcikgewogICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiAgICAgICAgIHJl
dHVybjsKQEAgLTE0NSwxMiArMTY0LDE4IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmRl
bGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsCiAKIHZv
aWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0
Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhl
ZERCIiwgIklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlIik7CisjZW5kaWYK
ICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2so
JklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwsIHRoaXMsIG51
bWJlclRvRmV0Y2gsIHBycENhbGxiYWNrcykpKQogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CiB9CiAKIHZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29yLCBpbnQgbnVtYmVy
VG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKKyNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJREJDdXJzb3JC
YWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsIik7CisjZW5kaWYKICAgICBSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IHBycEN1cnNvcjsKIAogICAgIFZlY3Rv
cjxSZWZQdHI8SURCS2V5PiA+IGZvdW5kS2V5czsKQEAgLTE5Nyw2ICsyMjIsOSBAQCB2b2lkIElE
QkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhcwogCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaFJl
c2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpCiB7CisjaWYgUExB
VEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCQ3Vyc29y
QmFja2VuZEltcGw6OnByZWZldGNoUmVzZXQiKTsKKyNlbmRpZgogICAgIG1fdHJhbnNhY3Rpb24t
PmFkZFBlbmRpbmdFdmVudHMoLXVudXNlZFByZWZldGNoZXMpOwogICAgIG1fY3Vyc29yID0gbV9z
YXZlZEN1cnNvcjsKICAgICBtX3NhdmVkQ3Vyc29yID0gMDsKQEAgLTIxMyw2ICsyNDEsOSBAQCB2
b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hl
cywgaW50IHVudXNlZFByZWZldGNoZQogCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjbG9z
ZSgpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVk
REIiLCAiSURCQ3Vyc29yQmFja2VuZEltcGw6OmNsb3NlIik7CisjZW5kaWYKICAgICBtX2Nsb3Nl
ZCA9IHRydWU7CiAgICAgaWYgKG1fY3Vyc29yKQogICAgICAgICBtX2N1cnNvci0+Y2xvc2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggMjU2NTBmMzkyN2ViODlj
Mjc1ZjM2OGNhNTUxMWVhNzk0OGUzYmIzZC4uZjE0MjgwZDhjODg1OTI4ZWQ0NDg3ZGRjZDNkZGIz
NmExNTRlNWJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAgLTI2
LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZS5o
IgogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKICNpbmNsdWRlICJFdmVudFF1ZXVl
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIK
QEAgLTQ0LDcgKzQ2LDkgQEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAj
aW5jbHVkZSA8bGltaXRzPgogCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjaWYgUExB
VEZPUk0oQ0hST01JVU0pCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2VuZGlmCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMjIxLDYgKzIyNSw5IEBAIHZvaWQgSURCRGF0YWJhc2U6OmVu
cXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIAogYm9vbCBJREJEYXRhYmFzZTo6
ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKKyNpZiBQTEFURk9STShD
SFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJREJEYXRhYmFzZTo6ZGlz
cGF0Y2hFdmVudCIpOworI2VuZGlmCiAgICAgQVNTRVJUKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLnZlcnNpb25jaGFuZ2VFdmVudCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2VucXVldWVkRXZlbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtX2VucXVldWVkRXZl
bnRzW2ldLmdldCgpID09IGV2ZW50LmdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNw
cAppbmRleCBiZjJkMzhhZjJiMTdmMjg1NjAwNjBhYTIxMzdkMjlhZGQxZTJhYWVjLi4yYTM3YWEz
MWQxMDY4NDk2ODYzNGZiZDU0YmM3YzAwNmEzZjZlODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkluZGV4LmNwcApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorI2lu
Y2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURCQ3Vyc29yOjpO
RVhUOwpAQCAtNTcsNiArNjEsOSBAQCBJREJJbmRleDo6fklEQkluZGV4KCkKIAogUGFzc1JlZlB0
cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgdW5zaWduZWQgc2hv
cnQgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9STShDSFJPTUlV
TSkKKyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJREJJbmRleDo6b3BlbkN1cnNvciIp
OworI2VuZGlmCiAgICAgaWYgKGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6Ok5FWFQgJiYgZGlyZWN0
aW9uICE9IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUgJiYgZGlyZWN0aW9uICE9IElEQkN1
cnNvcjo6UFJFViAmJiBkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSkg
ewogICAgICAgICAvLyBGSVhNRTogTWF5IG5lZWQgdG8gY2hhbmdlIHdoZW4gc3BlY2NlZDogaHR0
cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTExNDA2CiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSOwpAQCAtNzUsNiArODIs
OSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhcwogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
QkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCSW5kZXg6OmNv
dW50Iik7CisjZW5kaWYKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVl
c3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5n
ZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jb3VudChrZXlSYW5nZSwgcmVxdWVzdCwgbV90cmFuc2Fj
dGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYgKGVjKSB7CkBAIC04Niw2ICs5Niw5IEBAIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQCiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6
Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQw
KCJJbmRleGVkREIiLCAiSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IiKTsKKyNlbmRpZgogICAgIGlm
IChkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpORVhUICYmIGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6
Ok5FWFRfTk9fRFVQTElDQVRFICYmIGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6OlBSRVYgJiYgZGly
ZWN0aW9uICE9IElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpIHsKICAgICAgICAgLy8gRklY
TUU6IE1heSBuZWVkIHRvIGNoYW5nZSB3aGVuIHNwZWNjZWQ6IGh0dHA6Ly93d3cudzMub3JnL0J1
Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xMTQwNgogICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsKQEAgLTEwNCw2ICsxMTcsOSBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsCiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVO
VDAoIkluZGV4ZWREQiIsICJJREJJbmRleDo6Z2V0Iik7CisjZW5kaWYKICAgICBpZiAoa2V5ICYm
IChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkgewogICAgICAgICBlYyA9IElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMjAs
NiArMTM2LDkgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHIKIAogUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJJbmRleDo6Z2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQkluZGV4OjpnZXRL
ZXkiKTsKKyNlbmRpZgogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6SW52
YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJS
OwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCSW5kZXhCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4
QmFja2VuZEltcGwuY3BwCmluZGV4IDg1ZGIxNThhZTdiYzVhZTA5YWM0Nzc4ZDA4YjNhNjAyZDM4
Mzc2ZWUuLjZkZmY4YjNhMzZhNTY4ZjkyMGMxYjZkMmViZDZiNTEwNmFiNjg2ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcApAQCAtMzgsNiAr
MzgsMTAgQEAKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuaCIKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorI2luY2x1ZGUgIlRy
YWNlRXZlbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElEQkluZGV4QmFj
a2VuZEltcGw6OklEQkluZGV4QmFja2VuZEltcGwoSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3Rv
cmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbCog
b2JqZWN0U3RvcmVCYWNrZW5kLCBpbnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgc3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGJvb2wgdW5pcXVlLCBi
b29sIG11bHRpRW50cnkpCkBAIC03Miw2ICs3Niw5IEBAIElEQkluZGV4QmFja2VuZEltcGw6On5J
REJJbmRleEJhY2tlbmRJbXBsKCkKIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vy
c29ySW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhC
YWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCB1bnNpZ25l
ZCBzaG9ydCB1bnR5cGVkRGlyZWN0aW9uLCBJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlOjpDdXJz
b3JUeXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbikKIHsK
KyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJ
REJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwiKTsKKyNlbmRpZgogICAgIElE
QkN1cnNvcjo6RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0YXRpY19jYXN0PElEQkN1cnNvcjo6RGly
ZWN0aW9uPih1bnR5cGVkRGlyZWN0aW9uKTsKIAogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6
OkN1cnNvcj4gYmFja2luZ1N0b3JlQ3Vyc29yOwpAQCAtMTA0LDYgKzExMSw5IEBAIHZvaWQgSURC
SW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyCiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0
aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJ
REJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7CisjZW5kaWYKICAgICBSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW1wbD4gaW5kZXggPSB0aGlzOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4g
a2V5UmFuZ2UgPSBwcnBLZXlSYW5nZTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MgPSBwcnBDYWxsYmFja3M7CkBAIC0xMTQsNiArMTI0LDkgQEAgdm9pZCBJREJJbmRleEJhY2tl
bmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1
bnNpZ24KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yKFBhc3NSZWZQ
dHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQkluZGV4
QmFja2VuZEltcGw6Om9wZW5LZXlDdXJzb3IiKTsKKyNlbmRpZgogICAgIFJlZlB0cjxJREJJbmRl
eEJhY2tlbmRJbXBsPiBpbmRleCA9IHRoaXM7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSA9IHBycEtleVJhbmdlOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9
IHBycENhbGxiYWNrczsKQEAgLTEyNCw2ICsxMzcsOSBAQCB2b2lkIElEQkluZGV4QmFja2VuZElt
cGw6Om9wZW5LZXlDdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIHVu
cwogCiB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5kZXgsIFBhc3NS
ZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rp
b24pCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVk
REIiLCAiSURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbCIpOworI2VuZGlmCiAgICAg
dWludDMyX3QgY291bnQgPSAwOwogCiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29y
PiBiYWNraW5nU3RvcmVDdXJzb3IgPSBpbmRleC0+bV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtl
eUN1cnNvcihpbmRleC0+bV9kYXRhYmFzZUlkLCBpbmRleC0+bV9vYmplY3RTdG9yZUJhY2tlbmQt
PmlkKCksIGluZGV4LT5pZCgpLCByYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKQEAgLTE0
MSwxMiArMTU3LDE4IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJCiAKIHZvaWQgSURCSW5kZXhC
YWNrZW5kSW1wbDo6Y291bnQoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQkluZGV4QmFja2VuZEltcGw6
OmNvdW50Iik7CisjZW5kaWYKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZjb3VudEludGVybmFsLCB0aGlzLCByYW5nZSwgY2FsbGJhY2tzLCB0
cmFuc2FjdGlvbikpKQogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FD
VElPTl9JTkFDVElWRV9FUlI7CiB9CiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0SW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW1wbD4gaW5kZXgsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIGJvb2wgZ2V0T2JqZWN0LCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQkluZGV4QmFja2VuZEltcGw6Omdl
dEludGVybmFsIik7CisjZW5kaWYKICAgICAvLyBGSVhNRTogU3BsaXQgZ2V0SW50ZXJuYWwgaW50
byB0d28gZnVuY3Rpb25zLCBnZXR0aW5nIHJpZCBvZmYgfGdldE9iamVjdHwuCiAgICAgaWYgKGdl
dE9iamVjdCkgewogICAgICAgICBTdHJpbmcgdmFsdWUgPSBpbmRleC0+bV9iYWNraW5nU3RvcmUt
PmdldE9iamVjdFZpYUluZGV4KGluZGV4LT5tX2RhdGFiYXNlSWQsIGluZGV4LT5tX29iamVjdFN0
b3JlQmFja2VuZC0+aWQoKSwgaW5kZXgtPmlkKCksICprZXkpOwpAQCAtMTY3LDYgKzE4OSw5IEBA
IHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCSW5kCiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0
KFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBD
YWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VW
RU5UMCgiSW5kZXhlZERCIiwgIklEQkluZGV4QmFja2VuZEltcGw6OmdldCIpOworI2VuZGlmCiAg
ICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4ID0gdGhpczsKICAgICBSZWZQdHI8
SURCS2V5PiBrZXkgPSBwcnBLZXk7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
ID0gcHJwQ2FsbGJhY2tzOwpAQCAtMTc2LDYgKzIwMSw5IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5k
SW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzCiAKIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5KFBhc3NSZWZQdHI8SURCS2V5
PiBwcnBLZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQog
eworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwg
IklEQkluZGV4QmFja2VuZEltcGw6OmdldEtleSIpOworI2VuZGlmCiAgICAgUmVmUHRyPElEQklu
ZGV4QmFja2VuZEltcGw+IGluZGV4ID0gdGhpczsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBw
cnBLZXk7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcAppbmRleCBlNGM5NjVi
MTQ4ZjEzODFiYTNhZDVhN2FlYTNiNmI5MDUwNjU5YjljLi5iMWQyMTIzNzI1NjE5NzQxN2I4MzU1
MzUxZmY0MTMzMWU3NTUyMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
Qk9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0
b3JlLmNwcApAQCAtMzksNiArMzksMTAgQEAKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAorI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBkZWZhdWx0RGlyZWN0aW9uID0gSURC
Q3Vyc29yOjpORVhUOwpAQCAtNTUsMjYgKzU5LDQxIEBAIElEQk9iamVjdFN0b3JlOjpJREJPYmpl
Y3RTdG9yZShQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gaWRiT2Jq
CiAKIFN0cmluZyBJREJPYmplY3RTdG9yZTo6bmFtZSgpIGNvbnN0CiB7CisjaWYgUExBVEZPUk0o
Q0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3RvcmU6
Om5hbWUiKTsKKyNlbmRpZgogICAgIHJldHVybiBtX2JhY2tlbmQtPm5hbWUoKTsKIH0KIAogU3Ry
aW5nIElEQk9iamVjdFN0b3JlOjprZXlQYXRoKCkgY29uc3QKIHsKKyNpZiBQTEFURk9STShDSFJP
TUlVTSkKKyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJREJPYmplY3RTdG9yZTo6a2V5
UGF0aCIpOworI2VuZGlmCiAgICAgcmV0dXJuIG1fYmFja2VuZC0+a2V5UGF0aCgpOwogfQogCiBQ
YXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKCkgY29u
c3QKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWRE
QiIsICJJREJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcyIpOworI2VuZGlmCiAgICAgcmV0dXJuIG1f
YmFja2VuZC0+aW5kZXhOYW1lcygpOwogfQogCiBJREJUcmFuc2FjdGlvbiogSURCT2JqZWN0U3Rv
cmU6OnRyYW5zYWN0aW9uKCkgY29uc3QKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBU
UkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rpb24iKTsK
KyNlbmRpZgogICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLmdldCgpOwogfQogCiBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisj
aWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURC
T2JqZWN0U3RvcmU6OmdldCIpOworI2VuZGlmCiAgICAgaWYgKGtleSAmJiAoa2V5LT50eXBlKCkg
PT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtOTEsNiArMTEwLDkgQEAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3MKIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6YWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQw
KCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3RvcmU6OmFkZCIpOworI2VuZGlmCiAgICAgaWYgKGtl
eSAmJiAoa2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAt
MTA3LDYgKzEyOSw5IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmFk
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiAKIFBhc3NSZWZQdHI8SURC
UmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQk9iamVjdFN0b3JlOjpwdXQiKTsK
KyNlbmRpZgogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5
cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAg
ICAgICByZXR1cm4gMDsKQEAgLTEyMyw2ICsxNDgsOSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
cwogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleT4ga2V5
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFD
RV9FVkVOVDAoIkluZGV4ZWREQiIsICJJREJPYmplY3RTdG9yZTo6ZGVsZXRlIik7CisjZW5kaWYK
ICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkgewog
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0
dXJuIDA7CkBAIC0xMzksNiArMTY3LDkgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmpl
Y3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KIAogUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZPUk0oQ0hS
T01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3RvcmU6OmNs
ZWFyIik7CisjZW5kaWYKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVl
c3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5n
ZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jbGVhcihyZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNr
ZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTE1MCw2ICsxODEsOSBAQCBQYXNzUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBFeAogCiBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3Jl
YXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIGNvbnN0
IE9wdGlvbnNPYmplY3QmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQk9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleCIpOworI2VuZGlmCiAgICAgaWYgKCFJREJJc1ZhbGlkS2V5UGF0aChr
ZXlQYXRoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT05fVFJBTlNJ
RU5UX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzQsNiArMjA4LDkgQEAgUGFzc1JlZlB0
cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW4KIAogUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6Omlu
ZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3Rv
cmU6OmluZGV4Iik7CisjZW5kaWYKICAgICBpZiAobV90cmFuc2FjdGlvbi0+ZmluaXNoZWQoKSkg
ewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiAg
ICAgICAgIHJldHVybiAwOwpAQCAtMjAwLDYgKzIzNyw5IEBAIHZvaWQgSURCT2JqZWN0U3RvcmU6
OmRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVu
c2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3Rv
cmU6Om9wZW5DdXJzb3IiKTsKKyNlbmRpZgogICAgIGlmIChkaXJlY3Rpb24gIT0gSURCQ3Vyc29y
OjpORVhUICYmIGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFICYmIGRp
cmVjdGlvbiAhPSBJREJDdXJzb3I6OlBSRVYgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6UFJF
Vl9OT19EVVBMSUNBVEUpIHsKICAgICAgICAgLy8gRklYTUU6IE1heSBuZWVkIHRvIGNoYW5nZSB3
aGVuIHNwZWNjZWQ6IGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9p
ZD0xMTQwNgogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VS
UjsKQEAgLTIxOCw2ICsyNTgsOSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogCiBQYXNzUmVm
UHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRl
eGVkREIiLCAiSURCT2JqZWN0U3RvcmU6OmNvdW50Iik7CisjZW5kaWYKICAgICBSZWZQdHI8SURC
UmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNy
ZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jb3VudChy
YW5nZSwgcmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYgKGVj
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcAppbmRleCBmMDdlYTNlZWJhNmVlN2EzMDVlN2U5NWYyMzNjYTcwZTk5MDdlNjY4
Li5iMmRkY2MwYjJkYThiYzJjNjIyODgwZWEwM2E0NDZjOTUxNGZjZDMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAg
LTQ0LDYgKzQ0LDEwIEBACiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCisjaWYgUExBVEZPUk0o
Q0hST01JVU0pCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6fklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwoKQpAQCAtODMsNiArODcsOSBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmluZGV4TmFtZXMoKSBjb25zdAogCiB2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9S
TShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpnZXQiKTsKKyNlbmRpZgogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJh
Y2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9IHRoaXM7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0g
cHJwS2V5OwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNr
czsKQEAgLTkyLDYgKzk5LDkgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQo
UGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0cjxJREJDYWwKIAogdm9pZCBJREJP
YmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykK
IHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIs
ICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbCIpOworI2VuZGlmCiAgICAg
U3RyaW5nIHdpcmVEYXRhID0gb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLT5nZXRPYmplY3RT
dG9yZVJlY29yZChvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwg
KmtleSk7CiAgICAgaWYgKHdpcmVEYXRhLmlzTnVsbCgpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+
b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dW5kZWZpbmVkVmFsdWUoKSk7CkBAIC0x
MDMsNiArMTEzLDkgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjwKIAogc3RhdGljIFBhc3NSZWZQ
dHI8SURCS2V5PiBmZXRjaEtleUZyb21LZXlQYXRoKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFs
dWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAg
ICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpm
ZXRjaEtleUZyb21LZXlQYXRoIik7CisjZW5kaWYKICAgICBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gPiB2YWx1ZXM7CiAgICAgdmFsdWVzLmFwcGVuZCh2YWx1ZSk7CiAgICAg
VmVjdG9yPFJlZlB0cjxJREJLZXk+ID4ga2V5czsKQEAgLTExNSwxMSArMTI4LDE3IEBAIHN0YXRp
YyBQYXNzUmVmUHRyPElEQktleT4gZmV0Y2hLZXlGcm9tS2V5UGF0aChTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHZhbHVlLCBjb25zCiAKIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gaW5qZWN0S2V5SW50b0tleVBhdGgoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgp
CiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIi
LCAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6aW5qZWN0S2V5SW50b0tleVBhdGgiKTsKKyNl
bmRpZgogICAgIHJldHVybiBJREJLZXlQYXRoQmFja2VuZEltcGw6OmluamVjdElEQktleUludG9T
ZXJpYWxpemVkVmFsdWUoa2V5LCB2YWx1ZSwga2V5UGF0aCk7CiB9CiAKIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6cHV0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBw
cnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpwdXQiKTsKKyNlbmRpZgogICAgIGlmICh0cmFuc2FjdGlvblB0ci0+
bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpIHsKICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMjAw
LDYgKzIxOSw5IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cmV2ZXJ0QXV0b0lu
Y3JlbWVudEtleUNhY2hlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAKIHZvaWQgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcnBWYWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IHBycEtl
eSwgUHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCiB7
CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAi
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwiKTsKKyNlbmRpZgogICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgUmVmUHRy
PElEQktleT4ga2V5ID0gcHJwS2V5OwogCkBAIC0zMjYsNiArMzQ4LDkgQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjwKIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5j
dGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFD
RV9FVkVOVDAoIkluZGV4ZWREQiIsICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGUi
KTsKKyNlbmRpZgogICAgIGlmICh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9u
OjpSRUFEX09OTFkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9P
TkxZX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMzQ1LDYgKzM3MCw5IEBAIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBy
cEtleSwgUGFzc1JlCiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVC
YWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisg
ICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
ZGVsZXRlSW50ZXJuYWwiKTsKKyNlbmRpZgogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6Ok9i
amVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllciA9IG9iamVjdFN0b3Jl
LT5tX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW52YWxpZFJlY29yZElkZW50aWZpZXIoKTsKICAgICBp
ZiAoIW9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZShv
YmplY3RTdG9yZS0+bV9kYXRhYmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwgKmtleSwgcmVjb3Jk
SWRlbnRpZmllci5nZXQoKSkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpib29sZWFuVmFsdWUoZmFsc2UpKTsKQEAgLTM2NSw2ICszOTMsOSBA
QCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUAogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQog
eworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwg
IklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyIik7CisjZW5kaWYKICAgICBpZiAodHJh
bnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKSB7CiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CiAgICAgICAgIHJldHVy
bjsKQEAgLTUzMSw2ICs1NjIsOSBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRl
bGV0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhcwogCiB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4gcHJwUmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisg
ICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
b3BlbkN1cnNvciIpOworI2VuZGlmCiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw+IG9iamVjdFN0b3JlID0gdGhpczsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlID0g
cHJwUmFuZ2U7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJh
Y2tzOwpAQCAtNTQ0LDYgKzU3OCw5IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
b3BlbkN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBSYW5nZSwgdW5zCiAKIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVj
dFN0b3JlLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgdG1w
RGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCiB7CisjaWYgUExB
VEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsIik7CisjZW5kaWYKICAgICBJREJD
dXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDxJREJDdXJzb3I6OkRpcmVj
dGlvbj4odG1wRGlyZWN0aW9uKTsKIAogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNv
cj4gYmFja2luZ1N0b3JlQ3Vyc29yID0gb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLT5vcGVu
T2JqZWN0U3RvcmVDdXJzb3Iob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUt
PmlkKCksIHJhbmdlLmdldCgpLCBkaXJlY3Rpb24pOwpAQCAtNTU4LDEyICs1OTUsMTggQEAgdm9p
ZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3MKIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpj
b3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
biwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJB
Q0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQi
KTsKKyNlbmRpZgogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwsIHRoaXMs
IHJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCiAgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKIH0KIAogdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0
aW9uKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhl
ZERCIiwgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwiKTsKKyNlbmRp
ZgogICAgIHVpbnQzMl90IGNvdW50ID0gMDsKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpD
dXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvciA9IG9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKG9iamVjdFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0
b3JlLT5pZCgpLCByYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKICAgICBpZiAoIWJhY2tp
bmdTdG9yZUN1cnNvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKaW5kZXgg
OWJmY2RkN2MxYWQzYWM5YzA4MDUwNjBmM2RlYzI5Y2U0NzFjN2Y1MS4uNTZlNzZiYmE2ZjkxM2Y1
NjA2NmY2MmYzOGVhZGU1MmE3MTNhZGE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuY3BwCkBAIC00MSw2ICs0MSwxMCBAQAogI2luY2x1ZGUgIklEQlBlbmRpbmdUcmFuc2FjdGlv
bk1vbml0b3IuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogCisjaWYgUExBVEZPUk0o
Q0hST01JVU0pCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJSZXF1ZXN0OjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSwg
SURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uKQpAQCAtMTk3LDYgKzIwMSw5IEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPEV2ZW50PiBjcmVhdGVTdWNjZXNzRXZlbnQoKQogCiB2b2lkIElEQlJlcXVlc3Q6
Om9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGRvbVN0cmluZ0xpc3QpCiB7Cisj
aWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURC
UmVxdWVzdDo6b25TdWNjZXNzKERPTVN0cmluZ0xpc3QpIik7CisjZW5kaWYKICAgICBBU1NFUlQo
IW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpICYmICFtX3Jlc3VsdCk7CiAg
ICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShkb21TdHJpbmdMaXN0KTsKICAgICBlbnF1ZXVl
RXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwpAQCAtMjA0LDYgKzIxMSw5IEBAIHZvaWQgSURC
UmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZG9tU3RyaW5nTGlz
dCkKIAogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNr
ZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRS
QUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhJREJDdXJzb3Ip
Iik7CisjZW5kaWYKICAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlz
TnVsbCgpICYmICFtX3Jlc3VsdCk7CiAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlOjpJbnZhbGlkQ3Vyc29yVHlwZSk7CiAgICAgUmVmUHRyPElEQkN1
cnNvcj4gY3Vyc29yOwpAQCAtMjE5LDYgKzIyOSw5IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNj
ZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKIAogdm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+IGJhY2tlbmQpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZF
TlQwKCJJbmRleGVkREIiLCAiSURCUmVxdWVzdDo6b25TdWNjZXNzKElEQkRhdGFiYXNlKSIpOwor
I2VuZGlmCiAgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwo
KSAmJiAhbV9yZXN1bHQpOwogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzMiw2ICsyNDUsOSBAQCB2b2lk
IElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4gYmFja2VuZCkKIAogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJLZXk+IGlkYktleSkKIHsKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVO
VDAoIkluZGV4ZWREQiIsICJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoSURCS2V5KSIpOworI2VuZGlm
CiAgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAh
bV9yZXN1bHQpOwogICAgIGlmIChpZGJLZXkgJiYgaWRiS2V5LT52YWxpZCgpKQogICAgICAgICBt
X3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYktleSk7CkBAIC0yNDIsNiArMjU4LDkgQEAgdm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGlkYktleSkKIAogdm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+IHBycEJhY2tlbmQpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJB
Q0VfRVZFTlQwKCJJbmRleGVkREIiLCAiSURCUmVxdWVzdDo6b25TdWNjZXNzKElEQlRyYW5zYWN0
aW9uKSIpOworI2VuZGlmCiAgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2Fn
ZS5pc051bGwoKSAmJiAhbV9yZXN1bHQpOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IGJhY2tlbmQgPSBwcnBCYWNrZW5kOwogCkBAIC0yNjYsNiArMjg1LDkgQEAg
dm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IHBycEJhY2tlbmQKIAogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsK
KyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVDAoIkluZGV4ZWREQiIsICJJ
REJSZXF1ZXN0OjpvblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlKSIpOworI2VuZGlmCiAg
ICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAhbV9y
ZXN1bHQpOwogICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoc2VyaWFsaXplZFNjcmlwdFZh
bHVlKTsKICAgICBtX2N1cnNvci5jbGVhcigpOwpAQCAtMjc0LDYgKzI5Niw5IEBAIHZvaWQgSURC
UmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemVkU2NyaXB0VmFsCiAKIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzV2l0aENvbnRpbnVh
dGlvbigpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRl
eGVkREIiLCAiSURCUmVxdWVzdDo6b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbiIpOworI2VuZGlm
CiAgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAh
bV9yZXN1bHQpOwogICAgIEFTU0VSVChtX2N1cnNvcik7CiAgICAgc2V0UmVzdWx0Q3Vyc29yKG1f
Y3Vyc29yLCBtX2N1cnNvclR5cGUpOwpAQCAtMzE3LDYgKzM0Miw5IEBAIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIElEQlJlcXVlc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAogCiBi
b29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7
CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAi
SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCIpOworI2VuZGlmCiAgICAgQVNTRVJUKCFtX3JlcXVl
c3RGaW5pc2hlZCk7CiAgICAgQVNTRVJUKCFtX2NvbnRleHRTdG9wcGVkKTsKICAgICBBU1NFUlQo
bV9lbnF1ZXVlZEV2ZW50cy5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5z
YWN0aW9uLmNwcAppbmRleCA5MDQ4NzcwNDVkMWIzNTRhNWIxNjUyMTBiNzNkZWQ1M2I2OWFmNTQx
Li5iZWRjNGYxY2FmMTVkM2QyZTJhNGNmYTkzYzcwYzE4MWFiZGE2OTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMzgsNiArMzgsMTAgQEAKICNpbmNs
dWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJQZW5k
aW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNs
dWRlICJUcmFjZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiBiYWNrZW5kLCBJREJEYXRhYmFzZSogZGIpCkBAIC0xODYsNiArMTkwLDkgQEAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogSURCVHJhbnNhY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdAogCiBib29sIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VW
RU5UMCgiSW5kZXhlZERCIiwgIklEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50Iik7CisjZW5k
aWYKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50LT50YXJnZXQoKSA9PSB0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGwuY3BwCmluZGV4IDI0ZmExYzYwNTIxMmQxZjJlNzBhZjA1ZmU2OWNiOTM0YjQyMjIwMjku
LjAwNjVhYTA2ZGI0YmUyOTNlODYyY2UwMTliMzUzYzgzNTJjOWE3ZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAt
MzQsNiArMzQsMTAgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKIAorI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6Y3JlYXRlKERPTVN0cmluZ0xpc3QqIG9iamVjdFN0b3JlcywgdW5zaWduZWQg
c2hvcnQgbW9kZSwgSURCRGF0YWJhc2VCYWNrZW5kSW1wbCogZGF0YWJhc2UpCkBAIC0xMDQsNiAr
MTA4LDkgQEAgYm9vbCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpzY2hlZHVsZVRhc2soUGFz
c093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjoKIAogdm9pZCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjphYm9ydCgpCiB7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgVFJBQ0Vf
RVZFTlQwKCJJbmRleGVkREIiLCAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQiKTsK
KyNlbmRpZgogICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGVkKQogICAgICAgICByZXR1cm47CiAK
QEAgLTE4NSw2ICsxOTIsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnN0YXJ0
KCkKIAogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQoKQogeworI2lmIFBM
QVRGT1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCIpOworI2VuZGlmCiAgICAgLy8gVGhlIGxhc3QgcmVm
ZXJlbmNlIHRvIHRoaXMgb2JqZWN0IG1heSBiZSByZWxlYXNlZCB3aGlsZSBwZXJmb3JtaW5nIHRo
ZQogICAgIC8vIGNvbW1pdCBzdGVwcyBiZWxvdy4gV2UgdGhlcmVmb3JlIHRha2UgYSBzZWxmIHJl
ZmVyZW5jZSB0byBrZWVwIG91cnNlbHZlcwogICAgIC8vIGFsaXZlIHdoaWxlIGV4ZWN1dGluZyB0
aGlzIG1ldGhvZC4KQEAgLTIwMyw2ICsyMTMsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OmNvbW1pdCgpCiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dGFza1Rp
bWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4qKQogeworI2lmIFBMQVRG
T1JNKENIUk9NSVVNKQorICAgIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQlRyYW5zYWN0
aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZpcmVkIik7CisjZW5kaWYKICAgICBBU1NFUlQoIW1f
dGFza1F1ZXVlLmlzRW1wdHkoKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGFydFBlbmRpbmcp
IHsKQEAgLTIyMyw2ICsyMzYsOSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRh
c2tUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KgogCiB2b2lkIElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tFdmVudFRpbWVyRmlyZWQoVGltZXI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbD4qKQogeworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIFRS
QUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tF
dmVudFRpbWVyRmlyZWQiKTsKKyNlbmRpZgogICAgIEFTU0VSVChtX3N0YXRlID09IFJ1bm5pbmcp
OwogCiAgICAgaWYgKCFtX3BlbmRpbmdFdmVudHMgJiYgbV90YXNrUXVldWUuaXNFbXB0eSgpKSB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128088</attachid>
            <date>2012-02-21 17:12:33 -0800</date>
            <delta_ts>2012-02-22 10:17:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78831-20120221171232.patch</filename>
            <type>text/plain</type>
            <size>46271</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzBkNzc3YTI1ZTFhNTll
NWJjNTc0ZmFjODliOTczOWE4MmRjMmQ1Ny4uZjk5ZTdlY2UzYTdiN2Y1MzhiODk1YjE3NWE0OGE1
ZDUzODJmODg3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTAyLTIxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IEludGVncmF0ZSB3aXRoIGFib3V0OnRyYWNpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4ODMxCisKKyAgICAgICAgQW5ub3RhdGUgaW50
ZXJlc3RpbmcgSURCIGZ1bmN0aW9ucyBzbyB0aGV5IHNob3cgdXAgaW4gdGhlCisgICAgICAgIHRy
YWNpbmcgdXRpbGl0eSBpbmNsdWRlZCBpbiB0aGUgQ2hyb21pdW0gcG9ydC4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjppbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlKToKKyAgICAgICAgKiBzdG9yYWdlL0lE
QkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmRpcmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJD
dXJzb3I6OnByaW1hcnlLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjp2YWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5k
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGlyZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjprZXkpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByaW1hcnlLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hS
ZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y2xvc2UpOgor
ICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2U6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCSW5kZXguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCSW5kZXg6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpvcGVu
S2V5Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4OjpnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCSW5kZXg6OmdldEtleSk6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleEJh
Y2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9w
ZW5DdXJzb3JJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBs
OjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9w
ZW5LZXlDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Y291
bnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpjb3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6Z2V0S2V5KToKKyAgICAgICAgKiBzdG9yYWdl
L0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpu
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjprZXlQYXRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjppbmRleE5hbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlOjp0cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjphZGQp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OnB1dCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
OjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6aW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNvdW50KToKKyAgICAgICAgKiBzdG9yYWdlL0lE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
QmFja2VuZEltcGw6OmdldEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OmZldGNoS2V5RnJv
bUtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0S2V5SW50b0tleVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFy
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1
cnNvckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6
OmNvdW50SW50ZXJuYWwpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpvblN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYWNp
bmcuaDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICog
c3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrRXZlbnRUaW1lckZpcmVkKToKKwogMjAx
Mi0wMi0yMSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFtTdWdnZXN0Qm94XSB0ZXh0UHJvbXB0LmNzcyBkaXNhYmxlbWVu
dCBkaXNwbGF5cyBnYXJibGVkIHN1Z2dlc3QgYm94CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNjc0NjRk
ZWQzNzQzZmEwMTBlMzJhZGQ0OWFmZGUwN2E0YTY4ODhiZi4uNDRmZTE5NjVjNmJjOGFkMjZlYzM2
Y2ViZDBjMTM3Yzg2MTU5YjdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDY0OCw2ICs0NjQ4LDcg
QEAKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlBlbmRpbmdUcmFuc2FjdGlvbk1vbml0b3IuaCcs
CiAgICAgICAgICAgICAnc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnc3Rv
cmFnZS9JREJSZXF1ZXN0LmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvSURCVHJhY2luZy5oJywK
ICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAn
c3RvcmFnZS9JREJUcmFuc2FjdGlvbi5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNzBkMzllYWRjODIzZWI5YzQ4OGMxNmRhYzgx
MTEzZGY5YTE5OGQxLi5kYTNkNTExNDNmZjdjMDEzNmFlMWRiYjc4NGMzODk3NWU5MjFlNWNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01ODgwLDYgKzU4ODAsNyBAQAogCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVu
ZGVyTWVkaWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovOyB9OwogCQlFNEQ2
ODc3NzBFRDdBRTNEMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDY4Nzc2MEVEN0FFM0QwMDZF
QTk3OCAvKiBQdXJnZWFibGVCdWZmZXJNYWMuY3BwICovOyB9OwogCQlFNEQ2ODc3OTBFRDdBRTRG
MDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQ2ODc3ODBFRDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxl
QnVmZmVyLmggKi87IH07CisJCUVCNDlEQjhGMTRGNDZFOEIwMDIyOTlEOSAvKiBJREJUcmFjaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjQ5REI4
RTE0RjQ2RThCMDAyMjk5RDkgLyogSURCVHJhY2luZy5oICovOyB9OwogCQlFRDJCQTgzQzA5QTI0
QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVu
dE1hcmtlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUVENTAxREM2MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDUwMURDNTBCMjQ5RjI5MDBBRTE4
RDkgLyogRWRpdG9yTWFjLm1tICovOyB9OwogCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyog
Q29sb3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEVERTNBNEZGMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjkwOCw2ICsxMjkwOSw3IEBACiAJ
CUU0QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFNEQ2ODc3NjBFRDdBRTNEMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1cmdlYWJsZUJ1ZmZlck1h
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0RDY4Nzc4MEVEN0FFNEYwMDZF
QTk3OCAvKiBQdXJnZWFibGVCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUHVyZ2VhYmxlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCNDlE
QjhFMTRGNDZFOEIwMDIyOTlEOSAvKiBJREJUcmFjaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IElEQlRyYWNpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RUQyQkE4M0IwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUVENTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRWRpdG9yTWFjLm1tOyBwYXRo
ID0gbWFjL0VkaXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRURFM0E0
RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbG9yTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg1
OCw2ICsxMzg2MCw3IEBACiAJCTFBRTgyRUM5MENBQUUxNzcwMDIyMzdBRSAvKiBzdG9yYWdlICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFQjQ5REI4RTE0
RjQ2RThCMDAyMjk5RDkgLyogSURCVHJhY2luZy5oICovLAogCQkJCUI1QjVEQzY3MTE5QkIzRDUw
MDJBODc5MCAvKiBBYnN0cmFjdERhdGFiYXNlLmNwcCAqLywKIAkJCQlCNUI1REM2ODExOUJCM0Q1
MDAyQTg3OTAgLyogQWJzdHJhY3REYXRhYmFzZS5oICovLAogCQkJCTUxNDE4NUVEMENENjVGMDQw
MDc2M0M5OSAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgKi8sCkBAIC0yNDI4OSw2ICsyNDI5
Miw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJv
UG9sZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRUI0OURCOEYxNEY0NkU4QjAwMjI5OUQ5IC8qIElE
QlRyYWNpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBhOWFkZDE4YWQ1MWUyN2FmMmNmYmVj
NzdjM2NlNTIxYzA4NDRkMjA0Li5iNGVlNjk1ZmI5YTI5ZGUxZmMwY2FmOGViYTY4YTk4ZjEzOGRh
OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5kaW5nVXRp
bGl0aWVzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2lu
Y2x1ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOElEQktleS5oIgpAQCAtMTQ5LDYg
KzE1MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwKIAogUGFzc1JlZlB0cjxJREJLZXk+IGNy
ZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGtleVBhdGgpCiB7
CisgICAgSURCX1RSQUNFKCJjcmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0
aCIpOwogICAgIFY4TG9jYWxDb250ZXh0IGxvY2FsQ29udGV4dDsKICAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdjhWYWx1ZSh2YWx1ZS0+ZGVzZXJpYWxpemUoKSk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHY4S2V5KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGgsIGtl
eVBhdGguc2l6ZSgpKSk7CkBAIC0xNTksNiArMTYxLDcgQEAgUGFzc1JlZlB0cjxJREJLZXk+IGNy
ZWF0ZUlEQktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKFBhc3NSZWZQdHI8U2VyaWFs
aXoKIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGluamVjdElEQktleUludG9T
ZXJpYWxpemVkVmFsdWUoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IHZhbHVlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYga2V5UGF0aCkKIHsK
KyAgICBJREJfVFJBQ0UoImluamVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUiKTsKICAgICBW
OExvY2FsQ29udGV4dCBsb2NhbENvbnRleHQ7CiAgICAgaWYgKCFrZXlQYXRoLnNpemUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1
cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKaW5kZXggMTY2
YzJkZDZkM2QwOWU2NGVhMzFkNzBmNjAxYWU0NjA1OTlkYzFiNC4uMWRkMWU5ZWJlOTA2MzhiOTcw
OGEyZGZkMWE1MzNjOGUyYjM1NzRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNw
cApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Uu
aCIKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisjaW5jbHVk
ZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgpAQCAtNjIsMjEgKzYzLDI1IEBAIElEQkN1cnNvcjo6fklEQkN1cnNvcigpCiAKIHVuc2ln
bmVkIHNob3J0IElEQkN1cnNvcjo6ZGlyZWN0aW9uKCkgY29uc3QKIHsKKyAgICBJREJfVFJBQ0Uo
IklEQkN1cnNvcjo6ZGlyZWN0aW9uIik7CiAgICAgcmV0dXJuIG1fYmFja2VuZC0+ZGlyZWN0aW9u
KCk7CiB9CiAKIFBhc3NSZWZQdHI8SURCS2V5PiBJREJDdXJzb3I6OmtleSgpIGNvbnN0CiB7Cisg
ICAgSURCX1RSQUNFKCJJREJDdXJzb3I6OmtleSIpOwogICAgIHJldHVybiBtX2JhY2tlbmQtPmtl
eSgpOwogfQogCiBQYXNzUmVmUHRyPElEQktleT4gSURCQ3Vyc29yOjpwcmltYXJ5S2V5KCkgY29u
c3QKIHsKKyAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6cHJpbWFyeUtleSIpOwogICAgIHJldHVy
biBtX2JhY2tlbmQtPnByaW1hcnlLZXkoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJBbnk+IElEQkN1
cnNvcjo6dmFsdWUoKSBjb25zdAogeworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjp2YWx1ZSIp
OwogICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZShtX2JhY2tlbmQtPnZhbHVlKCkpOwogfQogCkBA
IC04Nyw2ICs5Miw3IEBAIElEQkFueSogSURCQ3Vyc29yOjpzb3VyY2UoKSBjb25zdAogCiBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6dXBkYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNFKCJJREJDdXJzb3I6OnVwZGF0ZSIpOwog
ICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRl
eHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2Jh
Y2tlbmQtPnVwZGF0ZSh2YWx1ZSwgcmVxdWVzdCwgZWMpOwogICAgIGlmIChlYykgewpAQCAtOTgs
NiArMTA0LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmUKIAogdm9pZCBJREJDdXJzb3I6OmNv
bnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisgICAgSURCX1RSQUNFKCJJREJDdXJzb3I6OmNvbnRpbnVlIik7CiAgICAgaWYgKGtleSAm
JiAoa2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTExNCw2
ICsxMjEsNyBAQCB2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjpkZWxldGUi
KTsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShj
b250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAg
bV9iYWNrZW5kLT5kZWxldGVGdW5jdGlvbihyZXF1ZXN0LCBlYyk7CiAgICAgaWYgKGVjKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCmluZGV4
IGZmNzU2Y2VkZWNhYzJhNjY5OTk5Mjc3OTk3OTM3MjY3OTcyMTNlYjEuLmNkYmU3MDdmY2UxMjk1
NGJkZDViOWQ5ZGZhYmVhYTQxODg0NDRlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
SURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgiCiAj
aW5jbHVkZSAiSURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKIApAQCAtNjQsMjEgKzY1LDI1IEBAIElEQkN1cnNvckJhY2tlbmRJbXBs
Ojp+SURCQ3Vyc29yQmFja2VuZEltcGwoKQogCiB1bnNpZ25lZCBzaG9ydCBJREJDdXJzb3JCYWNr
ZW5kSW1wbDo6ZGlyZWN0aW9uKCkgY29uc3QKIHsKKyAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJh
Y2tlbmRJbXBsOjpkaXJlY3Rpb24iKTsKICAgICByZXR1cm4gbV9kaXJlY3Rpb247CiB9CiAKIFBh
c3NSZWZQdHI8SURCS2V5PiBJREJDdXJzb3JCYWNrZW5kSW1wbDo6a2V5KCkgY29uc3QKIHsKKyAg
ICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjprZXkiKTsKICAgICByZXR1cm4gbV9j
dXJzb3ItPmtleSgpOwogfQogCiBQYXNzUmVmUHRyPElEQktleT4gSURCQ3Vyc29yQmFja2VuZElt
cGw6OnByaW1hcnlLZXkoKSBjb25zdAogeworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2Vu
ZEltcGw6OnByaW1hcnlLZXkiKTsKICAgICByZXR1cm4gbV9jdXJzb3ItPnByaW1hcnlLZXkoKTsK
IH0KIAogUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IElEQkN1cnNvckJhY2tlbmRJ
bXBsOjp2YWx1ZSgpIGNvbnN0CiB7CisgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1w
bDo6dmFsdWUiKTsKICAgICBpZiAobV9jdXJzb3JUeXBlID09IEluZGV4S2V5Q3Vyc29yKQogICAg
ICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCk7CiAgICAgcmV0dXJu
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmUobV9jdXJzb3ItPnZhbHVlKCkp
OwpAQCAtODYsNiArOTEsNyBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSURC
Q3Vyc29yQmFja2VuZEltcGw6OnZhbHVlKCkgY29uc3QKIAogdm9pZCBJREJDdXJzb3JCYWNrZW5k
SW1wbDo6dXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisg
ICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6dXBkYXRlIik7CiAgICAgaWYgKCFt
X2N1cnNvciB8fCBtX2N1cnNvclR5cGUgPT0gSW5kZXhLZXlDdXJzb3IpIHsKICAgICAgICAgZWMg
PSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSOwogICAgICAgICByZXR1cm47
CkBAIC05Niw2ICsxMDIsNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjp1cGRhdGUoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQYXNzUgogCiB2b2lkIElEQkN1
cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBL
ZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlIik7
CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OwogCiAgICAgaWYgKG1fY3Vyc29yICYm
IGtleSkgewpAQCAtMTIxLDYgKzEyOCw3IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmNv
bnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0CiAvLyAg
ICAgICAgICAgIElEQlJlcXVlc3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHdpbGwgbmVlZCB0byBi
ZSBtb2RpZmllZCB0byBoYW5kbGUgdGhpcyEhIQogdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6
Y29udGludWVGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJzb3IsIFBhc3NSZWZQdHI8SURCS2V5PiBw
cnBLZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CisgICAgSURCX1RS
QUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVJbnRlcm5hbCIpOwogICAgIFJlZlB0
cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yID0gcHJwQ3Vyc29yOwogICAgIFJlZlB0cjxJ
REJLZXk+IGtleSA9IHBycEtleTsKIApAQCAtMTM1LDYgKzE0Myw3IEBAIHZvaWQgSURCQ3Vyc29y
QmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzCiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
eworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmRlbGV0ZSIpOwogICAgIGlm
ICghbV9jdXJzb3IgfHwgbV9jdXJzb3JUeXBlID09IEluZGV4S2V5Q3Vyc29yKSB7CiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTQ1LDEyICsxNTQsMTQgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVs
ZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywKIAogdm9p
ZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRj
aCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CisgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250
aW51ZSIpOwogICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxi
YWNrVGFzaygmSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbCwg
dGhpcywgbnVtYmVyVG9GZXRjaCwgcHJwQ2FsbGJhY2tzKSkpCiAgICAgICAgIGVjID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKIH0KIAogdm9pZCBJREJD
dXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJzb3IsIGlu
dCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewor
ICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRl
cm5hbCIpOwogICAgIFJlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yID0gcHJwQ3Vy
c29yOwogCiAgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4gZm91bmRLZXlzOwpAQCAtMTk3LDYg
KzIwOCw3IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzCiAKIHZvaWQgSURCQ3Vyc29yQmFja2Vu
ZEltcGw6OnByZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJlZmV0
Y2hlcykKIHsKKyAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaFJl
c2V0Iik7CiAgICAgbV90cmFuc2FjdGlvbi0+YWRkUGVuZGluZ0V2ZW50cygtdW51c2VkUHJlZmV0
Y2hlcyk7CiAgICAgbV9jdXJzb3IgPSBtX3NhdmVkQ3Vyc29yOwogICAgIG1fc2F2ZWRDdXJzb3Ig
PSAwOwpAQCAtMjEzLDYgKzIyNSw3IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZl
dGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJlZmV0Y2hlCiAKIHZvaWQg
SURCQ3Vyc29yQmFja2VuZEltcGw6OmNsb3NlKCkKIHsKKyAgICBJREJfVFJBQ0UoIklEQkN1cnNv
ckJhY2tlbmRJbXBsOjpjbG9zZSIpOwogICAgIG1fY2xvc2VkID0gdHJ1ZTsKICAgICBpZiAobV9j
dXJzb3IpCiAgICAgICAgIG1fY3Vyc29yLT5jbG9zZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlLmNwcAppbmRleCAyNTY1MGYzOTI3ZWI4OWMyNzVmMzY4Y2E1NTExZWE3OTQ4ZTNi
YjNkLi5jYzUzYTg4MmFmMzNkOTk0OTg1ZWUyZjNlY2QxY2UxZmQ2MDJjMTkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlLmgiCiAKKyNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKKwogI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgpAQCAtMzgsMTQgKzQwLDEzIEBACiAj
aW5jbHVkZSAiSURCSW5kZXguaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAi
SURCT2JqZWN0U3RvcmUuaCIKKyNpbmNsdWRlICJJREJUcmFjaW5nLmgiCisjaW5jbHVkZSAiSURC
VHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCIKICNpbmNs
dWRlICJJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5oIgotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9u
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPGxpbWl0
cz4KIAotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IElEQkRhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+IGRhdGFiYXNlKQpAQCAtMjIxLDYgKzIyMiw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmVu
cXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIAogYm9vbCBJREJEYXRhYmFzZTo6
ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIHsKKyAgICBJREJfVFJBQ0Uo
IklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50Iik7CiAgICAgQVNTRVJUKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLnZlcnNpb25jaGFuZ2VFdmVudCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2VucXVldWVkRXZlbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtX2Vu
cXVldWVkRXZlbnRzW2ldLmdldCgpID09IGV2ZW50LmdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkluZGV4LmNwcAppbmRleCBiZjJkMzhhZjJiMTdmMjg1NjAwNjBhYTIxMzdkMjlhZGQxZTJhYWVj
Li5hN2M4ZGQzYmI0ZjdiNmY2ZGMyYzA2NTc1MGM2MjljNGZkMzJmNTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkluZGV4LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIklEQktleVJh
bmdlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmUuaCIKICNpbmNsdWRlICJJREJSZXF1ZXN0
LmgiCisjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU3LDYgKzU4LDcgQEAgSURCSW5kZXg6On5JREJJ
bmRleCgpCiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5
UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisg
ICAgSURCX1RSQUNFKCJJREJJbmRleDo6b3BlbkN1cnNvciIpOwogICAgIGlmIChkaXJlY3Rpb24g
IT0gSURCQ3Vyc29yOjpORVhUICYmIGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQ
TElDQVRFICYmIGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6OlBSRVYgJiYgZGlyZWN0aW9uICE9IElE
QkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUpIHsKICAgICAgICAgLy8gRklYTUU6IE1heSBuZWVk
IHRvIGNoYW5nZSB3aGVuIHNwZWNjZWQ6IGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3No
b3dfYnVnLmNnaT9pZD0xMTQwNgogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpD
T05TVFJBSU5UX0VSUjsKQEAgLTc1LDYgKzc3LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXMK
IAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworICAgIElEQl9UUkFDRSgiSURCSW5kZXg6OmNvdW50Iik7CiAgICAg
UmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwg
SURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAgIG1fYmFja2Vu
ZC0+Y291bnQoa2V5UmFuZ2UsIHJlcXVlc3QsIG1fdHJhbnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMp
OwogICAgIGlmIChlYykgewpAQCAtODYsNiArODksNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UAogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAg
IElEQl9UUkFDRSgiSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IiKTsKICAgICBpZiAoZGlyZWN0aW9u
ICE9IElEQkN1cnNvcjo6TkVYVCAmJiBkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpORVhUX05PX0RV
UExJQ0FURSAmJiBkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpQUkVWICYmIGRpcmVjdGlvbiAhPSBJ
REJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFKSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYXkgbmVl
ZCB0byBjaGFuZ2Ugd2hlbiBzcGVjY2VkOiBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9z
aG93X2J1Zy5jZ2k/aWQ9MTE0MDYKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
Q09OU1RSQUlOVF9FUlI7CkBAIC0xMDQsNiArMTA4LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LAogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CisgICAgSURCX1RSQUNFKCJJREJJbmRleDo6Z2V0Iik7CiAgICAgaWYgKGtleSAmJiAo
a2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTIwLDYg
KzEyNSw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyCiAKIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJfVFJBQ0Uo
IklEQkluZGV4OjpnZXRLZXkiKTsKICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9PSBJREJL
ZXk6OkludmFsaWRUeXBlKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpE
QVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJJbmRleEJhY2tlbmRJbXBsLmNwcAppbmRleCA4NWRiMTU4YWU3YmM1YWUwOWFjNDc3OGQwOGIz
YTYwMmQzODM3NmVlLi5jZWM0M2I5OGViZGMwM2I4MzEyZjI0NzA0M2JiNzY1Y2U3NzEzMWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlSYW5n
ZS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuaCIKKyNpbmNsdWRlICJJ
REJUcmFjaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzIsNiArNzMsNyBAQCBJ
REJJbmRleEJhY2tlbmRJbXBsOjp+SURCSW5kZXhCYWNrZW5kSW1wbCgpCiAKIHZvaWQgSURCSW5k
ZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQktl
eVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgdW50eXBlZERpcmVjdGlvbiwgSURCQ3Vyc29y
QmFja2VuZEludGVyZmFjZTo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBQYXNzUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gdHJhbnNhY3Rpb24pCiB7CisgICAgSURCX1RSQUNFKCJJREJJbmRleEJhY2tlbmRJbXBs
OjpvcGVuQ3Vyc29ySW50ZXJuYWwiKTsKICAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBkaXJlY3Rp
b24gPSBzdGF0aWNfY2FzdDxJREJDdXJzb3I6OkRpcmVjdGlvbj4odW50eXBlZERpcmVjdGlvbik7
CiAKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNv
cjsKQEAgLTEwNCw2ICsxMDYsNyBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJz
b3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cgogCiB2b2lkIElE
QkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJw
S2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2Fj
dGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNFKCJJREJJbmRleEJh
Y2tlbmRJbXBsOjpvcGVuQ3Vyc29yIik7CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+
IGluZGV4ID0gdGhpczsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0gcHJwS2V5
UmFuZ2U7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tz
OwpAQCAtMTE0LDYgKzExNyw3IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1cnNv
cihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgdW5zaWduCiAKIHZvaWQgSURC
SW5kZXhCYWNrZW5kSW1wbDo6b3BlbktleUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBw
cnBLZXlSYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5z
YWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJfVFJBQ0UoIklEQkluZGV4
QmFja2VuZEltcGw6Om9wZW5LZXlDdXJzb3IiKTsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5k
SW1wbD4gaW5kZXggPSB0aGlzOwogICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBw
cnBLZXlSYW5nZTsKICAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxs
YmFja3M7CkBAIC0xMjQsNiArMTI4LDcgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVu
S2V5Q3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCB1bnMKIAogdm9p
ZCBJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElE
QktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQogewor
ICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbCIpOwogICAg
IHVpbnQzMl90IGNvdW50ID0gMDsKIAogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNv
cj4gYmFja2luZ1N0b3JlQ3Vyc29yID0gaW5kZXgtPm1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhL
ZXlDdXJzb3IoaW5kZXgtPm1fZGF0YWJhc2VJZCwgaW5kZXgtPm1fb2JqZWN0U3RvcmVCYWNrZW5k
LT5pZCgpLCBpbmRleC0+aWQoKSwgcmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CkBAIC0x
NDEsMTIgKzE0NiwxNCBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCSQogCiB2b2lkIElEQkluZGV4
QmFja2VuZEltcGw6OmNvdW50KFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJfVFJBQ0UoIklE
QkluZGV4QmFja2VuZEltcGw6OmNvdW50Iik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1
bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmY291bnRJbnRlcm5hbCwgdGhpcywgcmFuZ2UsIGNh
bGxiYWNrcywgdHJhbnNhY3Rpb24pKSkKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VFJBTlNBQ1RJT05fSU5BQ1RJVkVfRVJSOwogfQogCiB2b2lkIElEQkluZGV4QmFja2VuZElt
cGw6OmdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQklu
ZGV4QmFja2VuZEltcGw+IGluZGV4LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBib29sIGdldE9i
amVjdCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKKyAgICBJREJfVFJB
Q0UoIklEQkluZGV4QmFja2VuZEltcGw6OmdldEludGVybmFsIik7CiAgICAgLy8gRklYTUU6IFNw
bGl0IGdldEludGVybmFsIGludG8gdHdvIGZ1bmN0aW9ucywgZ2V0dGluZyByaWQgb2ZmIHxnZXRP
YmplY3R8LgogICAgIGlmIChnZXRPYmplY3QpIHsKICAgICAgICAgU3RyaW5nIHZhbHVlID0gaW5k
ZXgtPm1fYmFja2luZ1N0b3JlLT5nZXRPYmplY3RWaWFJbmRleChpbmRleC0+bV9kYXRhYmFzZUlk
LCBpbmRleC0+bV9vYmplY3RTdG9yZUJhY2tlbmQtPmlkKCksIGluZGV4LT5pZCgpLCAqa2V5KTsK
QEAgLTE2Nyw2ICsxNzQsNyBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmdldEludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkluZAogCiB2b2lkIElEQklu
ZGV4QmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJfVFJBQ0UoIklE
QkluZGV4QmFja2VuZEltcGw6OmdldCIpOwogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBs
PiBpbmRleCA9IHRoaXM7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OwogICAgIFJl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKQEAgLTE3Niw2ICsx
ODQsNyBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleT4g
cHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcwogCiB2b2lkIElEQkluZGV4QmFja2VuZElt
cGw6OmdldEtleShQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5z
YWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFj
a2VuZEltcGw6OmdldEtleSIpOwogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRl
eCA9IHRoaXM7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OwogICAgIFJlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggZmJlMzc2YjVlMmI4NTJiZTZkYWZjODNhZjdm
NGYzNWFhZjQ1YjcyOS4uNmQ0ZmZhYjdkOTI1NTBhZTg2NTI3NTgwOTExZjAwOThiOTVkMzg2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZS5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5j
bHVkZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAi
SURCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTU1LDI2ICs1NiwzMSBAQCBJREJPYmplY3RT
dG9yZTo6SURCT2JqZWN0U3RvcmUoUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRl
cmZhY2U+IGlkYk9iagogCiBTdHJpbmcgSURCT2JqZWN0U3RvcmU6Om5hbWUoKSBjb25zdAogewor
ICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6Om5hbWUiKTsKICAgICByZXR1cm4gbV9iYWNr
ZW5kLT5uYW1lKCk7CiB9CiAKIFN0cmluZyBJREJPYmplY3RTdG9yZTo6a2V5UGF0aCgpIGNvbnN0
CiB7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6a2V5UGF0aCIpOwogICAgIHJldHVy
biBtX2JhY2tlbmQtPmtleVBhdGgoKTsKIH0KIAogUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBJ
REJPYmplY3RTdG9yZTo6aW5kZXhOYW1lcygpIGNvbnN0CiB7CisgICAgSURCX1RSQUNFKCJJREJP
YmplY3RTdG9yZTo6aW5kZXhOYW1lcyIpOwogICAgIHJldHVybiBtX2JhY2tlbmQtPmluZGV4TmFt
ZXMoKTsKIH0KIAogSURCVHJhbnNhY3Rpb24qIElEQk9iamVjdFN0b3JlOjp0cmFuc2FjdGlvbigp
IGNvbnN0CiB7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rpb24iKTsK
ICAgICByZXR1cm4gbV90cmFuc2FjdGlvbi5nZXQoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIElEQl9U
UkFDRSgiSURCT2JqZWN0U3RvcmU6OmdldCIpOwogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgp
ID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTkxLDYgKzk3LDcgQEAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3MKIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6YWRkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6YWRkIik7CiAg
ICAgaWYgKGtleSAmJiAoa2V5LT50eXBlKCkgPT0gSURCS2V5OjpJbnZhbGlkVHlwZSkpIHsKICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CiAgICAgICAgIHJldHVy
biAwOwpAQCAtMTA3LDYgKzExNCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiAKIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIElEQl9UUkFD
RSgiSURCT2JqZWN0U3RvcmU6OnB1dCIpOwogICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09
IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTEzOSw2ICsxNDcsNyBAQCBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjbwogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0
b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJfVFJBQ0Uo
IklEQk9iamVjdFN0b3JlOjpkZWxldGUiKTsKICAgICBpZiAoIWtleSB8fCAha2V5LT52YWxpZCgp
KSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAg
ICByZXR1cm4gMDsKQEAgLTE1NSw2ICsxNjQsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwog
CiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJfVFJB
Q0UoIklEQk9iamVjdFN0b3JlOjpjbGVhciIpOwogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1
ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCBt
X3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNsZWFyKHJlcXVlc3QsIG1fdHJh
bnNhY3Rpb24tPmJhY2tlbmQoKSwgZWMpOwogICAgIGlmIChlYykgewpAQCAtMTY2LDYgKzE3Niw3
IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNsZWFyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4CiAKIFBhc3NSZWZQdHI8SURCSW5kZXg+IElEQk9i
amVjdFN0b3JlOjpjcmVhdGVJbmRleChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
a2V5UGF0aCwgY29uc3QgT3B0aW9uc09iamVjdCYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgiKTsKICAgICBp
ZiAoIUlEQklzVmFsaWRLZXlQYXRoKGtleVBhdGgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246Ok5PTl9UUkFOU0lFTlRfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE5
MCw2ICsyMDEsNyBAQCBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRl
SW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbgogCiBQYXNzUmVmUHRyPElEQklu
ZGV4PiBJREJPYmplY3RTdG9yZTo6aW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjppbmRleCIpOwogICAg
IGlmIChtX3RyYW5zYWN0aW9uLT5maW5pc2hlZCgpKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMTYs
NiArMjI4LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJP
YmplY3RTdG9yZTo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpvcGVu
Q3Vyc29yIik7CiAgICAgaWYgKGRpcmVjdGlvbiAhPSBJREJDdXJzb3I6Ok5FWFQgJiYgZGlyZWN0
aW9uICE9IElEQkN1cnNvcjo6TkVYVF9OT19EVVBMSUNBVEUgJiYgZGlyZWN0aW9uICE9IElEQkN1
cnNvcjo6UFJFViAmJiBkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSkg
ewogICAgICAgICAvLyBGSVhNRTogTWF5IG5lZWQgdG8gY2hhbmdlIHdoZW4gc3BlY2NlZDogaHR0
cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMvc2hvd19idWcuY2dpP2lkPTExNDA2CiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkNPTlNUUkFJTlRfRVJSOwpAQCAtMjM0LDYgKzI0
Nyw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJ
REJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpjb3VudCIpOwogICAgIFJlZlB0cjxJREJSZXF1ZXN0
PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIElEQkFueTo6Y3JlYXRlKHRo
aXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tlbmQtPmNvdW50KHJhbmdlLCBy
ZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwu
Y3BwCmluZGV4IDY5YTNiMjQ4YmEwYTA3YTk5YWQxMTc3ZTAxNjY3ZTY4ZjUxM2U0NDMuLmI5ZWNj
ZTMyOWY0MDUzODJjMWJiNDkyM2RjNzc0YTUzZTEzNmYxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNDEsNiAr
NDEsNyBAQAogI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlICJJREJLZXlQYXRoQmFj
a2VuZEltcGwuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgorI2luY2x1ZGUgIklEQlRyYWNp
bmcuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKQEAgLTgzLDYgKzg0LDcgQEAgUGFzc1Jl
ZlB0cjxET01TdHJpbmdMaXN0PiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjppbmRleE5hbWVz
KCkgY29uc3QKIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0
cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXQi
KTsKICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUgPSB0
aGlzOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKICAgICBSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CkBAIC05Miw2ICs5NCw3IEBAIHZvaWQg
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXks
IFBhc3NSZWZQdHI8SURCQ2FsCiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0
SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CisgICAgSURCX1RSQUNFKCJJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbCIpOwogICAgIFN0cmluZyB3aXJlRGF0YSA9
IG9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3RvcmVSZWNvcmQob2JqZWN0
U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUtPmlkKCksICprZXkpOwogICAgIGlmICh3
aXJlRGF0YS5pc051bGwoKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcyhTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OnVuZGVmaW5lZFZhbHVlKCkpOwpAQCAtMTAzLDYgKzEwNiw3IEBAIHZv
aWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8CiAKIHN0YXRpYyBQYXNzUmVmUHRyPElEQktleT4gZmV0Y2hL
ZXlGcm9tS2V5UGF0aChTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgpCiB7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpm
ZXRjaEtleUZyb21LZXlQYXRoIik7CiAgICAgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+ID4gdmFsdWVzOwogICAgIHZhbHVlcy5hcHBlbmQodmFsdWUpOwogICAgIFZlY3RvcjxS
ZWZQdHI8SURCS2V5PiA+IGtleXM7CkBAIC0xMTUsMTEgKzExOSwxMyBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJLZXk+IGZldGNoS2V5RnJvbUtleVBhdGgoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2
YWx1ZSwgY29ucwogCiBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGlu
amVjdEtleUludG9LZXlQYXRoKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKQogeworICAg
IElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6aW5qZWN0S2V5SW50b0tleVBh
dGgiKTsKICAgICByZXR1cm4gSURCS2V5UGF0aEJhY2tlbmRJbXBsOjppbmplY3RJREJLZXlJbnRv
U2VyaWFsaXplZFZhbHVlKGtleSwgdmFsdWUsIGtleVBhdGgpOwogfQogCiB2b2lkIElEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
cHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiB0cmFuc2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURC
X1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQiKTsKICAgICBpZiAodHJhbnNh
Y3Rpb25QdHItPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKSB7CiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CiAgICAgICAgIHJldHVy
bjsKQEAgLTIwMCw2ICsyMDYsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnJl
dmVydEF1dG9JbmNyZW1lbnRLZXlDYWNoZShTY3JpcHRFeGVjdXRpb25Db250ZQogCiB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURC
S2V5PiBwcnBLZXksIFB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5z
YWN0aW9uKQogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0
SW50ZXJuYWwiKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSA9IHBy
cFZhbHVlOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKIApAQCAtMzI2LDYgKzMz
Myw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNF
KCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGUiKTsKICAgICBSZWZQdHI8SURCS2V5
PiBrZXkgPSBwcnBLZXk7CiAgICAgaWYgKCFrZXkgfHwgIWtleS0+dmFsaWQoKSkgewogICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKQEAgLTM0MSw2ICszNDksNyBA
QCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQ
dHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZQogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbmdlLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJf
VFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZSIpOwogICAgIGlmICh0cmFu
c2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpSRUFEX09OTFkpIHsKICAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6UkVBRF9PTkxZX0VSUjsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzU2LDYgKzM2NSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVs
ZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuCiAKIHZvaWQgSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4gb2JqZWN0U3RvcmUs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6ZGVsZXRlSW50ZXJuYWwiKTsKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpPYmplY3RT
dG9yZVJlY29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZpZXI7CiAKICAgICBSZWZQdHI8SURC
QmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvciA9IG9iamVjdFN0b3JlLT5t
X2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKG9iamVjdFN0b3JlLT5tX2RhdGFi
YXNlSWQsIG9iamVjdFN0b3JlLT5pZCgpLCBrZXlSYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhU
KTsKQEAgLTM4NCw2ICszOTQsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRl
bGV0ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUAogCiB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNsZWFyKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBw
cnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24s
IEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Y2xlYXIiKTsKICAgICBpZiAodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFu
c2FjdGlvbjo6UkVBRF9PTkxZKSB7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OlJFQURfT05MWV9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTU1MCw2ICs1NjEsNyBAQCB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUluZGV4SW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhcwogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9w
ZW5DdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIHVuc2lnbmVkIHNob3J0
IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29y
Iik7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0g
dGhpczsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IHJhbmdlID0gcHJwUmFuZ2U7CiAgICAgUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwpAQCAtNTYzLDYgKzU3
NSw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcihQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBwcnBSYW5nZSwgdW5zCiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPiByYW5nZSwgdW5zaWduZWQgc2hvcnQgdG1wRGlyZWN0aW9uLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gdHJhbnNhY3Rpb24pCiB7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwiKTsKICAgICBJREJDdXJzb3I6OkRp
cmVjdGlvbiBkaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDxJREJDdXJzb3I6OkRpcmVjdGlvbj4odG1w
RGlyZWN0aW9uKTsKIAogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gYmFja2lu
Z1N0b3JlQ3Vyc29yID0gb2JqZWN0U3RvcmUtPm1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3Rv
cmVDdXJzb3Iob2JqZWN0U3RvcmUtPm1fZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmUtPmlkKCksIHJh
bmdlLmdldCgpLCBkaXJlY3Rpb24pOwpAQCAtNTc3LDEyICs1OTAsMTQgQEAgdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29ySW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3MKIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudChQYXNz
UmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
Ojpjb3VudCIpOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwsIHRoaXMs
IHJhbmdlLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCiAgICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKIH0KIAogdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0
aW9uKQogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnRJ
bnRlcm5hbCIpOwogICAgIHVpbnQzMl90IGNvdW50ID0gMDsKICAgICBSZWZQdHI8SURCQmFja2lu
Z1N0b3JlOjpDdXJzb3I+IGJhY2tpbmdTdG9yZUN1cnNvciA9IG9iamVjdFN0b3JlLT5tX2JhY2tp
bmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKG9iamVjdFN0b3JlLT5tX2RhdGFiYXNlSWQs
IG9iamVjdFN0b3JlLT5pZCgpLCByYW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpORVhUKTsKICAgICBp
ZiAoIWJhY2tpbmdTdG9yZUN1cnNvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5j
cHAKaW5kZXggOWJmY2RkN2MxYWQzYWM5YzA4MDUwNjBmM2RlYzI5Y2U0NzFjN2Y1MS4uYTA0YzBj
NjY4N2Q4Mzk1YTQxZTMyMGFkYTZkZGJmM2YwZjBiZmM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQlJlcXVlc3QuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJJREJFdmVudERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJJREJQZW5kaW5n
VHJhbnNhY3Rpb25Nb25pdG9yLmgiCisjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE5Nyw2ICsxOTgs
NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlU3VjY2Vzc0V2ZW50KCkKIAogdm9p
ZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBkb21TdHJp
bmdMaXN0KQogeworICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNzKERPTVN0cmlu
Z0xpc3QpIik7CiAgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051
bGwoKSAmJiAhbV9yZXN1bHQpOwogICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoZG9tU3Ry
aW5nTGlzdCk7CiAgICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKQEAgLTIw
NCw2ICsyMDYsNyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IGRvbVN0cmluZ0xpc3QpCiAKIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKIHsKKyAgICBJREJf
VFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhJREJDdXJzb3IpIik7CiAgICAgQVNTRVJUKCFt
X2Vycm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAhbV9yZXN1bHQpOwogICAg
IEFTU0VSVChtX2N1cnNvclR5cGUgIT0gSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZTo6SW52YWxp
ZEN1cnNvclR5cGUpOwogICAgIFJlZlB0cjxJREJDdXJzb3I+IGN1cnNvcjsKQEAgLTIxOSw2ICsy
MjIsNyBAQCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCiAKIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogeworICAgIElE
Ql9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNzKElEQkRhdGFiYXNlKSIpOwogICAgIEFTU0VS
VCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsK
ICAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICAgICByZXR1cm47CkBAIC0yMzIsNiArMjM2LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCiAK
IHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCiB7
CisgICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoSURCS2V5KSIpOwogICAgIEFT
U0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0
KTsKICAgICBpZiAoaWRiS2V5ICYmIGlkYktleS0+dmFsaWQoKSkKICAgICAgICAgbV9yZXN1bHQg
PSBJREJBbnk6OmNyZWF0ZShpZGJLZXkpOwpAQCAtMjQyLDYgKzI0Nyw3IEBAIHZvaWQgSURCUmVx
dWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXkpCiAKIHZvaWQgSURCUmVx
dWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
PiBwcnBCYWNrZW5kKQogeworICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNzKElE
QlRyYW5zYWN0aW9uKSIpOwogICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3Nh
Z2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBiYWNrZW5kID0gcHJwQmFja2VuZDsKIApAQCAtMjY2LDYgKzI3Miw3IEBA
IHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBwcnBCYWNrZW5kCiAKIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpCiB7
CisgICAgSURCX1RSQUNFKCJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZh
bHVlKSIpOwogICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxs
KCkgJiYgIW1fcmVzdWx0KTsKICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSk7CiAgICAgbV9jdXJzb3IuY2xlYXIoKTsKQEAgLTI3NCw2ICsyODEsNyBA
QCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbAogCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2Vzc1dp
dGhDb250aW51YXRpb24oKQogeworICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNz
V2l0aENvbnRpbnVhdGlvbiIpOwogICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1l
c3NhZ2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsKICAgICBBU1NFUlQobV9jdXJzb3IpOwogICAg
IHNldFJlc3VsdEN1cnNvcihtX2N1cnNvciwgbV9jdXJzb3JUeXBlKTsKQEAgLTMxNyw2ICszMjUs
NyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBJREJSZXF1ZXN0OjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QKIAogYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogeworICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6ZGlzcGF0Y2hF
dmVudCIpOwogICAgIEFTU0VSVCghbV9yZXF1ZXN0RmluaXNoZWQpOwogICAgIEFTU0VSVCghbV9j
b250ZXh0U3RvcHBlZCk7CiAgICAgQVNTRVJUKG1fZW5xdWV1ZWRFdmVudHMuc2l6ZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhY2luZy5oIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJUcmFjaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmE0MTE3OTJiZjg1NTMzZjVi
NjhmMjJkODQwMTcwZDFjMWQzMzkxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCVHJhY2luZy5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJUcmFj
aW5nX2gKKyNkZWZpbmUgSURCVHJhY2luZ19oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgor
I2RlZmluZSBJREJfVFJBQ0UoYSkgVFJBQ0VfRVZFTlQwKCJJbmRleGVkREIiLCAoYSkpOworCisj
ZWxzZQorCisjZGVmaW5lIElEQl9UUkFDRShhKSAodm9pZCkwCisKKyNlbmRpZiAvLyAgUExBVEZP
Uk0oQ0hST01JVU0pCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2Vu
ZGlmIC8vIElEQlRyYWNpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9u
LmNwcAppbmRleCA5MDQ4NzcwNDVkMWIzNTRhNWIxNjUyMTBiNzNkZWQ1M2I2OWFmNTQxLi5jY2Rm
YjJiOWU2NzVlNWVjYTBiYWNjNTgxMzU1ZTJlZTA5MGM5NDA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIklE
Qk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgorI2luY2x1ZGUg
IklEQlRyYWNpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODYsNiArMTg3LDcg
QEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCVHJhbnNhY3Rpb246OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdAogCiBib29sIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogeworICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rpb246
OmRpc3BhdGNoRXZlbnQiKTsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7CiAg
ICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50LT50
YXJnZXQoKSA9PSB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmluZGV4IDI0ZmExYzYwNTIxMmQxZjJlNzBhZjA1ZmU2
OWNiOTM0YjQyMjIwMjkuLjAxMmU2YjZkZDI1NTNhMzhmMzgyMDU2ZWU5YmEwNjhlZDI3MWFlYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJ
bXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUgIklE
QkRhdGFiYXNlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTA0LDYgKzEwNSw3IEBAIGJvb2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVU
YXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6CiAKIHZvaWQgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQoKQogeworICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbDo6YWJvcnQiKTsKICAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xODUsNiArMTg3LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsOjpzdGFydCgpCiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29t
bWl0KCkKIHsKKyAgICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNvbW1p
dCIpOwogICAgIC8vIFRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCBtYXkgYmUgcmVs
ZWFzZWQgd2hpbGUgcGVyZm9ybWluZyB0aGUKICAgICAvLyBjb21taXQgc3RlcHMgYmVsb3cuIFdl
IHRoZXJlZm9yZSB0YWtlIGEgc2VsZiByZWZlcmVuY2UgdG8ga2VlcCBvdXJzZWx2ZXMKICAgICAv
LyBhbGl2ZSB3aGlsZSBleGVjdXRpbmcgdGhpcyBtZXRob2QuCkBAIC0yMDMsNiArMjA2LDcgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQoKQogCiB2b2lkIElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw+KikKIHsKKyAgICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
OnRhc2tUaW1lckZpcmVkIik7CiAgICAgQVNTRVJUKCFtX3Rhc2tRdWV1ZS5pc0VtcHR5KCkpOwog
CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhcnRQZW5kaW5nKSB7CkBAIC0yMjMsNiArMjI3LDcgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrVGltZXJGaXJlZChUaW1lcjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsPioKIAogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Ojp0YXNrRXZlbnRUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+KikK
IHsKKyAgICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tFdmVudFRp
bWVyRmlyZWQiKTsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBSdW5uaW5nKTsKIAogICAgIGlmICgh
bV9wZW5kaW5nRXZlbnRzICYmIG1fdGFza1F1ZXVlLmlzRW1wdHkoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128239</attachid>
            <date>2012-02-22 10:17:51 -0800</date>
            <delta_ts>2012-02-22 10:41:57 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-78831-20120222101750.patch</filename>
            <type>text/plain</type>
            <size>46274</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEyMjlhZTVkMGEzMThm
YWQ4NGNhYTM3ZTI4MzYyYjE4MjA5YTdhNS4uNzkzOTk4YzBmY2Q5ZmU2NDJmOTQwNjU1NWI5NjE3
YWQ3MWJkMDkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTAyLTIxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IEludGVncmF0ZSB3aXRoIGFib3V0OnRyYWNpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4ODMxCisKKyAgICAgICAgQW5ub3RhdGUgaW50
ZXJlc3RpbmcgSURCIGZ1bmN0aW9ucyBzbyB0aGV5IHNob3cgdXAgaW4gdGhlCisgICAgICAgIHRy
YWNpbmcgdXRpbGl0eSBpbmNsdWRlZCBpbiB0aGUgQ2hyb21pdW0gcG9ydC4KKworICAgICAgICBS
ZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlE
QktleUZyb21TZXJpYWxpemVkVmFsdWVBbmRLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Omlu
amVjdElEQktleUludG9TZXJpYWxpemVkVmFsdWUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCQ3Vy
c29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6ZGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6a2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNv
cjo6cHJpbWFyeUtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OnZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkN1cnNvcjo6Y29udGludWVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6
OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpkaXJlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmtleSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJpbWFyeUtleSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCQ3Vyc29yQmFja2VuZEltcGw6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJz
b3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJD
dXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbkludGVybmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaFJlc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpjbG9zZSk6CisgICAg
ICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogc3RvcmFnZS9JREJJbmRleC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5LZXlD
dXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleDo6Z2V0S2V5KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkluZGV4QmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6b3BlbkN1
cnNvckludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6Om9w
ZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXhCYWNrZW5kSW1wbDo6b3Blbktl
eUN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldEludGVybmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkluZGV4QmFja2VuZEltcGw6OmdldCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRLZXkpOgorICAgICAgICAqIHN0b3JhZ2UvSURC
T2JqZWN0U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6Om5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmtleVBhdGgpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmFkZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJP
YmplY3RTdG9yZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmNy
ZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjppbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y291bnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Z2V0SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6ZmV0Y2hLZXlGcm9tS2V5
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjppbmplY3RLZXlJbnRvS2V5UGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlSW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvcik6
CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29y
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291
bnRJbnRlcm5hbCk6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9uU3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJS
ZXF1ZXN0OjpvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIHN0b3JhZ2UvSURCVHJhY2luZy5o
OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBzdG9y
YWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6Y29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tFdmVudFRpbWVyRmlyZWQpOgorCiAyMDEyLTAy
LTIyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBm
aXJzdFJlbmRlcmVyT2YoKSBzaG91bGQgYWxzbyByZXR1cm4gYSBmYWxsYmFjayBlbGVtZW50IHJl
bmRlcmVyIGluIE5vZGVSZW5kZXJpbmdDb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDcxZTk2
MzYzMjE3OTVjZTE1NTJkOTRjNzFkNmU5MDZjOTZjMDg3MmUuLjJkZGJmMmU0MzU2NzA5ZGNjYTRj
Yjk4MGNkYjRjYzYwMDlhZTJiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ2NTgsNiArNDY1OCw3
IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9JREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgn
LAogICAgICAgICAgICAgJ3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgJ3N0
b3JhZ2UvSURCUmVxdWVzdC5oJywKKyAgICAgICAgICAgICdzdG9yYWdlL0lEQlRyYWNpbmcuaCcs
CiAgICAgICAgICAgICAnc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAnLAogICAgICAgICAgICAg
J3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmI3ZDc2Nzk0ZTMwYmU2NThhNmNmMjE3N2Y4
ZGZlNDA2NGJmNGYzMS4uODVjYTkzZDgzMDM4NDk1NmNiMjJlYzUwMGYxNzVmYmJkNDg1MzNhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNTg5Myw2ICs1ODkzLDcgQEAKIAkJRTRDMjc5NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJl
bmRlck1lZGlhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEMyNzk1NzBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCAqLzsgfTsKIAkJRTRE
Njg3NzcwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQ2ODc3NjBFRDdBRTNEMDA2
RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcCAqLzsgfTsKIAkJRTRENjg3NzkwRUQ3QUU0
RjAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTRENjg3NzgwRUQ3QUU0RjAwNkVBOTc4IC8qIFB1cmdlYWJs
ZUJ1ZmZlci5oICovOyB9OworCQlFQjQ5REI4RjE0RjQ2RThCMDAyMjk5RDkgLyogSURCVHJhY2lu
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUI0OURC
OEUxNEY0NkU4QjAwMjI5OUQ5IC8qIElEQlRyYWNpbmcuaCAqLzsgfTsKIAkJRUQyQkE4M0MwOUEy
NEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDJCQTgzQjA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1l
bnRNYXJrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFRDUwMURDNjBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUQ1MDFEQzUwQjI0OUYyOTAwQUUx
OEQ5IC8qIEVkaXRvck1hYy5tbSAqLzsgfTsKIAkJRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8q
IENvbG9yTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFREUzQTRGRjBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTI5MzMsNiArMTI5MzQsNyBAQAog
CQlFNEMyNzk1NzBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVkaWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTRENjg3NzYwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlck1hYy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXJnZWFibGVCdWZmZXJN
YWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEQ2ODc3ODBFRDdBRTRGMDA2
RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFB1cmdlYWJsZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjQ5
REI4RTE0RjQ2RThCMDAyMjk5RDkgLyogSURCVHJhY2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJREJUcmFjaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRpdG9yTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEVkaXRvck1hYy5tbTsgcGF0
aCA9IG1hYy9FZGl0b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVERTNB
NEZGMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb2xvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM4
NzQsNiArMTM4NzYsNyBAQAogCQkxQUU4MkVDOTBDQUFFMTc3MDAyMjM3QUUgLyogc3RvcmFnZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRUI0OURCOEUx
NEY0NkU4QjAwMjI5OUQ5IC8qIElEQlRyYWNpbmcuaCAqLywKIAkJCQlCNUI1REM2NzExOUJCM0Q1
MDAyQTg3OTAgLyogQWJzdHJhY3REYXRhYmFzZS5jcHAgKi8sCiAJCQkJQjVCNURDNjgxMTlCQjNE
NTAwMkE4NzkwIC8qIEFic3RyYWN0RGF0YWJhc2UuaCAqLywKIAkJCQk1MTQxODVFRDBDRDY1RjA0
MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwICovLApAQCAtMjQzMzIsNiArMjQz
MzUsNyBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRp
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVy
b1BvbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUVCNDlEQjhGMTRGNDZFOEIwMDIyOTlEOSAvKiBJ
REJUcmFjaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggYTlhZGQxOGFkNTFlMjdhZjJjZmJl
Yzc3YzNjZTUyMWMwODQ0ZDIwNC4uYjRlZTY5NWZiOWEyOWRlMWZjMGNhZjhlYmE2OGE5OGYxMzhk
YTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2Vw
dGlvbi5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNp
bmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhJREJLZXkuaCIKQEAgLTE0OSw2
ICsxNTAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5zdXJlTnRoVmFsdWVPbktleVBhdGgo
djg6OkhhbmRsZTx2ODo6VmFsdWU+JiByb290VmFsdWUsCiAKIFBhc3NSZWZQdHI8SURCS2V5PiBj
cmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBrZXlQYXRoKQog
eworICAgIElEQl9UUkFDRSgiY3JlYXRlSURCS2V5RnJvbVNlcmlhbGl6ZWRWYWx1ZUFuZEtleVBh
dGgiKTsKICAgICBWOExvY2FsQ29udGV4dCBsb2NhbENvbnRleHQ7CiAgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHY4VmFsdWUodmFsdWUtPmRlc2VyaWFsaXplKCkpOwogICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2OEtleShnZXROdGhWYWx1ZU9uS2V5UGF0aCh2OFZhbHVlLCBrZXlQYXRoLCBr
ZXlQYXRoLnNpemUoKSkpOwpAQCAtMTU5LDYgKzE2MSw3IEBAIFBhc3NSZWZQdHI8SURCS2V5PiBj
cmVhdGVJREJLZXlGcm9tU2VyaWFsaXplZFZhbHVlQW5kS2V5UGF0aChQYXNzUmVmUHRyPFNlcmlh
bGl6CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBpbmplY3RJREJLZXlJbnRv
U2VyaWFsaXplZFZhbHVlKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGtleVBhdGgpCiB7
CisgICAgSURCX1RSQUNFKCJpbmplY3RJREJLZXlJbnRvU2VyaWFsaXplZFZhbHVlIik7CiAgICAg
VjhMb2NhbENvbnRleHQgbG9jYWxDb250ZXh0OwogICAgIGlmICgha2V5UGF0aC5zaXplKCkpCiAg
ICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJD
dXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCmluZGV4IDE2
NmMyZGQ2ZDNkMDllNjRlYTMxZDcwZjYwMWFlNDYwNTk5ZGMxYjQuLjFkZDFlOWViZTkwNjM4Yjk3
MDhhMmRmZDFhNTMzYzhlMmIzNTc0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgorI2luY2x1
ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKQEAgLTYyLDIxICs2MywyNSBAQCBJREJDdXJzb3I6On5JREJDdXJzb3IoKQogCiB1bnNp
Z25lZCBzaG9ydCBJREJDdXJzb3I6OmRpcmVjdGlvbigpIGNvbnN0CiB7CisgICAgSURCX1RSQUNF
KCJJREJDdXJzb3I6OmRpcmVjdGlvbiIpOwogICAgIHJldHVybiBtX2JhY2tlbmQtPmRpcmVjdGlv
bigpOwogfQogCiBQYXNzUmVmUHRyPElEQktleT4gSURCQ3Vyc29yOjprZXkoKSBjb25zdAogewor
ICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjprZXkiKTsKICAgICByZXR1cm4gbV9iYWNrZW5kLT5r
ZXkoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJLZXk+IElEQkN1cnNvcjo6cHJpbWFyeUtleSgpIGNv
bnN0CiB7CisgICAgSURCX1RSQUNFKCJJREJDdXJzb3I6OnByaW1hcnlLZXkiKTsKICAgICByZXR1
cm4gbV9iYWNrZW5kLT5wcmltYXJ5S2V5KCk7CiB9CiAKIFBhc3NSZWZQdHI8SURCQW55PiBJREJD
dXJzb3I6OnZhbHVlKCkgY29uc3QKIHsKKyAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6dmFsdWUi
KTsKICAgICByZXR1cm4gSURCQW55OjpjcmVhdGUobV9iYWNrZW5kLT52YWx1ZSgpKTsKIH0KIApA
QCAtODcsNiArOTIsNyBAQCBJREJBbnkqIElEQkN1cnNvcjo6c291cmNlKCkgY29uc3QKIAogUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OnVwZGF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjp1cGRhdGUiKTsK
ICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250
ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9i
YWNrZW5kLT51cGRhdGUodmFsdWUsIHJlcXVlc3QsIGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTk4
LDYgKzEwNCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjp1cGRhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlCiAKIHZvaWQgSURCQ3Vyc29yOjpj
b250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yOjpjb250aW51ZSIpOwogICAgIGlmIChrZXkg
JiYgKGtleS0+dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0xMTQs
NiArMTIxLDcgQEAgdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6ZGVsZXRl
Iik7CiAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUo
Y29udGV4dCwgSURCQW55OjpjcmVhdGUodGhpcyksIG1fdHJhbnNhY3Rpb24uZ2V0KCkpOwogICAg
IG1fYmFja2VuZC0+ZGVsZXRlRnVuY3Rpb24ocmVxdWVzdCwgZWMpOwogICAgIGlmIChlYykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRl
eCBmZjc1NmNlZGVjYWMyYTY2OTk5OTI3Nzk5NzkzNzI2Nzk3MjEzZWIxLi5jZGJlNzA3ZmNlMTI5
NTRiZGQ1YjlkOWRmYWJlYWE0MTg4NDQ0ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
IklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIgog
I2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKKyNpbmNsdWRlICJJREJUcmFjaW5nLmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAKQEAgLTY0LDIxICs2NSwyNSBAQCBJREJDdXJzb3JCYWNrZW5kSW1w
bDo6fklEQkN1cnNvckJhY2tlbmRJbXBsKCkKIAogdW5zaWduZWQgc2hvcnQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OmRpcmVjdGlvbigpIGNvbnN0CiB7CisgICAgSURCX1RSQUNFKCJJREJDdXJzb3JC
YWNrZW5kSW1wbDo6ZGlyZWN0aW9uIik7CiAgICAgcmV0dXJuIG1fZGlyZWN0aW9uOwogfQogCiBQ
YXNzUmVmUHRyPElEQktleT4gSURCQ3Vyc29yQmFja2VuZEltcGw6OmtleSgpIGNvbnN0CiB7Cisg
ICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6a2V5Iik7CiAgICAgcmV0dXJuIG1f
Y3Vyc29yLT5rZXkoKTsKIH0KIAogUGFzc1JlZlB0cjxJREJLZXk+IElEQkN1cnNvckJhY2tlbmRJ
bXBsOjpwcmltYXJ5S2V5KCkgY29uc3QKIHsKKyAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tl
bmRJbXBsOjpwcmltYXJ5S2V5Iik7CiAgICAgcmV0dXJuIG1fY3Vyc29yLT5wcmltYXJ5S2V5KCk7
CiB9CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJREJDdXJzb3JCYWNrZW5k
SW1wbDo6dmFsdWUoKSBjb25zdAogeworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZElt
cGw6OnZhbHVlIik7CiAgICAgaWYgKG1fY3Vyc29yVHlwZSA9PSBJbmRleEtleUN1cnNvcikKICAg
ICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOwogICAgIHJldHVy
biBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKG1fY3Vyc29yLT52YWx1ZSgp
KTsKQEAgLTg2LDYgKzkxLDcgQEAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IElE
QkN1cnNvckJhY2tlbmRJbXBsOjp2YWx1ZSgpIGNvbnN0CiAKIHZvaWQgSURCQ3Vyc29yQmFja2Vu
ZEltcGw6OnVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewor
ICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OnVwZGF0ZSIpOwogICAgIGlmICgh
bV9jdXJzb3IgfHwgbV9jdXJzb3JUeXBlID09IEluZGV4S2V5Q3Vyc29yKSB7CiAgICAgICAgIGVj
ID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKICAgICAgICAgcmV0dXJu
OwpAQCAtOTYsNiArMTAyLDcgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6dXBkYXRlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1IKIAogdm9pZCBJREJD
dXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4gcHJw
S2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKKyAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZSIp
OwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKIAogICAgIGlmIChtX2N1cnNvciAm
JiBrZXkpIHsKQEAgLTEyMSw2ICsxMjgsNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpj
b250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdAogLy8g
ICAgICAgICAgICBJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSB3aWxsIG5lZWQgdG8g
YmUgbW9kaWZpZWQgdG8gaGFuZGxlIHRoaXMhISEKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6
OmNvbnRpbnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29yLCBQYXNzUmVmUHRyPElEQktleT4g
cHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogeworICAgIElEQl9U
UkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlSW50ZXJuYWwiKTsKICAgICBSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IHBycEN1cnNvcjsKICAgICBSZWZQdHI8
SURCS2V5PiBrZXkgPSBwcnBLZXk7CiAKQEAgLTEzNSw2ICsxNDMsNyBAQCB2b2lkIElEQkN1cnNv
ckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhcwogCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKKyAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpkZWxldGUiKTsKICAgICBp
ZiAoIW1fY3Vyc29yIHx8IG1fY3Vyc29yVHlwZSA9PSBJbmRleEtleUN1cnNvcikgewogICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiAgICAgICAgIHJl
dHVybjsKQEAgLTE0NSwxMiArMTU0LDE0IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmRl
bGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsCiAKIHZv
aWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0
Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIElEQl9UUkFDRSgiSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29u
dGludWUiKTsKICAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWws
IHRoaXMsIG51bWJlclRvRmV0Y2gsIHBycENhbGxiYWNrcykpKQogICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CiB9CiAKIHZvaWQgSURC
Q3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29yLCBp
bnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
KyAgICBJREJfVFJBQ0UoIklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50
ZXJuYWwiKTsKICAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IHBycEN1
cnNvcjsKIAogICAgIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGZvdW5kS2V5czsKQEAgLTE5Nyw2
ICsyMDgsNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhcwogCiB2b2lkIElEQkN1cnNvckJhY2tl
bmRJbXBsOjpwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZl
dGNoZXMpCiB7CisgICAgSURCX1RSQUNFKCJJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hS
ZXNldCIpOwogICAgIG1fdHJhbnNhY3Rpb24tPmFkZFBlbmRpbmdFdmVudHMoLXVudXNlZFByZWZl
dGNoZXMpOwogICAgIG1fY3Vyc29yID0gbV9zYXZlZEN1cnNvcjsKICAgICBtX3NhdmVkQ3Vyc29y
ID0gMDsKQEAgLTIxMyw2ICsyMjUsNyBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVm
ZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZQogCiB2b2lk
IElEQkN1cnNvckJhY2tlbmRJbXBsOjpjbG9zZSgpCiB7CisgICAgSURCX1RSQUNFKCJJREJDdXJz
b3JCYWNrZW5kSW1wbDo6Y2xvc2UiKTsKICAgICBtX2Nsb3NlZCA9IHRydWU7CiAgICAgaWYgKG1f
Y3Vyc29yKQogICAgICAgICBtX2N1cnNvci0+Y2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJEYXRhYmFzZS5jcHAKaW5kZXggMjU2NTBmMzkyN2ViODljMjc1ZjM2OGNhNTUxMWVhNzk0OGUz
YmIzZC4uY2M1M2E4ODJhZjMzZDk5NDk4NWVlMmYzZWNkMWNlMWZkNjAyYzE5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZS5oIgogCisjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCisKICNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKQEAgLTM4LDE0ICs0MCwxMyBAQAog
I2luY2x1ZGUgIklEQkluZGV4LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUg
IklEQk9iamVjdFN0b3JlLmgiCisjaW5jbHVkZSAiSURCVHJhY2luZy5oIgorI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgiCiAjaW5j
bHVkZSAiSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxsaW1p
dHM+CiAKLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBkYXRhYmFzZSkKQEAgLTIyMSw2ICsyMjIsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpl
bnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAKIGJvb2wgSURCRGF0YWJhc2U6
OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiB7CisgICAgSURCX1RSQUNF
KCJJREJEYXRhYmFzZTo6ZGlzcGF0Y2hFdmVudCIpOwogICAgIEFTU0VSVChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS52ZXJzaW9uY2hhbmdlRXZlbnQpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9lbnF1ZXVlZEV2ZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAobV9l
bnF1ZXVlZEV2ZW50c1tpXS5nZXQoKSA9PSBldmVudC5nZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCSW5kZXguY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJJbmRleC5jcHAKaW5kZXggYmYyZDM4YWYyYjE3ZjI4NTYwMDYwYWEyMTM3ZDI5YWRkMWUyYWFl
Yy4uYTdjOGRkM2JiNGY3YjZmNmRjMmMwNjU3NTBjNjI5YzRmZDMyZjU1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJJbmRleC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJREJLZXlS
YW5nZS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCUmVxdWVz
dC5oIgorI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Nyw2ICs1OCw3IEBAIElEQkluZGV4Ojp+SURC
SW5kZXgoKQogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewor
ICAgIElEQl9UUkFDRSgiSURCSW5kZXg6Om9wZW5DdXJzb3IiKTsKICAgICBpZiAoZGlyZWN0aW9u
ICE9IElEQkN1cnNvcjo6TkVYVCAmJiBkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpORVhUX05PX0RV
UExJQ0FURSAmJiBkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpQUkVWICYmIGRpcmVjdGlvbiAhPSBJ
REJDdXJzb3I6OlBSRVZfTk9fRFVQTElDQVRFKSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYXkgbmVl
ZCB0byBjaGFuZ2Ugd2hlbiBzcGVjY2VkOiBodHRwOi8vd3d3LnczLm9yZy9CdWdzL1B1YmxpYy9z
aG93X2J1Zy5jZ2k/aWQ9MTE0MDYKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
Q09OU1RSQUlOVF9FUlI7CkBAIC03NSw2ICs3Nyw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJfVFJBQ0UoIklEQkluZGV4Ojpjb3VudCIpOwogICAg
IFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQs
IElEQkFueTo6Y3JlYXRlKHRoaXMpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICBtX2JhY2tl
bmQtPmNvdW50KGtleVJhbmdlLCByZXF1ZXN0LCBtX3RyYW5zYWN0aW9uLT5iYWNrZW5kKCksIGVj
KTsKICAgICBpZiAoZWMpIHsKQEAgLTg2LDYgKzg5LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJJbmRleDo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlAKIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlS
YW5nZSwgdW5zaWduZWQgc2hvcnQgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAg
ICBJREJfVFJBQ0UoIklEQkluZGV4OjpvcGVuS2V5Q3Vyc29yIik7CiAgICAgaWYgKGRpcmVjdGlv
biAhPSBJREJDdXJzb3I6Ok5FWFQgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6TkVYVF9OT19E
VVBMSUNBVEUgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6UFJFViAmJiBkaXJlY3Rpb24gIT0g
SURCQ3Vyc29yOjpQUkVWX05PX0RVUExJQ0FURSkgewogICAgICAgICAvLyBGSVhNRTogTWF5IG5l
ZWQgdG8gY2hhbmdlIHdoZW4gc3BlY2NlZDogaHR0cDovL3d3dy53My5vcmcvQnVncy9QdWJsaWMv
c2hvd19idWcuY2dpP2lkPTExNDA2CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkNPTlNUUkFJTlRfRVJSOwpAQCAtMTA0LDYgKzEwOCw3IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwKIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Z2V0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUm
IGVjKQogeworICAgIElEQl9UUkFDRSgiSURCSW5kZXg6OmdldCIpOwogICAgIGlmIChrZXkgJiYg
KGtleS0+dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAgICAgICAgIGVjID0gSURC
RGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAgLTEyMCw2
ICsxMjUsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cgogCiBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkluZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNF
KCJJREJJbmRleDo6Z2V0S2V5Iik7CiAgICAgaWYgKGtleSAmJiAoa2V5LT50eXBlKCkgPT0gSURC
S2V5OjpJbnZhbGlkVHlwZSkpIHsKICAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
REFUQV9FUlI7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCSW5kZXhCYWNrZW5kSW1wbC5jcHAKaW5kZXggODVkYjE1OGFlN2JjNWFlMDlhYzQ3NzhkMDhi
M2E2MDJkMzgzNzZlZS4uY2VjNDNiOThlYmRjMDNiODMxMmYyNDcwNDNiYjc2NWNlNzcxMzFmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJJbmRleEJhY2tlbmRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkluZGV4QmFja2VuZEltcGwuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UmFu
Z2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAi
SURCVHJhY2luZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcyLDYgKzczLDcgQEAg
SURCSW5kZXhCYWNrZW5kSW1wbDo6fklEQkluZGV4QmFja2VuZEltcGwoKQogCiB2b2lkIElEQklu
ZGV4QmFja2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IHVudHlwZWREaXJlY3Rpb24sIElEQkN1cnNv
ckJhY2tlbmRJbnRlcmZhY2U6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IHRyYW5zYWN0aW9uKQogeworICAgIElEQl9UUkFDRSgiSURCSW5kZXhCYWNrZW5kSW1w
bDo6b3BlbkN1cnNvckludGVybmFsIik7CiAgICAgSURCQ3Vyc29yOjpEaXJlY3Rpb24gZGlyZWN0
aW9uID0gc3RhdGljX2Nhc3Q8SURCQ3Vyc29yOjpEaXJlY3Rpb24+KHVudHlwZWREaXJlY3Rpb24p
OwogCiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJz
b3I7CkBAIC0xMDQsNiArMTA2LDcgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vy
c29ySW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHIKIAogdm9pZCBJ
REJJbmRleEJhY2tlbmRJbXBsOjpvcGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBy
cEtleVJhbmdlLCB1bnNpZ25lZCBzaG9ydCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNh
Y3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIElEQl9UUkFDRSgiSURCSW5kZXhC
YWNrZW5kSW1wbDo6b3BlbkN1cnNvciIpOwogICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBs
PiBpbmRleCA9IHRoaXM7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IHBycEtl
eVJhbmdlOwogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNr
czsKQEAgLTExNCw2ICsxMTcsNyBAQCB2b2lkIElEQkluZGV4QmFja2VuZEltcGw6Om9wZW5DdXJz
b3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcHJwS2V5UmFuZ2UsIHVuc2lnbgogCiB2b2lkIElE
QkluZGV4QmFja2VuZEltcGw6Om9wZW5LZXlDdXJzb3IoUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4g
cHJwS2V5UmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvblB0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNFKCJJREJJbmRl
eEJhY2tlbmRJbXBsOjpvcGVuS2V5Q3Vyc29yIik7CiAgICAgUmVmUHRyPElEQkluZGV4QmFja2Vu
ZEltcGw+IGluZGV4ID0gdGhpczsKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlID0g
cHJwS2V5UmFuZ2U7CiAgICAgUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2Fs
bGJhY2tzOwpAQCAtMTI0LDYgKzEyOCw3IEBAIHZvaWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6b3Bl
bktleUN1cnNvcihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwgdW5zCiAKIHZv
aWQgSURCSW5kZXhCYWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJ
REJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBh
c3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbikKIHsK
KyAgICBJREJfVFJBQ0UoIklEQkluZGV4QmFja2VuZEltcGw6OmNvdW50SW50ZXJuYWwiKTsKICAg
ICB1aW50MzJfdCBjb3VudCA9IDA7CiAKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJz
b3I+IGJhY2tpbmdTdG9yZUN1cnNvciA9IGluZGV4LT5tX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4
S2V5Q3Vyc29yKGluZGV4LT5tX2RhdGFiYXNlSWQsIGluZGV4LT5tX29iamVjdFN0b3JlQmFja2Vu
ZC0+aWQoKSwgaW5kZXgtPmlkKCksIHJhbmdlLmdldCgpLCBJREJDdXJzb3I6Ok5FWFQpOwpAQCAt
MTQxLDEyICsxNDYsMTQgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpjb3VudEludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkkKIAogdm9pZCBJREJJbmRl
eEJhY2tlbmRJbXBsOjpjb3VudChQYXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNFKCJJ
REJJbmRleEJhY2tlbmRJbXBsOjpjb3VudCIpOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVk
dWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmNvdW50SW50ZXJuYWwsIHRoaXMsIHJhbmdlLCBj
YWxsYmFja3MsIHRyYW5zYWN0aW9uKSkpCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRp
b246OlRSQU5TQUNUSU9OX0lOQUNUSVZFX0VSUjsKIH0KIAogdm9pZCBJREJJbmRleEJhY2tlbmRJ
bXBsOjpnZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJ
bmRleEJhY2tlbmRJbXBsPiBpbmRleCwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgYm9vbCBnZXRP
YmplY3QsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CisgICAgSURCX1RS
QUNFKCJJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbCIpOwogICAgIC8vIEZJWE1FOiBT
cGxpdCBnZXRJbnRlcm5hbCBpbnRvIHR3byBmdW5jdGlvbnMsIGdldHRpbmcgcmlkIG9mZiB8Z2V0
T2JqZWN0fC4KICAgICBpZiAoZ2V0T2JqZWN0KSB7CiAgICAgICAgIFN0cmluZyB2YWx1ZSA9IGlu
ZGV4LT5tX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0VmlhSW5kZXgoaW5kZXgtPm1fZGF0YWJhc2VJ
ZCwgaW5kZXgtPm1fb2JqZWN0U3RvcmVCYWNrZW5kLT5pZCgpLCBpbmRleC0+aWQoKSwgKmtleSk7
CkBAIC0xNjcsNiArMTc0LDcgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXRJbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJJbmQKIAogdm9pZCBJREJJ
bmRleEJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNFKCJJ
REJJbmRleEJhY2tlbmRJbXBsOjpnZXQiKTsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1w
bD4gaW5kZXggPSB0aGlzOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKICAgICBS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CkBAIC0xNzYsNiAr
MTg0LDcgQEAgdm9pZCBJREJJbmRleEJhY2tlbmRJbXBsOjpnZXQoUGFzc1JlZlB0cjxJREJLZXk+
IHBycEtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3MKIAogdm9pZCBJREJJbmRleEJhY2tlbmRJ
bXBsOjpnZXRLZXkoUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNFKCJJREJJbmRleEJh
Y2tlbmRJbXBsOjpnZXRLZXkiKTsKICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gaW5k
ZXggPSB0aGlzOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKICAgICBSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCmluZGV4IGZiZTM3NmI1ZTJiODUyYmU2ZGFmYzgzYWY3
ZjRmMzVhYWY0NWI3MjkuLjZkNGZmYWI3ZDkyNTUwYWU4NjUyNzU4MDkxMWYwMDk4Yjk1ZDM4NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2lu
Y2x1ZGUgIklEQktleVJhbmdlLmgiCisjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC01NSwyNiArNTYsMzEgQEAgSURCT2JqZWN0
U3RvcmU6OklEQk9iamVjdFN0b3JlKFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlPiBpZGJPYmoKIAogU3RyaW5nIElEQk9iamVjdFN0b3JlOjpuYW1lKCkgY29uc3QKIHsK
KyAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlOjpuYW1lIik7CiAgICAgcmV0dXJuIG1fYmFj
a2VuZC0+bmFtZSgpOwogfQogCiBTdHJpbmcgSURCT2JqZWN0U3RvcmU6OmtleVBhdGgoKSBjb25z
dAogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmtleVBhdGgiKTsKICAgICByZXR1
cm4gbV9iYWNrZW5kLT5rZXlQYXRoKCk7CiB9CiAKIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4g
SURCT2JqZWN0U3RvcmU6OmluZGV4TmFtZXMoKSBjb25zdAogeworICAgIElEQl9UUkFDRSgiSURC
T2JqZWN0U3RvcmU6OmluZGV4TmFtZXMiKTsKICAgICByZXR1cm4gbV9iYWNrZW5kLT5pbmRleE5h
bWVzKCk7CiB9CiAKIElEQlRyYW5zYWN0aW9uKiBJREJPYmplY3RTdG9yZTo6dHJhbnNhY3Rpb24o
KSBjb25zdAogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OnRyYW5zYWN0aW9uIik7
CiAgICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24uZ2V0KCk7CiB9CiAKIFBhc3NSZWZQdHI8SURCUmVx
dWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJf
VFJBQ0UoIklEQk9iamVjdFN0b3JlOjpnZXQiKTsKICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUo
KSA9PSBJREJLZXk6OkludmFsaWRUeXBlKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC05MSw2ICs5Nyw3IEBAIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzCiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmFkZCIpOwog
ICAgIGlmIChrZXkgJiYgKGtleS0+dHlwZSgpID09IElEQktleTo6SW52YWxpZFR5cGUpKSB7CiAg
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkRBVEFfRVJSOwogICAgICAgICByZXR1
cm4gMDsKQEAgLTEwNyw2ICsxMTQsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVj
dFN0b3JlOjphZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzcwogCiBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpwdXQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlLCBQ
YXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJfVFJB
Q0UoIklEQk9iamVjdFN0b3JlOjpwdXQiKTsKICAgICBpZiAoa2V5ICYmIChrZXktPnR5cGUoKSA9
PSBJREJLZXk6OkludmFsaWRUeXBlKSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpEQVRBX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzksNiArMTQ3LDcgQEAgUGFz
c1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY28KIAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RT
dG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNF
KCJJREJPYmplY3RTdG9yZTo6ZGVsZXRlIik7CiAgICAgaWYgKCFrZXkgfHwgIWtleS0+dmFsaWQo
KSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUjsKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0xNTUsNiArMTY0LDcgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28K
IAogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RS
QUNFKCJJREJPYmplY3RTdG9yZTo6Y2xlYXIiKTsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVx
dWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0aGlzKSwg
bV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jbGVhcihyZXF1ZXN0LCBtX3Ry
YW5zYWN0aW9uLT5iYWNrZW5kKCksIGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTE2Niw2ICsxNzYs
NyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjbGVhcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeAogCiBQYXNzUmVmUHRyPElEQkluZGV4PiBJREJP
YmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IGtleVBhdGgsIGNvbnN0IE9wdGlvbnNPYmplY3QmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmU6OmNyZWF0ZUluZGV4Iik7CiAgICAg
aWYgKCFJREJJc1ZhbGlkS2V5UGF0aChrZXlQYXRoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpOT05fVFJBTlNJRU5UX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0x
OTAsNiArMjAxLDcgQEAgUGFzc1JlZlB0cjxJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmNyZWF0
ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW4KIAogUGFzc1JlZlB0cjxJREJJ
bmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6aW5kZXgiKTsKICAg
ICBpZiAobV90cmFuc2FjdGlvbi0+ZmluaXNoZWQoKSkgewogICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjE2
LDYgKzIyOCw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUluZGV4KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IGRpcmVjdGlvbiwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6b3Bl
bkN1cnNvciIpOwogICAgIGlmIChkaXJlY3Rpb24gIT0gSURCQ3Vyc29yOjpORVhUICYmIGRpcmVj
dGlvbiAhPSBJREJDdXJzb3I6Ok5FWFRfTk9fRFVQTElDQVRFICYmIGRpcmVjdGlvbiAhPSBJREJD
dXJzb3I6OlBSRVYgJiYgZGlyZWN0aW9uICE9IElEQkN1cnNvcjo6UFJFVl9OT19EVVBMSUNBVEUp
IHsKICAgICAgICAgLy8gRklYTUU6IE1heSBuZWVkIHRvIGNoYW5nZSB3aGVuIHNwZWNjZWQ6IGh0
dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xMTQwNgogICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpDT05TVFJBSU5UX0VSUjsKQEAgLTIzNCw2ICsy
NDcsNyBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleAogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAg
SURCX1RSQUNFKCJJREJPYmplY3RTdG9yZTo6Y291bnQiKTsKICAgICBSZWZQdHI8SURCUmVxdWVz
dD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBJREJBbnk6OmNyZWF0ZSh0
aGlzKSwgbV90cmFuc2FjdGlvbi5nZXQoKSk7CiAgICAgbV9iYWNrZW5kLT5jb3VudChyYW5nZSwg
cmVxdWVzdCwgbV90cmFuc2FjdGlvbi0+YmFja2VuZCgpLCBlYyk7CiAgICAgaWYgKGVjKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZElt
cGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
LmNwcAppbmRleCA2OWEzYjI0OGJhMGEwN2E5OWFkMTE3N2UwMTY2N2U2OGY1MTNlNDQzLi5iOWVj
Y2UzMjlmNDA1MzgyYzFiYjQ5MjNkYzc3NGE1M2UxMzZmMTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aEJh
Y2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJUcmFj
aW5nLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCkBAIC04Myw2ICs4NCw3IEBAIFBhc3NS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6aW5kZXhOYW1l
cygpIGNvbnN0CiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0KFBhc3NSZWZQ
dHI8SURCS2V5PiBwcnBLZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0
Iik7CiAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlID0g
dGhpczsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7CiAgICAgUmVmUHRyPElEQkNh
bGxiYWNrcz4gY2FsbGJhY2tzID0gcHJwQ2FsbGJhY2tzOwpAQCAtOTIsNiArOTQsNyBAQCB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldChQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5
LCBQYXNzUmVmUHRyPElEQkNhbAogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Omdl
dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogeworICAgIElEQl9UUkFDRSgiSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6Z2V0SW50ZXJuYWwiKTsKICAgICBTdHJpbmcgd2lyZURhdGEg
PSBvYmplY3RTdG9yZS0+bV9iYWNraW5nU3RvcmUtPmdldE9iamVjdFN0b3JlUmVjb3JkKG9iamVj
dFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0b3JlLT5pZCgpLCAqa2V5KTsKICAgICBpZiAo
d2lyZURhdGEuaXNOdWxsKCkpIHsKICAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjp1bmRlZmluZWRWYWx1ZSgpKTsKQEAgLTEwMyw2ICsxMDYsNyBAQCB2
b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmdldEludGVybmFsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPAogCiBzdGF0aWMgUGFzc1JlZlB0cjxJREJLZXk+IGZldGNo
S2V5RnJvbUtleVBhdGgoU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5n
JiBrZXlQYXRoKQogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
ZmV0Y2hLZXlGcm9tS2V5UGF0aCIpOwogICAgIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+IHZhbHVlczsKICAgICB2YWx1ZXMuYXBwZW5kKHZhbHVlKTsKICAgICBWZWN0b3I8
UmVmUHRyPElEQktleT4gPiBrZXlzOwpAQCAtMTE1LDExICsxMTksMTMgQEAgc3RhdGljIFBhc3NS
ZWZQdHI8SURCS2V5PiBmZXRjaEtleUZyb21LZXlQYXRoKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
dmFsdWUsIGNvbnMKIAogc3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBp
bmplY3RLZXlJbnRvS2V5UGF0aChQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKIHsKKyAg
ICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmluamVjdEtleUludG9LZXlQ
YXRoIik7CiAgICAgcmV0dXJuIElEQktleVBhdGhCYWNrZW5kSW1wbDo6aW5qZWN0SURCS2V5SW50
b1NlcmlhbGl6ZWRWYWx1ZShrZXksIHZhbHVlLCBrZXlQYXRoKTsKIH0KIAogdm9pZCBJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsOjpwdXQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHBycFZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4gcHJwS2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb25QdHIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIElE
Ql9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0Iik7CiAgICAgaWYgKHRyYW5z
YWN0aW9uUHRyLT5tb2RlKCkgPT0gSURCVHJhbnNhY3Rpb246OlJFQURfT05MWSkgewogICAgICAg
ICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpSRUFEX09OTFlfRVJSOwogICAgICAgICByZXR1
cm47CkBAIC0yMDAsNiArMjA2LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpy
ZXZlcnRBdXRvSW5jcmVtZW50S2V5Q2FjaGUoU2NyaXB0RXhlY3V0aW9uQ29udGUKIAogdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwg
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHBycFZhbHVlLCBQYXNzUmVmUHRyPElE
QktleT4gcHJwS2V5LCBQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFu
c2FjdGlvbikKIHsKKyAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1
dEludGVybmFsIik7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUgPSBw
cnBWYWx1ZTsKICAgICBSZWZQdHI8SURCS2V5PiBrZXkgPSBwcnBLZXk7CiAKQEAgLTMyNiw2ICsz
MzMsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBLZXksIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIElEQl9UUkFD
RSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6ZGVsZXRlIik7CiAgICAgUmVmUHRyPElEQktl
eT4ga2V5ID0gcHJwS2V5OwogICAgIGlmICgha2V5IHx8ICFrZXktPnZhbGlkKCkpIHsKICAgICAg
ICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlI7CkBAIC0zNDEsNiArMzQ5LDcg
QEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVm
UHRyPElEQktleT4gcHJwS2V5LCBQYXNzUmUKIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleVJhbmdlPiBwcnBLZXlSYW5nZSwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgSURC
X1RSQUNFKCJJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGUiKTsKICAgICBpZiAodHJh
bnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZKSB7CiAgICAgICAg
IGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlJFQURfT05MWV9FUlI7CiAgICAgICAgIHJldHVy
bjsKQEAgLTM1Niw2ICszNjUsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRl
bGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycEtleVJhbgogCiB2b2lkIElE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmRlbGV0ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3Jl
LCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKIHsKKyAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZElt
cGw6OmRlbGV0ZUludGVybmFsIik7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6T2JqZWN0
U3RvcmVSZWNvcmRJZGVudGlmaWVyPiByZWNvcmRJZGVudGlmaWVyOwogCiAgICAgUmVmUHRyPElE
QkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBvYmplY3RTdG9yZS0+
bV9iYWNraW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcihvYmplY3RTdG9yZS0+bV9kYXRh
YmFzZUlkLCBvYmplY3RTdG9yZS0+aWQoKSwga2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVY
VCk7CkBAIC0zODQsNiArMzk0LDcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpk
ZWxldGVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlAKIAogdm9pZCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjbGVhcihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
cHJwQ2FsbGJhY2tzLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OmNsZWFyIik7CiAgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSURCVHJh
bnNhY3Rpb246OlJFQURfT05MWSkgewogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpSRUFEX09OTFlfRVJSOwogICAgICAgICByZXR1cm47CkBAIC01NTAsNiArNTYxLDcgQEAgdm9p
ZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpkZWxldGVJbmRleEludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXMKIAogdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpv
cGVuQ3Vyc29yKFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IHBycFJhbmdlLCB1bnNpZ25lZCBzaG9y
dCBkaXJlY3Rpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNv
ciIpOwogICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSA9
IHRoaXM7CiAgICAgUmVmUHRyPElEQktleVJhbmdlPiByYW5nZSA9IHBycFJhbmdlOwogICAgIFJl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKQEAgLTU2Myw2ICs1
NzUsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Om9wZW5DdXJzb3IoUGFzc1Jl
ZlB0cjxJREJLZXlSYW5nZT4gcHJwUmFuZ2UsIHVucwogCiB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6Om9wZW5DdXJzb3JJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFzc1JlZlB0
cjxJREJLZXlSYW5nZT4gcmFuZ2UsIHVuc2lnbmVkIHNob3J0IHRtcERpcmVjdGlvbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uKQogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsIik7CiAgICAgSURCQ3Vyc29yOjpE
aXJlY3Rpb24gZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8SURCQ3Vyc29yOjpEaXJlY3Rpb24+KHRt
cERpcmVjdGlvbik7CiAKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGJhY2tp
bmdTdG9yZUN1cnNvciA9IG9iamVjdFN0b3JlLT5tX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0
b3JlQ3Vyc29yKG9iamVjdFN0b3JlLT5tX2RhdGFiYXNlSWQsIG9iamVjdFN0b3JlLT5pZCgpLCBy
YW5nZS5nZXQoKSwgZGlyZWN0aW9uKTsKQEAgLTU3NywxMiArNTkwLDE0IEBAIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6b3BlbkN1cnNvckludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzCiAKIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnQoUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogeworICAgIElEQl9UUkFDRSgiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1w
bDo6Y291bnQiKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjb3VudEludGVybmFsLCB0aGlz
LCByYW5nZSwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbikpKQogICAgICAgICBlYyA9IElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpUUkFOU0FDVElPTl9JTkFDVElWRV9FUlI7CiB9CiAKIHZvaWQgSURCT2Jq
ZWN0U3RvcmVCYWNrZW5kSW1wbDo6Y291bnRJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiBvYmplY3RTdG9yZSwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4gcmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2Fj
dGlvbikKIHsKKyAgICBJREJfVFJBQ0UoIklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OmNvdW50
SW50ZXJuYWwiKTsKICAgICB1aW50MzJfdCBjb3VudCA9IDA7CiAgICAgUmVmUHRyPElEQkJhY2tp
bmdTdG9yZTo6Q3Vyc29yPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBvYmplY3RTdG9yZS0+bV9iYWNr
aW5nU3RvcmUtPm9wZW5PYmplY3RTdG9yZUN1cnNvcihvYmplY3RTdG9yZS0+bV9kYXRhYmFzZUlk
LCBvYmplY3RTdG9yZS0+aWQoKSwgcmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6TkVYVCk7CiAgICAg
aWYgKCFiYWNraW5nU3RvcmVDdXJzb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
Y3BwCmluZGV4IDliZmNkZDdjMWFkM2FjOWMwODA1MDYwZjNkZWMyOWNlNDcxYzdmNTEuLmEwNGMw
YzY2ODdkODM5NWE0MWUzMjBhZGE2ZGRiZjNmMGYwYmZjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJSZXF1ZXN0LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNl
LmgiCiAjaW5jbHVkZSAiSURCRXZlbnREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiSURCUGVuZGlu
Z1RyYW5zYWN0aW9uTW9uaXRvci5oIgorI2luY2x1ZGUgIklEQlRyYWNpbmcuaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xOTcsNiArMTk4
LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RXZlbnQ+IGNyZWF0ZVN1Y2Nlc3NFdmVudCgpCiAKIHZv
aWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZG9tU3Ry
aW5nTGlzdCkKIHsKKyAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhET01TdHJp
bmdMaXN0KSIpOwogICAgIEFTU0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNO
dWxsKCkgJiYgIW1fcmVzdWx0KTsKICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGRvbVN0
cmluZ0xpc3QpOwogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNjZXNzRXZlbnQoKSk7CkBAIC0y
MDQsNiArMjA2LDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01T
dHJpbmdMaXN0PiBkb21TdHJpbmdMaXN0KQogCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQ
YXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCiB7CisgICAgSURC
X1RSQUNFKCJJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoSURCQ3Vyc29yKSIpOwogICAgIEFTU0VSVCgh
bV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsKICAg
ICBBU1NFUlQobV9jdXJzb3JUeXBlICE9IElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U6OkludmFs
aWRDdXJzb3JUeXBlKTsKICAgICBSZWZQdHI8SURCQ3Vyc29yPiBjdXJzb3I7CkBAIC0yMTksNiAr
MjIyLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKIHsKKyAgICBJ
REJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhJREJEYXRhYmFzZSkiKTsKICAgICBBU1NF
UlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpICYmICFtX3Jlc3VsdCk7
CiAgICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjMyLDYgKzIzNiw3IEBAIHZvaWQgSURCUmVxdWVzdDo6b25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQog
CiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4gaWRiS2V5KQog
eworICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNzKElEQktleSkiKTsKICAgICBB
U1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVsbCgpICYmICFtX3Jlc3Vs
dCk7CiAgICAgaWYgKGlkYktleSAmJiBpZGJLZXktPnZhbGlkKCkpCiAgICAgICAgIG1fcmVzdWx0
ID0gSURCQW55OjpjcmVhdGUoaWRiS2V5KTsKQEAgLTI0Miw2ICsyNDcsNyBAQCB2b2lkIElEQlJl
cXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4gaWRiS2V5KQogCiB2b2lkIElEQlJl
cXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4gcHJwQmFja2VuZCkKIHsKKyAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2VzcyhJ
REJUcmFuc2FjdGlvbikiKTsKICAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNz
YWdlLmlzTnVsbCgpICYmICFtX3Jlc3VsdCk7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCA9IHBycEJhY2tlbmQ7CiAKQEAgLTI2Niw2ICsyNzIsNyBA
QCB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gcHJwQmFja2VuZAogCiB2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKQog
eworICAgIElEQl9UUkFDRSgiSURCUmVxdWVzdDo6b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSkiKTsKICAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JNZXNzYWdlLmlzTnVs
bCgpICYmICFtX3Jlc3VsdCk7CiAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShzZXJpYWxp
emVkU2NyaXB0VmFsdWUpOwogICAgIG1fY3Vyc29yLmNsZWFyKCk7CkBAIC0yNzQsNiArMjgxLDcg
QEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWwKIAogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3NX
aXRoQ29udGludWF0aW9uKCkKIHsKKyAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6Om9uU3VjY2Vz
c1dpdGhDb250aW51YXRpb24iKTsKICAgICBBU1NFUlQoIW1fZXJyb3JDb2RlICYmIG1fZXJyb3JN
ZXNzYWdlLmlzTnVsbCgpICYmICFtX3Jlc3VsdCk7CiAgICAgQVNTRVJUKG1fY3Vyc29yKTsKICAg
ICBzZXRSZXN1bHRDdXJzb3IobV9jdXJzb3IsIG1fY3Vyc29yVHlwZSk7CkBAIC0zMTcsNiArMzI1
LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCUmVxdWVzdDo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0CiAKIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCkKIHsKKyAgICBJREJfVFJBQ0UoIklEQlJlcXVlc3Q6OmRpc3BhdGNo
RXZlbnQiKTsKICAgICBBU1NFUlQoIW1fcmVxdWVzdEZpbmlzaGVkKTsKICAgICBBU1NFUlQoIW1f
Y29udGV4dFN0b3BwZWQpOwogICAgIEFTU0VSVChtX2VucXVldWVkRXZlbnRzLnNpemUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYWNpbmcuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCVHJhY2luZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxYjNlZjYwZmM0NjIwZmJl
YzMwOTdkN2VmMzgxNDc3ZDEzNzk3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlRyYWNpbmcuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCVHJh
Y2luZ19oCisjZGVmaW5lIElEQlRyYWNpbmdfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKworI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIK
KyNkZWZpbmUgSURCX1RSQUNFKGEpIFRSQUNFX0VWRU5UMCgiSW5kZXhlZERCIiwgKGEpKTsKKwor
I2Vsc2UKKworI2RlZmluZSBJREJfVFJBQ0UoYSkgKCh2b2lkKTApCisKKyNlbmRpZiAvLyAgUExB
VEZPUk0oQ0hST01JVU0pCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKwor
I2VuZGlmIC8vIElEQlRyYWNpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0
aW9uLmNwcAppbmRleCA5MDQ4NzcwNDVkMWIzNTRhNWIxNjUyMTBiNzNkZWQ1M2I2OWFmNTQxLi5j
Y2RmYjJiOWU2NzVlNWVjYTBiYWNjNTgxMzU1ZTJlZTA5MGM5NDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUg
IklEQk9iamVjdFN0b3JlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgorI2luY2x1
ZGUgIklEQlRyYWNpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODYsNiArMTg3
LDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogSURCVHJhbnNhY3Rpb246OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdAogCiBib29sIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogeworICAgIElEQl9UUkFDRSgiSURCVHJhbnNhY3Rp
b246OmRpc3BhdGNoRXZlbnQiKTsKICAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25GaW5pc2hlZCk7
CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGV2ZW50
LT50YXJnZXQoKSA9PSB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmluZGV4IDI0ZmExYzYwNTIxMmQxZjJlNzBhZjA1
ZmU2OWNiOTM0YjQyMjIwMjkuLjAxMmU2YjZkZDI1NTNhMzhmMzgyMDU2ZWU5YmEwNjhlZDI3MWFl
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tl
bmRJbXBsLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIgogI2luY2x1ZGUg
IklEQkRhdGFiYXNlRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiSURCVHJhY2luZy5oIgogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMTA0LDYgKzEwNSw3IEBAIGJvb2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1
bGVUYXNrKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6CiAKIHZvaWQgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQoKQogeworICAgIElEQl9UUkFDRSgiSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQiKTsKICAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xODUsNiArMTg3LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbXBsOjpzdGFydCgpCiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
Y29tbWl0KCkKIHsKKyAgICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNv
bW1pdCIpOwogICAgIC8vIFRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCBtYXkgYmUg
cmVsZWFzZWQgd2hpbGUgcGVyZm9ybWluZyB0aGUKICAgICAvLyBjb21taXQgc3RlcHMgYmVsb3cu
IFdlIHRoZXJlZm9yZSB0YWtlIGEgc2VsZiByZWZlcmVuY2UgdG8ga2VlcCBvdXJzZWx2ZXMKICAg
ICAvLyBhbGl2ZSB3aGlsZSBleGVjdXRpbmcgdGhpcyBtZXRob2QuCkBAIC0yMDMsNiArMjA2LDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQoKQogCiB2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw+KikKIHsKKyAgICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OnRhc2tUaW1lckZpcmVkIik7CiAgICAgQVNTRVJUKCFtX3Rhc2tRdWV1ZS5pc0VtcHR5KCkp
OwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhcnRQZW5kaW5nKSB7CkBAIC0yMjMsNiArMjI3LDcg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp0YXNrVGltZXJGaXJlZChUaW1lcjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPioKIAogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bXBsOjp0YXNrRXZlbnRUaW1lckZpcmVkKFRpbWVyPElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw+
KikKIHsKKyAgICBJREJfVFJBQ0UoIklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnRhc2tFdmVu
dFRpbWVyRmlyZWQiKTsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBSdW5uaW5nKTsKIAogICAgIGlm
ICghbV9wZW5kaW5nRXZlbnRzICYmIG1fdGFza1F1ZXVlLmlzRW1wdHkoKSkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>