<?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>98539</bug_id>
          
          <creation_ts>2012-10-05 11:21:36 -0700</creation_ts>
          <short_desc>Refactor resource loading to allow for out-of-process loading and memory caching</short_desc>
          <delta_ts>2012-10-26 00:55:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>98541</dependson>
    
    <dependson>98952</dependson>
    
    <dependson>98976</dependson>
    
    <dependson>100355</dependson>
    
    <dependson>100479</dependson>
          <blocked>98537</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>efidler</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>mjs</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>735801</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-05 11:21:36 -0700</bug_when>
    <thetext>Refactor resource loading to allow for out-of-process loading and memory caching.

This is to support https://bugs.webkit.org/show_bug.cgi?id=98537</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735802</commentid>
    <comment_count>1</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-05 11:23:42 -0700</bug_when>
    <thetext>Is this in WebCore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735816</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-05 11:32:35 -0700</bug_when>
    <thetext>When we experimented with moving the MemoryCache out of process, it looked like a net loss.  I&apos;m curious what experiments you&apos;ve run that show that having the MemoryCache out of process is a win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735819</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-05 11:34:26 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Is this in WebCore?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735821</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-05 11:36:24 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; When we experimented with moving the MemoryCache out of process, it looked like a net loss.  I&apos;m curious what experiments you&apos;ve run that show that having the MemoryCache out of process is a win.

Net loss in what regard?  Memory use?  Performance?  Etc?  Please share data if you have it.

Experimentally we know that running multiple WebProcesses with individual caches uses unacceptably more memory and - without disk caching - leads to slower page load speeds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735823</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-05 11:37:07 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #1)
&gt; &gt; Is this in WebCore?
&gt; 
&gt; Yes.

Let me elaborate on this - Refactoring will have to occur in WebCore to support this.

But the feature itself will be in WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735831</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-05 11:43:11 -0700</bug_when>
    <thetext>&gt; Net loss in what regard?  Memory use?  Performance?  Etc?  Please share data if you have it.

We conducted the experiments in 2007 and then again in 2009.  I don&apos;t think we have the data around anymore.

&gt; Experimentally we know that running multiple WebProcesses with individual caches uses unacceptably more memory and - without disk caching - leads to slower page load speeds.

Yes, that&apos;s correct.  The approach we use in Chromium is to have a global budget for memory cache.  We then apportion the budget to the various render processes based on a number of heuristics.  For example, foreground render processes get a bigger budget than background processes.  When a process is moved to the background, we ask it to reduce its memory cache usage if the budget is tight.  See

http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/web_cache_manager.h
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/renderer_host/web_cache_manager.cc

for details.

As I recall, the experiments we ran showed that there wasn&apos;t much duplication of cached items across render processes, so it wasn&apos;t worth using shared memory to unify the caches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736779</commentid>
    <comment_count>7</comment_count>
      <attachid>167558</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-08 10:34:57 -0700</bug_when>
    <thetext>Created attachment 167558
Patch v1 (for EWS)

Not marking for review just yet, as I expect to get EWS fallout that I&apos;ll need to attend to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736784</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-08 10:36:36 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Net loss in what regard?  Memory use?  Performance?  Etc?  Please share data if you have it.
&gt; 
&gt; We conducted the experiments in 2007 and then again in 2009.  I don&apos;t think we have the data around anymore.
&gt; ...
&gt; As I recall, the experiments we ran showed that there wasn&apos;t much duplication of cached items across render processes, so it wasn&apos;t worth using shared memory to unify the caches.

We have data that shows it is worth it for our expectations in WebKit 2.

I&apos;ve attached a patch here to get the EWS ball rolling, but am also sending out an email to webkit-dev since you&apos;ve requested it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736785</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-08 10:36:44 -0700</bug_when>
    <thetext>Attachment 167558 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/loader/cache/CachedImage.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/loader/ResourceBuffer.h:49:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 2 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736801</commentid>
    <comment_count>10</comment_count>
      <attachid>167558</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-08 10:55:25 -0700</bug_when>
    <thetext>Comment on attachment 167558
Patch v1 (for EWS)

Attachment 167558 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14207560</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736824</commentid>
    <comment_count>11</comment_count>
      <attachid>167569</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-08 11:19:19 -0700</bug_when>
    <thetext>Created attachment 167569
Patch v2 - Quell the obvious EWS warnings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737039</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-10-08 14:21:11 -0700</bug_when>
    <thetext>Meant to put that patch on 98541, and to actually submit to EWS.  *sigh*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737768</commentid>
    <comment_count>13</comment_count>
      <attachid>167753</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-10-09 07:44:23 -0700</bug_when>
    <thetext>Created attachment 167753
instrumentation patch for duplicate cache resources

Related to this work, here is a patch that can be used to instrument the cache for duplicate resources in different URLs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167558</attachid>
            <date>2012-10-08 10:34:57 -0700</date>
            <delta_ts>2012-10-08 11:19:19 -0700</delta_ts>
            <desc>Patch v1 (for EWS)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>41879</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmQyYzkzZS4uN2JmZmJlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE2MzcsNiArMTYzNyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2Fk
ZXIvUG9saWN5Q2hlY2tlci5jcHAKICAgICBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAogICAg
IGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorICAgIGxvYWRlci9SZXNvdXJjZUJ1ZmZl
ci5jcHAKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCiAgICAgbG9hZGVyL1Jl
c291cmNlTG9hZFNjaGVkdWxlci5jcHAKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMjY0NTI1YS4uMDljYjIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBA
QAorMjAxMi0xMC0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3dpdGNoIENhY2hlZFJlc291cmNlIG92ZXIgZnJvbSBTaGFyZWRCdWZmZXIgdG8gYSBuZXcg
UmVzb3VyY2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4NTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQXMgcGFydCBvZiBwcmVwYXJhdGlvbiBmb3IgYSBXZWJLaXQyIE5ldHdvcmtQcm9jZXNz
LCB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgZGF0YSBoYW5kbGUgc2hhcmVkCisgICAgICAgIGJldHdl
ZW4gQ2FjaGVkUmVzb3VyY2VzIGFuZCBSZXNvdXJjZUxvYWRlcnMgdG8gYmUgb25lIHRoYXQgY2Fu
IGJlIGJhY2tlZCBieSBzb21ldGhpbmcgb3RoZXIKKyAgICAgICAgdGhhbiBhIFNoYXJlZEJ1ZmZl
ci4KKworICAgICAgICBSZXNvdXJjZUJ1ZmZlciBpcyB0aGlzIG5ldyBvYmplY3QuIFJpZ2h0IG5v
dyBpdCBpcyBkaXJlY3RseSBiYWNrZWQgYnkgYSBTaGFyZWRCdWZmZXIgYW5kIHRoZXJlCisgICAg
ICAgIHNob3VsZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChObyBiZWhhdmlvciBjaGFuZ2UpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
VGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisKKyAgICAgICAgSW1wbGVtZW50
YXRpb24gb2YgdGhlIG5ldyBSZXNvdXJjZUJ1ZmZlciwgYmFja2VkIGRpcmVjdGx5IGJ5IGEgU2hh
cmVkQnVmZmVyOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUJ1ZmZlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZlcjo6UmVz
b3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VCdWZmZXI6On5SZXNvdXJj
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZlcjo6ZGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUJ1ZmZlcjo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZl
cjo6Z2V0U29tZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VCdWZmZXI6OnNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZlcjo6Y29weSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZlcjo6aGFzUHVyZ2VhYmxlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlQnVmZmVyOjpyZWxlYXNlUHVyZ2VhYmxlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlQnVmZmVyOjpjcmVhdGVDRkRhdGEpOgorCisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlQnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChSZXNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlQnVmZmVyOjphZG9wdFNoYXJl
ZEJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL21hYy9SZXNvdXJjZUJ1ZmZlci5tbTogQWRkZWQu
CisKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VCdWZmZXI6
OmNyZWF0ZU5TRGF0YSk6CisKKyAgICAgICAgU3dpdGNoIENhY2hlZFJlc291cmNlIG92ZXIgdG8g
dXNpbmcgaXQ6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjptYWtlUHVyZ2VhYmxlKToKKworICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIpOgorICAgICAg
ICAoQ2FjaGVkUmVzb3VyY2UpOgorCisgICAgICAgIFN3aXRjaCBhbGwgdGhlIG90aGVyIENhY2hl
ZFJlc291cmNlIHN1YmNsYXNzZXMgb3ZlciB0byB1c2luZyBpdDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRD
U1NTdHlsZVNoZWV0OjpkYXRhKToKKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmRhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorCisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdl
OjpkaWRBZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmRhdGEpOgor
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpkYXRhKToKKworICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0Ojpk
YXRhKToKKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkU2hhZGVyOjpkYXRhKToKKworICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNr
OjpkYXRhKToKKyAgICAgICAgCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxl
U2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZGF0YSk6
CisKKyAgICAgICAgU3dpdGNoIG90aGVyIGFmZmVjdCBwYXJ0aWVzIG92ZXIgdG8gdXNpbmcgaXQ6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkZWNvZGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KToKKworICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3VicmVz
b3VyY2UpOgorCisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorCisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorCisgICAgICAgICogbG9hZGVyL2ljb24vSWNv
bkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hl
ZCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmZpbGVXcmFwcGVyRm9ySW1hZ2UpOgorCiAyMDEyLTEwLTA1ICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE5vIGF1dG9yZWxlYXNlIHBvb2wgaW4g
cGxhY2UsIGNhdXNpbmcgYnVpbGR1cCBvZiBhdXRvcmVsZWFzZWQgb2JqZWN0cy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDFlOTdiNTcuLmU3MWQ1NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtMzkwNyw2ICszOTA3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaCBcCisJU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlQnVmZmVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMDc4YjY5YS4uZmFh
YWE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCkBAIC04NDIsNiArODQyLDcgQEAgU09VUkNFUyArPSBcCiAgICAg
bG9hZGVyL1ByZXJlbmRlcmVyLmNwcCBcCiAgICAgbG9hZGVyL1ByZXJlbmRlcmVyQ2xpZW50LmNw
cCBcCiAgICAgbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIFwKKyAgICBsb2FkZXIvUmVz
b3VyY2VCdWZmZXIuY3BwIFwKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIFwKICAgICBs
b2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIFwKICAgICBsb2FkZXIvUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcCBcCkBAIC0xOTYwLDYgKzE5NjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBs
b2FkZXIvUHJlcmVuZGVyZXIuaCBcCiAgICAgbG9hZGVyL1ByZXJlbmRlcmVyQ2xpZW50LmggXAog
ICAgIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaCBcCisgICAgbG9hZGVyL1Jlc291cmNlQnVmZmVy
LmggXAogICAgIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oIFwKICAgICBsb2FkZXIvU3VicmVzb3Vy
Y2VMb2FkZXIuaCBcCiAgICAgbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCA3YzUxYzk3Li4yNGM2MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjYz
LDYgKzI2Myw3IEBAIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb242bW9kaWZ5RU5TMF8xMUVB
bHRlcmF0aW9uRU5TXzE4U2VsZWN0aW9uRGlyZWN0aW9uRU5TCiBfX1pON1dlYkNvcmUxNEZyYW1l
U2VsZWN0aW9uOXNlbGVjdEFsbEV2CiBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uQzFFUE5T
XzVGcmFtZUUKIF9fWk43V2ViQ29yZTE0UGx1Z2luRG9jdW1lbnQxMnBsdWdpbldpZGdldEV2Citf
X1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVyMTJjcmVhdGVOU0RhdGFFdgogX19aTjdXZWJDb3Jl
MTRSZXNvdXJjZUhhbmRsZTIwZm9yY2VDb250ZW50U25pZmZpbmdFdgogX19aTjdXZWJDb3JlMTRS
ZXNvdXJjZUhhbmRsZTI2c3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGVFdgogX19aTjdXZWJDb3Jl
MTRSZXNvdXJjZUhhbmRsZTM1Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25FUEsx
MF9fQ0ZTdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkMTIxYjdkLi45MDAxYjkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC0xNzgsNiArMTc4LDcgQEAKICAgICAgICAgICAgICdsb2FkZXIvUG9saWN5
Q2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnbG9hZGVyL1BvbGljeUNoZWNrZXIuaCcsCiAgICAg
ICAgICAgICAnbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5oJywKKyAgICAgICAgICAgICdsb2FkZXIv
UmVzb3VyY2VCdWZmZXIuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlm
aWVyLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL1Jlc291cmNlTG9hZGVyLmgnLApAQCAtMjk5NSw2ICsyOTk2LDcg
QEAKICAgICAgICAgICAgICdsb2FkZXIvUHJlcmVuZGVyZXJDbGllbnQuY3BwJywKICAgICAgICAg
ICAgICdsb2FkZXIvUHJlcmVuZGVyZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL1By
b2dyZXNzVHJhY2tlci5jcHAnLAorICAgICAgICAgICAgJ2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5j
cHAnLAogICAgICAgICAgICAgJ2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAnLAogICAg
ICAgICAgICAgJ2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwJywKICAgICAgICAgICAg
ICdsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjYjdiZDY1Li5hN2FkNGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNTM3LDYgKzE1MzcsOSBAQAogCQk1MTNGMTQ1NDBBQjYzNEM0MDAwOTREREYgLyogSWNvbkxv
YWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEz
RjE0NTIwQUI2MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuaCAqLzsgfTsKIAkJNTE0QjNGNzMw
QzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEIzRjcyMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lz
dGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTE0QjNGNzYwQzcyMjA1NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCM0Y3NTBDNzIyMDU1MDAwNTMw
REYgLyogRmlsZVN5c3RlbU1hYy5tbSAqLzsgfTsKKwkJNTE0QkM4M0YxNjFDRjA0QTAwNEQ1MkY0
IC8qIFJlc291cmNlQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE0QkM4M0QxNjFDRjA0MzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLm1t
ICovOyB9OworCQk1MTRCQzg0MjE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0QkM4NDAx
NjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCAqLzsgfTsKKwkJNTE0QkM4NDMx
NjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCQzg0MTE2MUNGMDVDMDA0RDUyRjQgLyogUmVz
b3VyY2VCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MTRDNzYzNzBDRTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxFcnJvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzYzNTBDRTkyMjVF
MDA3RUYzQ0QgLyogSlNTUUxFcnJvci5jcHAgKi87IH07CiAJCTUxNEM3NjM4MENFOTIyNUUwMDdF
RjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEM3NjM2MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRyYW5z
YWN0aW9uLmNwcCAqLzsgfTsKIAkJNTE0Qzc2NEMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRp
Y2F0aW9uTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTRDNzY0MjBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODcxMSw2ICs4NzE0
LDkgQEAKIAkJNTEzRjE0NTIwQUI2MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEljb25Mb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3Rl
bU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0
ZW1NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNEJDODNEMTYxQ0YwNDMw
MDRENTJGNCAvKiBSZXNvdXJjZUJ1ZmZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFJlc291cmNlQnVmZmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTRCQzg0MDE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VCdWZmZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTRCQzg0MTE2MUNGMDVDMDA0RDUyRjQgLyogUmVz
b3VyY2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VC
dWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2MzUwQ0U5MjI1RTAw
N0VGM0NEIC8qIEpTU1FMRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNTUUxFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3
NjM2MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTRDNzY0MjBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGlj
YXRpb25NYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRp
b25NYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3Mjg4LDYgKzE3Mjk0LDcg
QEAKIAkJCQkxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3Bw
ICovLAogCQkJCTY1NkQzNzFBMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5o
ICovLAogCQkJCTY1NkQzNzFCMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5t
bSAqLywKKwkJCQk1MTRCQzgzRDE2MUNGMDQzMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIubW0g
Ki8sCiAJCQkJNTFBQTNGNkUwQkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1t
ICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CkBAIC0yMDYzNyw2ICsyMDY0NCw4IEBACiAJCQkJ
OTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLywKIAkJCQkxQTJB
NjgyMTBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmNwcCAqLywKIAkJCQkxQTJB
NjgyMjBCNUJFREU3MDAwMkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmggKi8sCisJCQkJNTE0QkM4
NDAxNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCAqLywKKwkJCQk1MTRCQzg0
MTE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuaCAqLywKIAkJCQk5M0UyMjdERTBB
RjU4OUFEMDBENDgzMjQgLyogUmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCTY1NkQzNzI3MEFE
QkE1REUwMEE0NTU0RCAvKiBSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCUQwQTNBNzMwMTQwNUEz
OTgwMEZCOEVEMyAvKiBSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCAqLywKQEAgLTI1NTM3LDYgKzI1
NTQ2LDcgQEAKIAkJCQk5MzFDQkQwRDE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVO
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFDQkQwRjE2MUE0NEU5MDBFNEM4NzQgLyogU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFDQkQxMTE2
MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVUcmVlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTRCQzg0MzE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMjg2MzQsNiArMjg2NDQsOCBAQAogCQkJCTkzMUNCRDBFMTYxQTQ0RTkwMEU0Qzg3
NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTMxQ0JEMTAxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlVHJlZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5MzFDQkQxMzE2MUE0NEY4MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVO
b2RlTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE0QkM4M0YxNjFDRjA0QTAwNEQ1MkY0IC8q
IFJlc291cmNlQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE0QkM4NDIxNjFDRjA1QzAw
NEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBlZjM5ZTZmLi5h
MzJiOWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtNjcsMTAgKzY3LDEwIEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKKyNpbmNsdWRl
ICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUZXh0UmVz
b3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTk4
LDEzICs5OCwxMyBAQCBzdGF0aWMgY29uc3QgY2hhciB0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZFtdID0gInRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkIjsKICNlbmRpZgogfQogCi1zdGF0aWMg
Ym9vbCBkZWNvZGVTaGFyZWRCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBTdHJpbmcqIHJlc3VsdCkKK3N0YXRpYyBi
b29sIGRlY29kZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIHVuc2lnbmVkIHNpemUsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAgaWYgKGJ1
ZmZlcikgewogICAgICAgICBUZXh0RW5jb2RpbmcgZW5jb2RpbmcodGV4dEVuY29kaW5nTmFtZSk7
CiAgICAgICAgIGlmICghZW5jb2RpbmcuaXNWYWxpZCgpKQogICAgICAgICAgICAgZW5jb2Rpbmcg
PSBXaW5kb3dzTGF0aW4xRW5jb2RpbmcoKTsKLSAgICAgICAgKnJlc3VsdCA9IGVuY29kaW5nLmRl
Y29kZShidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0g
ZW5jb2RpbmcuZGVjb2RlKGJ1ZmZlciwgc2l6ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UsIFMKIAogICAgICpiYXNlNjRFbmNvZGVkID0gIWhhc1RleHRDb250ZW50KGNhY2hlZFJl
c291cmNlKTsKICAgICBpZiAoKmJhc2U2NEVuY29kZWQpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gaGFzWmVyb1NpemUgPyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIDog
Y2FjaGVkUmVzb3VyY2UtPmRhdGEoKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gaGFzWmVyb1NpemUgPyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIDogY2FjaGVkUmVzb3Vy
Y2UtPnJlc291cmNlQnVmZmVyKCktPnNoYXJlZEJ1ZmZlcigpOwogCiAgICAgICAgIGlmICghYnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wg
SW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2Uq
IGNhY2hlZFJlc291cmNlLCBTCiAgICAgICAgICAgICAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8Q2Fj
aGVkU2NyaXB0Kj4oY2FjaGVkUmVzb3VyY2UpLT5zY3JpcHQoKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZTogewotICAg
ICAgICAgICAgU2hhcmVkQnVmZmVyKiBidWZmZXIgPSBjYWNoZWRSZXNvdXJjZS0+ZGF0YSgpOwor
ICAgICAgICAgICAgUmVzb3VyY2VCdWZmZXIqIGJ1ZmZlciA9IGNhY2hlZFJlc291cmNlLT5yZXNv
dXJjZUJ1ZmZlcigpOwogICAgICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRl
Y29kZXIgPSBjcmVhdGVYSFJUZXh0RGVjb2RlcihjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5t
aW1lVHlwZSgpLCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkp
OwpAQCAtMjAxLDcgKzIwMSw4IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNv
dXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIGRlY29kZVNoYXJlZEJ1ZmZlcihjYWNoZWRSZXNvdXJjZS0+ZGF0YSgpLCBjYWNoZWRS
ZXNvdXJjZS0+ZW5jb2RpbmcoKSwgcmVzdWx0KTsKKyAgICAgICAgICAgIFJlc291cmNlQnVmZmVy
KiBidWZmZXIgPSBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICAgICAgICAg
IHJldHVybiBkZWNvZGVCdWZmZXIoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiAwLCBidWZmZXIg
PyBidWZmZXItPnNpemUoKSA6IDAsIGNhY2hlZFJlc291cmNlLT5lbmNvZGluZygpLCByZXN1bHQp
OwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTIyNSw3ICsyMjYsNyBA
QCBib29sIEluc3BlY3RvclBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBjbwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICByZXR1cm4gZGVjb2RlU2hhcmVkQnVmZmVyKGJ1ZmZlciwgdGV4dEVuY29kaW5nTmFtZSwg
cmVzdWx0KTsKKyAgICByZXR1cm4gZGVjb2RlQnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgp
IDogMCwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCByZXN1
bHQpOwogfQogCiBQYXNzT3duUHRyPEluc3BlY3RvclBhZ2VBZ2VudD4gSW5zcGVjdG9yUGFnZUFn
ZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFn
ZSogcGFnZSwgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBJbnNwZWN0b3JTdGF0ZSog
c3RhdGUsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNw
ZWN0b3JDbGllbnQqIGNsaWVudCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGI1YWNmMmIuLjE0NmNhYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDgsOCArNDgsOCBA
QAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNYWluUmVzb3VyY2VMb2FkZXIuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRS
ZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTYwMywxMSArNjAzLDExIEBAIFBh
c3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UoY29u
c3QgS1VSTCYgdXJsKSBjb25zdAogICAgIGlmICghcmVzb3VyY2UtPm1ha2VQdXJnZWFibGUoZmFs
c2UpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpOworICAgIFJlc291cmNlQnVmZmVyKiBkYXRhID0gcmVzb3VyY2Ut
PnJlc291cmNlQnVmZmVyKCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShkYXRhLnJlbGVhc2UoKSwgdXJsLCBy
ZXNvdXJjZS0+cmVzcG9uc2UoKSk7CisgICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KGRhdGEtPnNoYXJlZEJ1ZmZlcigpLCB1cmwsIHJlc291cmNlLT5yZXNwb25zZSgpKTsKIH0KIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6Z2V0U3VicmVzb3VyY2VzKFZlY3RvcjxQYXNzUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gPiYgc3VicmVzb3VyY2VzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUJ1ZmZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MTkxOTViYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUJ1ZmZlci5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgorCisjaW5jbHVkZSAiUHVyZ2VhYmxlQnVm
ZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVzb3VyY2VCdWZmZXI6OlJlc291cmNl
QnVmZmVyKCkKKyAgICA6IG1fc2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCit7
Cit9CisKK1Jlc291cmNlQnVmZmVyOjpSZXNvdXJjZUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBp
bnQgc2l6ZSkKKyAgICA6IG1fc2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IHNpemUpKQoreworfQorCitSZXNvdXJjZUJ1ZmZlcjo6UmVzb3VyY2VCdWZmZXIoUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlcikKKyAgICA6IG1fc2hhcmVkQnVmZmVyKHNoYXJl
ZEJ1ZmZlcikKK3sKKyAgICBBU1NFUlQobV9zaGFyZWRCdWZmZXIpOworfQorICAgIAorUmVzb3Vy
Y2VCdWZmZXI6On5SZXNvdXJjZUJ1ZmZlcigpCit7Cit9CisKK2NvbnN0IGNoYXIqIFJlc291cmNl
QnVmZmVyOjpkYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPmRhdGEo
KTsKK30KKwordW5zaWduZWQgUmVzb3VyY2VCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3NoYXJlZEJ1ZmZlci0+c2l6ZSgpOworfQorCitib29sIFJlc291cmNlQnVmZmVyOjpp
c0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPmlzRW1wdHkoKTsK
K30KKwordW5zaWduZWQgUmVzb3VyY2VCdWZmZXI6OmdldFNvbWVEYXRhKGNvbnN0IGNoYXIqJiBk
YXRhLCB1bnNpZ25lZCBwb3NpdGlvbikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaGFyZWRCdWZm
ZXItPmdldFNvbWVEYXRhKGRhdGEsIHBvc2l0aW9uKTsKK30KKworU2hhcmVkQnVmZmVyKiBSZXNv
dXJjZUJ1ZmZlcjo6c2hhcmVkQnVmZmVyKCkgY29uc3QKK3sKKyAgICAvLyBDdXJyZW50bHkgYWxs
IFJlc291cmNlQnVmZmVycyBhcmUgYmFja2VkIGJ5IFNoYXJlZEJ1ZmZlcnMuCisgICAgLy8gSW4g
dGhlIGZ1dHVyZSB3ZSBtaWdodCBoYXZlIHRvIGNyZWF0ZSB0aGUgU2hhcmVkQnVmZmVyIG9uIGRl
bWFuZCBoZXJlLgorICAgIC8vIFdlIHNob3VsZCBhbHNvIHBoYXNlIG91dCBhcyBtdWNoIHVzZSBv
ZiB0aGlzIGFjY2Vzc29yIGFzIHBvc3NpYmxlIGFuZCBoYXZlIGNsaWVudHMKKyAgICAvLyBlaXRo
ZXIgdXNlIHRoZSBSZXNvdXJjZUJ1ZmZlciBkaXJlY3RseSBvciB1c2UgZ2V0U29tZURhdGEoKSB3
aGVuIHNlbnNpY2FsLgorICAgIHJldHVybiBtX3NoYXJlZEJ1ZmZlci5nZXQoKTsKK30KKworUGFz
c1JlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gUmVzb3VyY2VCdWZmZXI6OmNvcHkoKSBjb25zdAorewor
ICAgIHJldHVybiBSZXNvdXJjZUJ1ZmZlcjo6YWRvcHRTaGFyZWRCdWZmZXIobV9zaGFyZWRCdWZm
ZXItPmNvcHkoKSk7Cit9CisKK2Jvb2wgUmVzb3VyY2VCdWZmZXI6Omhhc1B1cmdlYWJsZUJ1ZmZl
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2hhcmVkQnVmZmVyLT5oYXNQdXJnZWFibGVCdWZm
ZXIoKTsKK30KKworUGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+IFJlc291cmNlQnVmZmVyOjpy
ZWxlYXNlUHVyZ2VhYmxlQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPnJl
bGVhc2VQdXJnZWFibGVCdWZmZXIoKTsKK30KKworI2lmIFVTRShDRikKK0NGRGF0YVJlZiBSZXNv
dXJjZUJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkKK3sKKyAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXIt
PmNyZWF0ZUNGRGF0YSgpOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzJiMjBiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUJ1ZmZlci5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
UmVzb3VyY2VCdWZmZXJfaAorI2RlZmluZSBSZXNvdXJjZUJ1ZmZlcl9oCisKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgUExB
VEZPUk0oTUFDKQorT0JKQ19DTEFTUyBOU0RhdGE7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBQdXJnZWFibGVCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2Ns
YXNzIFJlc291cmNlQnVmZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VCdWZmZXI+IHsK
K3B1YmxpYzoKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgUmVzb3VyY2VCdWZmZXIpOyB9CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6
ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFJlc291cmNlQnVmZmVyKGRhdGEsIHNpemUpKTsgfQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBhZG9wdFNoYXJlZEJ1ZmZlcihQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkKSB7IGlmICghc2hhcmVkKSByZXR1cm4gMDsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBSZXNvdXJjZUJ1ZmZlcihzaGFyZWQpKTsgfQorCisgICAgflJl
c291cmNlQnVmZmVyKCk7CisKKyAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CisgICAgdW5z
aWduZWQgc2l6ZSgpIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworCisgICAgdW5z
aWduZWQgZ2V0U29tZURhdGEoY29uc3QgY2hhciomIGRhdGEsIHVuc2lnbmVkIHBvc2l0aW9uID0g
MCkgY29uc3Q7CisgICAgCisgICAgU2hhcmVkQnVmZmVyKiBzaGFyZWRCdWZmZXIoKSBjb25zdDsK
KyAgICBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisKKyAgICBib29s
IGhhc1B1cmdlYWJsZUJ1ZmZlcigpIGNvbnN0OworICAgIAorICAgIC8vIEVuc3VyZSB0aGlzIGJ1
ZmZlciBoYXMgbm8gb3RoZXIgY2xpZW50cyBiZWZvcmUgY2FsbGluZyB0aGlzLgorICAgIFBhc3NP
d25QdHI8UHVyZ2VhYmxlQnVmZmVyPiByZWxlYXNlUHVyZ2VhYmxlQnVmZmVyKCk7CisKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgTlNEYXRhICpjcmVhdGVOU0RhdGEoKTsKKyNlbmRpZgorI2lmIFVT
RShDRikKKyAgICBDRkRhdGFSZWYgY3JlYXRlQ0ZEYXRhKCk7CisjZW5kaWYKKworcHJpdmF0ZToK
KyAgICBSZXNvdXJjZUJ1ZmZlcigpOworICAgIFJlc291cmNlQnVmZmVyKGNvbnN0IGNoYXIqLCBp
bnQpOworICAgIFJlc291cmNlQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CisgICAg
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9zaGFyZWRCdWZmZXI7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSZXNvdXJjZUJ1ZmZlcl9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IDIwMjU3MGQuLmE5YjdmOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBAIC0zNCwxMCArMzQs
MTAgQEAKICNpbmNsdWRlICJDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlICJXZWJWVFRQYXJzZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtODMsMTAgKzgzLDEwIEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0
YShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB7CiAgICAgQVNTRVJUKG1fY2FjaGVkQ3VlRGF0
YSA9PSByZXNvdXJjZSk7CiAgICAgCi0gICAgaWYgKG1fc3RhdGUgPT0gRmFpbGVkIHx8ICFyZXNv
dXJjZS0+ZGF0YSgpKQorICAgIGlmIChtX3N0YXRlID09IEZhaWxlZCB8fCAhcmVzb3VyY2UtPnJl
c291cmNlQnVmZmVyKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBTaGFyZWRCdWZmZXIq
IGJ1ZmZlciA9IHJlc291cmNlLT5kYXRhKCk7CisgICAgUmVzb3VyY2VCdWZmZXIqIGJ1ZmZlciA9
IHJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgIGlmIChtX3BhcnNlT2Zmc2V0ID09IGJ1
ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lk
IFRleHRUcmFja0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
KQogewogICAgIEFTU0VSVChtX2NhY2hlZEN1ZURhdGEgPT0gcmVzb3VyY2UpOwogICAgIAotICAg
IGlmICghcmVzb3VyY2UtPmRhdGEoKSkKKyAgICBpZiAoIXJlc291cmNlLT5yZXNvdXJjZUJ1ZmZl
cigpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgcHJvY2Vzc05ld0N1ZURhdGEocmVzb3Vy
Y2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcAppbmRleCA5NDI0NTI2Li4zNTc2ZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtNDYs
OCArNDYsOCBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9M
aXN0SGFzaFNldC5oPgpAQCAtNTYyLDcgKzU2Miw4IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5n
CiAKICAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBtZW1v
cnlDYWNoZSgpLT5yZXNvdXJjZUZvclVSTChzdWJyZXNvdXJjZVVSTCk7CiAgICAgICAgICAgICAg
ICAgaWYgKGNhY2hlZFJlc291cmNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc291cmNlID0g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoY2FjaGVkUmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3Vy
Y2VVUkwsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
UmVzb3VyY2VCdWZmZXIqIGRhdGEgPSBjYWNoZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShk
YXRhID8gZGF0YS0+c2hhcmVkQnVmZmVyKCkgOiAwLCBzdWJyZXNvdXJjZVVSTCwgY2FjaGVkUmVz
b3VyY2UtPnJlc3BvbnNlKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2UpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQocmVzb3VyY2UucmVs
ZWFzZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IGYx
ODgyNWYuLjM3ZTk0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJDYWNo
ZWRTdHlsZVNoZWV0Q2xpZW50LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRl
ICJNZW1vcnlDYWNoZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlJl
c291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAjaW5jbHVk
ZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCIKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBDYWNoZWRDU1NTdHlsZVNoZWV0Ojpk
YXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXYKICAg
ICBpZiAoIWFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhID0g
ZGF0YTsKKyAgICBtX2RhdGEgPSBSZXNvdXJjZUJ1ZmZlcjo6YWRvcHRTaGFyZWRCdWZmZXIoZGF0
YSk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAw
KTsKICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBr
ZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQogICAgIGlmICht
X2RhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAppbmRl
eCBkOWE2NzUyLi4yZDlkNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEZvbnQuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2Fj
aGUuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXZWJDb3Jl
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtODks
NyArODksNyBAQCB2b2lkIENhY2hlZEZvbnQ6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2RhdGEgPSBkYXRhOyAgICAgCisgICAgbV9kYXRhID0g
UmVzb3VyY2VCdWZmZXI6OmFkb3B0U2hhcmVkQnVmZmVyKGRhdGEpOwogICAgIHNldEVuY29kZWRT
aXplKG1fZGF0YS5nZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgc2V0TG9hZGluZyhm
YWxzZSk7CiAgICAgY2hlY2tOb3RpZnkoKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBib29sIENhY2hl
ZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKCkKIHsKICNpZmRlZiBTVE9SRV9GT05UX0NVU1RP
TV9QTEFURk9STV9EQVRBCiAgICAgaWYgKCFtX2ZvbnREYXRhICYmICFlcnJvck9jY3VycmVkKCkg
JiYgIWlzTG9hZGluZygpICYmIG1fZGF0YSkgewotICAgICAgICBtX2ZvbnREYXRhID0gY3JlYXRl
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YShtX2RhdGEuZ2V0KCkpOworICAgICAgICBtX2ZvbnREYXRh
ID0gY3JlYXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShtX2RhdGEuZ2V0KCktPnNoYXJlZEJ1ZmZl
cigpKTsKICAgICAgICAgaWYgKCFtX2ZvbnREYXRhKQogICAgICAgICAgICAgc2V0U3RhdHVzKERl
Y29kZUVycm9yKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcAppbmRleCBiZWU5Njk1Li4xNWRjZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAtODgsNyArODgsNyBAQCB2b2lkIENh
Y2hlZEltYWdlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCiB7CiAgICAg
aWYgKG1fZGF0YSAmJiAhbV9pbWFnZSAmJiAhZXJyb3JPY2N1cnJlZCgpKSB7CiAgICAgICAgIGNy
ZWF0ZUltYWdlKCk7Ci0gICAgICAgIG1faW1hZ2UtPnNldERhdGEobV9kYXRhLCB0cnVlKTsKKyAg
ICAgICAgbV9pbWFnZS0+c2V0RGF0YShtX2RhdGEtPnNoYXJlZEJ1ZmZlcigpLCB0cnVlKTsKICAg
ICB9CiAgICAgCiAgICAgQVNTRVJUKGMtPnJlc291cmNlQ2xpZW50VHlwZSgpID09IENhY2hlZElt
YWdlQ2xpZW50OjpleHBlY3RlZFR5cGUoKSk7CkBAIC0zNDUsNyArMzQ1LDcgQEAgc2l6ZV90IENh
Y2hlZEltYWdlOjptYXhpbXVtRGVjb2RlZEltYWdlU2l6ZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6
OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQogewotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gUmVzb3VyY2VCdWZmZXI6OmFk
b3B0U2hhcmVkQnVmZmVyKGRhdGEpOwogCiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtMzU0LDcg
KzM1NCw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIEhhdmUgdGhlIGltYWdlIHVwZGF0
ZSBpdHMgZGF0YSBmcm9tIGl0cyBpbnRlcm5hbCBidWZmZXIuCiAgICAgLy8gSXQgd2lsbCBub3Qg
ZG8gYW55dGhpbmcgbm93LCBidXQgd2lsbCBkZWxheSBkZWNvZGluZyB1bnRpbCAKICAgICAvLyBx
dWVyaWVkIGZvciBpbmZvIChsaWtlIHNpemUgb3Igc3BlY2lmaWMgaW1hZ2UgZnJhbWVzKS4KLSAg
ICBzaXplQXZhaWxhYmxlID0gbV9pbWFnZS0+c2V0RGF0YShtX2RhdGEsIGFsbERhdGFSZWNlaXZl
ZCk7CisgICAgc2l6ZUF2YWlsYWJsZSA9IG1faW1hZ2UtPnNldERhdGEobV9kYXRhID8gbV9kYXRh
LT5zaGFyZWRCdWZmZXIoKSA6IDAsIGFsbERhdGFSZWNlaXZlZCk7CiAKICAgICAvLyBHbyBhaGVh
ZCBhbmQgdGVsbCBvdXIgb2JzZXJ2ZXJzIHRvIHRyeSB0byBkcmF3IGlmIHdlIGhhdmUgZWl0aGVy
CiAgICAgLy8gcmVjZWl2ZWQgYWxsIHRoZSBkYXRhIG9yIHRoZSBzaXplIGlzIGtub3duLiAgRWFj
aCBjaHVuayBmcm9tIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggNzI5ODg5My4uNzY2OGU5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0yOSw3ICsy
OSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVy
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIu
aCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNjQs
OSArNjQsOSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZAogICAgIGlmIChtX29wdGlvbnMuc2hv
dWxkQnVmZmVyRGF0YSA9PSBCdWZmZXJEYXRhKSB7CiAgICAgICAgIGlmIChkYXRhKQogICAgICAg
ICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgbV9kYXRhID0gZGF0
YTsKKyAgICAgICAgbV9kYXRhID0gUmVzb3VyY2VCdWZmZXI6OmFkb3B0U2hhcmVkQnVmZmVyKGRh
dGEpOwogICAgIH0KLSAgICBDYWNoZWRSZXNvdXJjZTo6ZGF0YShtX2RhdGEsIGFsbERhdGFSZWNl
aXZlZCk7CisgICAgQ2FjaGVkUmVzb3VyY2U6OmRhdGEobV9kYXRhID8gbV9kYXRhLT5zaGFyZWRC
dWZmZXIoKSA6IDAsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDQyZTE4NjguLjFhNmE0
NmIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cApAQCAtMzcsOSArMzcsOSBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiUHVyZ2VhYmxlQnVmZmVyLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFNjaGVkdWxlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1YnJl
c291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtNzU1LDcgKzc1NSw3IEBAIGJvb2wg
Q2FjaGVkUmVzb3VyY2U6Om1ha2VQdXJnZWFibGUoYm9vbCBwdXJnZWFibGUpCiAgICAgaWYgKCFt
X3B1cmdlYWJsZURhdGEtPm1ha2VQdXJnZWFibGUoZmFsc2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7IAogCi0gICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjphZG9wdFB1cmdlYWJsZUJ1ZmZlciht
X3B1cmdlYWJsZURhdGEucmVsZWFzZSgpKTsKKyAgICBtX2RhdGEgPSBSZXNvdXJjZUJ1ZmZlcjo6
YWRvcHRTaGFyZWRCdWZmZXIoU2hhcmVkQnVmZmVyOjphZG9wdFB1cmdlYWJsZUJ1ZmZlcihtX3B1
cmdlYWJsZURhdGEucmVsZWFzZSgpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggYjczOWQ2OC4uNGI2
YjIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
QEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlOwogY2xhc3Mg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZTsKIGNsYXNzIFB1
cmdlYWJsZUJ1ZmZlcjsKK2NsYXNzIFJlc291cmNlQnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47CiBjbGFzcyBTdWJyZXNvdXJjZUxvYWRlcjsKIApAQCAtMTc4LDcgKzE3OSw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIHN0b3BMb2FkaW5nKCk7CiAKLSAgICBTaGFyZWRCdWZmZXIqIGRh
dGEoKSBjb25zdCB7IEFTU0VSVCghbV9wdXJnZWFibGVEYXRhKTsgcmV0dXJuIG1fZGF0YS5nZXQo
KTsgfQorICAgIFJlc291cmNlQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgQVNTRVJU
KCFtX3B1cmdlYWJsZURhdGEpOyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSB7IG1fcmVxdWVzdGVkRnJvbU5ldHdvcmtpbmdMYXllciA9IHRydWU7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMjkw
LDcgKzI5MSw3IEBAIHByb3RlY3RlZDoKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7
CiAgICAgZG91YmxlIG1fcmVzcG9uc2VUaW1lc3RhbXA7CiAKLSAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBtX2RhdGE7CiAgICAgT3du
UHRyPFB1cmdlYWJsZUJ1ZmZlcj4gbV9wdXJnZWFibGVEYXRhOwogICAgIFRpbWVyPENhY2hlZFJl
c291cmNlPiBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCA0MWZlYTNkLi5jMWFiODRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtMzAsNyAr
MzAsNyBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgotI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC04NCw3ICs4NCw3IEBA
IHZvaWQgQ2FjaGVkU2NyaXB0OjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBpZiAoIWFsbERhdGFSZWNlaXZlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBSZXNvdXJjZUJ1ZmZl
cjo6YWRvcHRTaGFyZWRCdWZmZXIoZGF0YSk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdl
dCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBj
aGVja05vdGlmeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNoYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVy
LmNwcAppbmRleCBkMzFlMjY3Li42ZWQ3MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2hhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2hhZGVyLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2lmIEVOQUJMRShDU1Nf
U0hBREVSUykKIAogI2luY2x1ZGUgIkNhY2hlZFNoYWRlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgorI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC02NCw3ICs2NCw3IEBAIGNv
bnN0IFN0cmluZyYgQ2FjaGVkU2hhZGVyOjpzaGFkZXJTdHJpbmcoKQogdm9pZCBDYWNoZWRTaGFk
ZXI6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogewogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpCi0gICAgICAgIG1fZGF0YSA9IGRhdGE7
CisgICAgICAgIG1fZGF0YSA9IFJlc291cmNlQnVmZmVyOjphZG9wdFNoYXJlZEJ1ZmZlcihkYXRh
KTsKICAgICBDYWNoZWRSZXNvdXJjZTo6ZGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCmlu
ZGV4IDhiYWUzOWMuLmViMGE3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5o
IgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VC
dWZmZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3Vy
Y2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDksNyArNTAsNyBAQCBD
YWNoZWRUZXh0VHJhY2s6On5DYWNoZWRUZXh0VHJhY2soKQogCiB2b2lkIENhY2hlZFRleHRUcmFj
azo6ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7Ci0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEgPSBSZXNvdXJjZUJ1ZmZlcjo6
YWRvcHRTaGFyZWRCdWZmZXIoZGF0YSk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgp
ID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
PENhY2hlZFJlc291cmNlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAppbmRleCBkZTZm
NDBlLi5kNDY1ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFN0eWxlU2hlZXRDbGll
bnQuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXZWJDb3Jl
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNjks
NyArNjksNyBAQCB2b2lkIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmRhdGEoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdgogICAgIGlmICghYWxsRGF0YVJlY2Vp
dmVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9
IFJlc291cmNlQnVmZmVyOjphZG9wdFNoYXJlZEJ1ZmZlcihkYXRhKTsKICAgICBzZXRFbmNvZGVk
U2l6ZShtX2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOwogICAgIGlmIChtX2RhdGEu
Z2V0KCkpIHsKICAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlKG1fZGF0YS0+ZGF0
YSgpLCBlbmNvZGVkU2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRl
ci5jcHAKaW5kZXggOWQ3MzNkYS4uN2MwZTk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkxvYWRlci5jcHAKQEAgLTM0LDggKzM0LDggQEAKICNpbmNsdWRlICJGcmFtZUxvYWRl
ckNsaWVudC5oIgogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODcsNyArODcsNyBAQCB2b2lkIEljb25M
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIAogICAgIC8v
IElmIHdlIGdvdCBhIHN0YXR1cyBjb2RlIGluZGljYXRpbmcgYW4gaW52YWxpZCByZXNwb25zZSwg
dGhlbiBsZXRzCiAgICAgLy8gaWdub3JlIHRoZSBkYXRhIGFuZCBub3QgdHJ5IHRvIGRlY29kZSB0
aGUgZXJyb3IgcGFnZSBhcyBhbiBpY29uLgotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEg
PSByZXNvdXJjZS0+ZGF0YSgpOworICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gZGF0YSA9IHJl
c291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgIGludCBzdGF0dXMgPSByZXNvdXJjZS0+cmVz
cG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpOwogICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyA8IDIw
MCB8fCBzdGF0dXMgPiAyOTkpKQogICAgICAgICBkYXRhID0gMDsKQEAgLTk3LDcgKzk3LDcgQEAg
dm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2Up
CiAgICAgLy8gU2V0dGluZyB0aGUgaWNvbiBkYXRhIG9ubHkgYWZ0ZXIgY29tbWl0dGluZyB0byB0
aGUgZGF0YWJhc2UgZW5zdXJlcyB0aGF0IHRoZSBkYXRhIGlzCiAgICAgLy8ga2VwdCBpbiBtZW1v
cnkgKHNvIGl0IGRvZXMgbm90IGhhdmUgdG8gYmUgcmVhZCBmcm9tIHRoZSBkYXRhYmFzZSBhc3lu
Y2hyb25vdXNseSksIHNpbmNlCiAgICAgLy8gdGhlcmUgaXMgYSBwYWdlIFVSTCByZWZlcmVuY2lu
ZyBpdC4KLSAgICBpY29uRGF0YWJhc2UoKS5zZXRJY29uRGF0YUZvckljb25VUkwoZGF0YSwgcmVz
b3VyY2UtPnVybCgpLnN0cmluZygpKTsKKyAgICBpY29uRGF0YWJhc2UoKS5zZXRJY29uRGF0YUZv
ckljb25VUkwoZGF0YS0+c2hhcmVkQnVmZmVyKCksIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKSk7
CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZFJlY2VpdmVJY29u
KCk7CiAgICAgc3RvcExvYWRpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9tYWMvUmVzb3VyY2VCdWZmZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jl
c291cmNlQnVmZmVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NTYx
M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNl
QnVmZmVyLm1tCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05T
RGF0YSogUmVzb3VyY2VCdWZmZXI6OmNyZWF0ZU5TRGF0YSgpCit7CisgICAgcmV0dXJuIG1fc2hh
cmVkQnVmZmVyLT5jcmVhdGVOU0RhdGEoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA3NTAx
MzBmLi45NWFmOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbQpAQCAtNDksNiArNDksNyBAQAogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgog
I2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUmVuZGVySW1hZ2UuaCIKKyNpbXBvcnQgIlJlc291
cmNlQnVmZmVyLmgiCiAjaW1wb3J0ICJUZXh0LmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNTdHJpbmdF
eHRyYXMuaCIKICNpbXBvcnQgIldlYk5TQXR0cmlidXRlZFN0cmluZ0V4dHJhcy5oIgpAQCAtMjYw
LDcgKzI2MSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkwoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlU3RyLCBGcmFtZSogZnJhbWUpCiAKIHN0YXRpYyBOU0ZpbGVXcmFw
cGVyKiBmaWxlV3JhcHBlckZvckltYWdlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgTlNVUkwg
KnVybCkKIHsKLSAgICBTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gcmVzb3VyY2UtPmRhdGEoKTsK
KyAgICBSZXNvdXJjZUJ1ZmZlciogY29yZURhdGEgPSByZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIo
KTsKICAgICBOU0RhdGEgKmRhdGEgPSBbW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6Y29y
ZURhdGEtPmRhdGEoKSBsZW5ndGg6Y29yZURhdGEtPnNpemUoKV0gYXV0b3JlbGVhc2VdOwogICAg
IE5TRmlsZVdyYXBwZXIgKndyYXBwZXIgPSBbW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVn
dWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YV0gYXV0b3JlbGVhc2VdOwogICAgIFN0cmluZyBjb3Jl
TUlNRVR5cGUgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IDNiZDMyZmYuLjA4ZDJkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAxMi0xMC0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3dpdGNoIENhY2hlZFJlc291cmNlIG92ZXIgZnJvbSBTaGFyZWRCdWZmZXIgdG8gYSBuZXcg
UmVzb3VyY2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4NTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBu
YW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOl0pOgorCiAyMDEyLTEwLTA0
ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBzZXR0aW5nIHRv
IGVuYWJsZSBwbHVnaW4gc25hcHNob3R0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQppbmRleCA4MjcxNmE2Li4yMzI3YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEwNyw2ICsxMDcsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9SYW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJXaWRnZXQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUmVuZGVyVmlldy5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KQEAgLTM2
ODcsNyArMzY4OCw3IEBAIC0gKE5TQXJyYXkgKiluYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRB
dERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0aW5hdGlvbgogICAgIAogICAgIGlmIChXZWJD
b3JlOjpDYWNoZWRJbWFnZSogdGlmZlJlc291cmNlID0gW3NlbGYgcHJvbWlzZWREcmFnVElGRkRh
dGFTb3VyY2VdKSB7CiAgICAgICAgIAotICAgICAgICBTaGFyZWRCdWZmZXIgKmJ1ZmZlciA9IHN0
YXRpY19jYXN0PENhY2hlZFJlc291cmNlKj4odGlmZlJlc291cmNlKS0+ZGF0YSgpOworICAgICAg
ICBSZXNvdXJjZUJ1ZmZlciAqYnVmZmVyID0gc3RhdGljX2Nhc3Q8Q2FjaGVkUmVzb3VyY2UqPih0
aWZmUmVzb3VyY2UpLT5yZXNvdXJjZUJ1ZmZlcigpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgICAgIGdvdG8gbm9Qcm9taXNlZERhdGE7CiAgICAgICAgIAo=
</data>
<flag name="commit-queue"
          id="180272"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>167569</attachid>
            <date>2012-10-08 11:19:19 -0700</date>
            <delta_ts>2012-10-08 11:19:19 -0700</delta_ts>
            <desc>Patch v2 - Quell the obvious EWS warnings</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>42450</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMmQyYzkzZS4uN2JmZmJlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE2MzcsNiArMTYzNyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2Fk
ZXIvUG9saWN5Q2hlY2tlci5jcHAKICAgICBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAogICAg
IGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorICAgIGxvYWRlci9SZXNvdXJjZUJ1ZmZl
ci5jcHAKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCiAgICAgbG9hZGVyL1Jl
c291cmNlTG9hZFNjaGVkdWxlci5jcHAKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMjY0NTI1YS4uOGY2MjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBA
QAorMjAxMi0xMC0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3dpdGNoIENhY2hlZFJlc291cmNlIG92ZXIgZnJvbSBTaGFyZWRCdWZmZXIgdG8gYSBuZXcg
UmVzb3VyY2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk4NTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQXMgcGFydCBvZiBwcmVwYXJhdGlvbiBmb3IgYSBXZWJLaXQyIE5ldHdvcmtQcm9jZXNz
LCB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgZGF0YSBoYW5kbGUgc2hhcmVkCisgICAgICAgIGJldHdl
ZW4gQ2FjaGVkUmVzb3VyY2VzIGFuZCBSZXNvdXJjZUxvYWRlcnMgdG8gYmUgb25lIHRoYXQgY2Fu
IGJlIGJhY2tlZCBieSBzb21ldGhpbmcgb3RoZXIKKyAgICAgICAgdGhhbiBhIFNoYXJlZEJ1ZmZl
ci4KKworICAgICAgICBSZXNvdXJjZUJ1ZmZlciBpcyB0aGlzIG5ldyBvYmplY3QuIFJpZ2h0IG5v
dyBpdCBpcyBkaXJlY3RseSBiYWNrZWQgYnkgYSBTaGFyZWRCdWZmZXIgYW5kIHRoZXJlCisgICAg
ICAgIHNob3VsZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChObyBiZWhhdmlvciBjaGFuZ2UpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6CisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgdGhlIG5l
dyBSZXNvdXJjZUJ1ZmZlciwgYmFja2VkIGRpcmVjdGx5IGJ5IGEgU2hhcmVkQnVmZmVyOgorICAg
ICAgICAqIGxvYWRlci9SZXNvdXJjZUJ1ZmZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZlcjo6UmVzb3VyY2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VCdWZmZXI6On5SZXNvdXJjZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZlcjo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUJ1ZmZlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZlcjo6
aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZlcjo6Z2V0U29tZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VCdWZmZXI6OnNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZlcjo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUJ1ZmZlcjo6aGFzUHVyZ2VhYmxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlQnVmZmVyOjpyZWxlYXNlUHVyZ2VhYmxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlQnVmZmVyOjpjcmVhdGVDRkRhdGEpOgorCisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlQnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSZXNvdXJj
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlQnVmZmVyOjphZG9wdFNoYXJlZEJ1ZmZlcik6CisgICAg
ICAgICogbG9hZGVyL21hYy9SZXNvdXJjZUJ1ZmZlci5tbTogQWRkZWQuCisKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VCdWZmZXI6OmNyZWF0ZU5TRGF0YSk6
CisKKyAgICAgICAgU3dpdGNoIENhY2hlZFJlc291cmNlIG92ZXIgdG8gdXNpbmcgaXQ6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjptYWtlUHVyZ2VhYmxlKToKKworICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIpOgorICAgICAgICAoQ2FjaGVkUmVzb3Vy
Y2UpOgorCisgICAgICAgIFN3aXRjaCBhbGwgdGhlIG90aGVyIENhY2hlZFJlc291cmNlIHN1YmNs
YXNzZXMgb3ZlciB0byB1c2luZyBpdDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0Ojpk
YXRhKToKKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9u
dDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpkaWRBZGRDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmRhdGEpOgorCisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJhd1Jlc291cmNlOjpkYXRhKToKKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpkYXRhKToKKworICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTaGFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkU2hhZGVyOjpkYXRhKToKKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRUZXh0VHJh
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkVGV4dFRyYWNrOjpkYXRhKToKKyAgICAg
ICAgCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZGF0YSk6CisKKyAgICAgICAgU3dp
dGNoIG90aGVyIGFmZmVjdCBwYXJ0aWVzIG92ZXIgdG8gdXNpbmcgaXQ6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNv
dXJjZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzaGFy
ZWRCdWZmZXJDb250ZW50KToKKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UpOgorCisgICAg
ICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEpOgorCisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUpOgorCisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVX
cmFwcGVyRm9ySW1hZ2UpOgorCiAyMDEyLTEwLTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIE5vIGF1dG9yZWxlYXNlIHBvb2wgaW4gcGxhY2UsIGNhdXNpbmcg
YnVpbGR1cCBvZiBhdXRvcmVsZWFzZWQgb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IDFlOTdiNTcuLmU3MWQ1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMzkwNyw2ICszOTA3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuaCBcCisJU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQnVmZmVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMDc4YjY5YS4uZmFhYWE5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCkBAIC04NDIsNiArODQyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgbG9hZGVyL1ByZXJlbmRl
cmVyLmNwcCBcCiAgICAgbG9hZGVyL1ByZXJlbmRlcmVyQ2xpZW50LmNwcCBcCiAgICAgbG9hZGVy
L05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIFwKKyAgICBsb2FkZXIvUmVzb3VyY2VCdWZmZXIuY3Bw
IFwKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIFwKICAgICBsb2FkZXIvUmVzb3VyY2VM
b2FkTm90aWZpZXIuY3BwIFwKICAgICBsb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBc
CkBAIC0xOTYwLDYgKzE5NjEsNyBAQCBIRUFERVJTICs9IFwKICAgICBsb2FkZXIvUHJlcmVuZGVy
ZXIuaCBcCiAgICAgbG9hZGVyL1ByZXJlbmRlcmVyQ2xpZW50LmggXAogICAgIGxvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuaCBcCisgICAgbG9hZGVyL1Jlc291cmNlQnVmZmVyLmggXAogICAgIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5oIFwKICAgICBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBcCiAg
ICAgbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA3YzUx
Yzk3Li4yNGM2MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjYzLDYgKzI2Myw3IEBAIF9f
Wk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb242bW9kaWZ5RU5TMF8xMUVBbHRlcmF0aW9uRU5TXzE4
U2VsZWN0aW9uRGlyZWN0aW9uRU5TCiBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uOXNlbGVj
dEFsbEV2CiBfX1pON1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uQzFFUE5TXzVGcmFtZUUKIF9fWk43
V2ViQ29yZTE0UGx1Z2luRG9jdW1lbnQxMnBsdWdpbldpZGdldEV2CitfX1pON1dlYkNvcmUxNFJl
c291cmNlQnVmZmVyMTJjcmVhdGVOU0RhdGFFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRs
ZTIwZm9yY2VDb250ZW50U25pZmZpbmdFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRsZTI2
c3luY2hyb25vdXNMb2FkUnVuTG9vcE1vZGVFdgogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUhhbmRs
ZTM1Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25FUEsxMF9fQ0ZTdHJpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCBkMTIxYjdkLi45MDAxYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0x
NzgsNiArMTc4LDcgQEAKICAgICAgICAgICAgICdsb2FkZXIvUG9saWN5Q2FsbGJhY2suaCcsCiAg
ICAgICAgICAgICAnbG9hZGVyL1BvbGljeUNoZWNrZXIuaCcsCiAgICAgICAgICAgICAnbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5oJywKKyAgICAgICAgICAgICdsb2FkZXIvUmVzb3VyY2VCdWZmZXIu
aCcsCiAgICAgICAgICAgICAnbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmgnLAogICAgICAg
ICAgICAgJ2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCcsCiAgICAgICAgICAgICAnbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmgnLApAQCAtMjk5NSw2ICsyOTk2LDcgQEAKICAgICAgICAgICAg
ICdsb2FkZXIvUHJlcmVuZGVyZXJDbGllbnQuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvUHJl
cmVuZGVyZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5j
cHAnLAorICAgICAgICAgICAgJ2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5jcHAnLAogICAgICAgICAg
ICAgJ2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAnLAogICAgICAgICAgICAgJ2xvYWRl
ci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggZWYyYWFmMC4uY2YyM2MzOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI3Njk5LDYgKzI3Njk5LDE0IEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxSZXNvdXJj
ZUJ1ZmZlci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGxvYWRlclxSZXNvdXJjZUJ1ZmZlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcUmVzb3VyY2VMb2FkZXIuY3BwIgogCQkJ
CT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBjYjdiZDY1Li5hN2FkNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNTM3LDYgKzE1Mzcs
OSBAQAogCQk1MTNGMTQ1NDBBQjYzNEM0MDAwOTREREYgLyogSWNvbkxvYWRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzRjE0NTIwQUI2MzRDNDAw
MDk0RERGIC8qIEljb25Mb2FkZXIuaCAqLzsgfTsKIAkJNTE0QjNGNzMwQzcyMjA0NzAwMDUzMERG
IC8qIEZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNEIzRjcyMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE0QjNGNzYwQzcyMjA1
NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3Rl
bU1hYy5tbSAqLzsgfTsKKwkJNTE0QkM4M0YxNjFDRjA0QTAwNEQ1MkY0IC8qIFJlc291cmNlQnVm
ZmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0
QkM4M0QxNjFDRjA0MzAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVyLm1tICovOyB9OworCQk1MTRC
Qzg0MjE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0QkM4NDAxNjFDRjA1QzAwNEQ1MkY0
IC8qIFJlc291cmNlQnVmZmVyLmNwcCAqLzsgfTsKKwkJNTE0QkM4NDMxNjFDRjA1QzAwNEQ1MkY0
IC8qIFJlc291cmNlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTRCQzg0MTE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTRDNzYz
NzBDRTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzYzNTBDRTkyMjVFMDA3RUYzQ0QgLyogSlNT
UUxFcnJvci5jcHAgKi87IH07CiAJCTUxNEM3NjM4MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRy
YW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNEM3NjM2MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9uLmNwcCAqLzsg
fTsKIAkJNTE0Qzc2NEMwQ0U5MjM0RTAwN0VGM0NEIC8qIEF1dGhlbnRpY2F0aW9uTWFjLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRDNzY0MjBDRTky
MzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODcxMSw2ICs4NzE0LDkgQEAKIAkJNTEzRjE0
NTIwQUI2MzRDNDAwMDk0RERGIC8qIEljb25Mb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEljb25Mb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTRCM0Y3NTBDNzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3RlbU1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbGVTeXN0ZW1NYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNEJDODNEMTYxQ0YwNDMwMDRENTJGNCAvKiBSZXNv
dXJjZUJ1ZmZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
c291cmNlQnVmZmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTRCQzg0MDE2
MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTRCQzg0MTE2MUNGMDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VCdWZmZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0Qzc2MzUwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FM
RXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTUUxFcnJv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEM3NjM2MENFOTIyNUUwMDdF
RjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTU1FMVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTRDNzY0MjBDRTkyMzRFMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25NYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25NYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3Mjg4LDYgKzE3Mjk0LDcgQEAKIAkJCQkxQzI2NDk3
OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwICovLAogCQkJCTY1NkQz
NzFBMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5oICovLAogCQkJCTY1NkQz
NzFCMEFEQkE1REUwMEE0NTU0RCAvKiBMb2FkZXJOU1VSTEV4dHJhcy5tbSAqLywKKwkJCQk1MTRC
QzgzRDE2MUNGMDQzMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIubW0gKi8sCiAJCQkJNTFBQTNG
NkUwQkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1tICovLAogCQkJKTsKIAkJ
CXBhdGggPSBtYWM7CkBAIC0yMDYzNyw2ICsyMDY0NCw4IEBACiAJCQkJOTcwNTk5NzYxMDdEOTc1
MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLywKIAkJCQkxQTJBNjgyMTBCNUJFREU3MDAw
MkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmNwcCAqLywKIAkJCQkxQTJBNjgyMjBCNUJFREU3MDAw
MkE0ODAgLyogUHJvZ3Jlc3NUcmFja2VyLmggKi8sCisJCQkJNTE0QkM4NDAxNjFDRjA1QzAwNEQ1
MkY0IC8qIFJlc291cmNlQnVmZmVyLmNwcCAqLywKKwkJCQk1MTRCQzg0MTE2MUNGMDVDMDA0RDUy
RjQgLyogUmVzb3VyY2VCdWZmZXIuaCAqLywKIAkJCQk5M0UyMjdERTBBRjU4OUFEMDBENDgzMjQg
LyogUmVzb3VyY2VMb2FkZXIuY3BwICovLAogCQkJCTY1NkQzNzI3MEFEQkE1REUwMEE0NTU0RCAv
KiBSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCUQwQTNBNzMwMTQwNUEzOTgwMEZCOEVEMyAvKiBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMuaCAqLywKQEAgLTI1NTM3LDYgKzI1NTQ2LDcgQEAKIAkJCQk5
MzFDQkQwRDE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzFDQkQwRjE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFDQkQxMTE2MUE0NEU5MDBFNEM4NzQg
LyogU2Nyb2xsaW5nU3RhdGVUcmVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTRCQzg0MzE2MUNG
MDVDMDA0RDUyRjQgLyogUmVzb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg2MzQs
NiArMjg2NDQsOCBAQAogCQkJCTkzMUNCRDBFMTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMxQ0JEMTAxNjFBNDRF
OTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlVHJlZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzFDQkQxMzE2MUE0NEY4MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVOb2RlTWFjLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNTE0QkM4M0YxNjFDRjA0QTAwNEQ1MkY0IC8qIFJlc291cmNlQnVmZmVy
Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE0QkM4NDIxNjFDRjA1QzAwNEQ1MkY0IC8qIFJlc291
cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBlZjM5ZTZmLi5hMzJiOWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNjcs
MTAgKzY3LDEwIEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKKyNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTk4LDEzICs5OCwxMyBAQCBz
dGF0aWMgY29uc3QgY2hhciB0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZFtdID0gInRvdWNoRXZl
bnRFbXVsYXRpb25FbmFibGVkIjsKICNlbmRpZgogfQogCi1zdGF0aWMgYm9vbCBkZWNvZGVTaGFy
ZWRCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBTdHJpbmcqIHJlc3VsdCkKK3N0YXRpYyBib29sIGRlY29kZUJ1ZmZl
cihjb25zdCBjaGFyKiBidWZmZXIsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAgaWYgKGJ1ZmZlcikgewogICAgICAg
ICBUZXh0RW5jb2RpbmcgZW5jb2RpbmcodGV4dEVuY29kaW5nTmFtZSk7CiAgICAgICAgIGlmICgh
ZW5jb2RpbmcuaXNWYWxpZCgpKQogICAgICAgICAgICAgZW5jb2RpbmcgPSBXaW5kb3dzTGF0aW4x
RW5jb2RpbmcoKTsKLSAgICAgICAgKnJlc3VsdCA9IGVuY29kaW5nLmRlY29kZShidWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqcmVzdWx0ID0gZW5jb2RpbmcuZGVjb2Rl
KGJ1ZmZlciwgc2l6ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hl
ZFJlc291cmNlQ29udGVudChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UsIFMKIAogICAg
ICpiYXNlNjRFbmNvZGVkID0gIWhhc1RleHRDb250ZW50KGNhY2hlZFJlc291cmNlKTsKICAgICBp
ZiAoKmJhc2U2NEVuY29kZWQpIHsKLSAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gaGFzWmVyb1NpemUgPyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIDogY2FjaGVkUmVzb3VyY2Ut
PmRhdGEoKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFzWmVyb1Np
emUgPyBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpIDogY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCktPnNoYXJlZEJ1ZmZlcigpOwogCiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFn
ZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
LCBTCiAgICAgICAgICAgICAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8Q2FjaGVkU2NyaXB0Kj4oY2Fj
aGVkUmVzb3VyY2UpLT5zY3JpcHQoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpSYXdSZXNvdXJjZTogewotICAgICAgICAgICAgU2hhcmVk
QnVmZmVyKiBidWZmZXIgPSBjYWNoZWRSZXNvdXJjZS0+ZGF0YSgpOworICAgICAgICAgICAgUmVz
b3VyY2VCdWZmZXIqIGJ1ZmZlciA9IGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOwog
ICAgICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBjcmVhdGVY
SFJUZXh0RGVjb2RlcihjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLCBjYWNo
ZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCkpOwpAQCAtMjAxLDcgKzIw
MSw4IEBAIGJvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZUNvbnRlbnQoQ2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGRlY29kZVNo
YXJlZEJ1ZmZlcihjYWNoZWRSZXNvdXJjZS0+ZGF0YSgpLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2Rp
bmcoKSwgcmVzdWx0KTsKKyAgICAgICAgICAgIFJlc291cmNlQnVmZmVyKiBidWZmZXIgPSBjYWNo
ZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKKyAgICAgICAgICAgIHJldHVybiBkZWNvZGVC
dWZmZXIoYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiAwLCBidWZmZXIgPyBidWZmZXItPnNpemUo
KSA6IDAsIGNhY2hlZFJlc291cmNlLT5lbmNvZGluZygpLCByZXN1bHQpOwogICAgICAgICB9CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTIyNSw3ICsyMjYsNyBAQCBib29sIEluc3BlY3Rv
clBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyLCBjbwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gZGVj
b2RlU2hhcmVkQnVmZmVyKGJ1ZmZlciwgdGV4dEVuY29kaW5nTmFtZSwgcmVzdWx0KTsKKyAgICBy
ZXR1cm4gZGVjb2RlQnVmZmVyKGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogMCwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCByZXN1bHQpOwogfQogCiBQYXNz
T3duUHRyPEluc3BlY3RvclBhZ2VBZ2VudD4gSW5zcGVjdG9yUGFnZUFnZW50OjpjcmVhdGUoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFnZSogcGFnZSwgSW5zcGVj
dG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JDbGllbnQqIGNs
aWVudCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCmluZGV4IGI1YWNmMmIuLjE0NmNhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDgsOCArNDgsOCBAQAogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJNYWluUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJQYWdl
LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTYwMywxMSArNjAzLDExIEBAIFBhc3NSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UoY29uc3QgS1VSTCYgdXJsKSBj
b25zdAogICAgIGlmICghcmVzb3VyY2UtPm1ha2VQdXJnZWFibGUoZmFsc2UpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSByZXNvdXJjZS0+ZGF0
YSgpOworICAgIFJlc291cmNlQnVmZmVyKiBkYXRhID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVy
KCk7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBBcmNo
aXZlUmVzb3VyY2U6OmNyZWF0ZShkYXRhLnJlbGVhc2UoKSwgdXJsLCByZXNvdXJjZS0+cmVzcG9u
c2UoKSk7CisgICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEtPnNoYXJlZEJ1
ZmZlcigpLCB1cmwsIHJlc291cmNlLT5yZXNwb25zZSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudExv
YWRlcjo6Z2V0U3VicmVzb3VyY2VzKFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
PiYgc3VicmVzb3VyY2VzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkxOTViYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5jcHAKQEAg
LTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZUJ1ZmZlci5oIgorCisjaW5jbHVkZSAiUHVyZ2VhYmxlQnVmZmVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUmVzb3VyY2VCdWZmZXI6OlJlc291cmNlQnVmZmVyKCkKKyAgICA6
IG1fc2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkpCit7Cit9CisKK1Jlc291cmNl
QnVmZmVyOjpSZXNvdXJjZUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKKyAgICA6
IG1fc2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpKQoreworfQor
CitSZXNvdXJjZUJ1ZmZlcjo6UmVzb3VyY2VCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IHNoYXJlZEJ1ZmZlcikKKyAgICA6IG1fc2hhcmVkQnVmZmVyKHNoYXJlZEJ1ZmZlcikKK3sKKyAg
ICBBU1NFUlQobV9zaGFyZWRCdWZmZXIpOworfQorICAgIAorUmVzb3VyY2VCdWZmZXI6On5SZXNv
dXJjZUJ1ZmZlcigpCit7Cit9CisKK2NvbnN0IGNoYXIqIFJlc291cmNlQnVmZmVyOjpkYXRhKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPmRhdGEoKTsKK30KKwordW5zaWdu
ZWQgUmVzb3VyY2VCdWZmZXI6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NoYXJlZEJ1
ZmZlci0+c2l6ZSgpOworfQorCitib29sIFJlc291cmNlQnVmZmVyOjppc0VtcHR5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPmlzRW1wdHkoKTsKK30KKwordW5zaWduZWQg
UmVzb3VyY2VCdWZmZXI6OmdldFNvbWVEYXRhKGNvbnN0IGNoYXIqJiBkYXRhLCB1bnNpZ25lZCBw
b3NpdGlvbikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPmdldFNvbWVEYXRh
KGRhdGEsIHBvc2l0aW9uKTsKK30KKworU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUJ1ZmZlcjo6c2hh
cmVkQnVmZmVyKCkgY29uc3QKK3sKKyAgICAvLyBDdXJyZW50bHkgYWxsIFJlc291cmNlQnVmZmVy
cyBhcmUgYmFja2VkIGJ5IFNoYXJlZEJ1ZmZlcnMuCisgICAgLy8gSW4gdGhlIGZ1dHVyZSB3ZSBt
aWdodCBoYXZlIHRvIGNyZWF0ZSB0aGUgU2hhcmVkQnVmZmVyIG9uIGRlbWFuZCBoZXJlLgorICAg
IC8vIFdlIHNob3VsZCBhbHNvIHBoYXNlIG91dCBhcyBtdWNoIHVzZSBvZiB0aGlzIGFjY2Vzc29y
IGFzIHBvc3NpYmxlIGFuZCBoYXZlIGNsaWVudHMKKyAgICAvLyBlaXRoZXIgdXNlIHRoZSBSZXNv
dXJjZUJ1ZmZlciBkaXJlY3RseSBvciB1c2UgZ2V0U29tZURhdGEoKSB3aGVuIHNlbnNpY2FsLgor
ICAgIHJldHVybiBtX3NoYXJlZEJ1ZmZlci5nZXQoKTsKK30KKworUGFzc1JlZlB0cjxSZXNvdXJj
ZUJ1ZmZlcj4gUmVzb3VyY2VCdWZmZXI6OmNvcHkoKSBjb25zdAoreworICAgIHJldHVybiBSZXNv
dXJjZUJ1ZmZlcjo6YWRvcHRTaGFyZWRCdWZmZXIobV9zaGFyZWRCdWZmZXItPmNvcHkoKSk7Cit9
CisKK2Jvb2wgUmVzb3VyY2VCdWZmZXI6Omhhc1B1cmdlYWJsZUJ1ZmZlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2hhcmVkQnVmZmVyLT5oYXNQdXJnZWFibGVCdWZmZXIoKTsKK30KKworUGFz
c093blB0cjxQdXJnZWFibGVCdWZmZXI+IFJlc291cmNlQnVmZmVyOjpyZWxlYXNlUHVyZ2VhYmxl
QnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPnJlbGVhc2VQdXJnZWFibGVC
dWZmZXIoKTsKK30KKworI2lmIFVTRShDRikKK0NGRGF0YVJlZiBSZXNvdXJjZUJ1ZmZlcjo6Y3Jl
YXRlQ0ZEYXRhKCkKK3sKKyAgICByZXR1cm4gbV9zaGFyZWRCdWZmZXItPmNyZWF0ZUNGRGF0YSgp
OworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlQnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAw
ZjRlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUJ1
ZmZlci5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVzb3VyY2VCdWZmZXJf
aAorI2RlZmluZSBSZXNvdXJjZUJ1ZmZlcl9oCisKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
KworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorT0JK
Q19DTEFTUyBOU0RhdGE7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQ
dXJnZWFibGVCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CisKK2NsYXNzIFJlc291cmNlQnVm
ZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VCdWZmZXI+IHsKK3B1YmxpYzoKKworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJlc291cmNlQnVmZmVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgUmVzb3VyY2VCdWZmZXIpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVzb3Vy
Y2VCdWZmZXI+IGNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IFJlc291cmNlQnVmZmVyKGRhdGEsIHNpemUpKTsgfQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJlc291cmNlQnVmZmVyPiBhZG9wdFNoYXJlZEJ1ZmZlcihQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2hhcmVkKSB7IHJldHVybiBzaGFyZWQgPyBhZG9wdFJlZihuZXcgUmVzb3VyY2VC
dWZmZXIoc2hhcmVkKSkgOiAwOyB9CisKKyAgICB+UmVzb3VyY2VCdWZmZXIoKTsKKworICAgIGNv
bnN0IGNoYXIqIGRhdGEoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Q7CisgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3Q7CisKKyAgICB1bnNpZ25lZCBnZXRTb21lRGF0YShjb25zdCBj
aGFyKiYgZGF0YSwgdW5zaWduZWQgcG9zaXRpb24gPSAwKSBjb25zdDsKKyAgICAKKyAgICBTaGFy
ZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlcigpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8UmVzb3VyY2VC
dWZmZXI+IGNvcHkoKSBjb25zdDsKKworICAgIGJvb2wgaGFzUHVyZ2VhYmxlQnVmZmVyKCkgY29u
c3Q7CisgICAgCisgICAgLy8gRW5zdXJlIHRoaXMgYnVmZmVyIGhhcyBubyBvdGhlciBjbGllbnRz
IGJlZm9yZSBjYWxsaW5nIHRoaXMuCisgICAgUGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+IHJl
bGVhc2VQdXJnZWFibGVCdWZmZXIoKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBOU0RhdGEg
KmNyZWF0ZU5TRGF0YSgpOworI2VuZGlmCisjaWYgVVNFKENGKQorICAgIENGRGF0YVJlZiBjcmVh
dGVDRkRhdGEoKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFJlc291cmNlQnVmZmVyKCk7Cisg
ICAgUmVzb3VyY2VCdWZmZXIoY29uc3QgY2hhciosIGludCk7CisgICAgUmVzb3VyY2VCdWZmZXIo
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKKyAgICAKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3NoYXJlZEJ1ZmZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFJlc291cmNlQnVmZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRl
ci5jcHAKaW5kZXggMjAyNTcwZC4uYTliN2Y5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5jcHAKQEAgLTM0LDEwICszNCwxMCBAQAogI2luY2x1ZGUgIkNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYlZUVFBh
cnNlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04MywxMCArODMsMTAgQEAgdm9pZCBU
ZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSkKIHsKICAgICBBU1NFUlQobV9jYWNoZWRDdWVEYXRhID09IHJlc291cmNlKTsKICAgICAKLSAg
ICBpZiAobV9zdGF0ZSA9PSBGYWlsZWQgfHwgIXJlc291cmNlLT5kYXRhKCkpCisgICAgaWYgKG1f
c3RhdGUgPT0gRmFpbGVkIHx8ICFyZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIFNoYXJlZEJ1ZmZlciogYnVmZmVyID0gcmVzb3VyY2UtPmRhdGEo
KTsKKyAgICBSZXNvdXJjZUJ1ZmZlciogYnVmZmVyID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVy
KCk7CiAgICAgaWYgKG1fcGFyc2VPZmZzZXQgPT0gYnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB7CiAgICAgQVNTRVJUKG1fY2FjaGVk
Q3VlRGF0YSA9PSByZXNvdXJjZSk7CiAgICAgCi0gICAgaWYgKCFyZXNvdXJjZS0+ZGF0YSgpKQor
ICAgIGlmICghcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBwcm9jZXNzTmV3Q3VlRGF0YShyZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IDk0MjQ1
MjYuLjM1NzZkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC00Niw4ICs0Niw4IEBACiAjaW5jbHVkZSAiTm9k
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlJl
c291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC01NjIsNyAr
NTYyLDggQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKIAogICAgICAgICAgICAgICAgIENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yVVJM
KHN1YnJlc291cmNlVVJMKTsKICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2UpIHsK
LSAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShj
YWNoZWRSZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZVVSTCwgY2FjaGVkUmVzb3VyY2UtPnJl
c3BvbnNlKCkpOworICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUJ1ZmZlciogZGF0YSA9IGNh
Y2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAgICAgICAgICAgICAgICAgICByZXNv
dXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEgPyBkYXRhLT5zaGFyZWRCdWZmZXIo
KSA6IDAsIHN1YnJlc291cmNlVVJMLCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
c3VicmVzb3VyY2VzLmFwcGVuZChyZXNvdXJjZS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggZjE4ODI1Zi4uMzdlOTQwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcApA
QCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFN0eWxlU2hlZXRDbGllbnQuaCIKICNp
bmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRl
ICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgpAQCAtOTksNyArOTks
NyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdgogICAgIGlmICghYWxsRGF0YVJlY2VpdmVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9IFJlc291
cmNlQnVmZmVyOjphZG9wdFNoYXJlZEJ1ZmZlcihkYXRhKTsKICAgICBzZXRFbmNvZGVkU2l6ZSht
X2RhdGEuZ2V0KCkgPyBtX2RhdGEtPnNpemUoKSA6IDApOwogICAgIC8vIERlY29kZSB0aGUgZGF0
YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5k
IGR1cmluZyBjaGVja05vdGlmeSgpCiAgICAgaWYgKG1fZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IGQ5YTY3NTIuLjJkOWQ2MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkZvbnRQbGF0
Zm9ybURhdGEuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgorI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgQ2FjaGVkRm9u
dDo6ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
ZGF0YSA9IGRhdGE7ICAgICAKKyAgICBtX2RhdGEgPSBSZXNvdXJjZUJ1ZmZlcjo6YWRvcHRTaGFy
ZWRCdWZmZXIoZGF0YSk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRh
LT5zaXplKCkgOiAwKTsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBjaGVja05vdGlmeSgp
OwpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERh
dGEoKQogewogI2lmZGVmIFNUT1JFX0ZPTlRfQ1VTVE9NX1BMQVRGT1JNX0RBVEEKICAgICBpZiAo
IW1fZm9udERhdGEgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgbV9kYXRh
KSB7Ci0gICAgICAgIG1fZm9udERhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKG1f
ZGF0YS5nZXQoKSk7CisgICAgICAgIG1fZm9udERhdGEgPSBjcmVhdGVGb250Q3VzdG9tUGxhdGZv
cm1EYXRhKG1fZGF0YS5nZXQoKS0+c2hhcmVkQnVmZmVyKCkpOwogICAgICAgICBpZiAoIW1fZm9u
dERhdGEpCiAgICAgICAgICAgICBzZXRTdGF0dXMoRGVjb2RlRXJyb3IpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGJlZTk2OTUuLjQ5
Yzk3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApA
QCAtMzUsOCArMzUsOCBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlc291cmNlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogewogICAg
IGlmIChtX2RhdGEgJiYgIW1faW1hZ2UgJiYgIWVycm9yT2NjdXJyZWQoKSkgewogICAgICAgICBj
cmVhdGVJbWFnZSgpOwotICAgICAgICBtX2ltYWdlLT5zZXREYXRhKG1fZGF0YSwgdHJ1ZSk7Cisg
ICAgICAgIG1faW1hZ2UtPnNldERhdGEobV9kYXRhLT5zaGFyZWRCdWZmZXIoKSwgdHJ1ZSk7CiAg
ICAgfQogICAgIAogICAgIEFTU0VSVChjLT5yZXNvdXJjZUNsaWVudFR5cGUoKSA9PSBDYWNoZWRJ
bWFnZUNsaWVudDo6ZXhwZWN0ZWRUeXBlKCkpOwpAQCAtMzQ1LDcgKzM0NSw3IEBAIHNpemVfdCBD
YWNoZWRJbWFnZTo6bWF4aW11bURlY29kZWRJbWFnZVNpemUoKQogCiB2b2lkIENhY2hlZEltYWdl
OjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKIHsKLSAgICBtX2RhdGEgPSBkYXRhOworICAgIG1fZGF0YSA9IFJlc291cmNlQnVmZmVyOjph
ZG9wdFNoYXJlZEJ1ZmZlcihkYXRhKTsKIAogICAgIGNyZWF0ZUltYWdlKCk7CiAKQEAgLTM1NCw3
ICszNTQsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBIYXZlIHRoZSBpbWFnZSB1cGRh
dGUgaXRzIGRhdGEgZnJvbSBpdHMgaW50ZXJuYWwgYnVmZmVyLgogICAgIC8vIEl0IHdpbGwgbm90
IGRvIGFueXRoaW5nIG5vdywgYnV0IHdpbGwgZGVsYXkgZGVjb2RpbmcgdW50aWwgCiAgICAgLy8g
cXVlcmllZCBmb3IgaW5mbyAobGlrZSBzaXplIG9yIHNwZWNpZmljIGltYWdlIGZyYW1lcykuCi0g
ICAgc2l6ZUF2YWlsYWJsZSA9IG1faW1hZ2UtPnNldERhdGEobV9kYXRhLCBhbGxEYXRhUmVjZWl2
ZWQpOworICAgIHNpemVBdmFpbGFibGUgPSBtX2ltYWdlLT5zZXREYXRhKG1fZGF0YSA/IG1fZGF0
YS0+c2hhcmVkQnVmZmVyKCkgOiAwLCBhbGxEYXRhUmVjZWl2ZWQpOwogCiAgICAgLy8gR28gYWhl
YWQgYW5kIHRlbGwgb3VyIG9ic2VydmVycyB0byB0cnkgdG8gZHJhdyBpZiB3ZSBoYXZlIGVpdGhl
cgogICAgIC8vIHJlY2VpdmVkIGFsbCB0aGUgZGF0YSBvciB0aGUgc2l6ZSBpcyBrbm93bi4gIEVh
Y2ggY2h1bmsgZnJvbSB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDcyOTg4OTMuLjc2NjhlOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtMjksNyAr
MjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRl
ci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlJlc291cmNlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTY0
LDkgKzY0LDkgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGF0YShQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQKICAgICBpZiAobV9vcHRpb25zLnNo
b3VsZEJ1ZmZlckRhdGEgPT0gQnVmZmVyRGF0YSkgewogICAgICAgICBpZiAoZGF0YSkKICAgICAg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgIG1fZGF0YSA9IGRh
dGE7CisgICAgICAgIG1fZGF0YSA9IFJlc291cmNlQnVmZmVyOjphZG9wdFNoYXJlZEJ1ZmZlcihk
YXRhKTsKICAgICB9Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OmRhdGEobV9kYXRhLCBhbGxEYXRhUmVj
ZWl2ZWQpOworICAgIENhY2hlZFJlc291cmNlOjpkYXRhKG1fZGF0YSA/IG1fZGF0YS0+c2hhcmVk
QnVmZmVyKCkgOiAwLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCiB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA0MmUxODY4Li4xYTZh
NDZiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAKQEAgLTM3LDkgKzM3LDkgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIlB1cmdlYWJsZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlJlc291cmNlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJTdWJy
ZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTc1NSw3ICs3NTUsNyBAQCBib29s
IENhY2hlZFJlc291cmNlOjptYWtlUHVyZ2VhYmxlKGJvb2wgcHVyZ2VhYmxlKQogICAgIGlmICgh
bV9wdXJnZWFibGVEYXRhLT5tYWtlUHVyZ2VhYmxlKGZhbHNlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOyAKIAotICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6YWRvcHRQdXJnZWFibGVCdWZmZXIo
bV9wdXJnZWFibGVEYXRhLnJlbGVhc2UoKSk7CisgICAgbV9kYXRhID0gUmVzb3VyY2VCdWZmZXI6
OmFkb3B0U2hhcmVkQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6YWRvcHRQdXJnZWFibGVCdWZmZXIobV9w
dXJnZWFibGVEYXRhLnJlbGVhc2UoKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGI3MzlkNjguLjRi
NmIyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlSGFuZGxlQmFzZTsKIGNsYXNz
IENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2U7CiBjbGFzcyBQ
dXJnZWFibGVCdWZmZXI7CitjbGFzcyBSZXNvdXJjZUJ1ZmZlcjsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgU3VicmVzb3VyY2VMb2FkZXI7CiAKQEAgLTE3OCw3ICsxNzksNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBzdG9wTG9hZGluZygpOwogCi0gICAgU2hhcmVkQnVmZmVyKiBk
YXRhKCkgY29uc3QgeyBBU1NFUlQoIW1fcHVyZ2VhYmxlRGF0YSk7IHJldHVybiBtX2RhdGEuZ2V0
KCk7IH0KKyAgICBSZXNvdXJjZUJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IEFTU0VS
VCghbV9wdXJnZWFibGVEYXRhKTsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgeyBtX3JlcXVlc3RlZEZyb21OZXR3b3JraW5nTGF5ZXIgPSB0cnVlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKQEAgLTI5
MCw3ICsyOTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNl
OwogICAgIGRvdWJsZSBtX3Jlc3BvbnNlVGltZXN0YW1wOwogCi0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9kYXRhOworICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gbV9kYXRhOwogICAgIE93
blB0cjxQdXJnZWFibGVCdWZmZXI+IG1fcHVyZ2VhYmxlRGF0YTsKICAgICBUaW1lcjxDYWNoZWRS
ZXNvdXJjZT4gbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNDFmZWEzZC4uYzFhYjg0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTMwLDcg
KzMwLDcgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKLSNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtODQsNyArODQsNyBA
QCB2b2lkIENhY2hlZFNjcmlwdDo6ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gUmVzb3VyY2VCdWZm
ZXI6OmFkb3B0U2hhcmVkQnVmZmVyKGRhdGEpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS5n
ZXQoKSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CiAgICAg
Y2hlY2tOb3RpZnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTaGFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRl
ci5jcHAKaW5kZXggZDMxZTI2Ny4uNmVkNzBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNoYWRlci5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCiAKICNpbmNsdWRlICJDYWNoZWRTaGFkZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRSZXNv
dXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtNjQsNyArNjQsNyBAQCBj
b25zdCBTdHJpbmcmIENhY2hlZFNoYWRlcjo6c2hhZGVyU3RyaW5nKCkKIHZvaWQgQ2FjaGVkU2hh
ZGVyOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKIHsKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKQotICAgICAgICBtX2RhdGEgPSBkYXRh
OworICAgICAgICBtX2RhdGEgPSBSZXNvdXJjZUJ1ZmZlcjo6YWRvcHRTaGFyZWRCdWZmZXIoZGF0
YSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OmRhdGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApp
bmRleCA4YmFlMzljLi5lYjBhNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkVGV4dFRyYWNrLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIu
aCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlJlc291cmNl
QnVmZmVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQ5LDcgKzUwLDcgQEAg
Q2FjaGVkVGV4dFRyYWNrOjp+Q2FjaGVkVGV4dFRyYWNrKCkKIAogdm9pZCBDYWNoZWRUZXh0VHJh
Y2s6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogewotICAgIG1fZGF0YSA9IGRhdGE7CisgICAgbV9kYXRhID0gUmVzb3VyY2VCdWZmZXI6
OmFkb3B0U2hhcmVkQnVmZmVyKGRhdGEpOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS5nZXQo
KSA/IG1fZGF0YS0+c2l6ZSgpIDogMCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtl
cjxDYWNoZWRSZXNvdXJjZUNsaWVudD4gd2Fsa2VyKG1fY2xpZW50cyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZGU2
ZjQwZS4uZDQ2NWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJDYWNoZWRTdHlsZVNoZWV0Q2xp
ZW50LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTY5
LDcgKzY5LDcgQEAgdm9pZCBDYWNoZWRYU0xTdHlsZVNoZWV0OjpkYXRhKFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXYKICAgICBpZiAoIWFsbERhdGFSZWNl
aXZlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhID0gZGF0YTsKKyAgICBtX2RhdGEg
PSBSZXNvdXJjZUJ1ZmZlcjo6YWRvcHRTaGFyZWRCdWZmZXIoZGF0YSk7CiAgICAgc2V0RW5jb2Rl
ZFNpemUobV9kYXRhLmdldCgpID8gbV9kYXRhLT5zaXplKCkgOiAwKTsKICAgICBpZiAobV9kYXRh
LmdldCgpKSB7CiAgICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZShtX2RhdGEtPmRh
dGEoKSwgZW5jb2RlZFNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2Fk
ZXIuY3BwCmluZGV4IDlkNzMzZGEuLjdjMGU5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25Mb2FkZXIuY3BwCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBJY29u
TG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAKICAgICAv
LyBJZiB3ZSBnb3QgYSBzdGF0dXMgY29kZSBpbmRpY2F0aW5nIGFuIGludmFsaWQgcmVzcG9uc2Us
IHRoZW4gbGV0cwogICAgIC8vIGlnbm9yZSB0aGUgZGF0YSBhbmQgbm90IHRyeSB0byBkZWNvZGUg
dGhlIGVycm9yIHBhZ2UgYXMgYW4gaWNvbi4KLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
ID0gcmVzb3VyY2UtPmRhdGEoKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGRhdGEgPSBy
ZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICBpbnQgc3RhdHVzID0gcmVzb3VyY2UtPnJl
c3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKTsKICAgICBpZiAoc3RhdHVzICYmIChzdGF0dXMgPCAy
MDAgfHwgc3RhdHVzID4gMjk5KSkKICAgICAgICAgZGF0YSA9IDA7CkBAIC05Nyw3ICs5Nyw3IEBA
IHZvaWQgSWNvbkxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
KQogICAgIC8vIFNldHRpbmcgdGhlIGljb24gZGF0YSBvbmx5IGFmdGVyIGNvbW1pdHRpbmcgdG8g
dGhlIGRhdGFiYXNlIGVuc3VyZXMgdGhhdCB0aGUgZGF0YSBpcwogICAgIC8vIGtlcHQgaW4gbWVt
b3J5IChzbyBpdCBkb2VzIG5vdCBoYXZlIHRvIGJlIHJlYWQgZnJvbSB0aGUgZGF0YWJhc2UgYXN5
bmNocm9ub3VzbHkpLCBzaW5jZQogICAgIC8vIHRoZXJlIGlzIGEgcGFnZSBVUkwgcmVmZXJlbmNp
bmcgaXQuCi0gICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEsIHJl
c291cmNlLT51cmwoKS5zdHJpbmcoKSk7CisgICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvbkRhdGFG
b3JJY29uVVJMKGRhdGEtPnNoYXJlZEJ1ZmZlcigpLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkp
OwogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlSWNv
bigpOwogICAgIHN0b3BMb2FkaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvbWFjL1Jlc291cmNlQnVmZmVyLm1tIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9S
ZXNvdXJjZUJ1ZmZlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzU2
MTNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJj
ZUJ1ZmZlci5tbQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitO
U0RhdGEqIFJlc291cmNlQnVmZmVyOjpjcmVhdGVOU0RhdGEoKQoreworICAgIHJldHVybiBtX3No
YXJlZEJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXggNzUw
MTMwZi4uOTVhZjhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW0KQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
ICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlJlbmRlckltYWdlLmgiCisjaW1wb3J0ICJSZXNv
dXJjZUJ1ZmZlci5oIgogI2ltcG9ydCAiVGV4dC5oIgogI2ltcG9ydCAiV2ViQ29yZU5TU3RyaW5n
RXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMuaCIKQEAgLTI2
MCw3ICsyNjEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0aXRsZVN0ciwgRnJhbWUqIGZyYW1lKQogCiBzdGF0aWMgTlNGaWxlV3Jh
cHBlciogZmlsZVdyYXBwZXJGb3JJbWFnZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIE5TVVJM
ICp1cmwpCiB7Ci0gICAgU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IHJlc291cmNlLT5kYXRhKCk7
CisgICAgUmVzb3VyY2VCdWZmZXIqIGNvcmVEYXRhID0gcmVzb3VyY2UtPnJlc291cmNlQnVmZmVy
KCk7CiAgICAgTlNEYXRhICpkYXRhID0gW1tbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmNv
cmVEYXRhLT5kYXRhKCkgbGVuZ3RoOmNvcmVEYXRhLT5zaXplKCldIGF1dG9yZWxlYXNlXTsKICAg
ICBOU0ZpbGVXcmFwcGVyICp3cmFwcGVyID0gW1tbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJl
Z3VsYXJGaWxlV2l0aENvbnRlbnRzOmRhdGFdIGF1dG9yZWxlYXNlXTsKICAgICBTdHJpbmcgY29y
ZU1JTUVUeXBlID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCAzYmQzMmZmLi4wOGQyZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTItMTAtMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFN3aXRjaCBDYWNoZWRSZXNvdXJjZSBvdmVyIGZyb20gU2hhcmVkQnVmZmVyIHRvIGEgbmV3
IFJlc291cmNlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05ODU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcg
bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjpdKToKKwogMjAxMi0xMC0w
NCAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc2V0dGluZyB0
byBlbmFibGUgcGx1Z2luIHNuYXBzaG90dGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KaW5kZXggODI3MTZhNi4uMjMyN2I1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xMDcsNiArMTA3LDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvUmFuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVuZGVyV2lkZ2V0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1JlbmRlclZpZXcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CkBAIC0z
Njg3LDcgKzM2ODgsNyBAQCAtIChOU0FycmF5ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVk
QXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9wRGVzdGluYXRpb24KICAgICAKICAgICBpZiAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2UqIHRpZmZSZXNvdXJjZSA9IFtzZWxmIHByb21pc2VkRHJhZ1RJRkZE
YXRhU291cmNlXSkgewogICAgICAgICAKLSAgICAgICAgU2hhcmVkQnVmZmVyICpidWZmZXIgPSBz
dGF0aWNfY2FzdDxDYWNoZWRSZXNvdXJjZSo+KHRpZmZSZXNvdXJjZSktPmRhdGEoKTsKKyAgICAg
ICAgUmVzb3VyY2VCdWZmZXIgKmJ1ZmZlciA9IHN0YXRpY19jYXN0PENhY2hlZFJlc291cmNlKj4o
dGlmZlJlc291cmNlKS0+cmVzb3VyY2VCdWZmZXIoKTsKICAgICAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgICAgICBnb3RvIG5vUHJvbWlzZWREYXRhOwogICAgICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167753</attachid>
            <date>2012-10-09 07:44:23 -0700</date>
            <delta_ts>2012-10-09 07:44:23 -0700</delta_ts>
            <desc>instrumentation patch for duplicate cache resources</desc>
            <filename>duplicate-cache-instrumentation.patch</filename>
            <type>text/plain</type>
            <size>2992</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAkocmV2
aXNpb24gMTI3MTIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMywxMCBAQCBib29sIE1lbW9yeUNhY2hl
OjphZGQoQ2FjaGVkUmVzb3VyY2UqIHJlCiAgICAgcmVzb3VyY2UtPnNldEluQ2FjaGUodHJ1ZSk7
CiAgICAgCiAgICAgcmVzb3VyY2VBY2Nlc3NlZChyZXNvdXJjZSk7CisKKyAgICBzdGF0aWMgdW5z
aWduZWQgYzsKKyAgICBpZiAoISgrK2MgJSAxMDApKQorICAgICAgICBkdW1wRHVwbGljYXRlcygp
OwogICAgIAogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJNZW1vcnlDYWNoZTo6YWRkIEFkZGVk
ICclcycsIHJlc291cmNlICVwXG4iLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpLCByZXNvdXJjZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC04MDIsNCArODA2LDQ0IEBA
IHZvaWQgTWVtb3J5Q2FjaGU6OmR1bXBMUlVMaXN0cyhib29sIGluY2wKIH0KICNlbmRpZgogCit2
b2lkIE1lbW9yeUNhY2hlOjpkdW1wRHVwbGljYXRlcygpCit7CisgICAgdHlwZWRlZiBIYXNoTWFw
PHVuc2lnbmVkLCBPd25QdHI8VmVjdG9yPENhY2hlZFJlc291cmNlKj4gPiA+IER1cGxpY2F0ZU1h
cDsKKyAgICBEdXBsaWNhdGVNYXAgZHVwbGljYXRlTWFwOworICAgIENhY2hlZFJlc291cmNlTWFw
OjppdGVyYXRvciBlID0gbV9yZXNvdXJjZXMuZW5kKCk7CisgICAgZm9yIChDYWNoZWRSZXNvdXJj
ZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3Jlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlOyArK2l0KSB7
CisgICAgICAgIENhY2hlZFJlc291cmNlKiByZXMgPSBpdC0+c2Vjb25kOworICAgICAgICByZXMt
Pm1ha2VQdXJnZWFibGUoZmFsc2UpOworICAgICAgICBpZiAoIXJlcy0+bWFrZVB1cmdlYWJsZShm
YWxzZSkgfHwgIXJlcy0+ZGF0YSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHVu
c2lnbmVkIHNpemUgPSByZXMtPmRhdGEoKS0+c2l6ZSgpOworICAgICAgICBpZiAoc2l6ZSAlIDIp
CisgICAgICAgICAgICAtLXNpemU7CisgICAgICAgIHVuc2lnbmVkIGhhc2ggPSBTdHJpbmdIYXNo
ZXI6Omhhc2hNZW1vcnkocmVzLT5kYXRhKCktPmRhdGEoKSwgc2l6ZSk7CisgICAgICAgIE93blB0
cjxWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiA+JiB1cmxzID0gZHVwbGljYXRlTWFwLmFkZChoYXNo
LCBQYXNzT3duUHRyPFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+ID4oKSkuaXRlcmF0b3ItPnNlY29u
ZDsKKyAgICAgICAgaWYgKCF1cmxzKQorICAgICAgICAgICAgdXJscyA9IGFkb3B0UHRyKG5ldyBW
ZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPik7CisgICAgICAgIHVybHMtPmFwcGVuZChpdC0+c2Vjb25k
KTsKKyAgICB9CisgICAgdW5zaWduZWQgdG90YWxEZWNvZGVkU2l6ZSA9IDA7CisgICAgdW5zaWdu
ZWQgdG90YWxTaXplID0gMDsKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgRHVwbGljYXRl
TWFwOjppdGVyYXRvciBlbmQgPSBkdXBsaWNhdGVNYXAuZW5kKCk7CisgICAgZm9yIChEdXBsaWNh
dGVNYXA6Oml0ZXJhdG9yIGl0ID0gZHVwbGljYXRlTWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgeworICAgICAgICBpZiAoaXQtPnNlY29uZC0+c2l6ZSgpIDw9IDEpCisgICAgICAgICAgICBj
b250aW51ZTsgICAgICAgIAorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXQtPnNl
Y29uZC0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIENhY2hlZFJlc291cmNlKiByZXMgPSAo
Kml0LT5zZWNvbmQpW2ldOworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJoYXNoPSV4IHNp
emU9JWQgZGVjb2RlZFNpemU9JWQgJXNcbiIsIGl0LT5maXJzdCwgcmVzLT5kYXRhKCktPnNpemUo
KSwgcmVzLT5kZWNvZGVkU2l6ZSgpLCByZXMtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGlmIChpKSB7CisgICAgICAgICAgICAgICAgKytjb3VudDsKKyAgICAg
ICAgICAgICAgICB0b3RhbFNpemUgKz0gcmVzLT5kYXRhKCktPnNpemUoKTsKKyAgICAgICAgICAg
ICAgICB0b3RhbERlY29kZWRTaXplICs9IHJlcy0+ZGVjb2RlZFNpemUoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBmcHJpbnRmKHN0ZGVyciwgIlRPVEFMIGR1cGxpY2F0
ZXMgY291bnQ9JWQgc2l6ZT0lZCBkZWNvZGVkU2l6ZT0lZFxuIiwgY291bnQsIHRvdGFsU2l6ZSwg
dG90YWxEZWNvZGVkU2l6ZSk7CisgICAgZnByaW50ZihzdGRlcnIsICJhbGwgY2FjaGVkIHJlc291
cmNlcyBjb3VudD0lZCBzaXplPSVkXG4iLCBtX3Jlc291cmNlcy5zaXplKCksIG1fbGl2ZVNpemUg
KyBtX2RlYWRTaXplKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgJKHJldmlzaW9uIDEyNzEyMSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzAsNiArMTcwLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGRlYWRTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9kZWFkU2l6ZTsgfQogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisgICAgdm9pZCBkdW1wRHVwbGljYXRlcygpOwogCiBw
cml2YXRlOgogICAgIE1lbW9yeUNhY2hlKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>